@oh-my-pi/pi-coding-agent 17.0.9 → 17.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +54 -0
- package/README.md +1 -1
- package/dist/cli.js +4659 -4261
- package/dist/types/async/job-manager.d.ts +37 -1
- package/dist/types/cli/args.d.ts +2 -0
- package/dist/types/cli/bench-cli.d.ts +41 -0
- package/dist/types/commands/bench.d.ts +15 -3
- package/dist/types/commands/launch.d.ts +4 -0
- package/dist/types/config/model-registry.d.ts +3 -1
- package/dist/types/config/models-config-schema.d.ts +18 -6
- package/dist/types/config/models-config.d.ts +14 -5
- package/dist/types/config/provider-globals.d.ts +2 -2
- package/dist/types/config/service-tier.d.ts +5 -1
- package/dist/types/config/settings-schema.d.ts +316 -47
- package/dist/types/config/settings.d.ts +7 -0
- package/dist/types/dap/client.d.ts +20 -0
- package/dist/types/exec/bash-executor.d.ts +38 -0
- package/dist/types/exec/direnv.d.ts +33 -0
- package/dist/types/export/html/args.d.ts +15 -0
- package/dist/types/export/html/index.d.ts +11 -26
- package/dist/types/export/html/web-palette.d.ts +55 -116
- package/dist/types/extensibility/extensions/loader.d.ts +3 -0
- package/dist/types/extensibility/extensions/types.d.ts +17 -2
- package/dist/types/extensibility/plugins/legacy-pi-compat.d.ts +13 -0
- package/dist/types/live/controller.d.ts +40 -0
- package/dist/types/live/protocol.d.ts +85 -0
- package/dist/types/live/protocol.test.d.ts +1 -0
- package/dist/types/live/transport.d.ts +48 -0
- package/dist/types/live/visualizer.d.ts +33 -0
- package/dist/types/lsp/client.d.ts +16 -1
- package/dist/types/mcp/config-writer.test.d.ts +1 -0
- package/dist/types/mcp/oauth-discovery.d.ts +2 -0
- package/dist/types/mcp/smithery-auth.d.ts +1 -1
- package/dist/types/mcp/smithery-auth.test.d.ts +1 -0
- package/dist/types/memory-backend/tool-names.d.ts +2 -0
- package/dist/types/modes/components/login-dialog.d.ts +2 -2
- package/dist/types/modes/components/plan-review-overlay.d.ts +26 -0
- package/dist/types/modes/components/settings-defs.d.ts +7 -1
- package/dist/types/modes/components/status-line/component.jj-cache.test.d.ts +1 -0
- package/dist/types/modes/components/tool-execution.d.ts +9 -1
- package/dist/types/modes/controllers/command-controller.d.ts +1 -1
- package/dist/types/modes/controllers/event-controller.d.ts +6 -1
- package/dist/types/modes/controllers/live-command-controller.d.ts +14 -0
- package/dist/types/modes/interactive-mode.d.ts +5 -0
- package/dist/types/modes/theme/theme.d.ts +1 -1
- package/dist/types/modes/types.d.ts +3 -1
- package/dist/types/modes/utils/context-usage.d.ts +12 -2
- package/dist/types/plan-mode/plan-files.d.ts +10 -0
- package/dist/types/registry/agent-lifecycle.d.ts +21 -9
- package/dist/types/registry/agent-registry.d.ts +11 -4
- package/dist/types/sdk.d.ts +15 -1
- package/dist/types/secrets/index.d.ts +15 -2
- package/dist/types/secrets/obfuscator.d.ts +113 -15
- package/dist/types/session/acp-permission-gate.d.ts +19 -0
- package/dist/types/session/agent-session-events.d.ts +84 -0
- package/dist/types/session/agent-session-types.d.ts +314 -0
- package/dist/types/session/agent-session.d.ts +118 -755
- package/dist/types/session/async-job-delivery.d.ts +28 -0
- package/dist/types/session/bash-runner.d.ts +75 -0
- package/dist/types/session/blob-store.d.ts +11 -1
- package/dist/types/session/blob-store.test.d.ts +1 -0
- package/dist/types/session/checkpoint-entries.d.ts +28 -0
- package/dist/types/session/eval-runner.d.ts +49 -0
- package/dist/types/session/irc-bridge.d.ts +46 -0
- package/dist/types/session/messages.d.ts +22 -0
- package/dist/types/session/model-controls.d.ts +180 -0
- package/dist/types/session/prewalk.d.ts +46 -0
- package/dist/types/session/queued-messages.d.ts +22 -0
- package/dist/types/session/redis-session-storage.d.ts +1 -0
- package/dist/types/session/retry-fallback-chains.d.ts +74 -0
- package/dist/types/session/role-models.d.ts +15 -0
- package/dist/types/session/session-advisors.d.ts +228 -0
- package/dist/types/session/session-entries.d.ts +8 -0
- package/dist/types/session/session-handoff.d.ts +70 -0
- package/dist/types/session/session-history-format.d.ts +6 -1
- package/dist/types/session/session-maintenance.d.ts +246 -0
- package/dist/types/session/session-manager.d.ts +41 -0
- package/dist/types/session/session-memory.d.ts +56 -0
- package/dist/types/session/session-provider-boundary.d.ts +62 -0
- package/dist/types/session/session-stats.d.ts +48 -0
- package/dist/types/session/session-tools.d.ts +143 -0
- package/dist/types/session/session-workspace.d.ts +32 -0
- package/dist/types/session/stream-guards.d.ts +44 -0
- package/dist/types/session/todo-tracker.d.ts +56 -0
- package/dist/types/session/ttsr-coordinator.d.ts +51 -0
- package/dist/types/session/turn-recovery.d.ts +225 -0
- package/dist/types/system-prompt.d.ts +2 -0
- package/dist/types/task/executor.d.ts +4 -1
- package/dist/types/task/output-manager.d.ts +3 -1
- package/dist/types/tools/approval.d.ts +1 -0
- package/dist/types/tools/browser/launch.d.ts +5 -0
- package/dist/types/tools/image-gen.d.ts +4 -4
- package/dist/types/tools/image-providers.d.ts +38 -0
- package/dist/types/tools/index.d.ts +5 -0
- package/dist/types/tools/path-utils.d.ts +8 -0
- package/dist/types/tools/todo.d.ts +10 -4
- package/dist/types/tools/xdev.d.ts +5 -1
- package/dist/types/tts/streaming-player.d.ts +14 -0
- package/dist/types/tts/vocalizer.d.ts +5 -0
- package/dist/types/utils/jj.d.ts +29 -0
- package/dist/types/utils/lang-from-path.d.ts +1 -0
- package/dist/types/utils/title-generator.d.ts +30 -0
- package/dist/types/vibe/runtime.d.ts +36 -8
- package/dist/types/web/search/index.d.ts +1 -1
- package/dist/types/web/search/provider.d.ts +15 -5
- package/dist/types/web/search/types.d.ts +94 -0
- package/package.json +12 -12
- package/scripts/generate-share-viewer.ts +4 -6
- package/src/advisor/__tests__/advisor.test.ts +643 -0
- package/src/advisor/runtime.ts +144 -43
- package/src/async/job-manager.ts +90 -2
- package/src/cli/args.ts +2 -0
- package/src/cli/auth-gateway-cli.ts +18 -3
- package/src/cli/bench-cli.ts +395 -29
- package/src/cli/flag-tables.ts +3 -0
- package/src/cli/gc-cli.ts +2 -2
- package/src/cli/usage-cli.ts +10 -1
- package/src/collab/host.ts +3 -2
- package/src/commands/bench.ts +18 -4
- package/src/commands/launch.ts +4 -0
- package/src/config/model-registry.ts +10 -2
- package/src/config/models-config-schema.ts +15 -4
- package/src/config/provider-globals.ts +9 -9
- package/src/config/service-tier.ts +26 -1
- package/src/config/settings-schema.ts +209 -51
- package/src/config/settings.ts +81 -2
- package/src/dap/client.ts +37 -4
- package/src/edit/index.ts +49 -12
- package/src/eval/py/executor.ts +103 -33
- package/src/exec/bash-executor.ts +89 -6
- package/src/exec/direnv.ts +145 -0
- package/src/export/html/args.ts +20 -0
- package/src/export/html/index.ts +45 -47
- package/src/export/html/template.css +19 -1
- package/src/export/html/template.html +6 -0
- package/src/export/html/template.js +21 -0
- package/src/export/html/tool-views.generated.js +31 -31
- package/src/export/html/web-palette.ts +116 -132
- package/src/export/share.ts +249 -49
- package/src/extensibility/extensions/loader.ts +29 -1
- package/src/extensibility/extensions/runner.ts +6 -0
- package/src/extensibility/extensions/types.ts +33 -2
- package/src/extensibility/plugins/legacy-pi-compat.ts +19 -1
- package/src/hindsight/state.ts +64 -6
- package/src/internal-urls/local-protocol.ts +2 -1
- package/src/internal-urls/memory-protocol.ts +2 -2
- package/src/internal-urls/skill-protocol.ts +2 -2
- package/src/internal-urls/ssh-protocol.ts +2 -1
- package/src/internal-urls/vault-protocol.ts +2 -1
- package/src/live/audio-worklet.txt +59 -0
- package/src/live/browser-runtime.txt +221 -0
- package/src/live/controller.ts +464 -0
- package/src/live/prompts/agent-final-message.md +3 -0
- package/src/live/prompts/live-instructions.md +23 -0
- package/src/live/protocol.test.ts +140 -0
- package/src/live/protocol.ts +233 -0
- package/src/live/transport.ts +490 -0
- package/src/live/visualizer.ts +234 -0
- package/src/lsp/client.ts +29 -9
- package/src/lsp/index.ts +19 -4
- package/src/main.ts +8 -1
- package/src/mcp/config-writer.test.ts +43 -0
- package/src/mcp/config-writer.ts +109 -82
- package/src/mcp/oauth-discovery.ts +10 -2
- package/src/mcp/smithery-auth.test.ts +29 -0
- package/src/mcp/smithery-auth.ts +3 -2
- package/src/memories/index.ts +40 -20
- package/src/memory-backend/tool-names.ts +2 -0
- package/src/mnemopi/backend.ts +24 -7
- package/src/modes/acp/acp-agent.ts +56 -10
- package/src/modes/acp/acp-event-mapper.ts +8 -1
- package/src/modes/components/agent-hub.ts +1 -1
- package/src/modes/components/login-dialog.ts +14 -4
- package/src/modes/components/plan-review-overlay.ts +350 -35
- package/src/modes/components/settings-defs.ts +23 -1
- package/src/modes/components/settings-selector.ts +169 -1
- package/src/modes/components/status-line/component.jj-cache.test.ts +229 -0
- package/src/modes/components/status-line/component.ts +123 -2
- package/src/modes/components/tool-execution.ts +11 -2
- package/src/modes/controllers/command-controller.ts +56 -15
- package/src/modes/controllers/event-controller.ts +111 -16
- package/src/modes/controllers/extension-ui-controller.test.ts +1 -0
- package/src/modes/controllers/extension-ui-controller.ts +20 -4
- package/src/modes/controllers/live-command-controller.ts +178 -0
- package/src/modes/controllers/mcp-command-controller.ts +10 -1
- package/src/modes/controllers/omfg-controller.ts +44 -40
- package/src/modes/controllers/selector-controller.ts +18 -10
- package/src/modes/controllers/session-focus-controller.ts +6 -1
- package/src/modes/interactive-mode.ts +157 -38
- package/src/modes/runtime-init.ts +2 -0
- package/src/modes/setup-wizard/scenes/web-search.ts +17 -9
- package/src/modes/theme/theme.ts +1 -1
- package/src/modes/types.ts +3 -1
- package/src/modes/utils/context-usage.ts +23 -7
- package/src/modes/utils/ui-helpers.ts +10 -5
- package/src/plan-mode/plan-files.ts +40 -0
- package/src/prompts/bench/cache-prefix-chunk.md +1 -0
- package/src/prompts/bench/cache-prefix.md +3 -0
- package/src/prompts/bench/cache-suffix.md +1 -0
- package/src/prompts/system/custom-system-prompt.md +1 -1
- package/src/prompts/system/project-prompt.md +8 -1
- package/src/prompts/system/subagent-async-pending.md +6 -0
- package/src/prompts/system/system-prompt.md +1 -1
- package/src/prompts/system/workflow-notice.md +48 -40
- package/src/prompts/system/xdev-mount-notice.md +4 -0
- package/src/prompts/tools/todo.md +3 -1
- package/src/registry/agent-lifecycle.ts +116 -46
- package/src/registry/agent-registry.ts +35 -8
- package/src/registry/persisted-agents.ts +26 -2
- package/src/sdk.ts +210 -136
- package/src/secrets/index.ts +127 -4
- package/src/secrets/obfuscator.ts +2328 -105
- package/src/session/acp-permission-gate.ts +165 -0
- package/src/session/agent-session-error-log.test.ts +1 -1
- package/src/session/agent-session-events.ts +66 -0
- package/src/session/agent-session-types.ts +334 -0
- package/src/session/agent-session.ts +1892 -12226
- package/src/session/artifacts.ts +6 -5
- package/src/session/async-job-delivery.ts +74 -0
- package/src/session/bash-runner.ts +326 -0
- package/src/session/blob-store.test.ts +56 -0
- package/src/session/blob-store.ts +18 -2
- package/src/session/checkpoint-entries.ts +81 -0
- package/src/session/eval-runner.ts +212 -0
- package/src/session/indexed-session-storage.ts +9 -2
- package/src/session/irc-bridge.ts +203 -0
- package/src/session/messages.ts +263 -1
- package/src/session/model-controls.ts +714 -0
- package/src/session/prewalk.ts +252 -0
- package/src/session/queued-messages.ts +93 -0
- package/src/session/redis-session-storage.ts +51 -11
- package/src/session/retry-fallback-chains.ts +455 -0
- package/src/session/role-models.ts +85 -0
- package/src/session/session-advisors.ts +1679 -0
- package/src/session/session-context.ts +6 -3
- package/src/session/session-entries.ts +8 -0
- package/src/session/session-handoff.ts +308 -0
- package/src/session/session-history-format.ts +20 -9
- package/src/session/session-loader.ts +0 -46
- package/src/session/session-maintenance.ts +2983 -0
- package/src/session/session-manager.ts +390 -30
- package/src/session/session-memory.ts +222 -0
- package/src/session/session-provider-boundary.ts +307 -0
- package/src/session/session-stats.ts +293 -0
- package/src/session/session-tools.ts +943 -0
- package/src/session/session-workspace.ts +53 -0
- package/src/session/stream-guards.ts +417 -0
- package/src/session/todo-tracker.ts +380 -0
- package/src/session/ttsr-coordinator.ts +496 -0
- package/src/session/turn-recovery.ts +1629 -0
- package/src/slash-commands/builtin-registry.ts +92 -11
- package/src/slash-commands/helpers/usage-report.ts +22 -3
- package/src/system-prompt.ts +41 -17
- package/src/task/executor.ts +285 -70
- package/src/task/index.ts +98 -105
- package/src/task/output-manager.ts +25 -3
- package/src/task/persisted-revive.ts +4 -3
- package/src/task/structured-subagent.ts +1 -0
- package/src/tools/approval.ts +55 -10
- package/src/tools/bash-interactive.ts +26 -0
- package/src/tools/bash-skill-urls.ts +28 -2
- package/src/tools/bash.ts +339 -123
- package/src/tools/browser/launch.ts +9 -1
- package/src/tools/browser/tab-supervisor.ts +8 -5
- package/src/tools/browser.ts +94 -47
- package/src/tools/image-gen.ts +20 -28
- package/src/tools/image-providers.ts +50 -0
- package/src/tools/index.ts +9 -0
- package/src/tools/path-utils.ts +49 -2
- package/src/tools/read.ts +156 -88
- package/src/tools/renderers.ts +7 -1
- package/src/tools/todo.ts +101 -11
- package/src/tools/vibe.ts +1 -2
- package/src/tools/write.ts +51 -1
- package/src/tools/xdev.ts +67 -3
- package/src/tts/streaming-player.ts +62 -4
- package/src/tts/vocalizer.ts +18 -1
- package/src/utils/jj.ts +125 -4
- package/src/utils/lang-from-path.ts +7 -0
- package/src/utils/title-generator.ts +137 -1
- package/src/vibe/runtime.ts +852 -72
- package/src/web/search/index.ts +3 -6
- package/src/web/search/provider.ts +31 -16
- package/src/web/search/providers/xai.ts +7 -1
- package/src/web/search/types.ts +3 -0
|
@@ -38,6 +38,7 @@ import {
|
|
|
38
38
|
getSmitheryApiKey,
|
|
39
39
|
getSmitheryLoginUrl,
|
|
40
40
|
pollSmitheryCliAuthSession,
|
|
41
|
+
type SmitheryCliPollResponse,
|
|
41
42
|
saveSmitheryApiKey,
|
|
42
43
|
} from "../../mcp/smithery-auth";
|
|
43
44
|
import { SmitheryConnectError } from "../../mcp/smithery-connect";
|
|
@@ -51,6 +52,7 @@ import type { MCPAuthChallenge, MCPAuthConfig, MCPServerConfig, MCPServerConnect
|
|
|
51
52
|
import { shortenPath } from "../../tools/render-utils";
|
|
52
53
|
import { urlHyperlinkAlways } from "../../tui";
|
|
53
54
|
import { copyToClipboard } from "../../utils/clipboard";
|
|
55
|
+
import { isTimeoutError } from "../../utils/fetch-timeout";
|
|
54
56
|
import { openPath } from "../../utils/open";
|
|
55
57
|
import { ChatBlock } from "../components/chat-block";
|
|
56
58
|
import { MCPAddWizard } from "../components/mcp-add-wizard";
|
|
@@ -2121,7 +2123,14 @@ export class MCPCommandController {
|
|
|
2121
2123
|
if (Date.now() - startedAt >= timeoutMs) {
|
|
2122
2124
|
throw new Error("Smithery authorization timed out after 5 minutes.");
|
|
2123
2125
|
}
|
|
2124
|
-
|
|
2126
|
+
let response: SmitheryCliPollResponse;
|
|
2127
|
+
try {
|
|
2128
|
+
response = await pollSmitheryCliAuthSession(sessionId, signal);
|
|
2129
|
+
} catch (error) {
|
|
2130
|
+
// A single hung/slow poll aborts with TimeoutError; retry until the deadline.
|
|
2131
|
+
if (isTimeoutError(error)) continue;
|
|
2132
|
+
throw error;
|
|
2133
|
+
}
|
|
2125
2134
|
if (response.status === "success" && response.apiKey) {
|
|
2126
2135
|
return response.apiKey;
|
|
2127
2136
|
}
|
|
@@ -192,56 +192,60 @@ export class OmfgController {
|
|
|
192
192
|
|
|
193
193
|
async #saveCandidate(request: OmfgRequest, candidate: OmfgCandidate): Promise<SaveCandidateResult> {
|
|
194
194
|
if (this.#shouldStop(request)) return { kind: "aborted" };
|
|
195
|
-
request.component.setStatus("saving", "Choose where to save or amend the TTSR rule…");
|
|
196
|
-
const location = await this.ctx.showHookSelector("Save TTSR rule where?", [
|
|
197
|
-
PROJECT_OPTION,
|
|
198
|
-
GLOBAL_OPTION,
|
|
199
|
-
AMEND_OPTION,
|
|
200
|
-
]);
|
|
201
|
-
if (!this.#isActiveRequest(request)) return { kind: "aborted" };
|
|
202
|
-
if (!location) {
|
|
203
|
-
request.component.markAborted();
|
|
204
|
-
this.#closeActiveRequest({ abort: false });
|
|
205
|
-
return { kind: "aborted" };
|
|
206
|
-
}
|
|
207
195
|
|
|
208
|
-
|
|
209
|
-
request.component.setStatus("
|
|
210
|
-
const
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
196
|
+
for (;;) {
|
|
197
|
+
request.component.setStatus("saving", "Choose where to save or amend the TTSR rule…");
|
|
198
|
+
const location = await this.ctx.showHookSelector("Save TTSR rule where?", [
|
|
199
|
+
PROJECT_OPTION,
|
|
200
|
+
GLOBAL_OPTION,
|
|
201
|
+
AMEND_OPTION,
|
|
202
|
+
]);
|
|
214
203
|
if (!this.#isActiveRequest(request)) return { kind: "aborted" };
|
|
215
|
-
|
|
216
|
-
if (!feedback) {
|
|
204
|
+
if (!location) {
|
|
217
205
|
request.component.markAborted();
|
|
218
206
|
this.#closeActiveRequest({ abort: false });
|
|
219
207
|
return { kind: "aborted" };
|
|
220
208
|
}
|
|
221
|
-
return { kind: "amend", feedback };
|
|
222
|
-
}
|
|
223
209
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
return { kind: "
|
|
210
|
+
if (location === AMEND_OPTION) {
|
|
211
|
+
request.component.setStatus("confirming", "Describe how to amend the rule…");
|
|
212
|
+
const amendment = await this.ctx.showHookInput(
|
|
213
|
+
"Amend TTSR rule",
|
|
214
|
+
"e.g. Make it specific to Ruby string eval in tool:write(*.rb)",
|
|
215
|
+
);
|
|
216
|
+
if (!this.#isActiveRequest(request)) return { kind: "aborted" };
|
|
217
|
+
const feedback = amendment?.trim();
|
|
218
|
+
if (!feedback) continue;
|
|
219
|
+
return { kind: "amend", feedback };
|
|
234
220
|
}
|
|
235
|
-
}
|
|
236
221
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
222
|
+
const target = this.#resolveTarget(location, candidate.rule.name);
|
|
223
|
+
if (await Bun.file(target.filePath).exists()) {
|
|
224
|
+
const shouldOverwrite = await this.ctx.showHookConfirm(
|
|
225
|
+
"Overwrite TTSR rule?",
|
|
226
|
+
`${shortenPath(target.filePath)} already exists. Overwrite it?`,
|
|
227
|
+
);
|
|
228
|
+
if (!this.#isActiveRequest(request)) return { kind: "aborted" };
|
|
229
|
+
if (!shouldOverwrite) {
|
|
230
|
+
request.component.markRejected();
|
|
231
|
+
return { kind: "rejected" };
|
|
232
|
+
}
|
|
233
|
+
}
|
|
240
234
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
235
|
+
request.component.setStatus("saving", `Saving ${candidate.rule.name}…`);
|
|
236
|
+
await Bun.write(target.filePath, candidate.fileContent);
|
|
237
|
+
if (!this.#isActiveRequest(request)) return { kind: "aborted" };
|
|
238
|
+
|
|
239
|
+
const savedRule = buildOmfgRuleForPath(
|
|
240
|
+
candidate.rule.name,
|
|
241
|
+
candidate.fileContent,
|
|
242
|
+
target.filePath,
|
|
243
|
+
target.level,
|
|
244
|
+
);
|
|
245
|
+
this.#registerLive(savedRule);
|
|
246
|
+
request.component.markSaved(shortenPath(target.filePath));
|
|
247
|
+
return { kind: "saved" };
|
|
248
|
+
}
|
|
245
249
|
}
|
|
246
250
|
|
|
247
251
|
#resolveTarget(location: string, ruleName: string): { filePath: string; level: OmfgRuleSourceLevel } {
|
|
@@ -57,12 +57,10 @@ import {
|
|
|
57
57
|
parseConfiguredThinkingLevel,
|
|
58
58
|
} from "../../thinking";
|
|
59
59
|
import {
|
|
60
|
-
isImageProviderPreference,
|
|
61
60
|
isSearchProviderId,
|
|
62
|
-
isSearchProviderPreference,
|
|
63
61
|
setExcludedSearchProviders,
|
|
64
|
-
|
|
65
|
-
|
|
62
|
+
setImageProviderOrder,
|
|
63
|
+
setSearchProviderOrder,
|
|
66
64
|
type ToolSession,
|
|
67
65
|
} from "../../tools";
|
|
68
66
|
import { AskTool, type AskToolDetails, type AskToolInput } from "../../tools/ask";
|
|
@@ -439,6 +437,16 @@ export class SelectorController {
|
|
|
439
437
|
this.ctx.showError(`Failed to apply personality: ${err}`);
|
|
440
438
|
});
|
|
441
439
|
break;
|
|
440
|
+
case "tools.xdevDocs":
|
|
441
|
+
void this.ctx.session.refreshBaseSystemPrompt().catch(err => {
|
|
442
|
+
this.ctx.showError(`Failed to apply xd:// prompt docs setting: ${err}`);
|
|
443
|
+
});
|
|
444
|
+
break;
|
|
445
|
+
case "memory.backend":
|
|
446
|
+
void this.ctx.session.applyMemoryBackend().catch(err => {
|
|
447
|
+
this.ctx.showError(`Failed to apply memory backend: ${err}`);
|
|
448
|
+
});
|
|
449
|
+
break;
|
|
442
450
|
|
|
443
451
|
case "autocompleteMaxVisible":
|
|
444
452
|
this.ctx.editor.setAutocompleteMaxVisible(typeof value === "number" ? value : Number(value));
|
|
@@ -609,9 +617,9 @@ export class SelectorController {
|
|
|
609
617
|
}
|
|
610
618
|
|
|
611
619
|
// Provider settings - update runtime preferences
|
|
612
|
-
case "providers.
|
|
613
|
-
if (
|
|
614
|
-
|
|
620
|
+
case "providers.webSearchOrder":
|
|
621
|
+
if (Array.isArray(value)) {
|
|
622
|
+
setSearchProviderOrder(value.filter(isSearchProviderId));
|
|
615
623
|
}
|
|
616
624
|
break;
|
|
617
625
|
case "providers.webSearchExclude":
|
|
@@ -619,9 +627,9 @@ export class SelectorController {
|
|
|
619
627
|
setExcludedSearchProviders(value.filter(isSearchProviderId));
|
|
620
628
|
}
|
|
621
629
|
break;
|
|
622
|
-
case "providers.
|
|
623
|
-
if (
|
|
624
|
-
|
|
630
|
+
case "providers.imageOrder":
|
|
631
|
+
if (Array.isArray(value)) {
|
|
632
|
+
setImageProviderOrder(value.filter((entry): entry is string => typeof entry === "string"));
|
|
625
633
|
}
|
|
626
634
|
break;
|
|
627
635
|
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
import { AgentLifecycleManager } from "../../registry/agent-lifecycle";
|
|
13
13
|
import { AgentRegistry, MAIN_AGENT_ID, type RegistryEvent } from "../../registry/agent-registry";
|
|
14
14
|
import type { AgentSession } from "../../session/agent-session";
|
|
15
|
+
import { setTerminalTitleState } from "../../utils/title-generator";
|
|
15
16
|
import type { InteractiveModeContext } from "../types";
|
|
16
17
|
|
|
17
18
|
export class SessionFocusController {
|
|
@@ -104,8 +105,12 @@ export class SessionFocusController {
|
|
|
104
105
|
});
|
|
105
106
|
this.ctx.statusLine.setSession(target, this.#focusedAgentId);
|
|
106
107
|
this.ctx.renderInitialMessages({ clearTerminalHistory: true });
|
|
107
|
-
//
|
|
108
|
+
// Sync the run-state title to the attached target: a streaming target has no
|
|
109
|
+
// agent_start incoming, so arm the loader/working title manually; an idle
|
|
110
|
+
// target would otherwise inherit the previous session's stuck spinner, so
|
|
111
|
+
// reset it to idle (agent_end teardown already ran via clearTransientSessionUi).
|
|
108
112
|
if (target.isStreaming) await this.ctx.eventController.handleEvent({ type: "agent_start" });
|
|
113
|
+
else setTerminalTitleState("idle");
|
|
109
114
|
this.ctx.updateEditorBorderColor();
|
|
110
115
|
this.ctx.ui.requestRender();
|
|
111
116
|
}
|