@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
|
@@ -387,7 +387,143 @@ export function setTerminalTitle(title: string): void {
|
|
|
387
387
|
}
|
|
388
388
|
|
|
389
389
|
export function setSessionTerminalTitle(sessionName: string | undefined, cwd?: string): void {
|
|
390
|
-
|
|
390
|
+
// An authoritative session title (rename, new session, focus swap) supersedes
|
|
391
|
+
// any extension override so the base title tracks the real session again.
|
|
392
|
+
terminalTitleRuntime.extensionOverride = undefined;
|
|
393
|
+
terminalTitleRuntime.label = sanitizeTerminalTitlePart(sessionName) ?? getFallbackTerminalTitle(cwd);
|
|
394
|
+
emitTerminalTitle();
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
/**
|
|
398
|
+
* Set a terminal title from an extension's `setTitle()`. Unlike the session base
|
|
399
|
+
* title, this owns the terminal verbatim: the run-state separator will not rewrite
|
|
400
|
+
* it on the next spinner tick or state change. Cleared when the app next sets an
|
|
401
|
+
* authoritative session title via {@link setSessionTerminalTitle}.
|
|
402
|
+
*/
|
|
403
|
+
export function setExtensionTerminalTitle(title: string): void {
|
|
404
|
+
terminalTitleRuntime.extensionOverride = title;
|
|
405
|
+
emitTerminalTitle();
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
export type TerminalTitleState = "idle" | "working" | "attention";
|
|
409
|
+
|
|
410
|
+
/** Separator glyphs carrying the run state between the `π` brand and the session
|
|
411
|
+
* label — the brand itself stays bare (no prefix glyph). Spinner frames animate
|
|
412
|
+
* the separator while working; they are self-contained (not the theme's symbol
|
|
413
|
+
* set) to avoid a utils→modes import cycle; OSC titles render in tab/window bars
|
|
414
|
+
* that handle Unicode. */
|
|
415
|
+
const TITLE_SPINNER_FRAMES = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"] as const;
|
|
416
|
+
const TITLE_SPINNER_INTERVAL_MS = 80;
|
|
417
|
+
/** The user's turn: the title reads like a shell prompt awaiting input. */
|
|
418
|
+
const TITLE_IDLE_SEPARATOR = ">";
|
|
419
|
+
/** Agent blocked on the user (ask / approval prompt). */
|
|
420
|
+
const TITLE_ATTENTION_SEPARATOR = "!";
|
|
421
|
+
|
|
422
|
+
const terminalTitleRuntime: {
|
|
423
|
+
label: string | undefined;
|
|
424
|
+
state: TerminalTitleState;
|
|
425
|
+
frame: number;
|
|
426
|
+
enabled: boolean;
|
|
427
|
+
timer: NodeJS.Timeout | undefined;
|
|
428
|
+
lastEmitted: string | undefined;
|
|
429
|
+
/** A title an extension set via `setTitle()`. While set, it owns the terminal
|
|
430
|
+
* title verbatim: the run-state separator never rewrites it. Cleared when the
|
|
431
|
+
* app next establishes an authoritative session title (rename, new session,
|
|
432
|
+
* focus swap) via `setSessionTerminalTitle`. */
|
|
433
|
+
extensionOverride: string | undefined;
|
|
434
|
+
} = {
|
|
435
|
+
label: undefined,
|
|
436
|
+
state: "idle",
|
|
437
|
+
frame: 0,
|
|
438
|
+
enabled: true,
|
|
439
|
+
timer: undefined,
|
|
440
|
+
lastEmitted: undefined,
|
|
441
|
+
extensionOverride: undefined,
|
|
442
|
+
};
|
|
443
|
+
|
|
444
|
+
/**
|
|
445
|
+
* Compose the terminal title from the `π` brand, a state-carrying SEPARATOR, and
|
|
446
|
+
* the session label. The brand never gains a prefix glyph — the separator slot
|
|
447
|
+
* expresses the run state instead. Pure (no I/O) so the state→separator contract
|
|
448
|
+
* is unit-testable:
|
|
449
|
+
* - `idle` (user's turn): `π > label` — reads like a prompt awaiting input;
|
|
450
|
+
* - `working`: `π ⠋ label` — spinner frames animate the separator;
|
|
451
|
+
* - `attention`: `π ! label` — agent blocked on the user;
|
|
452
|
+
* - disabled: `π: label` — the pre-state layout.
|
|
453
|
+
* Without a label the separator trails the brand (`π >`) so the state stays visible.
|
|
454
|
+
*/
|
|
455
|
+
export function buildTerminalTitleWithState(
|
|
456
|
+
label: string | undefined,
|
|
457
|
+
state: TerminalTitleState,
|
|
458
|
+
frame: number,
|
|
459
|
+
enabled: boolean,
|
|
460
|
+
): string {
|
|
461
|
+
if (!enabled) return label ? `${DEFAULT_TERMINAL_TITLE}: ${label}` : DEFAULT_TERMINAL_TITLE;
|
|
462
|
+
const separator =
|
|
463
|
+
state === "working"
|
|
464
|
+
? TITLE_SPINNER_FRAMES[frame % TITLE_SPINNER_FRAMES.length]
|
|
465
|
+
: state === "attention"
|
|
466
|
+
? TITLE_ATTENTION_SEPARATOR
|
|
467
|
+
: TITLE_IDLE_SEPARATOR;
|
|
468
|
+
return label ? `${DEFAULT_TERMINAL_TITLE} ${separator} ${label}` : `${DEFAULT_TERMINAL_TITLE} ${separator}`;
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
function emitTerminalTitle(): void {
|
|
472
|
+
// An extension override owns the terminal verbatim; the run-state separator and
|
|
473
|
+
// spinner ticks must not clobber it (still deduped via lastEmitted).
|
|
474
|
+
const next =
|
|
475
|
+
terminalTitleRuntime.extensionOverride ??
|
|
476
|
+
buildTerminalTitleWithState(
|
|
477
|
+
terminalTitleRuntime.label,
|
|
478
|
+
terminalTitleRuntime.state,
|
|
479
|
+
terminalTitleRuntime.frame,
|
|
480
|
+
terminalTitleRuntime.enabled,
|
|
481
|
+
);
|
|
482
|
+
if (next === terminalTitleRuntime.lastEmitted) return;
|
|
483
|
+
terminalTitleRuntime.lastEmitted = next;
|
|
484
|
+
setTerminalTitle(next);
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
function stopTerminalTitleSpinner(): void {
|
|
488
|
+
if (terminalTitleRuntime.timer) {
|
|
489
|
+
clearInterval(terminalTitleRuntime.timer);
|
|
490
|
+
terminalTitleRuntime.timer = undefined;
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
function startTerminalTitleSpinner(): void {
|
|
495
|
+
if (terminalTitleRuntime.timer || !process.stdout.isTTY) return;
|
|
496
|
+
terminalTitleRuntime.timer = setInterval(() => {
|
|
497
|
+
terminalTitleRuntime.frame = (terminalTitleRuntime.frame + 1) % TITLE_SPINNER_FRAMES.length;
|
|
498
|
+
emitTerminalTitle();
|
|
499
|
+
}, TITLE_SPINNER_INTERVAL_MS);
|
|
500
|
+
// Never keep the event loop alive for a cosmetic animation.
|
|
501
|
+
terminalTitleRuntime.timer.unref?.();
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
/**
|
|
505
|
+
* Reflect the agent run state in the terminal title's separator: `working`
|
|
506
|
+
* animates spinner frames in the separator slot, `idle` shows `>` (your turn),
|
|
507
|
+
* `attention` shows `!` (agent blocked on you). Gated off by `tui.titleState`.
|
|
508
|
+
*/
|
|
509
|
+
export function setTerminalTitleState(state: TerminalTitleState): void {
|
|
510
|
+
terminalTitleRuntime.state = state;
|
|
511
|
+
if (state === "working" && terminalTitleRuntime.enabled) startTerminalTitleSpinner();
|
|
512
|
+
else stopTerminalTitleSpinner();
|
|
513
|
+
emitTerminalTitle();
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
/** Enable/disable the run-state separator (driven by the `tui.titleState` setting). */
|
|
517
|
+
export function setTerminalTitleStateEnabled(enabled: boolean): void {
|
|
518
|
+
terminalTitleRuntime.enabled = enabled;
|
|
519
|
+
if (enabled && terminalTitleRuntime.state === "working") startTerminalTitleSpinner();
|
|
520
|
+
else stopTerminalTitleSpinner();
|
|
521
|
+
emitTerminalTitle();
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
/** Stop the spinner timer; call on session/UI teardown. */
|
|
525
|
+
export function disposeTerminalTitleState(): void {
|
|
526
|
+
stopTerminalTitleSpinner();
|
|
391
527
|
}
|
|
392
528
|
|
|
393
529
|
/**
|