agent-nuvira 3.3.12 → 3.3.14

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 (458) hide show
  1. package/README.md +67 -1
  2. package/dist/agents/agents/planner.d.ts.map +1 -1
  3. package/dist/agents/agents/planner.js +9 -0
  4. package/dist/agents/agents/planner.js.map +1 -1
  5. package/dist/agents/agents/reasoner.d.ts.map +1 -1
  6. package/dist/agents/agents/reasoner.js +13 -0
  7. package/dist/agents/agents/reasoner.js.map +1 -1
  8. package/dist/agents/orchestrator.d.ts +31 -0
  9. package/dist/agents/orchestrator.d.ts.map +1 -1
  10. package/dist/agents/orchestrator.js +103 -135
  11. package/dist/agents/orchestrator.js.map +1 -1
  12. package/dist/cli/chat.d.ts +89 -0
  13. package/dist/cli/chat.d.ts.map +1 -1
  14. package/dist/cli/chat.js +798 -39
  15. package/dist/cli/chat.js.map +1 -1
  16. package/dist/cli/cli-program.d.ts.map +1 -1
  17. package/dist/cli/cli-program.js +20 -0
  18. package/dist/cli/cli-program.js.map +1 -1
  19. package/dist/cli/config.d.ts +12 -0
  20. package/dist/cli/config.d.ts.map +1 -1
  21. package/dist/cli/config.js +107 -3
  22. package/dist/cli/config.js.map +1 -1
  23. package/dist/cli/decisions.d.ts +28 -0
  24. package/dist/cli/decisions.d.ts.map +1 -0
  25. package/dist/cli/decisions.js +140 -0
  26. package/dist/cli/decisions.js.map +1 -0
  27. package/dist/cli/doctor.d.ts +6 -0
  28. package/dist/cli/doctor.d.ts.map +1 -1
  29. package/dist/cli/doctor.js +46 -0
  30. package/dist/cli/doctor.js.map +1 -1
  31. package/dist/cli/execute.d.ts.map +1 -1
  32. package/dist/cli/execute.js +6 -0
  33. package/dist/cli/execute.js.map +1 -1
  34. package/dist/cli/failover-runner.d.ts.map +1 -1
  35. package/dist/cli/failover-runner.js +19 -1
  36. package/dist/cli/failover-runner.js.map +1 -1
  37. package/dist/cli/feedback.d.ts.map +1 -1
  38. package/dist/cli/feedback.js +5 -1
  39. package/dist/cli/feedback.js.map +1 -1
  40. package/dist/cli/hooks.d.ts +30 -0
  41. package/dist/cli/hooks.d.ts.map +1 -0
  42. package/dist/cli/hooks.js +224 -0
  43. package/dist/cli/hooks.js.map +1 -0
  44. package/dist/cli/knowledge.d.ts +31 -0
  45. package/dist/cli/knowledge.d.ts.map +1 -0
  46. package/dist/cli/knowledge.js +223 -0
  47. package/dist/cli/knowledge.js.map +1 -0
  48. package/dist/cli/loop-executor.d.ts.map +1 -1
  49. package/dist/cli/loop-executor.js +92 -18
  50. package/dist/cli/loop-executor.js.map +1 -1
  51. package/dist/cli/model.d.ts +20 -0
  52. package/dist/cli/model.d.ts.map +1 -1
  53. package/dist/cli/model.js +294 -14
  54. package/dist/cli/model.js.map +1 -1
  55. package/dist/cli/omniroute-control.d.ts +88 -0
  56. package/dist/cli/omniroute-control.d.ts.map +1 -0
  57. package/dist/cli/omniroute-control.js +179 -0
  58. package/dist/cli/omniroute-control.js.map +1 -0
  59. package/dist/cli/omniroute.d.ts +21 -0
  60. package/dist/cli/omniroute.d.ts.map +1 -0
  61. package/dist/cli/omniroute.js +67 -0
  62. package/dist/cli/omniroute.js.map +1 -0
  63. package/dist/cli/rate.d.ts +78 -0
  64. package/dist/cli/rate.d.ts.map +1 -0
  65. package/dist/cli/rate.js +294 -0
  66. package/dist/cli/rate.js.map +1 -0
  67. package/dist/config/process-env.d.ts.map +1 -1
  68. package/dist/config/process-env.js +10 -0
  69. package/dist/config/process-env.js.map +1 -1
  70. package/dist/config/types.d.ts +8 -0
  71. package/dist/config/types.d.ts.map +1 -1
  72. package/dist/context/history.d.ts +21 -0
  73. package/dist/context/history.d.ts.map +1 -1
  74. package/dist/context/history.js +50 -0
  75. package/dist/context/history.js.map +1 -1
  76. package/dist/enterprise/vault.d.ts.map +1 -1
  77. package/dist/enterprise/vault.js +5 -21
  78. package/dist/enterprise/vault.js.map +1 -1
  79. package/dist/gateway/hook-contract.d.ts +206 -0
  80. package/dist/gateway/hook-contract.d.ts.map +1 -0
  81. package/dist/gateway/hook-contract.js +449 -0
  82. package/dist/gateway/hook-contract.js.map +1 -0
  83. package/dist/gateway/hooks.d.ts.map +1 -1
  84. package/dist/gateway/hooks.js +14 -0
  85. package/dist/gateway/hooks.js.map +1 -1
  86. package/dist/inference/gemini-adapter.d.ts.map +1 -1
  87. package/dist/inference/gemini-adapter.js +4 -0
  88. package/dist/inference/gemini-adapter.js.map +1 -1
  89. package/dist/inference/interface.d.ts +54 -0
  90. package/dist/inference/interface.d.ts.map +1 -1
  91. package/dist/inference/model-id-validation.d.ts +57 -0
  92. package/dist/inference/model-id-validation.d.ts.map +1 -0
  93. package/dist/inference/model-id-validation.js +127 -0
  94. package/dist/inference/model-id-validation.js.map +1 -0
  95. package/dist/inference/native-tools.d.ts +16 -1
  96. package/dist/inference/native-tools.d.ts.map +1 -1
  97. package/dist/inference/native-tools.js +34 -10
  98. package/dist/inference/native-tools.js.map +1 -1
  99. package/dist/inference/openai-compat-adapter.d.ts.map +1 -1
  100. package/dist/inference/openai-compat-adapter.js +12 -1
  101. package/dist/inference/openai-compat-adapter.js.map +1 -1
  102. package/dist/inference/provider-catalog.d.ts +11 -0
  103. package/dist/inference/provider-catalog.d.ts.map +1 -1
  104. package/dist/inference/provider-catalog.js +80 -0
  105. package/dist/inference/provider-catalog.js.map +1 -1
  106. package/dist/inference/route-resolver.d.ts +32 -8
  107. package/dist/inference/route-resolver.d.ts.map +1 -1
  108. package/dist/inference/route-resolver.js +175 -1
  109. package/dist/inference/route-resolver.js.map +1 -1
  110. package/dist/inference/tool-call-utils.d.ts.map +1 -1
  111. package/dist/inference/tool-call-utils.js +10 -8
  112. package/dist/inference/tool-call-utils.js.map +1 -1
  113. package/dist/inference/tools.d.ts +17 -1
  114. package/dist/inference/tools.d.ts.map +1 -1
  115. package/dist/inference/tools.js +69 -19
  116. package/dist/inference/tools.js.map +1 -1
  117. package/dist/learning/acceptance-model.d.ts +247 -0
  118. package/dist/learning/acceptance-model.d.ts.map +1 -0
  119. package/dist/learning/acceptance-model.js +708 -0
  120. package/dist/learning/acceptance-model.js.map +1 -0
  121. package/dist/learning/auto-router.d.ts +121 -24
  122. package/dist/learning/auto-router.d.ts.map +1 -1
  123. package/dist/learning/auto-router.js +374 -96
  124. package/dist/learning/auto-router.js.map +1 -1
  125. package/dist/learning/autonomy-policy.d.ts +12 -16
  126. package/dist/learning/autonomy-policy.d.ts.map +1 -1
  127. package/dist/learning/autonomy-policy.js +50 -48
  128. package/dist/learning/autonomy-policy.js.map +1 -1
  129. package/dist/learning/behavioural-labels.d.ts +86 -0
  130. package/dist/learning/behavioural-labels.d.ts.map +1 -0
  131. package/dist/learning/behavioural-labels.js +166 -0
  132. package/dist/learning/behavioural-labels.js.map +1 -0
  133. package/dist/learning/capability-evidence.d.ts +167 -0
  134. package/dist/learning/capability-evidence.d.ts.map +1 -0
  135. package/dist/learning/capability-evidence.js +210 -0
  136. package/dist/learning/capability-evidence.js.map +1 -0
  137. package/dist/learning/capability-readiness.d.ts +64 -0
  138. package/dist/learning/capability-readiness.d.ts.map +1 -0
  139. package/dist/learning/capability-readiness.js +74 -0
  140. package/dist/learning/capability-readiness.js.map +1 -0
  141. package/dist/learning/capability-types.d.ts +169 -0
  142. package/dist/learning/capability-types.d.ts.map +1 -0
  143. package/dist/learning/capability-types.js +20 -0
  144. package/dist/learning/capability-types.js.map +1 -0
  145. package/dist/learning/catalog-feed.d.ts +89 -0
  146. package/dist/learning/catalog-feed.d.ts.map +1 -0
  147. package/dist/learning/catalog-feed.js +211 -0
  148. package/dist/learning/catalog-feed.js.map +1 -0
  149. package/dist/learning/cli-intent-effects.d.ts +60 -0
  150. package/dist/learning/cli-intent-effects.d.ts.map +1 -0
  151. package/dist/learning/cli-intent-effects.js +153 -0
  152. package/dist/learning/cli-intent-effects.js.map +1 -0
  153. package/dist/learning/command-adaptation.d.ts +41 -0
  154. package/dist/learning/command-adaptation.d.ts.map +1 -0
  155. package/dist/learning/command-adaptation.js +122 -0
  156. package/dist/learning/command-adaptation.js.map +1 -0
  157. package/dist/learning/consent-picture.d.ts +42 -0
  158. package/dist/learning/consent-picture.d.ts.map +1 -0
  159. package/dist/learning/consent-picture.js +53 -0
  160. package/dist/learning/consent-picture.js.map +1 -0
  161. package/dist/learning/context-budget.d.ts +37 -6
  162. package/dist/learning/context-budget.d.ts.map +1 -1
  163. package/dist/learning/context-budget.js +38 -9
  164. package/dist/learning/context-budget.js.map +1 -1
  165. package/dist/learning/decision-log.d.ts +114 -0
  166. package/dist/learning/decision-log.d.ts.map +1 -0
  167. package/dist/learning/decision-log.js +296 -0
  168. package/dist/learning/decision-log.js.map +1 -0
  169. package/dist/learning/deliverable-class.d.ts.map +1 -1
  170. package/dist/learning/deliverable-class.js +19 -0
  171. package/dist/learning/deliverable-class.js.map +1 -1
  172. package/dist/learning/deliverable-corpus.d.ts +117 -0
  173. package/dist/learning/deliverable-corpus.d.ts.map +1 -0
  174. package/dist/learning/deliverable-corpus.js +176 -0
  175. package/dist/learning/deliverable-corpus.js.map +1 -0
  176. package/dist/learning/error-repair.d.ts +45 -2
  177. package/dist/learning/error-repair.d.ts.map +1 -1
  178. package/dist/learning/error-repair.js +95 -0
  179. package/dist/learning/error-repair.js.map +1 -1
  180. package/dist/learning/exhaustion-report.d.ts +136 -0
  181. package/dist/learning/exhaustion-report.d.ts.map +1 -0
  182. package/dist/learning/exhaustion-report.js +239 -0
  183. package/dist/learning/exhaustion-report.js.map +1 -0
  184. package/dist/learning/failure-bookkeeping.d.ts +16 -0
  185. package/dist/learning/failure-bookkeeping.d.ts.map +1 -1
  186. package/dist/learning/failure-bookkeeping.js +51 -5
  187. package/dist/learning/failure-bookkeeping.js.map +1 -1
  188. package/dist/learning/gate-friction.d.ts +39 -0
  189. package/dist/learning/gate-friction.d.ts.map +1 -0
  190. package/dist/learning/gate-friction.js +91 -0
  191. package/dist/learning/gate-friction.js.map +1 -0
  192. package/dist/learning/harness-narration.d.ts +34 -0
  193. package/dist/learning/harness-narration.d.ts.map +1 -0
  194. package/dist/learning/harness-narration.js +58 -0
  195. package/dist/learning/harness-narration.js.map +1 -0
  196. package/dist/learning/hub-skill-catalog.d.ts.map +1 -1
  197. package/dist/learning/hub-skill-catalog.js +1 -2
  198. package/dist/learning/hub-skill-catalog.js.map +1 -1
  199. package/dist/learning/hybrid-router.d.ts +65 -0
  200. package/dist/learning/hybrid-router.d.ts.map +1 -1
  201. package/dist/learning/hybrid-router.js +186 -0
  202. package/dist/learning/hybrid-router.js.map +1 -1
  203. package/dist/learning/knowledge-base.d.ts +350 -0
  204. package/dist/learning/knowledge-base.d.ts.map +1 -0
  205. package/dist/learning/knowledge-base.js +906 -0
  206. package/dist/learning/knowledge-base.js.map +1 -0
  207. package/dist/learning/knowledge-eval.d.ts +171 -0
  208. package/dist/learning/knowledge-eval.d.ts.map +1 -0
  209. package/dist/learning/knowledge-eval.js +196 -0
  210. package/dist/learning/knowledge-eval.js.map +1 -0
  211. package/dist/learning/knowledge-turn.d.ts +92 -0
  212. package/dist/learning/knowledge-turn.d.ts.map +1 -0
  213. package/dist/learning/knowledge-turn.js +190 -0
  214. package/dist/learning/knowledge-turn.js.map +1 -0
  215. package/dist/learning/learned-commands.d.ts +64 -0
  216. package/dist/learning/learned-commands.d.ts.map +1 -0
  217. package/dist/learning/learned-commands.js +108 -0
  218. package/dist/learning/learned-commands.js.map +1 -0
  219. package/dist/learning/lexical-search.d.ts +50 -0
  220. package/dist/learning/lexical-search.d.ts.map +1 -0
  221. package/dist/learning/lexical-search.js +111 -0
  222. package/dist/learning/lexical-search.js.map +1 -0
  223. package/dist/learning/machine-facts.d.ts +71 -0
  224. package/dist/learning/machine-facts.d.ts.map +1 -0
  225. package/dist/learning/machine-facts.js +164 -0
  226. package/dist/learning/machine-facts.js.map +1 -0
  227. package/dist/learning/markdown-outline.d.ts +73 -0
  228. package/dist/learning/markdown-outline.d.ts.map +1 -0
  229. package/dist/learning/markdown-outline.js +136 -0
  230. package/dist/learning/markdown-outline.js.map +1 -0
  231. package/dist/learning/model-first-router.d.ts +33 -1
  232. package/dist/learning/model-first-router.d.ts.map +1 -1
  233. package/dist/learning/model-first-router.js +123 -9
  234. package/dist/learning/model-first-router.js.map +1 -1
  235. package/dist/learning/model-identity.d.ts +80 -0
  236. package/dist/learning/model-identity.d.ts.map +1 -0
  237. package/dist/learning/model-identity.js +115 -0
  238. package/dist/learning/model-identity.js.map +1 -0
  239. package/dist/learning/model-registry.d.ts +141 -2
  240. package/dist/learning/model-registry.d.ts.map +1 -1
  241. package/dist/learning/model-registry.js +324 -38
  242. package/dist/learning/model-registry.js.map +1 -1
  243. package/dist/learning/model-scoring.d.ts.map +1 -1
  244. package/dist/learning/model-scoring.js +8 -1
  245. package/dist/learning/model-scoring.js.map +1 -1
  246. package/dist/learning/model-selection.d.ts +2 -1
  247. package/dist/learning/model-selection.d.ts.map +1 -1
  248. package/dist/learning/model-selection.js +76 -2
  249. package/dist/learning/model-selection.js.map +1 -1
  250. package/dist/learning/outcome-observation.d.ts +49 -0
  251. package/dist/learning/outcome-observation.d.ts.map +1 -0
  252. package/dist/learning/outcome-observation.js +95 -0
  253. package/dist/learning/outcome-observation.js.map +1 -0
  254. package/dist/learning/pair-entitlement.d.ts +184 -0
  255. package/dist/learning/pair-entitlement.d.ts.map +1 -0
  256. package/dist/learning/pair-entitlement.js +214 -0
  257. package/dist/learning/pair-entitlement.js.map +1 -0
  258. package/dist/learning/project-docs.d.ts +83 -0
  259. package/dist/learning/project-docs.d.ts.map +1 -0
  260. package/dist/learning/project-docs.js +132 -0
  261. package/dist/learning/project-docs.js.map +1 -0
  262. package/dist/learning/provider-fallback.d.ts +23 -1
  263. package/dist/learning/provider-fallback.d.ts.map +1 -1
  264. package/dist/learning/provider-fallback.js +24 -0
  265. package/dist/learning/provider-fallback.js.map +1 -1
  266. package/dist/learning/quota-ledger.d.ts +13 -0
  267. package/dist/learning/quota-ledger.d.ts.map +1 -1
  268. package/dist/learning/quota-ledger.js +28 -0
  269. package/dist/learning/quota-ledger.js.map +1 -1
  270. package/dist/learning/reasoning-trace.d.ts +65 -1
  271. package/dist/learning/reasoning-trace.d.ts.map +1 -1
  272. package/dist/learning/reasoning-trace.js +123 -1
  273. package/dist/learning/reasoning-trace.js.map +1 -1
  274. package/dist/learning/requirement-probe.d.ts +55 -0
  275. package/dist/learning/requirement-probe.d.ts.map +1 -0
  276. package/dist/learning/requirement-probe.js +77 -0
  277. package/dist/learning/requirement-probe.js.map +1 -0
  278. package/dist/learning/resilient-call.d.ts +20 -1
  279. package/dist/learning/resilient-call.d.ts.map +1 -1
  280. package/dist/learning/resilient-call.js +42 -4
  281. package/dist/learning/resilient-call.js.map +1 -1
  282. package/dist/learning/response-usability.d.ts +85 -0
  283. package/dist/learning/response-usability.d.ts.map +1 -0
  284. package/dist/learning/response-usability.js +135 -0
  285. package/dist/learning/response-usability.js.map +1 -0
  286. package/dist/learning/router-bandit.d.ts +132 -0
  287. package/dist/learning/router-bandit.d.ts.map +1 -1
  288. package/dist/learning/router-bandit.js +253 -0
  289. package/dist/learning/router-bandit.js.map +1 -1
  290. package/dist/learning/routing-history.d.ts +41 -2
  291. package/dist/learning/routing-history.d.ts.map +1 -1
  292. package/dist/learning/routing-history.js.map +1 -1
  293. package/dist/learning/run-trace.d.ts +21 -0
  294. package/dist/learning/run-trace.d.ts.map +1 -1
  295. package/dist/learning/run-trace.js +38 -0
  296. package/dist/learning/run-trace.js.map +1 -1
  297. package/dist/learning/seeded-benchmark.d.ts +14 -0
  298. package/dist/learning/seeded-benchmark.d.ts.map +1 -1
  299. package/dist/learning/seeded-benchmark.js +43 -4
  300. package/dist/learning/seeded-benchmark.js.map +1 -1
  301. package/dist/learning/session-grant.d.ts +75 -0
  302. package/dist/learning/session-grant.d.ts.map +1 -0
  303. package/dist/learning/session-grant.js +112 -0
  304. package/dist/learning/session-grant.js.map +1 -0
  305. package/dist/learning/task-model-continuity.d.ts +73 -0
  306. package/dist/learning/task-model-continuity.d.ts.map +1 -0
  307. package/dist/learning/task-model-continuity.js +87 -0
  308. package/dist/learning/task-model-continuity.js.map +1 -0
  309. package/dist/learning/turn-feedback.d.ts +93 -0
  310. package/dist/learning/turn-feedback.d.ts.map +1 -0
  311. package/dist/learning/turn-feedback.js +127 -0
  312. package/dist/learning/turn-feedback.js.map +1 -0
  313. package/dist/learning/turn-report.d.ts +104 -2
  314. package/dist/learning/turn-report.d.ts.map +1 -1
  315. package/dist/learning/turn-report.js +161 -6
  316. package/dist/learning/turn-report.js.map +1 -1
  317. package/dist/learning/verdict-routing.d.ts +51 -0
  318. package/dist/learning/verdict-routing.d.ts.map +1 -0
  319. package/dist/learning/verdict-routing.js +122 -0
  320. package/dist/learning/verdict-routing.js.map +1 -0
  321. package/dist/mcp/client.d.ts.map +1 -1
  322. package/dist/mcp/client.js +5 -0
  323. package/dist/mcp/client.js.map +1 -1
  324. package/dist/mcp/manager.d.ts +10 -0
  325. package/dist/mcp/manager.d.ts.map +1 -1
  326. package/dist/mcp/manager.js +20 -0
  327. package/dist/mcp/manager.js.map +1 -1
  328. package/dist/mcp/mcp-discovery.d.ts +34 -0
  329. package/dist/mcp/mcp-discovery.d.ts.map +1 -0
  330. package/dist/mcp/mcp-discovery.js +71 -0
  331. package/dist/mcp/mcp-discovery.js.map +1 -0
  332. package/dist/mcp/mcp-schema-cache.d.ts +17 -0
  333. package/dist/mcp/mcp-schema-cache.d.ts.map +1 -1
  334. package/dist/mcp/mcp-schema-cache.js +47 -3
  335. package/dist/mcp/mcp-schema-cache.js.map +1 -1
  336. package/dist/mcp/types.d.ts +28 -0
  337. package/dist/mcp/types.d.ts.map +1 -1
  338. package/dist/mcp/types.js.map +1 -1
  339. package/dist/security/secret-scan.d.ts +156 -0
  340. package/dist/security/secret-scan.d.ts.map +1 -0
  341. package/dist/security/secret-scan.js +525 -0
  342. package/dist/security/secret-scan.js.map +1 -0
  343. package/dist/tools/ask-user.d.ts.map +1 -1
  344. package/dist/tools/ask-user.js +4 -0
  345. package/dist/tools/ask-user.js.map +1 -1
  346. package/dist/tools/capability-registry.d.ts +150 -0
  347. package/dist/tools/capability-registry.d.ts.map +1 -0
  348. package/dist/tools/capability-registry.js +400 -0
  349. package/dist/tools/capability-registry.js.map +1 -0
  350. package/dist/tools/child-agent-runtime.d.ts.map +1 -1
  351. package/dist/tools/child-agent-runtime.js +19 -5
  352. package/dist/tools/child-agent-runtime.js.map +1 -1
  353. package/dist/tools/coding-tools.d.ts +17 -5
  354. package/dist/tools/coding-tools.d.ts.map +1 -1
  355. package/dist/tools/coding-tools.js +80 -11
  356. package/dist/tools/coding-tools.js.map +1 -1
  357. package/dist/tools/command-memo.d.ts +116 -0
  358. package/dist/tools/command-memo.d.ts.map +1 -0
  359. package/dist/tools/command-memo.js +202 -0
  360. package/dist/tools/command-memo.js.map +1 -0
  361. package/dist/tools/git-tool.d.ts.map +1 -1
  362. package/dist/tools/git-tool.js +13 -3
  363. package/dist/tools/git-tool.js.map +1 -1
  364. package/dist/tools/harness-directive.d.ts +42 -0
  365. package/dist/tools/harness-directive.d.ts.map +1 -0
  366. package/dist/tools/harness-directive.js +45 -0
  367. package/dist/tools/harness-directive.js.map +1 -0
  368. package/dist/tools/loop-skill-hint.d.ts +74 -174
  369. package/dist/tools/loop-skill-hint.d.ts.map +1 -1
  370. package/dist/tools/loop-skill-hint.js +110 -536
  371. package/dist/tools/loop-skill-hint.js.map +1 -1
  372. package/dist/tools/mcp-client-tool.d.ts +2 -0
  373. package/dist/tools/mcp-client-tool.d.ts.map +1 -1
  374. package/dist/tools/mcp-client-tool.js +3 -0
  375. package/dist/tools/mcp-client-tool.js.map +1 -1
  376. package/dist/tools/modality/shared.d.ts +1 -4
  377. package/dist/tools/modality/shared.d.ts.map +1 -1
  378. package/dist/tools/modality/shared.js +7 -22
  379. package/dist/tools/modality/shared.js.map +1 -1
  380. package/dist/tools/plan-store.d.ts +44 -4
  381. package/dist/tools/plan-store.d.ts.map +1 -1
  382. package/dist/tools/plan-store.js +93 -9
  383. package/dist/tools/plan-store.js.map +1 -1
  384. package/dist/tools/registry.d.ts +76 -3
  385. package/dist/tools/registry.d.ts.map +1 -1
  386. package/dist/tools/registry.js +623 -15
  387. package/dist/tools/registry.js.map +1 -1
  388. package/dist/tools/remediation-ladder.d.ts +91 -0
  389. package/dist/tools/remediation-ladder.d.ts.map +1 -0
  390. package/dist/tools/remediation-ladder.js +316 -0
  391. package/dist/tools/remediation-ladder.js.map +1 -0
  392. package/dist/tools/run-cli.d.ts.map +1 -1
  393. package/dist/tools/run-cli.js +29 -4
  394. package/dist/tools/run-cli.js.map +1 -1
  395. package/dist/tools/run-terminal.d.ts +11 -0
  396. package/dist/tools/run-terminal.d.ts.map +1 -1
  397. package/dist/tools/run-terminal.js +289 -10
  398. package/dist/tools/run-terminal.js.map +1 -1
  399. package/dist/tools/skills-hub.d.ts +7 -0
  400. package/dist/tools/skills-hub.d.ts.map +1 -1
  401. package/dist/tools/skills-hub.js +11 -2
  402. package/dist/tools/skills-hub.js.map +1 -1
  403. package/dist/tools/step-artifact.d.ts +35 -0
  404. package/dist/tools/step-artifact.d.ts.map +1 -0
  405. package/dist/tools/step-artifact.js +154 -0
  406. package/dist/tools/step-artifact.js.map +1 -0
  407. package/dist/tools/tool-loop.d.ts +327 -13
  408. package/dist/tools/tool-loop.d.ts.map +1 -1
  409. package/dist/tools/tool-loop.js +891 -66
  410. package/dist/tools/tool-loop.js.map +1 -1
  411. package/dist/tools/toolsets.js +4 -4
  412. package/dist/tools/toolsets.js.map +1 -1
  413. package/dist/tools/worktree.d.ts +11 -2
  414. package/dist/tools/worktree.d.ts.map +1 -1
  415. package/dist/tools/worktree.js +11 -2
  416. package/dist/tools/worktree.js.map +1 -1
  417. package/dist/utils/atomic-store.d.ts +53 -0
  418. package/dist/utils/atomic-store.d.ts.map +1 -0
  419. package/dist/utils/atomic-store.js +178 -0
  420. package/dist/utils/atomic-store.js.map +1 -0
  421. package/dist/utils/binary-probe.d.ts +25 -0
  422. package/dist/utils/binary-probe.d.ts.map +1 -0
  423. package/dist/utils/binary-probe.js +48 -0
  424. package/dist/utils/binary-probe.js.map +1 -0
  425. package/dist/utils/workspace-path.d.ts +50 -0
  426. package/dist/utils/workspace-path.d.ts.map +1 -0
  427. package/dist/utils/workspace-path.js +86 -0
  428. package/dist/utils/workspace-path.js.map +1 -0
  429. package/dist/web-dashboard/chat-console.d.ts +24 -0
  430. package/dist/web-dashboard/chat-console.d.ts.map +1 -1
  431. package/dist/web-dashboard/chat-console.js +38 -0
  432. package/dist/web-dashboard/chat-console.js.map +1 -1
  433. package/dist/web-dashboard/project-context.d.ts +27 -2
  434. package/dist/web-dashboard/project-context.d.ts.map +1 -1
  435. package/dist/web-dashboard/project-context.js +32 -2
  436. package/dist/web-dashboard/project-context.js.map +1 -1
  437. package/dist/web-dashboard/server.d.ts +40 -0
  438. package/dist/web-dashboard/server.d.ts.map +1 -1
  439. package/dist/web-dashboard/server.js +733 -15
  440. package/dist/web-dashboard/server.js.map +1 -1
  441. package/dist/web-dashboard/src/types.d.ts +236 -1
  442. package/dist/web-dashboard/src/types.d.ts.map +1 -1
  443. package/dist/web-dashboard/workspace-guard.d.ts +18 -2
  444. package/dist/web-dashboard/workspace-guard.d.ts.map +1 -1
  445. package/dist/web-dashboard/workspace-guard.js +94 -12
  446. package/dist/web-dashboard/workspace-guard.js.map +1 -1
  447. package/dist/web-dashboard/workspace-resolution.d.ts +87 -0
  448. package/dist/web-dashboard/workspace-resolution.d.ts.map +1 -0
  449. package/dist/web-dashboard/workspace-resolution.js +105 -0
  450. package/dist/web-dashboard/workspace-resolution.js.map +1 -0
  451. package/package.json +1 -1
  452. package/src/web-dashboard/public/assets/index-tK8Y2qHB.css +1 -0
  453. package/src/web-dashboard/public/assets/index-zjbdJnO-.js +210 -0
  454. package/src/web-dashboard/public/assets/index-zjbdJnO-.js.map +1 -0
  455. package/src/web-dashboard/public/index.html +2 -2
  456. package/src/web-dashboard/public/assets/index-BrZcYhy6.js +0 -207
  457. package/src/web-dashboard/public/assets/index-BrZcYhy6.js.map +0 -1
  458. package/src/web-dashboard/public/assets/index-DsWczTa6.css +0 -1
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Remediation ladder — a recognised toolchain failure gets a KNOWN fix instead
3
+ * of another exploration loop.
4
+ *
5
+ * WHY (A4). On the supervised `cal` Android run (2026-10-05) the agent
6
+ * diagnosed the real cause of a Gradle failure correctly — Capacitor 8 compiles
7
+ * at `JavaVersion.VERSION_21`, the environment had JDK 17 — and then stopped:
8
+ * it retried the same command with small variations and closed the turn telling
9
+ * the user to install JDK 21 themselves. A supervisor fixed the same tree in
10
+ * ~30 s with a project-local edit (`android/local.properties` + a JDK-21
11
+ * `JAVA_HOME`). The failure was not environmental in the sense of "impossible";
12
+ * it was a fix the agent could see and did not take.
13
+ *
14
+ * The ladder closes that gap with a SMALL, DECLARED map: error signature →
15
+ * what it means → the bounded fix, split into the part that belongs to THIS
16
+ * project (a file write, a chmod, an env var scoped to the command) and the
17
+ * part that is the user's decision (installing a system JDK). By DEFAULT it is
18
+ * advisory: the note is appended to the failed tool result, so the model takes
19
+ * the fix with the same tools it already has. A very small subset may carry a
20
+ * machine-readable safe action (see AUTO-APPLY below), but nothing is ever
21
+ * changed without an explicit opt-in — a remediation the agent cannot see is
22
+ * indistinguishable from a bug, and the agent must stay able to reason about
23
+ * what changed.
24
+ *
25
+ * Rules are intentionally a handful of high-signal signatures, not a general
26
+ * log classifier: a wrong "known fix" is worse than none.
27
+ *
28
+ * AUTO-APPLY (opt-in). A subset of the fixes is a single, idempotent,
29
+ * project-local file operation that cannot strand the user — `chmod +x` on the
30
+ * wrapper, writing `android/local.properties`. For those a rule may also
31
+ * declare a machine-readable {@link AutoFixAction}. When the run opts in
32
+ * (`NUVIRA_REMEDIATE=auto`) the fix is applied to the workspace and the note
33
+ * reports exactly what changed; by default the note is advisory only. Anything
34
+ * that needs a discovery or a per-run env var stays advisory — the agent can
35
+ * still see it and take it.
36
+ */
37
+ export interface Remediation {
38
+ /** Stable id (telemetry / tests). */
39
+ id: string;
40
+ /** What this signature means, in one line. */
41
+ summary: string;
42
+ /** Bounded steps, in order. Concrete commands/paths, not advice. */
43
+ fix: string[];
44
+ /**
45
+ * `project-local` steps are the agent's job; `system` steps change the
46
+ * machine and may need the user. Both are shown; only the distinction is.
47
+ */
48
+ scope: 'project-local' | 'system';
49
+ /**
50
+ * Safe, idempotent, project-local operations a machine may take on the agent's
51
+ * behalf when auto-apply is enabled. Absent means advisory-only (the default).
52
+ */
53
+ autoFix?: AutoFixAction[];
54
+ }
55
+ /** A no-surprise filesystem operation confined to the project workspace. */
56
+ export type AutoFixAction = {
57
+ kind: 'chmod-exec';
58
+ path: string;
59
+ } | {
60
+ kind: 'write-file';
61
+ path: string;
62
+ content: string;
63
+ };
64
+ /**
65
+ * Diagnose a FAILED command. Returns null when the output matches no known
66
+ * signature — the ladder must never invent a fix for an unknown failure.
67
+ */
68
+ export declare function diagnoseFailure(command: string, output: string, cwd?: string, env?: NodeJS.ProcessEnv): Remediation | null;
69
+ /** Is auto-apply requested for this run? Off unless explicitly opted in. */
70
+ export declare function remediationAutoApplyEnabled(env?: NodeJS.ProcessEnv): boolean;
71
+ export interface AutoApplyResult {
72
+ /** Human strings for the operations that changed the workspace. */
73
+ applied: string[];
74
+ /** Operations that were already satisfied or could not be taken safely. */
75
+ skipped: string[];
76
+ }
77
+ /**
78
+ * Apply the remediations's safe auto-fixes. Every operation is idempotent and
79
+ * confined to the workspace; anything that fails is reported as skipped, never
80
+ * thrown — a remediation must not break the tool result it annotates.
81
+ */
82
+ export declare function applyRemediationAutoFixes(r: Remediation): AutoApplyResult;
83
+ /** Render the auto-apply outcome as a note appended after the advisory fix. */
84
+ export declare function formatAutoApply(result: AutoApplyResult): string;
85
+ /**
86
+ * Render a remediation as the note appended to the failed tool result. Plain
87
+ * text (not markdown headers) so it reads the same in a terminal, a transcript,
88
+ * and a model prompt.
89
+ */
90
+ export declare function formatRemediation(r: Remediation): string;
91
+ //# sourceMappingURL=remediation-ladder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remediation-ladder.d.ts","sourceRoot":"","sources":["../../src/tools/remediation-ladder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAKH,MAAM,WAAW,WAAW;IAC1B,qCAAqC;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,GAAG,EAAE,MAAM,EAAE,CAAC;IACd;;;OAGG;IACH,KAAK,EAAE,eAAe,GAAG,QAAQ,CAAC;IAClC;;;OAGG;IACH,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,4EAA4E;AAC5E,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AA8L1D;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,MAAM,EACZ,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,WAAW,GAAG,IAAI,CAapB;AAED,4EAA4E;AAC5E,wBAAgB,2BAA2B,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAEzF;AAED,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,2EAA2E;IAC3E,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,WAAW,GAAG,eAAe,CAiDzE;AAED,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAO/D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAQxD"}
@@ -0,0 +1,316 @@
1
+ /**
2
+ * Remediation ladder — a recognised toolchain failure gets a KNOWN fix instead
3
+ * of another exploration loop.
4
+ *
5
+ * WHY (A4). On the supervised `cal` Android run (2026-10-05) the agent
6
+ * diagnosed the real cause of a Gradle failure correctly — Capacitor 8 compiles
7
+ * at `JavaVersion.VERSION_21`, the environment had JDK 17 — and then stopped:
8
+ * it retried the same command with small variations and closed the turn telling
9
+ * the user to install JDK 21 themselves. A supervisor fixed the same tree in
10
+ * ~30 s with a project-local edit (`android/local.properties` + a JDK-21
11
+ * `JAVA_HOME`). The failure was not environmental in the sense of "impossible";
12
+ * it was a fix the agent could see and did not take.
13
+ *
14
+ * The ladder closes that gap with a SMALL, DECLARED map: error signature →
15
+ * what it means → the bounded fix, split into the part that belongs to THIS
16
+ * project (a file write, a chmod, an env var scoped to the command) and the
17
+ * part that is the user's decision (installing a system JDK). By DEFAULT it is
18
+ * advisory: the note is appended to the failed tool result, so the model takes
19
+ * the fix with the same tools it already has. A very small subset may carry a
20
+ * machine-readable safe action (see AUTO-APPLY below), but nothing is ever
21
+ * changed without an explicit opt-in — a remediation the agent cannot see is
22
+ * indistinguishable from a bug, and the agent must stay able to reason about
23
+ * what changed.
24
+ *
25
+ * Rules are intentionally a handful of high-signal signatures, not a general
26
+ * log classifier: a wrong "known fix" is worse than none.
27
+ *
28
+ * AUTO-APPLY (opt-in). A subset of the fixes is a single, idempotent,
29
+ * project-local file operation that cannot strand the user — `chmod +x` on the
30
+ * wrapper, writing `android/local.properties`. For those a rule may also
31
+ * declare a machine-readable {@link AutoFixAction}. When the run opts in
32
+ * (`NUVIRA_REMEDIATE=auto`) the fix is applied to the workspace and the note
33
+ * reports exactly what changed; by default the note is advisory only. Anything
34
+ * that needs a discovery or a per-run env var stays advisory — the agent can
35
+ * still see it and take it.
36
+ */
37
+ import { chmodSync, existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from 'node:fs';
38
+ import { dirname, join } from 'node:path';
39
+ /** Filesystem seam so rules stay testable without touching the real tree. */
40
+ const defaultFs = { existsSync, statSync };
41
+ /**
42
+ * Find the Gradle wrapper script relative to the project root, if it exists.
43
+ * The `cal` tree keeps it under `android/`; a bare Android project keeps it at
44
+ * the root, so both are checked (most specific first).
45
+ */
46
+ function findGradlew(cwd) {
47
+ if (!cwd)
48
+ return null;
49
+ for (const rel of ['android/gradlew', 'gradlew']) {
50
+ const abs = join(cwd, rel);
51
+ try {
52
+ if (defaultFs.existsSync(abs) && defaultFs.statSync(abs).isFile())
53
+ return abs;
54
+ }
55
+ catch {
56
+ /* unreadable — treat as absent */
57
+ }
58
+ }
59
+ return null;
60
+ }
61
+ /**
62
+ * Where the Android SDK lives, if this machine merely has it configured. Used
63
+ * to write `android/local.properties`, which is the whole of the SDK-location
64
+ * failure. Returns null when no path can be found, so nothing is written.
65
+ */
66
+ function findAndroidSdk(cwd, env) {
67
+ const explicit = env.ANDROID_HOME || env.ANDROID_SDK_ROOT;
68
+ if (explicit && existsSync(explicit))
69
+ return explicit;
70
+ const home = env.HOME || '';
71
+ const candidates = [
72
+ join(home, 'android-toolchain/android-sdk'),
73
+ join(home, 'Library/Android/sdk'),
74
+ join(home, 'Android/Sdk'),
75
+ ...(cwd ? [join(cwd, 'android-sdk'), join(cwd, '.android-sdk')] : []),
76
+ ];
77
+ for (const c of candidates) {
78
+ try {
79
+ // A real SDK has a `platform-tools` (or `platforms`) directory.
80
+ if (c && existsSync(join(c, 'platform-tools')))
81
+ return c;
82
+ }
83
+ catch {
84
+ /* ignore */
85
+ }
86
+ }
87
+ return null;
88
+ }
89
+ const ANDROID_JDK_LINE = /requires\s+java\s+(1[1-9]|[2-9]\d)|java\s*21|VERSION_21|Unsupported class file major version/i;
90
+ /**
91
+ * The rules, most specific first. Each `test` is deliberately narrow so the
92
+ * ladder fires only on a signature it can actually help with.
93
+ */
94
+ const RULES = [
95
+ {
96
+ id: 'jdk-version',
97
+ test: (cmd, out) => ANDROID_JDK_LINE.test(out) ||
98
+ /(android|gradle|sdk)/i.test(cmd) && /(java|jdk).*(version|home|17|21)|could not determine java version/i.test(out),
99
+ build: () => ({
100
+ id: 'jdk-version',
101
+ summary: 'This build needs a newer JDK than the one on PATH (for example Capacitor/AGP 8 requires JDK 21, not 17).',
102
+ fix: [
103
+ 'Find a JDK that satisfies the required version (e.g. `~/android-toolchain/jdk21/Contents/Home`, `/usr/libexec/java_home -v 21`, or `ls /usr/lib/jvm`).',
104
+ 'Point THIS build at it without changing the user’s default: re-run the command with `JAVA_HOME=<jdk> PATH="$JAVA_HOME/bin:$PATH" <command>` (project-local, do this now).',
105
+ 'If the JDK is not installed at all, install it (e.g. `brew install --cask temurin@21`) — this changes the machine, so say so rather than blocking on it.',
106
+ 'For Gradle you can also pin it in the project: add `org.gradle.java.home=<jdk>` to `android/gradle.properties` (project-local, survives the turn).',
107
+ 'Do NOT retry the same command with the same JAVA_HOME — the version cannot change by retrying.',
108
+ ],
109
+ scope: 'project-local',
110
+ }),
111
+ },
112
+ {
113
+ id: 'android-sdk-location',
114
+ test: (_cmd, out) => /SDK location not found|ANDROID_HOME|ANDROID_SDK_ROOT|sdk\.dir|accepted the SDK license|licenses? .* not accepted/i.test(out),
115
+ build: ({ cwd, env }) => {
116
+ const sdk = findAndroidSdk(cwd, env);
117
+ const localProps = cwd ? join(cwd, 'android/local.properties') : '';
118
+ return {
119
+ id: 'android-sdk-location',
120
+ summary: 'Gradle cannot find (or is not allowed to use) the Android SDK.',
121
+ ...(sdk && localProps
122
+ ? { autoFix: [{ kind: 'write-file', path: localProps, content: `sdk.dir=${sdk}\n` }] }
123
+ : {}),
124
+ fix: [
125
+ 'Create `android/local.properties` (project-local) containing `sdk.dir=<path-to-Android-SDK>` — this is the whole of the SDK-location failure.',
126
+ 'Install the required components if missing: `sdkmanager "platforms;android-34" "build-tools;34.0.0" "platform-tools"`.',
127
+ 'Accept pending licences: `yes | sdkmanager --licenses`.',
128
+ 'Re-run `./gradlew assembleDebug` (or the original build) in the SAME directory.',
129
+ ],
130
+ scope: 'project-local',
131
+ };
132
+ },
133
+ },
134
+ {
135
+ id: 'gradlew-not-executable',
136
+ test: (cmd, out) => /gradlew/i.test(cmd) && /Permission denied|not executable/i.test(out),
137
+ build: ({ cwd }) => {
138
+ const gradlew = findGradlew(cwd);
139
+ return {
140
+ id: 'gradlew-not-executable',
141
+ summary: 'The Gradle wrapper script is not executable in this checkout.',
142
+ ...(gradlew ? { autoFix: [{ kind: 'chmod-exec', path: gradlew }] } : {}),
143
+ fix: [
144
+ 'Run `chmod +x android/gradlew` (project-local), then re-run the build.',
145
+ 'Alternatively invoke it through the shell: `sh android/gradlew assembleDebug`.',
146
+ ],
147
+ scope: 'project-local',
148
+ };
149
+ },
150
+ },
151
+ {
152
+ id: 'toolchain-missing',
153
+ test: (_cmd, out) => /\b(java|javac|gradle|adb|sdkmanager|kotlinc)\b.*(command not found|not recognized as)/i.test(out),
154
+ build: () => ({
155
+ id: 'toolchain-missing',
156
+ summary: 'A build tool is not installed (or not on PATH).',
157
+ fix: [
158
+ 'Check whether the tool exists somewhere first (`which java`, `ls ~/android-toolchain`).',
159
+ 'Install the missing component, or add its path to PATH for THIS command (`PATH="$HOME/android-toolchain/android-sdk/platform-tools:$PATH" <command>`) — project-local for the run.',
160
+ 'Installing a toolchain system-wide is the user’s decision; state it plainly if it is genuinely required.',
161
+ ],
162
+ scope: 'project-local',
163
+ }),
164
+ },
165
+ {
166
+ id: 'python-env',
167
+ test: (_cmd, out) => /externally-managed-environment|No module named|Could not find a version that satisfies|python[0-9.]*: (command )?not found/i.test(out),
168
+ build: () => ({
169
+ id: 'python-env',
170
+ summary: 'Python dependencies are missing or the environment is externally managed.',
171
+ fix: [
172
+ 'Create a project venv: `python3 -m venv .venv` (project-local).',
173
+ 'Install into it: `.venv/bin/pip install -r requirements.txt` (or the named package).',
174
+ 'Re-run the original command with the venv active: `.venv/bin/python <command>`.',
175
+ 'Do NOT `pip install --break-system-packages` — the venv is the fix.',
176
+ ],
177
+ scope: 'project-local',
178
+ }),
179
+ },
180
+ {
181
+ id: 'node-engines',
182
+ test: (_cmd, out) => /EBADENGINE|Unsupported engine|requires Node(\.js)? (version )?|node: (command )?not found/i.test(out),
183
+ build: () => ({
184
+ id: 'node-engines',
185
+ summary: 'The installed Node/npm does not satisfy this project’s engine requirement.',
186
+ fix: [
187
+ 'Read the required version from `package.json` (`engines`).',
188
+ 'Select a matching runtime for THIS command (e.g. `nvm use 20`, `fnm use`, or point PATH at the right install) — project-local for the run.',
189
+ 'If no matching runtime exists, installing one is the user’s decision — say so instead of retrying.',
190
+ ],
191
+ scope: 'project-local',
192
+ }),
193
+ },
194
+ {
195
+ id: 'docker-daemon',
196
+ test: (_cmd, out) => /Cannot connect to the Docker daemon|Is the docker daemon running/i.test(out),
197
+ build: () => ({
198
+ id: 'docker-daemon',
199
+ summary: 'Docker is installed but its daemon is not running.',
200
+ fix: [
201
+ 'Start it: `open -a Docker` (macOS), `sudo systemctl start docker` (Linux), or start Docker Desktop.',
202
+ 'Wait for `docker info` to succeed, then re-run the original command.',
203
+ 'If it cannot be started, choose a non-container path for the build rather than retrying.',
204
+ ],
205
+ scope: 'system',
206
+ }),
207
+ },
208
+ ];
209
+ /**
210
+ * Diagnose a FAILED command. Returns null when the output matches no known
211
+ * signature — the ladder must never invent a fix for an unknown failure.
212
+ */
213
+ export function diagnoseFailure(command, output, cwd, env = process.env) {
214
+ const cmd = String(command ?? '');
215
+ const out = String(output ?? '');
216
+ if (!out)
217
+ return null;
218
+ for (const rule of RULES) {
219
+ try {
220
+ if (rule.test(cmd, out))
221
+ return rule.build({ command: cmd, output: out, cwd, env });
222
+ }
223
+ catch {
224
+ // A rule must never break the tool result it is annotating.
225
+ continue;
226
+ }
227
+ }
228
+ return null;
229
+ }
230
+ /** Is auto-apply requested for this run? Off unless explicitly opted in. */
231
+ export function remediationAutoApplyEnabled(env = process.env) {
232
+ return (env.NUVIRA_REMEDIATE || '').toLowerCase() === 'auto';
233
+ }
234
+ /**
235
+ * Apply the remediations's safe auto-fixes. Every operation is idempotent and
236
+ * confined to the workspace; anything that fails is reported as skipped, never
237
+ * thrown — a remediation must not break the tool result it annotates.
238
+ */
239
+ export function applyRemediationAutoFixes(r) {
240
+ const applied = [];
241
+ const skipped = [];
242
+ for (const action of r.autoFix ?? []) {
243
+ try {
244
+ if (action.kind === 'chmod-exec') {
245
+ // Windows has no POSIX execute bit — `chmod` there can only toggle the
246
+ // read-only attribute. Running it would report a fix that did not happen
247
+ // (and could never become idempotent), so say plainly that it does not
248
+ // apply instead of claiming success.
249
+ if (process.platform === 'win32') {
250
+ skipped.push(`chmod +x ${action.path} (not applicable on Windows — no POSIX execute bit)`);
251
+ continue;
252
+ }
253
+ if (!existsSync(action.path)) {
254
+ skipped.push(`chmod +x ${action.path} (file not found)`);
255
+ continue;
256
+ }
257
+ const mode = statSync(action.path).mode;
258
+ if (mode & 0o111) {
259
+ skipped.push(`chmod +x ${action.path} (already executable)`);
260
+ continue;
261
+ }
262
+ chmodSync(action.path, 0o755);
263
+ applied.push(`chmod +x ${action.path}`);
264
+ }
265
+ else {
266
+ // write-file: never clobber a file that already says what we would say.
267
+ if (existsSync(action.path)) {
268
+ const current = readFileSync(action.path, 'utf-8');
269
+ const wanted = action.content.trim();
270
+ if (current.includes(wanted)) {
271
+ skipped.push(`${action.path} (already set)`);
272
+ continue;
273
+ }
274
+ // Append rather than overwrite — other keys in the file are the user's.
275
+ const sep = current.endsWith('\n') || current === '' ? '' : '\n';
276
+ writeFileSync(action.path, `${current}${sep}${action.content}`);
277
+ applied.push(`${action.path} (+ ${wanted})`);
278
+ continue;
279
+ }
280
+ mkdirSync(dirname(action.path), { recursive: true });
281
+ writeFileSync(action.path, action.content);
282
+ applied.push(`${action.path} (created)`);
283
+ }
284
+ }
285
+ catch (e) {
286
+ skipped.push(`${action.kind} ${'path' in action ? action.path : ''} (${e.message})`);
287
+ }
288
+ }
289
+ return { applied, skipped };
290
+ }
291
+ /** Render the auto-apply outcome as a note appended after the advisory fix. */
292
+ export function formatAutoApply(result) {
293
+ if (result.applied.length === 0 && result.skipped.length === 0)
294
+ return '';
295
+ const lines = ['⚙️ Auto-applied safe project-local fix(es):'];
296
+ for (const a of result.applied)
297
+ lines.push(` ✓ ${a}`);
298
+ for (const s of result.skipped)
299
+ lines.push(` – ${s}`);
300
+ lines.push(' (NUVIRA_REMEDIATE=auto; re-run the original command now.)');
301
+ return lines.join('\n');
302
+ }
303
+ /**
304
+ * Render a remediation as the note appended to the failed tool result. Plain
305
+ * text (not markdown headers) so it reads the same in a terminal, a transcript,
306
+ * and a model prompt.
307
+ */
308
+ export function formatRemediation(r) {
309
+ const head = `🔧 Known failure (${r.id}): ${r.summary}`;
310
+ const body = r.fix.map((step, i) => ` ${i + 1}. ${step}`).join('\n');
311
+ const tail = r.scope === 'project-local'
312
+ ? ' → Take the project-local step above and re-run; do not repeat the same command unchanged.'
313
+ : ' → This one is a machine-level change; state it plainly if it is required.';
314
+ return `${head}\n${body}\n${tail}`;
315
+ }
316
+ //# sourceMappingURL=remediation-ladder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remediation-ladder.js","sourceRoot":"","sources":["../../src/tools/remediation-ladder.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"run-cli.d.ts","sourceRoot":"","sources":["../../src/tools/run-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAuBjD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAKvD;AAED,uEAAuE;AACvE,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAqBtD;AAwBD;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAoJjF"}
1
+ {"version":3,"file":"run-cli.d.ts","sourceRoot":"","sources":["../../src/tools/run-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAyBjD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAKvD;AAED,uEAAuE;AACvE,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAqBtD;AAwBD;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CA4KjF"}
@@ -33,8 +33,10 @@ import { fileURLToPath } from 'node:url';
33
33
  import { recordArtifact } from './artifact-append.js';
34
34
  import { envBuff, resolveNuviraHome } from '../config/paths.js';
35
35
  import { resolveAsk } from '../commands/intent-router.js';
36
- import { decideCliIntentConfirmation, RECOVERABLE_CLI_INTENTS } from '../learning/autonomy-policy.js';
36
+ import { decideCliIntentConfirmation } from '../learning/autonomy-policy.js';
37
+ import { cliIntentGateFacts } from '../learning/cli-intent-effects.js';
37
38
  import { envelopeCoversAction } from '../learning/intent-envelope.js';
39
+ import { sessionGrantCovers } from '../learning/session-grant.js';
38
40
  import { maskSenderId } from '../utils/mask.js';
39
41
  /** Cap on how much CLI output is fed back to the model. */
40
42
  const MAX_OUTPUT_CHARS = 6000;
@@ -163,14 +165,37 @@ export async function runCliTool(args, ctx) {
163
165
  // widen what may run: irreversible intents keep the gate they had, and this
164
166
  // only lets an approved plan carry out system work without a round trip per
165
167
  // command.
168
+ // ONE declaration answers every question below — what it does to the world,
169
+ // whether re-running undoes it, and which grant may cover it. See
170
+ // `learning/cli-intent-effects.ts`; the three hand-maintained sets this used to
171
+ // consult are retired.
172
+ const gatedIntent = cliIntentGateFacts(top.intent);
166
173
  const envVerdict = envelopeCoversAction(ctx.envelope, {
167
174
  tool: 'run_cli',
168
- changeClass: RECOVERABLE_CLI_INTENTS.has(top.intent) ? 'local-state' : 'destructive',
175
+ changeClass: gatedIntent.recoverable ? 'local-state' : 'destructive',
169
176
  });
170
- const verdict = envVerdict.covered
171
- ? { action: 'proceed', reason: envVerdict.reason }
177
+ // A grant may only cover an intent the policy itself classifies as recoverable
178
+ // or off-machine — NEVER an irreversible local one (`history.clear`,
179
+ // `memory.prune`), which keeps its gate whatever the user granted.
180
+ const grantCovers = (gatedIntent.external || gatedIntent.recoverable) &&
181
+ gatedIntent.grantCategory !== undefined &&
182
+ sessionGrantCovers(ctx.planStore, gatedIntent.grantCategory);
183
+ const verdict = envVerdict.covered || grantCovers
184
+ ? {
185
+ action: 'proceed',
186
+ reason: envVerdict.covered ? envVerdict.reason : 'allowed for this session by the user',
187
+ }
172
188
  : decideCliIntentConfirmation({ intent: top.intent, namedByRequest });
173
189
  if (verdict.action !== 'proceed') {
190
+ ctx.pendingConfirmation = {
191
+ tool: 'run_cli',
192
+ command,
193
+ // Offer a session grant ONLY where one could actually help; an
194
+ // irreversible local intent declares no category, so no grant is offered.
195
+ ...((gatedIntent.external || gatedIntent.recoverable) && gatedIntent.grantCategory
196
+ ? { category: gatedIntent.grantCategory }
197
+ : {}),
198
+ };
174
199
  return (`Error: run_cli: "${top.intent}" changes running services/state and needs explicit confirmation ` +
175
200
  `(${verdict.reason}). ` +
176
201
  `Call ask_user with choices yes/no confirming this exact command, then re-call ` +
@@ -1 +1 @@
1
- {"version":3,"file":"run-cli.js","sourceRoot":"","sources":["../../src/tools/run-cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-cli.js","sourceRoot":"","sources":["../../src/tools/run-cli.ts"],"names":[],"mappings":"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"}
@@ -31,6 +31,10 @@
31
31
  * (maskSenderId — phone numbers never echo back in full).
32
32
  */
33
33
  import type { ToolContext } from './registry.js';
34
+ /** Test/DI seam: forget every recorded failure streak. */
35
+ export declare function resetTerminalFailureStreaks(): void;
36
+ /** The guidance a timed-out command gets instead of a bare "timed out". */
37
+ export declare function timeoutGuidance(command: string, timeoutMs: number, repeated: boolean): string;
34
38
  /**
35
39
  * Does this command ADD a dependency (rather than install what is declared)?
36
40
  *
@@ -53,6 +57,13 @@ export interface RunTerminalArgs {
53
57
  command: string;
54
58
  confirm?: boolean;
55
59
  timeout_ms?: number;
60
+ /**
61
+ * What this command is FOR (e.g. "install java"). When the command SUCCEEDS,
62
+ * it is remembered for this verb on this OS (a learned command, source
63
+ * 'observed'), so a later `tool_search resolve` offers it. Optional: absent
64
+ * means nothing is learned — the harness cannot name a verb the model did not.
65
+ */
66
+ verb?: string;
56
67
  }
57
68
  export declare function runTerminalTool(args: RunTerminalArgs, ctx: ToolContext): Promise<string>;
58
69
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"run-terminal.d.ts","sourceRoot":"","sources":["../../src/tools/run-terminal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAiLjD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAuBvD;AAOD;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAetE;AAED,KAAK,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAuDlD,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAe7D;AAED,iFAAiF;AAEjF,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAkI9F"}
1
+ {"version":3,"file":"run-terminal.d.ts","sourceRoot":"","sources":["../../src/tools/run-terminal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAWH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAmDjD,0DAA0D;AAC1D,wBAAgB,2BAA2B,IAAI,IAAI,CAElD;AA+BD,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAW7F;AAoND;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAuBvD;AAOD;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAetE;AAED,KAAK,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAkElD,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAe7D;AAED,iFAAiF;AAEjF,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAsR9F"}