@duetso/agent 0.1.140 → 0.1.142
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 +21 -0
- package/dist/package.json +1 -1
- package/dist/src/cli/inline-slash.d.ts +22 -0
- package/dist/src/cli/inline-slash.d.ts.map +1 -0
- package/dist/src/cli/inline-slash.js +48 -0
- package/dist/src/cli/inline-slash.js.map +1 -0
- package/dist/src/cli/run.d.ts.map +1 -1
- package/dist/src/cli/run.js +23 -0
- package/dist/src/cli/run.js.map +1 -1
- package/dist/src/core/serializer.d.ts +8 -0
- package/dist/src/core/serializer.d.ts.map +1 -1
- package/dist/src/core/serializer.js +16 -0
- package/dist/src/core/serializer.js.map +1 -1
- package/dist/src/session/session.d.ts +29 -0
- package/dist/src/session/session.d.ts.map +1 -1
- package/dist/src/session/session.js +41 -0
- package/dist/src/session/session.js.map +1 -1
- package/dist/src/session/thinking-level.d.ts +19 -0
- package/dist/src/session/thinking-level.d.ts.map +1 -0
- package/dist/src/session/thinking-level.js +32 -0
- package/dist/src/session/thinking-level.js.map +1 -0
- package/dist/src/tui/app.d.ts.map +1 -1
- package/dist/src/tui/app.js +17 -4
- package/dist/src/tui/app.js.map +1 -1
- package/dist/src/tui/autocomplete-controller.d.ts +7 -0
- package/dist/src/tui/autocomplete-controller.d.ts.map +1 -1
- package/dist/src/tui/autocomplete-controller.js +6 -0
- package/dist/src/tui/autocomplete-controller.js.map +1 -1
- package/dist/src/tui/boot-screen.d.ts.map +1 -1
- package/dist/src/tui/boot-screen.js +2 -10
- package/dist/src/tui/boot-screen.js.map +1 -1
- package/dist/src/tui/controllers.d.ts.map +1 -1
- package/dist/src/tui/controllers.js +24 -0
- package/dist/src/tui/controllers.js.map +1 -1
- package/dist/src/tui/dino/index.d.ts +3 -3
- package/dist/src/tui/dino/index.d.ts.map +1 -1
- package/dist/src/tui/dino/index.js +14 -25
- package/dist/src/tui/dino/index.js.map +1 -1
- package/dist/src/tui/dino/render.d.ts +4 -5
- package/dist/src/tui/dino/render.d.ts.map +1 -1
- package/dist/src/tui/dino/render.js +4 -7
- package/dist/src/tui/dino/render.js.map +1 -1
- package/dist/src/tui/dino/visibility.d.ts.map +1 -1
- package/dist/src/tui/dino/visibility.js +2 -1
- package/dist/src/tui/dino/visibility.js.map +1 -1
- package/dist/src/tui/layout.d.ts.map +1 -1
- package/dist/src/tui/layout.js +4 -1
- package/dist/src/tui/layout.js.map +1 -1
- package/dist/src/tui/slash-commands.d.ts +102 -8
- package/dist/src/tui/slash-commands.d.ts.map +1 -1
- package/dist/src/tui/slash-commands.js +155 -5
- package/dist/src/tui/slash-commands.js.map +1 -1
- package/dist/src/turn-runner/prompts.d.ts.map +1 -1
- package/dist/src/turn-runner/prompts.js +1 -0
- package/dist/src/turn-runner/prompts.js.map +1 -1
- package/dist/src/turn-runner/shell-state-handle.d.ts +8 -1
- package/dist/src/turn-runner/shell-state-handle.d.ts.map +1 -1
- package/dist/src/turn-runner/shell-state-handle.js +4 -1
- package/dist/src/turn-runner/shell-state-handle.js.map +1 -1
- package/dist/src/turn-runner/skill-context.d.ts +6 -0
- package/dist/src/turn-runner/skill-context.d.ts.map +1 -1
- package/dist/src/turn-runner/skill-context.js +12 -0
- package/dist/src/turn-runner/skill-context.js.map +1 -1
- package/dist/src/turn-runner/state-machine-controller.d.ts +8 -2
- package/dist/src/turn-runner/state-machine-controller.d.ts.map +1 -1
- package/dist/src/turn-runner/state-machine-controller.js +51 -20
- package/dist/src/turn-runner/state-machine-controller.js.map +1 -1
- package/dist/src/turn-runner/turn-runner.d.ts +15 -3
- package/dist/src/turn-runner/turn-runner.d.ts.map +1 -1
- package/dist/src/turn-runner/turn-runner.js +32 -19
- package/dist/src/turn-runner/turn-runner.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Skill } from "@earendil-works/pi-coding-agent";
|
|
1
2
|
import type { SkillAutocompleteItem } from "./autocomplete.js";
|
|
2
3
|
import type { CopyController } from "./copy-controller.js";
|
|
3
4
|
import type { PasteController } from "./paste-controller.js";
|
|
@@ -9,9 +10,18 @@ import type { TranscriptWriter } from "./transcript-writer.js";
|
|
|
9
10
|
* `submit()` can short-circuit before the message reaches `session.prompt()`.
|
|
10
11
|
*/
|
|
11
12
|
export interface SlashCommandContext {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Controllers are optional because not every consumer of this
|
|
15
|
+
* interface wires the full TUI. The non-TUI CLI applies inline
|
|
16
|
+
* `/model` and `/thinking` against a stripped-down context that
|
|
17
|
+
* has no clipboard, transcript, or reset surface — those commands
|
|
18
|
+
* are filtered out via `applyInlineSlashCommands`'s `onlyCommands`
|
|
19
|
+
* before they could ever run, so the handlers that depend on these
|
|
20
|
+
* controllers never see a missing one in practice.
|
|
21
|
+
*/
|
|
22
|
+
pasteController?: PasteController;
|
|
23
|
+
copyController?: CopyController;
|
|
24
|
+
transcriptWriter?: TranscriptWriter;
|
|
15
25
|
appendBlock(label: string | null, body: string, fg: string): void;
|
|
16
26
|
/**
|
|
17
27
|
* Invoked by `/reset` to ask the outer dispatcher to dispose the
|
|
@@ -19,13 +29,51 @@ export interface SlashCommandContext {
|
|
|
19
29
|
* tears its renderer down immediately after so the parent `while`
|
|
20
30
|
* loop in `cli/run.ts` wakes and performs the swap.
|
|
21
31
|
*/
|
|
22
|
-
onReset(): void;
|
|
32
|
+
onReset?(): void;
|
|
33
|
+
/**
|
|
34
|
+
* Invoked by `/model <name>` to swap the model used for subsequent
|
|
35
|
+
* turns. Returns the canonicalized name the session will use on the
|
|
36
|
+
* next prompt, or throws if validation fails (unknown shorthand /
|
|
37
|
+
* missing provider credentials). The change is queued: the current
|
|
38
|
+
* in-flight turn keeps the model it started with.
|
|
39
|
+
*/
|
|
40
|
+
setModel(model: string): {
|
|
41
|
+
modelName: string;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Invoked by `/thinking <level>` to swap the thinking level used for
|
|
45
|
+
* subsequent turns. Returns the normalized level, or throws if the
|
|
46
|
+
* value is not one of minimal / low / medium / high / xhigh. The
|
|
47
|
+
* change is queued: the current in-flight turn keeps the level it
|
|
48
|
+
* started with.
|
|
49
|
+
*/
|
|
50
|
+
setThinkingLevel(level: string): {
|
|
51
|
+
thinkingLevel: string;
|
|
52
|
+
};
|
|
23
53
|
}
|
|
24
54
|
/**
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
55
|
+
* Shape of inline matching for a command — i.e. the form the command
|
|
56
|
+
* takes when it appears anywhere in a longer prompt rather than as the
|
|
57
|
+
* whole submitted message.
|
|
58
|
+
*
|
|
59
|
+
* - `"none"`: bare invocation only (`/reset`). Matches `/name` with
|
|
60
|
+
* whitespace / start / end boundaries on both sides.
|
|
61
|
+
* - `"token"`: requires one whitespace-bounded argument (`/model X`).
|
|
62
|
+
* Matches `/name <token>` with whitespace / start before and consumes
|
|
63
|
+
* the next non-whitespace run as the argument.
|
|
64
|
+
*
|
|
65
|
+
* Commands that take rest-of-line arguments (`/feedback`, `/copy`,
|
|
66
|
+
* `/image`) intentionally have no inline shape — there is no
|
|
67
|
+
* unambiguous way to split "the argument" from "the rest of the
|
|
68
|
+
* prompt" mid-message, so they remain whole-message only.
|
|
69
|
+
*/
|
|
70
|
+
type InlineShape = "none" | "token";
|
|
71
|
+
/**
|
|
72
|
+
* One built-in slash command. The same record drives the whole-message
|
|
73
|
+
* dispatcher (`matches` + `handle`), the inline extractor (`inline`),
|
|
74
|
+
* and the autocomplete picker (`name` + `description`), so a command
|
|
75
|
+
* added here automatically shows up in `/` suggestions without a
|
|
76
|
+
* second registration step.
|
|
29
77
|
*/
|
|
30
78
|
interface BuiltInSlashCommand {
|
|
31
79
|
/** Bare command name, no leading slash. Picker renders this as `/name`. */
|
|
@@ -36,6 +84,14 @@ interface BuiltInSlashCommand {
|
|
|
36
84
|
matches(message: string): boolean;
|
|
37
85
|
/** Side-effecting handler. Errors are surfaced through `appendBlock`. */
|
|
38
86
|
handle(message: string, ctx: SlashCommandContext): void;
|
|
87
|
+
/**
|
|
88
|
+
* When set, the command also runs when it appears anywhere inside a
|
|
89
|
+
* longer prompt. The inline extractor reconstructs a synthetic
|
|
90
|
+
* whole-message form (`/name` or `/name <arg>`) and calls `handle`
|
|
91
|
+
* with it, so the inline path reuses the same logic the whole-message
|
|
92
|
+
* path already uses.
|
|
93
|
+
*/
|
|
94
|
+
inline?: InlineShape;
|
|
39
95
|
}
|
|
40
96
|
/**
|
|
41
97
|
* Single source of truth for TUI-intercepted slash commands. Order here is
|
|
@@ -49,6 +105,13 @@ export declare const BUILT_IN_SLASH_COMMANDS: readonly BuiltInSlashCommand[];
|
|
|
49
105
|
* cannot be wired into one surface without the other.
|
|
50
106
|
*/
|
|
51
107
|
export declare const BUILT_IN_SLASH_COMMAND_ITEMS: readonly SkillAutocompleteItem[];
|
|
108
|
+
/**
|
|
109
|
+
* Build the slash-picker catalog from a list of discovered skills. Built-in
|
|
110
|
+
* commands lead, discovered skills follow under the `skills` group. Shared
|
|
111
|
+
* between the initial boot seed and the per-open background reload so both
|
|
112
|
+
* surfaces stay in lockstep.
|
|
113
|
+
*/
|
|
114
|
+
export declare function buildSkillAutocompleteCatalog(skills: readonly Skill[]): readonly SkillAutocompleteItem[];
|
|
52
115
|
/**
|
|
53
116
|
* Routes the message to a local handler when it matches a built-in command.
|
|
54
117
|
* Returns true when handled (caller must not forward the message to the
|
|
@@ -56,5 +119,36 @@ export declare const BUILT_IN_SLASH_COMMAND_ITEMS: readonly SkillAutocompleteIte
|
|
|
56
119
|
* prompt path.
|
|
57
120
|
*/
|
|
58
121
|
export declare function tryDispatchSlashCommand(message: string, ctx: SlashCommandContext): boolean;
|
|
122
|
+
/**
|
|
123
|
+
* Result of `applyInlineSlashCommands`: which commands fired, plus the
|
|
124
|
+
* leftover prompt after stripping every matched slash form. The residue
|
|
125
|
+
* is what the caller should dispatch to the agent; if `.trim()` on it
|
|
126
|
+
* is empty, the whole prompt was just slash commands and no agent turn
|
|
127
|
+
* needs to run.
|
|
128
|
+
*/
|
|
129
|
+
export interface InlineSlashResult {
|
|
130
|
+
/** Commands whose handler fired, in BUILT_IN_SLASH_COMMANDS order. */
|
|
131
|
+
handledCommands: string[];
|
|
132
|
+
/** Prompt with matched slash forms removed and whitespace collapsed. */
|
|
133
|
+
residue: string;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Apply every inline-eligible slash command found inside a longer
|
|
137
|
+
* prompt: fire its handler (so users see the same `[model]` confirmation
|
|
138
|
+
* block they would for a whole-message `/model`), and strip the slash
|
|
139
|
+
* form out of the message so the agent does not have to re-parse local
|
|
140
|
+
* UI commands as user content. The returned `residue` is the message
|
|
141
|
+
* the caller should actually dispatch — callers check `.trim() === ""`
|
|
142
|
+
* to detect the "whole prompt was just slash commands" case and skip
|
|
143
|
+
* the agent turn entirely.
|
|
144
|
+
*
|
|
145
|
+
* Boundary characters are preserved on the inside of the strip so that
|
|
146
|
+
* adjacent words do not fuse: `"hey /model X please"` becomes
|
|
147
|
+
* `"hey please"` mid-strip and then collapses to `"hey please"` at the
|
|
148
|
+
* end. Multi-line prompts keep their newlines.
|
|
149
|
+
*/
|
|
150
|
+
export declare function applyInlineSlashCommands(message: string, ctx: SlashCommandContext, options?: {
|
|
151
|
+
onlyCommands?: ReadonlySet<string>;
|
|
152
|
+
}): InlineSlashResult;
|
|
59
153
|
export {};
|
|
60
154
|
//# sourceMappingURL=slash-commands.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slash-commands.d.ts","sourceRoot":"","sources":["../../../src/tui/slash-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI/D;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"slash-commands.d.ts","sourceRoot":"","sources":["../../../src/tui/slash-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI/D;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClE;;;;;OAKG;IACH,OAAO,CAAC,IAAI,IAAI,CAAC;IACjB;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C;;;;;;OAMG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5D;AAED;;;;;;;;;;;;;;;GAeG;AACH,KAAK,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;AAEpC;;;;;;GAMG;AACH,UAAU,mBAAmB;IAC3B,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,WAAW,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,yEAAyE;IACzE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACxD;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAYD;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,mBAAmB,EA8EjE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAE,SAAS,qBAAqB,EAKpE,CAAC;AAEN;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,SAAS,KAAK,EAAE,GACvB,SAAS,qBAAqB,EAAE,CAUlC;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAQ1F;AA6BD;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,sEAAsE;IACtE,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,mBAAmB,EACxB,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CAAO,GACnD,iBAAiB,CA+BnB"}
|
|
@@ -27,24 +27,26 @@ export const BUILT_IN_SLASH_COMMANDS = [
|
|
|
27
27
|
description: "Probe the OS clipboard for an image (fallback when Cmd+V is swallowed)",
|
|
28
28
|
matches: (message) => isBare(message, "paste"),
|
|
29
29
|
handle: (_, ctx) => {
|
|
30
|
-
void ctx.pasteController
|
|
30
|
+
void ctx.pasteController?.triggerClipboardProbe("slash");
|
|
31
31
|
},
|
|
32
|
+
inline: "none",
|
|
32
33
|
},
|
|
33
34
|
{
|
|
34
35
|
name: "clear-images",
|
|
35
36
|
description: "Drop pending image attachments before submit",
|
|
36
37
|
matches: (message) => isBare(message, "clear-images"),
|
|
37
38
|
handle: (_, ctx) => {
|
|
38
|
-
ctx.pasteController
|
|
39
|
+
ctx.pasteController?.clearPendingImages();
|
|
39
40
|
ctx.appendBlock("[paste]", "cleared pending image attachments", COLORS.system);
|
|
40
41
|
},
|
|
42
|
+
inline: "none",
|
|
41
43
|
},
|
|
42
44
|
{
|
|
43
45
|
name: "copy",
|
|
44
46
|
description: "Copy text to your clipboard: /copy [last|all|<N>] (default: last agent reply)",
|
|
45
47
|
matches: (message) => isInvocation(message, "copy"),
|
|
46
48
|
handle: (message, ctx) => {
|
|
47
|
-
void ctx.copyController
|
|
49
|
+
void ctx.copyController?.handleCopySlashCommand(message);
|
|
48
50
|
},
|
|
49
51
|
},
|
|
50
52
|
{
|
|
@@ -52,6 +54,7 @@ export const BUILT_IN_SLASH_COMMANDS = [
|
|
|
52
54
|
description: "Toggle diagnostic logging (keys, selection events) for surfacing terminal-specific issues",
|
|
53
55
|
matches: (message) => isInvocation(message, "diag"),
|
|
54
56
|
handle: handleDiagSlashCommand,
|
|
57
|
+
inline: "none",
|
|
55
58
|
},
|
|
56
59
|
{
|
|
57
60
|
name: "feedback",
|
|
@@ -67,8 +70,23 @@ export const BUILT_IN_SLASH_COMMANDS = [
|
|
|
67
70
|
matches: (message) => isBare(message, "reset"),
|
|
68
71
|
handle: (_, ctx) => {
|
|
69
72
|
ctx.appendBlock("[reset]", "starting a new session…", COLORS.system);
|
|
70
|
-
ctx.onReset();
|
|
73
|
+
ctx.onReset?.();
|
|
71
74
|
},
|
|
75
|
+
inline: "none",
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
name: "model",
|
|
79
|
+
description: "Switch the model for the next turn (does not affect the current turn): /model <name>",
|
|
80
|
+
matches: (message) => isInvocation(message, "model"),
|
|
81
|
+
handle: handleModelSlashCommand,
|
|
82
|
+
inline: "token",
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
name: "thinking",
|
|
86
|
+
description: "Switch the thinking level for the next turn (minimal|low|medium|high|xhigh): /thinking <level>",
|
|
87
|
+
matches: (message) => isInvocation(message, "thinking"),
|
|
88
|
+
handle: handleThinkingSlashCommand,
|
|
89
|
+
inline: "token",
|
|
72
90
|
},
|
|
73
91
|
];
|
|
74
92
|
/**
|
|
@@ -81,6 +99,23 @@ export const BUILT_IN_SLASH_COMMAND_ITEMS = BUILT_IN_SLASH_COMMANDS.map((command
|
|
|
81
99
|
description: command.description,
|
|
82
100
|
group: "commands",
|
|
83
101
|
}));
|
|
102
|
+
/**
|
|
103
|
+
* Build the slash-picker catalog from a list of discovered skills. Built-in
|
|
104
|
+
* commands lead, discovered skills follow under the `skills` group. Shared
|
|
105
|
+
* between the initial boot seed and the per-open background reload so both
|
|
106
|
+
* surfaces stay in lockstep.
|
|
107
|
+
*/
|
|
108
|
+
export function buildSkillAutocompleteCatalog(skills) {
|
|
109
|
+
return [
|
|
110
|
+
...BUILT_IN_SLASH_COMMAND_ITEMS,
|
|
111
|
+
...skills.map((skill) => ({
|
|
112
|
+
name: skill.name,
|
|
113
|
+
description: skill.description,
|
|
114
|
+
path: skill.baseDir,
|
|
115
|
+
group: "skills",
|
|
116
|
+
})),
|
|
117
|
+
];
|
|
118
|
+
}
|
|
84
119
|
/**
|
|
85
120
|
* Routes the message to a local handler when it matches a built-in command.
|
|
86
121
|
* Returns true when handled (caller must not forward the message to the
|
|
@@ -96,6 +131,76 @@ export function tryDispatchSlashCommand(message, ctx) {
|
|
|
96
131
|
}
|
|
97
132
|
return false;
|
|
98
133
|
}
|
|
134
|
+
/** Escape a literal command name for safe inclusion in a RegExp pattern. */
|
|
135
|
+
function escapeRegex(source) {
|
|
136
|
+
return source.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Build the global RegExp that matches one inline slash command.
|
|
140
|
+
* Boundary `(^|\s)` keeps `/model` from matching mid-word (e.g. inside
|
|
141
|
+
* a URL `https://example.com/model`) and is captured so the strip step
|
|
142
|
+
* can put the boundary character back — otherwise adjacent words would
|
|
143
|
+
* fuse. For the token shape, group 2 captures the argument and bounds
|
|
144
|
+
* the right edge; the bare shape uses a `\s|$` lookahead for the same
|
|
145
|
+
* reason.
|
|
146
|
+
*/
|
|
147
|
+
function inlinePattern(name, shape) {
|
|
148
|
+
const namePattern = escapeRegex(name);
|
|
149
|
+
// Capture group 1 = boundary character (empty at start-of-string, else
|
|
150
|
+
// the one whitespace char before the slash). The replace callback
|
|
151
|
+
// returns it as-is so adjacent words do not fuse after stripping.
|
|
152
|
+
// Token shape additionally captures the next non-whitespace run as
|
|
153
|
+
// the argument; bare shape uses a lookahead for the right edge so
|
|
154
|
+
// neighboring text is not consumed.
|
|
155
|
+
return shape === "token"
|
|
156
|
+
? new RegExp(`(^|\\s)\\/${namePattern}[ \\t]+(\\S+)`, "g")
|
|
157
|
+
: new RegExp(`(^|\\s)\\/${namePattern}(?=\\s|$)`, "g");
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Apply every inline-eligible slash command found inside a longer
|
|
161
|
+
* prompt: fire its handler (so users see the same `[model]` confirmation
|
|
162
|
+
* block they would for a whole-message `/model`), and strip the slash
|
|
163
|
+
* form out of the message so the agent does not have to re-parse local
|
|
164
|
+
* UI commands as user content. The returned `residue` is the message
|
|
165
|
+
* the caller should actually dispatch — callers check `.trim() === ""`
|
|
166
|
+
* to detect the "whole prompt was just slash commands" case and skip
|
|
167
|
+
* the agent turn entirely.
|
|
168
|
+
*
|
|
169
|
+
* Boundary characters are preserved on the inside of the strip so that
|
|
170
|
+
* adjacent words do not fuse: `"hey /model X please"` becomes
|
|
171
|
+
* `"hey please"` mid-strip and then collapses to `"hey please"` at the
|
|
172
|
+
* end. Multi-line prompts keep their newlines.
|
|
173
|
+
*/
|
|
174
|
+
export function applyInlineSlashCommands(message, ctx, options = {}) {
|
|
175
|
+
const handledCommands = [];
|
|
176
|
+
let residue = message;
|
|
177
|
+
for (const command of BUILT_IN_SLASH_COMMANDS) {
|
|
178
|
+
if (!command.inline)
|
|
179
|
+
continue;
|
|
180
|
+
if (options.onlyCommands && !options.onlyCommands.has(command.name))
|
|
181
|
+
continue;
|
|
182
|
+
residue = residue.replace(inlinePattern(command.name, command.inline), (_match, lead, arg) => {
|
|
183
|
+
const synthetic = command.inline === "token" && arg ? `/${command.name} ${arg}` : `/${command.name}`;
|
|
184
|
+
command.handle(synthetic, ctx);
|
|
185
|
+
handledCommands.push(command.name);
|
|
186
|
+
// Preserve the boundary character (space, tab, newline, or empty
|
|
187
|
+
// for start-of-string) so words on either side of the stripped
|
|
188
|
+
// command stay separated.
|
|
189
|
+
return lead;
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
if (handledCommands.length > 0) {
|
|
193
|
+
// Collapse the holes left by stripped commands. Only flatten runs
|
|
194
|
+
// of spaces/tabs so multi-line prompts keep their newlines, and
|
|
195
|
+
// trim the outer edges to avoid leading/trailing whitespace from a
|
|
196
|
+
// command that sat at the very start or end of the message.
|
|
197
|
+
residue = residue
|
|
198
|
+
.replace(/[ \t]+/g, " ")
|
|
199
|
+
.replace(/ ?\n ?/g, "\n")
|
|
200
|
+
.trim();
|
|
201
|
+
}
|
|
202
|
+
return { handledCommands, residue };
|
|
203
|
+
}
|
|
99
204
|
/**
|
|
100
205
|
* `/diag` toggles a key + selection event log so users can show us exactly
|
|
101
206
|
* what their terminal forwards when something silently fails (a keystroke
|
|
@@ -106,6 +211,11 @@ export function tryDispatchSlashCommand(message, ctx) {
|
|
|
106
211
|
function handleDiagSlashCommand(raw, ctx) {
|
|
107
212
|
const argument = raw === "/diag" ? "" : raw.slice("/diag ".length).trim();
|
|
108
213
|
if (argument === "" || argument === "keys") {
|
|
214
|
+
// `transcriptWriter` is only optional for the non-TUI CLI shim,
|
|
215
|
+
// which filters /diag out before it can run — in the TUI (the only
|
|
216
|
+
// surface that exposes /diag) it is always wired.
|
|
217
|
+
if (!ctx.transcriptWriter)
|
|
218
|
+
return;
|
|
109
219
|
const enabled = !ctx.transcriptWriter.isKeyDiagnosticsEnabled();
|
|
110
220
|
ctx.transcriptWriter.setKeyDiagnosticsEnabled(enabled);
|
|
111
221
|
ctx.appendBlock("[diag]", enabled
|
|
@@ -130,12 +240,52 @@ async function handleFeedbackSlashCommand(raw, ctx) {
|
|
|
130
240
|
ctx.appendBlock("[feedback]", error instanceof Error ? error.message : String(error), COLORS.error);
|
|
131
241
|
}
|
|
132
242
|
}
|
|
243
|
+
/**
|
|
244
|
+
* `/thinking <level>` validates the requested level against the pi-ai
|
|
245
|
+
* `ThinkingLevel` set, then mutates session config so the next prompt
|
|
246
|
+
* picks it up. Like `/model`, the swap is queued for the next turn and
|
|
247
|
+
* does not interrupt the in-flight one.
|
|
248
|
+
*/
|
|
249
|
+
function handleThinkingSlashCommand(raw, ctx) {
|
|
250
|
+
const argument = raw === "/thinking" ? "" : raw.slice("/thinking ".length).trim();
|
|
251
|
+
if (!argument) {
|
|
252
|
+
ctx.appendBlock("[thinking]", "Usage: /thinking <level> — one of minimal, low, medium, high, xhigh", COLORS.system);
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
try {
|
|
256
|
+
const { thinkingLevel } = ctx.setThinkingLevel(argument);
|
|
257
|
+
ctx.appendBlock("[thinking]", `next turn will think at ${thinkingLevel}. The current turn (if any) keeps its level.`, COLORS.system);
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
ctx.appendBlock("[thinking]", error instanceof Error ? error.message : String(error), COLORS.error);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* `/model <name>` validates the requested model against the same resolver
|
|
265
|
+
* the CLI uses at boot, then mutates session config so the next prompt
|
|
266
|
+
* picks it up. The handler intentionally does not interrupt or restart
|
|
267
|
+
* an in-flight turn; the swap applies starting at the next user turn.
|
|
268
|
+
*/
|
|
269
|
+
function handleModelSlashCommand(raw, ctx) {
|
|
270
|
+
const argument = raw === "/model" ? "" : raw.slice("/model ".length).trim();
|
|
271
|
+
if (!argument) {
|
|
272
|
+
ctx.appendBlock("[model]", "Usage: /model <name> — switch the model for the next turn (e.g. /model sonnet-4.6)", COLORS.system);
|
|
273
|
+
return;
|
|
274
|
+
}
|
|
275
|
+
try {
|
|
276
|
+
const { modelName } = ctx.setModel(argument);
|
|
277
|
+
ctx.appendBlock("[model]", `next turn will use ${modelName}. The current turn (if any) keeps its model.`, COLORS.system);
|
|
278
|
+
}
|
|
279
|
+
catch (error) {
|
|
280
|
+
ctx.appendBlock("[model]", error instanceof Error ? error.message : String(error), COLORS.error);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
133
283
|
async function handleImageSlashCommand(raw, ctx) {
|
|
134
284
|
const rest = raw.slice("/image".length).trim();
|
|
135
285
|
if (!rest) {
|
|
136
286
|
ctx.appendBlock("[paste]", "Usage: /image <path> — attach a PNG/JPEG/GIF/WebP from disk", COLORS.system);
|
|
137
287
|
return;
|
|
138
288
|
}
|
|
139
|
-
await ctx.pasteController
|
|
289
|
+
await ctx.pasteController?.attachImageFromPath(rest);
|
|
140
290
|
}
|
|
141
291
|
//# sourceMappingURL=slash-commands.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slash-commands.js","sourceRoot":"","sources":["../../../src/tui/slash-commands.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"slash-commands.js","sourceRoot":"","sources":["../../../src/tui/slash-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/turn-runner/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAG7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAkChE,wBAAgB,oCAAoC,CAAC,KAAK,EAAE;IAC1D,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IACzB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACnC,GAAG,MAAM,CAYT;AAED,wBAAgB,mCAAmC,CAAC,KAAK,EAAE;IACzD,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/turn-runner/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAG7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAkChE,wBAAgB,oCAAoC,CAAC,KAAK,EAAE;IAC1D,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IACzB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACnC,GAAG,MAAM,CAYT;AAED,wBAAgB,mCAAmC,CAAC,KAAK,EAAE;IACzD,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB,GAAG,MAAM,CA8CT"}
|
|
@@ -74,6 +74,7 @@ export function createStateMachineSystemPromptLayer(input) {
|
|
|
74
74
|
"State prompts and script commands may use template strings like {{ input.email }}. Add inputSchema to states that need template input, and pass matching input when selecting that state.",
|
|
75
75
|
"Each agent state runs in a fresh sub-agent context. It does not see the prior sub-agent's transcript, tool output, or output value — only the rendered prompt and the input you pass when selecting it. So when a previous state discovered concrete facts the next state will need (file paths, IDs, error messages, decisions, summaries, root causes), you must carry them forward yourself: pass them as `input` when the next state has an inputSchema with matching fields, or use `override.prompt` to inline the findings into that state's prompt before selecting it. Vague references like \"using the findings from the previous step\" in a static prompt will not work — the sub-agent has no way to read those findings. Treat every transition as a chance to update the next state's prompt or input with whatever the orchestrator now knows that the sub-agent will need.",
|
|
76
76
|
'Poll states run recurring script checks and must set intervalMs. Timer states are separate: use kind "timer" with wakeAt to pause until one absolute Unix epoch millisecond timestamp. Poll states fail the state machine when timeoutMs is exceeded.',
|
|
77
|
+
'Wait-then-do promises must be backed by a sleeping primitive. If your reply to the user commits to anything shaped like "I\'ll wait N minutes/hours and then X", "give it a moment then check Y", "after CI finishes I\'ll triage Z", or "I\'ll keep an eye on Q", the wait itself must live in a timer state (single future wake) or a poll state (recurring check) on a state machine, with a follow-up agent or script state that does the X/Y/Z work when the wait completes. A pure-agent state machine is not actually waiting — agent states run immediately, so the wait would be skipped. Never make a wait-then-act promise as a bare reply or as a pure-agent state machine: set up the timer/poll mechanism before the turn ends, or do not make the promise.',
|
|
77
78
|
"Poll intervalMs must be at least 15 minutes and timer wakeAt must be at least 15 minutes in the future. If the work needs anything shorter-term, run it directly in your turn instead of through a state machine — orchestration overhead is not worth it for sub-15-minute waits.",
|
|
78
79
|
'Every state-machine definition must include at least one terminal state with status "completed" for the happy-path exit. The runner auto-injects "failed" and "cancelled" terminal states when missing, so you always have escape hatches without writing boilerplate terminals.',
|
|
79
80
|
"Use allowedSkills on agent states only when that sub-agent should receive a restricted skill set.",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/turn-runner/prompts.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/turn-runner/prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,8 +10,15 @@ export declare class ShellCommandError extends Error {
|
|
|
10
10
|
}
|
|
11
11
|
export interface ShellStateHandle {
|
|
12
12
|
run(): Promise<ShellCommandOutput>;
|
|
13
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Abort the running command and remember why. After `run()` rejects,
|
|
15
|
+
* callers consult `interruptedReason()` to tell our intentional
|
|
16
|
+
* cancellation apart from other shell errors.
|
|
17
|
+
*/
|
|
18
|
+
interrupt(reason: string): void;
|
|
14
19
|
partialOutput(): ShellPartialOutput | undefined;
|
|
20
|
+
/** The reason passed to `interrupt()`, or undefined if not interrupted. */
|
|
21
|
+
interruptedReason(): string | undefined;
|
|
15
22
|
}
|
|
16
23
|
export declare function createShellStateHandle(input: {
|
|
17
24
|
command: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-state-handle.d.ts","sourceRoot":"","sources":["../../../src/turn-runner/shell-state-handle.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,kBAAkB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AACtF,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,EAAE,QAAQ,GAAG,QAAQ,CAAC,CAAC;AAE/E,qBAAa,iBAAkB,SAAQ,KAAK;IAGxC,QAAQ,CAAC,MAAM,EAAE,kBAAkB;gBADnC,OAAO,EAAE,MAAM,EACN,MAAM,EAAE,kBAAkB;CAKtC;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACnC,SAAS,
|
|
1
|
+
{"version":3,"file":"shell-state-handle.d.ts","sourceRoot":"","sources":["../../../src/turn-runner/shell-state-handle.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,kBAAkB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AACtF,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,EAAE,QAAQ,GAAG,QAAQ,CAAC,CAAC;AAE/E,qBAAa,iBAAkB,SAAQ,KAAK;IAGxC,QAAQ,CAAC,MAAM,EAAE,kBAAkB;gBADnC,OAAO,EAAE,MAAM,EACN,MAAM,EAAE,kBAAkB;CAKtC;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACnC;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,aAAa,IAAI,kBAAkB,GAAG,SAAS,CAAC;IAChD,2EAA2E;IAC3E,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAAC;CACzC;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,GAAG,gBAAgB,CAuBnB;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IACP,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,WAAW,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;CACjD,GACA,OAAO,CAAC,kBAAkB,CAAC,CAyE7B;AAeD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAW7E;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAWrE;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAQvF"}
|
|
@@ -12,6 +12,7 @@ export class ShellCommandError extends Error {
|
|
|
12
12
|
export function createShellStateHandle(input) {
|
|
13
13
|
const abortController = new AbortController();
|
|
14
14
|
let partial;
|
|
15
|
+
let interruptedReason;
|
|
15
16
|
return {
|
|
16
17
|
run: () => runShellCommand(input.command, {
|
|
17
18
|
cwd: input.cwd,
|
|
@@ -22,10 +23,12 @@ export function createShellStateHandle(input) {
|
|
|
22
23
|
partial = output;
|
|
23
24
|
},
|
|
24
25
|
}),
|
|
25
|
-
interrupt: () => {
|
|
26
|
+
interrupt: (reason) => {
|
|
27
|
+
interruptedReason = reason;
|
|
26
28
|
abortController.abort();
|
|
27
29
|
},
|
|
28
30
|
partialOutput: () => partial,
|
|
31
|
+
interruptedReason: () => interruptedReason,
|
|
29
32
|
};
|
|
30
33
|
}
|
|
31
34
|
export async function runShellCommand(command, options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-state-handle.js","sourceRoot":"","sources":["../../../src/turn-runner/shell-state-handle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,MAAM,4BAA4B,GAAG,yCAAyC,CAAC;AAC/E,MAAM,oCAAoC,GAAG,0CAA0C,CAAC;AAKxF,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAG/B;IAFX,YACE,OAAe,EACN,MAA0B;QAEnC,KAAK,CAAC,OAAO,CAAC,CAAC;QAFN,WAAM,GAAN,MAAM,CAAoB;QAGnC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"shell-state-handle.js","sourceRoot":"","sources":["../../../src/turn-runner/shell-state-handle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,MAAM,4BAA4B,GAAG,yCAAyC,CAAC;AAC/E,MAAM,oCAAoC,GAAG,0CAA0C,CAAC;AAKxF,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAG/B;IAFX,YACE,OAAe,EACN,MAA0B;QAEnC,KAAK,CAAC,OAAO,CAAC,CAAC;QAFN,WAAM,GAAN,MAAM,CAAoB;QAGnC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAeD,MAAM,UAAU,sBAAsB,CAAC,KAKtC;IACC,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;IAC9C,IAAI,OAAuC,CAAC;IAC5C,IAAI,iBAAqC,CAAC;IAE1C,OAAO;QACL,GAAG,EAAE,GAAG,EAAE,CACR,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE;YAC7B,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,MAAM,EAAE,eAAe,CAAC,MAAM;YAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;gBACnB,OAAO,GAAG,MAAM,CAAC;YACnB,CAAC;SACF,CAAC;QACJ,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE;YACpB,iBAAiB,GAAG,MAAM,CAAC;YAC3B,eAAe,CAAC,KAAK,EAAE,CAAC;QAC1B,CAAC;QACD,aAAa,EAAE,GAAG,EAAE,CAAC,OAAO;QAC5B,iBAAiB,EAAE,GAAG,EAAE,CAAC,iBAAiB;KAC3C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAe,EACf,OAMC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC;IACjD,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,OAAO,MAAM,IAAI,OAAO,CAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;YAC1C,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;YACjC,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,CAAC,QAAgB,EAAsB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxF,MAAM,UAAU,GAAG,GAAG,EAAE;YACtB,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACzC,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,OAAO;gBAAE,YAAY,CAAC,OAAO,CAAC,CAAC;YACnC,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACrD,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,GAAG,EAAE;YACjB,OAAO,GAAG,IAAI,CAAC;YACf,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC,CAAC;QACF,MAAM,OAAO,GACX,OAAO,CAAC,SAAS,KAAK,SAAS;YAC7B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE;gBACd,QAAQ,GAAG,IAAI,CAAC;gBAChB,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7B,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAE5B,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;YAAE,KAAK,EAAE,CAAC;QAEpC,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YACjC,MAAM,IAAI,KAAK,CAAC;YAChB,UAAU,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YACjC,MAAM,IAAI,KAAK,CAAC;YAChB,UAAU,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1B,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YACjC,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,EAAE,CAAC;YACV,MAAM,QAAQ,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACpE,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;YAClC,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,CAAC,IAAI,iBAAiB,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAC5D,OAAO;YACT,CAAC;YACD,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,iBAAiB,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAC9D,OAAO;YACT,CAAC;YACD,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACpC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAClB,OAAO;YACT,CAAC;YACD,MAAM,CAAC,IAAI,iBAAiB,CAAC,4BAA4B,QAAQ,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CAAC,GAAuB;IAC9C,IAAI,CAAC,GAAG;QAAE,OAAO;IACjB,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnC,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;YAClD,CAAC,CAAE,MAAkC;YACrC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnC,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAC5E,CAAC,CAAE,MAAkC;YACrC,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAgB,EAAE,KAA8B;IAC7E,OAAO,QAAQ,CAAC,OAAO,CAAC,4BAA4B,EAAE,CAAC,WAAW,EAAE,EAAE;QACpE,MAAM,IAAI,GAAG,oCAAoC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACpC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,EAAE,CAAC;QACrD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,CAAC,KAA8B,EAAE,IAAY;IAC5D,IAAI,KAAK,GAAY,KAAK,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QAC1D,KAAK,GAAI,KAAiC,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -10,6 +10,12 @@ export declare class SkillContext {
|
|
|
10
10
|
private loaded;
|
|
11
11
|
constructor(config: TurnRunnerConfig);
|
|
12
12
|
ensureLoaded(): Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* Re-run skill discovery so newly installed skills show up without
|
|
15
|
+
* restarting the session. The initial explicit skill list from
|
|
16
|
+
* `config.skills` is preserved; on-disk discovery is re-read.
|
|
17
|
+
*/
|
|
18
|
+
reload(): Promise<void>;
|
|
13
19
|
getSkills(): readonly Skill[];
|
|
14
20
|
getSkillCollisions(): readonly SkillCollision[];
|
|
15
21
|
getSkillInstructions(skillId: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-context.d.ts","sourceRoot":"","sources":["../../../src/turn-runner/skill-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAI7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAExE,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,aAAa,CAAC;AAErB,qBAAa,YAAY;IAKX,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJnC,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,MAAM,CAAS;gBAEM,MAAM,EAAE,gBAAgB;IAI/C,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAYnC,SAAS,IAAI,SAAS,KAAK,EAAE;IAI7B,kBAAkB,IAAI,SAAS,cAAc,EAAE;IAI/C,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAK7C,uBAAuB,CAAC,KAAK,EAAE,sBAAsB,GAAG,KAAK,EAAE,GAAG,SAAS;IAY3E,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IA2B/C,oCAAoC,CAAC,KAAK,CAAC,EAAE;QAC3C,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;QACnC,MAAM,CAAC,EAAE,SAAS,KAAK,EAAE,CAAC;KAC3B,GAAG,MAAM;IASV,qEAAqE;IACrE,qBAAqB,IAAI,aAAa,EAAE;IAkBxC,OAAO,CAAC,0BAA0B;CAcnC"}
|
|
1
|
+
{"version":3,"file":"skill-context.d.ts","sourceRoot":"","sources":["../../../src/turn-runner/skill-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAI7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAExE,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,aAAa,CAAC;AAErB,qBAAa,YAAY;IAKX,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJnC,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,MAAM,CAAS;gBAEM,MAAM,EAAE,gBAAgB;IAI/C,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAYnC;;;;OAIG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAW7B,SAAS,IAAI,SAAS,KAAK,EAAE;IAI7B,kBAAkB,IAAI,SAAS,cAAc,EAAE;IAI/C,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAK7C,uBAAuB,CAAC,KAAK,EAAE,sBAAsB,GAAG,KAAK,EAAE,GAAG,SAAS;IAY3E,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IA2B/C,oCAAoC,CAAC,KAAK,CAAC,EAAE;QAC3C,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;QACnC,MAAM,CAAC,EAAE,SAAS,KAAK,EAAE,CAAC;KAC3B,GAAG,MAAM;IASV,qEAAqE;IACrE,qBAAqB,IAAI,aAAa,EAAE;IAkBxC,OAAO,CAAC,0BAA0B;CAcnC"}
|
|
@@ -20,6 +20,18 @@ export class SkillContext {
|
|
|
20
20
|
this.skills = mergeSkillsByName(this.skills, discovered.skills);
|
|
21
21
|
this.collisions = discovered.collisions;
|
|
22
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Re-run skill discovery so newly installed skills show up without
|
|
25
|
+
* restarting the session. The initial explicit skill list from
|
|
26
|
+
* `config.skills` is preserved; on-disk discovery is re-read.
|
|
27
|
+
*/
|
|
28
|
+
async reload() {
|
|
29
|
+
const baseline = this.config.skills ? prepareExplicitSkills(this.config.skills) : [];
|
|
30
|
+
const discovered = loadDiscoveredSkills(this.config.skillDiscovery, this.config.cwd ?? process.cwd());
|
|
31
|
+
this.skills = mergeSkillsByName(baseline, discovered.skills);
|
|
32
|
+
this.collisions = discovered.collisions;
|
|
33
|
+
this.loaded = true;
|
|
34
|
+
}
|
|
23
35
|
getSkills() {
|
|
24
36
|
return [...this.skills];
|
|
25
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-context.js","sourceRoot":"","sources":["../../../src/turn-runner/skill-context.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skill-context.js","sourceRoot":"","sources":["../../../src/turn-runner/skill-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,10 +35,16 @@ export type StateAgentResult = {
|
|
|
35
35
|
export interface StateAgentHandle {
|
|
36
36
|
/** Starts the state agent from a fresh transcript owned by the host. */
|
|
37
37
|
prompt(): Promise<StateAgentResult>;
|
|
38
|
-
/**
|
|
39
|
-
|
|
38
|
+
/**
|
|
39
|
+
* Abort the state agent and remember why. The handle is responsible for
|
|
40
|
+
* making `prompt()` settle as `{ type: "interrupted" }` after this is
|
|
41
|
+
* called — callers do not classify the abort themselves.
|
|
42
|
+
*/
|
|
43
|
+
interrupt(reason: string): void;
|
|
40
44
|
/** Text-only partial output used for interruption history without persisting messages. */
|
|
41
45
|
partialAssistantText(): string | undefined;
|
|
46
|
+
/** The reason passed to `interrupt()`, or undefined if not interrupted. */
|
|
47
|
+
interruptedReason(): string | undefined;
|
|
42
48
|
}
|
|
43
49
|
export type ActiveStateOutput = {
|
|
44
50
|
state?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-machine-controller.d.ts","sourceRoot":"","sources":["../../../src/turn-runner/state-machine-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EAGtB,mBAAmB,EAGpB,MAAM,2BAA2B,CAAC;AAgBnC,OAAO,EAOL,KAAK,kBAAkB,EAExB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAsB,KAAK,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAEjF,MAAM,MAAM,2BAA2B,GACnC;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAChE;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,wBAAwB,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACvF;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,SAAS,EAAE,YAAY,EAAE,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC;AAE5B,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,SAAS,EAAE,YAAY,EAAE,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC;AAE5B,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,MAAM,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACpC
|
|
1
|
+
{"version":3,"file":"state-machine-controller.d.ts","sourceRoot":"","sources":["../../../src/turn-runner/state-machine-controller.ts"],"names":[],"mappings":"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"}
|