mirror of https://github.com/openclaw/openclaw.git
fix(cli): replace stale doctor/restart command hints (#24485)
* fix(cli): replace stale doctor and restart hints * fix: add changelog for CLI hint updates (#24485) (thanks @chilu18) --------- Co-authored-by: Muhammed Mukhthar CM <mukhtharcm@gmail.com>
This commit is contained in:
parent
1c228dc249
commit
097a6a83a0
|
|
@ -62,6 +62,7 @@ Docs: https://docs.openclaw.ai
|
|||
- Subagents/Registry: prune orphaned restored runs (missing child session/sessionId) before retry/announce resume to prevent zombie entries and stale completion retries, and clarify status output to report bootstrap-file presence semantics. (#24244) Thanks @HeMuling.
|
||||
- Subagents/Announce queue: add exponential backoff when queue-drain delivery fails to reduce retry storms. (#24783)
|
||||
- Doctor/UX: suppress the redundant "Run doctor --fix" hint when already in fix mode with no changes. (#24666)
|
||||
- CLI/Doctor: correct stale recovery hints to use valid commands (`openclaw gateway status --deep` and `openclaw configure --section model`). (#24485) Thanks @chilu18.
|
||||
- Doctor/Nix: skip false-positive permission warnings for Nix store symlinks in state-integrity checks. (#24901)
|
||||
- Update/Systemd: back up an existing systemd unit before overwriting it during update flows. (#24350, #24937)
|
||||
- Install/Global detection: resolve symlinks when detecting pnpm/bun global install paths. (#24744)
|
||||
|
|
|
|||
|
|
@ -126,6 +126,7 @@ describe("runDaemonRestart health checks", () => {
|
|||
|
||||
await expect(runDaemonRestart({ json: true })).rejects.toMatchObject({
|
||||
message: "Gateway restart timed out after 60s waiting for health checks.",
|
||||
hints: ["openclaw gateway status --deep", "openclaw doctor"],
|
||||
});
|
||||
expect(terminateStaleGatewayPids).not.toHaveBeenCalled();
|
||||
expect(renderRestartDiagnostics).toHaveBeenCalledTimes(1);
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ export async function runDaemonRestart(opts: DaemonLifecycleOptions = {}): Promi
|
|||
}
|
||||
|
||||
fail(`Gateway restart timed out after ${restartWaitSeconds}s waiting for health checks.`, [
|
||||
formatCliCommand("openclaw gateway status --probe --deep"),
|
||||
formatCliCommand("openclaw gateway status --deep"),
|
||||
formatCliCommand("openclaw doctor"),
|
||||
]);
|
||||
},
|
||||
|
|
|
|||
|
|
@ -589,7 +589,7 @@ async function maybeRestartService(params: {
|
|||
}
|
||||
defaultRuntime.log(
|
||||
theme.muted(
|
||||
`Run \`${replaceCliName(formatCliCommand("openclaw gateway status --probe --deep"), CLI_NAME)}\` for details.`,
|
||||
`Run \`${replaceCliName(formatCliCommand("openclaw gateway status --deep"), CLI_NAME)}\` for details.`,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -143,7 +143,7 @@ describe("noteMemorySearchHealth", () => {
|
|||
expect(message).toContain("reports memory embeddings are ready");
|
||||
});
|
||||
|
||||
it("uses configure hint when gateway probe is unavailable and API key is missing", async () => {
|
||||
it("uses model configure hint when gateway probe is unavailable and API key is missing", async () => {
|
||||
resolveMemorySearchConfig.mockReturnValue({
|
||||
provider: "gemini",
|
||||
local: {},
|
||||
|
|
@ -160,8 +160,23 @@ describe("noteMemorySearchHealth", () => {
|
|||
|
||||
const message = note.mock.calls[0]?.[0] as string;
|
||||
expect(message).toContain("Gateway memory probe for default agent is not ready");
|
||||
expect(message).toContain("openclaw configure");
|
||||
expect(message).not.toContain("auth add");
|
||||
expect(message).toContain("openclaw configure --section model");
|
||||
expect(message).not.toContain("openclaw auth add --provider");
|
||||
});
|
||||
|
||||
it("uses model configure hint in auto mode when no provider credentials are found", async () => {
|
||||
resolveMemorySearchConfig.mockReturnValue({
|
||||
provider: "auto",
|
||||
local: {},
|
||||
remote: {},
|
||||
});
|
||||
|
||||
await noteMemorySearchHealth(cfg);
|
||||
|
||||
expect(note).toHaveBeenCalledTimes(1);
|
||||
const message = String(note.mock.calls[0]?.[0] ?? "");
|
||||
expect(message).toContain("openclaw configure --section model");
|
||||
expect(message).not.toContain("openclaw auth add --provider");
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ export async function noteMemorySearchHealth(
|
|||
"",
|
||||
"Fix (pick one):",
|
||||
`- Set ${envVar} in your environment`,
|
||||
`- Configure credentials: ${formatCliCommand("openclaw configure")}`,
|
||||
`- Configure credentials: ${formatCliCommand("openclaw configure --section model")}`,
|
||||
`- To disable: ${formatCliCommand("openclaw config set agents.defaults.memorySearch.enabled false")}`,
|
||||
"",
|
||||
`Verify: ${formatCliCommand("openclaw memory status --deep")}`,
|
||||
|
|
@ -125,7 +125,7 @@ export async function noteMemorySearchHealth(
|
|||
"",
|
||||
"Fix (pick one):",
|
||||
"- Set OPENAI_API_KEY, GEMINI_API_KEY, VOYAGE_API_KEY, or MISTRAL_API_KEY in your environment",
|
||||
`- Configure credentials: ${formatCliCommand("openclaw configure")}`,
|
||||
`- Configure credentials: ${formatCliCommand("openclaw configure --section model")}`,
|
||||
`- For local embeddings: configure agents.defaults.memorySearch.provider and local model path`,
|
||||
`- To disable: ${formatCliCommand("openclaw config set agents.defaults.memorySearch.enabled false")}`,
|
||||
"",
|
||||
|
|
|
|||
Loading…
Reference in New Issue