odai-dsh-agent 0.2.3 → 0.2.6
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 +3 -3
- package/build/bin/odai-dsh-agent.d.mts +3 -0
- package/build/bin/odai-dsh-agent.d.mts.map +1 -0
- package/build/bin/odai-dsh-agent.mjs +114 -0
- package/build/bin/odai-dsh-agent.mjs.map +1 -0
- package/build/src/dsh-version.d.mts +16 -0
- package/build/src/dsh-version.d.mts.map +1 -0
- package/build/src/dsh-version.mjs +20 -0
- package/build/src/dsh-version.mjs.map +1 -0
- package/build/src/installer.d.mts +46 -0
- package/build/src/installer.d.mts.map +1 -0
- package/build/src/installer.mjs +397 -0
- package/build/src/installer.mjs.map +1 -0
- package/package.json +13 -12
- package/preset/odai/runtime/compaction-config.d.mts +66 -0
- package/preset/odai/runtime/compaction-config.d.mts.map +1 -0
- package/preset/odai/runtime/compaction-config.mjs +320 -342
- package/preset/odai/runtime/compaction-config.mjs.map +1 -0
- package/preset/odai/runtime/compaction-runtime.d.mts +68 -0
- package/preset/odai/runtime/compaction-runtime.d.mts.map +1 -0
- package/preset/odai/runtime/compaction-runtime.mjs +157 -0
- package/preset/odai/runtime/compaction-runtime.mjs.map +1 -0
- package/preset/odai/runtime/context-activation.d.mts +31 -0
- package/preset/odai/runtime/context-activation.d.mts.map +1 -0
- package/preset/odai/runtime/context-activation.mjs +55 -49
- package/preset/odai/runtime/context-activation.mjs.map +1 -0
- package/preset/odai/runtime/context-capability.d.mts +16 -0
- package/preset/odai/runtime/context-capability.d.mts.map +1 -0
- package/preset/odai/runtime/context-capability.mjs +79 -74
- package/preset/odai/runtime/context-capability.mjs.map +1 -0
- package/preset/odai/runtime/governance.d.mts +30 -0
- package/preset/odai/runtime/governance.d.mts.map +1 -0
- package/preset/odai/runtime/governance.mjs +126 -113
- package/preset/odai/runtime/governance.mjs.map +1 -0
- package/preset/odai/runtime/human-care.d.mts +13 -0
- package/preset/odai/runtime/human-care.d.mts.map +1 -0
- package/preset/odai/runtime/human-care.mjs +45 -42
- package/preset/odai/runtime/human-care.mjs.map +1 -0
- package/preset/odai/runtime/human-safety-continuity-store.d.mts +43 -0
- package/preset/odai/runtime/human-safety-continuity-store.d.mts.map +1 -0
- package/preset/odai/runtime/human-safety-continuity-store.mjs +193 -215
- package/preset/odai/runtime/human-safety-continuity-store.mjs.map +1 -0
- package/preset/odai/runtime/human-safety-continuity.d.mts +27 -0
- package/preset/odai/runtime/human-safety-continuity.d.mts.map +1 -0
- package/preset/odai/runtime/human-safety-continuity.mjs +205 -216
- package/preset/odai/runtime/human-safety-continuity.mjs.map +1 -0
- package/preset/odai/runtime/human-safety.d.mts +14 -0
- package/preset/odai/runtime/human-safety.d.mts.map +1 -0
- package/preset/odai/runtime/human-safety.mjs +50 -47
- package/preset/odai/runtime/human-safety.mjs.map +1 -0
- package/preset/odai/runtime/index.d.mts +8 -0
- package/preset/odai/runtime/index.d.mts.map +1 -0
- package/preset/odai/runtime/index.mjs +161 -2441
- package/preset/odai/runtime/index.mjs.map +1 -0
- package/preset/odai/runtime/lifecycle-runtime.d.mts +83 -0
- package/preset/odai/runtime/lifecycle-runtime.d.mts.map +1 -0
- package/preset/odai/runtime/lifecycle-runtime.mjs +1081 -0
- package/preset/odai/runtime/lifecycle-runtime.mjs.map +1 -0
- package/preset/odai/runtime/model-route.d.mts +22 -0
- package/preset/odai/runtime/model-route.d.mts.map +1 -0
- package/preset/odai/runtime/model-route.mjs +68 -60
- package/preset/odai/runtime/model-route.mjs.map +1 -0
- package/preset/odai/runtime/output-config.d.mts +54 -0
- package/preset/odai/runtime/output-config.d.mts.map +1 -0
- package/preset/odai/runtime/output-config.mjs +289 -315
- package/preset/odai/runtime/output-config.mjs.map +1 -0
- package/preset/odai/runtime/output-policy-state.d.mts +3 -0
- package/preset/odai/runtime/output-policy-state.d.mts.map +1 -0
- package/preset/odai/runtime/output-policy-state.mjs +41 -29
- package/preset/odai/runtime/output-policy-state.mjs.map +1 -0
- package/preset/odai/runtime/prompt-runtime.d.mts +55 -0
- package/preset/odai/runtime/prompt-runtime.d.mts.map +1 -0
- package/preset/odai/runtime/prompt-runtime.mjs +303 -0
- package/preset/odai/runtime/prompt-runtime.mjs.map +1 -0
- package/preset/odai/runtime/research-packet.d.mts +30 -0
- package/preset/odai/runtime/research-packet.d.mts.map +1 -0
- package/preset/odai/runtime/research-packet.mjs +116 -117
- package/preset/odai/runtime/research-packet.mjs.map +1 -0
- package/preset/odai/runtime/responsibility-gap.d.mts +26 -0
- package/preset/odai/runtime/responsibility-gap.d.mts.map +1 -0
- package/preset/odai/runtime/responsibility-gap.mjs +91 -85
- package/preset/odai/runtime/responsibility-gap.mjs.map +1 -0
- package/preset/odai/runtime/responsibility-scope.d.mts +69 -0
- package/preset/odai/runtime/responsibility-scope.d.mts.map +1 -0
- package/preset/odai/runtime/responsibility-scope.mjs +199 -171
- package/preset/odai/runtime/responsibility-scope.mjs.map +1 -0
- package/preset/odai/runtime/role-overlays.d.mts +5 -0
- package/preset/odai/runtime/role-overlays.d.mts.map +1 -0
- package/preset/odai/runtime/role-overlays.mjs +14 -13
- package/preset/odai/runtime/role-overlays.mjs.map +1 -0
- package/preset/odai/runtime/route-card.d.mts +42 -0
- package/preset/odai/runtime/route-card.d.mts.map +1 -0
- package/preset/odai/runtime/route-card.mjs +158 -146
- package/preset/odai/runtime/route-card.mjs.map +1 -0
- package/preset/odai/runtime/router.d.mts +79 -0
- package/preset/odai/runtime/router.d.mts.map +1 -0
- package/preset/odai/runtime/router.mjs +491 -559
- package/preset/odai/runtime/router.mjs.map +1 -0
- package/preset/odai/runtime/routing-config.d.mts +76 -0
- package/preset/odai/runtime/routing-config.d.mts.map +1 -0
- package/preset/odai/runtime/routing-config.mjs +373 -438
- package/preset/odai/runtime/routing-config.mjs.map +1 -0
- package/preset/odai/runtime/routing-context.d.mts +47 -0
- package/preset/odai/runtime/routing-context.d.mts.map +1 -0
- package/preset/odai/runtime/routing-context.mjs +238 -273
- package/preset/odai/runtime/routing-context.mjs.map +1 -0
- package/preset/odai/runtime/runtime-config.d.mts +24 -0
- package/preset/odai/runtime/runtime-config.d.mts.map +1 -0
- package/preset/odai/runtime/runtime-config.mjs +181 -0
- package/preset/odai/runtime/runtime-config.mjs.map +1 -0
- package/preset/odai/runtime/runtime-support.d.mts +91 -0
- package/preset/odai/runtime/runtime-support.d.mts.map +1 -0
- package/preset/odai/runtime/runtime-support.mjs +371 -0
- package/preset/odai/runtime/runtime-support.mjs.map +1 -0
- package/preset/odai/runtime/runtime-types.d.mts +235 -0
- package/preset/odai/runtime/runtime-types.d.mts.map +1 -0
- package/preset/odai/runtime/runtime-types.mjs +4 -0
- package/preset/odai/runtime/runtime-types.mjs.map +1 -0
- package/preset/odai/runtime/semantic-memory-store.d.mts +110 -0
- package/preset/odai/runtime/semantic-memory-store.d.mts.map +1 -0
- package/preset/odai/runtime/semantic-memory-store.mjs +271 -385
- package/preset/odai/runtime/semantic-memory-store.mjs.map +1 -0
- package/preset/odai/runtime/semantic-memory.d.mts +88 -0
- package/preset/odai/runtime/semantic-memory.d.mts.map +1 -0
- package/preset/odai/runtime/semantic-memory.mjs +790 -750
- package/preset/odai/runtime/semantic-memory.mjs.map +1 -0
- package/preset/odai/runtime/session-compat.d.mts +31 -0
- package/preset/odai/runtime/session-compat.d.mts.map +1 -0
- package/preset/odai/runtime/session-compat.mjs +301 -328
- package/preset/odai/runtime/session-compat.mjs.map +1 -0
- package/preset/odai/runtime/session-evidence.d.mts +25 -0
- package/preset/odai/runtime/session-evidence.d.mts.map +1 -0
- package/preset/odai/runtime/session-evidence.mjs +309 -287
- package/preset/odai/runtime/session-evidence.mjs.map +1 -0
- package/preset/odai/runtime/skill-bundle.d.mts +53 -0
- package/preset/odai/runtime/skill-bundle.d.mts.map +1 -0
- package/preset/odai/runtime/skill-bundle.mjs +286 -276
- package/preset/odai/runtime/skill-bundle.mjs.map +1 -0
- package/preset/odai/runtime/skill-evolution.d.mts +112 -0
- package/preset/odai/runtime/skill-evolution.d.mts.map +1 -0
- package/preset/odai/runtime/skill-evolution.mjs +1287 -1261
- package/preset/odai/runtime/skill-evolution.mjs.map +1 -0
- package/preset/odai/runtime/skill-selection-state.d.mts +5 -0
- package/preset/odai/runtime/skill-selection-state.d.mts.map +1 -0
- package/preset/odai/runtime/skill-selection-state.mjs +59 -43
- package/preset/odai/runtime/skill-selection-state.mjs.map +1 -0
- package/preset/odai/runtime/skill-selector.d.mts +28 -0
- package/preset/odai/runtime/skill-selector.d.mts.map +1 -0
- package/preset/odai/runtime/skill-selector.mjs +100 -109
- package/preset/odai/runtime/skill-selector.mjs.map +1 -0
- package/preset/odai/runtime/skill-source-config.d.mts +32 -0
- package/preset/odai/runtime/skill-source-config.d.mts.map +1 -0
- package/preset/odai/runtime/skill-source-config.mjs +200 -210
- package/preset/odai/runtime/skill-source-config.mjs.map +1 -0
- package/preset/odai/runtime/store-lock.d.mts +2 -0
- package/preset/odai/runtime/store-lock.d.mts.map +1 -0
- package/preset/odai/runtime/store-lock.mjs +92 -87
- package/preset/odai/runtime/store-lock.mjs.map +1 -0
- package/preset/odai/runtime/tool-runtime.d.mts +43 -0
- package/preset/odai/runtime/tool-runtime.d.mts.map +1 -0
- package/preset/odai/runtime/tool-runtime.mjs +221 -0
- package/preset/odai/runtime/tool-runtime.mjs.map +1 -0
- package/bin/odai-dsh-agent.mjs +0 -108
- package/scripts/verify-agent-load.mjs +0 -257
- package/src/dsh-version.mjs +0 -24
- package/src/installer.mjs +0 -398
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
|
-
|
|
2
|
+
import { isUnknownRecord } from "./runtime-types.mjs";
|
|
3
3
|
const DEFAULT_MAX_CHARS = 12_000;
|
|
4
4
|
const DEFAULT_MAX_EVENTS = 80;
|
|
5
5
|
const REQUIREMENT_PATTERNS = [/requirement/iu, /acceptance/iu, /需求/u, /要求/u, /目标/u, /验收/u];
|
|
@@ -7,315 +7,280 @@ const ACCEPTANCE_PATTERNS = [/\bA\d+\b/u, /accept(?:ance)?/iu, /验收/u, /通
|
|
|
7
7
|
const DIFF_OUTPUT_PATTERNS = [/diff --git/iu, /^---\s+a\/[^\n]+\n\+\+\+\s+b\//imu];
|
|
8
8
|
const DIFF_COMMAND_PATTERNS = [/^\s*git(?:\.exe)?\s+diff(?:\s|$)/iu];
|
|
9
9
|
const TEST_COMMAND_PATTERNS = [
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
/^\s*(?:&\s*)?(?:"[^"\r\n]*[\\/]node(?:\.exe)?"|[A-Za-z]:\\[^\s"\r\n]*[\\/]node(?:\.exe)?|\/[^\s"\r\n]*\/node|node(?:\.exe)?)\s+--test(?:\s|$)/iu,
|
|
11
|
+
/^\s*(?:npm|pnpm|yarn)(?:\.cmd)?(?:\s+--(?:prefix|dir)\s+(?:"[^"]+"|\S+))?\s+(?:run\s+)?test(?:\s|$)/iu,
|
|
12
|
+
/^\s*(?:pytest|vitest|jest|mocha)(?:\.cmd)?(?:\s|$)/iu,
|
|
13
|
+
/^\s*(?:go|cargo|dotnet)\s+test(?:\s|$)/iu,
|
|
14
14
|
];
|
|
15
15
|
const TEST_SUCCESS_PATTERNS = [
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
/exit code:\s*0/iu,
|
|
17
|
+
/(?:^|\n)[^\n]*(?:pass|passed)\s*[:=]?\s*[1-9]\d*/iu,
|
|
18
|
+
/(?:^|\n)[^\n]*[1-9]\d*\s+passed\b/iu,
|
|
19
|
+
/(?:^|\n)[^\n]*fail(?:ed)?\s*[:=]?\s*0\b/iu,
|
|
20
|
+
/\btests?\s+\d+[^\n]*(?:pass|passed)\s+[1-9]\d*[^\n]*fail(?:ed)?\s+0\b/iu,
|
|
21
21
|
];
|
|
22
22
|
const TEST_FAILURE_PATTERNS = [
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
/exit code:\s*[1-9]\d*/iu,
|
|
24
|
+
/(?:^|\n)[^\n]*fail(?:ed)?\s*[:=]?\s*[1-9]\d*/iu,
|
|
25
|
+
/\b(?:tests?|test suite) failed\b/iu,
|
|
26
26
|
];
|
|
27
27
|
const WRITE_TOOL_NAMES = new Set(["edit", "write", "apply_patch"]);
|
|
28
28
|
const SHELL_TOOL_NAMES = new Set(["bash", "pwsh", "shell", "powershell"]);
|
|
29
29
|
const SHELL_CONTROL_PATTERN = /[;&|<>]/u;
|
|
30
30
|
const READ_ONLY_SHELL_COMMAND_PATTERNS = [
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
/^\s*git(?:\.exe)?\s+(?:status|log|show|rev-parse|ls-files|branch)(?:\s|$)/iu,
|
|
32
|
+
/^\s*(?:Get-[A-Za-z]+|Select-String|Test-Path)(?:\s|$)/iu,
|
|
33
|
+
/^\s*(?:rg|grep|find|ls|pwd|cat|head|tail|wc|where|which)(?:\.exe)?(?:\s|$)/iu,
|
|
34
|
+
/^\s*node(?:\.exe)?\s+--check(?:\s|$)/iu,
|
|
35
35
|
];
|
|
36
36
|
const WRITE_COMMAND_PATTERNS = [
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
/(?:^|\s)(?:git\s+apply|apply_patch|sed\s+-i|perl\s+-pi)(?:\s|$)/iu,
|
|
38
|
+
/(?:^|\s)(?:Set-Content|Add-Content|Out-File|Remove-Item|Move-Item|Copy-Item|New-Item)(?:\s|$)/iu,
|
|
39
|
+
/(?:^|\s)(?:rm|mv|cp|mkdir|touch)(?:\s|$)/u,
|
|
40
40
|
];
|
|
41
|
-
|
|
42
41
|
function textBlocks(value, depth = 0) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
42
|
+
if (depth > 5 || value === null || value === undefined)
|
|
43
|
+
return [];
|
|
44
|
+
if (typeof value === "string")
|
|
45
|
+
return [value];
|
|
46
|
+
if (Array.isArray(value))
|
|
47
|
+
return value.flatMap((item) => textBlocks(item, depth + 1));
|
|
48
|
+
if (!isUnknownRecord(value))
|
|
49
|
+
return [];
|
|
50
|
+
if (value.type === "text" && typeof value.text === "string")
|
|
51
|
+
return [value.text];
|
|
52
|
+
const keys = ["content", "message", "output", "result", "data", "text", "value", "command", "args", "input"];
|
|
53
|
+
return keys.flatMap((key) => key in value ? textBlocks(value[key], depth + 1) : []);
|
|
50
54
|
}
|
|
51
|
-
|
|
52
55
|
function matchesAny(text, patterns) {
|
|
53
|
-
|
|
56
|
+
return patterns.some((pattern) => pattern.test(text));
|
|
54
57
|
}
|
|
55
|
-
|
|
56
58
|
function toolResultBlocks(value, depth = 0) {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
59
|
+
if (depth > 5 || value === null || value === undefined)
|
|
60
|
+
return [];
|
|
61
|
+
if (Array.isArray(value))
|
|
62
|
+
return value.flatMap((item) => toolResultBlocks(item, depth + 1));
|
|
63
|
+
if (!isUnknownRecord(value))
|
|
64
|
+
return [];
|
|
65
|
+
const own = value.type === "tool-result" ? [value] : [];
|
|
66
|
+
return own.concat(Object.values(value).flatMap((item) => toolResultBlocks(item, depth + 1)));
|
|
62
67
|
}
|
|
63
|
-
|
|
64
68
|
function nativeToolResult(data) {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
69
|
+
const blocks = toolResultBlocks(data);
|
|
70
|
+
if (blocks.length !== 1)
|
|
71
|
+
return undefined;
|
|
72
|
+
const block = blocks[0];
|
|
73
|
+
const message = isUnknownRecord(data.message) ? data.message : undefined;
|
|
74
|
+
const source = isUnknownRecord(message?.source) ? message.source : undefined;
|
|
75
|
+
if (source?.kind !== "tool"
|
|
76
|
+
|| typeof source.callId !== "string"
|
|
77
|
+
|| !source.callId
|
|
78
|
+
|| block?.toolCallId !== source.callId
|
|
79
|
+
|| typeof block.isError !== "boolean"
|
|
80
|
+
|| !Array.isArray(block.content))
|
|
81
|
+
return undefined;
|
|
82
|
+
return Object.freeze({
|
|
83
|
+
callId: source.callId,
|
|
84
|
+
successful: block.isError === false && !data.error,
|
|
85
|
+
});
|
|
81
86
|
}
|
|
82
|
-
|
|
83
87
|
function commandFromCall(call) {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
88
|
+
const arguments_ = call?.arguments;
|
|
89
|
+
if (typeof arguments_ === "string")
|
|
90
|
+
return arguments_;
|
|
91
|
+
if (!isUnknownRecord(arguments_))
|
|
92
|
+
return "";
|
|
93
|
+
for (const field of ["command", "cmd", "script"]) {
|
|
94
|
+
if (typeof arguments_[field] === "string")
|
|
95
|
+
return arguments_[field];
|
|
96
|
+
}
|
|
97
|
+
return "";
|
|
91
98
|
}
|
|
92
|
-
|
|
93
99
|
function resultReferencesCall(event, call) {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
100
|
+
return Number.isSafeInteger(call?.seq)
|
|
101
|
+
&& Array.isArray(event?.sourceEventSeqs)
|
|
102
|
+
&& event.sourceEventSeqs.length === 1
|
|
103
|
+
&& event.sourceEventSeqs[0] === call.seq;
|
|
98
104
|
}
|
|
99
|
-
|
|
100
105
|
function nativeToolCalls(events, startIndex) {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
106
|
+
const calls = new Map();
|
|
107
|
+
const duplicates = new Set();
|
|
108
|
+
for (let index = startIndex; index < events.length; index += 1) {
|
|
109
|
+
const event = events[index];
|
|
110
|
+
if (event?.type !== "tool/call")
|
|
111
|
+
continue;
|
|
112
|
+
const callId = event.data?.callId;
|
|
113
|
+
const name = event.data?.name;
|
|
114
|
+
if (typeof callId !== "string" || !callId || typeof name !== "string" || !name || !Number.isSafeInteger(event.seq))
|
|
115
|
+
continue;
|
|
116
|
+
if (calls.has(callId)) {
|
|
117
|
+
calls.delete(callId);
|
|
118
|
+
duplicates.add(callId);
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
if (duplicates.has(callId))
|
|
122
|
+
continue;
|
|
123
|
+
calls.set(callId, Object.freeze({ index, seq: event.seq, name, arguments: event.data?.arguments }));
|
|
113
124
|
}
|
|
114
|
-
|
|
115
|
-
calls.set(callId, Object.freeze({
|
|
116
|
-
index,
|
|
117
|
-
seq: event.seq,
|
|
118
|
-
name,
|
|
119
|
-
arguments: event.data?.arguments,
|
|
120
|
-
}));
|
|
121
|
-
}
|
|
122
|
-
return calls;
|
|
125
|
+
return calls;
|
|
123
126
|
}
|
|
124
|
-
|
|
125
127
|
function eventEvidence(event, index, calls) {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
if (event?.type === "tool/result") {
|
|
148
|
-
const result = nativeToolResult(event.data);
|
|
149
|
-
const call = result ? calls.get(result.callId) : undefined;
|
|
150
|
-
if (!call || call.index >= index || !resultReferencesCall(event, call)) return undefined;
|
|
151
|
-
const callId = result.callId;
|
|
152
|
-
const successful = result.successful;
|
|
153
|
-
const command = commandFromCall(call);
|
|
154
|
-
const simpleCommand = !SHELL_CONTROL_PATTERN.test(command);
|
|
155
|
-
const diffCommand = simpleCommand && matchesAny(command, DIFF_COMMAND_PATTERNS);
|
|
156
|
-
const testCommand = simpleCommand && matchesAny(command, TEST_COMMAND_PATTERNS);
|
|
157
|
-
const explicitWrite = WRITE_TOOL_NAMES.has(call.name) || matchesAny(command, WRITE_COMMAND_PATTERNS);
|
|
158
|
-
const unknownShellMutation = SHELL_TOOL_NAMES.has(call.name)
|
|
159
|
-
&& !diffCommand
|
|
160
|
-
&& !testCommand
|
|
161
|
-
&& (SHELL_CONTROL_PATTERN.test(command) || !matchesAny(command, READ_ONLY_SHELL_COMMAND_PATTERNS));
|
|
162
|
-
const writeCommand = explicitWrite || unknownShellMutation;
|
|
163
|
-
if (!successful && !testCommand && !writeCommand) return undefined;
|
|
164
|
-
const output = textBlocks(event.data).join("\n").trim();
|
|
165
|
-
const kinds = successful ? ["tool"] : [];
|
|
166
|
-
if (successful && diffCommand && matchesAny(output, DIFF_OUTPUT_PATTERNS)) kinds.push("diff");
|
|
167
|
-
if (writeCommand) kinds.push("write");
|
|
168
|
-
if (testCommand) {
|
|
169
|
-
const testPassed = successful
|
|
170
|
-
&& matchesAny(output, TEST_SUCCESS_PATTERNS)
|
|
171
|
-
&& !matchesAny(output, TEST_FAILURE_PATTERNS);
|
|
172
|
-
kinds.push(testPassed ? "test" : "test-failed");
|
|
128
|
+
if (event?.type === "user/message") {
|
|
129
|
+
const text = textBlocks(event.data).join("\n").trim();
|
|
130
|
+
return text ? { index, source: "user", kinds: ["requirement"], label: "earlier user requirement", text } : undefined;
|
|
131
|
+
}
|
|
132
|
+
if (["assistant/message", "agent/message", "message/assistant"].includes(event?.type)) {
|
|
133
|
+
const text = textBlocks(event.data).join("\n").trim();
|
|
134
|
+
if (!text)
|
|
135
|
+
return undefined;
|
|
136
|
+
const kinds = ["assistant-claim"];
|
|
137
|
+
if (matchesAny(text, REQUIREMENT_PATTERNS))
|
|
138
|
+
kinds.push("requirement");
|
|
139
|
+
if (matchesAny(text, ACCEPTANCE_PATTERNS))
|
|
140
|
+
kinds.push("acceptance");
|
|
141
|
+
return { index, source: "assistant", kinds, label: "controller claim", text };
|
|
142
|
+
}
|
|
143
|
+
if (event?.type === "odai/route-card-frozen" && event.data?.card) {
|
|
144
|
+
return {
|
|
145
|
+
index, source: "route-card", kinds: ["acceptance"],
|
|
146
|
+
label: `frozen route card ${typeof event.data.card.id === "string" ? event.data.card.id : "(unknown)"}`,
|
|
147
|
+
text: JSON.stringify(event.data.card),
|
|
148
|
+
};
|
|
173
149
|
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
150
|
+
if (event?.type === "tool/result") {
|
|
151
|
+
const result = nativeToolResult(event.data);
|
|
152
|
+
if (!result)
|
|
153
|
+
return undefined;
|
|
154
|
+
const call = calls.get(result.callId);
|
|
155
|
+
if (!call || call.index >= index || !resultReferencesCall(event, call))
|
|
156
|
+
return undefined;
|
|
157
|
+
const command = commandFromCall(call);
|
|
158
|
+
const simpleCommand = !SHELL_CONTROL_PATTERN.test(command);
|
|
159
|
+
const diffCommand = simpleCommand && matchesAny(command, DIFF_COMMAND_PATTERNS);
|
|
160
|
+
const testCommand = simpleCommand && matchesAny(command, TEST_COMMAND_PATTERNS);
|
|
161
|
+
const explicitWrite = WRITE_TOOL_NAMES.has(call.name) || matchesAny(command, WRITE_COMMAND_PATTERNS);
|
|
162
|
+
const unknownShellMutation = SHELL_TOOL_NAMES.has(call.name)
|
|
163
|
+
&& !diffCommand && !testCommand
|
|
164
|
+
&& (SHELL_CONTROL_PATTERN.test(command) || !matchesAny(command, READ_ONLY_SHELL_COMMAND_PATTERNS));
|
|
165
|
+
const writeCommand = explicitWrite || unknownShellMutation;
|
|
166
|
+
if (!result.successful && !testCommand && !writeCommand)
|
|
167
|
+
return undefined;
|
|
168
|
+
const output = textBlocks(event.data).join("\n").trim();
|
|
169
|
+
const kinds = result.successful ? ["tool"] : [];
|
|
170
|
+
if (result.successful && diffCommand && matchesAny(output, DIFF_OUTPUT_PATTERNS))
|
|
171
|
+
kinds.push("diff");
|
|
172
|
+
if (writeCommand)
|
|
173
|
+
kinds.push("write");
|
|
174
|
+
if (testCommand) {
|
|
175
|
+
const testPassed = result.successful && matchesAny(output, TEST_SUCCESS_PATTERNS) && !matchesAny(output, TEST_FAILURE_PATTERNS);
|
|
176
|
+
kinds.push(testPassed ? "test" : "test-failed");
|
|
177
|
+
}
|
|
178
|
+
const identity = `tool-call:${result.callId}`;
|
|
179
|
+
const text = [command ? `command: ${command}` : "", output || "(no textual result)"].filter(Boolean).join("\n\n");
|
|
180
|
+
return { index, source: "tool", kinds, label: `tool ${call.name} (${identity})`, identity, text };
|
|
181
|
+
}
|
|
182
|
+
if (event?.type === "odai/tool-observed" && event.data?.isError === false) {
|
|
183
|
+
const identity = typeof event.data.callId === "string" ? `tool-call:${event.data.callId}` : undefined;
|
|
184
|
+
const tool = typeof event.data.tool === "string" ? event.data.tool : "unknown";
|
|
185
|
+
return {
|
|
186
|
+
index, source: "tool", kinds: ["tool", ...(WRITE_TOOL_NAMES.has(tool) ? ["write"] : [])],
|
|
187
|
+
label: `observed tool ${tool}${identity ? ` (${identity})` : ""}`,
|
|
188
|
+
...(identity ? { identity } : {}), text: JSON.stringify(event.data),
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
return undefined;
|
|
198
192
|
}
|
|
199
|
-
|
|
200
193
|
function truncateText(text, limit) {
|
|
201
|
-
|
|
202
|
-
|
|
194
|
+
if (text.length <= limit)
|
|
195
|
+
return { text, truncated: false };
|
|
196
|
+
return { text: `${text.slice(0, Math.max(0, limit - 24))}\n...[packet truncated]`, truncated: true };
|
|
203
197
|
}
|
|
204
|
-
|
|
205
198
|
function digestPacket(value) {
|
|
206
|
-
|
|
199
|
+
return createHash("sha256").update(JSON.stringify(value)).digest("hex");
|
|
207
200
|
}
|
|
208
|
-
|
|
209
201
|
function coverageFor(currentTask, entries) {
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
failedTestCount: failedTestEntries.length,
|
|
233
|
-
writeCount: matching("write").length,
|
|
234
|
-
toolEvidenceCount: matching("tool").length,
|
|
235
|
-
latestWriteIndex,
|
|
236
|
-
latestDiffIndex,
|
|
237
|
-
latestTestIndex,
|
|
238
|
-
latestFailedTestIndex,
|
|
239
|
-
currentEvidence,
|
|
240
|
-
});
|
|
202
|
+
const matching = (kind) => entries.filter((entry) => entry.kinds.includes(kind));
|
|
203
|
+
const latestIndex = (kind) => matching(kind).reduce((latest, entry) => Math.max(latest, entry.index), -1);
|
|
204
|
+
const acceptanceCount = matching("acceptance").length;
|
|
205
|
+
const diffEntries = matching("diff");
|
|
206
|
+
const testEntries = matching("test");
|
|
207
|
+
const failedTestEntries = matching("test-failed");
|
|
208
|
+
const latestWriteIndex = latestIndex("write");
|
|
209
|
+
const latestDiffIndex = latestIndex("diff");
|
|
210
|
+
const latestTestIndex = latestIndex("test");
|
|
211
|
+
const latestFailedTestIndex = latestIndex("test-failed");
|
|
212
|
+
const currentEvidence = acceptanceCount > 0
|
|
213
|
+
&& latestDiffIndex >= 0 && latestTestIndex >= 0
|
|
214
|
+
&& latestDiffIndex > latestWriteIndex && latestTestIndex > latestWriteIndex
|
|
215
|
+
&& latestTestIndex > latestFailedTestIndex
|
|
216
|
+
&& diffEntries.some((diff) => testEntries.some((testResult) => diff.identity !== testResult.identity));
|
|
217
|
+
return Object.freeze({
|
|
218
|
+
requirements: Boolean(currentTask) || matching("requirement").length > 0,
|
|
219
|
+
acceptanceCount, diffCount: diffEntries.length, testCount: testEntries.length,
|
|
220
|
+
failedTestCount: failedTestEntries.length, writeCount: matching("write").length,
|
|
221
|
+
toolEvidenceCount: matching("tool").length, latestWriteIndex, latestDiffIndex,
|
|
222
|
+
latestTestIndex, latestFailedTestIndex, currentEvidence,
|
|
223
|
+
});
|
|
241
224
|
}
|
|
242
|
-
|
|
243
225
|
export function buildRoleContextPacket(agent, role, taskText, options = {}) {
|
|
244
|
-
|
|
245
|
-
? options.
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
?
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
entries,
|
|
278
|
-
|
|
279
|
-
truncated
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
&& coverage.diffCount > 0
|
|
286
|
-
&& coverage.testCount > 0
|
|
287
|
-
&& coverage.toolEvidenceCount > 0
|
|
288
|
-
&& coverage.currentEvidence;
|
|
289
|
-
return Object.freeze({
|
|
290
|
-
...packetBody,
|
|
291
|
-
digest,
|
|
292
|
-
evidenceCount: entries.length,
|
|
293
|
-
toolEvidenceCount: coverage.toolEvidenceCount,
|
|
294
|
-
sufficient: role === "reviewer" ? reviewerSufficient : Boolean(task.text),
|
|
295
|
-
});
|
|
226
|
+
const maxChars = Number.isSafeInteger(options.maxChars) && (options.maxChars ?? 0) > 0 ? options.maxChars : DEFAULT_MAX_CHARS;
|
|
227
|
+
const maxEvents = Number.isSafeInteger(options.maxEvents) && (options.maxEvents ?? 0) > 0 ? options.maxEvents : DEFAULT_MAX_EVENTS;
|
|
228
|
+
const taskBudget = Math.max(128, Math.floor(maxChars / 2));
|
|
229
|
+
const task = truncateText(String(taskText ?? "").trim(), taskBudget);
|
|
230
|
+
const events = Array.isArray(agent?.session?.events) ? agent.session.events : [];
|
|
231
|
+
const startIndex = Math.max(0, events.length - maxEvents);
|
|
232
|
+
const calls = nativeToolCalls(events, startIndex);
|
|
233
|
+
const selected = [];
|
|
234
|
+
let evidenceChars = 0;
|
|
235
|
+
let truncated = task.truncated || events.length > maxEvents;
|
|
236
|
+
for (let index = events.length - 1; index >= startIndex; index -= 1) {
|
|
237
|
+
const event = events[index];
|
|
238
|
+
if (!event)
|
|
239
|
+
continue;
|
|
240
|
+
const entry = eventEvidence(event, index, calls);
|
|
241
|
+
if (!entry)
|
|
242
|
+
continue;
|
|
243
|
+
const remaining = maxChars - task.text.length - evidenceChars;
|
|
244
|
+
if (remaining <= 0) {
|
|
245
|
+
truncated = true;
|
|
246
|
+
break;
|
|
247
|
+
}
|
|
248
|
+
const bounded = truncateText(entry.text, remaining);
|
|
249
|
+
selected.push(Object.freeze({ ...entry, kinds: Object.freeze([...new Set(entry.kinds)]), text: bounded.text }));
|
|
250
|
+
evidenceChars += bounded.text.length;
|
|
251
|
+
if (bounded.truncated) {
|
|
252
|
+
truncated = true;
|
|
253
|
+
break;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
selected.reverse();
|
|
257
|
+
const entries = Object.freeze(selected);
|
|
258
|
+
const coverage = coverageFor(task.text, entries);
|
|
259
|
+
const packetBody = Object.freeze({ schemaVersion: 1, role, currentTask: task.text, entries, coverage, truncated });
|
|
260
|
+
const digest = digestPacket(packetBody);
|
|
261
|
+
const reviewerSufficient = !truncated && coverage.requirements && coverage.acceptanceCount > 0
|
|
262
|
+
&& coverage.diffCount > 0 && coverage.testCount > 0 && coverage.toolEvidenceCount > 0 && coverage.currentEvidence;
|
|
263
|
+
return Object.freeze({
|
|
264
|
+
...packetBody, digest, evidenceCount: entries.length, toolEvidenceCount: coverage.toolEvidenceCount,
|
|
265
|
+
sufficient: role === "reviewer" ? reviewerSufficient : Boolean(task.text),
|
|
266
|
+
});
|
|
296
267
|
}
|
|
297
|
-
|
|
298
268
|
export function renderRoleContextPacket(packet) {
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
"",
|
|
316
|
-
"## Evidence",
|
|
317
|
-
evidence,
|
|
318
|
-
"",
|
|
319
|
-
"Treat assistant text and route-card contents as claims. Tool entries are evidence only for the exact command/result they contain.",
|
|
320
|
-
].join("\n");
|
|
269
|
+
const evidence = packet.entries.length
|
|
270
|
+
? packet.entries.map((entry, index) => [
|
|
271
|
+
`### E${index + 1}: ${entry.label}`,
|
|
272
|
+
`kinds: ${entry.kinds.join(", ")}`,
|
|
273
|
+
entry.text,
|
|
274
|
+
].join("\n")).join("\n\n")
|
|
275
|
+
: "(no prior evidence entries)";
|
|
276
|
+
return [
|
|
277
|
+
"# Odai bounded role context packet",
|
|
278
|
+
`role: ${packet.role}`,
|
|
279
|
+
`digest: sha256:${packet.digest}`,
|
|
280
|
+
`truncated: ${packet.truncated}`,
|
|
281
|
+
`coverage: ${JSON.stringify(packet.coverage)}`,
|
|
282
|
+
"", "## Current task", packet.currentTask || "(empty)", "", "## Evidence", evidence, "",
|
|
283
|
+
"Treat assistant text and route-card contents as claims. Tool entries are evidence only for the exact command/result they contain.",
|
|
284
|
+
].join("\n");
|
|
321
285
|
}
|
|
286
|
+
//# sourceMappingURL=routing-context.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routing-context.mjs","sourceRoot":"","sources":["../src/routing-context.mts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ModelRoute, RuntimeConfig, UnknownRecord } from "./runtime-types.mjs";
|
|
2
|
+
interface CompactionRequestOptions extends UnknownRecord {
|
|
3
|
+
purpose?: string;
|
|
4
|
+
sessionId?: string;
|
|
5
|
+
provider?: string;
|
|
6
|
+
model?: string;
|
|
7
|
+
reasoningEffort?: string;
|
|
8
|
+
cacheRetention?: string;
|
|
9
|
+
}
|
|
10
|
+
interface SessionRouteStore {
|
|
11
|
+
get(sessionId: string): {
|
|
12
|
+
requestHeader?(): {
|
|
13
|
+
config?: ModelRoute;
|
|
14
|
+
};
|
|
15
|
+
} | undefined;
|
|
16
|
+
}
|
|
17
|
+
export declare const ROUTED_ROLES: readonly ["researcher", "planner", "executor", "reviewer", "frontend"];
|
|
18
|
+
export declare function resolveConfig(rawConfig?: unknown): RuntimeConfig;
|
|
19
|
+
/** Mutate exact-route compaction options; returns true only when an option changed. */
|
|
20
|
+
export declare function inheritCompactionReasoning(options: CompactionRequestOptions, sessions: SessionRouteStore | undefined, cacheRetention?: RuntimeConfig["compaction"]["cacheRetention"]): boolean;
|
|
21
|
+
export declare function resolveSkillPath(configuredPath?: string, env?: NodeJS.ProcessEnv): string;
|
|
22
|
+
export declare function loadRoleContracts(skillPath: string): unknown;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=runtime-config.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-config.d.mts","sourceRoot":"","sources":["../src/runtime-config.mts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpF,UAAU,wBAAyB,SAAQ,aAAa;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,UAAU,iBAAiB;IACzB,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG;QACtB,aAAa,CAAC,IAAI;YAAE,MAAM,CAAC,EAAE,UAAU,CAAA;SAAE,CAAC;KAC3C,GAAG,SAAS,CAAC;CACf;AAKD,eAAO,MAAM,YAAY,wEAAqB,CAAC;AAyB/C,wBAAgB,aAAa,CAAC,SAAS,GAAE,OAAY,GAAG,aAAa,CAoGpE;AAED,uFAAuF;AACvF,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,wBAAwB,EACjC,QAAQ,EAAE,iBAAiB,GAAG,SAAS,EACvC,cAAc,GAAE,aAAa,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAsB,GACjF,OAAO,CA0BT;AAED,wBAAgB,gBAAgB,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAetG;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE5D"}
|