odai-dsh-agent 0.2.39 → 0.2.51

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.
Files changed (69) hide show
  1. package/README.md +13 -11
  2. package/build/src/control-center-installer.d.mts.map +1 -1
  3. package/build/src/control-center-installer.mjs +5 -0
  4. package/build/src/control-center-installer.mjs.map +1 -1
  5. package/build/src/installer.d.mts.map +1 -1
  6. package/build/src/installer.mjs +1 -1
  7. package/build/src/installer.mjs.map +1 -1
  8. package/client/client.js +27 -6
  9. package/package.json +1 -1
  10. package/preset/odai/package.json +2 -1
  11. package/preset/odai/runtime/compaction-config.d.mts +2 -2
  12. package/preset/odai/runtime/compaction-config.d.mts.map +1 -1
  13. package/preset/odai/runtime/context-activation.mjs +1 -1
  14. package/preset/odai/runtime/context-activation.mjs.map +1 -1
  15. package/preset/odai/runtime/index.mjs +1 -1
  16. package/preset/odai/runtime/index.mjs.map +1 -1
  17. package/preset/odai/runtime/lifecycle-runtime.d.mts.map +1 -1
  18. package/preset/odai/runtime/lifecycle-runtime.mjs +25 -4
  19. package/preset/odai/runtime/lifecycle-runtime.mjs.map +1 -1
  20. package/preset/odai/runtime/model-route.d.mts +5 -0
  21. package/preset/odai/runtime/model-route.d.mts.map +1 -1
  22. package/preset/odai/runtime/model-route.mjs +21 -2
  23. package/preset/odai/runtime/model-route.mjs.map +1 -1
  24. package/preset/odai/runtime/output-config.d.mts.map +1 -1
  25. package/preset/odai/runtime/output-config.mjs +2 -1
  26. package/preset/odai/runtime/output-config.mjs.map +1 -1
  27. package/preset/odai/runtime/role-overlays.d.mts +1 -1
  28. package/preset/odai/runtime/role-overlays.d.mts.map +1 -1
  29. package/preset/odai/runtime/role-overlays.mjs +4 -1
  30. package/preset/odai/runtime/role-overlays.mjs.map +1 -1
  31. package/preset/odai/runtime/router.d.mts +5 -1
  32. package/preset/odai/runtime/router.d.mts.map +1 -1
  33. package/preset/odai/runtime/router.mjs +47 -2
  34. package/preset/odai/runtime/router.mjs.map +1 -1
  35. package/preset/odai/runtime/routing-config.d.mts +5 -2
  36. package/preset/odai/runtime/routing-config.d.mts.map +1 -1
  37. package/preset/odai/runtime/routing-config.mjs +87 -42
  38. package/preset/odai/runtime/routing-config.mjs.map +1 -1
  39. package/preset/odai/runtime/runtime-config.d.mts +1 -1
  40. package/preset/odai/runtime/runtime-config.d.mts.map +1 -1
  41. package/preset/odai/runtime/runtime-config.mjs +15 -9
  42. package/preset/odai/runtime/runtime-config.mjs.map +1 -1
  43. package/preset/odai/runtime/runtime-support.d.mts +6 -1
  44. package/preset/odai/runtime/runtime-support.d.mts.map +1 -1
  45. package/preset/odai/runtime/runtime-support.mjs +90 -7
  46. package/preset/odai/runtime/runtime-support.mjs.map +1 -1
  47. package/preset/odai/runtime/runtime-types.d.mts +8 -1
  48. package/preset/odai/runtime/runtime-types.d.mts.map +1 -1
  49. package/preset/odai/runtime/runtime-types.mjs.map +1 -1
  50. package/preset/odai/runtime/skill-bundle.d.mts +1 -1
  51. package/preset/odai/runtime/skill-bundle.d.mts.map +1 -1
  52. package/preset/odai/runtime/work-policy.d.mts.map +1 -1
  53. package/preset/odai/runtime/work-policy.mjs +8 -2
  54. package/preset/odai/runtime/work-policy.mjs.map +1 -1
  55. package/preset/odai/skills/odai-orchestration/SKILL.md +1 -1
  56. package/preset/odai/skills/odai-orchestration/assets/codex-agents/role.toml +1 -0
  57. package/preset/odai/skills/odai-orchestration/assets/routing-roles/controller.md +1 -1
  58. package/preset/odai/skills/odai-orchestration/assets/routing-roles/creative.md +9 -0
  59. package/preset/odai/skills/odai-orchestration/manifest.json +9 -4
  60. package/preset/odai/skills/odai-orchestration/references/install.md +31 -1
  61. package/preset/odai/skills/odai-orchestration/references/orchestration.md +1 -0
  62. package/preset/odai/skills/odai-orchestration/scripts/build-routing.mjs +78 -17
  63. package/preset/odai/skills/odai-orchestration/scripts/compose-contracts.d.mts +1 -1
  64. package/preset/odai/skills/odai-orchestration/scripts/compose-contracts.mjs +2 -2
  65. package/preset/odai/skills/odai-orchestration/scripts/install-routing.mjs +101 -23
  66. package/preset/odai/skills/odai-orchestration/scripts/local-cli.d.mts +75 -0
  67. package/preset/odai/skills/odai-orchestration/scripts/local-cli.mjs +409 -0
  68. package/preset/odai/skills/odai-orchestration/scripts/run-role.mjs +190 -92
  69. package/preset/odai/skills/odai-orchestration/scripts/verify-routing.mjs +3 -3
@@ -1,5 +1,5 @@
1
1
  import type { DshEvent, DshMessage, ModelRoute } from "./runtime-types.mjs";
2
- export type OdaiRouteRole = "controller" | "researcher" | "planner" | "reviewer" | "frontend";
2
+ export type OdaiRouteRole = "controller" | "researcher" | "planner" | "reviewer" | "frontend" | "creative";
3
3
  export type OdaiRouteAction = "direct" | "delegate" | "upgrade";
4
4
  export interface RouteConsideration {
5
5
  readonly role: string;
@@ -30,6 +30,10 @@ export interface ResponsibilityInterruptionState {
30
30
  }
31
31
  export interface RouteDecisionInput {
32
32
  readonly text?: string;
33
+ /** Creative lexical routing is opt-in through an effective mapping. */
34
+ readonly creativeConfigured?: boolean;
35
+ /** Authenticated current user text, excluding appended earlier task context. */
36
+ readonly creativeText?: string;
33
37
  readonly proposal?: ResponsibilityGapState;
34
38
  readonly interruption?: ResponsibilityInterruptionState;
35
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.mts","sourceRoot":"","sources":["../src/router.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.d.mts","sourceRoot":"","sources":["../src/router.mts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { describeModelRoute } from "./model-route.mjs";
1
2
  import { isUnknownRecord } from "./runtime-types.mjs";
2
3
  function isContinuationRole(value) {
3
4
  return value === "planner" || value === "frontend";
@@ -180,6 +181,42 @@ function hasHighImpactEvidenceGap(text) {
180
181
  function isLowRiskTransform(text) {
181
182
  return matchesAny(stripQuotedMaterial(text), LOW_RISK_TRANSFORM_PATTERNS);
182
183
  }
184
+ function hasCreativeRequest(text) {
185
+ // Match adjacent noun phrases, not arbitrary text between a verb and a topic.
186
+ // Engineering/data work vetoes lexical routing for its entire short clause.
187
+ // Domain-neutral: ideation, reader-facing writing and voice, visual direction, and taste review.
188
+ // Game terms are one domain among others, not the scope.
189
+ const englishObjects = "copywriting|copy|taglines?|slogans?|headlines?|dialogues?|narratives?|stor(?:y|ies)|lore|tone of voice|brand voice|naming|names|name ideas|art direction|visual direction|level design|game design|store page|balance|cover letter|resume|bio";
190
+ const objects = new RegExp(`(?:(?:产品|项目|公司|品牌|个人|自我)?(?:介绍|简介)|文案|文字|措辞|文风|语气|调性|标语|口号|宣传语|广告语|简历|求职信|演讲稿|发言稿|故事|剧情|对白|台词|旁白|创意|点子|脑洞|品牌名|产品名|名字|名称|视觉方向|美术方向|画风|世界观|人设|角色设定|玩法|关卡设计|数值平衡|商店页|套话|翻译腔|机器味|AI\\s*[味腔])+|\\b(?:${englishObjects})(?:\\s+(?:${englishObjects}))*\\b`, "giu");
191
+ const engineering = /代码|逻辑|系统|测试|脚本|实现|报错|加载|性能|存档|数据|数据库|配置|模块|组件|接口|函数|变量|常量|字段|文件|表|列|键|类|方法|结构|渲染|解析|导入|导出|格式|编码|缓存|复杂度|提交|日志|部署|构建|编译|依赖|迁移|\b(?:code|tests?|logic|systems?|scripts?|bugs?|load|loading|performance|data|database|config|modules?|components?|interfaces?|functions?|variables?|constants?|fields?|files?|tables?|columns?|keys?|classes|class|methods?|parsers?|renderers?|import|export|cache|sheets?|pr|commits?|id|api|sql|logs?|deploy|build|compile|dependenc(?:y|ies)|migrations?)\b/iu;
192
+ const verbs = "改写|重写|润色|改改|改一改|起名|取名|起|取|想想|想|构思|发散|脑暴|头脑风暴|拟|审查|审|把关|评估|优化|写";
193
+ const fillers = "一下|下|一遍|这段|那段|这个|那个|这份|那份|这些|那些|这篇|那篇|一篇|一段|一份|一些|一句|一条|几个|个|我的|[一二三四五六七八九十\\d]+[版个条]|第[一二三四五六七八九十\\d]+章的|的|\\s";
194
+ const actionBefore = new RegExp(`(?:${verbs})(?:${fillers}){0,5}$|\\b(?:write|rewrite|polish|draft|review|name|brainstorm|come up with|suggest|improve)\\s+(?:(?:the|this|that|these|a|an|some|our|my)\\s+){0,2}$`, "iu");
195
+ const actionAfter = /^(?:的|你|请|帮我|给我|再|\s){0,4}(?:改写|重写|润色|改改|改一改|起名|取名|想想|构思|发散|脑暴|头脑风暴|拟|审查|审|把关|评估|优化|写(?!进|到|入|在))/u;
196
+ // "这段话 AI 味太重,帮我改改": a complaint about creative content followed by a bare fix request.
197
+ const complaint = /太|不够|有点|过于|生硬|啰嗦|别扭|尴尬|平淡|空洞|干巴|不像|不自然|AI\s*[味腔]|套话|翻译腔|机器味/u;
198
+ const bareAction = /^(?:\s|请|帮我|给我|麻烦|再|你)*(?:改写|重写|润色|改改|改一改|优化|把关|审查|审)(?:一下|一遍|下)?(?:吧|呗)?\s*$/u;
199
+ let complainedObject = false;
200
+ for (const clause of text.split(/[,,。.!!??;;::\n\r]/u)) {
201
+ const vetoed = engineering.test(clause);
202
+ if (!vetoed && complainedObject && bareAction.test(clause))
203
+ return true;
204
+ complainedObject = false;
205
+ if (vetoed)
206
+ continue;
207
+ for (const match of clause.matchAll(objects)) {
208
+ const before = clause.slice(0, match.index);
209
+ const after = clause.slice(match.index + match[0].length);
210
+ if (/\bcopy$/iu.test(match[0]) && /^\s+of\b/iu.test(after))
211
+ continue;
212
+ if (actionBefore.test(before) || actionAfter.test(after))
213
+ return true;
214
+ if (complaint.test(clause))
215
+ complainedObject = true;
216
+ }
217
+ }
218
+ return false;
219
+ }
183
220
  function frontendSpecializationSignals(text) {
184
221
  const explicit = matchesAny(text, FRONTEND_EXPLICIT_SPECIALIST_PATTERNS);
185
222
  const surfaceCount = FRONTEND_SURFACE_PATTERNS.filter((pattern) => pattern.test(text)).length;
@@ -318,6 +355,10 @@ export function decideRoute(input = {}) {
318
355
  signals.push("evidence-grounded-responsibility-gap", `state:${proposal.stateDigest}`);
319
356
  return route("controller", "FRONTEND_EVIDENCE_STATE_GAP", proposal.gap, signals, "upgrade", "frontend");
320
357
  }
358
+ if (input.creativeConfigured && proposal?.responsibility === "creative") {
359
+ signals.push("evidence-grounded-responsibility-gap", `state:${proposal.stateDigest}`);
360
+ return route("creative", "CREATIVE_EVIDENCE_STATE_GAP", proposal.gap, signals);
361
+ }
321
362
  if (matchesAny(explicitIntentText, REVIEWER_PATTERNS)) {
322
363
  signals.push("review-language-present");
323
364
  considerations.push(Object.freeze({
@@ -359,6 +400,10 @@ export function decideRoute(input = {}) {
359
400
  && !matchesAny(explicitIntentText, NON_IMPLEMENTATION_QUERY_PATTERNS)) {
360
401
  return route("controller", "HIGH_IMPACT_EVIDENCE_REQUIRED", "The requested high-impact change relies on an unverified causal claim. Verify the evidence and authorization; risk alone does not establish an independent capability gap.", signals);
361
402
  }
403
+ if (input.creativeConfigured && !proposal
404
+ && hasCreativeRequest(stripQuotedMaterial(input.creativeText ?? text))) {
405
+ return route("creative", "CREATIVE_CONTENT_REQUEST", "The user requested creative production or review through an adjacent action and creative object.", [...signals, "creative-content-request"]);
406
+ }
362
407
  const frontendSignals = frontend.scope || frontend.explicit ? frontendRouteSignals(frontend) : [];
363
408
  signals.push(...frontendSignals, "no-independent-gap");
364
409
  const direct = route("controller", "DIRECT_DEFAULT_NO_INDEPENDENT_GAP", "No evidence-grounded independent decision, execution, or acceptance gap was found.", signals);
@@ -434,7 +479,7 @@ function observeProtocol(_decision) {
434
479
  }
435
480
  export function renderRouteNotice(decision, runtimeMode, actualRoute, dispatch) {
436
481
  const routeRole = decision.targetRole ?? decision.role;
437
- const isUpgrade = dispatch
482
+ const isUpgrade = actualRoute?.backend === "local-cli" ? false : dispatch
438
483
  ? dispatch === "same-turn"
439
484
  : decision.action === "upgrade"
440
485
  && (runtimeMode === "auto" || ["frontend"].includes(routeRole));
@@ -444,7 +489,7 @@ export function renderRouteNotice(decision, runtimeMode, actualRoute, dispatch)
444
489
  ? `The ${routeRole} gap was selected in observe mode; do not start a child automatically.`
445
490
  : `The ${routeRole} route was selected and executed as an independent child.`;
446
491
  const routeIdentity = actualRoute
447
- ? [`${isUpgrade ? "requested controller route" : "verified child route"}: ${actualRoute.provider}/${actualRoute.model} (reasoning: ${actualRoute.reasoningEffort ?? "unspecified"}, maxTokens: ${actualRoute.maxTokens ?? (isUpgrade ? "inherited from Controller policy" : "provider default")})`]
492
+ ? [`${isUpgrade ? "requested controller route" : "verified child route"}: ${describeModelRoute(actualRoute, { style: "notice", defaultMaxTokens: isUpgrade ? "inherited from Controller policy" : "provider default" })}`]
448
493
  : [];
449
494
  return [
450
495
  "odai automatic routing decision",
@@ -1 +1 @@
1
- {"version":3,"file":"router.mjs","sourceRoot":"","sources":["../src/router.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.mjs","sourceRoot":"","sources":["../src/router.mts"],"names":[],"mappings":"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"}
@@ -1,14 +1,14 @@
1
1
  import { type ResolveCallConfig } from "./model-route.mjs";
2
2
  import { type OutputPolicy, type ResponsibilityOutputBudgets } from "./output-config.mjs";
3
3
  import type { DshAgent, ModelRoute, ResponsibilityDispatch, RuntimeTool } from "./runtime-types.mjs";
4
- export declare const CONFIGURABLE_ROLES: readonly ["researcher", "planner", "reviewer", "frontend"];
4
+ export declare const CONFIGURABLE_ROLES: readonly ["researcher", "planner", "reviewer", "frontend", "creative"];
5
5
  export type ConfigurableRole = (typeof CONFIGURABLE_ROLES)[number];
6
6
  export type RoleRoutes = Partial<Record<ConfigurableRole, ModelRoute>>;
7
7
  export type RoleRouteSources = Partial<Record<ConfigurableRole, "persisted-mapping" | "deployment-config">>;
8
8
  export type RoleDispatches = Partial<Record<ConfigurableRole, ResponsibilityDispatch>>;
9
9
  export type RoleDispatchSources = Partial<Record<ConfigurableRole, "persisted-config" | "deployment-config">>;
10
10
  export interface RoutingStore {
11
- readonly schemaVersion: 1 | 2;
11
+ readonly schemaVersion: 1 | 2 | 3;
12
12
  readonly roles: Readonly<RoleRoutes>;
13
13
  readonly dispatch: Readonly<RoleDispatches>;
14
14
  }
@@ -30,6 +30,8 @@ export interface LatestRouteReceipt {
30
30
  fallbackUsed?: boolean;
31
31
  requestedRoute?: ModelRoute;
32
32
  actualRoute?: ModelRoute;
33
+ reasoningEffortVerification?: "verified" | "mismatch" | "requested-only";
34
+ deniedActionsCount?: number;
33
35
  stopReason?: string;
34
36
  error?: string;
35
37
  taskStopReason?: string;
@@ -38,6 +40,7 @@ export interface LatestRouteReceipt {
38
40
  export declare const ROUTING_CONFIG_PROMPT: string;
39
41
  export declare function resolveRoleRoute(value: unknown, role: unknown): Readonly<ModelRoute> | undefined;
40
42
  export declare function resolveRoleDispatch(value: unknown, role: unknown): ResponsibilityDispatch | undefined;
43
+ export declare function assertRoleRouteDispatch(route: ModelRoute | undefined, dispatch: ResponsibilityDispatch | undefined, role: ConfigurableRole): void;
41
44
  export declare function resolveRoutingConfigPath(configuredPath: unknown, env?: Readonly<Record<string, string | undefined>>): string;
42
45
  export declare function readRoutingStore(configPath: string): Readonly<RoutingStore>;
43
46
  export declare function effectiveRoleRoute(configPath: string, configuredRoles: Readonly<RoleRoutes>, role: ConfigurableRole): ModelRoute | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"routing-config.d.mts","sourceRoot":"","sources":["../src/routing-config.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routing-config.d.mts","sourceRoot":"","sources":["../src/routing-config.mts"],"names":[],"mappings":"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"}
@@ -2,27 +2,28 @@ import { randomUUID } from "node:crypto";
2
2
  import { copyFileSync, existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync, } from "node:fs";
3
3
  import { homedir } from "node:os";
4
4
  import { dirname, resolve } from "node:path";
5
- import { requireModelRoute, sameModelRoute } from "./model-route.mjs";
5
+ import { validateLocalCliRoute } from "#odai-local-cli";
6
+ import { describeModelRoute, requireModelRoute, sameModelRoute } from "./model-route.mjs";
6
7
  import { IN_PLACE_OUTPUT_RESPONSIBILITIES, resolveInPlaceResponsibilityOutputBudgets, } from "./output-config.mjs";
7
8
  import { isUnknownRecord } from "./runtime-types.mjs";
8
9
  import { acquireOwnedStoreLock } from "./store-lock.mjs";
9
- export const CONFIGURABLE_ROLES = Object.freeze(["researcher", "planner", "reviewer", "frontend"]);
10
+ export const CONFIGURABLE_ROLES = Object.freeze(["researcher", "planner", "reviewer", "frontend", "creative"]);
10
11
  export const ROUTING_CONFIG_PROMPT = [
11
12
  "## Odai responsibility model configuration",
12
- "When the user naturally asks to inspect, set, change, or remove the research/investigation, planning/planner, review/acceptance/reviewer, or frontend design/implementation model, use odai_routing_config.",
13
+ "When the user naturally asks to inspect, set, change, or remove the research/investigation, planning/planner, review/acceptance/reviewer, frontend design/implementation, or creative writing/design/review model, use odai_routing_config.",
13
14
  "Translate the user's natural responsibility wording into the tool's responsibility field. Do not require internal routing terms or a special prompt form.",
14
- "For a model set, call the tool only after the user explicitly supplies both provider and model. Pass reasoningEffort or maxTokens only when the user supplies them; otherwise omit them.",
15
- "A user may independently set or reset one responsibility's dispatch. researcher, planner, reviewer, and frontend accept same-turn or child. Do not require provider/model again for a dispatch-only change.",
16
- "Never infer, recommend as chosen, or silently select any provider, model, effort, token limit, dispatch, or price. Ask a concise clarification when a requested value is ambiguous.",
15
+ "For an API model set, require explicit provider and model from the user. For backend=local-cli, require explicit cli and model; this version supports cli=claude/codex/antigravity/grok for planner/frontend/creative as child. gemini is reserved and unsupported; Antigravity uses cli=antigravity. Pass reasoningEffort, maxTokens (API only), or timeoutSeconds (local-cli only) only when supplied by the user; otherwise omit them.",
16
+ "A user may independently set or reset one responsibility's dispatch. API routes for researcher, planner, reviewer, and frontend accept same-turn or child; creative on either backend and all local-cli routes reject same-turn and default to child. Do not require provider/model or cli/model again for a dispatch-only change.",
17
+ "Never infer, recommend as chosen, or silently select any provider, cli, model, effort, timeout, token limit, dispatch, or price. Ask a concise clarification when a requested value is ambiguous.",
17
18
  "Researcher routing is task-gated but not price-aware. A researcher mapping enables the narrow trigger but does not guarantee lower cost; compare actual provider prices and measured usage without inventing either.",
18
- "A generic subagent is not proof that a configured responsibility ran. For a matching responsibility use odai_responsibility_gap so configured dispatch and evidence gates apply. For an explicitly authorized manual planner/frontend child, begin the native tool's description with `odai-planner:` or `odai-frontend:`: DSH uses description as its descriptor label and applies that role's configured model and contract. Researcher/reviewer require managed dispatch and evidence validation; hand-written labels cannot authorize them. For a user-authorized alternative model, do not use that prefix or claim the persisted mapping ran.",
19
+ "A generic subagent is not proof that a configured responsibility ran. For a matching responsibility use odai_responsibility_gap so configured dispatch and evidence gates apply. Local-cli routes must use odai_responsibility_gap; native child tools cannot run them. For an explicitly authorized manual API planner/frontend/creative child, begin the native tool's description with `odai-planner:`, `odai-frontend:`, or `odai-creative:`: DSH uses description as its descriptor label and applies that role's configured model and contract. Researcher/reviewer require managed dispatch and evidence validation; hand-written labels cannot authorize them. For a user-authorized alternative model, do not use that prefix or claim the persisted mapping ran.",
19
20
  "Do not ask the user to edit YAML, JSON, managed Agent files, or Plugin configuration. The tool owns persistence. A set/remove change applies from the next user turn.",
20
21
  "Base controller selection remains host-owned and is not changed by this tool.",
21
22
  ].join("\n");
22
23
  const ROLE_ROUTE_FIELDS = new Set(["provider", "model", "reasoningEffort", "maxTokens"]);
23
24
  const RETIRED_STORE_ROLES = new Set(["executor"]);
24
25
  const STORE_SCHEMA_VERSION = 2;
25
- const SUPPORTED_STORE_SCHEMA_VERSIONS = new Set([1, STORE_SCHEMA_VERSION]);
26
+ const SUPPORTED_STORE_SCHEMA_VERSIONS = new Set([1, STORE_SCHEMA_VERSION, 3]);
26
27
  const DISPATCH_VALUES = new Set(["same-turn", "child"]);
27
28
  function isConfigurableRole(value) {
28
29
  return typeof value === "string" && CONFIGURABLE_ROLES.includes(value);
@@ -34,6 +35,15 @@ export function resolveRoleRoute(value, role) {
34
35
  throw new TypeError(`unknown odai routing responsibility: ${String(role)}`);
35
36
  if (!isUnknownRecord(value))
36
37
  throw new TypeError(`routing role ${role} must be an object`);
38
+ if (value.backend === "local-cli") {
39
+ if (role === "researcher") {
40
+ throw new TypeError("local-cli researcher is unsupported: researcher requires a validated research package and the DSH read-tool evidence chain");
41
+ }
42
+ if (role === "reviewer") {
43
+ throw new TypeError("local-cli reviewer is unsupported: reviewer requires odai_review_evidence from DSH");
44
+ }
45
+ return Object.freeze({ ...validateLocalCliRoute(value) });
46
+ }
37
47
  const unknownFields = Object.keys(value).filter((field) => !ROLE_ROUTE_FIELDS.has(field));
38
48
  if (unknownFields.length > 0) {
39
49
  throw new TypeError(`routing role ${role} has unknown fields: ${unknownFields.join(", ")}`);
@@ -67,8 +77,17 @@ export function resolveRoleDispatch(value, role) {
67
77
  if (typeof value !== "string" || !DISPATCH_VALUES.has(value)) {
68
78
  throw new TypeError(`routing dispatch ${role} must be same-turn or child`);
69
79
  }
80
+ assertRoleRouteDispatch(undefined, value, role);
70
81
  return value;
71
82
  }
83
+ export function assertRoleRouteDispatch(route, dispatch, role) {
84
+ if (role === "creative" && dispatch === "same-turn") {
85
+ throw new TypeError("routing responsibility creative only supports child dispatch; same-turn is not supported for API or local-cli routes");
86
+ }
87
+ if (route?.backend === "local-cli" && dispatch === "same-turn") {
88
+ throw new TypeError(`routing responsibility ${role}: local-cli only supports child dispatch; same-turn is not supported`);
89
+ }
90
+ }
72
91
  export function resolveRoutingConfigPath(configuredPath, env = process.env) {
73
92
  if (configuredPath !== undefined) {
74
93
  if (typeof configuredPath !== "string" || configuredPath.trim() === "") {
@@ -127,6 +146,7 @@ export function readRoutingStore(configPath) {
127
146
  for (const role of CONFIGURABLE_ROLES) {
128
147
  const route = resolveRoleRoute(rawRoles[role], role);
129
148
  const dispatch = resolveRoleDispatch(rawDispatch[role], role);
149
+ assertRoleRouteDispatch(route, dispatch, role);
130
150
  if (route)
131
151
  entries.push([role, route]);
132
152
  if (dispatch)
@@ -150,6 +170,7 @@ export function effectiveRoutingSnapshot(configPath, configuredRoles = {}, confi
150
170
  for (const role of CONFIGURABLE_ROLES) {
151
171
  const route = persisted.roles[role] ?? configuredRoles[role];
152
172
  const roleDispatch = persisted.dispatch[role] ?? configuredDispatch[role];
173
+ assertRoleRouteDispatch(route, roleDispatch, role);
153
174
  if (route) {
154
175
  roles[role] = route;
155
176
  sources[role] = persisted.roles[role] ? "persisted-mapping" : "deployment-config";
@@ -169,7 +190,8 @@ export function effectiveRoutingSnapshot(configPath, configuredRoles = {}, confi
169
190
  function writeRoutingStore(configPath, roles, dispatch) {
170
191
  mkdirSync(dirname(configPath), { recursive: true, mode: 0o700 });
171
192
  const temporary = `${configPath}.tmp-${process.pid}-${randomUUID()}`;
172
- const value = `${JSON.stringify({ schemaVersion: STORE_SCHEMA_VERSION, roles, dispatch }, null, 2)}\n`;
193
+ const schemaVersion = Object.values(roles).some((route) => route?.backend === "local-cli") ? 3 : STORE_SCHEMA_VERSION;
194
+ const value = `${JSON.stringify({ schemaVersion, roles, dispatch }, null, 2)}\n`;
173
195
  try {
174
196
  writeFileSync(temporary, value, { encoding: "utf8", mode: 0o600, flag: "wx" });
175
197
  renameSync(temporary, configPath);
@@ -206,15 +228,28 @@ export function invalidatePersistedRoleRoute(configPath, role, expectedRoute) {
206
228
  }
207
229
  function routeSchema(required) {
208
230
  return {
209
- type: "object",
210
- additionalProperties: false,
211
- ...(required ? { required: ["provider", "model"] } : {}),
212
- properties: {
213
- provider: { type: "string" },
214
- model: { type: "string" },
215
- reasoningEffort: { type: "string" },
216
- maxTokens: { type: "integer" },
217
- },
231
+ oneOf: [{
232
+ type: "object",
233
+ additionalProperties: false,
234
+ ...(required ? { required: ["provider", "model"] } : {}),
235
+ properties: {
236
+ provider: { type: "string" },
237
+ model: { type: "string" },
238
+ reasoningEffort: { type: "string" },
239
+ maxTokens: { type: "integer" },
240
+ },
241
+ }, {
242
+ type: "object",
243
+ additionalProperties: false,
244
+ required: ["backend", "cli", "model"],
245
+ properties: {
246
+ backend: { type: "string", const: "local-cli" },
247
+ cli: { type: "string", enum: ["claude", "codex", "antigravity", "grok"] },
248
+ model: { type: "string" },
249
+ reasoningEffort: { type: "string" },
250
+ timeoutSeconds: { type: "integer", description: "Local CLI timeout in seconds, from 1 to 7200." },
251
+ },
252
+ }],
218
253
  };
219
254
  }
220
255
  function resultFor(configPath, action, snapshot, responsibility, recoveredInvalidStore = false, latestRoute, outputPolicy) {
@@ -247,19 +282,23 @@ export async function applyRoutingConfigAction(configPath, arguments_, options =
247
282
  return resultFor(configPath, "show", effectiveRoutingSnapshot(configPath, configuredRoles, configuredDispatch), undefined, false, options.latestRoute, options.outputPolicy);
248
283
  }
249
284
  if (!isConfigurableRole(arguments_.responsibility)) {
250
- throw new TypeError("responsibility must be researcher, planner, reviewer, or frontend for configuration changes");
285
+ throw new TypeError("responsibility must be researcher, planner, reviewer, frontend, or creative for configuration changes");
251
286
  }
252
287
  const responsibility = arguments_.responsibility;
253
288
  const proposedRoute = routingAction === "set" ? resolveRoleRoute({
254
- provider: arguments_.provider,
289
+ ...(arguments_.backend === undefined ? {} : { backend: arguments_.backend }),
290
+ ...(arguments_.cli === undefined ? {} : { cli: arguments_.cli }),
291
+ ...(Object.hasOwn(arguments_, "provider") ? { provider: arguments_.provider } : {}),
292
+ ...(arguments_.timeoutSeconds === undefined ? {} : { timeoutSeconds: arguments_.timeoutSeconds }),
255
293
  model: arguments_.model,
256
294
  ...(arguments_.reasoningEffort === undefined ? {} : { reasoningEffort: arguments_.reasoningEffort }),
257
- ...(arguments_.maxTokens === undefined ? {} : { maxTokens: arguments_.maxTokens }),
295
+ ...(arguments_.maxTokens !== undefined || (arguments_.backend === "local-cli" && Object.hasOwn(arguments_, "maxTokens"))
296
+ ? { maxTokens: arguments_.maxTokens } : {}),
258
297
  }, responsibility) : undefined;
259
298
  const proposedDispatch = routingAction === "set-dispatch"
260
299
  ? resolveRoleDispatch(arguments_.dispatch, responsibility)
261
300
  : undefined;
262
- if (routingAction === "set" && proposedRoute) {
301
+ if (routingAction === "set" && proposedRoute && proposedRoute.backend !== "local-cli") {
263
302
  await requireModelRoute(options.resolveCallConfig, proposedRoute, options.signal, `${responsibility} responsibility route`);
264
303
  }
265
304
  const releaseLock = acquireOwnedStoreLock(configPath, "Odai routing configuration");
@@ -291,13 +330,16 @@ export async function applyRoutingConfigAction(configPath, arguments_, options =
291
330
  else if (routingAction === "reset-dispatch") {
292
331
  delete dispatch[responsibility];
293
332
  }
333
+ for (const role of CONFIGURABLE_ROLES) {
334
+ assertRoleRouteDispatch(roles[role] ?? configuredRoles[role], dispatch[role] ?? configuredDispatch[role], role);
335
+ }
294
336
  writeRoutingStore(configPath, roles, dispatch);
295
337
  const event = {
296
338
  action: routingAction,
297
339
  responsibility,
298
340
  ...(roles[responsibility] ? { route: roles[responsibility] } : {}),
299
341
  ...(dispatch[responsibility] ? { dispatch: dispatch[responsibility] } : {}),
300
- validationStatus: routingAction === "set" && proposedRoute ? "verified" : undefined,
342
+ validationStatus: routingAction === "set" && proposedRoute && proposedRoute.backend !== "local-cli" ? "verified" : undefined,
301
343
  ...(recoveredInvalidStore ? { recoveredInvalidStore: true } : {}),
302
344
  };
303
345
  options.onConfigured?.(event);
@@ -317,12 +359,12 @@ export function createRoutingConfigTool(configPath, options = {}) {
317
359
  return {
318
360
  name: "odai_routing_config",
319
361
  description: [
320
- "Inspect effective Odai model mappings, per-responsibility dispatch overrides, and the latest current-session route receipt; set/remove mappings or set/reset dispatch for researcher, planner, reviewer, and frontend responsibilities.",
321
- "Use this only when the user naturally and explicitly asks to inspect/remove a mapping, names the provider/model to set, or explicitly chooses same-turn/child dispatch.",
322
- "Never choose a provider, model, reasoning effort, token limit, or price on the user's behalf. Never choose a dispatch mode on the user's behalf.",
362
+ "Inspect effective Odai model mappings, per-responsibility dispatch overrides, and the latest current-session route receipt; set/remove mappings or set/reset dispatch for researcher, planner, reviewer, frontend, and creative responsibilities.",
363
+ "Use this only when the user naturally and explicitly asks to inspect/remove a mapping, names the provider/model or local-cli cli/model to set, or explicitly chooses same-turn/child dispatch.",
364
+ "Never choose a provider, cli, model, reasoning effort, timeout, token limit, or price on the user's behalf. Never choose a dispatch mode on the user's behalf.",
323
365
  "Researcher routing is task-gated but not price-aware; its mapping does not guarantee lower cost.",
324
366
  "For every configuration change, handle one responsibility per call. Persisted model mappings and dispatch overrides are shared by the Odai DSH Plugin and Agent and apply from the next user turn.",
325
- "Results expose configured in-place responsibility ceilings and warn when planner or frontend mappings without maxTokens inherit the controller ceiling; never invent an override.",
367
+ "Local-cli supports claude, codex, antigravity, and grok for planner/frontend/creative as child, defaulting to child when dispatch is omitted. researcher/reviewer require DSH evidence tools and cannot use local-cli. Creative also defaults to child on API routes and rejects same-turn. Results expose API in-place responsibility ceilings; never invent an override.",
326
368
  ].join(" "),
327
369
  parameters: {
328
370
  type: "object",
@@ -331,11 +373,14 @@ export function createRoutingConfigTool(configPath, options = {}) {
331
373
  properties: {
332
374
  action: { type: "string", enum: ["show", "set", "remove", "set-dispatch", "reset-dispatch"], description: "Show configuration, set/remove one model mapping, or set/reset one dispatch override." },
333
375
  responsibility: { type: "string", enum: [...CONFIGURABLE_ROLES], description: "Required for every action except show." },
334
- provider: { type: "string", description: "Provider id explicitly supplied by the user; required for set." },
376
+ backend: { type: "string", enum: ["local-cli"], description: "Set local-cli when the user explicitly requests a local CLI route; omit for API routes." },
377
+ cli: { type: "string", enum: ["claude", "codex", "antigravity", "grok", "gemini"], description: "CLI explicitly supplied by the user; required with local-cli. claude, codex, antigravity, and grok are supported. gemini is reserved and rejected; use antigravity for Antigravity's agy CLI." },
378
+ timeoutSeconds: { type: "integer", description: "Optional local-cli timeout explicitly supplied by the user, from 1 to 7200 seconds; defaults to 1200 seconds." },
379
+ provider: { type: "string", description: "Provider id explicitly supplied by the user; required for API set and forbidden with local-cli." },
335
380
  model: { type: "string", description: "Model id explicitly supplied by the user; required for set." },
336
381
  reasoningEffort: { type: "string", description: "Optional reasoning effort explicitly supplied by the user." },
337
382
  maxTokens: { type: "integer", description: "Optional positive output limit explicitly supplied by the user. It limits routed child requests and explicitly overrides the global controller ceiling only inside the same planner or frontend responsibility scope when that responsibility runs in-place." },
338
- dispatch: { type: "string", enum: ["same-turn", "child"], description: "Required for set-dispatch. Every responsibility accepts same-turn or child." },
383
+ dispatch: { type: "string", enum: ["same-turn", "child"], description: "Required for set-dispatch. Creative and local-cli routes only accept child; other API responsibilities accept same-turn or child." },
339
384
  },
340
385
  },
341
386
  output: {
@@ -377,7 +422,8 @@ export function createRoutingConfigTool(configPath, options = {}) {
377
422
  status: { type: "string", enum: ["applied", "mismatch", "unverified", "fallback"] },
378
423
  taskStatus: { type: "string", enum: ["completed", "fallback"] }, routeMode: { type: "string", enum: ["inline", "same-turn", "child"] },
379
424
  routeSource: { type: "string", enum: ["persisted-mapping", "deployment-config"] }, fallbackUsed: { type: "boolean" },
380
- requestedRoute: routeSchema(true), actualRoute: routeSchema(true), stopReason: { type: "string" }, error: { type: "string" },
425
+ requestedRoute: routeSchema(true), actualRoute: routeSchema(true), reasoningEffortVerification: { type: "string", enum: ["verified", "mismatch", "requested-only"] },
426
+ deniedActionsCount: { type: "integer", description: "Non-negative count of actions denied by the CLI." }, stopReason: { type: "string" }, error: { type: "string" },
381
427
  taskStopReason: { type: "string" }, taskError: { type: "string" },
382
428
  },
383
429
  },
@@ -385,17 +431,13 @@ export function createRoutingConfigTool(configPath, options = {}) {
385
431
  },
386
432
  render(_arguments, value) {
387
433
  const mapping = Object.entries(value.roles)
388
- .map(([role, route]) => {
389
- const options = [
390
- ...(route.reasoningEffort ? [`reasoningEffort=${route.reasoningEffort}`] : []),
391
- ...(route.maxTokens ? [`maxTokens=${route.maxTokens}`] : []),
392
- ];
393
- return `${role}: ${route.provider}/${route.model}${options.length > 0 ? ` (${options.join(", ")})` : ""} [${value.sources[role]}]`;
394
- })
434
+ .map(([role, route]) => `${role}: ${describeModelRoute(route)} [${value.sources[role]}]`)
395
435
  .join("\n") || "No Odai responsibility models are configured.";
396
436
  const dispatch = Object.entries(value.dispatch)
397
437
  .map(([role, mode]) => `${role}: ${mode} [${value.dispatchSources[role]}]`)
398
- .join("\n") || "No per-responsibility dispatch overrides are configured; legacy defaults apply.";
438
+ .join("\n") || (value.roles.creative || Object.values(value.roles).some(route => route.backend === "local-cli")
439
+ ? "No per-responsibility dispatch overrides are configured; creative and local-cli routes use child and other API routes use legacy defaults."
440
+ : "No per-responsibility dispatch overrides are configured; legacy defaults apply.");
399
441
  const responsibilityBudgets = Object.entries(value.responsibilityBudgets ?? {});
400
442
  const configuredResponsibilities = responsibilityBudgets.length > 0
401
443
  ? `\nIn-place responsibility ceilings: ${responsibilityBudgets.map(([responsibility, budget]) => (`${responsibility}=${budget.maxTokens === undefined ? "no Odai maxTokens" : `maxTokens=${budget.maxTokens}`} [${budget.source}]`)).join("; ")}.`
@@ -415,11 +457,14 @@ export function createRoutingConfigTool(configPath, options = {}) {
415
457
  ...(value.latestRoute.error ? [`routeError=${value.latestRoute.error}`] : []),
416
458
  ...(value.latestRoute.taskError ? [`taskError=${value.latestRoute.taskError}`] : []),
417
459
  ...(value.latestRoute.actualRoute
418
- ? [`actual=${value.latestRoute.actualRoute.provider}/${value.latestRoute.actualRoute.model} (${[
419
- `reasoningEffort=${value.latestRoute.actualRoute.reasoningEffort ?? "unspecified"}`,
420
- ...(value.latestRoute.actualRoute.maxTokens === undefined ? [] : [`maxTokens=${value.latestRoute.actualRoute.maxTokens}`]),
421
- ].join(", ")})`]
460
+ ? [`actual=${describeModelRoute(value.latestRoute.actualRoute, { showUnspecifiedReasoning: true })}`]
422
461
  : ["actual=<unverified>"]),
462
+ ...(value.latestRoute.reasoningEffortVerification === "requested-only"
463
+ ? [`reasoningEffort=${value.latestRoute.requestedRoute?.reasoningEffort ?? "unspecified"} (requested only; not verified by the local CLI)`]
464
+ : value.latestRoute.reasoningEffortVerification
465
+ ? [`reasoningEffortVerification=${value.latestRoute.reasoningEffortVerification}`]
466
+ : []),
467
+ ...(value.latestRoute.deniedActionsCount === undefined ? [] : [`deniedActionsCount=${value.latestRoute.deniedActionsCount}`]),
423
468
  ].join("\n")
424
469
  : value.action === "show"
425
470
  ? "\nNo mapped responsibility route receipt is recorded in this session."