@sagmans/dsh-tui 0.1.2 → 0.3.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/README.md +196 -17
- package/cordis.patch.yml +4 -2
- package/lib/agent/host.d.ts +14 -0
- package/lib/agent/host.d.ts.map +1 -1
- package/lib/agent/host.js +20 -4
- package/lib/agent/host.js.map +1 -1
- package/lib/agent/model.d.ts +50 -0
- package/lib/agent/model.d.ts.map +1 -1
- package/lib/agent/model.js +87 -1
- package/lib/agent/model.js.map +1 -1
- package/lib/agent/present.d.ts +7 -1
- package/lib/agent/present.d.ts.map +1 -1
- package/lib/agent/present.js +33 -4
- package/lib/agent/present.js.map +1 -1
- package/lib/agent/presets.d.ts +7 -1
- package/lib/agent/presets.d.ts.map +1 -1
- package/lib/agent/presets.js +7 -3
- package/lib/agent/presets.js.map +1 -1
- package/lib/agent/status.d.ts +10 -0
- package/lib/agent/status.d.ts.map +1 -1
- package/lib/agent/status.js +2 -0
- package/lib/agent/status.js.map +1 -1
- package/lib/cards.d.ts +127 -7
- package/lib/cards.d.ts.map +1 -1
- package/lib/cards.js +381 -52
- package/lib/cards.js.map +1 -1
- package/lib/export.d.ts +5 -4
- package/lib/export.d.ts.map +1 -1
- package/lib/export.js +62 -13
- package/lib/export.js.map +1 -1
- package/lib/fold-cursor.d.ts +23 -0
- package/lib/fold-cursor.d.ts.map +1 -0
- package/lib/fold-cursor.js +31 -0
- package/lib/fold-cursor.js.map +1 -0
- package/lib/gates.d.ts +145 -2
- package/lib/gates.d.ts.map +1 -1
- package/lib/gates.js +335 -40
- package/lib/gates.js.map +1 -1
- package/lib/index.d.ts +7 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +651 -92
- package/lib/index.js.map +1 -1
- package/lib/input/actions.d.ts +136 -0
- package/lib/input/actions.d.ts.map +1 -0
- package/lib/input/actions.js +740 -0
- package/lib/input/actions.js.map +1 -0
- package/lib/input/keymap-settings.d.ts +21 -0
- package/lib/input/keymap-settings.d.ts.map +1 -0
- package/lib/input/keymap-settings.js +28 -0
- package/lib/input/keymap-settings.js.map +1 -0
- package/lib/input/keymap.d.ts +91 -0
- package/lib/input/keymap.d.ts.map +1 -0
- package/lib/input/keymap.js +170 -0
- package/lib/input/keymap.js.map +1 -0
- package/lib/input/match.d.ts +10 -0
- package/lib/input/match.d.ts.map +1 -0
- package/lib/input/match.js +83 -0
- package/lib/input/match.js.map +1 -0
- package/lib/input/submission.d.ts +8 -1
- package/lib/input/submission.d.ts.map +1 -1
- package/lib/input/submission.js +9 -2
- package/lib/input/submission.js.map +1 -1
- package/lib/input.d.ts +17 -0
- package/lib/input.d.ts.map +1 -0
- package/lib/input.js +27 -0
- package/lib/input.js.map +1 -0
- package/lib/keys-command.d.ts +16 -0
- package/lib/keys-command.d.ts.map +1 -0
- package/lib/keys-command.js +60 -0
- package/lib/keys-command.js.map +1 -0
- package/lib/queue.d.ts +6 -0
- package/lib/queue.d.ts.map +1 -0
- package/lib/queue.js +68 -0
- package/lib/queue.js.map +1 -0
- package/lib/settings-notice.d.ts +19 -0
- package/lib/settings-notice.d.ts.map +1 -0
- package/lib/settings-notice.js +30 -0
- package/lib/settings-notice.js.map +1 -0
- package/lib/terminal/warning-screen.d.ts +8 -0
- package/lib/terminal/warning-screen.d.ts.map +1 -0
- package/lib/terminal/warning-screen.js +66 -0
- package/lib/terminal/warning-screen.js.map +1 -0
- package/lib/theme-capability.d.ts +36 -0
- package/lib/theme-capability.d.ts.map +1 -0
- package/lib/theme-capability.js +190 -0
- package/lib/theme-capability.js.map +1 -0
- package/lib/theme-command.d.ts +10 -0
- package/lib/theme-command.d.ts.map +1 -0
- package/lib/theme-command.js +61 -0
- package/lib/theme-command.js.map +1 -0
- package/lib/theme-settings.d.ts +196 -0
- package/lib/theme-settings.d.ts.map +1 -0
- package/lib/theme-settings.js +229 -0
- package/lib/theme-settings.js.map +1 -0
- package/lib/theme-tokens.d.ts +110 -0
- package/lib/theme-tokens.d.ts.map +1 -0
- package/lib/theme-tokens.js +427 -0
- package/lib/theme-tokens.js.map +1 -0
- package/lib/theme.d.ts +32 -35
- package/lib/theme.d.ts.map +1 -1
- package/lib/theme.js +112 -63
- package/lib/theme.js.map +1 -1
- package/lib/tokens.d.ts +15 -0
- package/lib/tokens.d.ts.map +1 -0
- package/lib/tokens.js +29 -0
- package/lib/tokens.js.map +1 -0
- package/lib/transcript.d.ts +26 -1
- package/lib/transcript.d.ts.map +1 -1
- package/lib/transcript.js +153 -25
- package/lib/transcript.js.map +1 -1
- package/lib/ui/dock.d.ts.map +1 -1
- package/lib/ui/dock.js +67 -28
- package/lib/ui/dock.js.map +1 -1
- package/lib/ui/editor.d.ts +51 -0
- package/lib/ui/editor.d.ts.map +1 -0
- package/lib/ui/editor.js +159 -0
- package/lib/ui/editor.js.map +1 -0
- package/lib/ui/frame.d.ts +54 -0
- package/lib/ui/frame.d.ts.map +1 -0
- package/lib/ui/frame.js +79 -0
- package/lib/ui/frame.js.map +1 -0
- package/lib/ui/gate-input.d.ts +20 -0
- package/lib/ui/gate-input.d.ts.map +1 -0
- package/lib/ui/gate-input.js +96 -0
- package/lib/ui/gate-input.js.map +1 -0
- package/lib/ui/markdown.d.ts +19 -2
- package/lib/ui/markdown.d.ts.map +1 -1
- package/lib/ui/markdown.js +37 -6
- package/lib/ui/markdown.js.map +1 -1
- package/lib/ui/mermaid.d.ts +44 -0
- package/lib/ui/mermaid.d.ts.map +1 -0
- package/lib/ui/mermaid.js +178 -0
- package/lib/ui/mermaid.js.map +1 -0
- package/lib/ui/picker.d.ts +66 -7
- package/lib/ui/picker.d.ts.map +1 -1
- package/lib/ui/picker.js +112 -19
- package/lib/ui/picker.js.map +1 -1
- package/lib/ui/prompt.d.ts +30 -0
- package/lib/ui/prompt.d.ts.map +1 -0
- package/lib/ui/prompt.js +45 -0
- package/lib/ui/prompt.js.map +1 -0
- package/lib/ui/queue.d.ts +24 -0
- package/lib/ui/queue.d.ts.map +1 -0
- package/lib/ui/queue.js +57 -0
- package/lib/ui/queue.js.map +1 -0
- package/lib/ui/status.d.ts +7 -1
- package/lib/ui/status.d.ts.map +1 -1
- package/lib/ui/status.js +84 -24
- package/lib/ui/status.js.map +1 -1
- package/lib/ui/view.d.ts +65 -2
- package/lib/ui/view.d.ts.map +1 -1
- package/lib/ui/view.js +319 -59
- package/lib/ui/view.js.map +1 -1
- package/lib/work.d.ts +48 -0
- package/lib/work.d.ts.map +1 -1
- package/lib/work.js +44 -0
- package/lib/work.js.map +1 -1
- package/package.json +5 -2
package/lib/agent/model.js
CHANGED
|
@@ -7,6 +7,10 @@ import { ReasoningEffortId } from '@deepseek-ai/dsh-llm';
|
|
|
7
7
|
* lists that provider's models, `provider/model` switches, and anything else is
|
|
8
8
|
* taken as a model id inside the route already in use, because a reader
|
|
9
9
|
* switching between two models of one provider should not have to repeat it.
|
|
10
|
+
* A complete route may carry one more segment, the reasoning effort, so
|
|
11
|
+
* `provider/model/effort` selects both at once: the last segment is the effort
|
|
12
|
+
* and the model is everything between it and the provider, which reads a model
|
|
13
|
+
* id containing a slash as an effort the adapters in use do not mint.
|
|
10
14
|
*/
|
|
11
15
|
export function parseModelArgument(argument, providers, current) {
|
|
12
16
|
const trimmed = argument.trim();
|
|
@@ -14,7 +18,16 @@ export function parseModelArgument(argument, providers, current) {
|
|
|
14
18
|
return { kind: 'current' };
|
|
15
19
|
const slash = trimmed.indexOf('/');
|
|
16
20
|
if (slash > 0 && slash < trimmed.length - 1) {
|
|
17
|
-
|
|
21
|
+
const provider = trimmed.slice(0, slash);
|
|
22
|
+
const rest = trimmed.slice(slash + 1);
|
|
23
|
+
const effortSlash = rest.lastIndexOf('/');
|
|
24
|
+
if (effortSlash > 0 && effortSlash < rest.length - 1) {
|
|
25
|
+
return {
|
|
26
|
+
kind: 'switch',
|
|
27
|
+
choice: { provider, model: rest.slice(0, effortSlash), reasoningEffort: rest.slice(effortSlash + 1) },
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
return { kind: 'switch', choice: { provider, model: rest } };
|
|
18
31
|
}
|
|
19
32
|
if (providers.some(provider => provider.id === trimmed))
|
|
20
33
|
return { kind: 'list-models', provider: trimmed };
|
|
@@ -27,6 +40,47 @@ export function parseModelArgument(argument, providers, current) {
|
|
|
27
40
|
}
|
|
28
41
|
return { kind: 'switch', choice: { provider: current.provider, model: trimmed } };
|
|
29
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* The separator inside a picker's route key.
|
|
45
|
+
*
|
|
46
|
+
* A picker settles on a string, so the pair has to survive one round trip
|
|
47
|
+
* without a reading that guesses which half is which: a model id may contain
|
|
48
|
+
* the slash a `provider/model` reading would split on, and no route id can
|
|
49
|
+
* contain this character.
|
|
50
|
+
*/
|
|
51
|
+
const ROUTE_KEY_SEPARATOR = '\u0000';
|
|
52
|
+
/** The picker's stable id for one route. */
|
|
53
|
+
export function modelRouteKey(route) {
|
|
54
|
+
return route.provider + ROUTE_KEY_SEPARATOR + route.model;
|
|
55
|
+
}
|
|
56
|
+
/** Read a route key back; undefined for a string this surface never minted. */
|
|
57
|
+
export function readModelRouteKey(key) {
|
|
58
|
+
const at = key.indexOf(ROUTE_KEY_SEPARATOR);
|
|
59
|
+
if (at <= 0 || at === key.length - 1)
|
|
60
|
+
return undefined;
|
|
61
|
+
return { provider: key.slice(0, at), model: key.slice(at + 1) };
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* How one advertised route appears in the picker.
|
|
65
|
+
*
|
|
66
|
+
* The name leads because it is what a reader recognizes, and the id follows
|
|
67
|
+
* only when it says something the name does not; the route in force carries
|
|
68
|
+
* its effort, since that is the other half of the choice on screen.
|
|
69
|
+
*/
|
|
70
|
+
export function describeModelRoute(route, current) {
|
|
71
|
+
const chosen = current !== undefined && current.provider === route.provider && current.model === route.model;
|
|
72
|
+
const description = [
|
|
73
|
+
route.provider,
|
|
74
|
+
route.model === route.name ? undefined : route.model,
|
|
75
|
+
chosen ? 'current' : undefined,
|
|
76
|
+
chosen && current.reasoningEffort !== undefined ? `effort ${current.reasoningEffort}` : undefined,
|
|
77
|
+
].filter(part => part !== undefined && part !== '').join(' · ');
|
|
78
|
+
return {
|
|
79
|
+
label: route.name,
|
|
80
|
+
description: description === '' ? undefined : description,
|
|
81
|
+
current: chosen,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
30
84
|
/**
|
|
31
85
|
* Own the reader's model choice for one session.
|
|
32
86
|
*
|
|
@@ -61,6 +115,20 @@ export class ModelSwitch {
|
|
|
61
115
|
...current.reasoningEffort === undefined ? {} : { reasoningEffort: String(current.reasoningEffort) },
|
|
62
116
|
};
|
|
63
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* Take the deployment default as this session's route, unless the reader
|
|
120
|
+
* already named one.
|
|
121
|
+
*
|
|
122
|
+
* The default is settings-backed and only trustworthy once it is read, which
|
|
123
|
+
* is after the agent was created; adopting it here is what makes the effort
|
|
124
|
+
* the status line shows reach the request, and a reader's own `/model` or
|
|
125
|
+
* picker choice must never be overwritten by it.
|
|
126
|
+
*/
|
|
127
|
+
adopt(choice) {
|
|
128
|
+
if (this.selection.current !== undefined)
|
|
129
|
+
return;
|
|
130
|
+
this.choose(choice);
|
|
131
|
+
}
|
|
64
132
|
/** Forget the choice, so the session returns to the composition default. */
|
|
65
133
|
reset() {
|
|
66
134
|
this.selection.current = undefined;
|
|
@@ -87,6 +155,24 @@ export function createModelCatalog(ctx) {
|
|
|
87
155
|
? [{ id: entry.id, name: typeof entry.name === 'string' ? entry.name : entry.id }]
|
|
88
156
|
: []);
|
|
89
157
|
},
|
|
158
|
+
efforts: async (provider, model) => {
|
|
159
|
+
if (typeof llm.resolveModelInfo !== 'function')
|
|
160
|
+
return undefined;
|
|
161
|
+
const reasoning = (await llm.resolveModelInfo(provider, model)).reasoning;
|
|
162
|
+
if (reasoning === undefined)
|
|
163
|
+
return undefined;
|
|
164
|
+
const efforts = (reasoning.efforts ?? []).flatMap(entry => typeof entry.id === 'string'
|
|
165
|
+
? [{
|
|
166
|
+
id: entry.id,
|
|
167
|
+
name: typeof entry.name === 'string' ? entry.name : entry.id,
|
|
168
|
+
...(typeof entry.description === 'string' ? { description: entry.description } : {}),
|
|
169
|
+
}]
|
|
170
|
+
: []);
|
|
171
|
+
return {
|
|
172
|
+
efforts,
|
|
173
|
+
...(typeof reasoning.defaultEffort === 'string' ? { defaultEffort: reasoning.defaultEffort } : {}),
|
|
174
|
+
};
|
|
175
|
+
},
|
|
90
176
|
};
|
|
91
177
|
}
|
|
92
178
|
//# sourceMappingURL=model.js.map
|
package/lib/agent/model.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/agent/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAA0B,MAAM,wBAAwB,CAAA;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/agent/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAA0B,MAAM,wBAAwB,CAAA;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAgCxD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAAgB,EAChB,SAAmC,EACnC,OAAgC;IAEhC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAA;IAC/B,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;IAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAClC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;QACxC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;QACrC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QACzC,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrD,OAAO;gBACL,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;aACtG,CAAA;QACH,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAA;IAC9D,CAAC;IACD,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAA;IAC1G,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC/D,OAAO;YACL,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,0CAA0C,OAAO,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,KAAK,EAAE,EAAE;SAC3G,CAAA;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAA;AACnF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,mBAAmB,GAAG,QAAQ,CAAA;AAEpC,4CAA4C;AAC5C,MAAM,UAAU,aAAa,CAAC,KAA4D;IACxF,OAAO,KAAK,CAAC,QAAQ,GAAG,mBAAmB,GAAG,KAAK,CAAC,KAAK,CAAA;AAC3D,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAA;IAC3C,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,SAAS,CAAA;IACtD,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAA;AACjE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAiB,EAAE,OAAgC;IACpF,MAAM,MAAM,GAAG,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAA;IAC5G,MAAM,WAAW,GAAG;QAClB,KAAK,CAAC,QAAQ;QACd,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK;QACpD,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QAC9B,MAAM,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,SAAS;KAClG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC/D,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,IAAI;QACjB,WAAW,EAAE,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW;QACzD,OAAO,EAAE,MAAM;KAChB,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,OAAO,WAAW;IACL,SAAS,GAAsB,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,CAAA;IACpF,SAAS,CAA0B;IAE3C,sFAAsF;IACtF,OAAO,CAAC,QAAiB;QACvB,IAAI,CAAC,SAAS,EAAE,EAAE,CAAA;QAClB,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;IAClE,CAAC;IAED,MAAM,CAAC,MAAmB;QACxB,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG;YACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,GAAG,MAAM,CAAC,eAAe,KAAK,SAAS;gBACrC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,eAAe,EAAE,iBAAiB,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE;SACnE,CAAA;IACH,CAAC;IAED,OAAO;QACL,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAA;QACtC,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,SAAS,CAAA;QAC3C,OAAO;YACL,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,GAAG,OAAO,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;SACrG,CAAA;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,MAAmB;QACvB,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,KAAK,SAAS;YAAE,OAAM;QAChD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACrB,CAAC;IAED,4EAA4E;IAC5E,KAAK;QACH,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAA;QAClC,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAA;IACtC,CAAC;IAED,OAAO;QACL,IAAI,CAAC,SAAS,EAAE,EAAE,CAAA;QAClB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC5B,CAAC;CACF;AAoBD,sEAAsE;AACtE,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAK7C,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAA6B,CAAA;IACtD,IAAI,OAAO,GAAG,EAAE,aAAa,KAAK,UAAU;QAAE,OAAO,SAAS,CAAA;IAC9D,MAAM,SAAS,GAAG,GAA6B,EAAE,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAC9F,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IACvH,OAAO;QACL,SAAS;QACT,MAAM,EAAE,KAAK,EAAC,QAAQ,EAAC,EAAE;YACvB,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,UAAU;gBAAE,OAAO,EAAE,CAAA;YACnD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;YAC7C,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ;gBACzD,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;gBAClF,CAAC,CAAC,EAAE,CAAC,CAAA;QACT,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;YACjC,IAAI,OAAO,GAAG,CAAC,gBAAgB,KAAK,UAAU;gBAAE,OAAO,SAAS,CAAA;YAChE,MAAM,SAAS,GAAG,CAAC,MAAM,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;YACzE,IAAI,SAAS,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAA;YAC7C,MAAM,OAAO,GAAG,CAAC,SAAS,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ;gBACrF,CAAC,CAAC,CAAC;wBACC,EAAE,EAAE,KAAK,CAAC,EAAE;wBACZ,IAAI,EAAE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;wBAC5D,GAAG,CAAC,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACrF,CAAC;gBACJ,CAAC,CAAC,EAAE,CAAC,CAAA;YACP,OAAO;gBACL,OAAO;gBACP,GAAG,CAAC,OAAO,SAAS,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,SAAS,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACnG,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
|
package/lib/agent/present.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Context } from '@deepseek-ai/cordis';
|
|
2
|
+
import type { Agent } from '@deepseek-ai/dsh-agent';
|
|
2
3
|
import { type ToolPresenter } from '../cards.ts';
|
|
3
4
|
/**
|
|
4
5
|
* Present tool calls and results through each tool's own render intent.
|
|
@@ -7,6 +8,11 @@ import { type ToolPresenter } from '../cards.ts';
|
|
|
7
8
|
* and result read. An unknown tool, a missing presenter, or a throwing one
|
|
8
9
|
* degrades to the generic card instead of breaking the transcript, because a
|
|
9
10
|
* broken card is recoverable and a broken transcript is not.
|
|
11
|
+
*
|
|
12
|
+
* The scope is the agent whose session is on screen, not the plugin's own
|
|
13
|
+
* composition. An agent preset registers its tools in the agent's scoped world,
|
|
14
|
+
* so a scope-less lookup sees none of them and every card degrades to a bare
|
|
15
|
+
* generic row — which is how a bash card lost its command.
|
|
10
16
|
*/
|
|
11
|
-
export declare function createToolPresenter(ctx: Context): ToolPresenter;
|
|
17
|
+
export declare function createToolPresenter(ctx: Context, scope?: () => Agent | undefined): ToolPresenter;
|
|
12
18
|
//# sourceMappingURL=present.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"present.d.ts","sourceRoot":"","sources":["../../src/agent/present.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAIL,KAAK,aAAa,EAEnB,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"present.d.ts","sourceRoot":"","sources":["../../src/agent/present.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAIL,KAAK,aAAa,EAEnB,MAAM,aAAa,CAAA;AA4BpB;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,GAAG,SAAS,GAAG,aAAa,CAqChG"}
|
package/lib/agent/present.js
CHANGED
|
@@ -7,6 +7,26 @@ function parseArguments(argumentsJson) {
|
|
|
7
7
|
return undefined;
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* The content a tool returned, unwrapped from the durable result envelope.
|
|
12
|
+
*
|
|
13
|
+
* A `presentResult` is handed the tool's own {@link ContentBlock}s. The durable
|
|
14
|
+
* `tool/result` wraps them one level deeper, inside a `tool-result` block, so
|
|
15
|
+
* passing the envelope through makes every presenter that inspects its content
|
|
16
|
+
* decline — which is how a terminal result silently became a generic card.
|
|
17
|
+
*/
|
|
18
|
+
function toolResultContent(content) {
|
|
19
|
+
if (!Array.isArray(content))
|
|
20
|
+
return content;
|
|
21
|
+
for (const block of content) {
|
|
22
|
+
if (typeof block !== 'object' || block === null)
|
|
23
|
+
continue;
|
|
24
|
+
const record = block;
|
|
25
|
+
if (record.type === 'tool-result' && Array.isArray(record.content))
|
|
26
|
+
return record.content;
|
|
27
|
+
}
|
|
28
|
+
return content;
|
|
29
|
+
}
|
|
10
30
|
/**
|
|
11
31
|
* Present tool calls and results through each tool's own render intent.
|
|
12
32
|
*
|
|
@@ -14,11 +34,16 @@ function parseArguments(argumentsJson) {
|
|
|
14
34
|
* and result read. An unknown tool, a missing presenter, or a throwing one
|
|
15
35
|
* degrades to the generic card instead of breaking the transcript, because a
|
|
16
36
|
* broken card is recoverable and a broken transcript is not.
|
|
37
|
+
*
|
|
38
|
+
* The scope is the agent whose session is on screen, not the plugin's own
|
|
39
|
+
* composition. An agent preset registers its tools in the agent's scoped world,
|
|
40
|
+
* so a scope-less lookup sees none of them and every card degrades to a bare
|
|
41
|
+
* generic row — which is how a bash card lost its command.
|
|
17
42
|
*/
|
|
18
|
-
export function createToolPresenter(ctx) {
|
|
43
|
+
export function createToolPresenter(ctx, scope) {
|
|
19
44
|
const definition = (name) => {
|
|
20
45
|
try {
|
|
21
|
-
return ctx.tools.get(name);
|
|
46
|
+
return ctx.tools.get(name, scope?.());
|
|
22
47
|
}
|
|
23
48
|
catch {
|
|
24
49
|
return undefined;
|
|
@@ -28,7 +53,11 @@ export function createToolPresenter(ctx) {
|
|
|
28
53
|
call(name, argumentsJson) {
|
|
29
54
|
try {
|
|
30
55
|
const view = definition(name)?.presentCall?.(parseArguments(argumentsJson));
|
|
31
|
-
|
|
56
|
+
// No definition, or a tool that declares no call view: leave the row to
|
|
57
|
+
// the transcript's own fallback, which at least shows the raw arguments
|
|
58
|
+
// the call was made with. `cardOfCall(undefined, ...)` would return a
|
|
59
|
+
// generic card that silently drops them.
|
|
60
|
+
return view === undefined ? undefined : cardOfCall(view, name);
|
|
32
61
|
}
|
|
33
62
|
catch {
|
|
34
63
|
return undefined;
|
|
@@ -36,7 +65,7 @@ export function createToolPresenter(ctx) {
|
|
|
36
65
|
},
|
|
37
66
|
result(name, input) {
|
|
38
67
|
try {
|
|
39
|
-
const view = definition(name)?.presentResult?.(parseArguments(input.argumentsJson), { content: input.content, isError: input.isError, meta: input.meta });
|
|
68
|
+
const view = definition(name)?.presentResult?.(parseArguments(input.argumentsJson), { content: toolResultContent(input.content), isError: input.isError, meta: input.meta });
|
|
40
69
|
return cardOfResult(view, {
|
|
41
70
|
fallbackTitle: name,
|
|
42
71
|
failed: input.isError,
|
package/lib/agent/present.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"present.js","sourceRoot":"","sources":["../../src/agent/present.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"present.js","sourceRoot":"","sources":["../../src/agent/present.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,UAAU,EACV,YAAY,EACZ,YAAY,GAGb,MAAM,aAAa,CAAA;AAEpB,SAAS,cAAc,CAAC,aAAqB;IAC3C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAY,CAAA;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,iBAAiB,CAAC,OAAgB;IACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAA;IAC3C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;YAAE,SAAQ;QACzD,MAAM,MAAM,GAAG,KAAgC,CAAA;QAC/C,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;YAAE,OAAO,MAAM,CAAC,OAAO,CAAA;IAC3F,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAY,EAAE,KAA+B;IAC/E,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE;QAClC,IAAI,CAAC;YACH,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAA;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAA;QAClB,CAAC;IACH,CAAC,CAAA;IACD,OAAO;QACL,IAAI,CAAC,IAAI,EAAE,aAAa;YACtB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC,cAAc,CAAC,aAAa,CAAU,CAAC,CAAA;gBACpF,wEAAwE;gBACxE,wEAAwE;gBACxE,sEAAsE;gBACtE,yCAAyC;gBACzC,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YAChE,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,SAAS,CAAA;YAClB,CAAC;QACH,CAAC;QACD,MAAM,CAAC,IAAI,EAAE,KAAsB;YACjC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,CAC5C,cAAc,CAAC,KAAK,CAAC,aAAa,CAAU,EAC5C,EAAE,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAW,CACjG,CAAA;gBACD,OAAO,YAAY,CAAC,IAAI,EAAE;oBACxB,aAAa,EAAE,IAAI;oBACnB,MAAM,EAAE,KAAK,CAAC,OAAO;oBACrB,YAAY,EAAE,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC;iBAC1C,CAAC,CAAA;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,SAAS,CAAA;YAClB,CAAC;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
|
package/lib/agent/presets.d.ts
CHANGED
|
@@ -37,7 +37,13 @@ export declare function parsePresetArgument(argument: string): PresetCommand;
|
|
|
37
37
|
export declare function describePreset(preset: PresetSummary, currentId: string | undefined): PickerRow;
|
|
38
38
|
/** The roster this surface reads, described structurally. */
|
|
39
39
|
export interface PresetRoster {
|
|
40
|
-
/**
|
|
40
|
+
/**
|
|
41
|
+
* The preset a session starts on when nobody names one.
|
|
42
|
+
*
|
|
43
|
+
* Read per call rather than captured: the harness resolves it through the
|
|
44
|
+
* hot-reloaded settings document, so a default chosen while this surface is
|
|
45
|
+
* already running still reaches the next session it opens.
|
|
46
|
+
*/
|
|
41
47
|
readonly defaultId: string;
|
|
42
48
|
list(): Promise<readonly PresetSummary[]>;
|
|
43
49
|
resolve(id: string | undefined): Promise<PresetSummary>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/agent/presets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAGhD;;;;;;;;GAQG;AAEH,6CAA6C;AAC7C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAA;IACjC,uEAAuE;IACvE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;IACxC,oEAAoE;IACpE,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;CACpC;AAED,wDAAwD;AACxD,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAA;AAEpD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAGnE;AAgBD,4CAA4C;AAC5C,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAa9F;AAED,6DAA6D;AAC7D,MAAM,WAAW,YAAY;IAC3B
|
|
1
|
+
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/agent/presets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAGhD;;;;;;;;GAQG;AAEH,6CAA6C;AAC7C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAA;IACjC,uEAAuE;IACvE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;IACxC,oEAAoE;IACpE,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;CACpC;AAED,wDAAwD;AACxD,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAA;AAEpD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAGnE;AAgBD,4CAA4C;AAC5C,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAa9F;AAED,6DAA6D;AAC7D,MAAM,WAAW,YAAY;IAC3B;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,IAAI,IAAI,OAAO,CAAC,SAAS,aAAa,EAAE,CAAC,CAAA;IACzC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;IACvD;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACnD,yEAAyE;IACzE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACnD,iEAAiE;IACjE,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;IAC7C;;;;;;OAMG;IACH,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAA;CACnC;AAED,qEAAqE;AACrE,eAAO,MAAM,gBAAgB,gBAAgB,CAAA;AAwC7C;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,GAAG,SAAS,CAwCzE"}
|
package/lib/agent/presets.js
CHANGED
|
@@ -76,11 +76,15 @@ export function createPresetRoster(ctx) {
|
|
|
76
76
|
const service = ctx.get('agentPresets');
|
|
77
77
|
if (typeof service?.list !== 'function' || typeof service.mount !== 'function')
|
|
78
78
|
return undefined;
|
|
79
|
-
const
|
|
80
|
-
if (
|
|
79
|
+
const fallbackId = textOr(service.defaultId);
|
|
80
|
+
if (fallbackId === undefined)
|
|
81
81
|
return undefined;
|
|
82
82
|
return {
|
|
83
|
-
|
|
83
|
+
// The harness answers a configured id on every read; the captured one is
|
|
84
|
+
// only there for a service that momentarily answers nothing.
|
|
85
|
+
get defaultId() {
|
|
86
|
+
return textOr(service.defaultId) ?? fallbackId;
|
|
87
|
+
},
|
|
84
88
|
list: async () => {
|
|
85
89
|
const rows = await service.list?.() ?? [];
|
|
86
90
|
return rows.flatMap(row => toSummary(row) ?? []);
|
package/lib/agent/presets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../../src/agent/presets.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AA4BrE;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAA;IAC1B,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;AAC9D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,aAAa,GAAqC;IACtD,QAAQ,EAAE,mFAAmF;IAC7F,GAAG,EAAE,uEAAuE;IAC5E,OAAO,EAAE,8BAA8B;IACvC,MAAM,EAAE,gEAAgE;CACzE,CAAA;AAED,4CAA4C;AAC5C,MAAM,UAAU,cAAc,CAAC,MAAqB,EAAE,SAA6B;IACjF,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACtC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,KAAK,SAAS;QAC3C,CAAC,CAAC,iBAAiB,MAAM,CAAC,MAAM,EAAE;QAClC,CAAC,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;YACzE,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;aACrD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,CAAC;aACjD,IAAI,CAAC,KAAK,CAAC,CAAA;IAClB,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,EAAE;QAChB,WAAW,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QACrD,OAAO,EAAE,MAAM,CAAC,EAAE,KAAK,SAAS;KACjC,CAAA;AACH,CAAC;
|
|
1
|
+
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../../src/agent/presets.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AA4BrE;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAA;IAC1B,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;AAC9D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,aAAa,GAAqC;IACtD,QAAQ,EAAE,mFAAmF;IAC7F,GAAG,EAAE,uEAAuE;IAC5E,OAAO,EAAE,8BAA8B;IACvC,MAAM,EAAE,gEAAgE;CACzE,CAAA;AAED,4CAA4C;AAC5C,MAAM,UAAU,cAAc,CAAC,MAAqB,EAAE,SAA6B;IACjF,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACtC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,KAAK,SAAS;QAC3C,CAAC,CAAC,iBAAiB,MAAM,CAAC,MAAM,EAAE;QAClC,CAAC,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;YACzE,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;aACrD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,CAAC;aACjD,IAAI,CAAC,KAAK,CAAC,CAAA;IAClB,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,EAAE;QAChB,WAAW,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QACrD,OAAO,EAAE,MAAM,CAAC,EAAE,KAAK,SAAS;KACjC,CAAA;AACH,CAAC;AAmCD,qEAAqE;AACrE,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAA;AAE7C,gEAAgE;AAChE,MAAM,iBAAiB,GAAG,cAAc,CAAA;AAWxC,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAgC,CAAC,CAAC,CAAC,SAAS,CAAA;AACnG,CAAC;AAED,SAAS,MAAM,CAAC,KAAc;IAC5B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;AACtE,CAAC;AAED,+DAA+D;AAC/D,SAAS,SAAS,CAAC,KAAc;IAC/B,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC9B,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IAC7B,IAAI,EAAE,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACtC,OAAO;QACL,EAAE;QACF,KAAK,EAAE,MAAM,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;QACnD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;QAC1B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC;QACxC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;KAC/B,CAAA;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;AAChF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC7C,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,cAAc,CAA8B,CAAA;IACpE,IAAI,OAAO,OAAO,EAAE,IAAI,KAAK,UAAU,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,UAAU;QAAE,OAAO,SAAS,CAAA;IAChG,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAC5C,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IAC9C,OAAO;QACL,yEAAyE;QACzE,6DAA6D;QAC7D,IAAI,SAAS;YACX,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,UAAU,CAAA;QAChD,CAAC;QACD,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAA;YACzC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;QAClD,CAAC;QACD,OAAO,EAAE,KAAK,EAAC,EAAE,EAAC,EAAE;YAClB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAA;YAC5C,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;YACnC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,qCAAqC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,oBAAoB,CAAC,CAAA;YACxH,CAAC;YACD,OAAO,OAAO,CAAA;QAChB,CAAC;QACD,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE;YAC5B,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QACrC,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;YAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;YAC7B,IAAI,OAAO,MAAM,KAAK,UAAU;gBAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;YACtG,OAAO,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAA;QAC9C,CAAC;QACD,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,gBAAgB,CAAC;QACpE,OAAO,EAAE,OAAO,CAAC,EAAE;YACjB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAA;YAClE,IAAI,QAAQ,KAAK,SAAS;gBAAE,OAAO,KAAK,CAAA;YACxC,MAAM,IAAI,GAAG,QAAQ,CAAC,gBAAgB,CAAA;YACtC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAA;YACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QAC/C,CAAC;KACF,CAAA;AACH,CAAC"}
|
package/lib/agent/status.d.ts
CHANGED
|
@@ -41,6 +41,16 @@ export interface StatusSources {
|
|
|
41
41
|
readonly reasoningEffort?: string;
|
|
42
42
|
} | undefined) | undefined;
|
|
43
43
|
readonly home?: string | undefined;
|
|
44
|
+
/**
|
|
45
|
+
* The chord waiting for its next key, read per paint so its window lapses on
|
|
46
|
+
* screen rather than only in the reader's head.
|
|
47
|
+
*/
|
|
48
|
+
readonly chord?: (() => string | undefined) | undefined;
|
|
49
|
+
/**
|
|
50
|
+
* The way back to the driven session, read per paint: the reader may remap it
|
|
51
|
+
* or open another session while the row is already on screen.
|
|
52
|
+
*/
|
|
53
|
+
readonly back?: (() => string | undefined) | undefined;
|
|
44
54
|
}
|
|
45
55
|
export declare function createStatusFacts(ctx: Context, sources: StatusSources): () => StatusFacts;
|
|
46
56
|
//# sourceMappingURL=status.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/agent/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAIlD,qDAAqD;AACrD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;CACvC;AAiBD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAE/E;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAMxF;AAUD;;;;;;GAMG;AACH,6CAA6C;AAC7C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,SAAS,CAAA;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,aAAa,CAAA;IACtC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM;QACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;QAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;QACvB,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAClC,GAAG,SAAS,CAAC,GAAG,SAAS,CAAA;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/agent/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAIlD,qDAAqD;AACrD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;CACvC;AAiBD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAE/E;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAMxF;AAUD;;;;;;GAMG;AACH,6CAA6C;AAC7C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,SAAS,CAAA;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,aAAa,CAAA;IACtC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM;QACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;QAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;QACvB,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAClC,GAAG,SAAS,CAAC,GAAG,SAAS,CAAA;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,SAAS,CAAA;IACvD;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,SAAS,CAAA;CACvD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,WAAW,CAmCzF"}
|
package/lib/agent/status.js
CHANGED
package/lib/agent/status.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/agent/status.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAuBrE;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAA;AAC1C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,KAA0C;IAClE,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;IAC7C,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAA;IACrD,IAAI,IAAI,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IAClE,MAAM,KAAK,GAAG,IAAI,GAAG,QAAQ,CAAA;IAC7B,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAA;AAC/C,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAE,KAAiC,CAAC,CAAC,CAAC,SAAS,CAAA;AACrG,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;AAChF,CAAC;
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/agent/status.ts"],"names":[],"mappings":"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"}
|
package/lib/cards.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { FileDiff, ToolCallView, ToolResultView } from '@deepseek-ai/dsh-tools';
|
|
2
|
+
import type { CardRowClass } from './theme-tokens.ts';
|
|
2
3
|
/** What a tool's result presenter receives, plus the call arguments it was asked with. */
|
|
3
4
|
export interface ToolResultInput {
|
|
4
5
|
readonly argumentsJson: string;
|
|
@@ -18,18 +19,86 @@ export interface ToolPresenter {
|
|
|
18
19
|
}
|
|
19
20
|
/** Which treatment a card gets; mirrors the tool's declared render intent. */
|
|
20
21
|
export type ToolCardKind = 'generic' | 'terminal' | 'diff' | 'search' | 'read' | 'web';
|
|
22
|
+
/**
|
|
23
|
+
* One styled fragment of a detail row.
|
|
24
|
+
*
|
|
25
|
+
* A row such as `12: text` is two things to a reader — a line number and the
|
|
26
|
+
* line — so a row carries fragments rather than one string. Anything else
|
|
27
|
+
* would make the line-number styles into settings that never apply.
|
|
28
|
+
*/
|
|
29
|
+
export interface CardPart {
|
|
30
|
+
readonly class: CardRowClass;
|
|
31
|
+
readonly text: string;
|
|
32
|
+
}
|
|
33
|
+
/** One detail row, as the fragments a renderer draws in order. */
|
|
34
|
+
export interface CardRow {
|
|
35
|
+
readonly parts: readonly CardPart[];
|
|
36
|
+
}
|
|
37
|
+
/** A row drawn in a single style. */
|
|
38
|
+
export declare function cardRow(cls: CardRowClass, text: string): CardRow;
|
|
39
|
+
/** The words of a row with no styling, for callers that only need the text. */
|
|
40
|
+
export declare function rowText(row: CardRow): string;
|
|
41
|
+
/** What a measured fact on a card is, which decides its colour and symbol. */
|
|
42
|
+
export type CardStatKind = 'added' | 'changed' | 'removed' | 'size';
|
|
43
|
+
/** One measured fact a card reports beside its header, e.g. a change or size count. */
|
|
44
|
+
export interface CardStat {
|
|
45
|
+
readonly kind: CardStatKind;
|
|
46
|
+
/** The number or phrase; the renderer supplies the symbol and the styling. */
|
|
47
|
+
readonly text: string;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* One nested call a PTC program dispatched, as the single row it draws.
|
|
51
|
+
*
|
|
52
|
+
* The row is the tool's own call header — the title and the salient argument
|
|
53
|
+
* its presenter declared — so the surface still learns no tool name.
|
|
54
|
+
*/
|
|
55
|
+
export interface ToolSubCall {
|
|
56
|
+
readonly title: string;
|
|
57
|
+
readonly argument?: string;
|
|
58
|
+
readonly failed: boolean;
|
|
59
|
+
}
|
|
21
60
|
/** One renderable tool row: a header plus the detail rows kept for rendering. */
|
|
22
61
|
export interface ToolCard {
|
|
23
62
|
readonly kind: ToolCardKind;
|
|
63
|
+
/**
|
|
64
|
+
* The card's label: the tool's own name when it has an argument, else the
|
|
65
|
+
* title its presenter declared.
|
|
66
|
+
*/
|
|
24
67
|
readonly title: string;
|
|
68
|
+
/**
|
|
69
|
+
* The salient argument the call was made with — a path or a command.
|
|
70
|
+
*
|
|
71
|
+
* The surface cannot know which argument matters, so the presenter names it
|
|
72
|
+
* through its locations or its terminal title. It is a field rather than part
|
|
73
|
+
* of the title so it can carry its own colour, and it is drawn outside the
|
|
74
|
+
* fold because what ran is never a detail.
|
|
75
|
+
*/
|
|
76
|
+
readonly argument?: string;
|
|
77
|
+
/** Measured facts to report beside the header, e.g. changed or read lines. */
|
|
78
|
+
readonly stats?: readonly CardStat[];
|
|
79
|
+
/**
|
|
80
|
+
* The exit pill of a terminal card, drawn outside the fold with its output.
|
|
81
|
+
*
|
|
82
|
+
* The pill is not output, so it must not consume a slot of the folded preview
|
|
83
|
+
* window nor be the first row a bounded tail drops.
|
|
84
|
+
*/
|
|
85
|
+
readonly status?: string;
|
|
25
86
|
/** Rows retained for rendering, already capped at CARD_DETAIL_MAX. */
|
|
26
|
-
readonly detail: readonly
|
|
87
|
+
readonly detail: readonly CardRow[];
|
|
27
88
|
readonly failed: boolean;
|
|
28
89
|
/** Rows the tool actually presented, which retention may have cut short. */
|
|
29
90
|
readonly totalLines: number;
|
|
91
|
+
/**
|
|
92
|
+
* The calls a PTC program dispatched through this card, in dispatch order.
|
|
93
|
+
*
|
|
94
|
+
* A program reaches every tool through one card, so those calls are the
|
|
95
|
+
* card's own children rather than rows of their own, capped the way detail
|
|
96
|
+
* rows are.
|
|
97
|
+
*/
|
|
98
|
+
readonly subCalls?: readonly ToolSubCall[];
|
|
99
|
+
/** Calls the program dispatched at all, which retention may have cut short. */
|
|
100
|
+
readonly subCallsTotal?: number;
|
|
30
101
|
}
|
|
31
|
-
/** Detail rows a settled card shows before it is summarized. */
|
|
32
|
-
export declare const CARD_DETAIL_LIMIT = 10;
|
|
33
102
|
/**
|
|
34
103
|
* Detail rows retained on a card at all.
|
|
35
104
|
*
|
|
@@ -38,20 +107,62 @@ export declare const CARD_DETAIL_LIMIT = 10;
|
|
|
38
107
|
* memory for a reader who will never scroll that far.
|
|
39
108
|
*/
|
|
40
109
|
export declare const CARD_DETAIL_MAX = 200;
|
|
110
|
+
/**
|
|
111
|
+
* Output rows a folded shell card keeps on screen, counted from the end.
|
|
112
|
+
*
|
|
113
|
+
* A shell command is the one card whose output is the result the reader asked
|
|
114
|
+
* for, so folding it to its header would hide the answer. The tail is the part
|
|
115
|
+
* that carries the outcome of a long run, and the retention cap still bounds
|
|
116
|
+
* what ctrl+o can reveal.
|
|
117
|
+
*/
|
|
118
|
+
export declare const CARD_SHELL_PREVIEW = 20;
|
|
119
|
+
/**
|
|
120
|
+
* Nested calls retained on one PTC card.
|
|
121
|
+
*
|
|
122
|
+
* A program can dispatch in a loop, and one line each is small but not free;
|
|
123
|
+
* the cap keeps a card bounded while {@link ToolCard.subCallsTotal} still
|
|
124
|
+
* reports everything the program ran.
|
|
125
|
+
*/
|
|
126
|
+
export declare const SUBCALL_MAX = 100;
|
|
41
127
|
/** Character budget for one detail row, so a minified file cannot flood the viewport. */
|
|
42
128
|
export declare const CARD_LINE_LIMIT = 200;
|
|
129
|
+
/**
|
|
130
|
+
* The one-line row for one nested call.
|
|
131
|
+
*
|
|
132
|
+
* A tool that declares a call view is drawn exactly as its own header would be;
|
|
133
|
+
* only a tool with no view at all falls back to its registry name and raw call,
|
|
134
|
+
* because the surface cannot name a salient argument for a schema it never saw.
|
|
135
|
+
*/
|
|
136
|
+
export declare function subCallOf(name: string, argumentsJson: string, view: ToolCard | undefined): ToolSubCall;
|
|
137
|
+
/**
|
|
138
|
+
* How much of a card the reader has asked for.
|
|
139
|
+
*
|
|
140
|
+
* The folded state names its own treatment because the two kinds of card are
|
|
141
|
+
* not equally readable folded: a shell card's output is the answer, while every
|
|
142
|
+
* other card's rows restate what its title already says.
|
|
143
|
+
*/
|
|
144
|
+
export type CardPreview = {
|
|
145
|
+
readonly expanded: true;
|
|
146
|
+
} | {
|
|
147
|
+
readonly expanded: false;
|
|
148
|
+
readonly preview: 'title' | 'shellTail';
|
|
149
|
+
};
|
|
43
150
|
/**
|
|
44
151
|
* The rows a card shows right now, and how many the reader is not seeing.
|
|
45
152
|
*
|
|
46
153
|
* Expansion is a view decision rather than a card field so one key press can
|
|
47
154
|
* change every card at once without rebuilding the transcript.
|
|
48
155
|
*/
|
|
49
|
-
export declare function cardDetailRows(card: ToolCard,
|
|
50
|
-
lines: readonly
|
|
156
|
+
export declare function cardDetailRows(card: ToolCard, preview: CardPreview): {
|
|
157
|
+
lines: readonly CardRow[];
|
|
51
158
|
hidden: number;
|
|
52
159
|
};
|
|
160
|
+
/** The hint row for a folded shell card, or undefined when its preview dropped nothing. */
|
|
161
|
+
export declare function shellFoldHint(hidden: number, showMoreKey: string): string | undefined;
|
|
162
|
+
/** The hint row for an opened shell card whose retention dropped the run's earlier rows. */
|
|
163
|
+
export declare function shellRetentionHint(hidden: number): string | undefined;
|
|
53
164
|
/**
|
|
54
|
-
* Build a card from raw lines.
|
|
165
|
+
* Build a card from raw text lines.
|
|
55
166
|
*
|
|
56
167
|
* Every path that turns text into a card goes through here, so a tool with no
|
|
57
168
|
* presenter — or a result whose presenter declined — cannot keep a hundred
|
|
@@ -60,6 +171,15 @@ export declare function cardDetailRows(card: ToolCard, expanded: boolean): {
|
|
|
60
171
|
export declare function cardFromLines(kind: ToolCardKind, title: string, lines: readonly string[], failed: boolean): ToolCard;
|
|
61
172
|
/** Text lines carried by model-facing content blocks. */
|
|
62
173
|
export declare function contentLines(content: unknown): string[];
|
|
174
|
+
/**
|
|
175
|
+
* The header fields a rebuilt card must keep.
|
|
176
|
+
*
|
|
177
|
+
* Replacing a card's rows says nothing about what the call was made with, what
|
|
178
|
+
* it measured, how it ended, or which calls it dispatched, so those fields
|
|
179
|
+
* travel with the rebuild: dropping the argument is how a shell card loses its
|
|
180
|
+
* command the moment a presenter declines the result.
|
|
181
|
+
*/
|
|
182
|
+
export declare function carriedFields(card: ToolCard): Pick<ToolCard, 'argument' | 'stats' | 'status' | 'subCalls' | 'subCallsTotal'>;
|
|
63
183
|
/**
|
|
64
184
|
* Collapse one call and its result into the single row the reader sees.
|
|
65
185
|
*
|
|
@@ -76,7 +196,7 @@ export declare function mergeCards(call: ToolCard | undefined, result: ToolCard
|
|
|
76
196
|
* a full diff would highlight without paying for a line-diff computation on
|
|
77
197
|
* every frame.
|
|
78
198
|
*/
|
|
79
|
-
export declare function renderFileDiff(diff: FileDiff):
|
|
199
|
+
export declare function renderFileDiff(diff: FileDiff): CardRow[];
|
|
80
200
|
/** Map a tool's pending-call intent to a card, falling back to the raw call name. */
|
|
81
201
|
export declare function cardOfCall(view: ToolCallView | undefined, fallbackName: string): ToolCard;
|
|
82
202
|
/** Map a tool's result intent to a card, falling back to the model-facing text. */
|
package/lib/cards.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cards.d.ts","sourceRoot":"","sources":["../src/cards.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,QAAQ,EAOR,YAAY,EACZ,cAAc,EAEf,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"cards.d.ts","sourceRoot":"","sources":["../src/cards.ts"],"names":[],"mappings":"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"}
|