agent-nuvira 3.3.11 → 3.3.13

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 (220) hide show
  1. package/README.md +32 -1
  2. package/dist/agents/agents/reasoner.d.ts.map +1 -1
  3. package/dist/agents/agents/reasoner.js +13 -0
  4. package/dist/agents/agents/reasoner.js.map +1 -1
  5. package/dist/agents/orchestrator.d.ts.map +1 -1
  6. package/dist/agents/orchestrator.js +56 -20
  7. package/dist/agents/orchestrator.js.map +1 -1
  8. package/dist/cli/chat.d.ts +36 -0
  9. package/dist/cli/chat.d.ts.map +1 -1
  10. package/dist/cli/chat.js +456 -43
  11. package/dist/cli/chat.js.map +1 -1
  12. package/dist/cli/cli-program.d.ts.map +1 -1
  13. package/dist/cli/cli-program.js +8 -0
  14. package/dist/cli/cli-program.js.map +1 -1
  15. package/dist/cli/config.d.ts.map +1 -1
  16. package/dist/cli/config.js +35 -4
  17. package/dist/cli/config.js.map +1 -1
  18. package/dist/cli/execute.d.ts.map +1 -1
  19. package/dist/cli/execute.js +14 -0
  20. package/dist/cli/execute.js.map +1 -1
  21. package/dist/cli/knowledge.d.ts +23 -0
  22. package/dist/cli/knowledge.d.ts.map +1 -0
  23. package/dist/cli/knowledge.js +132 -0
  24. package/dist/cli/knowledge.js.map +1 -0
  25. package/dist/cli/loop-executor.d.ts.map +1 -1
  26. package/dist/cli/loop-executor.js +57 -13
  27. package/dist/cli/loop-executor.js.map +1 -1
  28. package/dist/cli/omniroute-control.d.ts +88 -0
  29. package/dist/cli/omniroute-control.d.ts.map +1 -0
  30. package/dist/cli/omniroute-control.js +179 -0
  31. package/dist/cli/omniroute-control.js.map +1 -0
  32. package/dist/cli/omniroute.d.ts +21 -0
  33. package/dist/cli/omniroute.d.ts.map +1 -0
  34. package/dist/cli/omniroute.js +67 -0
  35. package/dist/cli/omniroute.js.map +1 -0
  36. package/dist/cli/tool-install-prompt.d.ts +58 -0
  37. package/dist/cli/tool-install-prompt.d.ts.map +1 -1
  38. package/dist/cli/tool-install-prompt.js +137 -0
  39. package/dist/cli/tool-install-prompt.js.map +1 -1
  40. package/dist/cli/weak-model-prompt.d.ts +16 -7
  41. package/dist/cli/weak-model-prompt.d.ts.map +1 -1
  42. package/dist/cli/weak-model-prompt.js +24 -8
  43. package/dist/cli/weak-model-prompt.js.map +1 -1
  44. package/dist/config/types.d.ts +44 -0
  45. package/dist/config/types.d.ts.map +1 -1
  46. package/dist/context/cache.d.ts +35 -1
  47. package/dist/context/cache.d.ts.map +1 -1
  48. package/dist/context/cache.js +31 -2
  49. package/dist/context/cache.js.map +1 -1
  50. package/dist/context/history.d.ts +21 -0
  51. package/dist/context/history.d.ts.map +1 -1
  52. package/dist/context/history.js +50 -0
  53. package/dist/context/history.js.map +1 -1
  54. package/dist/gateway/hook-contract.d.ts +173 -0
  55. package/dist/gateway/hook-contract.d.ts.map +1 -0
  56. package/dist/gateway/hook-contract.js +352 -0
  57. package/dist/gateway/hook-contract.js.map +1 -0
  58. package/dist/gateway/hooks.d.ts.map +1 -1
  59. package/dist/gateway/hooks.js +14 -0
  60. package/dist/gateway/hooks.js.map +1 -1
  61. package/dist/inference/interface.d.ts +17 -0
  62. package/dist/inference/interface.d.ts.map +1 -1
  63. package/dist/inference/model-catalog.d.ts +17 -0
  64. package/dist/inference/model-catalog.d.ts.map +1 -1
  65. package/dist/inference/model-catalog.js +42 -7
  66. package/dist/inference/model-catalog.js.map +1 -1
  67. package/dist/inference/model-id-validation.d.ts +57 -0
  68. package/dist/inference/model-id-validation.d.ts.map +1 -0
  69. package/dist/inference/model-id-validation.js +127 -0
  70. package/dist/inference/model-id-validation.js.map +1 -0
  71. package/dist/inference/openai-compat-adapter.d.ts.map +1 -1
  72. package/dist/inference/openai-compat-adapter.js +12 -1
  73. package/dist/inference/openai-compat-adapter.js.map +1 -1
  74. package/dist/inference/provider-catalog.d.ts +11 -0
  75. package/dist/inference/provider-catalog.d.ts.map +1 -1
  76. package/dist/inference/provider-catalog.js +80 -0
  77. package/dist/inference/provider-catalog.js.map +1 -1
  78. package/dist/inference/route-resolver.d.ts +2 -8
  79. package/dist/inference/route-resolver.d.ts.map +1 -1
  80. package/dist/inference/route-resolver.js +17 -0
  81. package/dist/inference/route-resolver.js.map +1 -1
  82. package/dist/inference/tool-call-utils.d.ts +4 -3
  83. package/dist/inference/tool-call-utils.d.ts.map +1 -1
  84. package/dist/inference/tool-call-utils.js +26 -12
  85. package/dist/inference/tool-call-utils.js.map +1 -1
  86. package/dist/inference/tools.d.ts +1 -0
  87. package/dist/inference/tools.d.ts.map +1 -1
  88. package/dist/inference/tools.js +20 -3
  89. package/dist/inference/tools.js.map +1 -1
  90. package/dist/learning/agentic-route-gate.d.ts +104 -0
  91. package/dist/learning/agentic-route-gate.d.ts.map +1 -0
  92. package/dist/learning/agentic-route-gate.js +125 -0
  93. package/dist/learning/agentic-route-gate.js.map +1 -0
  94. package/dist/learning/auto-router.d.ts +89 -0
  95. package/dist/learning/auto-router.d.ts.map +1 -1
  96. package/dist/learning/auto-router.js +188 -8
  97. package/dist/learning/auto-router.js.map +1 -1
  98. package/dist/learning/build-prerequisites.d.ts +68 -0
  99. package/dist/learning/build-prerequisites.d.ts.map +1 -0
  100. package/dist/learning/build-prerequisites.js +267 -0
  101. package/dist/learning/build-prerequisites.js.map +1 -0
  102. package/dist/learning/continuation-intent.d.ts +43 -0
  103. package/dist/learning/continuation-intent.d.ts.map +1 -0
  104. package/dist/learning/continuation-intent.js +82 -0
  105. package/dist/learning/continuation-intent.js.map +1 -0
  106. package/dist/learning/error-repair.d.ts +23 -1
  107. package/dist/learning/error-repair.d.ts.map +1 -1
  108. package/dist/learning/error-repair.js +58 -0
  109. package/dist/learning/error-repair.js.map +1 -1
  110. package/dist/learning/knowledge-base.d.ts +124 -0
  111. package/dist/learning/knowledge-base.d.ts.map +1 -0
  112. package/dist/learning/knowledge-base.js +337 -0
  113. package/dist/learning/knowledge-base.js.map +1 -0
  114. package/dist/learning/model-harness.d.ts +19 -0
  115. package/dist/learning/model-harness.d.ts.map +1 -1
  116. package/dist/learning/model-harness.js +27 -0
  117. package/dist/learning/model-harness.js.map +1 -1
  118. package/dist/learning/model-selection.d.ts +2 -1
  119. package/dist/learning/model-selection.d.ts.map +1 -1
  120. package/dist/learning/model-selection.js +35 -2
  121. package/dist/learning/model-selection.js.map +1 -1
  122. package/dist/learning/project-docs.d.ts +83 -0
  123. package/dist/learning/project-docs.d.ts.map +1 -0
  124. package/dist/learning/project-docs.js +132 -0
  125. package/dist/learning/project-docs.js.map +1 -0
  126. package/dist/learning/prompt-budget.d.ts +91 -0
  127. package/dist/learning/prompt-budget.d.ts.map +1 -0
  128. package/dist/learning/prompt-budget.js +99 -0
  129. package/dist/learning/prompt-budget.js.map +1 -0
  130. package/dist/learning/quota-ledger.d.ts +13 -0
  131. package/dist/learning/quota-ledger.d.ts.map +1 -1
  132. package/dist/learning/quota-ledger.js +28 -0
  133. package/dist/learning/quota-ledger.js.map +1 -1
  134. package/dist/learning/reasoning-trace.d.ts +55 -2
  135. package/dist/learning/reasoning-trace.d.ts.map +1 -1
  136. package/dist/learning/reasoning-trace.js +48 -0
  137. package/dist/learning/reasoning-trace.js.map +1 -1
  138. package/dist/learning/resilient-call.d.ts.map +1 -1
  139. package/dist/learning/resilient-call.js +16 -3
  140. package/dist/learning/resilient-call.js.map +1 -1
  141. package/dist/learning/routing-history.d.ts +13 -0
  142. package/dist/learning/routing-history.d.ts.map +1 -1
  143. package/dist/learning/routing-history.js.map +1 -1
  144. package/dist/learning/seeded-benchmark.d.ts +14 -0
  145. package/dist/learning/seeded-benchmark.d.ts.map +1 -1
  146. package/dist/learning/seeded-benchmark.js +43 -4
  147. package/dist/learning/seeded-benchmark.js.map +1 -1
  148. package/dist/learning/turn-report.d.ts +78 -0
  149. package/dist/learning/turn-report.d.ts.map +1 -0
  150. package/dist/learning/turn-report.js +140 -0
  151. package/dist/learning/turn-report.js.map +1 -0
  152. package/dist/security/secret-scan.d.ts +156 -0
  153. package/dist/security/secret-scan.d.ts.map +1 -0
  154. package/dist/security/secret-scan.js +525 -0
  155. package/dist/security/secret-scan.js.map +1 -0
  156. package/dist/tools/edit-verification.d.ts +2 -11
  157. package/dist/tools/edit-verification.d.ts.map +1 -1
  158. package/dist/tools/edit-verification.js +33 -1
  159. package/dist/tools/edit-verification.js.map +1 -1
  160. package/dist/tools/loop-skill-hint.d.ts +51 -0
  161. package/dist/tools/loop-skill-hint.d.ts.map +1 -1
  162. package/dist/tools/loop-skill-hint.js +87 -2
  163. package/dist/tools/loop-skill-hint.js.map +1 -1
  164. package/dist/tools/plan-store.d.ts +126 -3
  165. package/dist/tools/plan-store.d.ts.map +1 -1
  166. package/dist/tools/plan-store.js +290 -6
  167. package/dist/tools/plan-store.js.map +1 -1
  168. package/dist/tools/registry.d.ts +20 -1
  169. package/dist/tools/registry.d.ts.map +1 -1
  170. package/dist/tools/registry.js +165 -4
  171. package/dist/tools/registry.js.map +1 -1
  172. package/dist/tools/remediation-ladder.d.ts +91 -0
  173. package/dist/tools/remediation-ladder.d.ts.map +1 -0
  174. package/dist/tools/remediation-ladder.js +308 -0
  175. package/dist/tools/remediation-ladder.js.map +1 -0
  176. package/dist/tools/run-terminal.d.ts.map +1 -1
  177. package/dist/tools/run-terminal.js +60 -2
  178. package/dist/tools/run-terminal.js.map +1 -1
  179. package/dist/tools/skills-hub.d.ts +7 -0
  180. package/dist/tools/skills-hub.d.ts.map +1 -1
  181. package/dist/tools/skills-hub.js +11 -2
  182. package/dist/tools/skills-hub.js.map +1 -1
  183. package/dist/tools/step-artifact.d.ts +35 -0
  184. package/dist/tools/step-artifact.d.ts.map +1 -0
  185. package/dist/tools/step-artifact.js +154 -0
  186. package/dist/tools/step-artifact.js.map +1 -0
  187. package/dist/tools/tool-loop.d.ts +35 -0
  188. package/dist/tools/tool-loop.d.ts.map +1 -1
  189. package/dist/tools/tool-loop.js +284 -9
  190. package/dist/tools/tool-loop.js.map +1 -1
  191. package/dist/tools/toolsets.js +4 -4
  192. package/dist/tools/toolsets.js.map +1 -1
  193. package/dist/tools/worktree.d.ts +11 -2
  194. package/dist/tools/worktree.d.ts.map +1 -1
  195. package/dist/tools/worktree.js +11 -2
  196. package/dist/tools/worktree.js.map +1 -1
  197. package/dist/utils/effect-verification.js +1 -1
  198. package/dist/utils/effect-verification.js.map +1 -1
  199. package/dist/web-dashboard/chat-console.d.ts +21 -1
  200. package/dist/web-dashboard/chat-console.d.ts.map +1 -1
  201. package/dist/web-dashboard/chat-console.js +33 -5
  202. package/dist/web-dashboard/chat-console.js.map +1 -1
  203. package/dist/web-dashboard/server.d.ts +29 -0
  204. package/dist/web-dashboard/server.d.ts.map +1 -1
  205. package/dist/web-dashboard/server.js +410 -5
  206. package/dist/web-dashboard/server.js.map +1 -1
  207. package/dist/web-dashboard/src/types.d.ts +137 -0
  208. package/dist/web-dashboard/src/types.d.ts.map +1 -1
  209. package/dist/web-dashboard/workspace-guard.d.ts +7 -0
  210. package/dist/web-dashboard/workspace-guard.d.ts.map +1 -1
  211. package/dist/web-dashboard/workspace-guard.js +70 -0
  212. package/dist/web-dashboard/workspace-guard.js.map +1 -1
  213. package/package.json +4 -1
  214. package/src/web-dashboard/public/assets/index-DhiuR4S2.js +210 -0
  215. package/src/web-dashboard/public/assets/index-DhiuR4S2.js.map +1 -0
  216. package/src/web-dashboard/public/assets/index-tK8Y2qHB.css +1 -0
  217. package/src/web-dashboard/public/index.html +2 -2
  218. package/src/web-dashboard/public/assets/index-BdKf5Xw2.js +0 -207
  219. package/src/web-dashboard/public/assets/index-BdKf5Xw2.js.map +0 -1
  220. package/src/web-dashboard/public/assets/index-C9eBskc9.css +0 -1
@@ -0,0 +1,67 @@
1
+ /**
2
+ * OmniRouteCommand — lifecycle control for the external OmniRoute gateway.
3
+ *
4
+ * nuvira omniroute status — is it running? (real HTTP probe + port/pid)
5
+ * nuvira omniroute start — launch it in the background, wait until it answers
6
+ * nuvira omniroute stop — SIGTERM the running gateway
7
+ *
8
+ * OmniRoute is installed and run outside nuvira (`npm install -g omniroute`);
9
+ * this command is the same thin lifecycle layer the dashboard's Admin page uses
10
+ * ({@link ./omniroute-control.js}), so "is it up?" and "how do I stop it?" have
11
+ * one answer in both places. Starting/stopping is a service action and is gated
12
+ * like `nuvira gateway stop` (gateway.manage); `status` is read-only.
13
+ */
14
+ import { Command } from 'commander';
15
+ import { logger } from '../utils/logger.js';
16
+ import { guardRbacAction } from './rbac-guard.js';
17
+ import { omnirouteStatus, startOmniRoute, stopOmniRoute, OMNIROUTE_DEFAULT_URL, } from './omniroute-control.js';
18
+ export class OmniRouteCommand {
19
+ create() {
20
+ return new Command('omniroute')
21
+ .description('Start / stop / inspect the external OmniRoute AI gateway (default port 20128)')
22
+ .addCommand(new Command('status')
23
+ .description('Probe the OmniRoute gateway and report whether it is reachable')
24
+ .action(async () => this.status()))
25
+ .addCommand(new Command('start')
26
+ .description('Start the OmniRoute gateway in the background and wait for it to answer')
27
+ .action(async () => this.start()))
28
+ .addCommand(new Command('stop')
29
+ .description('Stop the running OmniRoute gateway')
30
+ .action(async () => this.stop()));
31
+ }
32
+ async status() {
33
+ const status = await omnirouteStatus();
34
+ const icon = status.reachable ? '✅' : status.running ? '⚠️' : '❌';
35
+ console.log(`${icon} OmniRoute at ${status.baseUrl}`);
36
+ console.log(` ${status.detail}`);
37
+ console.log(status.pid !== null
38
+ ? ` process: running on port ${status.port} (PID ${status.pid})`
39
+ : ` process: nothing found listening on port ${status.port}`);
40
+ if (!status.running) {
41
+ console.log(' Start it with: nuvira omniroute start (install: npm install -g omniroute)');
42
+ }
43
+ }
44
+ async start() {
45
+ if (!guardRbacAction('gateway.manage'))
46
+ return;
47
+ logger.info(`Starting OmniRoute (${OMNIROUTE_DEFAULT_URL})…`);
48
+ const result = await startOmniRoute();
49
+ if (result.ok) {
50
+ logger.success(result.detail);
51
+ return;
52
+ }
53
+ logger.error(result.detail);
54
+ process.exitCode = 1;
55
+ }
56
+ async stop() {
57
+ if (!guardRbacAction('gateway.manage'))
58
+ return;
59
+ const result = await stopOmniRoute();
60
+ if (result.stopped) {
61
+ logger.success(`OmniRoute stopped (PID ${result.pid})`);
62
+ return;
63
+ }
64
+ logger.warn(result.reason ?? 'OmniRoute is not running.');
65
+ }
66
+ }
67
+ //# sourceMappingURL=omniroute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"omniroute.js","sourceRoot":"","sources":["../../src/cli/omniroute.ts"],"names":[],"mappings":"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"}
@@ -31,6 +31,64 @@ export interface ToolInstallOptions {
31
31
  }
32
32
  /** Whether we have an install recipe for this tool on any OS. */
33
33
  export declare function isKnownSystemTool(tool: string): boolean;
34
+ /**
35
+ * Candidate tool names in a shell command line: the first token of every
36
+ * pipeline / `&&` / `;` segment, with `sudo`/`env`-style prefixes stripped.
37
+ * Pure; never throws.
38
+ */
39
+ export declare function commandToolNames(command: string): string[];
40
+ /**
41
+ * ALL known, installable system tools implicated by a failing command, in the
42
+ * order the shell would hit them, de-duplicated. The missing-binary signal in
43
+ * `output` is REQUIRED: a nonzero exit from a PRESENT tool (a failing test, a
44
+ * build error) is not this case.
45
+ *
46
+ * A single command line can need several prerequisites at once
47
+ * (`cd app && cargo build && cmake .`), which is the v3.3.3 behavior the user
48
+ * remembers: "agent kicks in and says I can install all of those software".
49
+ */
50
+ export declare function installableToolsFromFailure(command: string, output: string): string[];
51
+ /**
52
+ * The FIRST known, installable system tool implicated by a failing command —
53
+ * or null. Kept for callers that only need the head of the list.
54
+ */
55
+ export declare function installableToolFromFailure(command: string, output: string): string | null;
56
+ /**
57
+ * Is `name` an executable on PATH? Cheap (no spawn) — used to pick the install
58
+ * recipe for the machine we are actually on.
59
+ */
60
+ export declare function commandOnPath(name: string): boolean;
61
+ /** The concrete install command for a known tool on THIS machine, or null. */
62
+ export declare function resolveInstallCommand(tool: string): string | null;
63
+ /**
64
+ * The deterministic TAKEOVER instruction appended to a failed `run_terminal`
65
+ * result when a known, installable prerequisite is missing.
66
+ *
67
+ * WHY THIS EXISTS (live, 2026-10-03, trace trace-1791127992452-qzgodi).
68
+ * Asked to build a Tauri app, the model ran `cargo --version` → exit 127 and
69
+ * then DECLARED "I cannot install system-level software like Rust on your host
70
+ * machine — I am physically unable to build the Tauri application", handing the
71
+ * user a manual `curl … | sh` step. It was not sandboxed at all: it had a real
72
+ * shell and had just been told "i allow you to access my tools and skills and
73
+ * execute the commands on my terminal". A missing PREREQUISITE is a step to
74
+ * complete, not a wall — so this instruction names the exact install command
75
+ * and forbids the enclosed-system refusal.
76
+ */
77
+ export declare function toolTakeoverInstruction(tool: string | string[], installCommand?: string | Array<string | null>): string;
78
+ /**
79
+ * True when an install command cannot run unattended — it will block on human
80
+ * input we must not fabricate (a `sudo`/administrator password, the macOS
81
+ * `xcode-select --install` GUI, an explicit `--interactive` installer). Used to
82
+ * decide between "install it yourself" and the honest handoff note.
83
+ */
84
+ export declare function installNeedsHumanInput(installCommand: string): boolean;
85
+ /**
86
+ * The single, deterministic handoff note for a prerequisite the agent TRIED to
87
+ * install but that needs a human step it cannot supply. Names what was tried,
88
+ * WHY the tool is needed, and the exact command — so the user can finish one
89
+ * step and the agent resumes, instead of the agent looping or pretending.
90
+ */
91
+ export declare function humanInterventionNote(tool: string, installCommand: string, reason?: string): string;
34
92
  /**
35
93
  * Pick the concrete install command for a tool on this machine.
36
94
  *
@@ -1 +1 @@
1
- {"version":3,"file":"tool-install-prompt.d.ts","sourceRoot":"","sources":["../../src/cli/tool-install-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAOH,kEAAkE;AAClE,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE9D,sDAAsD;AACtD,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA0QD,iEAAiE;AACjE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,GACnC,MAAM,GAAG,IAAI,CAoCf;AAID;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,iBAAiB,CAAC,CAgC5B;AAED,+GAA+G;AAC/G,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CASpE"}
1
+ {"version":3,"file":"tool-install-prompt.d.ts","sourceRoot":"","sources":["../../src/cli/tool-install-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AASH,kEAAkE;AAClE,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE9D,sDAAsD;AACtD,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAsRD,iEAAiE;AACjE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEvD;AAYD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAY1D;AAED;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAOrF;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEzF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAInD;AAED,8EAA8E;AAC9E,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEjE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,EACvB,cAAc,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAC7C,MAAM,CA0BR;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAOtE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,EACtB,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAMR;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,GACnC,MAAM,GAAG,IAAI,CAoCf;AAID;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,iBAAiB,CAAC,CAgC5B;AAED,+GAA+G;AAC/G,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CASpE"}
@@ -22,6 +22,8 @@
22
22
  * isolation (inquirer mocked), mirroring failover-prompt.ts / weak-model-prompt.ts.
23
23
  */
24
24
  import inquirer from 'inquirer';
25
+ import { existsSync } from 'node:fs';
26
+ import { join, delimiter } from 'node:path';
25
27
  import { logger } from '../utils/logger.js';
26
28
  // ─── Per-OS install recipes for common build/system tools ──────────────────
27
29
  /**
@@ -169,6 +171,18 @@ const TOOL_INSTALL_OPTIONS = {
169
171
  linux: 'curl --proto \'=https\' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y',
170
172
  win32: 'winget install Rustlang.Rustup --silent --accept-package-agreements --accept-source-agreements',
171
173
  },
174
+ // rustc/rustup travel with cargo (the Tauri/Rust case): a `rustc: command
175
+ // not found` is the same missing toolchain and must trigger the takeover too.
176
+ rustc: {
177
+ darwin: 'curl --proto \'=https\' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y',
178
+ linux: 'curl --proto \'=https\' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y',
179
+ win32: 'winget install Rustlang.Rustup --silent --accept-package-agreements --accept-source-agreements',
180
+ },
181
+ rustup: {
182
+ darwin: 'curl --proto \'=https\' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y',
183
+ linux: 'curl --proto \'=https\' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y',
184
+ win32: 'winget install Rustlang.Rustup --silent --accept-package-agreements --accept-source-agreements',
185
+ },
172
186
  go: {
173
187
  darwin: 'brew install go',
174
188
  linux: 'install -y golang-go',
@@ -288,6 +302,129 @@ const LINUX_PKG_MANAGERS = [
288
302
  export function isKnownSystemTool(tool) {
289
303
  return tool in TOOL_INSTALL_OPTIONS;
290
304
  }
305
+ // ─── Missing-prerequisite detection (chat/loop takeover) ────────────────────
306
+ /**
307
+ * Signals that a shell command failed because its binary is not on PATH.
308
+ * Deliberately specific: a bare "not found" in prose must not trigger the
309
+ * takeover (it would fire on any error text that happens to contain it).
310
+ */
311
+ const MISSING_BINARY_RE = /(?:command not found|not found in (?:the )?\$?PATH|no such file or directory|\bENOENT\b|exit (?:code )?127|\.sh: [a-z0-9_.+-]+: command not found|is not recognized as an internal or external command|is not recognized as the name of a cmdlet|not recognized as the name of a cmdlet|exit (?:code )?9009)/i;
312
+ /**
313
+ * Candidate tool names in a shell command line: the first token of every
314
+ * pipeline / `&&` / `;` segment, with `sudo`/`env`-style prefixes stripped.
315
+ * Pure; never throws.
316
+ */
317
+ export function commandToolNames(command) {
318
+ return String(command ?? '')
319
+ .split(/(?:\|\||&&|[;|\n])/)
320
+ .map((seg) => seg.trim())
321
+ // `&` is PowerShell's call operator (`& cargo build`); strip it like sudo.
322
+ .map((seg) => seg.replace(/^(?:sudo|command|env|nohup|time|&)\s+/i, '').trim())
323
+ .map((seg) => seg.split(/\s+/)[0] ?? '')
324
+ .map((tok) => tok.replace(/^[('"`]+/, '').replace(/[)'"`]+$/, ''))
325
+ // Windows executables are typed with their extension (`cargo.exe`) — the
326
+ // recipe table keys on the bare name, so drop it.
327
+ .map((tok) => tok.replace(/\.(?:exe|cmd|bat)$/i, ''))
328
+ .filter((tok) => /^[a-z0-9_][a-z0-9_.+-]*$/i.test(tok));
329
+ }
330
+ /**
331
+ * ALL known, installable system tools implicated by a failing command, in the
332
+ * order the shell would hit them, de-duplicated. The missing-binary signal in
333
+ * `output` is REQUIRED: a nonzero exit from a PRESENT tool (a failing test, a
334
+ * build error) is not this case.
335
+ *
336
+ * A single command line can need several prerequisites at once
337
+ * (`cd app && cargo build && cmake .`), which is the v3.3.3 behavior the user
338
+ * remembers: "agent kicks in and says I can install all of those software".
339
+ */
340
+ export function installableToolsFromFailure(command, output) {
341
+ if (!MISSING_BINARY_RE.test(String(output ?? '')))
342
+ return [];
343
+ const found = [];
344
+ for (const name of commandToolNames(command)) {
345
+ if (isKnownSystemTool(name) && !found.includes(name))
346
+ found.push(name);
347
+ }
348
+ return found;
349
+ }
350
+ /**
351
+ * The FIRST known, installable system tool implicated by a failing command —
352
+ * or null. Kept for callers that only need the head of the list.
353
+ */
354
+ export function installableToolFromFailure(command, output) {
355
+ return installableToolsFromFailure(command, output)[0] ?? null;
356
+ }
357
+ /**
358
+ * Is `name` an executable on PATH? Cheap (no spawn) — used to pick the install
359
+ * recipe for the machine we are actually on.
360
+ */
361
+ export function commandOnPath(name) {
362
+ const dirs = (process.env.PATH ?? '').split(delimiter);
363
+ const exts = process.platform === 'win32' ? ['.exe', '.cmd', '.bat', ''] : [''];
364
+ return dirs.some((dir) => dir && exts.some((ext) => existsSync(join(dir, name + ext))));
365
+ }
366
+ /** The concrete install command for a known tool on THIS machine, or null. */
367
+ export function resolveInstallCommand(tool) {
368
+ return toolInstallCommand(tool, process.platform, commandOnPath);
369
+ }
370
+ /**
371
+ * The deterministic TAKEOVER instruction appended to a failed `run_terminal`
372
+ * result when a known, installable prerequisite is missing.
373
+ *
374
+ * WHY THIS EXISTS (live, 2026-10-03, trace trace-1791127992452-qzgodi).
375
+ * Asked to build a Tauri app, the model ran `cargo --version` → exit 127 and
376
+ * then DECLARED "I cannot install system-level software like Rust on your host
377
+ * machine — I am physically unable to build the Tauri application", handing the
378
+ * user a manual `curl … | sh` step. It was not sandboxed at all: it had a real
379
+ * shell and had just been told "i allow you to access my tools and skills and
380
+ * execute the commands on my terminal". A missing PREREQUISITE is a step to
381
+ * complete, not a wall — so this instruction names the exact install command
382
+ * and forbids the enclosed-system refusal.
383
+ */
384
+ export function toolTakeoverInstruction(tool, installCommand) {
385
+ const tools = Array.isArray(tool) ? tool : [tool];
386
+ const commands = (Array.isArray(installCommand) ? installCommand : [installCommand])
387
+ .map((c) => (c ?? '').trim())
388
+ .filter((c) => c.length > 0);
389
+ const list = tools.join(', ');
390
+ const lines = [
391
+ `🤖 I'm Nuvira, your agent — and yes, I can install ${tools.length > 1 ? 'these' : 'this'} myself.`,
392
+ `🛠️ TOOL TAKEOVER — ${list} ${tools.length > 1 ? 'are' : 'is'} missing and INSTALLABLE on this machine.`,
393
+ 'You are running on the user\u2019s REAL machine with a REAL shell. You are NOT sandboxed, NOT "enclosed",',
394
+ 'and NOT blocked from installing software. A missing prerequisite is something to FIX, not to hand off.',
395
+ 'Install it now with run_terminal (pass confirm:true if the tool asks — the user already authorized this',
396
+ 'work), then re-run the original command that failed:',
397
+ ];
398
+ for (const c of commands)
399
+ lines.push(` ${c}`);
400
+ lines.push('Do NOT tell the user to install it themselves and do NOT claim you are unable or not permitted — they', 'already asked you to do this work. TRY the install yourself first. If it genuinely needs interactive', 'input you cannot supply (a sudo/admin password, a GUI installer, an OS license prompt), STOP and hand', 'off ONE clear note in exactly this shape, then wait:', ` 🛠️ I tried to install <tool> because <one-line reason it is needed>, but it needs you to do this one step:`, ` <exact command>`, ` Nothing else in the work is blocked — tell me once it is done and I will continue.`, 'Never silently skip the prerequisite and never pretend the task completed without it.');
401
+ return lines.join('\n');
402
+ }
403
+ /**
404
+ * True when an install command cannot run unattended — it will block on human
405
+ * input we must not fabricate (a `sudo`/administrator password, the macOS
406
+ * `xcode-select --install` GUI, an explicit `--interactive` installer). Used to
407
+ * decide between "install it yourself" and the honest handoff note.
408
+ */
409
+ export function installNeedsHumanInput(installCommand) {
410
+ const c = String(installCommand ?? '');
411
+ return (/(?:^|[\s;&|])sudo\b/.test(c) ||
412
+ /xcode-select\s+--install/.test(c) ||
413
+ /--interactive\b/.test(c));
414
+ }
415
+ /**
416
+ * The single, deterministic handoff note for a prerequisite the agent TRIED to
417
+ * install but that needs a human step it cannot supply. Names what was tried,
418
+ * WHY the tool is needed, and the exact command — so the user can finish one
419
+ * step and the agent resumes, instead of the agent looping or pretending.
420
+ */
421
+ export function humanInterventionNote(tool, installCommand, reason) {
422
+ return [
423
+ `🛠️ I tried to install '${tool}'${reason ? ` because ${reason}` : ''}, but it needs you to do this one step:`,
424
+ ` ${installCommand}`,
425
+ `Nothing else in the work is blocked — tell me once it's done and I'll continue from where I left off.`,
426
+ ].join('\n');
427
+ }
291
428
  /**
292
429
  * Pick the concrete install command for a tool on this machine.
293
430
  *
@@ -1 +1 @@
1
- {"version":3,"file":"tool-install-prompt.js","sourceRoot":"","sources":["../../src/cli/tool-install-prompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-install-prompt.js","sourceRoot":"","sources":["../../src/cli/tool-install-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAc5C,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,oBAAoB,GAAuC;IAC/D,GAAG,EAAE;QACH,MAAM,EAAE,kBAAkB;QAC1B,KAAK,EAAE,gBAAgB;QACvB,KAAK,EAAE,0FAA0F;KAClG;IACD,KAAK,EAAE;QACL,MAAM,EAAE,oBAAoB;QAC5B,KAAK,EAAE,kBAAkB;QACzB,KAAK,EAAE,0FAA0F;KAClG;IACD,GAAG,EAAE;QACH,MAAM,EAAE,kBAAkB;QAC1B,KAAK,EAAE,gBAAgB;QACvB,KAAK,EAAE,wFAAwF;KAChG;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,wBAAwB;QAChC,KAAK,EAAE,iBAAiB;QACxB,KAAK,EAAE,8FAA8F;KACtG;IACD,KAAK,EAAE;QACL,MAAM,EAAE,oBAAoB;QAC5B,KAAK,EAAE,kBAAkB;QACzB,KAAK,EAAE,8FAA8F;KACtG;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,mBAAmB;QAC3B,KAAK,EAAE,iBAAiB;QACxB,KAAK,EAAE,0FAA0F;KAClG;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,mBAAmB;QAC3B,KAAK,EAAE,iBAAiB;QACxB,KAAK,EAAE,0FAA0F;KAClG;IACD,EAAE,EAAE;QACF,MAAM,EAAE,iBAAiB;QACzB,KAAK,EAAE,eAAe;QACtB,KAAK,EAAE,0FAA0F;KAClG;IACD,KAAK,EAAE;QACL,MAAM,EAAE,oBAAoB;QAC5B,KAAK,EAAE,kBAAkB;QACzB,KAAK,EAAE,8FAA8F;KACtG;IACD,MAAM,EAAE;QACN,MAAM,EAAE,qBAAqB;QAC7B,KAAK,EAAE,mBAAmB;QAC1B,KAAK,EAAE,4FAA4F;KACpG;IACD,MAAM,EAAE;QACN,MAAM,EAAE,qBAAqB;QAC7B,KAAK,EAAE,mBAAmB;QAC1B,KAAK,EAAE,sGAAsG;KAC9G;IACD,GAAG,EAAE;QACH,MAAM,EAAE,wBAAwB;QAChC,KAAK,EAAE,4BAA4B;QACnC,KAAK,EAAE,0FAA0F;KAClG;IACD,KAAK,EAAE;QACL,MAAM,EAAE,wBAAwB;QAChC,KAAK,EAAE,4BAA4B;QACnC,KAAK,EAAE,0FAA0F;KAClG;IACD,KAAK,EAAE;QACL,MAAM,EAAE,wBAAwB;QAChC,KAAK,EAAE,kBAAkB;QACzB,KAAK,EAAE,0FAA0F;KAClG;IACD,0EAA0E;IAC1E,MAAM,EAAE;QACN,MAAM,EAAE,4BAA4B;QACpC,KAAK,EAAE,sBAAsB;QAC7B,KAAK,EAAE,qGAAqG;KAC7G;IACD,OAAO,EAAE;QACP,MAAM,EAAE,sBAAsB;QAC9B,KAAK,EAAE,oBAAoB;QAC3B,KAAK,EAAE,mGAAmG;KAC3G;IACD,SAAS,EAAE;QACT,MAAM,EAAE,wBAAwB;QAChC,KAAK,EAAE,sBAAsB;QAC7B,KAAK,EAAE,oGAAoG;KAC5G;IACD,MAAM,EAAE;QACN,MAAM,EAAE,qBAAqB;QAC7B,KAAK,EAAE,mBAAmB;QAC1B,KAAK,EAAE,iGAAiG;KACzG;IACD,KAAK,EAAE;QACL,MAAM,EAAE,oBAAoB;QAC5B,KAAK,EAAE,kBAAkB;QACzB,KAAK,EAAE,gGAAgG;KACxG;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,mBAAmB;QAC3B,KAAK,EAAE,iBAAiB;QACxB,KAAK,EAAE,0FAA0F;KAClG;IACD,QAAQ,EAAE;QACR,MAAM,EAAE,uBAAuB;QAC/B,KAAK,EAAE,qBAAqB;QAC5B,KAAK,EAAE,oGAAoG;KAC5G;IACD,4EAA4E;IAC5E,GAAG,EAAE;QACH,MAAM,EAAE,qBAAqB;QAC7B,KAAK,EAAE,mBAAmB;QAC1B,KAAK,EAAE,8FAA8F;KACtG;IACD,EAAE,EAAE;QACF,MAAM,EAAE,wBAAwB;QAChC,KAAK,EAAE,sBAAsB;QAC7B,KAAK,EAAE,mGAAmG;KAC3G;IACD,MAAM,EAAE;QACN,MAAM,EAAE,sCAAsC;QAC9C,KAAK,EAAE,6BAA6B;QACpC,KAAK,EAAE,gGAAgG;KACxG;IACD,EAAE,EAAE;QACF,MAAM,EAAE,iBAAiB;QACzB,KAAK,EAAE,eAAe;QACtB,KAAK,EAAE,2FAA2F;KACnG;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,mBAAmB;QAC3B,KAAK,EAAE,iBAAiB;QACxB,KAAK,EAAE,0FAA0F;KAClG;IACD,0EAA0E;IAC1E,KAAK,EAAE;QACL,MAAM,EAAE,2EAA2E;QACnF,KAAK,EAAE,2EAA2E;QAClF,KAAK,EAAE,gGAAgG;KACxG;IACD,0EAA0E;IAC1E,8EAA8E;IAC9E,KAAK,EAAE;QACL,MAAM,EAAE,2EAA2E;QACnF,KAAK,EAAE,2EAA2E;QAClF,KAAK,EAAE,gGAAgG;KACxG;IACD,MAAM,EAAE;QACN,MAAM,EAAE,2EAA2E;QACnF,KAAK,EAAE,2EAA2E;QAClF,KAAK,EAAE,gGAAgG;KACxG;IACD,EAAE,EAAE;QACF,MAAM,EAAE,iBAAiB;QACzB,KAAK,EAAE,sBAAsB;QAC7B,KAAK,EAAE,0FAA0F;KAClG;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,sBAAsB;QAC9B,KAAK,EAAE,2BAA2B;QAClC,KAAK,EAAE,+GAA+G;KACvH;IACD,GAAG,EAAE;QACH,MAAM,EAAE,oBAAoB;QAC5B,KAAK,EAAE,kBAAkB;QACzB,KAAK,EAAE,6FAA6F;KACrG;IACD,MAAM,EAAE;QACN,MAAM,EAAE,qBAAqB;QAC7B,KAAK,EAAE,mBAAmB;QAC1B,KAAK,EAAE,8FAA8F;KACtG;IACD,MAAM,EAAE;QACN,MAAM,EAAE,gCAAgC;QACxC,KAAK,EAAE,2BAA2B;QAClC,KAAK,EAAE,uGAAuG;KAC/G;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,mBAAmB;QAC3B,KAAK,EAAE,sBAAsB;QAC7B,KAAK,EAAE,2GAA2G;KACnH;IACD,MAAM,EAAE;QACN,MAAM,EAAE,qBAAqB;QAC7B,KAAK,EAAE,2CAA2C;QAClD,KAAK,EAAE,qBAAqB;KAC7B;IACD,GAAG,EAAE;QACH,MAAM,EAAE,kBAAkB;QAC1B,KAAK,EAAE,oBAAoB;QAC3B,KAAK,EAAE,4FAA4F;KACpG;IACD,QAAQ,EAAE;QACR,MAAM,EAAE,uBAAuB;QAC/B,KAAK,EAAE,qBAAqB;QAC5B,KAAK,EAAE,kGAAkG;KAC1G;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,mBAAmB;QAC3B,KAAK,EAAE,iBAAiB;QACxB,KAAK,EAAE,0FAA0F;KAClG;IACD,OAAO,EAAE;QACP,MAAM,EAAE,6BAA6B;QACrC,KAAK,EAAE,oBAAoB;QAC3B,KAAK,EAAE,gGAAgG;KACxG;IACD,4EAA4E;IAC5E,IAAI,EAAE;QACJ,MAAM,EAAE,4BAA4B;QACpC,KAAK,EAAE,8BAA8B;QACrC,KAAK,EAAE,yGAAyG;KACjH;IACD,KAAK,EAAE;QACL,MAAM,EAAE,oBAAoB;QAC5B,KAAK,EAAE,wBAAwB;QAC/B,KAAK,EAAE,4FAA4F;KACpG;IACD,OAAO,EAAE;QACP,MAAM,EAAE,sBAAsB;QAC9B,KAAK,EAAE,oBAAoB;QAC3B,KAAK,EAAE,8FAA8F;KACtG;IACD,OAAO,EAAE;QACP,MAAM,EAAE,sBAAsB;QAC9B,KAAK,EAAE,4BAA4B;QACnC,KAAK,EAAE,gGAAgG;KACxG;IACD,4EAA4E;IAC5E,IAAI,EAAE;QACJ,MAAM,EAAE,uBAAuB;QAC/B,KAAK,EAAE,uBAAuB;QAC9B,KAAK,EAAE,0FAA0F;KAClG;IACD,GAAG,EAAE;QACH,MAAM,EAAE,kBAAkB;QAC1B,KAAK,EAAE,gBAAgB;QACvB,KAAK,EAAE,8FAA8F;KACtG;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,mBAAmB;QAC3B,KAAK,EAAE,iBAAiB;QACxB,KAAK,EAAE,0FAA0F;KAClG;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,mBAAmB;QAC3B,KAAK,EAAE,iBAAiB;QACxB,KAAK,EAAE,0FAA0F;KAClG;IACD,KAAK,EAAE;QACL,MAAM,EAAE,oBAAoB;QAC5B,KAAK,EAAE,mBAAmB;QAC1B,kDAAkD;KACnD;IACD,GAAG,EAAE;QACH,MAAM,EAAE,yBAAyB;QACjC,KAAK,EAAE,gBAAgB;QACvB,4CAA4C;KAC7C;CACF,CAAC;AAEF,oEAAoE;AACpE,MAAM,kBAAkB,GAA8C;IACpE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,qCAAqC,EAAE;IACpE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE;IACrC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE;IACrC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE;CAC1C,CAAC;AAEF,iEAAiE;AACjE,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,IAAI,IAAI,oBAAoB,CAAC;AACtC,CAAC;AAED,+EAA+E;AAE/E;;;;GAIG;AACH,MAAM,iBAAiB,GACrB,+SAA+S,CAAC;AAElT;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,OAAO,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;SACzB,KAAK,CAAC,oBAAoB,CAAC;SAC3B,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACzB,2EAA2E;SAC1E,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,wCAAwC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;SAC9E,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACvC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAClE,yEAAyE;QACzE,kDAAkD;SACjD,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;SACpD,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,2BAA2B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,2BAA2B,CAAC,OAAe,EAAE,MAAc;IACzE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAC7D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CAAC,OAAe,EAAE,MAAc;IACxE,OAAO,2BAA2B,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AACjE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAChF,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1F,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,OAAO,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AACnE,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAuB,EACvB,cAA8C;IAE9C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;SACjF,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;SAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG;QACZ,sDAAsD,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,UAAU;QACnG,uBAAuB,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,2CAA2C;QACzG,2GAA2G;QAC3G,wGAAwG;QACxG,yGAAyG;QACzG,sDAAsD;KACvD,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACjD,KAAK,CAAC,IAAI,CACR,uGAAuG,EACvG,sGAAsG,EACtG,uGAAuG,EACvG,sDAAsD,EACtD,iHAAiH,EACjH,yBAAyB,EACzB,wFAAwF,EACxF,uFAAuF,CACxF,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,cAAsB;IAC3D,MAAM,CAAC,GAAG,MAAM,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;IACvC,OAAO,CACL,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7B,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC;QAClC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAC1B,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAY,EACZ,cAAsB,EACtB,MAAe;IAEf,OAAO;QACL,2BAA2B,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,YAAY,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,yCAAyC;QAC9G,OAAO,cAAc,EAAE;QACvB,uGAAuG;KACxG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,QAAyB,EACzB,SAAoC;IAEpC,MAAM,IAAI,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,yEAAyE;QACzE,wEAAwE;QACxE,6CAA6C;QAC7C,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC;IAC7B,CAAC;IAED,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAC7B,KAAK,MAAM,EAAE,IAAI,kBAAkB,EAAE,CAAC;YACpC,IAAI,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzB,kEAAkE;gBAClE,OAAO,GAAG,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QACD,yEAAyE;QACzE,4EAA4E;QAC5E,OAAO,uCAAuC,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClF,CAAC;IAED,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAC7B,2DAA2D;QAC3D,IAAI,SAAS,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC;QAC3C,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;YAC/D,OAAO,iBAAiB,GAAG,KAAK,CAAC;QACnC,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+EAA+E;AAE/E;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAY,EACZ,GAAW;IAEX,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,iBAAiB,IAAI,0CAA0C,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,OAAO,GAAsD;QACjE;YACE,IAAI,EAAE,sBAAsB,GAAG,GAAG;YAClC,KAAK,EAAE,SAAS;SACjB;QACD;YACE,IAAI,EAAE,4DAA4D;YAClE,KAAK,EAAE,QAAQ;SAChB;QACD;YACE,IAAI,EAAE,sCAAsC;YAC5C,KAAK,EAAE,MAAM;SACd;KACF,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAgC;QAClE;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,YAAY,IAAI,QAAQ;YACjC,MAAM,EAAE,KAAK;YACb,OAAO;SACR;KACF,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,CAAC;AAED,+GAA+G;AAC/G,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,GAAW;IAC1D,MAAM,KAAK,GAAG;QACZ,aAAa,IAAI,kDAAkD;QACnE,4BAA4B;QAC5B,OAAO,GAAG,EAAE;QACZ,qCAAqC,IAAI,6BAA6B,IAAI,GAAG;QAC7E,uBAAuB;KACxB,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -4,11 +4,11 @@
4
4
  *
5
5
  * When a task can only run on a WEAK model (model escalation is a no-op —
6
6
  * every stronger candidate is unavailable/blocked, e.g. only a small local
7
- * model is configured), the default behavior is SILENT: the pipeline
8
- * continues on the weak model with lenient parsing and a bounded repair
9
- * budget (never stuck, but the deliverable may be recommendations rather
10
- * than reliable code). When the user opts into `routing.promptOnWeakModel:
11
- * true`, the orchestrator instead asks BEFORE committing to that path:
7
+ * model is configured), the orchestrator ASKS before committing to that path
8
+ * (ask-first by default — never a silent weak model). An explicit
9
+ * `routing.promptOnWeakModel: false` (or `weakModelPolicy: 'auto-allow'`)
10
+ * restores the silent weak-model continuation. The ask fires ONCE per pipeline
11
+ * and only on an interactive TTY:
12
12
  *
13
13
  * ⚠️ Only a weak model is available (local/gemma4:e4b)
14
14
  * ? How would you like to proceed?
@@ -25,14 +25,23 @@
25
25
  export interface WeakModelPromptConfig {
26
26
  routing?: {
27
27
  promptOnWeakModel?: boolean;
28
+ weakModelPolicy?: unknown;
28
29
  };
29
30
  }
30
31
  /** What the user chose when a task can only run on a weak model. */
31
32
  export type WeakModelChoice = 'continue' | 'wait' | 'abort';
32
33
  /**
33
34
  * Whether the orchestrator should ASK what to do when only a weak model is
34
- * available. Reads `routing.promptOnWeakModel` (default false — silent
35
- * weak-model continuation).
35
+ * available.
36
+ *
37
+ * ASK-FIRST BY DEFAULT (the user's requirement: never a silent weak model).
38
+ * An explicit `routing.promptOnWeakModel: false` remains the opt-out, and
39
+ * `weakModelPolicy: 'auto-allow'` (the non-interactive fallback) also opts out
40
+ * so an unattended deployment is not forced to prompt. Any other value —
41
+ * including unset — asks.
42
+ *
43
+ * NOTE: the caller only reaches the prompt on an interactive TTY
44
+ * (`process.stdin.isTTY`), so a piped/CI/headless run is never blocked.
36
45
  */
37
46
  export declare function shouldPromptWeakModel(config: WeakModelPromptConfig): boolean;
38
47
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"weak-model-prompt.d.ts","sourceRoot":"","sources":["../../src/cli/weak-model-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAOH,+DAA+D;AAC/D,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC3C;AAED,oEAAoE;AACpE,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;AAI5D;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAE5E;AAID;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CACzC,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE;IAAE,aAAa,EAAE,OAAO,CAAA;CAAE,GAC/B,OAAO,CAAC,eAAe,CAAC,CAqC1B"}
1
+ {"version":3,"file":"weak-model-prompt.d.ts","sourceRoot":"","sources":["../../src/cli/weak-model-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAOH,+DAA+D;AAC/D,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CACtE;AAED,oEAAoE;AACpE,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;AAI5D;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAO5E;AAID;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CACzC,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE;IAAE,aAAa,EAAE,OAAO,CAAA;CAAE,GAC/B,OAAO,CAAC,eAAe,CAAC,CAqC1B"}
@@ -4,11 +4,11 @@
4
4
  *
5
5
  * When a task can only run on a WEAK model (model escalation is a no-op —
6
6
  * every stronger candidate is unavailable/blocked, e.g. only a small local
7
- * model is configured), the default behavior is SILENT: the pipeline
8
- * continues on the weak model with lenient parsing and a bounded repair
9
- * budget (never stuck, but the deliverable may be recommendations rather
10
- * than reliable code). When the user opts into `routing.promptOnWeakModel:
11
- * true`, the orchestrator instead asks BEFORE committing to that path:
7
+ * model is configured), the orchestrator ASKS before committing to that path
8
+ * (ask-first by default — never a silent weak model). An explicit
9
+ * `routing.promptOnWeakModel: false` (or `weakModelPolicy: 'auto-allow'`)
10
+ * restores the silent weak-model continuation. The ask fires ONCE per pipeline
11
+ * and only on an interactive TTY:
12
12
  *
13
13
  * ⚠️ Only a weak model is available (local/gemma4:e4b)
14
14
  * ? How would you like to proceed?
@@ -26,11 +26,27 @@ import { logger } from '../utils/logger.js';
26
26
  // ─── Gate ───────────────────────────────────────────────────────────────────
27
27
  /**
28
28
  * Whether the orchestrator should ASK what to do when only a weak model is
29
- * available. Reads `routing.promptOnWeakModel` (default false — silent
30
- * weak-model continuation).
29
+ * available.
30
+ *
31
+ * ASK-FIRST BY DEFAULT (the user's requirement: never a silent weak model).
32
+ * An explicit `routing.promptOnWeakModel: false` remains the opt-out, and
33
+ * `weakModelPolicy: 'auto-allow'` (the non-interactive fallback) also opts out
34
+ * so an unattended deployment is not forced to prompt. Any other value —
35
+ * including unset — asks.
36
+ *
37
+ * NOTE: the caller only reaches the prompt on an interactive TTY
38
+ * (`process.stdin.isTTY`), so a piped/CI/headless run is never blocked.
31
39
  */
32
40
  export function shouldPromptWeakModel(config) {
33
- return config.routing?.promptOnWeakModel === true;
41
+ const r = config.routing;
42
+ if (!r)
43
+ return true;
44
+ if (r.promptOnWeakModel === false)
45
+ return false;
46
+ if (r.promptOnWeakModel === true)
47
+ return true;
48
+ const policy = String(r.weakModelPolicy ?? '').trim().toLowerCase();
49
+ return policy !== 'auto-allow';
34
50
  }
35
51
  // ─── Prompt ─────────────────────────────────────────────────────────────────
36
52
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"weak-model-prompt.js","sourceRoot":"","sources":["../../src/cli/weak-model-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAY5C,+EAA+E;AAE/E;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAA6B;IACjE,OAAO,MAAM,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;AACpD,CAAC;AAED,+EAA+E;AAE/E;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,cAAsB,EACtB,IAAgC;IAEhC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CACT,yCAAyC,cAAc,2BAA2B;QAChF,yCAAyC,CAC5C,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,OAAO,GAAoD;QAC/D;YACE,IAAI,EAAE,0GAA0G;YAChH,KAAK,EAAE,UAAU;SAClB;KACF,CAAC;IACF,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,iDAAiD;YACvD,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;IACL,CAAC;IACD,OAAO,CAAC,IAAI,CAAC;QACX,IAAI,EAAE,4EAA4E;QAClF,KAAK,EAAE,OAAO;KACf,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAA8B;QAChE;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,iEAAiE;YAC1E,MAAM,EAAE,IAAI;YACZ,OAAO;SACR;KACF,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"weak-model-prompt.js","sourceRoot":"","sources":["../../src/cli/weak-model-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAY5C,+EAA+E;AAE/E;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAA6B;IACjE,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;IACzB,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,IAAI,CAAC,CAAC,iBAAiB,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAChD,IAAI,CAAC,CAAC,iBAAiB,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACpE,OAAO,MAAM,KAAK,YAAY,CAAC;AACjC,CAAC;AAED,+EAA+E;AAE/E;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,cAAsB,EACtB,IAAgC;IAEhC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CACT,yCAAyC,cAAc,2BAA2B;QAChF,yCAAyC,CAC5C,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,OAAO,GAAoD;QAC/D;YACE,IAAI,EAAE,0GAA0G;YAChH,KAAK,EAAE,UAAU;SAClB;KACF,CAAC;IACF,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,iDAAiD;YACvD,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;IACL,CAAC;IACD,OAAO,CAAC,IAAI,CAAC;QACX,IAAI,EAAE,4EAA4E;QAClF,KAAK,EAAE,OAAO;KACf,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAA8B;QAChE;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,iEAAiE;YAC1E,MAAM,EAAE,IAAI;YACZ,OAAO;SACR;KACF,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,CAAC"}
@@ -15,6 +15,14 @@ export type LocalRunner = 'ollama' | 'huggingface' | 'ggml';
15
15
  */
16
16
  export interface ProviderConfig {
17
17
  apiKey?: string;
18
+ /**
19
+ * Whether this provider may be chosen by the router. `false` removes it from
20
+ * the auto-routing candidate pool (the dashboard's per-provider On/Off
21
+ * switch); absent means enabled. It does NOT delete credentials — a provider
22
+ * can be switched off and on without re-entering its key, and an explicit
23
+ * `--provider` pin still reaches it (a pin is a user decision, not routing).
24
+ */
25
+ enabled?: boolean;
18
26
  /**
19
27
  * M2.3 multi-account rotation: ADDITIONAL API keys for the same provider
20
28
  * (the primary stays in `apiKey`). When the failover runner hits a
@@ -465,6 +473,31 @@ export interface RoutingConfig {
465
473
  * 'all'. See `src/config/work-digest.ts`.
466
474
  */
467
475
  workDigest?: 'all' | 'max' | 'off';
476
+ /**
477
+ * Weak-model consent for surfaces that CANNOT ask (gateway channels,
478
+ * headless/CI). The explicit per-session ask is the primary mechanism on
479
+ * every interactive surface; this value only governs the non-interactive
480
+ * fallback. 'ask' (default) — never silently use a weak model: fail over to
481
+ * a capable one or abort honestly. 'auto-allow' — proceed on the weak model
482
+ * and record the verdict. 'deny' — never use a weak model. Set via
483
+ * `NUVIRA_WEAK_MODEL_POLICY` or this value. Resolution: env, then config,
484
+ * then 'ask'. See `src/learning/agentic-route-gate.ts`.
485
+ */
486
+ weakModelPolicy?: 'ask' | 'auto-allow' | 'deny';
487
+ /**
488
+ * Outbound CONTEXT budget (chars): measurement thresholds + hard ceiling for
489
+ * the assembled prompt. Overrides `DEFAULT_CONTEXT_BUDGET` in
490
+ * `src/learning/context-budget.ts` per key. When the total exceeds the
491
+ * ceiling, optional contributors are dropped lowest-value-first (skill hint →
492
+ * work digest → recall → …); the identity/tool contract is never trimmed.
493
+ */
494
+ promptBudget?: {
495
+ noteTotal?: number;
496
+ warnTotal?: number;
497
+ maxTotal?: number;
498
+ noteSystem?: number;
499
+ warnSystem?: number;
500
+ };
468
501
  }
469
502
  /**
470
503
  * Full configuration schema for .nuviraconfig.json
@@ -587,6 +620,17 @@ export interface SkillsConfig {
587
620
  * override (or the built-in default) is used.
588
621
  */
589
622
  registries?: string[];
623
+ /**
624
+ * Which skill hint the chat/execute system prompt carries. See
625
+ * `resolveSkillHintMode` in `src/tools/loop-skill-hint.ts`.
626
+ * - `match` (DEFAULT) — the small keyword-matched hint: ONE skill, only when
627
+ * the goal actually matches, else nothing. 3.3.10 behaviour.
628
+ * - `catalog` — the full name+description catalog (opt-in; ~24K chars).
629
+ * - `names` — the catalog WITHOUT descriptions (names only; a fraction of
630
+ * `catalog`; the model can still load one by name).
631
+ * - `off` — never inject a skill hint.
632
+ */
633
+ catalogHint?: string;
590
634
  }
591
635
  /**
592
636
  * Modality configuration — backend selection for image generation (and, in
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,21 @@
1
+ /**
2
+ * #30 — the turn facts a caller may store with a cached answer, and read back on
3
+ * a hit. Only NON-flag facts live here on purpose: a flagged turn is not cached,
4
+ * so persisting a flag would be storing a state that can never legitimately be
5
+ * replayed.
6
+ */
7
+ export interface ChatCacheFacts {
8
+ toolCalls?: string[];
9
+ successfulToolCalls?: string[];
10
+ bounded?: boolean;
11
+ }
12
+ /** A cache hit, with the answer plus the activity it recorded. */
13
+ export interface CacheHit {
14
+ response: string;
15
+ toolCalls?: string[];
16
+ successfulToolCalls?: string[];
17
+ bounded?: boolean;
18
+ }
1
19
  /**
2
20
  * One workspace's cached answers, as the dashboard lists them.
3
21
  *
@@ -33,12 +51,28 @@ export declare class InferenceCache {
33
51
  * Get cached response if available and not expired
34
52
  */
35
53
  get(prompt: string, model: string, provider: string, scope?: string): Promise<string | null>;
54
+ /**
55
+ * #30 — the same lookup, but returning the turn ACTIVITY stored with the
56
+ * answer (tool calls, bounded) rather than only the text. A surface that
57
+ * replayed a cached answer used to hand back `{ content }` alone, so a repeated
58
+ * prompt rendered no tool cards while the first run did. `get()` is kept as the
59
+ * string-returning convenience for callers that only want the text (web
60
+ * research), so no existing call site changes.
61
+ */
62
+ getEntry(prompt: string, model: string, provider: string, scope?: string): Promise<CacheHit | null>;
36
63
  /**
37
64
  * Store a response in the cache
65
+ *
66
+ * `facts` (#30) records the turn ACTIVITY on the entry so a replay can report
67
+ * it. Callers must NOT cache a turn that carries an honesty flag — that guard
68
+ * lives at the call site because only the caller sees the turn's flags (see
69
+ * `cli/chat.ts`).
38
70
  */
39
71
  set(prompt: string, response: string, model: string, provider: string, ttl?: number,
40
72
  /** The workspace this answer is about (see generateKey). */
41
- scope?: string): Promise<void>;
73
+ scope?: string,
74
+ /** #30 — the turn activity to persist alongside the answer. */
75
+ facts?: ChatCacheFacts): Promise<void>;
42
76
  /**
43
77
  * Every workspace with cached answers, largest first.
44
78
  *
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/context/cache.ts"],"names":[],"mappings":"AAqDA;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC,0EAA0E;IAC1E,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,wDAAwD;IACxD,OAAO,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjF;AAuDD;;;GAGG;AACH,qBAAa,cAAc;IACzB;;OAEG;IACG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAkBlG;;OAEG;IACG,GAAG,CACP,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,GAAG,GAAE,MAAa;IAClB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC;IAkBhB;;;;;OAKG;IACG,eAAe,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAqCzD;;;;;;;OAOG;IACG,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAc3D;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;CAa7E;AAKD,wBAAgB,QAAQ,IAAI,cAAc,CAKzC"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/context/cache.ts"],"names":[],"mappings":"AA0DA;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,kEAAkE;AAClE,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAUD;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC,0EAA0E;IAC1E,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,wDAAwD;IACxD,OAAO,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjF;AAuDD;;;GAGG;AACH,qBAAa,cAAc;IACzB;;OAEG;IACG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKlG;;;;;;;OAOG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAuBzG;;;;;;;OAOG;IACG,GAAG,CACP,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,GAAG,GAAE,MAAa;IAClB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM;IACd,+DAA+D;IAC/D,KAAK,CAAC,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC;IAuBhB;;;;;OAKG;IACG,eAAe,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAqCzD;;;;;;;OAOG;IACG,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAc3D;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;CAa7E;AAKD,wBAAgB,QAAQ,IAAI,cAAc,CAKzC"}