odai-dsh-agent 0.2.5 → 0.2.7
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 +398 -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 +190 -2473
- 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 +1140 -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 +93 -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 +15 -14
- 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 +80 -0
- package/preset/odai/runtime/router.d.mts.map +1 -0
- package/preset/odai/runtime/router.mjs +509 -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 +64 -0
- package/preset/odai/runtime/routing-context.d.mts.map +1 -0
- package/preset/odai/runtime/routing-context.mjs +398 -277
- 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 +237 -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 -260
- package/src/dsh-version.mjs +0 -24
- package/src/installer.mjs +0 -385
|
@@ -1,168 +1,180 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
|
-
|
|
2
|
+
import { isUnknownRecord } from "./runtime-types.mjs";
|
|
3
3
|
export const ROUTE_CARD_PROMPT = [
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
"## Odai frozen route cards",
|
|
5
|
+
"Use odai_route_card only after planning has frozen a concrete implementation boundary and executor separation has an observable net benefit.",
|
|
6
|
+
"After the canonical executor reassessment proves observable net benefit, freeze the card before implementation continues. Otherwise continue directly without a card or process narration.",
|
|
7
|
+
"A card must preserve the target, decisive evidence, allowed and forbidden scope, acceptance conditions, and stop condition. Do not freeze a card merely because an executor model is configured or cheaper.",
|
|
8
|
+
"The controller owns the card. Child agents may not create, replace, or clear it. A card is claimed for one executor attempt and consumed only after an applied executor route receipt; validation, provider, or receipt failure releases the claim for retry. A verified provider max-token interruption may reclaim that same card only after a direct user continuation, without changing its scope or authorization. A later explicit clear is terminal and cannot be undone by a delayed release.",
|
|
9
|
+
"When the original current task already authorizes implementation, a planner that freezes a card must submit an executor responsibility gap so implementation continues automatically in the same user task. Ask the user only for a new task, plan-only request, changed scope, or missing user-owned authorization.",
|
|
10
10
|
].join("\n");
|
|
11
|
-
|
|
12
11
|
function nonEmptyString(value, field) {
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
if (typeof value !== "string" || value.trim() === "")
|
|
13
|
+
throw new TypeError(`${field} must be a non-empty string`);
|
|
14
|
+
return value.trim();
|
|
15
15
|
}
|
|
16
|
-
|
|
17
16
|
function stringList(value, field, minimum = 0) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
if (!Array.isArray(value) || value.length < minimum) {
|
|
18
|
+
throw new TypeError(`${field} must be an array with at least ${minimum} item${minimum === 1 ? "" : "s"}`);
|
|
19
|
+
}
|
|
20
|
+
return Object.freeze(value.map((item, index) => nonEmptyString(item, `${field}[${index}]`)));
|
|
22
21
|
}
|
|
23
|
-
|
|
24
22
|
function normalizeAuthorization(value) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
23
|
+
if (!isUnknownRecord(value))
|
|
24
|
+
return Object.freeze({ status: "unknown" });
|
|
25
|
+
const status = value.status;
|
|
26
|
+
if (status !== "authorized" && status !== "plan-only" && status !== "unknown") {
|
|
27
|
+
return Object.freeze({ status: "unknown" });
|
|
28
|
+
}
|
|
29
|
+
const userMessageId = typeof value.userMessageId === "string" && value.userMessageId.length > 0 && value.userMessageId.length <= 200
|
|
30
|
+
? value.userMessageId
|
|
31
|
+
: undefined;
|
|
32
|
+
return Object.freeze({ status, ...(userMessageId ? { userMessageId } : {}) });
|
|
31
33
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
34
|
+
function normalizeCard(arguments_, authorization) {
|
|
35
|
+
if (arguments_.observableBenefit !== true) {
|
|
36
|
+
throw new TypeError("observableBenefit must be true before freezing an executor route card");
|
|
37
|
+
}
|
|
38
|
+
return Object.freeze({
|
|
39
|
+
id: randomUUID(),
|
|
40
|
+
frozen: true,
|
|
41
|
+
observableBenefit: true,
|
|
42
|
+
authorization: normalizeAuthorization(authorization),
|
|
43
|
+
target: nonEmptyString(arguments_.target, "target"),
|
|
44
|
+
evidence: stringList(arguments_.evidence, "evidence", 1),
|
|
45
|
+
scope: stringList(arguments_.scope, "scope", 1),
|
|
46
|
+
accept: stringList(arguments_.accept, "accept", 1),
|
|
47
|
+
stop: nonEmptyString(arguments_.stop, "stop"),
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
function isRouteCard(value) {
|
|
51
|
+
return isUnknownRecord(value)
|
|
52
|
+
&& value.frozen === true
|
|
53
|
+
&& typeof value.id === "string";
|
|
48
54
|
}
|
|
49
|
-
|
|
50
55
|
function routeCardInState(events, acceptedStates) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
56
|
+
const source = Array.isArray(events) ? events : [];
|
|
57
|
+
const permanentlyCleared = new Set(source.flatMap((event) => (event?.type === "odai/route-card-cleared" && typeof event.data?.cardId === "string"
|
|
58
|
+
? [event.data.cardId]
|
|
59
|
+
: [])));
|
|
60
|
+
const latestState = new Map();
|
|
61
|
+
for (let index = source.length - 1; index >= 0; index -= 1) {
|
|
62
|
+
const event = source[index];
|
|
63
|
+
const cardId = event?.data?.cardId;
|
|
64
|
+
if (typeof cardId === "string" && !latestState.has(cardId)) {
|
|
65
|
+
if (event.type === "odai/route-card-claim-released")
|
|
66
|
+
latestState.set(cardId, "active");
|
|
67
|
+
else if (event.type === "odai/route-card-claimed")
|
|
68
|
+
latestState.set(cardId, "claimed");
|
|
69
|
+
else if (["odai/route-card-cleared", "odai/route-card-consumed"].includes(event.type))
|
|
70
|
+
latestState.set(cardId, "closed");
|
|
71
|
+
}
|
|
72
|
+
if (event?.type !== "odai/route-card-frozen")
|
|
73
|
+
continue;
|
|
74
|
+
const card = event.data?.card;
|
|
75
|
+
if (!isRouteCard(card))
|
|
76
|
+
continue;
|
|
77
|
+
const state = permanentlyCleared.has(card.id) ? "closed" : (latestState.get(card.id) ?? "active");
|
|
78
|
+
if (acceptedStates.has(state))
|
|
79
|
+
return card;
|
|
65
80
|
}
|
|
66
|
-
|
|
67
|
-
const card = event.data?.card;
|
|
68
|
-
if (card?.frozen !== true || typeof card.id !== "string") continue;
|
|
69
|
-
const state = permanentlyCleared.has(card.id) ? "closed" : (latestState.get(card.id) ?? "active");
|
|
70
|
-
if (acceptedStates.has(state)) return card;
|
|
71
|
-
}
|
|
72
|
-
return undefined;
|
|
81
|
+
return undefined;
|
|
73
82
|
}
|
|
74
|
-
|
|
75
83
|
export function activeRouteCard(events) {
|
|
76
|
-
|
|
84
|
+
return routeCardInState(events, new Set(["active"]));
|
|
77
85
|
}
|
|
78
|
-
|
|
79
86
|
export function unsettledRouteCard(events) {
|
|
80
|
-
|
|
87
|
+
return routeCardInState(events, new Set(["active", "claimed"]));
|
|
81
88
|
}
|
|
82
|
-
|
|
83
89
|
export function routeCardById(events, cardId) {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
90
|
+
if (typeof cardId !== "string" || cardId === "")
|
|
91
|
+
return undefined;
|
|
92
|
+
for (let index = (Array.isArray(events) ? events.length : 0) - 1; index >= 0; index -= 1) {
|
|
93
|
+
const event = events?.[index];
|
|
94
|
+
const card = event?.data?.card;
|
|
95
|
+
if (event?.type === "odai/route-card-frozen" && isRouteCard(card) && card.id === cardId)
|
|
96
|
+
return card;
|
|
97
|
+
}
|
|
98
|
+
return undefined;
|
|
91
99
|
}
|
|
92
|
-
|
|
93
100
|
export function createRouteCardTool(options = {}) {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
},
|
|
119
|
-
output: {
|
|
120
|
-
schema: {
|
|
121
|
-
type: "object",
|
|
122
|
-
additionalProperties: false,
|
|
123
|
-
required: ["action", "status"],
|
|
124
|
-
properties: {
|
|
125
|
-
action: { type: "string", enum: ["freeze", "clear"] },
|
|
126
|
-
status: { type: "string", enum: ["frozen", "cleared", "absent"] },
|
|
127
|
-
card: { type: "object" },
|
|
128
|
-
cardId: { type: "string" },
|
|
101
|
+
const onFrozen = typeof options.onFrozen === "function" ? options.onFrozen : () => { };
|
|
102
|
+
const onCleared = typeof options.onCleared === "function" ? options.onCleared : () => { };
|
|
103
|
+
const activeFor = typeof options.activeFor === "function" ? options.activeFor : () => undefined;
|
|
104
|
+
const unsettledFor = typeof options.unsettledFor === "function" ? options.unsettledFor : activeFor;
|
|
105
|
+
const authorizationFor = typeof options.authorizationFor === "function"
|
|
106
|
+
? options.authorizationFor
|
|
107
|
+
: () => Object.freeze({ status: "unknown" });
|
|
108
|
+
return {
|
|
109
|
+
name: "odai_route_card",
|
|
110
|
+
description: "Freeze or clear one structured executor route card. Use only when planning has bounded implementation and independently justified executor separation.",
|
|
111
|
+
parameters: {
|
|
112
|
+
type: "object",
|
|
113
|
+
additionalProperties: false,
|
|
114
|
+
required: ["action"],
|
|
115
|
+
properties: {
|
|
116
|
+
action: { type: "string", enum: ["freeze", "clear"] },
|
|
117
|
+
target: { type: "string" },
|
|
118
|
+
evidence: { type: "array", items: { type: "string" } },
|
|
119
|
+
scope: { type: "array", items: { type: "string" } },
|
|
120
|
+
accept: { type: "array", items: { type: "string" } },
|
|
121
|
+
stop: { type: "string" },
|
|
122
|
+
observableBenefit: { type: "boolean" },
|
|
123
|
+
cardId: { type: "string" },
|
|
124
|
+
},
|
|
129
125
|
},
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
126
|
+
output: {
|
|
127
|
+
schema: {
|
|
128
|
+
type: "object",
|
|
129
|
+
additionalProperties: false,
|
|
130
|
+
required: ["action", "status"],
|
|
131
|
+
properties: {
|
|
132
|
+
action: { type: "string", enum: ["freeze", "clear"] },
|
|
133
|
+
status: { type: "string", enum: ["frozen", "cleared", "absent"] },
|
|
134
|
+
card: { type: "object" },
|
|
135
|
+
cardId: { type: "string" },
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
render(_arguments, value) {
|
|
139
|
+
return [{
|
|
140
|
+
type: "text",
|
|
141
|
+
text: value.status === "frozen"
|
|
142
|
+
? `Frozen executor route card ${value.card.id}: ${value.card.target}`
|
|
143
|
+
: value.status === "cleared"
|
|
144
|
+
? `Cleared executor route card ${value.cardId}.`
|
|
145
|
+
: "No active executor route card exists.",
|
|
146
|
+
}];
|
|
147
|
+
},
|
|
148
|
+
},
|
|
149
|
+
execute(arguments_, execution) {
|
|
150
|
+
if (!execution.agent)
|
|
151
|
+
throw new Error("odai_route_card requires an owning agent session");
|
|
152
|
+
const header = execution.agent.session?.header;
|
|
153
|
+
if (header?.origin === "subagent" || (Number.isSafeInteger(header?.delegationDepth) && (header?.delegationDepth ?? 0) > 0)) {
|
|
154
|
+
throw new Error("child agents may not change Odai route cards");
|
|
155
|
+
}
|
|
156
|
+
if (!isUnknownRecord(arguments_))
|
|
157
|
+
throw new TypeError("arguments must be an object");
|
|
158
|
+
if (arguments_.action === "freeze") {
|
|
159
|
+
const active = unsettledFor(execution.agent);
|
|
160
|
+
if (active)
|
|
161
|
+
throw new Error(`executor route card ${active.id} is already active or claimed`);
|
|
162
|
+
const card = normalizeCard(arguments_, authorizationFor(execution.agent));
|
|
163
|
+
onFrozen(execution.agent, card);
|
|
164
|
+
return Promise.resolve(Object.freeze({ action: "freeze", status: "frozen", card }));
|
|
165
|
+
}
|
|
166
|
+
if (arguments_.action === "clear") {
|
|
167
|
+
const card = activeFor(execution.agent);
|
|
168
|
+
if (!card)
|
|
169
|
+
return Promise.resolve(Object.freeze({ action: "clear", status: "absent" }));
|
|
170
|
+
if (arguments_.cardId !== undefined && arguments_.cardId !== card.id) {
|
|
171
|
+
throw new Error(`route card ${String(arguments_.cardId)} does not match active card ${card.id}`);
|
|
172
|
+
}
|
|
173
|
+
onCleared(execution.agent, card.id);
|
|
174
|
+
return Promise.resolve(Object.freeze({ action: "clear", status: "cleared", cardId: card.id }));
|
|
175
|
+
}
|
|
176
|
+
throw new TypeError("action must be freeze or clear");
|
|
177
|
+
},
|
|
178
|
+
};
|
|
168
179
|
}
|
|
180
|
+
//# sourceMappingURL=route-card.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-card.mjs","sourceRoot":"","sources":["../src/route-card.mts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type { DshEvent, DshMessage, ModelRoute } from "./runtime-types.mjs";
|
|
2
|
+
export type OdaiRouteRole = "controller" | "researcher" | "planner" | "executor" | "reviewer" | "frontend";
|
|
3
|
+
export type OdaiRouteAction = "direct" | "delegate" | "upgrade";
|
|
4
|
+
export interface RouteConsideration {
|
|
5
|
+
readonly role: string;
|
|
6
|
+
readonly match: string;
|
|
7
|
+
readonly action: "skip";
|
|
8
|
+
readonly reasonCode: string;
|
|
9
|
+
readonly signals: readonly string[];
|
|
10
|
+
readonly unmet: readonly string[];
|
|
11
|
+
}
|
|
12
|
+
export interface RouteDecision {
|
|
13
|
+
readonly role: OdaiRouteRole;
|
|
14
|
+
readonly mode: OdaiRouteAction;
|
|
15
|
+
readonly action: OdaiRouteAction;
|
|
16
|
+
readonly targetRole?: OdaiRouteRole;
|
|
17
|
+
readonly reasonCode: string;
|
|
18
|
+
readonly reason: string;
|
|
19
|
+
readonly signals: readonly string[];
|
|
20
|
+
readonly considerations?: readonly RouteConsideration[];
|
|
21
|
+
}
|
|
22
|
+
export interface ResponsibilityGapState {
|
|
23
|
+
readonly responsibility: string;
|
|
24
|
+
readonly gap: string;
|
|
25
|
+
readonly stateDigest: string;
|
|
26
|
+
}
|
|
27
|
+
export interface RouteCardState {
|
|
28
|
+
readonly frozen?: boolean;
|
|
29
|
+
readonly observableBenefit?: boolean;
|
|
30
|
+
readonly authorization?: {
|
|
31
|
+
readonly status?: string;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export interface ResponsibilityInterruptionState {
|
|
35
|
+
readonly responsibility?: string;
|
|
36
|
+
readonly continuationText?: string;
|
|
37
|
+
}
|
|
38
|
+
export interface RouteDecisionInput {
|
|
39
|
+
readonly text?: string;
|
|
40
|
+
readonly proposal?: ResponsibilityGapState;
|
|
41
|
+
readonly routeCard?: RouteCardState;
|
|
42
|
+
readonly interruption?: ResponsibilityInterruptionState;
|
|
43
|
+
}
|
|
44
|
+
export interface FrontendSpecializationSignals {
|
|
45
|
+
readonly explicit: boolean;
|
|
46
|
+
readonly scope: boolean;
|
|
47
|
+
readonly delivery: boolean;
|
|
48
|
+
readonly strongWork: boolean;
|
|
49
|
+
readonly nonUiRequest: boolean;
|
|
50
|
+
readonly specialistDepth: boolean;
|
|
51
|
+
readonly surfaceCount: number;
|
|
52
|
+
readonly axes: readonly string[];
|
|
53
|
+
readonly substantial: boolean;
|
|
54
|
+
}
|
|
55
|
+
export interface ImplementationAuthorization {
|
|
56
|
+
readonly status: "authorized" | "plan-only" | "unknown";
|
|
57
|
+
}
|
|
58
|
+
export declare const HIGH_IMPACT_PLANNER_REASON = "PLANNER_UNVERIFIED_HIGH_IMPACT_CHANGE";
|
|
59
|
+
export declare const RESEARCHER_EVIDENCE_REASON = "RESEARCHER_MULTI_SOURCE_DECISION_EVIDENCE";
|
|
60
|
+
export declare const FRONTEND_SPECIALIST_REASON = "FRONTEND_SUBSTANTIAL_INTERFACE_WORK";
|
|
61
|
+
export declare const EXECUTOR_ROUTE_CARD_REASON = "EXECUTOR_FROZEN_ROUTE_NET_BENEFIT";
|
|
62
|
+
export declare const OUTPUT_LIMIT_CONTINUATION_REASON = "RESPONSIBILITY_OUTPUT_LIMIT_CONTINUATION";
|
|
63
|
+
export declare function classifyResponsibilityInterruptionText(text: unknown): "continue" | "preserve" | "clear";
|
|
64
|
+
export declare function classifyPendingReviewerText(text: unknown): "continue" | "supersede" | "dormant";
|
|
65
|
+
export declare function classifyImplementationAuthorization(text: unknown): Readonly<ImplementationAuthorization>;
|
|
66
|
+
export declare function decideResearchPrefetch(input?: RouteDecisionInput): Readonly<RouteDecision>;
|
|
67
|
+
/**
|
|
68
|
+
* Choose the smallest useful odai role. Risk alone never creates another role.
|
|
69
|
+
* Executor routing requires a frozen route card and observable net benefit;
|
|
70
|
+
* those facts cannot be inferred from task prose.
|
|
71
|
+
*/
|
|
72
|
+
export declare function decideRoute(input?: RouteDecisionInput): Readonly<RouteDecision>;
|
|
73
|
+
export declare function extractLatestUserText(messages: readonly DshMessage[] | undefined): string;
|
|
74
|
+
export declare function extractRoutingText(messages: readonly DshMessage[] | undefined, sessionEvents: readonly DshEvent[] | undefined): string;
|
|
75
|
+
export declare function requiresFailClosedProtection(decision: RouteDecision | undefined): boolean;
|
|
76
|
+
export declare function renderRouteNotice(decision: RouteDecision, runtimeMode: string, actualRoute?: ModelRoute): string;
|
|
77
|
+
export declare function renderMissingRouteConfigNotice(decision: RouteDecision, runtimeMode: string, configFailure?: string): string;
|
|
78
|
+
export declare function renderRouteFailureNotice(decision: RouteDecision, failure: unknown): string;
|
|
79
|
+
export declare function renderDelegationPrompt(decision: Pick<RouteDecision, "role">, taskText: string, roleContract: unknown): string;
|
|
80
|
+
//# sourceMappingURL=router.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router.d.mts","sourceRoot":"","sources":["../src/router.mts"],"names":[],"mappings":"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"}
|