@duetso/agent 0.2.2 → 0.2.3
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 +19 -11
- package/dist/package.json +4 -4
- package/dist/src/cli/config.d.ts +10 -0
- package/dist/src/cli/config.d.ts.map +1 -0
- package/dist/src/cli/config.js +24 -0
- package/dist/src/cli/config.js.map +1 -0
- package/dist/src/cli/help.d.ts.map +1 -1
- package/dist/src/cli/help.js +11 -9
- package/dist/src/cli/help.js.map +1 -1
- package/dist/src/cli/inline-slash.d.ts +2 -1
- package/dist/src/cli/inline-slash.d.ts.map +1 -1
- package/dist/src/cli/inline-slash.js +14 -5
- package/dist/src/cli/inline-slash.js.map +1 -1
- package/dist/src/cli/memory-query.d.ts +1 -1
- package/dist/src/cli/model.d.ts +1 -1
- package/dist/src/cli/model.d.ts.map +1 -1
- package/dist/src/cli/model.js +1 -1
- package/dist/src/cli/model.js.map +1 -1
- package/dist/src/cli/route.d.ts +84 -0
- package/dist/src/cli/route.d.ts.map +1 -0
- package/dist/src/cli/route.js +261 -0
- package/dist/src/cli/route.js.map +1 -0
- package/dist/src/cli/rpc.d.ts +43 -2
- package/dist/src/cli/rpc.d.ts.map +1 -1
- package/dist/src/cli/rpc.js +176 -23
- package/dist/src/cli/rpc.js.map +1 -1
- package/dist/src/cli/run.d.ts +8 -1
- package/dist/src/cli/run.d.ts.map +1 -1
- package/dist/src/cli/run.js +24 -7
- package/dist/src/cli/run.js.map +1 -1
- package/dist/src/cli/shared.d.ts +4 -3
- package/dist/src/cli/shared.d.ts.map +1 -1
- package/dist/src/cli/shared.js +3 -4
- package/dist/src/cli/shared.js.map +1 -1
- package/dist/src/cli/shutdown.d.ts +4 -2
- package/dist/src/cli/shutdown.d.ts.map +1 -1
- package/dist/src/cli/shutdown.js +4 -2
- package/dist/src/cli/shutdown.js.map +1 -1
- package/dist/src/cli.d.ts +2 -0
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +12 -0
- package/dist/src/cli.js.map +1 -1
- package/dist/src/core/structured-output.d.ts +2 -0
- package/dist/src/core/structured-output.d.ts.map +1 -1
- package/dist/src/core/structured-output.js +1 -0
- package/dist/src/core/structured-output.js.map +1 -1
- package/dist/src/lib/system-reminder.d.ts +14 -0
- package/dist/src/lib/system-reminder.d.ts.map +1 -0
- package/dist/src/lib/system-reminder.js +53 -0
- package/dist/src/lib/system-reminder.js.map +1 -0
- package/dist/src/lib/walk-ancestors.d.ts +9 -0
- package/dist/src/lib/walk-ancestors.d.ts.map +1 -0
- package/dist/src/lib/walk-ancestors.js +28 -0
- package/dist/src/lib/walk-ancestors.js.map +1 -0
- package/dist/src/memory/observational-prompts.d.ts.map +1 -1
- package/dist/src/memory/observational-prompts.js +2 -1
- package/dist/src/memory/observational-prompts.js.map +1 -1
- package/dist/src/memory/observational.d.ts +31 -4
- package/dist/src/memory/observational.d.ts.map +1 -1
- package/dist/src/memory/observational.js +43 -4
- package/dist/src/memory/observational.js.map +1 -1
- package/dist/src/model-resolution/catalog.d.ts +2 -2
- package/dist/src/model-resolution/catalog.d.ts.map +1 -1
- package/dist/src/model-resolution/catalog.js +61 -33
- package/dist/src/model-resolution/catalog.js.map +1 -1
- package/dist/src/model-resolution/duet-gateway.d.ts +3 -3
- package/dist/src/model-resolution/duet-gateway.d.ts.map +1 -1
- package/dist/src/model-resolution/duet-gateway.js +119 -19
- package/dist/src/model-resolution/duet-gateway.js.map +1 -1
- package/dist/src/model-resolution/model-gateway.d.ts.map +1 -0
- package/dist/src/{cli → model-resolution}/model-gateway.js +10 -6
- package/dist/src/model-resolution/model-gateway.js.map +1 -0
- package/dist/src/model-resolution/resolver.d.ts +11 -4
- package/dist/src/model-resolution/resolver.d.ts.map +1 -1
- package/dist/src/model-resolution/resolver.js +39 -8
- package/dist/src/model-resolution/resolver.js.map +1 -1
- package/dist/src/model-routing/advisor-transcript.d.ts +36 -0
- package/dist/src/model-routing/advisor-transcript.d.ts.map +1 -0
- package/dist/src/model-routing/advisor-transcript.js +103 -0
- package/dist/src/model-routing/advisor-transcript.js.map +1 -0
- package/dist/src/model-routing/advisor.d.ts +27 -0
- package/dist/src/model-routing/advisor.d.ts.map +1 -0
- package/dist/src/model-routing/advisor.js +20 -0
- package/dist/src/model-routing/advisor.js.map +1 -0
- package/dist/src/model-routing/classifier.d.ts +57 -0
- package/dist/src/model-routing/classifier.d.ts.map +1 -0
- package/dist/src/model-routing/classifier.js +63 -0
- package/dist/src/model-routing/classifier.js.map +1 -0
- package/dist/src/model-routing/loader.d.ts +48 -0
- package/dist/src/model-routing/loader.d.ts.map +1 -0
- package/dist/src/model-routing/loader.js +79 -0
- package/dist/src/model-routing/loader.js.map +1 -0
- package/dist/src/model-routing/prompts.d.ts +22 -0
- package/dist/src/model-routing/prompts.d.ts.map +1 -0
- package/dist/src/model-routing/prompts.js +87 -0
- package/dist/src/model-routing/prompts.js.map +1 -0
- package/dist/src/model-routing/resolve.d.ts +40 -0
- package/dist/src/model-routing/resolve.d.ts.map +1 -0
- package/dist/src/model-routing/resolve.js +76 -0
- package/dist/src/model-routing/resolve.js.map +1 -0
- package/dist/src/model-routing/router.d.ts +149 -0
- package/dist/src/model-routing/router.d.ts.map +1 -0
- package/dist/src/model-routing/router.js +235 -0
- package/dist/src/model-routing/router.js.map +1 -0
- package/dist/src/model-routing/step-triggers.d.ts +27 -0
- package/dist/src/model-routing/step-triggers.d.ts.map +1 -0
- package/dist/src/model-routing/step-triggers.js +20 -0
- package/dist/src/model-routing/step-triggers.js.map +1 -0
- package/dist/src/model-routing/table.d.ts +126 -0
- package/dist/src/model-routing/table.d.ts.map +1 -0
- package/dist/src/model-routing/table.js +351 -0
- package/dist/src/model-routing/table.js.map +1 -0
- package/dist/src/session/session.d.ts +40 -23
- package/dist/src/session/session.d.ts.map +1 -1
- package/dist/src/session/session.js +173 -97
- package/dist/src/session/session.js.map +1 -1
- package/dist/src/tasks/quiescence.d.ts +13 -0
- package/dist/src/tasks/quiescence.d.ts.map +1 -0
- package/dist/src/tasks/quiescence.js +11 -0
- package/dist/src/tasks/quiescence.js.map +1 -0
- package/dist/src/tasks/task-manager.d.ts +101 -0
- package/dist/src/tasks/task-manager.d.ts.map +1 -0
- package/dist/src/tasks/task-manager.js +311 -0
- package/dist/src/tasks/task-manager.js.map +1 -0
- package/dist/src/tasks/types.d.ts +85 -0
- package/dist/src/tasks/types.d.ts.map +1 -0
- package/dist/src/tasks/types.js +2 -0
- package/dist/src/tasks/types.js.map +1 -0
- package/dist/src/tui/app.d.ts +1 -1
- package/dist/src/tui/app.d.ts.map +1 -1
- package/dist/src/tui/app.js +12 -2
- package/dist/src/tui/app.js.map +1 -1
- package/dist/src/tui/initial-prompt.d.ts.map +1 -1
- package/dist/src/tui/initial-prompt.js +0 -3
- package/dist/src/tui/initial-prompt.js.map +1 -1
- package/dist/src/tui/session-subscription.d.ts +3 -0
- package/dist/src/tui/session-subscription.d.ts.map +1 -1
- package/dist/src/tui/session-subscription.js +29 -5
- package/dist/src/tui/session-subscription.js.map +1 -1
- package/dist/src/tui/sidebar.d.ts +3 -0
- package/dist/src/tui/sidebar.d.ts.map +1 -1
- package/dist/src/tui/sidebar.js +19 -3
- package/dist/src/tui/sidebar.js.map +1 -1
- package/dist/src/tui/slash-commands.d.ts +12 -9
- package/dist/src/tui/slash-commands.d.ts.map +1 -1
- package/dist/src/tui/slash-commands.js +48 -10
- package/dist/src/tui/slash-commands.js.map +1 -1
- package/dist/src/tui/status-controller.d.ts +14 -9
- package/dist/src/tui/status-controller.d.ts.map +1 -1
- package/dist/src/tui/status-controller.js +26 -7
- package/dist/src/tui/status-controller.js.map +1 -1
- package/dist/src/tui/task-lane-renderer.d.ts +30 -0
- package/dist/src/tui/task-lane-renderer.d.ts.map +1 -0
- package/dist/src/tui/task-lane-renderer.js +93 -0
- package/dist/src/tui/task-lane-renderer.js.map +1 -0
- package/dist/src/tui/task-tree.d.ts +47 -0
- package/dist/src/tui/task-tree.d.ts.map +1 -0
- package/dist/src/tui/task-tree.js +190 -0
- package/dist/src/tui/task-tree.js.map +1 -0
- package/dist/src/tui/tool-formatters.js +3 -0
- package/dist/src/tui/tool-formatters.js.map +1 -1
- package/dist/src/turn-runner/agent-events.d.ts.map +1 -1
- package/dist/src/turn-runner/agent-events.js +1 -0
- package/dist/src/turn-runner/agent-events.js.map +1 -1
- package/dist/src/turn-runner/duration.d.ts +2 -2
- package/dist/src/turn-runner/duration.js +3 -3
- package/dist/src/turn-runner/duration.js.map +1 -1
- package/dist/src/turn-runner/prompts.d.ts +5 -1
- package/dist/src/turn-runner/prompts.d.ts.map +1 -1
- package/dist/src/turn-runner/prompts.js +30 -6
- package/dist/src/turn-runner/prompts.js.map +1 -1
- package/dist/src/turn-runner/runtime-clock.d.ts +20 -0
- package/dist/src/turn-runner/runtime-clock.d.ts.map +1 -0
- package/dist/src/turn-runner/runtime-clock.js +38 -0
- package/dist/src/turn-runner/runtime-clock.js.map +1 -0
- package/dist/src/turn-runner/shell-state-handle.d.ts +0 -3
- package/dist/src/turn-runner/shell-state-handle.d.ts.map +1 -1
- package/dist/src/turn-runner/shell-state-handle.js +5 -55
- package/dist/src/turn-runner/shell-state-handle.js.map +1 -1
- package/dist/src/turn-runner/skill-context.d.ts +6 -7
- package/dist/src/turn-runner/skill-context.d.ts.map +1 -1
- package/dist/src/turn-runner/skill-context.js +10 -10
- package/dist/src/turn-runner/skill-context.js.map +1 -1
- package/dist/src/turn-runner/skills.d.ts.map +1 -1
- package/dist/src/turn-runner/skills.js +2 -22
- package/dist/src/turn-runner/skills.js.map +1 -1
- package/dist/src/turn-runner/state-compaction.d.ts +7 -5
- package/dist/src/turn-runner/state-compaction.d.ts.map +1 -1
- package/dist/src/turn-runner/state-compaction.js +69 -10
- package/dist/src/turn-runner/state-compaction.js.map +1 -1
- package/dist/src/turn-runner/state-machine-decisions.d.ts +135 -0
- package/dist/src/turn-runner/state-machine-decisions.d.ts.map +1 -0
- package/dist/src/turn-runner/state-machine-decisions.js +443 -0
- package/dist/src/turn-runner/state-machine-decisions.js.map +1 -0
- package/dist/src/turn-runner/state-machine-session.d.ts +13 -28
- package/dist/src/turn-runner/state-machine-session.d.ts.map +1 -1
- package/dist/src/turn-runner/state-machine-session.js +18 -55
- package/dist/src/turn-runner/state-machine-session.js.map +1 -1
- package/dist/src/turn-runner/subagent.d.ts +156 -0
- package/dist/src/turn-runner/subagent.d.ts.map +1 -0
- package/dist/src/turn-runner/subagent.js +164 -0
- package/dist/src/turn-runner/subagent.js.map +1 -0
- package/dist/src/turn-runner/task-tools.d.ts +76 -0
- package/dist/src/turn-runner/task-tools.d.ts.map +1 -0
- package/dist/src/turn-runner/task-tools.js +370 -0
- package/dist/src/turn-runner/task-tools.js.map +1 -0
- package/dist/src/turn-runner/tools.d.ts +65 -17
- package/dist/src/turn-runner/tools.d.ts.map +1 -1
- package/dist/src/turn-runner/tools.js +173 -59
- package/dist/src/turn-runner/tools.js.map +1 -1
- package/dist/src/turn-runner/turn-runner.d.ts +198 -134
- package/dist/src/turn-runner/turn-runner.d.ts.map +1 -1
- package/dist/src/turn-runner/turn-runner.js +1302 -713
- package/dist/src/turn-runner/turn-runner.js.map +1 -1
- package/dist/src/turn-runner/usage-accounting.d.ts +4 -0
- package/dist/src/turn-runner/usage-accounting.d.ts.map +1 -1
- package/dist/src/turn-runner/usage-accounting.js +19 -0
- package/dist/src/turn-runner/usage-accounting.js.map +1 -1
- package/dist/src/types/config.d.ts +9 -1
- package/dist/src/types/config.d.ts.map +1 -1
- package/dist/src/types/config.js +2 -1
- package/dist/src/types/config.js.map +1 -1
- package/dist/src/types/protocol.d.ts +110 -30
- package/dist/src/types/protocol.d.ts.map +1 -1
- package/dist/src/types/state-machine.d.ts +10 -12
- package/dist/src/types/state-machine.d.ts.map +1 -1
- package/dist/src/types/state-machine.js.map +1 -1
- package/package.json +4 -4
- package/dist/src/cli/model-gateway.d.ts.map +0 -1
- package/dist/src/cli/model-gateway.js.map +0 -1
- package/dist/src/turn-runner/state-machine-controller.d.ts +0 -140
- package/dist/src/turn-runner/state-machine-controller.d.ts.map +0 -1
- package/dist/src/turn-runner/state-machine-controller.js +0 -501
- package/dist/src/turn-runner/state-machine-controller.js.map +0 -1
- /package/dist/src/{cli → model-resolution}/model-gateway.d.ts +0 -0
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
import { Type } from "typebox";
|
|
2
|
+
import { systemReminder } from "../lib/system-reminder.js";
|
|
3
|
+
export const spawnAgentSchema = Type.Object({
|
|
4
|
+
prompt: Type.String({ description: "The task for the child agent." }),
|
|
5
|
+
fork_context: Type.Optional(Type.Boolean({ description: "Seed the child with a copy of the caller's transcript." })),
|
|
6
|
+
cwd: Type.Optional(Type.String({ description: "Working directory for the child." })),
|
|
7
|
+
allowed_skills: Type.Optional(Type.Array(Type.String(), { description: "Skill names the child may use." })),
|
|
8
|
+
run_in_background: Type.Optional(Type.Boolean({ description: "Start the child in the background and return immediately." })),
|
|
9
|
+
timeout: Type.Optional(Type.Number({
|
|
10
|
+
minimum: 0,
|
|
11
|
+
description: "Foreground wait budget in seconds. Expiry moves the child to the background; it does not stop it.",
|
|
12
|
+
})),
|
|
13
|
+
});
|
|
14
|
+
/** Create the restricted public spawn_agent surface on the shared task rails. */
|
|
15
|
+
export function createSpawnAgentTool(deps) {
|
|
16
|
+
return {
|
|
17
|
+
name: "spawn_agent",
|
|
18
|
+
label: "Spawn agent",
|
|
19
|
+
description: "Run a subagent as a tool call and return its final report. Children may spawn tasks and agents within the depth limit.",
|
|
20
|
+
parameters: spawnAgentSchema,
|
|
21
|
+
async execute(_toolCallId, params) {
|
|
22
|
+
const ownerScopeId = deps.ownerScopeId();
|
|
23
|
+
const spec = {
|
|
24
|
+
prompt: params.prompt,
|
|
25
|
+
...(params.fork_context ? { forkContext: true } : {}),
|
|
26
|
+
...(params.cwd ? { cwd: params.cwd } : {}),
|
|
27
|
+
...(params.allowed_skills ? { allowedSkills: params.allowed_skills } : {}),
|
|
28
|
+
};
|
|
29
|
+
let handle;
|
|
30
|
+
handle = deps.taskManager.start({
|
|
31
|
+
kind: "subagent",
|
|
32
|
+
name: "spawn_agent",
|
|
33
|
+
label: params.prompt,
|
|
34
|
+
ownerScopeId,
|
|
35
|
+
execute: async ({ signal, onOutput }) => {
|
|
36
|
+
const childScopeId = `task:${handle.id}`;
|
|
37
|
+
try {
|
|
38
|
+
deps.taskManager.openScope(childScopeId, ownerScopeId);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
if (error instanceof RangeError) {
|
|
42
|
+
throw new Error(`spawn_agent depth limit: ${error.message}`);
|
|
43
|
+
}
|
|
44
|
+
throw error;
|
|
45
|
+
}
|
|
46
|
+
let run;
|
|
47
|
+
const interrupt = () => run?.interrupt(String(signal.reason ?? "Interrupted"));
|
|
48
|
+
signal.addEventListener("abort", interrupt, { once: true });
|
|
49
|
+
try {
|
|
50
|
+
run = await deps.createRun({ spec, taskId: handle.id, ownerScopeId, childScopeId });
|
|
51
|
+
if (signal.aborted)
|
|
52
|
+
run.interrupt(String(signal.reason ?? "Interrupted"));
|
|
53
|
+
const result = await run.prompt();
|
|
54
|
+
const report = subagentResultText(result);
|
|
55
|
+
if (report)
|
|
56
|
+
onOutput(report);
|
|
57
|
+
if (result.type === "failed")
|
|
58
|
+
throw new Error(result.error);
|
|
59
|
+
if (result.type === "interrupted") {
|
|
60
|
+
throw new Error(run.interruptedReason() ?? "Subagent interrupted.");
|
|
61
|
+
}
|
|
62
|
+
return textResult(report || "Subagent completed without a report.");
|
|
63
|
+
}
|
|
64
|
+
finally {
|
|
65
|
+
signal.removeEventListener("abort", interrupt);
|
|
66
|
+
await deps.taskManager.closeScope(childScopeId, String(signal.reason ?? "Subagent scope closed."));
|
|
67
|
+
await deps.dropScratch?.(handle.id);
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
deps.onTaskStarted?.(handle.id, !params.run_in_background);
|
|
72
|
+
if (params.run_in_background) {
|
|
73
|
+
const snapshot = deps.taskManager.output(handle.id);
|
|
74
|
+
if (!snapshot)
|
|
75
|
+
throw new Error(`Task ${handle.id} disappeared after start.`);
|
|
76
|
+
return textResult(startedInBackgroundNotice(snapshot));
|
|
77
|
+
}
|
|
78
|
+
const budgetMs = params.timeout === undefined ? deps.defaultWaitBudgetMs : params.timeout * 1_000;
|
|
79
|
+
const foreground = await deps.taskManager.raceForeground(handle, budgetMs);
|
|
80
|
+
if (foreground.kind === "settled") {
|
|
81
|
+
deps.onForegroundResult?.(handle.id, false);
|
|
82
|
+
if (foreground.settlement.status === "completed") {
|
|
83
|
+
return foreground.settlement.result;
|
|
84
|
+
}
|
|
85
|
+
if (foreground.settlement.status === "stopped") {
|
|
86
|
+
throw new Error(`Task ${handle.id} stopped: ${foreground.settlement.reason}`);
|
|
87
|
+
}
|
|
88
|
+
if (foreground.settlement.status === "failed")
|
|
89
|
+
throw foreground.settlement.error;
|
|
90
|
+
throw new Error(`Task ${handle.id} was lost.`);
|
|
91
|
+
}
|
|
92
|
+
deps.onForegroundResult?.(handle.id, true);
|
|
93
|
+
return textResult(stillRunningNotice(foreground.task, deps.clock.now()));
|
|
94
|
+
},
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
function subagentResultText(result) {
|
|
98
|
+
if (result.type === "complete")
|
|
99
|
+
return result.result ?? "";
|
|
100
|
+
if (result.type === "failed")
|
|
101
|
+
return result.error;
|
|
102
|
+
if (result.type === "interrupted")
|
|
103
|
+
return "Subagent interrupted.";
|
|
104
|
+
return "Spawned agent attempted to ask the user a question.";
|
|
105
|
+
}
|
|
106
|
+
const MAX_INLINE_SETTLEMENT_CHARS = 2_000;
|
|
107
|
+
const taskOutputSchema = Type.Object({
|
|
108
|
+
id: Type.Optional(Type.String({ description: "Task id, such as t3. Omit to list all tasks." })),
|
|
109
|
+
wait: Type.Optional(Type.Number({
|
|
110
|
+
minimum: 0,
|
|
111
|
+
description: "Seconds to wait for this task to settle before returning its current output.",
|
|
112
|
+
})),
|
|
113
|
+
});
|
|
114
|
+
const taskStopSchema = Type.Object({
|
|
115
|
+
id: Type.String({ description: "Task id to stop, such as t3." }),
|
|
116
|
+
});
|
|
117
|
+
/**
|
|
118
|
+
* Turn a normal pi tool into task-backed work. The wrapped tool always executes under the
|
|
119
|
+
* task's AbortSignal; a foreground budget expiry changes only its delivery mode, never its
|
|
120
|
+
* lifetime.
|
|
121
|
+
*/
|
|
122
|
+
export function wrapBackgroundable(tool, deps) {
|
|
123
|
+
const baseProperties = "properties" in tool.parameters
|
|
124
|
+
? tool.parameters.properties
|
|
125
|
+
: {};
|
|
126
|
+
const parameters = Type.Object({
|
|
127
|
+
...baseProperties,
|
|
128
|
+
timeout: Type.Optional(Type.Number({
|
|
129
|
+
minimum: 0,
|
|
130
|
+
description: "Foreground wait budget in seconds. Expiry moves the command to the background; it does not kill it.",
|
|
131
|
+
})),
|
|
132
|
+
run_in_background: Type.Optional(Type.Boolean({
|
|
133
|
+
description: "Start the command in the background and return immediately.",
|
|
134
|
+
})),
|
|
135
|
+
});
|
|
136
|
+
return {
|
|
137
|
+
...tool,
|
|
138
|
+
// Foreground task calls carry ordering semantics: each result is delivered
|
|
139
|
+
// before the next command starts. Callers that want concurrency use the
|
|
140
|
+
// explicit run_in_background path, which returns immediately.
|
|
141
|
+
executionMode: "sequential",
|
|
142
|
+
parameters,
|
|
143
|
+
description: `${tool.description} The timeout is a foreground wait budget, not a kill timeout. Use run_in_background to return immediately.`,
|
|
144
|
+
async execute(toolCallId, rawParams, outerSignal, onUpdate) {
|
|
145
|
+
if (outerSignal?.aborted)
|
|
146
|
+
throw new Error("Tool call aborted before task start.");
|
|
147
|
+
const params = rawParams;
|
|
148
|
+
const { timeout, run_in_background: runInBackground, ...innerParams } = params;
|
|
149
|
+
let lastOutput = "";
|
|
150
|
+
const handle = deps.taskManager.start({
|
|
151
|
+
kind: "tool",
|
|
152
|
+
name: tool.name,
|
|
153
|
+
label: deps.label(params),
|
|
154
|
+
ownerScopeId: deps.ownerScopeId(),
|
|
155
|
+
execute: async ({ signal, onOutput }) => {
|
|
156
|
+
const unregisterReaper = deps.taskManager.registerReaper(async (reason) => {
|
|
157
|
+
if (!signal.aborted) {
|
|
158
|
+
// stop() owns the AbortController and resolves only after the child process group
|
|
159
|
+
// has unwound, so reapAll is a real shutdown barrier rather than a fire-and-forget.
|
|
160
|
+
await deps.taskManager.stop(handle.id, reason);
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
try {
|
|
164
|
+
const result = await tool.execute(toolCallId, innerParams, signal, (partial) => {
|
|
165
|
+
const text = resultText(partial);
|
|
166
|
+
const delta = text.startsWith(lastOutput) ? text.slice(lastOutput.length) : text;
|
|
167
|
+
lastOutput = text;
|
|
168
|
+
if (delta)
|
|
169
|
+
onOutput(delta);
|
|
170
|
+
onUpdate?.(partial);
|
|
171
|
+
});
|
|
172
|
+
const text = resultText(result);
|
|
173
|
+
const delta = text.startsWith(lastOutput) ? text.slice(lastOutput.length) : text;
|
|
174
|
+
if (delta)
|
|
175
|
+
onOutput(delta);
|
|
176
|
+
return result;
|
|
177
|
+
}
|
|
178
|
+
finally {
|
|
179
|
+
unregisterReaper();
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
});
|
|
183
|
+
deps.onTaskStarted?.(handle.id, !runInBackground);
|
|
184
|
+
if (runInBackground) {
|
|
185
|
+
const snapshot = deps.taskManager.output(handle.id);
|
|
186
|
+
if (!snapshot)
|
|
187
|
+
throw new Error(`Task ${handle.id} disappeared after start.`);
|
|
188
|
+
return textResult(startedInBackgroundNotice(snapshot));
|
|
189
|
+
}
|
|
190
|
+
const budgetMs = timeout === undefined ? deps.defaultWaitBudgetMs : timeout * 1_000;
|
|
191
|
+
const foreground = await deps.taskManager.raceForeground(handle, budgetMs);
|
|
192
|
+
if (foreground.kind === "settled") {
|
|
193
|
+
deps.onForegroundResult?.(handle.id, false);
|
|
194
|
+
if (foreground.settlement.status === "completed") {
|
|
195
|
+
return foreground.settlement.result;
|
|
196
|
+
}
|
|
197
|
+
if (foreground.settlement.status === "stopped") {
|
|
198
|
+
throw new Error(`Task ${handle.id} stopped: ${foreground.settlement.reason}`);
|
|
199
|
+
}
|
|
200
|
+
if (foreground.settlement.status === "failed") {
|
|
201
|
+
throw foreground.settlement.error;
|
|
202
|
+
}
|
|
203
|
+
throw new Error(`Task ${handle.id} was lost.`);
|
|
204
|
+
}
|
|
205
|
+
deps.onForegroundResult?.(handle.id, true);
|
|
206
|
+
return textResult(stillRunningNotice(foreground.task, deps.clock.now()));
|
|
207
|
+
},
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
/** B1: the only source for foreground wait-budget conversion wording. */
|
|
211
|
+
export function stillRunningNotice(snapshot, now = Date.now()) {
|
|
212
|
+
const recent = recentOutput(snapshot);
|
|
213
|
+
return systemReminder([
|
|
214
|
+
`Task ${snapshot.descriptor.id} is still running (${taskDescription(snapshot)}, ${formatElapsed(snapshot, now)} elapsed).`,
|
|
215
|
+
"Recent output:",
|
|
216
|
+
recent ? indent(recent) : " (no output yet)",
|
|
217
|
+
`It continues in the background. Check it with task_output("${snapshot.descriptor.id}", {wait: 60}),`,
|
|
218
|
+
`stop it with task_stop("${snapshot.descriptor.id}"), or keep working and you'll be nudged when it settles.`,
|
|
219
|
+
].join("\n"));
|
|
220
|
+
}
|
|
221
|
+
/** B2: the only source for explicit background-start wording. */
|
|
222
|
+
export function startedInBackgroundNotice(snapshot) {
|
|
223
|
+
return systemReminder([
|
|
224
|
+
`Started background task ${snapshot.descriptor.id} (${taskDescription(snapshot)}).`,
|
|
225
|
+
`You'll be nudged when it settles; task_output("${snapshot.descriptor.id}") shows live progress.`,
|
|
226
|
+
].join("\n"));
|
|
227
|
+
}
|
|
228
|
+
/** B3: the only source for batched settlement nudges and idle re-prompts. */
|
|
229
|
+
export function settlementNotice(settlements) {
|
|
230
|
+
const lines = settlements.map((snapshot) => {
|
|
231
|
+
const settlement = snapshot.settlement;
|
|
232
|
+
if (!settlement)
|
|
233
|
+
return `- ${snapshot.descriptor.id} (${taskDescription(snapshot)}) is running.`;
|
|
234
|
+
const status = settlement.status === "failed" ? "failed" : settlement.status;
|
|
235
|
+
const inline = settlementInline(snapshot);
|
|
236
|
+
return `- ${snapshot.descriptor.id} (${taskDescription(snapshot)}) ${status}${inline ? ` — ${inline}` : ""}. Full output: task_output("${snapshot.descriptor.id}")`;
|
|
237
|
+
});
|
|
238
|
+
return systemReminder([
|
|
239
|
+
"<system-reminder>",
|
|
240
|
+
`${settlements.length} ${settlements.length === 1 ? "task" : "tasks"} settled while you were working:`,
|
|
241
|
+
...lines,
|
|
242
|
+
"Act on these or continue; your turn stays open while tasks run.",
|
|
243
|
+
"</system-reminder>",
|
|
244
|
+
].join("\n"));
|
|
245
|
+
}
|
|
246
|
+
/** One-shot parent context for executors that could not survive process recovery. */
|
|
247
|
+
export function lostTaskRecoveryReminder(tasks) {
|
|
248
|
+
const lines = tasks.flatMap((snapshot) => {
|
|
249
|
+
const descriptor = snapshot.descriptor;
|
|
250
|
+
const output = snapshot.output.length > 0 ? snapshot.output.slice(-3) : ["<no buffered output>"];
|
|
251
|
+
return [
|
|
252
|
+
`- ${descriptor.id} (${taskDescription(snapshot)}) was interrupted when the previous process exited. It was not restarted.`,
|
|
253
|
+
...output.map((chunk) => ` Last output: ${chunk}`),
|
|
254
|
+
];
|
|
255
|
+
});
|
|
256
|
+
return systemReminder([
|
|
257
|
+
"<system-reminder>",
|
|
258
|
+
`${tasks.length} ${tasks.length === 1 ? "task was" : "tasks were"} lost during session recovery:`,
|
|
259
|
+
...lines,
|
|
260
|
+
"Treat these executors as stopped. Inspect or restart the work explicitly if it is still needed.",
|
|
261
|
+
"</system-reminder>",
|
|
262
|
+
].join("\n"));
|
|
263
|
+
}
|
|
264
|
+
/** Create the sequential admin lane. These tools only inspect existing tasks. */
|
|
265
|
+
export function createTaskAdminTools(input) {
|
|
266
|
+
return [createTaskOutputTool(input), createTaskStopTool(input.taskManager)];
|
|
267
|
+
}
|
|
268
|
+
function createTaskOutputTool(input) {
|
|
269
|
+
return {
|
|
270
|
+
name: "task_output",
|
|
271
|
+
label: "Task output",
|
|
272
|
+
executionMode: "sequential",
|
|
273
|
+
description: "List all tasks, or inspect one task's retained output. Optionally wait for that task to settle.",
|
|
274
|
+
parameters: taskOutputSchema,
|
|
275
|
+
async execute(...args) {
|
|
276
|
+
const params = args[1];
|
|
277
|
+
if (!params.id) {
|
|
278
|
+
const tasks = input.taskManager.list();
|
|
279
|
+
const text = tasks.length
|
|
280
|
+
? tasks
|
|
281
|
+
.map((task) => `${task.id}\t${task.kind}\t${task.label}\t${task.status}\t${formatDuration(Math.max(0, input.clock.now() - task.startedAt))}`)
|
|
282
|
+
.join("\n")
|
|
283
|
+
: "No tasks.";
|
|
284
|
+
return textResult(text);
|
|
285
|
+
}
|
|
286
|
+
const id = params.id;
|
|
287
|
+
if (params.wait !== undefined) {
|
|
288
|
+
await input.taskManager.waitForSettlement(id, params.wait * 1_000);
|
|
289
|
+
}
|
|
290
|
+
const snapshot = input.taskManager.output(id);
|
|
291
|
+
if (!snapshot)
|
|
292
|
+
throw new Error(`Unknown task ${params.id}`);
|
|
293
|
+
return textResult(formatTaskOutput(snapshot));
|
|
294
|
+
},
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
function createTaskStopTool(taskManager) {
|
|
298
|
+
return {
|
|
299
|
+
name: "task_stop",
|
|
300
|
+
label: "Stop task",
|
|
301
|
+
executionMode: "sequential",
|
|
302
|
+
description: "Stop one running or scheduled task and return its final retained output.",
|
|
303
|
+
parameters: taskStopSchema,
|
|
304
|
+
async execute(...args) {
|
|
305
|
+
const params = args[1];
|
|
306
|
+
const snapshot = await taskManager.stop(params.id, "Stopped by task_stop.");
|
|
307
|
+
if (!snapshot)
|
|
308
|
+
throw new Error(`Unknown task ${params.id}`);
|
|
309
|
+
return textResult(formatTaskOutput(snapshot));
|
|
310
|
+
},
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
function formatTaskOutput(snapshot) {
|
|
314
|
+
const output = snapshot.output.join("");
|
|
315
|
+
const settlement = snapshot.settlement
|
|
316
|
+
? `\nStatus: ${snapshot.settlement.status}`
|
|
317
|
+
: `\nStatus: ${snapshot.descriptor.status}`;
|
|
318
|
+
return `${output || "(no output)"}${settlement}`;
|
|
319
|
+
}
|
|
320
|
+
function resultText(result) {
|
|
321
|
+
return result.content
|
|
322
|
+
.filter((item) => item.type === "text")
|
|
323
|
+
.map((item) => item.text)
|
|
324
|
+
.join("\n");
|
|
325
|
+
}
|
|
326
|
+
function textResult(text) {
|
|
327
|
+
return { content: [{ type: "text", text }], details: undefined };
|
|
328
|
+
}
|
|
329
|
+
function taskDescription(snapshot) {
|
|
330
|
+
return `${snapshot.descriptor.name}: \`${snapshot.descriptor.label}\``;
|
|
331
|
+
}
|
|
332
|
+
function formatElapsed(snapshot, now) {
|
|
333
|
+
const end = snapshot.settlement?.settledAt ?? now;
|
|
334
|
+
return formatDuration(Math.max(0, end - snapshot.descriptor.startedAt));
|
|
335
|
+
}
|
|
336
|
+
function formatDuration(ms) {
|
|
337
|
+
const seconds = Math.floor(ms / 1_000);
|
|
338
|
+
const minutes = Math.floor(seconds / 60);
|
|
339
|
+
return minutes > 0 ? `${minutes}m${seconds % 60}s` : `${seconds}s`;
|
|
340
|
+
}
|
|
341
|
+
function recentOutput(snapshot) {
|
|
342
|
+
return snapshot.output.join("").trim().slice(-1_500);
|
|
343
|
+
}
|
|
344
|
+
function settlementInline(snapshot) {
|
|
345
|
+
if (!snapshot.settlement)
|
|
346
|
+
return "";
|
|
347
|
+
if (snapshot.settlement.status === "completed") {
|
|
348
|
+
const result = snapshot.settlement.result;
|
|
349
|
+
const text = isAgentToolResult(result) ? resultText(result) : String(result ?? "completed");
|
|
350
|
+
return text.trim().slice(0, MAX_INLINE_SETTLEMENT_CHARS);
|
|
351
|
+
}
|
|
352
|
+
if (snapshot.settlement.status === "failed")
|
|
353
|
+
return String(snapshot.settlement.error);
|
|
354
|
+
if (snapshot.settlement.status === "stopped")
|
|
355
|
+
return snapshot.settlement.reason;
|
|
356
|
+
return "task was lost";
|
|
357
|
+
}
|
|
358
|
+
function isAgentToolResult(value) {
|
|
359
|
+
return Boolean(value &&
|
|
360
|
+
typeof value === "object" &&
|
|
361
|
+
"content" in value &&
|
|
362
|
+
Array.isArray(value.content));
|
|
363
|
+
}
|
|
364
|
+
function indent(text) {
|
|
365
|
+
return text
|
|
366
|
+
.split("\n")
|
|
367
|
+
.map((line) => ` ${line}`)
|
|
368
|
+
.join("\n");
|
|
369
|
+
}
|
|
370
|
+
//# sourceMappingURL=task-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-tools.js","sourceRoot":"","sources":["../../../src/turn-runner/task-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +1,33 @@
|
|
|
1
|
-
import type { AgentTool } from "@earendil-works/pi-agent-core";
|
|
1
|
+
import type { AgentMessage, AgentTool } from "@earendil-works/pi-agent-core";
|
|
2
|
+
import type { ThinkingLevel } from "@earendil-works/pi-ai";
|
|
2
3
|
import { type BashOperations, type Skill } from "@earendil-works/pi-coding-agent";
|
|
3
4
|
import { Type, type Static } from "typebox";
|
|
4
5
|
import type { TurnMode, TurnQuestion, TurnTodo } from "../types/protocol.js";
|
|
5
|
-
import type { StateMachineSession, StateMachineSessionEvent, StateMachineAgentState, StateMachineDefinition, StateMachinePollState, StateMachineProgress, StateMachineScriptState,
|
|
6
|
+
import type { StateMachineSession, StateMachineSessionEvent, StateMachineAgentState, StateMachineDefinition, StateMachinePollState, StateMachineParkState, StateMachineProgress, StateMachineScriptState, StateMachineTimerState, StateMachineTerminalResult } from "../types/state-machine.js";
|
|
6
7
|
import type { EmbedFn } from "../memory/embedding.js";
|
|
8
|
+
import { type AdvisorResult, type CallAdvisorInput } from "../model-routing/advisor.js";
|
|
9
|
+
import type { LanguageModelUsage } from "ai";
|
|
10
|
+
import type { AdvisorGate } from "../model-routing/router.js";
|
|
7
11
|
import type { MemorySession } from "../memory/session.js";
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
export type ActiveStateOutput = {
|
|
13
|
+
state?: string;
|
|
14
|
+
kind: "agent";
|
|
15
|
+
output?: {
|
|
16
|
+
assistantText?: string;
|
|
17
|
+
};
|
|
18
|
+
} | {
|
|
19
|
+
state: string;
|
|
20
|
+
kind: "script" | "poll";
|
|
21
|
+
output?: ShellPartialOutput;
|
|
22
|
+
};
|
|
23
|
+
import { type RuntimeClock } from "./runtime-clock.js";
|
|
24
|
+
import type { ShellPartialOutput } from "./shell-state-handle.js";
|
|
17
25
|
/**
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
26
|
+
* Remove pi's kill-timeout input at the execution boundary. The public bash
|
|
27
|
+
* `timeout` field is consumed by the task wrapper as a foreground wait budget;
|
|
28
|
+
* only explicit task_stop, interrupt, or scope closure may abort the command.
|
|
21
29
|
*/
|
|
22
|
-
export declare function
|
|
30
|
+
export declare function withoutBashKillTimeout(base: BashOperations): BashOperations;
|
|
23
31
|
declare const askUserQuestionSchema: Type.TObject<{
|
|
24
32
|
questions: Type.TArray<Type.TObject<{
|
|
25
33
|
question: Type.TString;
|
|
@@ -48,6 +56,7 @@ export type StateMachineAgentStateOverride = Partial<Pick<StateMachineAgentState
|
|
|
48
56
|
export type StateMachineScriptStateOverride = Partial<Pick<StateMachineScriptState, "command" | "cwd" | "timeoutMs" | "successCodes" | "inputSchema">>;
|
|
49
57
|
export type StateMachinePollStateOverride = Partial<Pick<StateMachinePollState, "intervalMs" | "timeoutMs" | "command" | "cwd" | "successCodes" | "inputSchema">>;
|
|
50
58
|
export type StateMachineTimerStateOverride = Partial<Pick<StateMachineTimerState, "wakeAt" | "wakeAfterMs" | "inputSchema">>;
|
|
59
|
+
export type StateMachineParkStateOverride = Partial<Pick<StateMachineParkState, "inputSchema">>;
|
|
51
60
|
export type StateMachineStateOverride = {
|
|
52
61
|
kind: "agent";
|
|
53
62
|
state: StateMachineAgentStateOverride;
|
|
@@ -60,6 +69,9 @@ export type StateMachineStateOverride = {
|
|
|
60
69
|
} | {
|
|
61
70
|
kind: "timer";
|
|
62
71
|
state: StateMachineTimerStateOverride;
|
|
72
|
+
} | {
|
|
73
|
+
kind: "park";
|
|
74
|
+
state: StateMachineParkStateOverride;
|
|
63
75
|
};
|
|
64
76
|
declare const createDefinitionSchema: Type.TObject<{
|
|
65
77
|
definition: Type.TObject<{
|
|
@@ -101,6 +113,11 @@ declare const createDefinitionSchema: Type.TObject<{
|
|
|
101
113
|
name: Type.TString;
|
|
102
114
|
when: Type.TOptional<Type.TString>;
|
|
103
115
|
inputSchema: Type.TOptional<Type.TRecord<"^.*$", Type.TAny>>;
|
|
116
|
+
}>, Type.TObject<{
|
|
117
|
+
kind: Type.TLiteral<"park">;
|
|
118
|
+
name: Type.TString;
|
|
119
|
+
when: Type.TOptional<Type.TString>;
|
|
120
|
+
inputSchema: Type.TOptional<Type.TRecord<"^.*$", Type.TAny>>;
|
|
104
121
|
}>, Type.TObject<{
|
|
105
122
|
kind: Type.TLiteral<"terminal">;
|
|
106
123
|
status: Type.TUnion<[Type.TLiteral<"completed">, Type.TLiteral<"failed">, Type.TLiteral<"cancelled">]>;
|
|
@@ -163,6 +180,9 @@ interface TurnRunnerToolsInput {
|
|
|
163
180
|
getActiveStateOutput?: () => ActiveStateOutput | undefined;
|
|
164
181
|
skills?: readonly Skill[];
|
|
165
182
|
recallStorage?: RecallMemoryToolStorage;
|
|
183
|
+
advisorStorage?: AskAdvisorToolStorage;
|
|
184
|
+
clock?: RuntimeClock;
|
|
185
|
+
minimumScheduledDelayMs?: number;
|
|
166
186
|
}
|
|
167
187
|
export interface RecallMemoryToolStorage {
|
|
168
188
|
/**
|
|
@@ -190,9 +210,36 @@ export interface RecallMemoryToolStorage {
|
|
|
190
210
|
*/
|
|
191
211
|
expansionModel?: string;
|
|
192
212
|
}
|
|
193
|
-
|
|
213
|
+
/** Lazy runtime inputs and router actions used by the parent-only advisor tool. */
|
|
214
|
+
export interface AskAdvisorToolStorage {
|
|
215
|
+
/** Current parent transcript, read only when the tool executes. */
|
|
216
|
+
getMessages: () => readonly AgentMessage[];
|
|
217
|
+
/** Fully resolved executor prompt quoted into transcript content. */
|
|
218
|
+
getSystemPrompt: () => string;
|
|
219
|
+
/** Live local-session observation contents; empty when memory is disabled. */
|
|
220
|
+
getObservations: () => Promise<readonly string[]>;
|
|
221
|
+
/** Uniform transcript budget selected by the routed tier. */
|
|
222
|
+
budgetTokens: number;
|
|
223
|
+
/** Gateway-native advisor id, or a callback that resolves it lazily at tool execution. */
|
|
224
|
+
modelName: string | (() => string);
|
|
225
|
+
/** Reasoning effort selected by the routed tier. */
|
|
226
|
+
thinkingLevel: ThinkingLevel;
|
|
227
|
+
/** Atomically checks the floor and reserves the router's advisor slot when allowed. */
|
|
228
|
+
advisorGate: () => AdvisorGate;
|
|
229
|
+
/** Releases the reserved slot; false never stamps the floor or requests classification. */
|
|
230
|
+
noteAdvisorConsult: (success?: boolean) => void;
|
|
231
|
+
/** Attributes a completed advisor request to the running turn before the tool returns. */
|
|
232
|
+
recordUsage: (usage: LanguageModelUsage) => void;
|
|
233
|
+
/** Reports accounting failures without discarding advice the provider already returned. */
|
|
234
|
+
onUsageError?: (error: unknown) => void;
|
|
235
|
+
/** Network seam for deterministic tool tests; production uses callAdvisor. */
|
|
236
|
+
callAdvisor?: (input: CallAdvisorInput) => Promise<AdvisorResult>;
|
|
237
|
+
}
|
|
238
|
+
export declare function createDefaultTurnRunnerTools(cwd: string, todoStorage: TodoWriteToolStorage, recallStorage?: RecallMemoryToolStorage, advisorStorage?: AskAdvisorToolStorage): AgentTool[];
|
|
194
239
|
export declare function createTurnRunnerTools(input: TurnRunnerToolsInput): AgentTool[];
|
|
195
|
-
|
|
240
|
+
declare const askAdvisorSchema: Type.TObject<{}>;
|
|
241
|
+
/** Build the no-parameter, non-terminating advisor consultation tool. */
|
|
242
|
+
export declare function createAskAdvisorTool(storage: AskAdvisorToolStorage): AgentTool<typeof askAdvisorSchema>;
|
|
196
243
|
export declare function createTodoWriteTool(storage: TodoWriteToolStorage): AgentTool<typeof todoWriteSchema>;
|
|
197
244
|
/**
|
|
198
245
|
* Build the prompt body delivered to the parent on its acknowledgment
|
|
@@ -218,5 +265,6 @@ export declare function formatStateMachineTerminalAcknowledgmentPrompt(input: {
|
|
|
218
265
|
}): string;
|
|
219
266
|
export declare function formatCarriedTodosReminder(todos: TurnTodo[] | undefined): string | undefined;
|
|
220
267
|
export declare function resolveStateCwd(cwd: string | undefined, baseCwd: string): string;
|
|
268
|
+
export declare const MINIMUM_STATE_MACHINE_DELAY_MS: number;
|
|
221
269
|
export {};
|
|
222
270
|
//# sourceMappingURL=tools.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/turn-runner/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/turn-runner/tools.ts"],"names":[],"mappings":"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"}
|