@agi-fans/dsh-tui 0.22.0 → 0.23.1
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/LICENSE +26 -0
- package/lib/CHANGELOG.md +219 -1
- package/lib/chrome/box.d.ts +1 -18
- package/lib/chrome/box.js +2 -45
- package/lib/chrome/box.js.map +1 -1
- package/lib/chrome/code-highlight.js +4 -4
- package/lib/chrome/code-highlight.js.map +1 -1
- package/lib/chrome/command-output.d.ts +0 -1
- package/lib/chrome/command-output.js +11 -5
- package/lib/chrome/command-output.js.map +1 -1
- package/lib/chrome/goal-bar.js +1 -1
- package/lib/chrome/goal-bar.js.map +1 -1
- package/lib/chrome/main-screen-renderer.js +4 -3
- package/lib/chrome/main-screen-renderer.js.map +1 -1
- package/lib/chrome/markdown.d.ts +3 -3
- package/lib/chrome/markdown.js +85 -36
- package/lib/chrome/markdown.js.map +1 -1
- package/lib/chrome/md-style.d.ts +5 -2
- package/lib/chrome/md-style.js +13 -4
- package/lib/chrome/md-style.js.map +1 -1
- package/lib/chrome/renderer.d.ts +37 -1
- package/lib/chrome/renderer.js.map +1 -1
- package/lib/chrome/status-line.d.ts +3 -3
- package/lib/chrome/status-line.js +5 -5
- package/lib/chrome/status-line.js.map +1 -1
- package/lib/chrome/theme.d.ts +8 -3
- package/lib/chrome/theme.js +51 -153
- package/lib/chrome/theme.js.map +1 -1
- package/lib/commands/auth-account.d.ts +9 -0
- package/lib/commands/auth-account.js +202 -0
- package/lib/commands/auth-account.js.map +1 -0
- package/lib/commands/auth.js +238 -414
- package/lib/commands/auth.js.map +1 -1
- package/lib/commands/diff.js +22 -16
- package/lib/commands/diff.js.map +1 -1
- package/lib/commands/export.d.ts +0 -1
- package/lib/commands/export.js +99 -32
- package/lib/commands/export.js.map +1 -1
- package/lib/commands/files.js +11 -9
- package/lib/commands/files.js.map +1 -1
- package/lib/commands/integrations.d.ts +12 -1
- package/lib/commands/integrations.js +120 -23
- package/lib/commands/integrations.js.map +1 -1
- package/lib/commands/jobs-browser.d.ts +3 -0
- package/lib/commands/jobs-browser.js +152 -0
- package/lib/commands/jobs-browser.js.map +1 -0
- package/lib/commands/jobs.d.ts +3 -14
- package/lib/commands/jobs.js +26 -18
- package/lib/commands/jobs.js.map +1 -1
- package/lib/commands/model.d.ts +3 -0
- package/lib/commands/model.js +212 -128
- package/lib/commands/model.js.map +1 -1
- package/lib/commands/open-external.d.ts +2 -0
- package/lib/commands/open-external.js +19 -0
- package/lib/commands/open-external.js.map +1 -0
- package/lib/commands/permission.js +65 -54
- package/lib/commands/permission.js.map +1 -1
- package/lib/commands/plugins.js +381 -139
- package/lib/commands/plugins.js.map +1 -1
- package/lib/commands/schedule-catalog.d.ts +12 -0
- package/lib/commands/schedule-catalog.js +41 -0
- package/lib/commands/schedule-catalog.js.map +1 -0
- package/lib/commands/schedule-history.d.ts +4 -0
- package/lib/commands/schedule-history.js +62 -0
- package/lib/commands/schedule-history.js.map +1 -0
- package/lib/commands/schedule.d.ts +12 -15
- package/lib/commands/schedule.js +220 -187
- package/lib/commands/schedule.js.map +1 -1
- package/lib/commands/session-configuration.d.ts +3 -0
- package/lib/commands/session-configuration.js +62 -28
- package/lib/commands/session-configuration.js.map +1 -1
- package/lib/commands/session.js +116 -66
- package/lib/commands/session.js.map +1 -1
- package/lib/commands/terminal.js +14 -8
- package/lib/commands/terminal.js.map +1 -1
- package/lib/definition.d.ts +115 -15
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/input/actions.d.ts +1 -1
- package/lib/input/actions.js +5 -2
- package/lib/input/actions.js.map +1 -1
- package/lib/input/composer-files.d.ts +2 -0
- package/lib/input/composer-files.js +13 -3
- package/lib/input/composer-files.js.map +1 -1
- package/lib/input/image-paste.d.ts +5 -12
- package/lib/input/image-paste.js +32 -28
- package/lib/input/image-paste.js.map +1 -1
- package/lib/input/key-test.d.ts +5 -0
- package/lib/input/key-test.js +19 -0
- package/lib/input/key-test.js.map +1 -0
- package/lib/input/keys.d.ts +2 -0
- package/lib/input/keys.js +4 -1
- package/lib/input/keys.js.map +1 -1
- package/lib/locale/index.d.ts +6 -0
- package/lib/locale/index.js +32 -0
- package/lib/locale/index.js.map +1 -0
- package/lib/locale/prompt.d.ts +4 -0
- package/lib/locale/prompt.js +24 -0
- package/lib/locale/prompt.js.map +1 -0
- package/lib/locale/zh.d.ts +1114 -0
- package/lib/locale/zh.js +1115 -0
- package/lib/locale/zh.js.map +1 -0
- package/lib/prompt-intents.d.ts +4 -0
- package/lib/prompt-intents.js +4 -0
- package/lib/prompt-intents.js.map +1 -1
- package/lib/runtime/account-settings.d.ts +18 -0
- package/lib/runtime/account-settings.js +241 -0
- package/lib/runtime/account-settings.js.map +1 -0
- package/lib/runtime/agent-profile.d.ts +3 -3
- package/lib/runtime/agent-profile.js +4 -4
- package/lib/runtime/agent-profile.js.map +1 -1
- package/lib/runtime/btw-policy.js +2 -1
- package/lib/runtime/btw-policy.js.map +1 -1
- package/lib/runtime/btw.js +1 -2
- package/lib/runtime/btw.js.map +1 -1
- package/lib/runtime/composer-images.d.ts +2 -2
- package/lib/runtime/composer-images.js +4 -4
- package/lib/runtime/composer-images.js.map +1 -1
- package/lib/runtime/composer-shell.js +27 -1
- package/lib/runtime/composer-shell.js.map +1 -1
- package/lib/runtime/file-browser.d.ts +19 -0
- package/lib/runtime/file-browser.js +291 -0
- package/lib/runtime/file-browser.js.map +1 -0
- package/lib/runtime/file-review.d.ts +6 -9
- package/lib/runtime/file-review.js +91 -7
- package/lib/runtime/file-review.js.map +1 -1
- package/lib/runtime/help-reader.d.ts +12 -0
- package/lib/runtime/help-reader.js +50 -0
- package/lib/runtime/help-reader.js.map +1 -0
- package/lib/runtime/human-interaction.js +1 -1
- package/lib/runtime/human-interaction.js.map +1 -1
- package/lib/runtime/model-catalog-editor.d.ts +12 -0
- package/lib/runtime/model-catalog-editor.js +215 -0
- package/lib/runtime/model-catalog-editor.js.map +1 -0
- package/lib/runtime/model-settings.d.ts +11 -0
- package/lib/runtime/model-settings.js +404 -0
- package/lib/runtime/model-settings.js.map +1 -0
- package/lib/runtime/plugin-settings.d.ts +4 -1
- package/lib/runtime/plugin-settings.js +164 -88
- package/lib/runtime/plugin-settings.js.map +1 -1
- package/lib/runtime/prompt-browser.d.ts +9 -0
- package/lib/runtime/prompt-browser.js +19 -0
- package/lib/runtime/prompt-browser.js.map +1 -0
- package/lib/runtime/provider-local.d.ts +27 -27
- package/lib/runtime/provider-local.js +1288 -308
- package/lib/runtime/provider-local.js.map +1 -1
- package/lib/runtime/reference-reader.d.ts +15 -0
- package/lib/runtime/reference-reader.js +78 -0
- package/lib/runtime/reference-reader.js.map +1 -0
- package/lib/runtime/runner.js +38 -29
- package/lib/runtime/runner.js.map +1 -1
- package/lib/runtime/session-runtime.js +1 -1
- package/lib/runtime/session-runtime.js.map +1 -1
- package/lib/runtime/settings-draft.d.ts +21 -0
- package/lib/runtime/settings-draft.js +166 -0
- package/lib/runtime/settings-draft.js.map +1 -0
- package/lib/runtime/settings-preferences.js +1 -1
- package/lib/runtime/settings-preferences.js.map +1 -1
- package/lib/runtime/startup-notices.d.ts +0 -1
- package/lib/runtime/startup-notices.js +35 -6
- package/lib/runtime/startup-notices.js.map +1 -1
- package/lib/runtime/subagent-model-selection.js +2 -1
- package/lib/runtime/subagent-model-selection.js.map +1 -1
- package/lib/runtime/subagent-settings.d.ts +14 -0
- package/lib/runtime/subagent-settings.js +288 -0
- package/lib/runtime/subagent-settings.js.map +1 -0
- package/lib/runtime/terminal-notifications.d.ts +3 -0
- package/lib/runtime/terminal-notifications.js +13 -8
- package/lib/runtime/terminal-notifications.js.map +1 -1
- package/lib/runtime/terminal-probe.d.ts +2 -0
- package/lib/runtime/terminal-probe.js +9 -0
- package/lib/runtime/terminal-probe.js.map +1 -1
- package/lib/runtime/tool-presentation.js.map +1 -1
- package/lib/runtime/tool-reader.d.ts +5 -0
- package/lib/runtime/tool-reader.js +27 -0
- package/lib/runtime/tool-reader.js.map +1 -0
- package/lib/runtime/web-settings.d.ts +14 -0
- package/lib/runtime/web-settings.js +339 -0
- package/lib/runtime/web-settings.js.map +1 -0
- package/lib/session/command-attachments.d.ts +17 -0
- package/lib/session/command-attachments.js +50 -0
- package/lib/session/command-attachments.js.map +1 -0
- package/lib/session/context-diagnostics.d.ts +16 -0
- package/lib/session/context-diagnostics.js +15 -0
- package/lib/session/context-diagnostics.js.map +1 -1
- package/lib/session/external-agents.d.ts +3 -1
- package/lib/session/external-agents.js +35 -10
- package/lib/session/external-agents.js.map +1 -1
- package/lib/session/generation-continuation.d.ts +11 -0
- package/lib/session/generation-continuation.js +34 -0
- package/lib/session/generation-continuation.js.map +1 -0
- package/lib/session/goal-controls.d.ts +5 -0
- package/lib/session/goal-controls.js +81 -0
- package/lib/session/goal-controls.js.map +1 -0
- package/lib/session/interaction-adapter.d.ts +7 -3
- package/lib/session/interaction-adapter.js +121 -49
- package/lib/session/interaction-adapter.js.map +1 -1
- package/lib/session/message-queue.d.ts +2 -0
- package/lib/session/message-queue.js +102 -17
- package/lib/session/message-queue.js.map +1 -1
- package/lib/session/pending-inputs.d.ts +30 -0
- package/lib/session/pending-inputs.js +183 -0
- package/lib/session/pending-inputs.js.map +1 -0
- package/lib/session/session-configuration.js +1 -1
- package/lib/session/session-configuration.js.map +1 -1
- package/lib/session/session-controller.d.ts +33 -20
- package/lib/session/session-controller.js +500 -129
- package/lib/session/session-controller.js.map +1 -1
- package/lib/session/session-library.d.ts +3 -1
- package/lib/session/session-library.js +15 -0
- package/lib/session/session-library.js.map +1 -1
- package/lib/session/subagent-roster.d.ts +1 -0
- package/lib/session/subagent-roster.js +16 -5
- package/lib/session/subagent-roster.js.map +1 -1
- package/lib/session/subagent-tracker.d.ts +2 -0
- package/lib/session/subagent-tracker.js +18 -0
- package/lib/session/subagent-tracker.js.map +1 -1
- package/lib/session/tui-settings.d.ts +9 -5
- package/lib/session/tui-settings.js +3 -1
- package/lib/session/tui-settings.js.map +1 -1
- package/lib/session/workflow-projection.d.ts +2 -1
- package/lib/session/workflow-projection.js +34 -4
- package/lib/session/workflow-projection.js.map +1 -1
- package/lib/views/autocomplete.d.ts +12 -12
- package/lib/views/autocomplete.js +54 -45
- package/lib/views/autocomplete.js.map +1 -1
- package/lib/views/context-overview.d.ts +4 -0
- package/lib/views/context-overview.js +43 -0
- package/lib/views/context-overview.js.map +1 -0
- package/lib/views/copy-targets.d.ts +6 -2
- package/lib/views/copy-targets.js +19 -14
- package/lib/views/copy-targets.js.map +1 -1
- package/lib/views/document-reader.d.ts +10 -1
- package/lib/views/document-reader.js +63 -6
- package/lib/views/document-reader.js.map +1 -1
- package/lib/views/event-views.js +29 -11
- package/lib/views/event-views.js.map +1 -1
- package/lib/views/file-actions.js +21 -0
- package/lib/views/file-actions.js.map +1 -1
- package/lib/views/file-browser.d.ts +98 -0
- package/lib/views/file-browser.js +120 -0
- package/lib/views/file-browser.js.map +1 -0
- package/lib/views/history-search.js +4 -4
- package/lib/views/history-search.js.map +1 -1
- package/lib/views/hotkey-format.d.ts +3 -2
- package/lib/views/hotkey-format.js +4 -3
- package/lib/views/hotkey-format.js.map +1 -1
- package/lib/views/hotkeys.js +10 -12
- package/lib/views/hotkeys.js.map +1 -1
- package/lib/views/list-view.js +16 -11
- package/lib/views/list-view.js.map +1 -1
- package/lib/views/prompt-selector.d.ts +23 -1
- package/lib/views/prompt-selector.js +123 -60
- package/lib/views/prompt-selector.js.map +1 -1
- package/lib/views/settings-list.d.ts +6 -1
- package/lib/views/settings-list.js +69 -46
- package/lib/views/settings-list.js.map +1 -1
- package/lib/views/tool-actions.d.ts +16 -0
- package/lib/views/tool-actions.js +29 -0
- package/lib/views/tool-actions.js.map +1 -0
- package/lib/views/trajectory-timeline.d.ts +5 -6
- package/lib/views/trajectory-timeline.js +25 -15
- package/lib/views/trajectory-timeline.js.map +1 -1
- package/lib/views/trajectory.d.ts +23 -2
- package/lib/views/trajectory.js +404 -186
- package/lib/views/trajectory.js.map +1 -1
- package/lib/views/transcript-render.d.ts +39 -15
- package/lib/views/transcript-render.js +406 -208
- package/lib/views/transcript-render.js.map +1 -1
- package/lib/views/transcript-types.d.ts +3 -2
- package/lib/views/transcript-types.js.map +1 -1
- package/lib/views/workflow.d.ts +16 -0
- package/lib/views/workflow.js +42 -0
- package/lib/views/workflow.js.map +1 -0
- package/package.json +61 -58
- package/lib/chrome/welcome-tips.d.ts +0 -23
- package/lib/chrome/welcome-tips.js +0 -24
- package/lib/chrome/welcome-tips.js.map +0 -1
- package/lib/session/steering.d.ts +0 -3
- package/lib/session/steering.js +0 -9
- package/lib/session/steering.js.map +0 -1
|
@@ -30,6 +30,8 @@ export declare class SubagentTracker {
|
|
|
30
30
|
owns(id: string): boolean;
|
|
31
31
|
/** The current published snapshot, or undefined for an empty roster. */
|
|
32
32
|
snapshot(): TuiSubagentRoster | undefined;
|
|
33
|
+
/** Project the lifetime of a live approval, including queued prompts. */
|
|
34
|
+
beginApprovalRequest(id: string): () => void;
|
|
33
35
|
/** Drop all tracked children and invalidate any in-flight catalog listing. */
|
|
34
36
|
reset(): void;
|
|
35
37
|
/** Remember a freshly created session when it descends from the root. */
|
|
@@ -12,6 +12,7 @@ export class SubagentTracker {
|
|
|
12
12
|
#roster = new SubagentRoster();
|
|
13
13
|
#published;
|
|
14
14
|
#epoch = 0;
|
|
15
|
+
#approvalRequests = new Map();
|
|
15
16
|
#externalRuns = new Map();
|
|
16
17
|
#externalActivities = new Map();
|
|
17
18
|
constructor(deps) {
|
|
@@ -25,10 +26,25 @@ export class SubagentTracker {
|
|
|
25
26
|
snapshot() {
|
|
26
27
|
return this.#roster.snapshot();
|
|
27
28
|
}
|
|
29
|
+
/** Project the lifetime of a live approval, including queued prompts. */
|
|
30
|
+
beginApprovalRequest(id) {
|
|
31
|
+
const requests = this.#approvalRequests.get(id) ?? new Set();
|
|
32
|
+
const token = Symbol();
|
|
33
|
+
requests.add(token);
|
|
34
|
+
this.#approvalRequests.set(id, requests);
|
|
35
|
+
this.#publish();
|
|
36
|
+
return () => {
|
|
37
|
+
if (this.#approvalRequests.get(id) !== requests)
|
|
38
|
+
return;
|
|
39
|
+
requests.delete(token);
|
|
40
|
+
this.#publish();
|
|
41
|
+
};
|
|
42
|
+
}
|
|
28
43
|
/** Drop all tracked children and invalidate any in-flight catalog listing. */
|
|
29
44
|
reset() {
|
|
30
45
|
this.#epoch += 1;
|
|
31
46
|
this.#roster.reset();
|
|
47
|
+
this.#approvalRequests.clear();
|
|
32
48
|
this.#externalRuns.clear();
|
|
33
49
|
this.#externalActivities.clear();
|
|
34
50
|
}
|
|
@@ -165,6 +181,8 @@ export class SubagentTracker {
|
|
|
165
181
|
}
|
|
166
182
|
/** Push the roster when its snapshot identity changed since the last push. */
|
|
167
183
|
#publish() {
|
|
184
|
+
for (const [id, requests] of this.#approvalRequests)
|
|
185
|
+
this.#roster.setNeedsInput(id, requests.size > 0);
|
|
168
186
|
const roster = this.#roster.snapshot();
|
|
169
187
|
if (roster === this.#published)
|
|
170
188
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagent-tracker.js","sourceRoot":"","sources":["../../src/session/subagent-tracker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"subagent-tracker.js","sourceRoot":"","sources":["../../src/session/subagent-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAiBrD,MAAM,OAAO,eAAe;IACjB,KAAK,CAAqB;IAC1B,OAAO,GAAG,IAAI,cAAc,EAAE,CAAA;IACvC,UAAU,CAA+B;IACzC,MAAM,GAAG,CAAC,CAAA;IACD,iBAAiB,GAAG,IAAI,GAAG,EAAuB,CAAA;IAClD,aAAa,GAAG,IAAI,GAAG,EAAgD,CAAA;IACvE,mBAAmB,GAAG,IAAI,GAAG,EAAiC,CAAA;IAEvE,YAAY,IAAyB;QACnC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;IACnB,CAAC;IAED,yDAAyD;IACzD,IAAI,CAAC,EAAU;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC9B,CAAC;IAED,wEAAwE;IACxE,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAA;IAChC,CAAC;IAED,yEAAyE;IACzE,oBAAoB,CAAC,EAAU;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,GAAG,EAAU,CAAA;QACpE,MAAM,KAAK,GAAG,MAAM,EAAE,CAAA;QACtB,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACnB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;QACxC,IAAI,CAAC,QAAQ,EAAE,CAAA;QACf,OAAO,GAAG,EAAE;YACV,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,QAAQ;gBAAE,OAAM;YACvD,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACtB,IAAI,CAAC,QAAQ,EAAE,CAAA;QACjB,CAAC,CAAA;IACH,CAAC;IAED,8EAA8E;IAC9E,KAAK;QACH,IAAI,CAAC,MAAM,IAAI,CAAC,CAAA;QAChB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QACpB,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAA;QAC9B,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAA;QAC1B,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAA;IAClC,CAAC;IAED,yEAAyE;IACzE,WAAW,CAAC,OAAgB;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACvC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAM;QAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAA;QAC7C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YACpB,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;YAC/C,KAAK;YACL,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;SACjF,CAAC,CAAA;QACF,IAAI,CAAC,QAAQ,EAAE,CAAA;IACjB,CAAC;IAED,wDAAwD;IACxD,SAAS,CAAC,OAAgB,EAAE,KAAmB;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACvC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAM;QAC/B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;QAC7E,IAAI,CAAC,QAAQ,EAAE,CAAA;IACjB,CAAC;IAED,oEAAoE;IACpE,cAAc,CAAC,OAAgB,EAAE,MAA+B;QAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QAC7D,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB;gBAAE,SAAQ;YAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAC3D,IAAI,QAAQ,KAAK,SAAS;gBAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;YAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACnE,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,KAAK,MAAM,QAAQ,IAAI,UAAU;oBAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;YACpG,CAAC;QACH,CAAC;QACD,IAAI,KAAK;YAAE,IAAI,CAAC,QAAQ,EAAE,CAAA;IAC5B,CAAC;IAED,gFAAgF;IAChF,UAAU,CAAC,OAAgB,EAAE,MAA0B;QACrD,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;YAC/C,IAAI,CAAC,QAAQ,EAAE,CAAA;YACf,OAAM;QACR,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACvC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAM;QAC/B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,CAAA;QAClF,IAAI,CAAC,QAAQ,EAAE,CAAA;IACjB,CAAC;IAED,gEAAgE;IAChE,QAAQ,CAAC,OAAgB;QACvB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAAE,OAAM;QAC1C,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QAC/C,IAAI,CAAC,QAAQ,EAAE,CAAA;IACjB,CAAC;IAED,kFAAkF;IAClF,eAAe,CAAC,IAA0C;QACxD,IAAI,IAAI,CAAC,KAAK;YAAE,OAAM;QACtB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QACrC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,OAAM;QACvC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAC5E,YAAY,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,WAAW,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAA;QAC3F,IAAI,CAAC,QAAQ,EAAE,CAAA;IACjB,CAAC;IAED,kEAAkE;IAClE,oBAAoB,CAAC,EAAU,EAAE,QAA6B;QAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAA;QACnD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACnB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,KAAK,EAAE,CAAA;QACjC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QACtC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,OAAM;QAClC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;QAC/C,IAAI,CAAC,QAAQ,EAAE,CAAA;IACjB,CAAC;IAED;;;;OAIG;IACH,IAAI;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAA;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;QAC7B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;YACpB,IAAI,CAAC,QAAQ,EAAE,CAAA;YACf,OAAM;QACR,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAC1B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACvC,IAAI,KAAK,KAAK,SAAS;gBAAE,SAAQ;YACjC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;QAC1E,CAAC;QACD,IAAI,CAAC,QAAQ,EAAE,CAAA;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;QAC9C,IAAI,MAAM,KAAK,SAAS;YAAE,OAAM;QAChC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3B,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,MAAM;gBAAE,OAAM;YACnE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;oBACpB,EAAE,EAAE,KAAK,CAAC,EAAE;oBACZ,KAAK,EAAE,CAAC;oBACR,gEAAgE;oBAChE,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;oBACzD,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;oBAC5D,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;iBACxH,CAAC,CAAA;gBACF,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;gBACjD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,QAAQ,KAAK,SAAS;oBAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;gBACvF,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;gBACzD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;oBAC1D,KAAK,MAAM,QAAQ,IAAI,UAAU;wBAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;gBAC1F,CAAC;YACH,CAAC;YACD,IAAI,CAAC,QAAQ,EAAE,CAAA;QACjB,CAAC,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;IACrB,CAAC;IAED,8EAA8E;IAC9E,QAAQ;QACN,KAAK,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,iBAAiB;YAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;QACtG,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAA;QACtC,IAAI,MAAM,KAAK,IAAI,CAAC,UAAU;YAAE,OAAM;QACtC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAA;QACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC5B,CAAC;CACF"}
|
|
@@ -51,6 +51,7 @@ export declare function resolveNotificationMode(notifications: string | undefine
|
|
|
51
51
|
export declare const TUI_SETTINGS_ENTRY = "tui";
|
|
52
52
|
/** Durable TUI preferences as live references on the owning entry's config. */
|
|
53
53
|
export interface TuiSettings {
|
|
54
|
+
uiLanguage: Volatile<'auto' | 'zh-CN' | 'en'>;
|
|
54
55
|
theme: Volatile<ThemeName>;
|
|
55
56
|
colors: Volatile<boolean | undefined>;
|
|
56
57
|
motion: Volatile<MotionMode>;
|
|
@@ -60,6 +61,7 @@ export interface TuiSettings {
|
|
|
60
61
|
editor: Volatile<EditorId>;
|
|
61
62
|
terminalTitle: Volatile<TerminalTitleMode>;
|
|
62
63
|
terminalState: Volatile<TerminalStateMode>;
|
|
64
|
+
busyEnter: Volatile<'queue' | 'steer'>;
|
|
63
65
|
pasteProtection: Volatile<boolean>;
|
|
64
66
|
copyOnSelect: Volatile<boolean>;
|
|
65
67
|
mouseInteraction: Volatile<'auto' | 'tui' | 'native'>;
|
|
@@ -85,25 +87,27 @@ export interface TuiSettings {
|
|
|
85
87
|
* stay undefined unless a value was written.
|
|
86
88
|
*/
|
|
87
89
|
export declare const TUI_SETTINGS_FIELDS: {
|
|
90
|
+
readonly uiLanguage: z<"en" | "zh-CN" | "auto", "en" | "zh-CN" | "auto", "volatile-defined">;
|
|
88
91
|
readonly theme: z<"dark" | "light" | "system", "dark" | "light" | "system", "volatile-defined">;
|
|
89
92
|
readonly colors: z<boolean, boolean, "volatile">;
|
|
90
|
-
readonly motion: z<"
|
|
93
|
+
readonly motion: z<"off" | "full" | "reduced", "off" | "full" | "reduced", "volatile-defined">;
|
|
91
94
|
readonly mathMode: z<"auto" | "source", "auto" | "source", "volatile-defined">;
|
|
92
95
|
readonly mermaidMode: z<"auto" | "source", "auto" | "source", "volatile-defined">;
|
|
93
96
|
readonly hideThinking: z<boolean, boolean, "volatile-defined">;
|
|
94
97
|
readonly editor: z<"auto" | "code" | "cursor" | "codium" | "nvim" | "vim" | "nano" | "vi", "auto" | "code" | "cursor" | "codium" | "nvim" | "vim" | "nano" | "vi", "volatile-defined">;
|
|
95
|
-
readonly terminalTitle: z<"session" | "workspace" | "
|
|
98
|
+
readonly terminalTitle: z<"session" | "workspace" | "off" | "status", "session" | "workspace" | "off" | "status", "volatile-defined">;
|
|
96
99
|
readonly terminalState: z<"on" | "auto" | "off", "on" | "auto" | "off", "volatile-defined">;
|
|
100
|
+
readonly busyEnter: z<"queue" | "steer", "queue" | "steer", "volatile-defined">;
|
|
97
101
|
readonly pasteProtection: z<boolean, boolean, "volatile-defined">;
|
|
98
102
|
readonly copyOnSelect: z<boolean, boolean, "volatile-defined">;
|
|
99
103
|
readonly mouseInteraction: z<"tui" | "auto" | "native", "tui" | "auto" | "native", "volatile-defined">;
|
|
100
|
-
readonly foldDensity: z<"standard" | "
|
|
104
|
+
readonly foldDensity: z<"standard" | "verbose" | "compact" | "detailed", "standard" | "verbose" | "compact" | "detailed", "volatile-defined">;
|
|
101
105
|
readonly expandTools: z<boolean, boolean, "volatile-defined">;
|
|
102
106
|
readonly checkUpdates: z<boolean, boolean, "volatile-defined">;
|
|
103
|
-
readonly startupChangelog: z<"
|
|
107
|
+
readonly startupChangelog: z<"hidden" | "summary" | "expanded", "hidden" | "summary" | "expanded", "volatile-defined">;
|
|
104
108
|
readonly notifications: z<"off" | "unfocused" | "always" | "long-running", "off" | "unfocused" | "always" | "long-running", "volatile-defined">;
|
|
105
109
|
readonly notificationFocus: z<"unfocused" | "always", "unfocused" | "always", "volatile">;
|
|
106
110
|
readonly notificationThreshold: z<"15s" | "30s" | "1m" | "2m", "15s" | "30s" | "1m" | "2m", "volatile">;
|
|
107
111
|
readonly statusBar: z<any, any, "volatile" | "volatile-defined">;
|
|
108
|
-
readonly statusPreset: z<"
|
|
112
|
+
readonly statusPreset: z<"full" | "minimal" | "compact", "full" | "minimal" | "compact", "volatile">;
|
|
109
113
|
};
|
|
@@ -97,15 +97,17 @@ const STATUS_BAR_SCHEMA = z.object({
|
|
|
97
97
|
* stay undefined unless a value was written.
|
|
98
98
|
*/
|
|
99
99
|
export const TUI_SETTINGS_FIELDS = {
|
|
100
|
+
uiLanguage: z.union(['auto', 'zh-CN', 'en']).default('auto').volatile(),
|
|
100
101
|
theme: z.union([...THEME_NAMES]).default('dark').volatile(),
|
|
101
102
|
colors: z.boolean().volatile(),
|
|
102
103
|
motion: z.union([...MOTION_MODES]).default('full').volatile(),
|
|
103
104
|
mathMode: z.union([...MATH_MODES]).default('auto').volatile(),
|
|
104
105
|
mermaidMode: z.union([...MERMAID_MODES]).default('auto').volatile(),
|
|
105
|
-
hideThinking: z.boolean().default(
|
|
106
|
+
hideThinking: z.boolean().default(true).volatile(),
|
|
106
107
|
editor: z.union([...EDITOR_IDS]).default('auto').volatile(),
|
|
107
108
|
terminalTitle: z.union([...TERMINAL_TITLE_MODES]).default('status').volatile(),
|
|
108
109
|
terminalState: z.union([...TERMINAL_STATE_MODES]).default('auto').volatile(),
|
|
110
|
+
busyEnter: z.union(['queue', 'steer']).default('queue').volatile(),
|
|
109
111
|
pasteProtection: z.boolean().default(true).volatile(),
|
|
110
112
|
copyOnSelect: z.boolean().default(true).volatile(),
|
|
111
113
|
mouseInteraction: z.union(['auto', 'tui', 'native']).default('auto').volatile(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui-settings.js","sourceRoot":"","sources":["../../src/session/tui-settings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAiB,MAAM,8BAA8B,CAAA;AAExE,OAAO,CAAC,MAAM,0BAA0B,CAAA;AACxC,OAAO,EAAE,uBAAuB,EAA6B,MAAM,oBAAoB,CAAA;AACvF,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAoB,MAAM,kBAAkB,CAAA;AACzF,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,cAAc,GAGf,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,WAAW,EAAkB,MAAM,oBAAoB,CAAA;AAChE,OAAO,EAAE,UAAU,EAAiB,MAAM,mBAAmB,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAoB,MAAM,sBAAsB,CAAA;AAEtE,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAkD,MAAM,8BAA8B,CAAA;AAEzI,6CAA6C;AAC7C,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAU,CAAA;AAG/D;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAU,CAAA;AAEzE,qFAAqF;AACrF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,CAAU,CAAA;AAGhG;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAA;AAE/C,yDAAyD;AACzD,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAU,CAAA;AAGjF,mDAAmD;AACnD,MAAM,UAAU,iBAAiB,CAAC,KAAkC;IAClE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,CAAA;AAC7E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACrC,aAAiC,EACjC,KAAyC;IAEzC,IAAI,aAAa,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAA;IAC/C,IAAI,aAAa,KAAK,WAAW;QAAE,OAAO,WAAW,CAAA;IACrD,IAAI,aAAa,KAAK,cAAc;QAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAA;IACxF,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"tui-settings.js","sourceRoot":"","sources":["../../src/session/tui-settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/** Incremental presentation of published durable workflow records. */
|
|
2
2
|
import type { SessionEvent } from '@deepseek-ai/dsh-session';
|
|
3
|
-
import type { TuiSubagentRoster } from '../definition.ts';
|
|
3
|
+
import type { TuiSubagentRoster, TuiWorkflowRun } from '../definition.ts';
|
|
4
4
|
export declare class WorkflowProjection {
|
|
5
5
|
#private;
|
|
6
|
+
get(id: string): TuiWorkflowRun | undefined;
|
|
6
7
|
reset(events: readonly SessionEvent[]): void;
|
|
7
8
|
apply(event: SessionEvent): boolean;
|
|
8
9
|
roster(roster: TuiSubagentRoster | undefined): TuiSubagentRoster | undefined;
|
|
@@ -1,14 +1,44 @@
|
|
|
1
1
|
/** Incremental presentation of published durable workflow records. */
|
|
2
2
|
export class WorkflowProjection {
|
|
3
3
|
#runs = new Map();
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
#turn;
|
|
5
|
+
#runTurns = new Map();
|
|
6
|
+
get(id) { return this.#runs.get(id); }
|
|
7
|
+
reset(events) {
|
|
8
|
+
this.#runs.clear();
|
|
9
|
+
this.#runTurns.clear();
|
|
10
|
+
this.#turn = undefined;
|
|
11
|
+
for (const event of events)
|
|
12
|
+
this.apply(event);
|
|
13
|
+
}
|
|
6
14
|
apply(event) {
|
|
15
|
+
if (event.type === 'turn/start') {
|
|
16
|
+
this.#turn = event.data.turn;
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
if (event.type === 'turn/end') {
|
|
20
|
+
if (this.#turn === event.data.turn)
|
|
21
|
+
this.#turn = undefined;
|
|
22
|
+
if (event.data.reason.kind !== 'interrupted' && event.data.reason.kind !== 'forked')
|
|
23
|
+
return false;
|
|
24
|
+
let changed = false;
|
|
25
|
+
for (const [id, run] of this.#runs) {
|
|
26
|
+
if (this.#runTurns.get(id) !== event.data.turn || run.status !== 'open')
|
|
27
|
+
continue;
|
|
28
|
+
this.#runs.set(id, { ...run, status: 'interrupted' });
|
|
29
|
+
changed = true;
|
|
30
|
+
}
|
|
31
|
+
return changed;
|
|
32
|
+
}
|
|
7
33
|
if (event.type === 'tool-workflow/run-start') {
|
|
34
|
+
this.#runTurns.set(event.data.runId, this.#turn);
|
|
8
35
|
this.#runs.set(event.data.runId, { id: event.data.runId, name: event.data.name, status: 'open', members: [] });
|
|
9
36
|
// Keep bounded history; complete data remains in the session log.
|
|
10
|
-
if (this.#runs.size > 100)
|
|
11
|
-
this.#runs.
|
|
37
|
+
if (this.#runs.size > 100) {
|
|
38
|
+
const oldest = this.#runs.keys().next().value;
|
|
39
|
+
this.#runs.delete(oldest);
|
|
40
|
+
this.#runTurns.delete(oldest);
|
|
41
|
+
}
|
|
12
42
|
return true;
|
|
13
43
|
}
|
|
14
44
|
if (event.type !== 'tool-workflow/run-end' && event.type !== 'tool-workflow/agent-start' && event.type !== 'tool-workflow/agent-end')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-projection.js","sourceRoot":"","sources":["../../src/session/workflow-projection.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAMtE,MAAM,OAAO,kBAAkB;IAC7B,KAAK,GAAG,IAAI,GAAG,EAA0B,CAAA;IACzC,KAAK,CAAC,MAA+B,
|
|
1
|
+
{"version":3,"file":"workflow-projection.js","sourceRoot":"","sources":["../../src/session/workflow-projection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { type UiLanguage } from '../locale/index.ts';
|
|
2
|
+
import type { TuiArgumentOption, TuiCommand } from '../definition.ts';
|
|
1
3
|
/**
|
|
2
4
|
* Slash-command autocomplete: OMP-style leading-`/` matching, ranking, and
|
|
3
5
|
* completion apply. Pure — the provider owns popup selection and execution.
|
|
@@ -11,10 +13,8 @@ export interface SlashArgument {
|
|
|
11
13
|
description: string;
|
|
12
14
|
}
|
|
13
15
|
/** One slash command the editor can complete and the TUI can run. */
|
|
14
|
-
export interface SlashCommand {
|
|
15
|
-
name: string;
|
|
16
|
+
export interface SlashCommand extends TuiCommand {
|
|
16
17
|
aliases?: readonly string[];
|
|
17
|
-
description: string;
|
|
18
18
|
arguments?: readonly SlashArgument[];
|
|
19
19
|
/** Free-form argument usage contributed by a runtime command plugin. */
|
|
20
20
|
inputHint?: string;
|
|
@@ -25,16 +25,14 @@ export interface SlashCommand {
|
|
|
25
25
|
* in runtime state — the models on offer, the sessions that exist — so the
|
|
26
26
|
* reader completes the line instead of opening a picker to choose from it.
|
|
27
27
|
*/
|
|
28
|
-
complete?: (prefix: string) => readonly
|
|
29
|
-
value: string;
|
|
30
|
-
description?: string;
|
|
31
|
-
}[];
|
|
28
|
+
complete?: (prefix: string) => readonly TuiArgumentOption[];
|
|
32
29
|
}
|
|
33
30
|
/** One ranked suggestion shown in the popup. */
|
|
34
31
|
export interface AutocompleteItem {
|
|
35
32
|
value: string;
|
|
36
33
|
label: string;
|
|
37
34
|
description?: string;
|
|
35
|
+
skill?: TuiCommand['skill'];
|
|
38
36
|
/** Argument, path, and session rows paint without a leading `/`. */
|
|
39
37
|
kind?: 'command' | 'argument' | 'path' | 'session' | 'heading';
|
|
40
38
|
}
|
|
@@ -44,6 +42,7 @@ export declare const COMMAND_GROUPS: readonly {
|
|
|
44
42
|
label: string;
|
|
45
43
|
names: readonly string[];
|
|
46
44
|
}[];
|
|
45
|
+
export declare const COMMON_COMMANDS: string[];
|
|
47
46
|
/** Visible popup rows (OMP editor default). */
|
|
48
47
|
export declare const AUTOCOMPLETE_MAX_VISIBLE = 5;
|
|
49
48
|
/** Index of the `/` that opens a leading slash command, or null. */
|
|
@@ -56,7 +55,7 @@ export declare function leadingSlashCommandNameRange(text: string): {
|
|
|
56
55
|
start: number;
|
|
57
56
|
end: number;
|
|
58
57
|
} | null;
|
|
59
|
-
/** Subsequence match (`
|
|
58
|
+
/** Subsequence match (`cr` hits `code-review`). */
|
|
60
59
|
export declare function fuzzyMatch(query: string, target: string): boolean;
|
|
61
60
|
/**
|
|
62
61
|
* Rank a fuzzy hit. Exact > starts-with > contains > tight subsequence.
|
|
@@ -68,17 +67,18 @@ export declare function fuzzyScore(query: string, target: string): number;
|
|
|
68
67
|
*/
|
|
69
68
|
export declare function scoreCommandTextMatch(lowerPrefix: string, lowerTarget: string): number;
|
|
70
69
|
/** Ranked command-name completions for a prefix (no leading slash). */
|
|
71
|
-
export declare function buildSlashCommandCompletions(commands: readonly SlashCommand[], lowerPrefix: string): AutocompleteItem[];
|
|
70
|
+
export declare function buildSlashCommandCompletions(commands: readonly SlashCommand[], lowerPrefix: string, language?: UiLanguage): AutocompleteItem[];
|
|
72
71
|
/** Ranked argument completions for the token after `/name `. */
|
|
73
72
|
export declare function buildSlashArgumentCompletions(args: readonly SlashArgument[], lowerPrefix: string): AutocompleteItem[];
|
|
73
|
+
export declare function argumentHint(command: SlashCommand): string;
|
|
74
74
|
/** Dim ghost text after the caret for `/name ` argument state. */
|
|
75
75
|
export declare function slashInlineHint(text: string, cursor: number, commands?: readonly SlashCommand[]): string | null;
|
|
76
76
|
/** Suggestions for the live buffer, or null when the cursor is not in a command token. */
|
|
77
|
-
export declare function slashSuggestions(text: string, cursor: number, commands?: readonly SlashCommand[]): {
|
|
77
|
+
export declare function slashSuggestions(text: string, cursor: number, commands?: readonly SlashCommand[], language?: UiLanguage): {
|
|
78
78
|
items: AutocompleteItem[];
|
|
79
79
|
prefix: string;
|
|
80
80
|
} | null;
|
|
81
|
-
/** Replace the
|
|
81
|
+
/** Replace the command name or complete argument query with the selected completion. */
|
|
82
82
|
export declare function applySlashCompletion(text: string, cursor: number, item: AutocompleteItem): {
|
|
83
83
|
text: string;
|
|
84
84
|
cursor: number;
|
|
@@ -91,7 +91,7 @@ export declare function parseSlashInput(text: string): {
|
|
|
91
91
|
/** Resolve a typed name or alias to a catalog entry. */
|
|
92
92
|
export declare function resolveSlashCommand(name: string, commands?: readonly SlashCommand[]): SlashCommand | undefined;
|
|
93
93
|
/** Grouped Markdown command directory rendered by the command-output surface. */
|
|
94
|
-
export declare function formatHelpText(commands?: readonly SlashCommand[]): string;
|
|
94
|
+
export declare function formatHelpText(commands?: readonly SlashCommand[], language?: UiLanguage): string;
|
|
95
95
|
/** Visible item-index window around `selected` (counter row is not included). */
|
|
96
96
|
export declare function autocompleteVisibleRange(count: number, selected: number): {
|
|
97
97
|
start: number;
|
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
* Slash-command autocomplete: OMP-style leading-`/` matching, ranking, and
|
|
3
|
-
* completion apply. Pure — the provider owns popup selection and execution.
|
|
4
|
-
* @module @agi-fans/dsh-tui
|
|
5
|
-
*/
|
|
1
|
+
import { uiText } from "../locale/index.js";
|
|
6
2
|
import { truncateToWidth } from "../chrome/width.js";
|
|
7
|
-
import { subsequencePenalty } from "../input/fuzzy-search.js";
|
|
3
|
+
import { rankSearchResults, subsequencePenalty } from "../input/fuzzy-search.js";
|
|
8
4
|
import { listPrimaryColumnWidth, listVisibleRange, renderListCounter, renderListRow, renderListRowWithValue, } from "./list-view.js";
|
|
9
5
|
const HELP_ARGUMENTS = [
|
|
10
6
|
{ value: 'full', description: 'Include every keyboard shortcut' },
|
|
@@ -20,15 +16,15 @@ export const BUILTIN_SLASH_COMMANDS = [
|
|
|
20
16
|
];
|
|
21
17
|
// Task groups affect discovery only; command registration stays in Harness.
|
|
22
18
|
export const COMMAND_GROUPS = [
|
|
23
|
-
{ label: 'Session', names: ['new', 'resume', 'retry', 'clear'] },
|
|
19
|
+
{ label: 'Session', names: ['new', 'resume', 'continue', 'retry', 'clear'] },
|
|
24
20
|
{ label: 'Model and access', names: ['model', 'plan', 'permission', 'agent', 'login', 'logout'] },
|
|
25
21
|
{ label: 'Files and output', names: ['diff', 'attach', 'copy', 'export'] },
|
|
26
22
|
{ label: 'Tasks', names: ['queue', 'btw', 'questions', 'jobs', 'goal', 'compact', 'schedule'] },
|
|
27
23
|
{ label: 'Settings and integrations', names: ['settings', 'mcp', 'plugins'] },
|
|
28
|
-
{ label: 'Diagnostics', names: ['
|
|
24
|
+
{ label: 'Diagnostics', names: ['context', 'trajectory', 'tools', 'changelog'] },
|
|
29
25
|
{ label: 'Application', names: ['help', 'quit'] },
|
|
30
26
|
];
|
|
31
|
-
const COMMON_COMMANDS = ['model', 'plan', 'permission', 'resume', 'diff', 'settings', 'new', 'help'];
|
|
27
|
+
export const COMMON_COMMANDS = ['model', 'plan', 'permission', 'resume', 'diff', 'settings', 'new', 'help'];
|
|
32
28
|
/** Visible popup rows (OMP editor default). */
|
|
33
29
|
export const AUTOCOMPLETE_MAX_VISIBLE = 5;
|
|
34
30
|
/** Index of the `/` that opens a leading slash command, or null. */
|
|
@@ -52,14 +48,10 @@ export function leadingSlashCommandNameRange(text) {
|
|
|
52
48
|
if (token.slice(1).includes('/'))
|
|
53
49
|
return null;
|
|
54
50
|
const body = token.slice(1);
|
|
55
|
-
if (body.startsWith('skill:')) {
|
|
56
|
-
const space = body.search(/\s/u);
|
|
57
|
-
return { start, end: start + 1 + (space === -1 ? body.length : space) };
|
|
58
|
-
}
|
|
59
51
|
const sep = body.search(/[\s:]/u);
|
|
60
52
|
return { start, end: start + 1 + (sep === -1 ? body.length : sep) };
|
|
61
53
|
}
|
|
62
|
-
/** Subsequence match (`
|
|
54
|
+
/** Subsequence match (`cr` hits `code-review`). */
|
|
63
55
|
export function fuzzyMatch(query, target) {
|
|
64
56
|
return subsequencePenalty(query, target) !== undefined;
|
|
65
57
|
}
|
|
@@ -116,30 +108,48 @@ function buildNamedCompletions(entries, lowerPrefix, kind) {
|
|
|
116
108
|
item.description = entry.description;
|
|
117
109
|
best = item;
|
|
118
110
|
}
|
|
119
|
-
if (kind === 'command' && lowerPrefix.length >=
|
|
111
|
+
if (kind === 'command' && lowerPrefix.length >= 2 && best === undefined && rankSearchResults([entry], lowerPrefix, item => [item.description, ...(item.searchFields ?? [])]).length > 0) {
|
|
120
112
|
best = { value: entry.value, label: entry.value, kind, score: 50, description: entry.description };
|
|
121
113
|
}
|
|
122
|
-
return best === undefined ? [] : [best];
|
|
114
|
+
return best === undefined ? [] : [{ ...best, ...(entry.skill === undefined ? {} : { skill: entry.skill }) }];
|
|
123
115
|
})
|
|
124
116
|
.sort((a, b) => b.score - a.score)
|
|
125
117
|
.map(({ score: _score, ...rest }) => rest);
|
|
126
118
|
}
|
|
119
|
+
/** Search terms aid discovery while command names remain the executable vocabulary. */
|
|
120
|
+
const COMMAND_KEYWORDS = {
|
|
121
|
+
model: ['model', 'provider', '模型', '供应商'],
|
|
122
|
+
permission: ['access', 'permissions', '权限', '访问'],
|
|
123
|
+
resume: ['session', 'history', '会话', '历史', '恢复'],
|
|
124
|
+
new: ['session', '会话', '新建'],
|
|
125
|
+
context: ['context', 'usage', '上下文', '用量'],
|
|
126
|
+
diff: ['changes', 'files', '差异', '修改', '文件'],
|
|
127
|
+
plan: ['planning', '计划', '规划'],
|
|
128
|
+
login: ['account', 'credentials', '登录', '账户', '密钥'],
|
|
129
|
+
settings: ['preferences', '设置', '配置'],
|
|
130
|
+
plugins: ['extensions', '插件', '扩展'],
|
|
131
|
+
queue: ['messages', '消息', '队列'],
|
|
132
|
+
copy: ['clipboard', '复制', '剪贴板'],
|
|
133
|
+
help: ['shortcuts', '帮助', '快捷键'],
|
|
134
|
+
};
|
|
127
135
|
/** Ranked command-name completions for a prefix (no leading slash). */
|
|
128
|
-
export function buildSlashCommandCompletions(commands, lowerPrefix) {
|
|
136
|
+
export function buildSlashCommandCompletions(commands, lowerPrefix, language = 'en') {
|
|
129
137
|
return buildNamedCompletions((lowerPrefix === '' ? [...commands].sort((a, b) => {
|
|
130
138
|
const rank = (name) => { const i = COMMON_COMMANDS.indexOf(name); return i < 0 ? COMMON_COMMANDS.length : i; };
|
|
131
139
|
return rank(a.name) - rank(b.name);
|
|
132
140
|
}) : commands).map((command) => ({
|
|
133
141
|
value: command.name,
|
|
134
142
|
...(command.aliases === undefined ? {} : { aliases: command.aliases }),
|
|
135
|
-
description: command.description,
|
|
136
|
-
|
|
143
|
+
description: uiText(language, command.description),
|
|
144
|
+
searchFields: [command.description, ...(COMMAND_KEYWORDS[command.name] ?? [])],
|
|
145
|
+
...(command.skill === undefined ? {} : { skill: command.skill }),
|
|
146
|
+
})), lowerPrefix.trim().replace(/^\//u, ''), 'command');
|
|
137
147
|
}
|
|
138
148
|
/** Ranked argument completions for the token after `/name `. */
|
|
139
149
|
export function buildSlashArgumentCompletions(args, lowerPrefix) {
|
|
140
150
|
return buildNamedCompletions(args, lowerPrefix, 'argument');
|
|
141
151
|
}
|
|
142
|
-
function argumentHint(command) {
|
|
152
|
+
export function argumentHint(command) {
|
|
143
153
|
if (command.inputHint !== undefined && command.inputHint !== '')
|
|
144
154
|
return ' ' + command.inputHint;
|
|
145
155
|
const args = command.arguments;
|
|
@@ -181,7 +191,7 @@ export function slashInlineHint(text, cursor, commands = BUILTIN_SLASH_COMMANDS)
|
|
|
181
191
|
return null;
|
|
182
192
|
}
|
|
183
193
|
/** Suggestions for the live buffer, or null when the cursor is not in a command token. */
|
|
184
|
-
export function slashSuggestions(text, cursor, commands = BUILTIN_SLASH_COMMANDS) {
|
|
194
|
+
export function slashSuggestions(text, cursor, commands = BUILTIN_SLASH_COMMANDS, language = 'en') {
|
|
185
195
|
const before = text.slice(0, cursor);
|
|
186
196
|
if (text.includes('\n'))
|
|
187
197
|
return null;
|
|
@@ -189,11 +199,11 @@ export function slashSuggestions(text, cursor, commands = BUILTIN_SLASH_COMMANDS
|
|
|
189
199
|
if (start === null)
|
|
190
200
|
return null;
|
|
191
201
|
const token = before.slice(start);
|
|
192
|
-
if (token.slice(1).includes('/'))
|
|
193
|
-
return null;
|
|
194
202
|
const space = token.indexOf(' ');
|
|
203
|
+
if (token.slice(1, space === -1 ? undefined : space).includes('/'))
|
|
204
|
+
return null;
|
|
195
205
|
if (space === -1) {
|
|
196
|
-
const items = buildSlashCommandCompletions(commands, token.slice(1).toLowerCase());
|
|
206
|
+
const items = buildSlashCommandCompletions(commands, token.slice(1).toLowerCase(), language);
|
|
197
207
|
if (items.length === 0)
|
|
198
208
|
return null;
|
|
199
209
|
return { items, prefix: before };
|
|
@@ -206,11 +216,11 @@ export function slashSuggestions(text, cursor, commands = BUILTIN_SLASH_COMMANDS
|
|
|
206
216
|
if (command?.complete !== undefined) {
|
|
207
217
|
const items = [];
|
|
208
218
|
for (const option of command.complete(prefix)) {
|
|
209
|
-
if (!fuzzyMatch(lower,
|
|
219
|
+
if (![option.value, option.label ?? '', option.description ?? ''].some(text => fuzzyMatch(lower, text.toLowerCase())))
|
|
210
220
|
continue;
|
|
211
221
|
items.push({
|
|
212
222
|
value: option.value,
|
|
213
|
-
label: option.value,
|
|
223
|
+
label: option.label ?? option.value,
|
|
214
224
|
...(option.description === undefined ? {} : { description: option.description }),
|
|
215
225
|
kind: 'argument',
|
|
216
226
|
});
|
|
@@ -225,21 +235,23 @@ export function slashSuggestions(text, cursor, commands = BUILTIN_SLASH_COMMANDS
|
|
|
225
235
|
return null;
|
|
226
236
|
return { items, prefix: before };
|
|
227
237
|
}
|
|
228
|
-
/** Replace the
|
|
238
|
+
/** Replace the command name or complete argument query with the selected completion. */
|
|
229
239
|
export function applySlashCompletion(text, cursor, item) {
|
|
230
240
|
const before = text.slice(0, cursor);
|
|
231
|
-
const after = text.slice(cursor);
|
|
232
241
|
const start = findLeadingSlashCommandStart(before);
|
|
233
242
|
if (start === null)
|
|
234
243
|
return { text, cursor };
|
|
235
244
|
if (item.kind === 'argument') {
|
|
236
|
-
const space = before.slice(start).
|
|
245
|
+
const space = before.slice(start).indexOf(' ');
|
|
237
246
|
if (space === -1)
|
|
238
247
|
return { text, cursor };
|
|
239
248
|
const argStart = start + space + 1;
|
|
240
249
|
const insert = item.value.endsWith(' ') ? item.value : item.value + ' ';
|
|
241
|
-
return { text: text.slice(0, argStart) + insert
|
|
250
|
+
return { text: text.slice(0, argStart) + insert, cursor: argStart + insert.length };
|
|
242
251
|
}
|
|
252
|
+
const name = text.slice(start + 1);
|
|
253
|
+
const separator = name.search(/[\s:]/u);
|
|
254
|
+
const after = separator < 0 ? '' : name.slice(separator).replace(/^[\s:]+/u, '');
|
|
243
255
|
const insert = `/${item.value} `;
|
|
244
256
|
return { text: text.slice(0, start) + insert + after, cursor: start + insert.length };
|
|
245
257
|
}
|
|
@@ -253,12 +265,6 @@ export function parseSlashInput(text) {
|
|
|
253
265
|
const body = trimmed.slice(1);
|
|
254
266
|
if (body === '')
|
|
255
267
|
return { name: '', args: '' };
|
|
256
|
-
if (body.startsWith('skill:')) {
|
|
257
|
-
const space = body.search(/\s/u);
|
|
258
|
-
if (space === -1)
|
|
259
|
-
return { name: body, args: '' };
|
|
260
|
-
return { name: body.slice(0, space), args: body.slice(space + 1).trim() };
|
|
261
|
-
}
|
|
262
268
|
const sep = body.search(/[\s:]/);
|
|
263
269
|
if (sep === -1)
|
|
264
270
|
return { name: body, args: '' };
|
|
@@ -272,30 +278,31 @@ export function resolveSlashCommand(name, commands = BUILTIN_SLASH_COMMANDS) {
|
|
|
272
278
|
function helpCell(value) {
|
|
273
279
|
return value.replace(/\s+/gu, ' ').trim();
|
|
274
280
|
}
|
|
275
|
-
function helpRows(commands) {
|
|
281
|
+
function helpRows(commands, language) {
|
|
276
282
|
if (commands.length === 0)
|
|
277
283
|
return [];
|
|
278
284
|
return commands.map((command) => {
|
|
279
285
|
const names = [command.name, ...(command.aliases ?? [])]
|
|
280
286
|
.map((name, index) => `\`${helpCell(`/${name}${index === 0 ? argumentHint(command) : ''}`)}\``)
|
|
281
287
|
.join(', ');
|
|
282
|
-
return `- ${names} — ${helpCell(command.description)}`;
|
|
288
|
+
return `- ${names} — ${helpCell(uiText(language, command.description))}`;
|
|
283
289
|
});
|
|
284
290
|
}
|
|
285
291
|
/** Grouped Markdown command directory rendered by the command-output surface. */
|
|
286
|
-
export function formatHelpText(commands = BUILTIN_SLASH_COMMANDS) {
|
|
287
|
-
const
|
|
288
|
-
const
|
|
292
|
+
export function formatHelpText(commands = BUILTIN_SLASH_COMMANDS, language = 'en') {
|
|
293
|
+
const isSkill = (command) => command.skill !== undefined;
|
|
294
|
+
const skills = commands.filter(isSkill);
|
|
295
|
+
const core = commands.filter(command => !isSkill(command));
|
|
289
296
|
const lines = [`Commands · ${core.length} core${skills.length === 0 ? '' : ` · ${skills.length} skills`}`];
|
|
290
297
|
const assigned = new Set(COMMAND_GROUPS.flatMap(group => group.names));
|
|
291
298
|
const groups = [...COMMAND_GROUPS.map(group => ({ label: group.label, commands: core.filter(command => group.names.includes(command.name)) })),
|
|
292
299
|
{ label: 'Extensions', commands: core.filter(command => !assigned.has(command.name)) }];
|
|
293
300
|
for (const group of groups) {
|
|
294
301
|
if (group.commands.length > 0)
|
|
295
|
-
lines.push('', `**${group.label} · ${group.commands.length}**`, ...helpRows(group.commands));
|
|
302
|
+
lines.push('', `**${uiText(language, group.label)} · ${group.commands.length}**`, ...helpRows(group.commands, language));
|
|
296
303
|
}
|
|
297
304
|
if (skills.length > 0) {
|
|
298
|
-
lines.push('',
|
|
305
|
+
lines.push('', `**${uiText(language, 'Skills')} · ${skills.length}**`, '', uiText(language, 'Type `/` and a skill name to find and invoke it. User only skills require an explicit request.'));
|
|
299
306
|
}
|
|
300
307
|
return lines.join('\n');
|
|
301
308
|
}
|
|
@@ -321,14 +328,16 @@ export function renderAutocomplete(items, selected, theme, width) {
|
|
|
321
328
|
if (item === undefined)
|
|
322
329
|
continue;
|
|
323
330
|
if (item.kind === 'heading') {
|
|
324
|
-
lines.push(renderListRow({ label: item.label, heading: true }, theme, width, { selected: false }));
|
|
331
|
+
lines.push(renderListRow({ label: theme.text(item.label), heading: true }, theme, width, { selected: false }));
|
|
325
332
|
continue;
|
|
326
333
|
}
|
|
327
334
|
const bare = item.kind === 'argument' || item.kind === 'path' || item.kind === 'session';
|
|
328
335
|
const row = {
|
|
329
336
|
label: autocompleteLabel(item),
|
|
330
337
|
...(bare ? {} : { tone: 'accent' }),
|
|
331
|
-
...(item.
|
|
338
|
+
...(item.skill !== undefined
|
|
339
|
+
? { description: theme.text(item.skill.userOnly ? 'User only' : 'Skill') + (item.description ? ' · ' + item.description : '') }
|
|
340
|
+
: item.description === undefined || item.description === '' ? {} : { description: bare ? item.description : theme.text(item.description) }),
|
|
332
341
|
};
|
|
333
342
|
lines.push(renderListRowWithValue(row, theme, width, primaryWidth, { selected: at === index }));
|
|
334
343
|
}
|