@sagmans/dsh-tui 0.6.0 → 0.7.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 +121 -0
- package/.agents/skills/dsh-tui-update-models/references/model-wiring.md +162 -0
- package/.agents/skills/dsh-tui-update-models/scripts/dump-model-catalog.mjs +178 -0
- package/README.md +99 -5
- 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/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +343 -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 +20 -0
- package/lib/install-skills.d.ts.map +1 -0
- package/lib/install-skills.js +198 -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 +49 -0
- package/lib/surface/background-work.d.ts.map +1 -0
- package/lib/surface/background-work.js +146 -0
- package/lib/surface/background-work.js.map +1 -0
- package/lib/surface/commands.d.ts +80 -0
- package/lib/surface/commands.d.ts.map +1 -0
- package/lib/surface/commands.js +364 -0
- package/lib/surface/commands.js.map +1 -0
- package/lib/surface/modal-input.d.ts +58 -0
- package/lib/surface/modal-input.d.ts.map +1 -0
- package/lib/surface/modal-input.js +237 -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 +321 -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-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 +27 -19
- 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 +138 -0
- package/lib/ui/view/tool-card.d.ts.map +1 -0
- package/lib/ui/view/tool-card.js +413 -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 +80 -220
- package/lib/ui/view.d.ts.map +1 -1
- package/lib/ui/view.js +81 -675
- package/lib/ui/view.js.map +1 -1
- package/package.json +3 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/surface/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { ProcessTerminal } from '@earendil-works/pi-tui';
|
|
2
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
3
|
+
import type { SessionId } from '@deepseek-ai/dsh-session';
|
|
4
|
+
import { type GateCard } from '../gates.ts';
|
|
5
|
+
import type { HerdrReporter } from '../herdr/reporter.ts';
|
|
6
|
+
import type { Keymap } from '../input/actions.ts';
|
|
7
|
+
import type { TuiTheme } from '../theme.ts';
|
|
8
|
+
import type { WarningSafeTui } from '../terminal/warning-screen.ts';
|
|
9
|
+
import type { GateInputBar } from '../ui/gate-input.ts';
|
|
10
|
+
import type { PickerAction, PickerCard } from '../ui/picker.ts';
|
|
11
|
+
import type { PromptBar } from '../ui/prompt.ts';
|
|
12
|
+
/** What the surface needs of a list to drive it, wherever that list is drawn. */
|
|
13
|
+
export interface Picker {
|
|
14
|
+
handleKey(data: string): PickerAction | undefined;
|
|
15
|
+
/** The row window the caller can afford, or the shipped window when it names none. */
|
|
16
|
+
card(window?: number): PickerCard;
|
|
17
|
+
setNote(text: string | undefined): void;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* What the modal owner needs from the surface that composes it.
|
|
21
|
+
*
|
|
22
|
+
* Every one of these is a live read or an operation on another owner: the
|
|
23
|
+
* keyboard and the screen are the only things this module takes for itself.
|
|
24
|
+
*/
|
|
25
|
+
export interface ModalInputPorts {
|
|
26
|
+
readonly herdr: HerdrReporter;
|
|
27
|
+
readonly editor: GateInputBar;
|
|
28
|
+
readonly tui: WarningSafeTui;
|
|
29
|
+
readonly terminal: ProcessTerminal;
|
|
30
|
+
readonly theme: TuiTheme;
|
|
31
|
+
readonly keymap: () => Keymap;
|
|
32
|
+
readonly promptBar: PromptBar;
|
|
33
|
+
/** Rebuild the prompt's own menu once a borrowed bar is given back. */
|
|
34
|
+
readonly refreshCompletion: () => void;
|
|
35
|
+
readonly activeSession: () => SessionId;
|
|
36
|
+
}
|
|
37
|
+
/** The reads, operations and request listeners the composing surface routes here. */
|
|
38
|
+
export interface ModalInput {
|
|
39
|
+
/** The card a pending gate draws, or undefined when no gate is open. */
|
|
40
|
+
readonly gateCard: () => GateCard | undefined;
|
|
41
|
+
/** The card a pending picker draws in the transcript, when it draws one there. */
|
|
42
|
+
readonly pickerCard: () => PickerCard | undefined;
|
|
43
|
+
readonly openPicker: (picker: Picker, vet?: (id: string) => Promise<string | undefined>, placement?: 'inline' | 'popup') => Promise<string | undefined>;
|
|
44
|
+
/** Drive an open gate or picker with one press; false hands the press back. */
|
|
45
|
+
readonly handleKey: (data: string) => boolean;
|
|
46
|
+
/** The gate and question waterfalls, in the order the surface answers them. */
|
|
47
|
+
readonly requestListeners: () => readonly (() => void)[];
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* The one modal interaction a terminal can be in: a gate or a picker.
|
|
51
|
+
*
|
|
52
|
+
* Both take the keyboard and give it back the same way, and both can be
|
|
53
|
+
* cancelled by something other than a press (an aborted request, a settled
|
|
54
|
+
* list), so the focus, submission flag, blocked Herdr row and popup lifetime
|
|
55
|
+
* belong to one owner rather than to every feature that opens a list.
|
|
56
|
+
*/
|
|
57
|
+
export declare function createModalInput(ctx: Context, ports: ModalInputPorts): ModalInput;
|
|
58
|
+
//# sourceMappingURL=modal-input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modal-input.d.ts","sourceRoot":"","sources":["../../src/surface/modal-input.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAGzD,OAAO,EAAiC,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAOhD,iFAAiF;AACjF,MAAM,WAAW,MAAM;IACrB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAAA;IACjD,sFAAsF;IACtF,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;IACjC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAA;CACxC;AA0BD;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;IAC7B,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAA;IAC5B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAA;IAClC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,MAAM,CAAA;IAC7B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;IAC7B,uEAAuE;IACvE,QAAQ,CAAC,iBAAiB,EAAE,MAAM,IAAI,CAAA;IACtC,QAAQ,CAAC,aAAa,EAAE,MAAM,SAAS,CAAA;CACxC;AAED,qFAAqF;AACrF,MAAM,WAAW,UAAU;IACzB,wEAAwE;IACxE,QAAQ,CAAC,QAAQ,EAAE,MAAM,QAAQ,GAAG,SAAS,CAAA;IAC7C,kFAAkF;IAClF,QAAQ,CAAC,UAAU,EAAE,MAAM,UAAU,GAAG,SAAS,CAAA;IACjD,QAAQ,CAAC,UAAU,EAAE,CACnB,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,EACjD,SAAS,CAAC,EAAE,QAAQ,GAAG,OAAO,KAC3B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IAChC,+EAA+E;IAC/E,QAAQ,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;IAC7C,+EAA+E;IAC/E,QAAQ,CAAC,gBAAgB,EAAE,MAAM,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAA;CACzD;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,GAAG,UAAU,CAkOjF"}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import { ApprovalGate } from "../gates.js";
|
|
2
|
+
import { QuestionGate, toGateQuestions } from "../gates/questions.js";
|
|
3
|
+
import { PickerPopup, POPUP_MAX_HEIGHT, popupWidth } from "../ui/picker-card.js";
|
|
4
|
+
/**
|
|
5
|
+
* The one modal interaction a terminal can be in: a gate or a picker.
|
|
6
|
+
*
|
|
7
|
+
* Both take the keyboard and give it back the same way, and both can be
|
|
8
|
+
* cancelled by something other than a press (an aborted request, a settled
|
|
9
|
+
* list), so the focus, submission flag, blocked Herdr row and popup lifetime
|
|
10
|
+
* belong to one owner rather than to every feature that opens a list.
|
|
11
|
+
*/
|
|
12
|
+
export function createModalInput(ctx, ports) {
|
|
13
|
+
let pending;
|
|
14
|
+
let pendingPicker;
|
|
15
|
+
/** A pick being vetted owns the list, not the keyboard: filtering stays live while its verdict is read. */
|
|
16
|
+
let vetting = false;
|
|
17
|
+
const openGate = (next) => {
|
|
18
|
+
pending = next;
|
|
19
|
+
// The card's own title names the decision, which is what a reader glancing
|
|
20
|
+
// at a wall of panes needs in order to know which one to open.
|
|
21
|
+
ports.herdr.block(next.gate.card().title);
|
|
22
|
+
// A gate owns the keyboard: the editor must not collect the decision keys.
|
|
23
|
+
ports.editor.disableSubmit = true;
|
|
24
|
+
ports.tui.setFocus(null);
|
|
25
|
+
// A question is answered in this editor, which the gate draws under the row
|
|
26
|
+
// being answered, so the hardware cursor belongs to it while it is borrowed.
|
|
27
|
+
// It is set after the focus is cleared, which unmarks the component it left.
|
|
28
|
+
ports.editor.focused = next.kind === 'question';
|
|
29
|
+
ports.tui.requestRender();
|
|
30
|
+
};
|
|
31
|
+
const closeGate = () => {
|
|
32
|
+
pending = undefined;
|
|
33
|
+
ports.herdr.unblock();
|
|
34
|
+
ports.editor.disableSubmit = false;
|
|
35
|
+
// The question is answered or skipped, so the reader gets their prompt back
|
|
36
|
+
// in the bar they left it in, with the menu the prompt bar offered.
|
|
37
|
+
ports.promptBar.giveBack();
|
|
38
|
+
ports.refreshCompletion();
|
|
39
|
+
ports.tui.setFocus(ports.editor);
|
|
40
|
+
ports.tui.requestRender();
|
|
41
|
+
};
|
|
42
|
+
/** Give the keyboard back to the editor and answer whoever opened the picker. */
|
|
43
|
+
const settlePicker = (id) => {
|
|
44
|
+
const settle = pendingPicker?.settle;
|
|
45
|
+
// The screen goes back before the keyboard does: a box left behind a settled
|
|
46
|
+
// list would sit over the transcript until something else repainted.
|
|
47
|
+
pendingPicker?.release?.();
|
|
48
|
+
pendingPicker = undefined;
|
|
49
|
+
ports.herdr.unblock();
|
|
50
|
+
ports.editor.disableSubmit = false;
|
|
51
|
+
ports.tui.setFocus(ports.editor);
|
|
52
|
+
settle?.(id);
|
|
53
|
+
ports.tui.requestRender();
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Take the keyboard for a picker and answer with the id it settled on.
|
|
57
|
+
*
|
|
58
|
+
* Where the list is drawn is the caller's decision, because it is a decision
|
|
59
|
+
* about the reader's attention. A list that is the destination — a session to
|
|
60
|
+
* open, a model to switch to — joins the transcript and is read with it. A
|
|
61
|
+
* list that is a reference for the work in front of the reader is drawn over
|
|
62
|
+
* that work instead, so looking something up does not cost them their place.
|
|
63
|
+
* The keyboard is owned the same way either way.
|
|
64
|
+
*/
|
|
65
|
+
const openPicker = (picker, vet, placement = 'inline') => new Promise(resolve => {
|
|
66
|
+
const overlay = placement === 'popup'
|
|
67
|
+
? ports.tui.showOverlay(new PickerPopup(rows => picker.card(rows), () => ports.terminal.rows, ports.theme), {
|
|
68
|
+
width: popupWidth(ports.terminal.columns),
|
|
69
|
+
maxHeight: POPUP_MAX_HEIGHT,
|
|
70
|
+
anchor: 'center',
|
|
71
|
+
margin: 1,
|
|
72
|
+
// The surface's own listener reads every press before a focused
|
|
73
|
+
// component does, so the box needs no focus to be driven; taking it
|
|
74
|
+
// would only move focus away from where the reader left it.
|
|
75
|
+
nonCapturing: true,
|
|
76
|
+
})
|
|
77
|
+
: undefined;
|
|
78
|
+
pendingPicker = {
|
|
79
|
+
picker,
|
|
80
|
+
settle: resolve,
|
|
81
|
+
vet,
|
|
82
|
+
card: overlay === undefined ? () => picker.card() : undefined,
|
|
83
|
+
release: overlay === undefined ? undefined : () => overlay.hide(),
|
|
84
|
+
};
|
|
85
|
+
// A picker owns the keyboard exactly as a gate does: nothing moves until
|
|
86
|
+
// the reader chooses, so it is the same kind of wait.
|
|
87
|
+
ports.herdr.block(picker.card().title);
|
|
88
|
+
ports.editor.disableSubmit = true;
|
|
89
|
+
ports.tui.setFocus(null);
|
|
90
|
+
ports.tui.requestRender();
|
|
91
|
+
});
|
|
92
|
+
/**
|
|
93
|
+
* Read one press while a modal interaction owns the keyboard.
|
|
94
|
+
*
|
|
95
|
+
* The gate and picker branches keep their original priority: a key arrives as
|
|
96
|
+
* a press and a release once the terminal reports key events, and the caller
|
|
97
|
+
* drops the release for the focused component, so this only ever sees the
|
|
98
|
+
* press the surface is meant to act on.
|
|
99
|
+
*/
|
|
100
|
+
const handleKey = (data) => {
|
|
101
|
+
if (pending !== undefined) {
|
|
102
|
+
if (pending.kind === 'approval') {
|
|
103
|
+
const outcome = pending.gate.handleKey(data);
|
|
104
|
+
if (outcome === undefined)
|
|
105
|
+
ports.tui.requestRender();
|
|
106
|
+
else {
|
|
107
|
+
pending.settle(outcome);
|
|
108
|
+
closeGate();
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
const answers = pending.gate.handleKey(data);
|
|
113
|
+
if (answers === undefined)
|
|
114
|
+
ports.tui.requestRender();
|
|
115
|
+
else {
|
|
116
|
+
pending.settle(answers);
|
|
117
|
+
closeGate();
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
if (pendingPicker !== undefined) {
|
|
123
|
+
const action = pendingPicker.picker.handleKey(data);
|
|
124
|
+
if (action === undefined) {
|
|
125
|
+
ports.tui.requestRender();
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
if (vetting) {
|
|
129
|
+
// A refusal check must not take the keyboard with it: the reader keeps
|
|
130
|
+
// filtering and can still leave, while a second pick waits for the
|
|
131
|
+
// first verdict rather than racing it.
|
|
132
|
+
if (action.kind === 'cancel')
|
|
133
|
+
settlePicker(undefined);
|
|
134
|
+
return true;
|
|
135
|
+
}
|
|
136
|
+
if (action.kind === 'cancel') {
|
|
137
|
+
settlePicker(undefined);
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
const vet = pendingPicker.vet;
|
|
141
|
+
if (vet === undefined) {
|
|
142
|
+
settlePicker(action.id);
|
|
143
|
+
return true;
|
|
144
|
+
}
|
|
145
|
+
vetting = true;
|
|
146
|
+
void (async () => {
|
|
147
|
+
let reason;
|
|
148
|
+
try {
|
|
149
|
+
reason = await vet(action.id);
|
|
150
|
+
}
|
|
151
|
+
finally {
|
|
152
|
+
// A check that fails must not take the keyboard with it.
|
|
153
|
+
vetting = false;
|
|
154
|
+
}
|
|
155
|
+
if (pendingPicker === undefined)
|
|
156
|
+
return;
|
|
157
|
+
if (reason === undefined) {
|
|
158
|
+
settlePicker(action.id);
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
pendingPicker.picker.setNote(reason);
|
|
162
|
+
ports.tui.requestRender();
|
|
163
|
+
})();
|
|
164
|
+
return true;
|
|
165
|
+
}
|
|
166
|
+
return false;
|
|
167
|
+
};
|
|
168
|
+
return {
|
|
169
|
+
gateCard: () => pending?.gate.card(),
|
|
170
|
+
pickerCard: () => pendingPicker?.card?.(),
|
|
171
|
+
openPicker,
|
|
172
|
+
handleKey,
|
|
173
|
+
requestListeners: () => [
|
|
174
|
+
// Answering these two waterfalls is what makes a terminal surface usable at
|
|
175
|
+
// all: without an answerer every gated tool fails closed, and the model's
|
|
176
|
+
// questions never reach the human.
|
|
177
|
+
ctx.on('approval/request', (request, next) => {
|
|
178
|
+
if (request.agent.id !== ports.activeSession())
|
|
179
|
+
return next();
|
|
180
|
+
return new Promise(resolve => {
|
|
181
|
+
const gate = new ApprovalGate(request.toolName, request.reason, ports.keymap);
|
|
182
|
+
request.signal?.addEventListener('abort', () => {
|
|
183
|
+
gate.cancel();
|
|
184
|
+
if (pending?.gate === gate)
|
|
185
|
+
closeGate();
|
|
186
|
+
resolve('cancelled');
|
|
187
|
+
}, { once: true });
|
|
188
|
+
openGate({ kind: 'approval', gate, settle: resolve });
|
|
189
|
+
});
|
|
190
|
+
}),
|
|
191
|
+
ctx.on('user-questions/request', (request, next) => {
|
|
192
|
+
const agentId = request.agent?.id;
|
|
193
|
+
if (agentId !== undefined && agentId !== ports.activeSession())
|
|
194
|
+
return next();
|
|
195
|
+
const questions = toGateQuestions(request);
|
|
196
|
+
if (questions.length === 0)
|
|
197
|
+
return next();
|
|
198
|
+
return new Promise(resolve => {
|
|
199
|
+
const gate = ports.promptBar.borrow(() => {
|
|
200
|
+
// The bar is an answer's for as long as the gate holds it, so the menu
|
|
201
|
+
// it once offered commands through is replaced before a key can reach it.
|
|
202
|
+
const built = new QuestionGate(questions, ports.editor, ports.keymap);
|
|
203
|
+
ports.refreshCompletion();
|
|
204
|
+
return built;
|
|
205
|
+
});
|
|
206
|
+
// The seam takes mutable selection arrays and an optional custom field, so
|
|
207
|
+
// the read-only gate answer is copied into that exact shape here.
|
|
208
|
+
const settle = (answers) => {
|
|
209
|
+
request.signal?.removeEventListener('abort', onAbort);
|
|
210
|
+
resolve({
|
|
211
|
+
answers: answers.map(answer => ({
|
|
212
|
+
id: answer.id,
|
|
213
|
+
selected: [...answer.selected],
|
|
214
|
+
...(answer.custom === undefined ? {} : { custom: answer.custom }),
|
|
215
|
+
})),
|
|
216
|
+
});
|
|
217
|
+
};
|
|
218
|
+
// A question whose caller is gone has no reader, so the gate must release
|
|
219
|
+
// the keyboard instead of collecting an answer the aborted call discards.
|
|
220
|
+
const onAbort = () => {
|
|
221
|
+
gate.cancel();
|
|
222
|
+
if (pending?.gate === gate)
|
|
223
|
+
closeGate();
|
|
224
|
+
settle([]);
|
|
225
|
+
};
|
|
226
|
+
openGate({ kind: 'question', gate, settle });
|
|
227
|
+
request.signal?.addEventListener('abort', onAbort, { once: true });
|
|
228
|
+
// A signal that aborted before the listener existed never emits, so the
|
|
229
|
+
// state has to be read once after subscribing.
|
|
230
|
+
if (request.signal?.aborted === true)
|
|
231
|
+
onAbort();
|
|
232
|
+
});
|
|
233
|
+
}),
|
|
234
|
+
],
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=modal-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modal-input.js","sourceRoot":"","sources":["../../src/surface/modal-input.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
2
|
+
import { type ModelChoice as ChosenRoute } from '../agent/model.ts';
|
|
3
|
+
import type { Keymap } from '../input/actions.ts';
|
|
4
|
+
import type { StatusFacts } from '../ui/status.ts';
|
|
5
|
+
import type { Picker } from './modal-input.ts';
|
|
6
|
+
/**
|
|
7
|
+
* What the route owner needs from the surface that composes it.
|
|
8
|
+
*
|
|
9
|
+
* The facts are settings-backed and read at call time: the composition default
|
|
10
|
+
* this owner adopts before the first turn, and reports when the reader named no
|
|
11
|
+
* route, exists only once the settings document has been read. The keys move
|
|
12
|
+
* with a settings edit, so they are read per press, and the screen, the notice
|
|
13
|
+
* and the keyboard lifetime belong to the surface that owns them.
|
|
14
|
+
*/
|
|
15
|
+
export interface ModelChoicePorts {
|
|
16
|
+
readonly statusFacts: () => StatusFacts;
|
|
17
|
+
readonly keymap: () => Keymap;
|
|
18
|
+
/** Take the keyboard for a list and answer with the pick id it settled on. */
|
|
19
|
+
readonly openPicker: (picker: Picker) => Promise<string | undefined>;
|
|
20
|
+
readonly notice: (message: string) => void;
|
|
21
|
+
readonly render: () => void;
|
|
22
|
+
}
|
|
23
|
+
/** The reads and operations the composing surface routes to the route owner. */
|
|
24
|
+
export interface ModelChoice {
|
|
25
|
+
/** The route the next step would use, which is what the status line states. */
|
|
26
|
+
readonly current: () => ChosenRoute | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* Compose the switch into an agent's own scope, where its waterfalls dispatch.
|
|
29
|
+
*
|
|
30
|
+
* The scope arrives as an argument because it belongs to the agent being
|
|
31
|
+
* opened: the surface has no handle to it until that agent has started, and
|
|
32
|
+
* the route has to be in force from its first step.
|
|
33
|
+
*/
|
|
34
|
+
readonly setup: (agentCtx: Context) => void;
|
|
35
|
+
/** Put the deployment default in force, unless the reader already named a route. */
|
|
36
|
+
readonly adoptDefault: () => void;
|
|
37
|
+
/** Show the route in force, or switch to another one. */
|
|
38
|
+
readonly runModelCommand: (argument: string) => void;
|
|
39
|
+
/** Offer the levels the route in force advertises. */
|
|
40
|
+
readonly openEffortPicker: () => void;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Which model and reasoning effort this session runs with, and the two pickers
|
|
44
|
+
* that change them.
|
|
45
|
+
*
|
|
46
|
+
* The switch and the catalog are one owner because a choice only means
|
|
47
|
+
* something against the directory it was read from: the rows of the model list
|
|
48
|
+
* stream in as each provider's adapter answers, and the levels belong to the
|
|
49
|
+
* exact route. The route in force is resolved against the status facts as much
|
|
50
|
+
* as against the switch, because a session that has chosen nothing runs the
|
|
51
|
+
* settings-backed default the footer states.
|
|
52
|
+
*/
|
|
53
|
+
export declare function createModelChoice(ctx: Context, ports: ModelChoicePorts): ModelChoice;
|
|
54
|
+
//# sourceMappingURL=model-choice.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-choice.d.ts","sourceRoot":"","sources":["../../src/surface/model-choice.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAOL,KAAK,WAAW,IAAI,WAAW,EAGhC,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAGjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAM9C;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,WAAW,CAAA;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,MAAM,CAAA;IAC7B,8EAA8E;IAC9E,QAAQ,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IACpE,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,CAAA;CAC5B;AAED,gFAAgF;AAChF,MAAM,WAAW,WAAW;IAC1B,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,EAAE,MAAM,WAAW,GAAG,SAAS,CAAA;IAC/C;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAA;IAC3C,oFAAoF;IACpF,QAAQ,CAAC,YAAY,EAAE,MAAM,IAAI,CAAA;IACjC,yDAAyD;IACzD,QAAQ,CAAC,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACpD,sDAAsD;IACtD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,IAAI,CAAA;CACtC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,GAAG,WAAW,CAqTpF"}
|