@duetso/agent 0.2.2 → 0.2.4
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 +16 -13
- 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 +52 -9
- package/dist/src/cli/rpc.d.ts.map +1 -1
- package/dist/src/cli/rpc.js +195 -28
- 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 +205 -135
- package/dist/src/turn-runner/turn-runner.d.ts.map +1 -1
- package/dist/src/turn-runner/turn-runner.js +1311 -714
- 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 +124 -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
|
@@ -43,14 +43,16 @@ export declare const COMPACT_MESSAGE_TOKENS_RATIO = 0.2;
|
|
|
43
43
|
* leading `toolResult` or `assistant` message until the head is `user` — the
|
|
44
44
|
* only role every provider accepts at position 0.
|
|
45
45
|
*
|
|
46
|
-
* Front-eviction preserves tool-call / tool-result pairing by construction
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
46
|
+
* Front-eviction preserves tool-call / tool-result pairing by construction.
|
|
47
|
+
* When a result carries a live task id, both sides of that pair are pinned:
|
|
48
|
+
* the full invalid-head cascade is inspected before removal, and compaction
|
|
49
|
+
* stops at the preceding valid boundary rather than split or evict the pair.
|
|
50
|
+
* `TurnState.tasks` remains authoritative if no transcript pair can be found.
|
|
50
51
|
*
|
|
51
52
|
* Preserves the original state reference (no mutation) and every non-message
|
|
52
53
|
* field on `TurnState` and `state.agent` (`status`, `mode`, `options`,
|
|
53
|
-
* `stateMachine`, `todos`, `followUpQueue`, `queuedCommands`
|
|
54
|
+
* `stateMachine`, `todos`, `followUpQueue`, `queuedCommands`, `tasks`, and
|
|
55
|
+
* `nextTaskId`).
|
|
54
56
|
*
|
|
55
57
|
* Stops once `messages.length <= MIN_RETAINED_MESSAGES`. If the remainder
|
|
56
58
|
* still exceeds `maxBytes`, the caller persists/emits the oversize state: a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-compaction.d.ts","sourceRoot":"","sources":["../../../src/turn-runner/state-compaction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,QAAoB,CAAC;AAEzD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,MAAM,WAAW,0BAA0B;IACzC,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,4BAA4B,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"state-compaction.d.ts","sourceRoot":"","sources":["../../../src/turn-runner/state-compaction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,QAAoB,CAAC;AAEzD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,MAAM,WAAW,0BAA0B;IACzC,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAwEhD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,EAChB,OAAO,GAAE,0BAA+B,GACvC,gBAAgB,CAoClB"}
|
|
@@ -37,20 +37,74 @@ function isInvalidHead(message) {
|
|
|
37
37
|
return false;
|
|
38
38
|
return message.role === "toolResult" || message.role === "assistant";
|
|
39
39
|
}
|
|
40
|
+
function taskIdsReferencedBy(message) {
|
|
41
|
+
return new Set(JSON.stringify(message).match(/\bt\d+\b/g) ?? []);
|
|
42
|
+
}
|
|
43
|
+
function toolCallIds(message) {
|
|
44
|
+
if (!("role" in message) || message.role !== "assistant" || !("content" in message)) {
|
|
45
|
+
return new Set();
|
|
46
|
+
}
|
|
47
|
+
const content = Array.isArray(message.content) ? message.content : [];
|
|
48
|
+
return new Set(content.flatMap((block) => {
|
|
49
|
+
if (!block || typeof block !== "object" || !("type" in block) || block.type !== "toolCall") {
|
|
50
|
+
return [];
|
|
51
|
+
}
|
|
52
|
+
const candidate = block;
|
|
53
|
+
const id = candidate.id ?? candidate.toolCallId;
|
|
54
|
+
return typeof id === "string" ? [id] : [];
|
|
55
|
+
}));
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Find both messages in every tool-call/result pair whose result carries a
|
|
59
|
+
* live task id. A result can be separated from its assistant call by sibling
|
|
60
|
+
* results, so match the structural tool-call id rather than adjacency.
|
|
61
|
+
*/
|
|
62
|
+
function findLiveTaskPairMessages(state, messages) {
|
|
63
|
+
const liveTaskIds = new Set((state.tasks ?? [])
|
|
64
|
+
.filter(({ status }) => status === "running" || status === "scheduled")
|
|
65
|
+
.map(({ id }) => id));
|
|
66
|
+
const pinned = new Set();
|
|
67
|
+
if (liveTaskIds.size === 0)
|
|
68
|
+
return pinned;
|
|
69
|
+
for (let resultIndex = 0; resultIndex < messages.length; resultIndex += 1) {
|
|
70
|
+
const result = messages[resultIndex];
|
|
71
|
+
if (!result || !("role" in result) || result.role !== "toolResult")
|
|
72
|
+
continue;
|
|
73
|
+
const referencesLiveTask = [...taskIdsReferencedBy(result)].some((id) => liveTaskIds.has(id));
|
|
74
|
+
if (!referencesLiveTask)
|
|
75
|
+
continue;
|
|
76
|
+
const resultCallId = "toolCallId" in result ? result.toolCallId : undefined;
|
|
77
|
+
if (typeof resultCallId !== "string")
|
|
78
|
+
continue;
|
|
79
|
+
for (let callIndex = resultIndex - 1; callIndex >= 0; callIndex -= 1) {
|
|
80
|
+
const call = messages[callIndex];
|
|
81
|
+
if (!call)
|
|
82
|
+
continue;
|
|
83
|
+
if (toolCallIds(call).has(resultCallId)) {
|
|
84
|
+
pinned.add(call);
|
|
85
|
+
pinned.add(result);
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return pinned;
|
|
91
|
+
}
|
|
40
92
|
/**
|
|
41
93
|
* Returns a new `TurnState` whose serialized size is at most `maxBytes`,
|
|
42
94
|
* evicting the oldest agent messages first. After each eviction, drops any
|
|
43
95
|
* leading `toolResult` or `assistant` message until the head is `user` — the
|
|
44
96
|
* only role every provider accepts at position 0.
|
|
45
97
|
*
|
|
46
|
-
* Front-eviction preserves tool-call / tool-result pairing by construction
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
98
|
+
* Front-eviction preserves tool-call / tool-result pairing by construction.
|
|
99
|
+
* When a result carries a live task id, both sides of that pair are pinned:
|
|
100
|
+
* the full invalid-head cascade is inspected before removal, and compaction
|
|
101
|
+
* stops at the preceding valid boundary rather than split or evict the pair.
|
|
102
|
+
* `TurnState.tasks` remains authoritative if no transcript pair can be found.
|
|
50
103
|
*
|
|
51
104
|
* Preserves the original state reference (no mutation) and every non-message
|
|
52
105
|
* field on `TurnState` and `state.agent` (`status`, `mode`, `options`,
|
|
53
|
-
* `stateMachine`, `todos`, `followUpQueue`, `queuedCommands`
|
|
106
|
+
* `stateMachine`, `todos`, `followUpQueue`, `queuedCommands`, `tasks`, and
|
|
107
|
+
* `nextTaskId`).
|
|
54
108
|
*
|
|
55
109
|
* Stops once `messages.length <= MIN_RETAINED_MESSAGES`. If the remainder
|
|
56
110
|
* still exceeds `maxBytes`, the caller persists/emits the oversize state: a
|
|
@@ -69,15 +123,20 @@ export function compactTurnState(state, options = {}) {
|
|
|
69
123
|
return { state, evicted: 0, bytes: serialized.length };
|
|
70
124
|
}
|
|
71
125
|
const trimmed = [...messages];
|
|
126
|
+
const pinned = findLiveTaskPairMessages(state, messages);
|
|
72
127
|
let current = state;
|
|
73
128
|
let evicted = 0;
|
|
74
129
|
while (serialized.length > maxBytes && trimmed.length > MIN_RETAINED_MESSAGES) {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
evicted += 1;
|
|
130
|
+
let removeCount = 1;
|
|
131
|
+
while (trimmed.length - removeCount > MIN_RETAINED_MESSAGES &&
|
|
132
|
+
isInvalidHead(trimmed[removeCount])) {
|
|
133
|
+
removeCount += 1;
|
|
80
134
|
}
|
|
135
|
+
const removal = trimmed.slice(0, removeCount);
|
|
136
|
+
if (removal.some((message) => pinned.has(message)))
|
|
137
|
+
break;
|
|
138
|
+
trimmed.splice(0, removeCount);
|
|
139
|
+
evicted += removeCount;
|
|
81
140
|
current = { ...current, agent: { ...current.agent, messages: trimmed } };
|
|
82
141
|
serialized = JSON.stringify(current);
|
|
83
142
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-compaction.js","sourceRoot":"","sources":["../../../src/turn-runner/state-compaction.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AAEzD;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAcvC;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAEhD;;;;;GAKG;AACH,SAAS,aAAa,CAAC,OAAiC;IACtD,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IACnD,OAAO,OAAO,CAAC,IAAI,KAAK,YAAY,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC;AACvE,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"state-compaction.js","sourceRoot":"","sources":["../../../src/turn-runner/state-compaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import type { TurnQuestion } from "../types/protocol.js";
|
|
2
|
+
import type { StateMachineDefinition, StateMachineSession, StateMachineState, StateMachineTerminalResult } from "../types/state-machine.js";
|
|
3
|
+
import type { ShellCommandOutput, ShellPartialOutput } from "./shell-state-handle.js";
|
|
4
|
+
import type { SubagentResult, SubagentSpec } from "./subagent.js";
|
|
5
|
+
import type { StateMachineRunnerDecision, StateMachineStateOverride } from "./tools.js";
|
|
6
|
+
export { consecutivePollGateSuccesses, MISCONFIGURED_POLL_GATE_THRESHOLD, repeatedSelectionLoopCount, repeatedStateSelectionStreak, REPEATED_SELECTION_LOOP_THRESHOLD, REPEATED_SELECTION_LOOP_WINDOW_MS, } from "./state-machine-session.js";
|
|
7
|
+
type StateCompletedOutcome = {
|
|
8
|
+
type: "state_completed";
|
|
9
|
+
stateName: string;
|
|
10
|
+
output?: unknown;
|
|
11
|
+
};
|
|
12
|
+
type TerminalOutcome = {
|
|
13
|
+
type: "terminal";
|
|
14
|
+
status: StateMachineTerminalResult["status"];
|
|
15
|
+
result?: string;
|
|
16
|
+
error?: string;
|
|
17
|
+
};
|
|
18
|
+
type AskOutcome = {
|
|
19
|
+
type: "ask";
|
|
20
|
+
questions: TurnQuestion[];
|
|
21
|
+
};
|
|
22
|
+
type SleepOutcome = {
|
|
23
|
+
type: "sleep";
|
|
24
|
+
wakeAt: number;
|
|
25
|
+
};
|
|
26
|
+
type InterruptedOutcome = {
|
|
27
|
+
type: "interrupted";
|
|
28
|
+
};
|
|
29
|
+
/** Serializable shell work selected by state-machine policy. */
|
|
30
|
+
export interface ShellSpec {
|
|
31
|
+
/** Rendered command for this state attempt. */
|
|
32
|
+
command: string;
|
|
33
|
+
/** State-local working directory; the turn loop resolves it against its base cwd. */
|
|
34
|
+
cwd?: string;
|
|
35
|
+
/** Hard runtime limit for script states; polls use their timeout as a session-level policy. */
|
|
36
|
+
timeoutMs?: number;
|
|
37
|
+
/** Exit codes that settle the shell attempt successfully. */
|
|
38
|
+
successCodes?: number[];
|
|
39
|
+
}
|
|
40
|
+
/** Policy needed to fold a non-successful shell attempt back into a scheduled poll. */
|
|
41
|
+
export interface PollPolicy {
|
|
42
|
+
/** Delay before the next poll attempt. */
|
|
43
|
+
intervalMs: number | string;
|
|
44
|
+
}
|
|
45
|
+
/** Execution-free work description produced by a state-machine decision. */
|
|
46
|
+
export type PlannedWork = {
|
|
47
|
+
park: {
|
|
48
|
+
stateName: string;
|
|
49
|
+
};
|
|
50
|
+
} | {
|
|
51
|
+
run: {
|
|
52
|
+
subagent: SubagentSpec;
|
|
53
|
+
stateName: string;
|
|
54
|
+
};
|
|
55
|
+
} | {
|
|
56
|
+
run: {
|
|
57
|
+
shell: ShellSpec;
|
|
58
|
+
stateName: string;
|
|
59
|
+
pollPolicy?: PollPolicy;
|
|
60
|
+
};
|
|
61
|
+
} | {
|
|
62
|
+
schedule: {
|
|
63
|
+
wakeAt: number;
|
|
64
|
+
stateName: string;
|
|
65
|
+
};
|
|
66
|
+
} | {
|
|
67
|
+
terminal: Omit<TerminalOutcome, "type"> & {
|
|
68
|
+
stateName: string;
|
|
69
|
+
ledger: "recorded" | "failed" | "completed";
|
|
70
|
+
notifyStarted: boolean;
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
export interface PlannedDecision {
|
|
74
|
+
/** Updated durable ledger after applying and recording the decision. */
|
|
75
|
+
session: StateMachineSession;
|
|
76
|
+
/** Execution or scheduling work the turn loop performs. */
|
|
77
|
+
work: PlannedWork;
|
|
78
|
+
}
|
|
79
|
+
export type SettledDecision = {
|
|
80
|
+
session: StateMachineSession;
|
|
81
|
+
outcome: StateCompletedOutcome;
|
|
82
|
+
} | {
|
|
83
|
+
session: StateMachineSession;
|
|
84
|
+
outcome: TerminalOutcome;
|
|
85
|
+
} | {
|
|
86
|
+
session: StateMachineSession;
|
|
87
|
+
outcome: AskOutcome;
|
|
88
|
+
} | {
|
|
89
|
+
session: StateMachineSession;
|
|
90
|
+
outcome: SleepOutcome;
|
|
91
|
+
} | {
|
|
92
|
+
session: StateMachineSession;
|
|
93
|
+
outcome: InterruptedOutcome;
|
|
94
|
+
};
|
|
95
|
+
export type ShellSettlement = {
|
|
96
|
+
type: "completed";
|
|
97
|
+
output: ShellCommandOutput;
|
|
98
|
+
} | {
|
|
99
|
+
type: "failed";
|
|
100
|
+
error: string;
|
|
101
|
+
} | {
|
|
102
|
+
type: "interrupted";
|
|
103
|
+
reason?: string;
|
|
104
|
+
};
|
|
105
|
+
export type TimerSettlement = {
|
|
106
|
+
type: "completed";
|
|
107
|
+
output: {
|
|
108
|
+
elapsedMs: number;
|
|
109
|
+
timestamp: number;
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
export declare function hydrate(stateMachine: StateMachineSession | undefined): StateMachineSession | undefined;
|
|
113
|
+
export declare function getSession(stateMachine: StateMachineSession | undefined): StateMachineSession | undefined;
|
|
114
|
+
export declare function startSession(input: {
|
|
115
|
+
prompt: string;
|
|
116
|
+
definition: StateMachineDefinition;
|
|
117
|
+
currentState: string;
|
|
118
|
+
}): StateMachineSession;
|
|
119
|
+
export declare function markTerminalAcknowledged(session: StateMachineSession): StateMachineSession;
|
|
120
|
+
export declare function failActiveSession(session: StateMachineSession, state: string, error: string): SettledDecision;
|
|
121
|
+
export declare function supersede(session: StateMachineSession, reason: string): StateMachineSession;
|
|
122
|
+
export declare function planDecision(stateMachine: StateMachineSession, decision: StateMachineRunnerDecision, now?: number): PlannedDecision;
|
|
123
|
+
export declare function planWake(stateMachine: StateMachineSession | undefined, now?: number): PlannedDecision | undefined;
|
|
124
|
+
export declare function recordScheduled(stateMachine: StateMachineSession, stateName: string, wakeAt: number): SettledDecision;
|
|
125
|
+
export declare function recordPlannedTerminal(stateMachine: StateMachineSession, terminal: Extract<PlannedWork, {
|
|
126
|
+
terminal: unknown;
|
|
127
|
+
}>["terminal"]): SettledDecision;
|
|
128
|
+
export declare function recordSettled(stateMachine: StateMachineSession, stateName: string, kind: "agent" | "script" | "poll" | "timer", result: SubagentResult | ShellSettlement | TimerSettlement, partial?: {
|
|
129
|
+
assistantText?: string;
|
|
130
|
+
} | ShellPartialOutput, now?: number): SettledDecision;
|
|
131
|
+
export declare function applyStateOverride(state: StateMachineState, override: StateMachineStateOverride | undefined): StateMachineState;
|
|
132
|
+
export declare function renderTemplate(template: string, input: Record<string, unknown>): string;
|
|
133
|
+
export declare function parseStructuredOutput(stdout: string): Record<string, unknown>;
|
|
134
|
+
export declare function parseJsonObject(text: string): Record<string, unknown>;
|
|
135
|
+
//# sourceMappingURL=state-machine-decisions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-machine-decisions.d.ts","sourceRoot":"","sources":["../../../src/turn-runner/state-machine-decisions.ts"],"names":[],"mappings":"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"}
|