@sagmans/dsh-tui 0.6.0 → 0.8.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/.agents/skills/dsh-tui-dogfood/SKILL.md +83 -0
- package/.agents/skills/dsh-tui-dogfood/references/home-state.md +78 -0
- package/.agents/skills/dsh-tui-dogfood/scripts/clone-links.mjs +133 -0
- package/.agents/skills/dsh-tui-dogfood/scripts/run-plugin-from-worktree.sh +417 -0
- package/.agents/skills/dsh-tui-update-models/SKILL.md +199 -0
- package/.agents/skills/dsh-tui-update-models/references/model-wiring.md +292 -0
- package/.agents/skills/dsh-tui-update-models/scripts/dump-model-catalog.mjs +314 -0
- package/README.md +154 -27
- package/lib/agent/present.d.ts.map +1 -1
- package/lib/agent/present.js +2 -1
- package/lib/agent/present.js.map +1 -1
- package/lib/cards/composition.d.ts +68 -0
- package/lib/cards/composition.d.ts.map +1 -0
- package/lib/cards/composition.js +117 -0
- package/lib/cards/composition.js.map +1 -0
- package/lib/cards/presenter.d.ts +23 -0
- package/lib/cards/presenter.d.ts.map +1 -0
- package/lib/cards/presenter.js +394 -0
- package/lib/cards/presenter.js.map +1 -0
- package/lib/cards/preview.d.ts +42 -0
- package/lib/cards/preview.d.ts.map +1 -0
- package/lib/cards/preview.js +51 -0
- package/lib/cards/preview.js.map +1 -0
- package/lib/cards.d.ts +12 -120
- package/lib/cards.d.ts.map +1 -1
- package/lib/cards.js +4 -556
- package/lib/cards.js.map +1 -1
- package/lib/compat/section.d.ts +29 -0
- package/lib/compat/section.d.ts.map +1 -0
- package/lib/compat/section.js +82 -0
- package/lib/compat/section.js.map +1 -0
- package/lib/config.d.ts +27 -2
- package/lib/config.d.ts.map +1 -1
- package/lib/config.js +61 -1
- package/lib/config.js.map +1 -1
- package/lib/contracts.d.ts +28 -0
- package/lib/contracts.d.ts.map +1 -1
- package/lib/fold-cursor.d.ts +8 -0
- package/lib/fold-cursor.d.ts.map +1 -1
- package/lib/fold-cursor.js +18 -0
- package/lib/fold-cursor.js.map +1 -1
- package/lib/gates/question-card.d.ts +77 -0
- package/lib/gates/question-card.d.ts.map +1 -0
- package/lib/gates/question-card.js +113 -0
- package/lib/gates/question-card.js.map +1 -0
- package/lib/gates/questions.d.ts +127 -0
- package/lib/gates/questions.d.ts.map +1 -0
- package/lib/gates/questions.js +418 -0
- package/lib/gates/questions.js.map +1 -0
- package/lib/gates.d.ts +1 -113
- package/lib/gates.d.ts.map +1 -1
- package/lib/gates.js +1 -484
- package/lib/gates.js.map +1 -1
- package/lib/herdr/client.d.ts +8 -0
- package/lib/herdr/client.d.ts.map +1 -1
- package/lib/herdr/client.js +13 -1
- package/lib/herdr/client.js.map +1 -1
- package/lib/herdr/constants.d.ts +18 -0
- package/lib/herdr/constants.d.ts.map +1 -1
- package/lib/herdr/constants.js +18 -0
- package/lib/herdr/constants.js.map +1 -1
- package/lib/herdr/reporter.d.ts +20 -4
- package/lib/herdr/reporter.d.ts.map +1 -1
- package/lib/herdr/reporter.js +70 -20
- package/lib/herdr/reporter.js.map +1 -1
- package/lib/herdr/state.d.ts +10 -0
- package/lib/herdr/state.d.ts.map +1 -1
- package/lib/herdr/state.js +21 -4
- package/lib/herdr/state.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +348 -2602
- package/lib/index.js.map +1 -1
- package/lib/input/action-catalog.d.ts +74 -0
- package/lib/input/action-catalog.d.ts.map +1 -0
- package/lib/input/action-catalog.js +137 -0
- package/lib/input/action-catalog.js.map +1 -0
- package/lib/input/actions.d.ts +5 -81
- package/lib/input/actions.d.ts.map +1 -1
- package/lib/input/actions.js +4 -625
- package/lib/input/actions.js.map +1 -1
- package/lib/input/completion.d.ts +1 -1
- package/lib/input/completion.d.ts.map +1 -1
- package/lib/input/completion.js +2 -1
- package/lib/input/completion.js.map +1 -1
- package/lib/input/file-index.d.ts +40 -0
- package/lib/input/file-index.d.ts.map +1 -0
- package/lib/input/file-index.js +141 -0
- package/lib/input/file-index.js.map +1 -0
- package/lib/input/file-search.d.ts +1 -38
- package/lib/input/file-search.d.ts.map +1 -1
- package/lib/input/file-search.js +1 -487
- package/lib/input/file-search.js.map +1 -1
- package/lib/input/key-press.d.ts +57 -0
- package/lib/input/key-press.d.ts.map +1 -0
- package/lib/input/key-press.js +218 -0
- package/lib/input/key-press.js.map +1 -0
- package/lib/input/keymap-conflicts.d.ts +59 -0
- package/lib/input/keymap-conflicts.d.ts.map +1 -0
- package/lib/input/keymap-conflicts.js +292 -0
- package/lib/input/keymap-conflicts.js.map +1 -0
- package/lib/input/keymap-settings.js +1 -1
- package/lib/input/keymap-settings.js.map +1 -1
- package/lib/input/keymap.d.ts.map +1 -1
- package/lib/input/keymap.js +3 -1
- package/lib/input/keymap.js.map +1 -1
- package/lib/input/workspace-files.d.ts +10 -0
- package/lib/input/workspace-files.d.ts.map +1 -0
- package/lib/input/workspace-files.js +359 -0
- package/lib/input/workspace-files.js.map +1 -0
- package/lib/install-skills.d.ts +39 -0
- package/lib/install-skills.d.ts.map +1 -0
- package/lib/install-skills.js +273 -0
- package/lib/install-skills.js.map +1 -0
- package/lib/keys-command.d.ts +2 -1
- package/lib/keys-command.d.ts.map +1 -1
- package/lib/keys-command.js +2 -1
- package/lib/keys-command.js.map +1 -1
- package/lib/model-list.d.ts +37 -0
- package/lib/model-list.d.ts.map +1 -0
- package/lib/model-list.js +60 -0
- package/lib/model-list.js.map +1 -0
- package/lib/startup.d.ts +8 -0
- package/lib/startup.d.ts.map +1 -1
- package/lib/startup.js +120 -24
- package/lib/startup.js.map +1 -1
- package/lib/subagents.d.ts +7 -3
- package/lib/subagents.d.ts.map +1 -1
- package/lib/subagents.js +28 -4
- package/lib/subagents.js.map +1 -1
- package/lib/surface/appearance-preferences.d.ts +26 -0
- package/lib/surface/appearance-preferences.d.ts.map +1 -0
- package/lib/surface/appearance-preferences.js +139 -0
- package/lib/surface/appearance-preferences.js.map +1 -0
- package/lib/surface/appearance.d.ts +87 -0
- package/lib/surface/appearance.d.ts.map +1 -0
- package/lib/surface/appearance.js +353 -0
- package/lib/surface/appearance.js.map +1 -0
- package/lib/surface/background-work.d.ts +51 -0
- package/lib/surface/background-work.d.ts.map +1 -0
- package/lib/surface/background-work.js +172 -0
- package/lib/surface/background-work.js.map +1 -0
- package/lib/surface/commands.d.ts +82 -0
- package/lib/surface/commands.d.ts.map +1 -0
- package/lib/surface/commands.js +370 -0
- package/lib/surface/commands.js.map +1 -0
- package/lib/surface/modal-input.d.ts +59 -0
- package/lib/surface/modal-input.d.ts.map +1 -0
- package/lib/surface/modal-input.js +243 -0
- package/lib/surface/modal-input.js.map +1 -0
- package/lib/surface/model-choice.d.ts +54 -0
- package/lib/surface/model-choice.d.ts.map +1 -0
- package/lib/surface/model-choice.js +325 -0
- package/lib/surface/model-choice.js.map +1 -0
- package/lib/surface/preset-choice.d.ts +78 -0
- package/lib/surface/preset-choice.d.ts.map +1 -0
- package/lib/surface/preset-choice.js +163 -0
- package/lib/surface/preset-choice.js.map +1 -0
- package/lib/surface/prompt-input.d.ts +97 -0
- package/lib/surface/prompt-input.d.ts.map +1 -0
- package/lib/surface/prompt-input.js +215 -0
- package/lib/surface/prompt-input.js.map +1 -0
- package/lib/surface/prompt-memory.d.ts +76 -0
- package/lib/surface/prompt-memory.d.ts.map +1 -0
- package/lib/surface/prompt-memory.js +167 -0
- package/lib/surface/prompt-memory.js.map +1 -0
- package/lib/surface/session-lifecycle.d.ts +120 -0
- package/lib/surface/session-lifecycle.d.ts.map +1 -0
- package/lib/surface/session-lifecycle.js +324 -0
- package/lib/surface/session-lifecycle.js.map +1 -0
- package/lib/surface/session-picker.d.ts +39 -0
- package/lib/surface/session-picker.d.ts.map +1 -0
- package/lib/surface/session-picker.js +107 -0
- package/lib/surface/session-picker.js.map +1 -0
- package/lib/surface/session-view.d.ts +86 -0
- package/lib/surface/session-view.d.ts.map +1 -0
- package/lib/surface/session-view.js +215 -0
- package/lib/surface/session-view.js.map +1 -0
- package/lib/surface/staged-turns.d.ts +81 -0
- package/lib/surface/staged-turns.d.ts.map +1 -0
- package/lib/surface/staged-turns.js +206 -0
- package/lib/surface/staged-turns.js.map +1 -0
- package/lib/surface/terminal-lifecycle.d.ts +76 -0
- package/lib/surface/terminal-lifecycle.d.ts.map +1 -0
- package/lib/surface/terminal-lifecycle.js +222 -0
- package/lib/surface/terminal-lifecycle.js.map +1 -0
- package/lib/terminal-text/scan.d.ts +44 -0
- package/lib/terminal-text/scan.d.ts.map +1 -0
- package/lib/terminal-text/scan.js +195 -0
- package/lib/terminal-text/scan.js.map +1 -0
- package/lib/terminal-text/sgr.d.ts +32 -0
- package/lib/terminal-text/sgr.d.ts.map +1 -0
- package/lib/terminal-text/sgr.js +203 -0
- package/lib/terminal-text/sgr.js.map +1 -0
- package/lib/terminal-text.d.ts +1 -1
- package/lib/terminal-text.d.ts.map +1 -1
- package/lib/terminal-text.js +2 -379
- package/lib/terminal-text.js.map +1 -1
- package/lib/theme-command.js +2 -1
- package/lib/theme-command.js.map +1 -1
- package/lib/theme-defaults.d.ts +64 -0
- package/lib/theme-defaults.d.ts.map +1 -0
- package/lib/theme-defaults.js +248 -0
- package/lib/theme-defaults.js.map +1 -0
- package/lib/theme-files.d.ts +1 -1
- package/lib/theme-files.d.ts.map +1 -1
- package/lib/theme-files.js +1 -1
- package/lib/theme-files.js.map +1 -1
- package/lib/theme-resolver.d.ts +36 -0
- package/lib/theme-resolver.d.ts.map +1 -0
- package/lib/theme-resolver.js +112 -0
- package/lib/theme-resolver.js.map +1 -0
- package/lib/theme-schema.d.ts.map +1 -1
- package/lib/theme-schema.js +3 -2
- package/lib/theme-schema.js.map +1 -1
- package/lib/theme-settings.d.ts +5 -7
- package/lib/theme-settings.d.ts.map +1 -1
- package/lib/theme-settings.js +37 -21
- package/lib/theme-settings.js.map +1 -1
- package/lib/theme-tokens.d.ts +0 -89
- package/lib/theme-tokens.d.ts.map +1 -1
- package/lib/theme-tokens.js +0 -356
- package/lib/theme-tokens.js.map +1 -1
- package/lib/theme.d.ts +1 -1
- package/lib/theme.d.ts.map +1 -1
- package/lib/theme.js +2 -1
- package/lib/theme.js.map +1 -1
- package/lib/tool-display.d.ts.map +1 -1
- package/lib/tool-display.js +2 -1
- package/lib/tool-display.js.map +1 -1
- package/lib/transcript/message-content.d.ts +21 -0
- package/lib/transcript/message-content.d.ts.map +1 -0
- package/lib/transcript/message-content.js +61 -0
- package/lib/transcript/message-content.js.map +1 -0
- package/lib/transcript/tool-calls.d.ts +106 -0
- package/lib/transcript/tool-calls.d.ts.map +1 -0
- package/lib/transcript/tool-calls.js +254 -0
- package/lib/transcript/tool-calls.js.map +1 -0
- package/lib/transcript.d.ts +14 -55
- package/lib/transcript.d.ts.map +1 -1
- package/lib/transcript.js +31 -253
- package/lib/transcript.js.map +1 -1
- package/lib/ui/dock.d.ts +14 -2
- package/lib/ui/dock.d.ts.map +1 -1
- package/lib/ui/dock.js +52 -10
- package/lib/ui/dock.js.map +1 -1
- package/lib/ui/editor.d.ts.map +1 -1
- package/lib/ui/editor.js +2 -1
- package/lib/ui/editor.js.map +1 -1
- package/lib/ui/keymap-picker.d.ts +2 -1
- package/lib/ui/keymap-picker.d.ts.map +1 -1
- package/lib/ui/keymap-picker.js +1 -0
- package/lib/ui/keymap-picker.js.map +1 -1
- package/lib/ui/view/gate-card.d.ts +21 -0
- package/lib/ui/view/gate-card.d.ts.map +1 -0
- package/lib/ui/view/gate-card.js +104 -0
- package/lib/ui/view/gate-card.js.map +1 -0
- package/lib/ui/view/tool-card.d.ts +149 -0
- package/lib/ui/view/tool-card.d.ts.map +1 -0
- package/lib/ui/view/tool-card.js +429 -0
- package/lib/ui/view/tool-card.js.map +1 -0
- package/lib/ui/view/transcript-message.d.ts +62 -0
- package/lib/ui/view/transcript-message.d.ts.map +1 -0
- package/lib/ui/view/transcript-message.js +158 -0
- package/lib/ui/view/transcript-message.js.map +1 -0
- package/lib/ui/view.d.ts +105 -223
- package/lib/ui/view.d.ts.map +1 -1
- package/lib/ui/view.js +132 -679
- package/lib/ui/view.js.map +1 -1
- package/package.json +3 -1
- package/themes/violet-orbit.yaml +7 -5
package/lib/subagents.d.ts
CHANGED
|
@@ -4,26 +4,30 @@ export interface SubagentRun {
|
|
|
4
4
|
readonly runId: string;
|
|
5
5
|
readonly provider: string;
|
|
6
6
|
readonly id: string;
|
|
7
|
+
readonly label?: string;
|
|
7
8
|
readonly startedAt: number;
|
|
8
9
|
readonly status: 'running' | 'completed' | 'failed';
|
|
9
10
|
readonly stopReason?: string;
|
|
10
11
|
readonly finishedAt?: number;
|
|
11
12
|
}
|
|
12
13
|
/** Child rows the dock lists before the count takes over. */
|
|
13
|
-
export declare const DOCK_SUBAGENT_LIMIT =
|
|
14
|
+
export declare const DOCK_SUBAGENT_LIMIT = 3;
|
|
14
15
|
/** Short form of a child session id: enough to tell two children apart. */
|
|
15
16
|
export declare function shortId(id: string): string;
|
|
16
17
|
/**
|
|
17
18
|
* Track the delegations of one session.
|
|
18
19
|
*
|
|
19
20
|
* Subagent lifecycle arrives as service events rather than durable session
|
|
20
|
-
* events,
|
|
21
|
-
*
|
|
21
|
+
* events, while the parent's catalog supplies the task. This roster remains
|
|
22
|
+
* live state, so a resumed run starts empty even when its catalog is durable.
|
|
22
23
|
*/
|
|
23
24
|
export declare class SubagentRoster {
|
|
24
25
|
private readonly now;
|
|
25
26
|
private readonly runs;
|
|
27
|
+
private readonly labels;
|
|
26
28
|
constructor(now?: () => number);
|
|
29
|
+
/** Catalog entries precede starts normally; keep them for either event order. */
|
|
30
|
+
catalog(info: unknown): void;
|
|
27
31
|
/** Record a started run; an unknown shape is ignored rather than guessed at. */
|
|
28
32
|
start(info: unknown): void;
|
|
29
33
|
/** Settle a run; an end without its start still becomes a row. */
|
package/lib/subagents.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagents.d.ts","sourceRoot":"","sources":["../src/subagents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"subagents.d.ts","sourceRoot":"","sources":["../src/subagents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAIlD,oEAAoE;AACpE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAA;IACnD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED,6DAA6D;AAC7D,eAAO,MAAM,mBAAmB,IAAI,CAAA;AAYpC,2EAA2E;AAC3E,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE1C;AAED;;;;;;GAMG;AACH,qBAAa,cAAc;IAIb,OAAO,CAAC,QAAQ,CAAC,GAAG;IAHhC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiC;IACtD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;gBAEtB,GAAG,GAAE,MAAM,MAAyB;IAEjE,iFAAiF;IACjF,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAa5B,gFAAgF;IAChF,KAAK,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAgB1B,kEAAkE;IAClE,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAkBxB,IAAI,IAAI,SAAS,WAAW,EAAE;IAI9B,OAAO,IAAI,SAAS,WAAW,EAAE;IAIjC,KAAK,IAAI,IAAI;CAId;AAED,+BAA+B;AAC/B,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAKtE;AAED,iCAAiC;AACjC,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,WAAW,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAKnF;AAED,2DAA2D;AAC3D,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAKzD,yFAAyF;AACzF,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CASzE;AAED,0EAA0E;AAC1E,eAAO,MAAM,QAAQ,SAAS,CAAA;AAE9B;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,WAAW,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAapG;AAOD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG;IAAE,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAAG,SAAS,CAW7F"}
|
package/lib/subagents.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { describeDuration } from "./jobs.js";
|
|
2
|
+
import { stripControlCharacters } from "./text.js";
|
|
2
3
|
/** Child rows the dock lists before the count takes over. */
|
|
3
|
-
export const DOCK_SUBAGENT_LIMIT =
|
|
4
|
+
export const DOCK_SUBAGENT_LIMIT = 3;
|
|
4
5
|
/** Id characters kept in a row, so an id cannot smuggle in a control sequence. */
|
|
5
6
|
const SHORT_ID_LENGTH = 8;
|
|
7
|
+
/** Maximum task words the dock can show without hiding child status. */
|
|
8
|
+
const MAX_TASK_WORDS = 10;
|
|
6
9
|
function asRecord(value) {
|
|
7
10
|
return typeof value === 'object' && value !== null ? value : undefined;
|
|
8
11
|
}
|
|
@@ -14,15 +17,32 @@ export function shortId(id) {
|
|
|
14
17
|
* Track the delegations of one session.
|
|
15
18
|
*
|
|
16
19
|
* Subagent lifecycle arrives as service events rather than durable session
|
|
17
|
-
* events,
|
|
18
|
-
*
|
|
20
|
+
* events, while the parent's catalog supplies the task. This roster remains
|
|
21
|
+
* live state, so a resumed run starts empty even when its catalog is durable.
|
|
19
22
|
*/
|
|
20
23
|
export class SubagentRoster {
|
|
21
24
|
now;
|
|
22
25
|
runs = new Map();
|
|
26
|
+
labels = new Map();
|
|
23
27
|
constructor(now = () => Date.now()) {
|
|
24
28
|
this.now = now;
|
|
25
29
|
}
|
|
30
|
+
/** Catalog entries precede starts normally; keep them for either event order. */
|
|
31
|
+
catalog(info) {
|
|
32
|
+
const record = asRecord(info);
|
|
33
|
+
const id = record?.childId;
|
|
34
|
+
const raw = record?.label;
|
|
35
|
+
if (typeof id !== 'string' || typeof raw !== 'string')
|
|
36
|
+
return;
|
|
37
|
+
const label = stripControlCharacters(raw).trim().replace(/\s+/gu, ' ').split(' ').slice(0, MAX_TASK_WORDS).join(' ');
|
|
38
|
+
if (label === '')
|
|
39
|
+
return;
|
|
40
|
+
this.labels.set(id, label);
|
|
41
|
+
for (const [runId, run] of this.runs) {
|
|
42
|
+
if (run.id === id)
|
|
43
|
+
this.runs.set(runId, { ...run, label });
|
|
44
|
+
}
|
|
45
|
+
}
|
|
26
46
|
/** Record a started run; an unknown shape is ignored rather than guessed at. */
|
|
27
47
|
start(info) {
|
|
28
48
|
const record = asRecord(info);
|
|
@@ -30,9 +50,11 @@ export class SubagentRoster {
|
|
|
30
50
|
const id = record?.id;
|
|
31
51
|
if (typeof runId !== 'string' || typeof id !== 'string')
|
|
32
52
|
return;
|
|
53
|
+
const label = this.labels.get(id);
|
|
33
54
|
this.runs.set(runId, {
|
|
34
55
|
runId,
|
|
35
56
|
id,
|
|
57
|
+
...(label === undefined ? {} : { label }),
|
|
36
58
|
provider: typeof record?.provider === 'string' ? record.provider : 'subagent',
|
|
37
59
|
startedAt: this.now(),
|
|
38
60
|
status: 'running',
|
|
@@ -49,6 +71,7 @@ export class SubagentRoster {
|
|
|
49
71
|
this.runs.set(runId, {
|
|
50
72
|
runId,
|
|
51
73
|
id: typeof record?.id === 'string' ? record.id : existing?.id ?? runId,
|
|
74
|
+
...(existing?.label === undefined ? {} : { label: existing.label }),
|
|
52
75
|
provider: typeof record?.provider === 'string' ? record.provider : existing?.provider ?? 'subagent',
|
|
53
76
|
startedAt: existing?.startedAt ?? this.now(),
|
|
54
77
|
status: stopReason === undefined || stopReason === 'completed' ? 'completed' : 'failed',
|
|
@@ -64,6 +87,7 @@ export class SubagentRoster {
|
|
|
64
87
|
}
|
|
65
88
|
reset() {
|
|
66
89
|
this.runs.clear();
|
|
90
|
+
this.labels.clear();
|
|
67
91
|
}
|
|
68
92
|
}
|
|
69
93
|
/** One delegation as a row. */
|
|
@@ -71,7 +95,7 @@ export function describeSubagent(run, now) {
|
|
|
71
95
|
const age = run.status === 'running'
|
|
72
96
|
? `running ${describeDuration(now - run.startedAt)}`
|
|
73
97
|
: `${run.status}${run.stopReason === undefined || run.stopReason === 'completed' ? '' : ` (${run.stopReason})`} ${describeDuration((run.finishedAt ?? run.startedAt) - run.startedAt)}`;
|
|
74
|
-
return `${shortId(run.id)} · ${run.provider} · ${age}`;
|
|
98
|
+
return `${shortId(run.id)}${run.label === undefined ? '' : ` · ${run.label}`} · ${run.provider} · ${age}`;
|
|
75
99
|
}
|
|
76
100
|
/** The whole roster as lines. */
|
|
77
101
|
export function describeSubagents(runs, now) {
|
package/lib/subagents.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagents.js","sourceRoot":"","sources":["../src/subagents.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"subagents.js","sourceRoot":"","sources":["../src/subagents.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
2
|
+
import { type TuiSettings } from '../theme-settings.ts';
|
|
3
|
+
/** The painter keeps applied state; this owner only coordinates its durable preference source. */
|
|
4
|
+
export interface AppearancePreferencePorts {
|
|
5
|
+
readonly rowSettings: () => unknown;
|
|
6
|
+
readonly rowSettingsLive: boolean;
|
|
7
|
+
readonly applied: () => TuiSettings | undefined;
|
|
8
|
+
readonly apply: () => void;
|
|
9
|
+
readonly restyle: () => void;
|
|
10
|
+
readonly restorePreview: () => void;
|
|
11
|
+
readonly disableHistory: () => void;
|
|
12
|
+
readonly notice: (message: string) => void;
|
|
13
|
+
readonly problem: (message: string) => void;
|
|
14
|
+
}
|
|
15
|
+
/** Preference ownership stays independent of theme files, rendering, and picker state. */
|
|
16
|
+
export interface AppearancePreferences {
|
|
17
|
+
readonly read: () => TuiSettings;
|
|
18
|
+
readonly configBacked: () => boolean;
|
|
19
|
+
readonly chooseTheme: (name: string) => void;
|
|
20
|
+
readonly allowsHistory: (field: 'enabled' | 'ghost', applied: boolean) => boolean;
|
|
21
|
+
readonly register: () => void;
|
|
22
|
+
readonly listen: () => () => void;
|
|
23
|
+
}
|
|
24
|
+
/** Keep attachment, persistence, and notifications on the same checked settings source. */
|
|
25
|
+
export declare function createAppearancePreferences(ctx: Context, ports: AppearancePreferencePorts): AppearancePreferences;
|
|
26
|
+
//# sourceMappingURL=appearance-preferences.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appearance-preferences.d.ts","sourceRoot":"","sources":["../../src/surface/appearance-preferences.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAGlD,OAAO,EAAgF,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAIrI,kGAAkG;AAClG,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,WAAW,EAAE,MAAM,OAAO,CAAA;IACnC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAA;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,WAAW,GAAG,SAAS,CAAA;IAC/C,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAA;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,IAAI,CAAA;IACnC,QAAQ,CAAC,cAAc,EAAE,MAAM,IAAI,CAAA;IACnC,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAC5C;AAED,0FAA0F;AAC1F,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,WAAW,CAAA;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,OAAO,CAAA;IACpC,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAA;IACjF,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,MAAM,IAAI,CAAA;CAClC;AAED,2FAA2F;AAC3F,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,yBAAyB,GAAG,qBAAqB,CA4HjH"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { openSection } from "../compat/section.js";
|
|
2
|
+
import { asRecord } from "../theme-schema.js";
|
|
3
|
+
import { TUI_SETTINGS_NAMESPACE, TuiSettingsSchema, readScope, settingsProblemMessage } from "../theme-settings.js";
|
|
4
|
+
const WRITE_UNSUPPORTED = 'the settings service cannot write the section; the patch was not applied';
|
|
5
|
+
/** Keep attachment, persistence, and notifications on the same checked settings source. */
|
|
6
|
+
export function createAppearancePreferences(ctx, ports) {
|
|
7
|
+
let configBacked = false;
|
|
8
|
+
let activeScope;
|
|
9
|
+
let privacyRevision;
|
|
10
|
+
let hadUser = false;
|
|
11
|
+
let blocked = { enabled: false, ghost: false };
|
|
12
|
+
const observePrivacy = () => {
|
|
13
|
+
try {
|
|
14
|
+
const user = activeScope?.readUser();
|
|
15
|
+
if (user === undefined)
|
|
16
|
+
return;
|
|
17
|
+
if (user.revision !== privacyRevision) {
|
|
18
|
+
privacyRevision = user.revision;
|
|
19
|
+
hadUser = false;
|
|
20
|
+
blocked = { enabled: false, ghost: false };
|
|
21
|
+
}
|
|
22
|
+
// An invalid root is omitted by describe(); valid removal advances the revision.
|
|
23
|
+
if (user.value === undefined && hadUser)
|
|
24
|
+
blocked = { enabled: true, ghost: true };
|
|
25
|
+
hadUser ||= user.value !== undefined;
|
|
26
|
+
const section = asRecord(user.value);
|
|
27
|
+
const history = asRecord(section?.history);
|
|
28
|
+
if ((user.value !== undefined && section === undefined) || (section?.history !== undefined && history === undefined)) {
|
|
29
|
+
blocked = { enabled: true, ghost: true };
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
if (history?.enabled !== undefined && history.enabled !== true)
|
|
33
|
+
blocked.enabled = true;
|
|
34
|
+
if (history?.ghost !== undefined && history.ghost !== true)
|
|
35
|
+
blocked.ghost = true;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
blocked = { enabled: true, ghost: true };
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
let readSection = () => {
|
|
43
|
+
const row = readScope({ get: ports.rowSettings }, ports.problem);
|
|
44
|
+
// Until a supported owner can read preferences, absence cannot authorize recording.
|
|
45
|
+
return { ...row, history: { ...row.history, enabled: false, ghost: false } };
|
|
46
|
+
};
|
|
47
|
+
let chooseTheme = (_name) => {
|
|
48
|
+
ports.restorePreview();
|
|
49
|
+
ports.problem(WRITE_UNSUPPORTED);
|
|
50
|
+
};
|
|
51
|
+
// Profile settings address local row IDs, not the Loader's qualified entry paths.
|
|
52
|
+
const configNamespace = ctx.fiber.entry?.options.id;
|
|
53
|
+
const register = () => {
|
|
54
|
+
// Row appearance must exist before prompt memory, even when Cordis defers attachment.
|
|
55
|
+
ports.apply();
|
|
56
|
+
ctx.inject(['settings'], settingsCtx => {
|
|
57
|
+
let scope;
|
|
58
|
+
try {
|
|
59
|
+
scope = openSection(settingsCtx.settings, {
|
|
60
|
+
owner: settingsCtx,
|
|
61
|
+
ns: TUI_SETTINGS_NAMESPACE,
|
|
62
|
+
schema: TuiSettingsSchema,
|
|
63
|
+
entry: ports.rowSettings(),
|
|
64
|
+
config: { ns: configNamespace, get: ports.rowSettings, live: ports.rowSettingsLive },
|
|
65
|
+
onChange: () => {
|
|
66
|
+
ports.apply();
|
|
67
|
+
ports.restyle();
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
ports.disableHistory();
|
|
73
|
+
ports.problem(settingsProblemMessage(error) + ' · prompt history stays off until the section parses');
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
activeScope = scope;
|
|
77
|
+
privacyRevision = undefined;
|
|
78
|
+
hadUser = false;
|
|
79
|
+
blocked = { enabled: false, ghost: false };
|
|
80
|
+
configBacked = scope.kind === 'config';
|
|
81
|
+
readSection = () => readScope({ get: () => {
|
|
82
|
+
const raw = scope.get();
|
|
83
|
+
if (scope.kind !== 'config')
|
|
84
|
+
return raw;
|
|
85
|
+
const record = asRecord(raw);
|
|
86
|
+
if (record === undefined)
|
|
87
|
+
return raw;
|
|
88
|
+
const history = asRecord(record.history);
|
|
89
|
+
// Legacy import follows Loader activation. Missing switches cannot opt in first.
|
|
90
|
+
if (record.history !== undefined && history === undefined)
|
|
91
|
+
return raw;
|
|
92
|
+
return { ...record, history: {
|
|
93
|
+
...history,
|
|
94
|
+
enabled: history?.enabled === undefined ? false : history.enabled,
|
|
95
|
+
ghost: history?.ghost === undefined ? false : history.ghost,
|
|
96
|
+
} };
|
|
97
|
+
} }, ports.problem, ports.applied());
|
|
98
|
+
chooseTheme = name => {
|
|
99
|
+
void scope.update({ theme: name }).then(() => {
|
|
100
|
+
ports.apply();
|
|
101
|
+
ports.restyle();
|
|
102
|
+
ports.notice(`theme · ${name} · written to the settings document`);
|
|
103
|
+
}, (error) => {
|
|
104
|
+
ports.restorePreview();
|
|
105
|
+
ports.problem(settingsProblemMessage(error));
|
|
106
|
+
});
|
|
107
|
+
};
|
|
108
|
+
ports.apply();
|
|
109
|
+
});
|
|
110
|
+
};
|
|
111
|
+
const listen = () => {
|
|
112
|
+
const changed = (ns) => {
|
|
113
|
+
if (String(ns) !== TUI_SETTINGS_NAMESPACE && String(ns) !== configNamespace)
|
|
114
|
+
return;
|
|
115
|
+
ports.apply();
|
|
116
|
+
ports.restyle();
|
|
117
|
+
};
|
|
118
|
+
const section = ctx.on('settings/updated', changed);
|
|
119
|
+
const config = ctx.on('settings/document-updated', changed);
|
|
120
|
+
return () => { section(); config(); };
|
|
121
|
+
};
|
|
122
|
+
return {
|
|
123
|
+
read: () => {
|
|
124
|
+
const section = readSection();
|
|
125
|
+
// Attachment and commits must establish raw-layer presence before the first history use.
|
|
126
|
+
observePrivacy();
|
|
127
|
+
return section;
|
|
128
|
+
},
|
|
129
|
+
configBacked: () => configBacked,
|
|
130
|
+
chooseTheme: name => chooseTheme(name),
|
|
131
|
+
allowsHistory: (field, applied) => {
|
|
132
|
+
observePrivacy();
|
|
133
|
+
return applied && !blocked[field];
|
|
134
|
+
},
|
|
135
|
+
register,
|
|
136
|
+
listen,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=appearance-preferences.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appearance-preferences.js","sourceRoot":"","sources":["../../src/surface/appearance-preferences.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import type { KeyId } from '@earendil-works/pi-tui';
|
|
2
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
3
|
+
import { type Keymap } from '../input/actions.ts';
|
|
4
|
+
import { type NoticeSink } from '../settings-notice.ts';
|
|
5
|
+
import { type TuiTheme } from '../theme.ts';
|
|
6
|
+
import { type MermaidMode } from '../theme-settings.ts';
|
|
7
|
+
import type { ToolDisplayTable } from '../tool-display.ts';
|
|
8
|
+
import { type ViewState } from '../ui/view.ts';
|
|
9
|
+
import type { Picker } from './modal-input.ts';
|
|
10
|
+
import type { PromptInput } from './prompt-input.ts';
|
|
11
|
+
/**
|
|
12
|
+
* What the appearance owner needs from the surface that composes it.
|
|
13
|
+
*
|
|
14
|
+
* The sinks are ports because the caches they clear belong to the markdown view and
|
|
15
|
+
* the transcript view. The keyboard is a reader because the settings scope applies
|
|
16
|
+
* before the prompt bar's own owner exists, and the chord an edit has to end is
|
|
17
|
+
* armed at that moment.
|
|
18
|
+
*/
|
|
19
|
+
export interface AppearancePorts {
|
|
20
|
+
/** Whether colour was asked for at launch; the flag outranks anything configured. */
|
|
21
|
+
readonly color: () => boolean;
|
|
22
|
+
/**
|
|
23
|
+
* The theme the row's own configuration pins, or nothing when it pins none.
|
|
24
|
+
*
|
|
25
|
+
* Read from the row rather than taken from the section, because a harness that
|
|
26
|
+
* keeps configuration per row has no `dsh-tui:` section to write a name into:
|
|
27
|
+
* the row is then the only layer a profile patch can carry a theme in.
|
|
28
|
+
*/
|
|
29
|
+
readonly rowTheme: string | undefined;
|
|
30
|
+
/** Keep source Config references live rather than capturing their startup values. */
|
|
31
|
+
readonly rowSettings: () => unknown;
|
|
32
|
+
/** Source Loader can apply live edits only when its schema runtime created native references. */
|
|
33
|
+
readonly rowSettingsLive: boolean;
|
|
34
|
+
readonly notice: (message: string) => void;
|
|
35
|
+
readonly render: () => void;
|
|
36
|
+
readonly invalidateMarkdown: () => void;
|
|
37
|
+
readonly invalidateView: () => void;
|
|
38
|
+
/** The keys an edit re-installs, and the chord it has to end. */
|
|
39
|
+
readonly keybindings: () => Pick<PromptInput, 'installBindings' | 'disarmChord'>;
|
|
40
|
+
/** Run a list the surface answers for; the modal owner drives every gate and picker. */
|
|
41
|
+
readonly openPicker: (picker: Picker) => Promise<string | undefined>;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* The surface's appearance, rebuilt whenever the reader's settings change.
|
|
45
|
+
*
|
|
46
|
+
* Renderers hold this object for the life of the session, so the current theme
|
|
47
|
+
* is swapped *behind* a stable delegate rather than reassigned: every row then
|
|
48
|
+
* reads one whole table, and a repaint can never observe a half-applied one.
|
|
49
|
+
* `--no-color` still outranks anything configured.
|
|
50
|
+
*/
|
|
51
|
+
export interface Appearance {
|
|
52
|
+
readonly theme: TuiTheme;
|
|
53
|
+
/** The folds the transcript is drawn with, and the keys that flip them. */
|
|
54
|
+
readonly viewState: () => ViewState;
|
|
55
|
+
readonly toggleCards: () => void;
|
|
56
|
+
readonly toggleSubCalls: () => void;
|
|
57
|
+
readonly toggleReasoning: () => void;
|
|
58
|
+
readonly mermaidMode: () => MermaidMode;
|
|
59
|
+
readonly toolDisplay: () => ToolDisplayTable;
|
|
60
|
+
readonly keymap: () => Keymap;
|
|
61
|
+
readonly prefixKeys: () => readonly KeyId[];
|
|
62
|
+
readonly prefixWindowMs: () => number;
|
|
63
|
+
/** Whether prompts are recorded and offered, and the cap on how many. */
|
|
64
|
+
readonly historyEnabled: () => boolean;
|
|
65
|
+
readonly historyGhost: () => boolean;
|
|
66
|
+
readonly historyMaxEntries: () => number;
|
|
67
|
+
/** Print whatever the settings scope held back, where the reader can read it. */
|
|
68
|
+
readonly openNotices: (sink: NoticeSink) => void;
|
|
69
|
+
readonly registerSection: () => void;
|
|
70
|
+
readonly createThemesHome: () => void;
|
|
71
|
+
/** Register the settings listener; the answer takes it back off. */
|
|
72
|
+
readonly settingsListener: () => () => void;
|
|
73
|
+
/** Watch the reader's own themes; the answer stops the watch. */
|
|
74
|
+
readonly watchThemes: () => () => void;
|
|
75
|
+
/** Carry out one `theme` command line. */
|
|
76
|
+
readonly runThemeCommand: (argument: string) => void;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* The reader's appearance and display preferences, and the theme's lifetime.
|
|
80
|
+
*
|
|
81
|
+
* Every preference is read through a getter rather than captured, and the theme
|
|
82
|
+
* table is replaced behind a delegate the renderers already hold, because the
|
|
83
|
+
* document is hot-reloaded and the shade the reader saves has to reach a session
|
|
84
|
+
* that is already on screen.
|
|
85
|
+
*/
|
|
86
|
+
export declare function createAppearance(ctx: Context, ports: AppearancePorts): Appearance;
|
|
87
|
+
//# sourceMappingURL=appearance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appearance.d.ts","sourceRoot":"","sources":["../../src/surface/appearance.ts"],"names":[],"mappings":"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"}
|