odai-dsh-agent 0.2.6 → 0.2.8
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/LICENSE +21 -21
- package/README.md +140 -138
- package/build/bin/odai-dsh-agent.mjs +12 -12
- package/build/src/installer.d.mts +1 -1
- package/build/src/installer.d.mts.map +1 -1
- package/build/src/installer.mjs +2 -1
- package/build/src/installer.mjs.map +1 -1
- package/package.json +70 -70
- package/preset/odai/agent.cordis.yml +261 -261
- package/preset/odai/preset.yml +3 -3
- package/preset/odai/runtime/context-activation.d.mts +2 -1
- package/preset/odai/runtime/context-activation.d.mts.map +1 -1
- package/preset/odai/runtime/context-activation.mjs +4 -1
- package/preset/odai/runtime/context-activation.mjs.map +1 -1
- package/preset/odai/runtime/governance.d.mts +1 -1
- package/preset/odai/runtime/governance.d.mts.map +1 -1
- package/preset/odai/runtime/governance.mjs +1 -0
- package/preset/odai/runtime/governance.mjs.map +1 -1
- package/preset/odai/runtime/index.d.mts.map +1 -1
- package/preset/odai/runtime/index.mjs +40 -9
- package/preset/odai/runtime/index.mjs.map +1 -1
- package/preset/odai/runtime/lifecycle-runtime.d.mts +3 -1
- package/preset/odai/runtime/lifecycle-runtime.d.mts.map +1 -1
- package/preset/odai/runtime/lifecycle-runtime.mjs +132 -24
- package/preset/odai/runtime/lifecycle-runtime.mjs.map +1 -1
- package/preset/odai/runtime/prompt-runtime.d.mts +1 -0
- package/preset/odai/runtime/prompt-runtime.d.mts.map +1 -1
- package/preset/odai/runtime/prompt-runtime.mjs +19 -6
- package/preset/odai/runtime/prompt-runtime.mjs.map +1 -1
- package/preset/odai/runtime/responsibility-gap.d.mts +1 -1
- package/preset/odai/runtime/responsibility-gap.d.mts.map +1 -1
- package/preset/odai/runtime/responsibility-gap.mjs +7 -5
- package/preset/odai/runtime/responsibility-gap.mjs.map +1 -1
- package/preset/odai/runtime/responsibility-return.d.mts +21 -0
- package/preset/odai/runtime/responsibility-return.d.mts.map +1 -0
- package/preset/odai/runtime/responsibility-return.mjs +96 -0
- package/preset/odai/runtime/responsibility-return.mjs.map +1 -0
- package/preset/odai/runtime/responsibility-scope.d.mts +1 -1
- package/preset/odai/runtime/responsibility-scope.d.mts.map +1 -1
- package/preset/odai/runtime/responsibility-scope.mjs +3 -3
- package/preset/odai/runtime/responsibility-scope.mjs.map +1 -1
- package/preset/odai/runtime/role-overlays.mjs +14 -14
- package/preset/odai/runtime/role-overlays.mjs.map +1 -1
- package/preset/odai/runtime/router.d.mts +2 -1
- package/preset/odai/runtime/router.d.mts.map +1 -1
- package/preset/odai/runtime/router.mjs +23 -3
- package/preset/odai/runtime/router.mjs.map +1 -1
- package/preset/odai/runtime/routing-config.d.mts +15 -5
- package/preset/odai/runtime/routing-config.d.mts.map +1 -1
- package/preset/odai/runtime/routing-config.mjs +113 -44
- package/preset/odai/runtime/routing-config.mjs.map +1 -1
- package/preset/odai/runtime/routing-context.d.mts +17 -0
- package/preset/odai/runtime/routing-context.d.mts.map +1 -1
- package/preset/odai/runtime/routing-context.mjs +204 -48
- package/preset/odai/runtime/routing-context.mjs.map +1 -1
- package/preset/odai/runtime/runtime-config.d.mts.map +1 -1
- package/preset/odai/runtime/runtime-config.mjs +10 -1
- package/preset/odai/runtime/runtime-config.mjs.map +1 -1
- package/preset/odai/runtime/runtime-support.d.mts +3 -1
- package/preset/odai/runtime/runtime-support.d.mts.map +1 -1
- package/preset/odai/runtime/runtime-support.mjs +5 -1
- package/preset/odai/runtime/runtime-support.mjs.map +1 -1
- package/preset/odai/runtime/runtime-types.d.mts +5 -0
- package/preset/odai/runtime/runtime-types.d.mts.map +1 -1
- package/preset/odai/runtime/tool-runtime.d.mts +4 -0
- package/preset/odai/runtime/tool-runtime.d.mts.map +1 -1
- package/preset/odai/runtime/tool-runtime.mjs +49 -4
- package/preset/odai/runtime/tool-runtime.mjs.map +1 -1
- package/preset/odai/skills/odai/agents/openai.yaml +4 -4
- package/preset/odai/skills/odai/assets/claude-agents/agent.md +11 -11
- package/preset/odai/skills/odai/assets/codex-agents/config.toml +11 -11
- package/preset/odai/skills/odai/assets/codex-agents/role.toml +5 -5
- package/preset/odai/skills/odai/assets/copilot-agents/agent.md +13 -13
- package/preset/odai/skills/odai/assets/hooks-policy.example.json +24 -24
- package/preset/odai/skills/odai/assets/routing-roles/controller.md +15 -15
- package/preset/odai/skills/odai/assets/routing-roles/executor.md +11 -11
- package/preset/odai/skills/odai/assets/routing-roles/frontend.md +7 -7
- package/preset/odai/skills/odai/assets/routing-roles/planner.md +29 -29
- package/preset/odai/skills/odai/assets/routing-roles/researcher.md +6 -6
- package/preset/odai/skills/odai/assets/routing-roles/reviewer.md +11 -11
- package/preset/odai/skills/odai/assets/task-state.md +14 -14
- package/preset/odai/skills/odai/manifest.json +37 -37
- package/preset/odai/skills/odai/references/craft.md +54 -54
- package/preset/odai/skills/odai/references/dao.md +30 -30
- package/preset/odai/skills/odai/references/leverage.md +53 -53
- package/preset/odai/skills/odai/references/planning.md +82 -82
- package/preset/odai/skills/odai/references/support.md +36 -36
- package/preset/odai/skills/odai/references/verification.md +23 -23
- package/preset/odai/skills/odai/scripts/build-hooks.mjs +273 -273
- package/preset/odai/skills/odai/scripts/build-routing.mjs +274 -274
- package/preset/odai/skills/odai/scripts/install-routing.mjs +397 -397
- package/preset/odai/skills/odai/scripts/odai-hook.mjs +457 -457
- package/preset/odai/skills/odai/scripts/run-role.mjs +336 -336
- package/preset/odai/skills/odai/scripts/run-routing.mjs +1154 -1154
- package/preset/odai/skills/odai/scripts/verify-routing.mjs +103 -103
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"governance.mjs","sourceRoot":"","sources":["../src/governance.mts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC,MAAM,CAAC;IACtD,OAAO;IACP,MAAM;IACN,oBAAoB;IACpB,MAAM;IACN,MAAM;IACN,mBAAmB;IACnB,UAAU;IACV,eAAe;IACf,gBAAgB;IAChB,sBAAsB;IACtB,cAAc;IACd,iBAAiB;IACjB,aAAa;IACb,UAAU;IACV,OAAO;IACP,YAAY;IACZ,UAAU;IACV,UAAU;CACF,CAAC,CAAC;AAEZ,MAAM,CAAC,MAAM,0CAA0C,GAAG,MAAM,CAAC,MAAM,CAAC;IACtE,MAAM;IACN,YAAY;IACZ,MAAM;IACN,MAAM;IACN,YAAY;IACZ,WAAW;IACX,mBAAmB;IACnB,UAAU;IACV,aAAa;IACb,YAAY;IACZ,UAAU;IACV,OAAO;IACP,iBAAiB;
|
|
1
|
+
{"version":3,"file":"governance.mjs","sourceRoot":"","sources":["../src/governance.mts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.mts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.mts"],"names":[],"mappings":"AAuBA,OAAO,EACL,0BAA0B,EAC1B,aAAa,EACb,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAIL,aAAa,EAEd,MAAM,uBAAuB,CAAC;AAO/B,OAAO,KAAK,EAEV,iBAAiB,EAKlB,MAAM,qBAAqB,CAAC;AAE7B,eAAO,MAAM,IAAI,qBAAe,CAAC;AACjC,OAAO,EAAE,0BAA0B,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,CAAC;AAEtF,eAAO,MAAM,MAAM,UAA4D,CAAC;AAyBhF,wBAAgB,KAAK,CAAC,GAAG,EAAE,iBAAiB,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI,CA6MtE"}
|
|
@@ -4,11 +4,13 @@ import { installLifecycleRuntime } from "./lifecycle-runtime.mjs";
|
|
|
4
4
|
import { classifyModelRouteFailure, probeModelRoute } from "./model-route.mjs";
|
|
5
5
|
import { createPromptRuntime } from "./prompt-runtime.mjs";
|
|
6
6
|
import { latestDanglingResponsibilityScope, responsibilityScopeStoppedEvent, } from "./responsibility-scope.mjs";
|
|
7
|
+
import { classifyPendingReviewerText, extractLatestUserText } from "./router.mjs";
|
|
7
8
|
import { invalidatePersistedRoleRoute } from "./routing-config.mjs";
|
|
8
9
|
import { inheritCompactionReasoning, resolveConfig, resolveSkillPath, } from "./runtime-config.mjs";
|
|
9
10
|
import { RUNTIME_NAME, loggerFor, routeFromConfig, runRoutedRole, sameRequestModelRoute, } from "./runtime-support.mjs";
|
|
10
11
|
import { createSessionEvidence, resolveSessionEvidenceRoot } from "./session-evidence.mjs";
|
|
11
12
|
import { currentAgentTurn } from "./skill-selection-state.mjs";
|
|
13
|
+
import { latestDirectUserMessage } from "./semantic-memory.mjs";
|
|
12
14
|
import { installToolRuntime } from "./tool-runtime.mjs";
|
|
13
15
|
import { resolveHumanSafetyContinuityStorePath } from "./human-safety-continuity-store.mjs";
|
|
14
16
|
export const name = RUNTIME_NAME;
|
|
@@ -111,20 +113,17 @@ export function apply(ctx, rawConfig) {
|
|
|
111
113
|
return {
|
|
112
114
|
route: state.snapshot.roles[role],
|
|
113
115
|
source: state.snapshot.sources[role],
|
|
116
|
+
dispatch: state.snapshot.dispatch[role],
|
|
117
|
+
dispatchSource: state.snapshot.dispatchSources[role],
|
|
114
118
|
};
|
|
115
119
|
};
|
|
116
120
|
const pendingResponsibilityGap = (agent, turn, step) => {
|
|
117
|
-
const consumed = new Set();
|
|
118
121
|
const events = evidence.events(agent);
|
|
122
|
+
const consumed = new Set(events.flatMap((event) => (event.type === "odai/responsibility-gap-consumed" ? [event.data?.stateDigest] : [])));
|
|
119
123
|
for (let index = events.length - 1; index >= 0; index -= 1) {
|
|
120
124
|
const event = events[index];
|
|
121
|
-
if (event.data?.turn !== turn
|
|
122
|
-
|
|
123
|
-
if (event.type === "odai/responsibility-gap-consumed") {
|
|
124
|
-
consumed.add(event.data.stateDigest);
|
|
125
|
-
continue;
|
|
126
|
-
}
|
|
127
|
-
if (event.type !== "odai/responsibility-gap"
|
|
125
|
+
if (event.data?.turn !== turn
|
|
126
|
+
|| event.type !== "odai/responsibility-gap"
|
|
128
127
|
|| typeof event.data?.step !== "number"
|
|
129
128
|
|| !Number.isSafeInteger(event.data.step)
|
|
130
129
|
|| event.data.step >= step
|
|
@@ -133,6 +132,38 @@ export function apply(ctx, rawConfig) {
|
|
|
133
132
|
continue;
|
|
134
133
|
return event.data;
|
|
135
134
|
}
|
|
135
|
+
if (turn === undefined)
|
|
136
|
+
return undefined;
|
|
137
|
+
for (let index = events.length - 1; index >= 0; index -= 1) {
|
|
138
|
+
const event = events[index];
|
|
139
|
+
if (event.type !== "odai/responsibility-gap"
|
|
140
|
+
|| event.data?.responsibility !== "reviewer"
|
|
141
|
+
|| typeof event.data.turn !== "number"
|
|
142
|
+
|| event.data.turn >= turn
|
|
143
|
+
|| consumed.has(event.data.stateDigest)
|
|
144
|
+
|| !isResponsibilityGapProposal(event.data))
|
|
145
|
+
continue;
|
|
146
|
+
const deferred = events.slice(index + 1).some((candidate) => (candidate.type === "odai/responsibility-gap-deferred"
|
|
147
|
+
&& candidate.data?.stateDigest === event.data.stateDigest));
|
|
148
|
+
if (!deferred)
|
|
149
|
+
continue;
|
|
150
|
+
const message = latestDirectUserMessage(agent);
|
|
151
|
+
const transition = message
|
|
152
|
+
? classifyPendingReviewerText(extractLatestUserText([message]))
|
|
153
|
+
: "dormant";
|
|
154
|
+
if (transition === "continue")
|
|
155
|
+
return event.data;
|
|
156
|
+
if (transition === "supersede") {
|
|
157
|
+
appendEvent(agent, "odai/responsibility-gap-consumed", {
|
|
158
|
+
turn,
|
|
159
|
+
step,
|
|
160
|
+
responsibility: "reviewer",
|
|
161
|
+
stateDigest: event.data.stateDigest,
|
|
162
|
+
reason: "SUPERSEDED_BY_DIRECT_USER_TASK",
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
return undefined;
|
|
166
|
+
}
|
|
136
167
|
return undefined;
|
|
137
168
|
};
|
|
138
169
|
const invalidateFailedRoleRoute = (agent, role, route, source, failure, position = {}) => {
|
|
@@ -168,7 +199,7 @@ export function apply(ctx, rawConfig) {
|
|
|
168
199
|
installToolRuntime({
|
|
169
200
|
appendEvent, baseSelection, bundled, config, ctx, evidence, evolutionDisabled, explicitSkillPath,
|
|
170
201
|
hasSessionEvent, humanSafetyContinuityStorePath, logger, pendingResponsibilityGap, promptRuntime,
|
|
171
|
-
routeProtections, selectOutputForAgent,
|
|
202
|
+
responsibilityScopes, routeProtections, selectOutputForAgent, stopResponsibilityScope,
|
|
172
203
|
});
|
|
173
204
|
installLifecycleRuntime({
|
|
174
205
|
appendEvent, bundled, config, configuredRole, ctx, evidence, hasSessionEvent, invalidateFailedRoleRoute,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,qBAAqB,EACrB,yBAAyB,EACzB,mCAAmC,GACpC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAQlE,OAAO,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EACL,iCAAiC,EACjC,+BAA+B,GAChC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EACL,0BAA0B,EAC1B,aAAa,EACb,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,YAAY,EACZ,SAAS,EACT,eAAe,EACf,aAAa,EACb,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.mts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import type { ResponsibilityGapProposal } from "./responsibility-gap.mjs";
|
|
|
2
2
|
import type { ResponsibilityScope } from "./responsibility-scope.mjs";
|
|
3
3
|
export type { ResponsibilityScope } from "./responsibility-scope.mjs";
|
|
4
4
|
import type { SkillBundle } from "./skill-bundle.mjs";
|
|
5
|
-
import type { DshAgent, DshEvent, DshRuntimeContext, DshSession, ModelRoute, RuntimeConfig, RuntimeEventData, RuntimeLogger, UnknownRecord } from "./runtime-types.mjs";
|
|
5
|
+
import type { DshAgent, DshEvent, DshRuntimeContext, DshSession, ModelRoute, ResponsibilityDispatch, RuntimeConfig, RuntimeEventData, RuntimeLogger, UnknownRecord } from "./runtime-types.mjs";
|
|
6
6
|
interface RouteFailure {
|
|
7
7
|
kind: string;
|
|
8
8
|
code: string;
|
|
@@ -11,6 +11,8 @@ interface RouteFailure {
|
|
|
11
11
|
interface RoleState {
|
|
12
12
|
route?: ModelRoute;
|
|
13
13
|
source?: string;
|
|
14
|
+
dispatch?: ResponsibilityDispatch;
|
|
15
|
+
dispatchSource?: string;
|
|
14
16
|
error?: string;
|
|
15
17
|
detail?: string;
|
|
16
18
|
id?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle-runtime.d.mts","sourceRoot":"","sources":["../src/lifecycle-runtime.mts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAoB1E,OAAO,KAAK,EAAyB,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAC7F,YAAY,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAatE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAWtD,OAAO,KAAK,EACV,QAAQ,EACR,QAAQ,EAER,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,aAAa,EACd,MAAM,qBAAqB,CAAC;AAO7B,UAAU,YAAY;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AACtE,UAAU,SAAS;IAAG,KAAK,CAAC,EAAE,UAAU,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,UAAU,CAAA;CAAE;
|
|
1
|
+
{"version":3,"file":"lifecycle-runtime.d.mts","sourceRoot":"","sources":["../src/lifecycle-runtime.mts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAoB1E,OAAO,KAAK,EAAyB,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAC7F,YAAY,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAatE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAWtD,OAAO,KAAK,EACV,QAAQ,EACR,QAAQ,EAER,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,aAAa,EACd,MAAM,qBAAqB,CAAC;AAO7B,UAAU,YAAY;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AACtE,UAAU,SAAS;IAAG,KAAK,CAAC,EAAE,UAAU,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,UAAU,CAAA;CAAE;AAC9M,MAAM,WAAW,eAAgB,SAAQ,aAAa;IAAG,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE;AAY3E,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IAAG,KAAK,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,UAAU,CAAC;IAAC,aAAa,EAAE,UAAU,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE;AAClT,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IAAG,KAAK,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,UAAU,CAAA;CAAE;AACnK,MAAM,WAAW,WAAY,SAAQ,aAAa;IAAG,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE;AACvG,UAAU,cAAc;IAAG,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AAkBjE,UAAU,qBAAqB;IAC7B,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/D,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxE,GAAG,EAAE,iBAAiB,CAAC;IACvB,QAAQ,EAAE;QAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,EAAE,CAAA;KAAE,CAAC;IAClD,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,OAAO,GAAG,OAAO,CAAC;IACxG,yBAAyB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,gBAAgB,GAAG,aAAa,CAAC;IAC3K,MAAM,EAAE,aAAa,CAAC;IACtB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC;IAClE,oBAAoB,EAAE,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IACvD,wBAAwB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,yBAAyB,GAAG,SAAS,CAAC;IACzH,oBAAoB,EAAE,OAAO,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;IAC/D,wBAAwB,EAAE,OAAO,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IAClE,yBAAyB,EAAE,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACzD,oBAAoB,EAAE,OAAO,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IAC7D,gBAAgB,EAAE,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IACrD,oBAAoB,IAAI;QAAE,MAAM,EAAE;YAAE,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IAC3D,+BAA+B,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAAC;IAC/F,uBAAuB,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,gBAAgB,GAAG,mBAAmB,GAAG,SAAS,CAAC;CACxH;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAiuCzE"}
|
|
@@ -9,12 +9,30 @@ import { parseResearchPacket, renderResearchPacket, verifyResearchPacketSources,
|
|
|
9
9
|
import { dshRoleContract } from "./role-overlays.mjs";
|
|
10
10
|
import { sharedSkillSelection } from "./skill-selection-state.mjs";
|
|
11
11
|
import { captureAutomaticMemories, claimSemanticMemoryTurn, latestDirectUserMessage, memoryPacketMessage, renderSemanticMemoryPacket, retrieveSemanticMemories, } from "./semantic-memory.mjs";
|
|
12
|
+
function effectiveRoleDispatch(role, configured, routingMode) {
|
|
13
|
+
if (configured)
|
|
14
|
+
return configured;
|
|
15
|
+
if (role === "researcher" || role === "reviewer")
|
|
16
|
+
return "child";
|
|
17
|
+
if (role === "planner")
|
|
18
|
+
return routingMode === "auto" ? "same-turn" : "child";
|
|
19
|
+
return "same-turn";
|
|
20
|
+
}
|
|
12
21
|
function isInPlaceResponsibility(value) {
|
|
13
|
-
return value === "planner" || value === "reviewer" || value === "executor" || value === "frontend";
|
|
22
|
+
return value === "researcher" || value === "planner" || value === "reviewer" || value === "executor" || value === "frontend";
|
|
14
23
|
}
|
|
15
24
|
function isSubagentsService(value) {
|
|
16
25
|
return value !== null && typeof value === "object" && "start" in value && typeof value.start === "function";
|
|
17
26
|
}
|
|
27
|
+
function latestReviewerDeferral(events, stateDigest) {
|
|
28
|
+
for (let index = events.length - 1; index >= 0; index -= 1) {
|
|
29
|
+
const event = events[index];
|
|
30
|
+
if (event?.type !== "odai/responsibility-gap-deferred" || event.data?.stateDigest !== stateDigest)
|
|
31
|
+
continue;
|
|
32
|
+
return typeof event.data.evidenceDigest === "string" ? event.data.evidenceDigest : undefined;
|
|
33
|
+
}
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
18
36
|
export function installLifecycleRuntime(deps) {
|
|
19
37
|
const { appendEvent, bundled, config, configuredRole, ctx, evidence, hasSessionEvent, invalidateFailedRoleRoute, logger, memorySettingsFor, outputUsageBySession, pendingResponsibilityGap, pendingRouteReceipts, pendingScopeRestorations, responsibilityScopeOwners, responsibilityScopes, routeProtections, selectOutputForAgent, stopDanglingResponsibilityScope, stopResponsibilityScope } = deps;
|
|
20
38
|
ctx.on("agent/request", async ({ agent, turn, step, signal }, next) => {
|
|
@@ -31,27 +49,40 @@ export function installLifecycleRuntime(deps) {
|
|
|
31
49
|
stopResponsibilityScope(agent, "ownership-boundary", { step });
|
|
32
50
|
scope = undefined;
|
|
33
51
|
}
|
|
34
|
-
if (!childRole && !scope) {
|
|
52
|
+
if (!childRole && (!scope || scope.state === "pending")) {
|
|
35
53
|
const restoration = pendingResponsibilityScopeRestoration(evidence.events(agent));
|
|
36
54
|
if (restoration && sameRequestModelRoute(proposed, restoration.temporaryRoute)) {
|
|
37
55
|
const { reasoningEffort: _temporaryEffort, maxTokens: _temporaryMaxTokens, ...withoutTemporaryRoute } = proposed;
|
|
38
56
|
proposed = Object.freeze({ ...withoutTemporaryRoute, ...restoration.baseRoute });
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
turn,
|
|
42
|
-
step,
|
|
43
|
-
role: restoration.role,
|
|
44
|
-
requestedRoute: restoration.baseRoute,
|
|
45
|
-
});
|
|
46
|
-
if (agent?.session) {
|
|
47
|
-
pendingScopeRestorations.set(agent.session, Object.freeze({
|
|
48
|
-
agent,
|
|
57
|
+
if (scope?.state === "pending") {
|
|
58
|
+
appendEvent(agent, "odai/responsibility-scope-restored", {
|
|
49
59
|
scopeId: restoration.scopeId,
|
|
50
60
|
turn,
|
|
51
61
|
step,
|
|
52
62
|
role: restoration.role,
|
|
53
|
-
|
|
54
|
-
|
|
63
|
+
status: "chained",
|
|
64
|
+
baseRoute: restoration.baseRoute,
|
|
65
|
+
nextScopeId: scope.id,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
appendEvent(agent, "odai/responsibility-scope-restoration-requested", {
|
|
70
|
+
scopeId: restoration.scopeId,
|
|
71
|
+
turn,
|
|
72
|
+
step,
|
|
73
|
+
role: restoration.role,
|
|
74
|
+
requestedRoute: restoration.baseRoute,
|
|
75
|
+
});
|
|
76
|
+
if (agent?.session) {
|
|
77
|
+
pendingScopeRestorations.set(agent.session, Object.freeze({
|
|
78
|
+
agent,
|
|
79
|
+
scopeId: restoration.scopeId,
|
|
80
|
+
turn,
|
|
81
|
+
step,
|
|
82
|
+
role: restoration.role,
|
|
83
|
+
expectedRoute: restoration.baseRoute,
|
|
84
|
+
}));
|
|
85
|
+
}
|
|
55
86
|
}
|
|
56
87
|
}
|
|
57
88
|
}
|
|
@@ -297,6 +328,22 @@ export function installLifecycleRuntime(deps) {
|
|
|
297
328
|
scopeId: activeScope.id,
|
|
298
329
|
...(Number.isSafeInteger(event.data?.step) ? { step: event.data.step } : {}),
|
|
299
330
|
});
|
|
331
|
+
if (scopeStopReason === "terminal-response"
|
|
332
|
+
&& ["researcher", "planner", "reviewer"].includes(activeScope.role)) {
|
|
333
|
+
appendEvent(owner, "odai/responsibility-return-missing", {
|
|
334
|
+
scopeId: activeScope.id,
|
|
335
|
+
turn: activeScope.turn,
|
|
336
|
+
step: event.data?.step ?? activeScope.startStep,
|
|
337
|
+
responsibility: activeScope.role,
|
|
338
|
+
target: "controller",
|
|
339
|
+
status: typeof owner.inject === "function" ? "recovery-injected" : "recovery-unavailable",
|
|
340
|
+
});
|
|
341
|
+
owner.inject?.(pluginMessage([
|
|
342
|
+
`The same-turn ${activeScope.role} responsibility emitted a terminal response without odai_responsibility_return.`,
|
|
343
|
+
"Its text is an unverified read-only draft, not final delivery or independent acceptance.",
|
|
344
|
+
"The runtime restored the controller route. Verify the decisive claims, continue the authorized task, and keep controller ownership of final delivery.",
|
|
345
|
+
].join("\n"), `${activeScope.role} handback recovery`));
|
|
346
|
+
}
|
|
300
347
|
}
|
|
301
348
|
if (event?.type === "assistant/chunk" && event.data?.chunk?.type === "usage") {
|
|
302
349
|
outputUsageBySession.set(session, {
|
|
@@ -645,6 +692,7 @@ export function installLifecycleRuntime(deps) {
|
|
|
645
692
|
const taskText = extractRoutingText(downstream.messages, agent?.session?.events).slice(0, config.routing.maxInputChars);
|
|
646
693
|
let routedDownstream = downstream;
|
|
647
694
|
let researchPacketText = "";
|
|
695
|
+
let sameTurnResearchDecision;
|
|
648
696
|
const researchDecision = decideResearchPrefetch({ text: taskText, proposal: responsibilityGap });
|
|
649
697
|
if (researchDecision.action === "delegate") {
|
|
650
698
|
appendEvent(agent, "odai/research-decided", {
|
|
@@ -678,6 +726,15 @@ export function installLifecycleRuntime(deps) {
|
|
|
678
726
|
...(researchState.error ? { error: researchState.detail } : {}),
|
|
679
727
|
});
|
|
680
728
|
}
|
|
729
|
+
else if (effectiveRoleDispatch("researcher", researchState.dispatch, config.routing.mode) === "same-turn") {
|
|
730
|
+
sameTurnResearchDecision = Object.freeze({
|
|
731
|
+
...researchDecision,
|
|
732
|
+
role: "controller",
|
|
733
|
+
mode: "upgrade",
|
|
734
|
+
action: "upgrade",
|
|
735
|
+
targetRole: "researcher",
|
|
736
|
+
});
|
|
737
|
+
}
|
|
681
738
|
else {
|
|
682
739
|
const researchBundle = sharedSkillSelection(agent, turn)?.bundle ?? bundled;
|
|
683
740
|
const researchContract = dshRoleContract("researcher", researchBundle.roleContracts.researcher, researchBundle.referenceContracts);
|
|
@@ -739,7 +796,7 @@ export function installLifecycleRuntime(deps) {
|
|
|
739
796
|
}
|
|
740
797
|
}
|
|
741
798
|
const frozenCard = responsibilityContinuation?.routeCard ?? activeRouteCard(evidence.events(agent));
|
|
742
|
-
let decision = decideRoute({
|
|
799
|
+
let decision = sameTurnResearchDecision ?? decideRoute({
|
|
743
800
|
text: taskText,
|
|
744
801
|
routeCard: frozenCard,
|
|
745
802
|
proposal: responsibilityGap,
|
|
@@ -750,10 +807,14 @@ export function installLifecycleRuntime(deps) {
|
|
|
750
807
|
let roleContext = decision.action === "direct"
|
|
751
808
|
? undefined
|
|
752
809
|
: buildRoleContextPacket(agent, routeRole, roleTaskText);
|
|
810
|
+
const priorReviewerEvidenceDigest = responsibilityGap?.responsibility === "reviewer"
|
|
811
|
+
? latestReviewerDeferral(evidence.events(agent), responsibilityGap.stateDigest)
|
|
812
|
+
: undefined;
|
|
753
813
|
let localReviewerCoverage;
|
|
754
814
|
if (config.routing.mode === "auto"
|
|
755
815
|
&& routeRole === "reviewer"
|
|
756
816
|
&& decision.action === "delegate"
|
|
817
|
+
&& effectiveRoleDispatch("reviewer", configuredRole(agent, "reviewer", turn).dispatch, config.routing.mode) === "child"
|
|
757
818
|
&& roleContext
|
|
758
819
|
&& !roleContext.sufficient) {
|
|
759
820
|
localReviewerCoverage = roleContext.coverage;
|
|
@@ -767,6 +828,13 @@ export function installLifecycleRuntime(deps) {
|
|
|
767
828
|
});
|
|
768
829
|
routeRole = "reviewer";
|
|
769
830
|
}
|
|
831
|
+
const reviewerCanAwaitEvidence = config.routing.mode === "auto"
|
|
832
|
+
|| (config.routing.mode === "execute"
|
|
833
|
+
&& Boolean(routeRole === "reviewer" ? configuredRole(agent, routeRole, turn).route : undefined));
|
|
834
|
+
const reviewerEvidenceIncomplete = routeRole === "reviewer" && roleContext !== undefined
|
|
835
|
+
&& !roleContext.sufficient && reviewerCanAwaitEvidence;
|
|
836
|
+
const reviewerEvidenceUnchanged = reviewerEvidenceIncomplete
|
|
837
|
+
&& priorReviewerEvidenceDigest === roleContext?.evidenceDigest;
|
|
770
838
|
appendEvent(agent, "odai/route-decided", {
|
|
771
839
|
turn,
|
|
772
840
|
step,
|
|
@@ -784,7 +852,7 @@ export function installLifecycleRuntime(deps) {
|
|
|
784
852
|
} : {}),
|
|
785
853
|
...(decision.considerations ? { considerations: decision.considerations } : {}),
|
|
786
854
|
});
|
|
787
|
-
if (responsibilityGap) {
|
|
855
|
+
if (responsibilityGap && !reviewerEvidenceIncomplete) {
|
|
788
856
|
appendEvent(agent, "odai/responsibility-gap-consumed", {
|
|
789
857
|
turn,
|
|
790
858
|
step,
|
|
@@ -799,17 +867,21 @@ export function installLifecycleRuntime(deps) {
|
|
|
799
867
|
return routedDownstream;
|
|
800
868
|
if (!roleContext)
|
|
801
869
|
throw new Error("reviewer fallback is missing its context packet");
|
|
870
|
+
if (reviewerEvidenceUnchanged)
|
|
871
|
+
return routedDownstream;
|
|
802
872
|
appendEvent(agent, "odai/route-context", {
|
|
803
873
|
turn,
|
|
804
874
|
step,
|
|
805
875
|
role: "reviewer",
|
|
806
876
|
mode: "controller-local",
|
|
807
877
|
digest: roleContext.digest,
|
|
878
|
+
evidenceDigest: roleContext.evidenceDigest,
|
|
808
879
|
evidenceCount: roleContext.evidenceCount,
|
|
809
880
|
toolEvidenceCount: roleContext.toolEvidenceCount,
|
|
810
881
|
acceptanceCount: localReviewerCoverage.acceptanceCount,
|
|
811
882
|
diffCount: localReviewerCoverage.diffCount,
|
|
812
883
|
testCount: localReviewerCoverage.testCount,
|
|
884
|
+
diagnostics: roleContext.diagnostics,
|
|
813
885
|
truncated: roleContext.truncated,
|
|
814
886
|
sufficient: false,
|
|
815
887
|
});
|
|
@@ -822,14 +894,28 @@ export function installLifecycleRuntime(deps) {
|
|
|
822
894
|
stopReason: "evidence-packet-missing",
|
|
823
895
|
independent: false,
|
|
824
896
|
});
|
|
897
|
+
if (responsibilityGap?.responsibility === "reviewer") {
|
|
898
|
+
appendEvent(agent, "odai/responsibility-gap-deferred", {
|
|
899
|
+
turn,
|
|
900
|
+
step,
|
|
901
|
+
responsibility: "reviewer",
|
|
902
|
+
stateDigest: responsibilityGap.stateDigest,
|
|
903
|
+
contextDigest: roleContext.digest,
|
|
904
|
+
evidenceDigest: roleContext.evidenceDigest,
|
|
905
|
+
reasonCode: "REVIEWER_EVIDENCE_PACKET_PENDING",
|
|
906
|
+
});
|
|
907
|
+
}
|
|
825
908
|
return {
|
|
826
909
|
kind: "enter",
|
|
827
910
|
messages: [
|
|
828
911
|
...routedDownstream.messages,
|
|
829
912
|
pluginMessage([
|
|
830
913
|
`An independent reviewer was not started because the bounded packet is incomplete (${JSON.stringify(localReviewerCoverage)}).`,
|
|
831
|
-
|
|
832
|
-
|
|
914
|
+
`Evidence diagnostics: ${JSON.stringify(roleContext.diagnostics)}.`,
|
|
915
|
+
responsibilityGap?.responsibility === "reviewer"
|
|
916
|
+
? "The recorded reviewer gap remains pending and will be reassessed once new acceptance, write, diff, test, failure, or host-evidence diagnostics change the evidence state; do not resubmit it unchanged."
|
|
917
|
+
: "Gather project-available acceptance, diff, tests, and matching native tool evidence before submitting a reviewer gap.",
|
|
918
|
+
"Remain on the current controller route only to gather or fix that evidence. A controller-local read-only check is not independent acceptance; do not claim reviewer approval or release on its basis.",
|
|
833
919
|
].join("\n"), "odai reviewer evidence is incomplete; controller continues locally"),
|
|
834
920
|
],
|
|
835
921
|
};
|
|
@@ -911,8 +997,8 @@ export function installLifecycleRuntime(deps) {
|
|
|
911
997
|
rolePreflightVerified = health.status === "verified";
|
|
912
998
|
}
|
|
913
999
|
roleContext ??= buildRoleContextPacket(agent, routeRole, taskText);
|
|
914
|
-
const
|
|
915
|
-
|
|
1000
|
+
const roleDispatch = effectiveRoleDispatch(routeRole, roleState.dispatch, config.routing.mode);
|
|
1001
|
+
const inPlaceUpgrade = roleDispatch === "same-turn";
|
|
916
1002
|
const contextMode = inPlaceUpgrade ? "same-turn" : "bounded-packet";
|
|
917
1003
|
appendEvent(agent, "odai/route-context", {
|
|
918
1004
|
turn,
|
|
@@ -920,15 +1006,19 @@ export function installLifecycleRuntime(deps) {
|
|
|
920
1006
|
role: routeRole,
|
|
921
1007
|
mode: contextMode,
|
|
922
1008
|
digest: roleContext.digest,
|
|
1009
|
+
evidenceDigest: roleContext.evidenceDigest,
|
|
923
1010
|
evidenceCount: roleContext.evidenceCount,
|
|
924
1011
|
toolEvidenceCount: roleContext.toolEvidenceCount,
|
|
925
1012
|
acceptanceCount: roleContext.coverage.acceptanceCount,
|
|
926
1013
|
diffCount: roleContext.coverage.diffCount,
|
|
927
1014
|
testCount: roleContext.coverage.testCount,
|
|
1015
|
+
diagnostics: roleContext.diagnostics,
|
|
928
1016
|
truncated: roleContext.truncated,
|
|
929
1017
|
sufficient: roleContext.sufficient,
|
|
930
1018
|
});
|
|
931
|
-
if (routeRole === "reviewer" && decision.action === "delegate" && !roleContext.sufficient) {
|
|
1019
|
+
if (routeRole === "reviewer" && roleDispatch === "child" && decision.action === "delegate" && !roleContext.sufficient) {
|
|
1020
|
+
if (reviewerEvidenceUnchanged)
|
|
1021
|
+
return routedDownstream;
|
|
932
1022
|
appendEvent(agent, "odai/route-result", {
|
|
933
1023
|
turn,
|
|
934
1024
|
step,
|
|
@@ -938,11 +1028,29 @@ export function installLifecycleRuntime(deps) {
|
|
|
938
1028
|
stopReason: "evidence-packet-missing",
|
|
939
1029
|
contextDigest: roleContext.digest,
|
|
940
1030
|
});
|
|
1031
|
+
if (responsibilityGap?.responsibility === "reviewer") {
|
|
1032
|
+
appendEvent(agent, "odai/responsibility-gap-deferred", {
|
|
1033
|
+
turn,
|
|
1034
|
+
step,
|
|
1035
|
+
responsibility: "reviewer",
|
|
1036
|
+
stateDigest: responsibilityGap.stateDigest,
|
|
1037
|
+
contextDigest: roleContext.digest,
|
|
1038
|
+
evidenceDigest: roleContext.evidenceDigest,
|
|
1039
|
+
reasonCode: "REVIEWER_EVIDENCE_PACKET_PENDING",
|
|
1040
|
+
});
|
|
1041
|
+
}
|
|
941
1042
|
return {
|
|
942
1043
|
kind: "enter",
|
|
943
1044
|
messages: [
|
|
944
1045
|
...routedDownstream.messages,
|
|
945
|
-
pluginMessage(
|
|
1046
|
+
pluginMessage([
|
|
1047
|
+
`odai reviewer child was not started because the bounded packet is incomplete (${JSON.stringify(roleContext.coverage)}).`,
|
|
1048
|
+
`Evidence diagnostics: ${JSON.stringify(roleContext.diagnostics)}.`,
|
|
1049
|
+
responsibilityGap?.responsibility === "reviewer"
|
|
1050
|
+
? "The recorded reviewer gap remains pending for reassessment after the evidence state changes; do not resubmit it unchanged."
|
|
1051
|
+
: "Gather acceptance, an actual patch diff, successful tests, and matching native tool evidence before submitting a reviewer gap.",
|
|
1052
|
+
"Do not claim independent acceptance.",
|
|
1053
|
+
].join("\n"), "odai reviewer evidence packet is incomplete"),
|
|
946
1054
|
],
|
|
947
1055
|
};
|
|
948
1056
|
}
|
|
@@ -965,7 +1073,7 @@ export function installLifecycleRuntime(deps) {
|
|
|
965
1073
|
if (agent?.session)
|
|
966
1074
|
responsibilityScopeOwners.set(agent.session, agent);
|
|
967
1075
|
appendEvent(agent, "odai/responsibility-scope-started", responsibilityScopeStartedEvent(responsibilityScope));
|
|
968
|
-
if (["planner", "reviewer"].includes(routeRole)) {
|
|
1076
|
+
if (["researcher", "planner", "reviewer"].includes(routeRole)) {
|
|
969
1077
|
protectController(agent, turn, step, decision, `responsibility-scope-${routeRole}`, undefined, responsibilityScope.id);
|
|
970
1078
|
}
|
|
971
1079
|
if (routeRole === "executor" && frozenCard) {
|
|
@@ -1000,7 +1108,7 @@ export function installLifecycleRuntime(deps) {
|
|
|
1000
1108
|
messages: [
|
|
1001
1109
|
...routedDownstream.messages,
|
|
1002
1110
|
pluginMessage([
|
|
1003
|
-
renderRouteNotice(decision, config.routing.mode, roleRoute),
|
|
1111
|
+
renderRouteNotice(decision, config.routing.mode, roleRoute, roleDispatch),
|
|
1004
1112
|
"",
|
|
1005
1113
|
`Context digest: sha256:${roleContext.digest}`,
|
|
1006
1114
|
contextBoundary,
|