agent-nuvira 3.3.1 → 3.3.4

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 (466) hide show
  1. package/README.md +18 -13
  2. package/dist/agent-sdk/src/agent.d.ts +2 -0
  3. package/dist/agent-sdk/src/agent.d.ts.map +1 -1
  4. package/dist/agent-sdk/src/define.d.ts +64 -0
  5. package/dist/agent-sdk/src/define.d.ts.map +1 -0
  6. package/dist/agent-sdk/src/define.js +76 -0
  7. package/dist/agent-sdk/src/define.js.map +1 -0
  8. package/dist/agent-sdk/src/index.d.ts +9 -0
  9. package/dist/agent-sdk/src/index.d.ts.map +1 -1
  10. package/dist/agent-sdk/src/index.js +9 -0
  11. package/dist/agent-sdk/src/index.js.map +1 -1
  12. package/dist/agent-sdk/src/scaffold.d.ts +11 -0
  13. package/dist/agent-sdk/src/scaffold.d.ts.map +1 -1
  14. package/dist/agent-sdk/src/scaffold.js +16 -6
  15. package/dist/agent-sdk/src/scaffold.js.map +1 -1
  16. package/dist/agents/agents/runner.d.ts +9 -0
  17. package/dist/agents/agents/runner.d.ts.map +1 -1
  18. package/dist/agents/agents/runner.js +34 -12
  19. package/dist/agents/agents/runner.js.map +1 -1
  20. package/dist/agents/agents/writer-tool-calling.d.ts.map +1 -1
  21. package/dist/agents/agents/writer-tool-calling.js +7 -2
  22. package/dist/agents/agents/writer-tool-calling.js.map +1 -1
  23. package/dist/agents/agents/writer.d.ts.map +1 -1
  24. package/dist/agents/agents/writer.js +7 -1
  25. package/dist/agents/agents/writer.js.map +1 -1
  26. package/dist/agents/artifact-verification.d.ts +102 -0
  27. package/dist/agents/artifact-verification.d.ts.map +1 -0
  28. package/dist/agents/artifact-verification.js +216 -0
  29. package/dist/agents/artifact-verification.js.map +1 -0
  30. package/dist/agents/checkpoint-store.d.ts +73 -0
  31. package/dist/agents/checkpoint-store.d.ts.map +1 -1
  32. package/dist/agents/checkpoint-store.js +161 -0
  33. package/dist/agents/checkpoint-store.js.map +1 -1
  34. package/dist/agents/credential-store.d.ts +120 -0
  35. package/dist/agents/credential-store.d.ts.map +1 -1
  36. package/dist/agents/credential-store.js +358 -19
  37. package/dist/agents/credential-store.js.map +1 -1
  38. package/dist/agents/long-form-plan.d.ts.map +1 -1
  39. package/dist/agents/long-form-plan.js +2 -1
  40. package/dist/agents/long-form-plan.js.map +1 -1
  41. package/dist/agents/orchestrator.d.ts +10 -1
  42. package/dist/agents/orchestrator.d.ts.map +1 -1
  43. package/dist/agents/orchestrator.js +239 -79
  44. package/dist/agents/orchestrator.js.map +1 -1
  45. package/dist/agents/phase-engine.d.ts +61 -0
  46. package/dist/agents/phase-engine.d.ts.map +1 -1
  47. package/dist/agents/phase-engine.js +68 -2
  48. package/dist/agents/phase-engine.js.map +1 -1
  49. package/dist/agents/prompt-assembly.d.ts +11 -0
  50. package/dist/agents/prompt-assembly.d.ts.map +1 -1
  51. package/dist/agents/prompt-assembly.js +17 -0
  52. package/dist/agents/prompt-assembly.js.map +1 -1
  53. package/dist/agents/release-preflight.d.ts +121 -0
  54. package/dist/agents/release-preflight.d.ts.map +1 -0
  55. package/dist/agents/release-preflight.js +259 -0
  56. package/dist/agents/release-preflight.js.map +1 -0
  57. package/dist/agents/release-runner.d.ts +157 -0
  58. package/dist/agents/release-runner.d.ts.map +1 -0
  59. package/dist/agents/release-runner.js +719 -0
  60. package/dist/agents/release-runner.js.map +1 -0
  61. package/dist/agents/step-handoff.d.ts +190 -0
  62. package/dist/agents/step-handoff.d.ts.map +1 -0
  63. package/dist/agents/step-handoff.js +443 -0
  64. package/dist/agents/step-handoff.js.map +1 -0
  65. package/dist/cli/agent.d.ts +2 -2
  66. package/dist/cli/agent.js +10 -10
  67. package/dist/cli/benchmark.d.ts.map +1 -1
  68. package/dist/cli/benchmark.js +11 -4
  69. package/dist/cli/benchmark.js.map +1 -1
  70. package/dist/cli/chat.d.ts +94 -0
  71. package/dist/cli/chat.d.ts.map +1 -1
  72. package/dist/cli/chat.js +379 -24
  73. package/dist/cli/chat.js.map +1 -1
  74. package/dist/cli/cli-program.d.ts.map +1 -1
  75. package/dist/cli/cli-program.js +8 -0
  76. package/dist/cli/cli-program.js.map +1 -1
  77. package/dist/cli/config.d.ts.map +1 -1
  78. package/dist/cli/config.js +9 -1
  79. package/dist/cli/config.js.map +1 -1
  80. package/dist/cli/credentials.d.ts +28 -0
  81. package/dist/cli/credentials.d.ts.map +1 -0
  82. package/dist/cli/credentials.js +213 -0
  83. package/dist/cli/credentials.js.map +1 -0
  84. package/dist/cli/doctor.d.ts.map +1 -1
  85. package/dist/cli/doctor.js +3 -2
  86. package/dist/cli/doctor.js.map +1 -1
  87. package/dist/cli/edit.js +2 -2
  88. package/dist/cli/eval.d.ts +17 -0
  89. package/dist/cli/eval.d.ts.map +1 -1
  90. package/dist/cli/eval.js +105 -2
  91. package/dist/cli/eval.js.map +1 -1
  92. package/dist/cli/execute.d.ts +16 -1
  93. package/dist/cli/execute.d.ts.map +1 -1
  94. package/dist/cli/execute.js +192 -22
  95. package/dist/cli/execute.js.map +1 -1
  96. package/dist/cli/failover-runner.d.ts.map +1 -1
  97. package/dist/cli/failover-runner.js +9 -3
  98. package/dist/cli/failover-runner.js.map +1 -1
  99. package/dist/cli/loop-executor.d.ts +55 -0
  100. package/dist/cli/loop-executor.d.ts.map +1 -1
  101. package/dist/cli/loop-executor.js +285 -19
  102. package/dist/cli/loop-executor.js.map +1 -1
  103. package/dist/cli/model.d.ts.map +1 -1
  104. package/dist/cli/model.js +9 -8
  105. package/dist/cli/model.js.map +1 -1
  106. package/dist/cli/models.d.ts +1 -1
  107. package/dist/cli/models.js +4 -4
  108. package/dist/cli/nlu.d.ts.map +1 -1
  109. package/dist/cli/nlu.js +8 -2
  110. package/dist/cli/nlu.js.map +1 -1
  111. package/dist/cli/parity.d.ts +85 -0
  112. package/dist/cli/parity.d.ts.map +1 -0
  113. package/dist/cli/parity.js +506 -0
  114. package/dist/cli/parity.js.map +1 -0
  115. package/dist/cli/plan.d.ts.map +1 -1
  116. package/dist/cli/plan.js +2 -1
  117. package/dist/cli/plan.js.map +1 -1
  118. package/dist/cli/publish.d.ts +22 -0
  119. package/dist/cli/publish.d.ts.map +1 -1
  120. package/dist/cli/publish.js +109 -13
  121. package/dist/cli/publish.js.map +1 -1
  122. package/dist/cli/retrieval.d.ts.map +1 -1
  123. package/dist/cli/retrieval.js +5 -4
  124. package/dist/cli/retrieval.js.map +1 -1
  125. package/dist/cli/sdk.js +4 -4
  126. package/dist/cli/sdk.js.map +1 -1
  127. package/dist/cli/trace.d.ts.map +1 -1
  128. package/dist/cli/trace.js +2 -1
  129. package/dist/cli/trace.js.map +1 -1
  130. package/dist/cli/workflow.js +2 -2
  131. package/dist/cli/workflow.js.map +1 -1
  132. package/dist/config/live-credentials.d.ts +57 -0
  133. package/dist/config/live-credentials.d.ts.map +1 -0
  134. package/dist/config/live-credentials.js +126 -0
  135. package/dist/config/live-credentials.js.map +1 -0
  136. package/dist/config/paths.d.ts +18 -0
  137. package/dist/config/paths.d.ts.map +1 -1
  138. package/dist/config/paths.js +25 -0
  139. package/dist/config/paths.js.map +1 -1
  140. package/dist/config/types.d.ts +44 -0
  141. package/dist/config/types.d.ts.map +1 -1
  142. package/dist/federation/a2a-types.js +1 -1
  143. package/dist/federation/a2a-types.js.map +1 -1
  144. package/dist/findings/verdicts.d.ts +241 -0
  145. package/dist/findings/verdicts.d.ts.map +1 -0
  146. package/dist/findings/verdicts.js +284 -0
  147. package/dist/findings/verdicts.js.map +1 -0
  148. package/dist/gateway/adapters.d.ts +65 -0
  149. package/dist/gateway/adapters.d.ts.map +1 -1
  150. package/dist/gateway/adapters.js +216 -10
  151. package/dist/gateway/adapters.js.map +1 -1
  152. package/dist/gateway/channel-directory.d.ts +31 -0
  153. package/dist/gateway/channel-directory.d.ts.map +1 -1
  154. package/dist/gateway/channel-directory.js +40 -0
  155. package/dist/gateway/channel-directory.js.map +1 -1
  156. package/dist/gateway/gateway-log.d.ts +1 -1
  157. package/dist/gateway/gateway-log.d.ts.map +1 -1
  158. package/dist/gateway/gateway-log.js.map +1 -1
  159. package/dist/gateway/hooks.d.ts +87 -19
  160. package/dist/gateway/hooks.d.ts.map +1 -1
  161. package/dist/gateway/hooks.js +62 -23
  162. package/dist/gateway/hooks.js.map +1 -1
  163. package/dist/gateway/inbound-media.d.ts +147 -0
  164. package/dist/gateway/inbound-media.d.ts.map +1 -0
  165. package/dist/gateway/inbound-media.js +317 -0
  166. package/dist/gateway/inbound-media.js.map +1 -0
  167. package/dist/gateway/inbox.d.ts +8 -1
  168. package/dist/gateway/inbox.d.ts.map +1 -1
  169. package/dist/gateway/inbox.js.map +1 -1
  170. package/dist/gateway/platform-config.d.ts +14 -0
  171. package/dist/gateway/platform-config.d.ts.map +1 -1
  172. package/dist/gateway/platform-config.js +26 -8
  173. package/dist/gateway/platform-config.js.map +1 -1
  174. package/dist/gateway/realtime.d.ts +114 -0
  175. package/dist/gateway/realtime.d.ts.map +1 -0
  176. package/dist/gateway/realtime.js +402 -0
  177. package/dist/gateway/realtime.js.map +1 -0
  178. package/dist/gateway/registry.d.ts +31 -0
  179. package/dist/gateway/registry.d.ts.map +1 -1
  180. package/dist/gateway/registry.js +224 -4
  181. package/dist/gateway/registry.js.map +1 -1
  182. package/dist/gateway/whatsapp/baileys-bridge.d.ts +11 -1
  183. package/dist/gateway/whatsapp/baileys-bridge.d.ts.map +1 -1
  184. package/dist/gateway/whatsapp/baileys-bridge.js +123 -4
  185. package/dist/gateway/whatsapp/baileys-bridge.js.map +1 -1
  186. package/dist/gateway/whatsapp/bridge.d.ts +6 -2
  187. package/dist/gateway/whatsapp/bridge.d.ts.map +1 -1
  188. package/dist/gateway/whatsapp/bridge.js.map +1 -1
  189. package/dist/index.js +8 -0
  190. package/dist/index.js.map +1 -1
  191. package/dist/inference/factory.d.ts +14 -0
  192. package/dist/inference/factory.d.ts.map +1 -1
  193. package/dist/inference/factory.js +17 -0
  194. package/dist/inference/factory.js.map +1 -1
  195. package/dist/inference/groq-adapter.d.ts +2 -0
  196. package/dist/inference/groq-adapter.d.ts.map +1 -1
  197. package/dist/inference/groq-adapter.js +16 -6
  198. package/dist/inference/groq-adapter.js.map +1 -1
  199. package/dist/inference/model-validator.d.ts +6 -1
  200. package/dist/inference/model-validator.d.ts.map +1 -1
  201. package/dist/inference/model-validator.js +7 -2
  202. package/dist/inference/model-validator.js.map +1 -1
  203. package/dist/inference/route-resolver.d.ts +116 -0
  204. package/dist/inference/route-resolver.d.ts.map +1 -0
  205. package/dist/inference/route-resolver.js +159 -0
  206. package/dist/inference/route-resolver.js.map +1 -0
  207. package/dist/inference/tools.d.ts.map +1 -1
  208. package/dist/inference/tools.js +29 -0
  209. package/dist/inference/tools.js.map +1 -1
  210. package/dist/learning/autonomy-policy.d.ts +18 -0
  211. package/dist/learning/autonomy-policy.d.ts.map +1 -1
  212. package/dist/learning/autonomy-policy.js +35 -0
  213. package/dist/learning/autonomy-policy.js.map +1 -1
  214. package/dist/learning/benchmark.d.ts.map +1 -1
  215. package/dist/learning/benchmark.js +3 -2
  216. package/dist/learning/benchmark.js.map +1 -1
  217. package/dist/learning/continuation.d.ts.map +1 -1
  218. package/dist/learning/continuation.js +2 -1
  219. package/dist/learning/continuation.js.map +1 -1
  220. package/dist/learning/cost-tracker.d.ts.map +1 -1
  221. package/dist/learning/cost-tracker.js +2 -1
  222. package/dist/learning/cost-tracker.js.map +1 -1
  223. package/dist/learning/deferred-task.d.ts.map +1 -1
  224. package/dist/learning/deferred-task.js +13 -4
  225. package/dist/learning/deferred-task.js.map +1 -1
  226. package/dist/learning/eval-framework.d.ts.map +1 -1
  227. package/dist/learning/eval-framework.js +2 -1
  228. package/dist/learning/eval-framework.js.map +1 -1
  229. package/dist/learning/long-form.d.ts.map +1 -1
  230. package/dist/learning/long-form.js +2 -1
  231. package/dist/learning/long-form.js.map +1 -1
  232. package/dist/learning/model-registry.d.ts.map +1 -1
  233. package/dist/learning/model-registry.js +2 -1
  234. package/dist/learning/model-registry.js.map +1 -1
  235. package/dist/learning/reasoning-cache.d.ts.map +1 -1
  236. package/dist/learning/reasoning-cache.js +2 -1
  237. package/dist/learning/reasoning-cache.js.map +1 -1
  238. package/dist/learning/reasoning-trace.d.ts +38 -2
  239. package/dist/learning/reasoning-trace.d.ts.map +1 -1
  240. package/dist/learning/reasoning-trace.js +91 -1
  241. package/dist/learning/reasoning-trace.js.map +1 -1
  242. package/dist/learning/resilient-call.d.ts.map +1 -1
  243. package/dist/learning/resilient-call.js +31 -18
  244. package/dist/learning/resilient-call.js.map +1 -1
  245. package/dist/learning/retrieval.d.ts.map +1 -1
  246. package/dist/learning/retrieval.js +2 -1
  247. package/dist/learning/retrieval.js.map +1 -1
  248. package/dist/learning/seeded-benchmark.d.ts +160 -0
  249. package/dist/learning/seeded-benchmark.d.ts.map +1 -0
  250. package/dist/learning/seeded-benchmark.js +321 -0
  251. package/dist/learning/seeded-benchmark.js.map +1 -0
  252. package/dist/learning/seeded-bugs.d.ts +142 -0
  253. package/dist/learning/seeded-bugs.d.ts.map +1 -0
  254. package/dist/learning/seeded-bugs.js +535 -0
  255. package/dist/learning/seeded-bugs.js.map +1 -0
  256. package/dist/learning/skill-store.d.ts.map +1 -1
  257. package/dist/learning/skill-store.js +30 -9
  258. package/dist/learning/skill-store.js.map +1 -1
  259. package/dist/learning/step-checkpoint.d.ts +127 -0
  260. package/dist/learning/step-checkpoint.d.ts.map +1 -0
  261. package/dist/learning/step-checkpoint.js +244 -0
  262. package/dist/learning/step-checkpoint.js.map +1 -0
  263. package/dist/mcp/catalog.js +2 -3
  264. package/dist/mcp/catalog.js.map +1 -1
  265. package/dist/mcp/manager.d.ts.map +1 -1
  266. package/dist/mcp/manager.js +5 -3
  267. package/dist/mcp/manager.js.map +1 -1
  268. package/dist/nlu/intent-confirm.d.ts +23 -1
  269. package/dist/nlu/intent-confirm.d.ts.map +1 -1
  270. package/dist/nlu/intent-confirm.js +85 -2
  271. package/dist/nlu/intent-confirm.js.map +1 -1
  272. package/dist/nlu/learnings.d.ts +7 -0
  273. package/dist/nlu/learnings.d.ts.map +1 -1
  274. package/dist/nlu/learnings.js +7 -0
  275. package/dist/nlu/learnings.js.map +1 -1
  276. package/dist/observability/debug-log.d.ts +250 -0
  277. package/dist/observability/debug-log.d.ts.map +1 -0
  278. package/dist/observability/debug-log.js +500 -0
  279. package/dist/observability/debug-log.js.map +1 -0
  280. package/dist/observability/event-bus.d.ts.map +1 -1
  281. package/dist/observability/event-bus.js +4 -1
  282. package/dist/observability/event-bus.js.map +1 -1
  283. package/dist/observability/otel.d.ts +278 -0
  284. package/dist/observability/otel.d.ts.map +1 -0
  285. package/dist/observability/otel.js +590 -0
  286. package/dist/observability/otel.js.map +1 -0
  287. package/dist/parity/drivers.d.ts +99 -0
  288. package/dist/parity/drivers.d.ts.map +1 -0
  289. package/dist/parity/drivers.js +1362 -0
  290. package/dist/parity/drivers.js.map +1 -0
  291. package/dist/parity/graph.d.ts +73 -0
  292. package/dist/parity/graph.d.ts.map +1 -0
  293. package/dist/parity/graph.js +162 -0
  294. package/dist/parity/graph.js.map +1 -0
  295. package/dist/parity/matrix.d.ts +105 -0
  296. package/dist/parity/matrix.d.ts.map +1 -0
  297. package/dist/parity/matrix.js +352 -0
  298. package/dist/parity/matrix.js.map +1 -0
  299. package/dist/parity/observation.d.ts +444 -0
  300. package/dist/parity/observation.d.ts.map +1 -0
  301. package/dist/parity/observation.js +333 -0
  302. package/dist/parity/observation.js.map +1 -0
  303. package/dist/parity/scenarios.d.ts +229 -0
  304. package/dist/parity/scenarios.d.ts.map +1 -0
  305. package/dist/parity/scenarios.js +175 -0
  306. package/dist/parity/scenarios.js.map +1 -0
  307. package/dist/parity/surfaces.d.ts +122 -0
  308. package/dist/parity/surfaces.d.ts.map +1 -0
  309. package/dist/parity/surfaces.js +190 -0
  310. package/dist/parity/surfaces.js.map +1 -0
  311. package/dist/runtime/fault-injection.d.ts +173 -0
  312. package/dist/runtime/fault-injection.d.ts.map +1 -0
  313. package/dist/runtime/fault-injection.js +281 -0
  314. package/dist/runtime/fault-injection.js.map +1 -0
  315. package/dist/skills/secret-capture.d.ts.map +1 -1
  316. package/dist/skills/secret-capture.js +9 -4
  317. package/dist/skills/secret-capture.js.map +1 -1
  318. package/dist/tools/child-agent-entry.d.ts +23 -0
  319. package/dist/tools/child-agent-entry.d.ts.map +1 -0
  320. package/dist/tools/child-agent-entry.js +129 -0
  321. package/dist/tools/child-agent-entry.js.map +1 -0
  322. package/dist/tools/child-agent-runtime.d.ts +124 -0
  323. package/dist/tools/child-agent-runtime.d.ts.map +1 -0
  324. package/dist/tools/child-agent-runtime.js +704 -0
  325. package/dist/tools/child-agent-runtime.js.map +1 -0
  326. package/dist/tools/coding-tools.d.ts.map +1 -1
  327. package/dist/tools/coding-tools.js +82 -10
  328. package/dist/tools/coding-tools.js.map +1 -1
  329. package/dist/tools/credentials-tool.d.ts +24 -0
  330. package/dist/tools/credentials-tool.d.ts.map +1 -0
  331. package/dist/tools/credentials-tool.js +125 -0
  332. package/dist/tools/credentials-tool.js.map +1 -0
  333. package/dist/tools/delegation-system.d.ts +31 -0
  334. package/dist/tools/delegation-system.d.ts.map +1 -1
  335. package/dist/tools/delegation-system.js +70 -9
  336. package/dist/tools/delegation-system.js.map +1 -1
  337. package/dist/tools/extract/docx.d.ts +27 -0
  338. package/dist/tools/extract/docx.d.ts.map +1 -0
  339. package/dist/tools/extract/docx.js +48 -0
  340. package/dist/tools/extract/docx.js.map +1 -0
  341. package/dist/tools/extract/html-text.d.ts +27 -0
  342. package/dist/tools/extract/html-text.d.ts.map +1 -0
  343. package/dist/tools/extract/html-text.js +86 -0
  344. package/dist/tools/extract/html-text.js.map +1 -0
  345. package/dist/tools/extract/pdf-ocr.d.ts +58 -0
  346. package/dist/tools/extract/pdf-ocr.d.ts.map +1 -0
  347. package/dist/tools/extract/pdf-ocr.js +116 -0
  348. package/dist/tools/extract/pdf-ocr.js.map +1 -0
  349. package/dist/tools/extract/pdf.d.ts +65 -0
  350. package/dist/tools/extract/pdf.d.ts.map +1 -0
  351. package/dist/tools/extract/pdf.js +197 -0
  352. package/dist/tools/extract/pdf.js.map +1 -0
  353. package/dist/tools/extract/pptx.d.ts +32 -0
  354. package/dist/tools/extract/pptx.d.ts.map +1 -0
  355. package/dist/tools/extract/pptx.js +77 -0
  356. package/dist/tools/extract/pptx.js.map +1 -0
  357. package/dist/tools/extract/xlsx.d.ts +47 -0
  358. package/dist/tools/extract/xlsx.d.ts.map +1 -0
  359. package/dist/tools/extract/xlsx.js +111 -0
  360. package/dist/tools/extract/xlsx.js.map +1 -0
  361. package/dist/tools/finding-tool.d.ts +76 -0
  362. package/dist/tools/finding-tool.d.ts.map +1 -0
  363. package/dist/tools/finding-tool.js +125 -0
  364. package/dist/tools/finding-tool.js.map +1 -0
  365. package/dist/tools/git-tool.d.ts +25 -7
  366. package/dist/tools/git-tool.d.ts.map +1 -1
  367. package/dist/tools/git-tool.js +155 -15
  368. package/dist/tools/git-tool.js.map +1 -1
  369. package/dist/tools/loop-project-context.d.ts.map +1 -1
  370. package/dist/tools/loop-project-context.js +16 -0
  371. package/dist/tools/loop-project-context.js.map +1 -1
  372. package/dist/tools/loop-route-feed.d.ts +57 -0
  373. package/dist/tools/loop-route-feed.d.ts.map +1 -0
  374. package/dist/tools/loop-route-feed.js +101 -0
  375. package/dist/tools/loop-route-feed.js.map +1 -0
  376. package/dist/tools/messaging-tools.d.ts +41 -11
  377. package/dist/tools/messaging-tools.d.ts.map +1 -1
  378. package/dist/tools/messaging-tools.js +104 -55
  379. package/dist/tools/messaging-tools.js.map +1 -1
  380. package/dist/tools/neutts-synth.d.ts +27 -3
  381. package/dist/tools/neutts-synth.d.ts.map +1 -1
  382. package/dist/tools/neutts-synth.js +57 -13
  383. package/dist/tools/neutts-synth.js.map +1 -1
  384. package/dist/tools/pipeline-tool.d.ts +43 -1
  385. package/dist/tools/pipeline-tool.d.ts.map +1 -1
  386. package/dist/tools/pipeline-tool.js +21 -4
  387. package/dist/tools/pipeline-tool.js.map +1 -1
  388. package/dist/tools/publish-tool.d.ts.map +1 -1
  389. package/dist/tools/publish-tool.js +76 -10
  390. package/dist/tools/publish-tool.js.map +1 -1
  391. package/dist/tools/read-extract.d.ts +116 -45
  392. package/dist/tools/read-extract.d.ts.map +1 -1
  393. package/dist/tools/read-extract.js +494 -158
  394. package/dist/tools/read-extract.js.map +1 -1
  395. package/dist/tools/registry.d.ts +23 -3
  396. package/dist/tools/registry.d.ts.map +1 -1
  397. package/dist/tools/registry.js +196 -29
  398. package/dist/tools/registry.js.map +1 -1
  399. package/dist/tools/run-terminal.d.ts +9 -0
  400. package/dist/tools/run-terminal.d.ts.map +1 -1
  401. package/dist/tools/run-terminal.js +80 -2
  402. package/dist/tools/run-terminal.js.map +1 -1
  403. package/dist/tools/subagent-refusal.d.ts +15 -0
  404. package/dist/tools/subagent-refusal.d.ts.map +1 -0
  405. package/dist/tools/subagent-refusal.js +18 -0
  406. package/dist/tools/subagent-refusal.js.map +1 -0
  407. package/dist/tools/subagent-spawner.d.ts +122 -0
  408. package/dist/tools/subagent-spawner.d.ts.map +1 -1
  409. package/dist/tools/subagent-spawner.js +249 -28
  410. package/dist/tools/subagent-spawner.js.map +1 -1
  411. package/dist/tools/tool-hooks.d.ts +177 -0
  412. package/dist/tools/tool-hooks.d.ts.map +1 -0
  413. package/dist/tools/tool-hooks.js +427 -0
  414. package/dist/tools/tool-hooks.js.map +1 -0
  415. package/dist/tools/tool-loop.d.ts +94 -5
  416. package/dist/tools/tool-loop.d.ts.map +1 -1
  417. package/dist/tools/tool-loop.js +315 -9
  418. package/dist/tools/tool-loop.js.map +1 -1
  419. package/dist/tools/tool-refusal.d.ts +68 -0
  420. package/dist/tools/tool-refusal.d.ts.map +1 -0
  421. package/dist/tools/tool-refusal.js +78 -0
  422. package/dist/tools/tool-refusal.js.map +1 -0
  423. package/dist/tools/toolsets.d.ts +8 -0
  424. package/dist/tools/toolsets.d.ts.map +1 -1
  425. package/dist/tools/toolsets.js +14 -4
  426. package/dist/tools/toolsets.js.map +1 -1
  427. package/dist/tools/vision-tools.d.ts +88 -83
  428. package/dist/tools/vision-tools.d.ts.map +1 -1
  429. package/dist/tools/vision-tools.js +134 -103
  430. package/dist/tools/vision-tools.js.map +1 -1
  431. package/dist/tools/worktree.d.ts +210 -0
  432. package/dist/tools/worktree.d.ts.map +1 -0
  433. package/dist/tools/worktree.js +374 -0
  434. package/dist/tools/worktree.js.map +1 -0
  435. package/dist/utils/format.d.ts +3 -0
  436. package/dist/utils/format.d.ts.map +1 -0
  437. package/dist/utils/format.js +32 -0
  438. package/dist/utils/format.js.map +1 -0
  439. package/dist/web-dashboard/attachment-extract.d.ts +64 -0
  440. package/dist/web-dashboard/attachment-extract.d.ts.map +1 -0
  441. package/dist/web-dashboard/attachment-extract.js +154 -0
  442. package/dist/web-dashboard/attachment-extract.js.map +1 -0
  443. package/dist/web-dashboard/chat-console.d.ts +108 -1
  444. package/dist/web-dashboard/chat-console.d.ts.map +1 -1
  445. package/dist/web-dashboard/chat-console.js +36 -0
  446. package/dist/web-dashboard/chat-console.js.map +1 -1
  447. package/dist/web-dashboard/hub-data.d.ts +37 -0
  448. package/dist/web-dashboard/hub-data.d.ts.map +1 -1
  449. package/dist/web-dashboard/hub-data.js +61 -1
  450. package/dist/web-dashboard/hub-data.js.map +1 -1
  451. package/dist/web-dashboard/server.d.ts +14 -0
  452. package/dist/web-dashboard/server.d.ts.map +1 -1
  453. package/dist/web-dashboard/server.js +247 -13
  454. package/dist/web-dashboard/server.js.map +1 -1
  455. package/dist/web-dashboard/src/types.d.ts +196 -48
  456. package/dist/web-dashboard/src/types.d.ts.map +1 -1
  457. package/dist/workflow/registry.js +1 -1
  458. package/dist/workflow/registry.js.map +1 -1
  459. package/package.json +22 -6
  460. package/src/web-dashboard/public/assets/{index-Cyd6tIew.css → index-XJjj2cBX.css} +1 -1
  461. package/src/web-dashboard/public/assets/index-YWF9FpwQ.js +207 -0
  462. package/src/web-dashboard/public/assets/index-YWF9FpwQ.js.map +1 -0
  463. package/src/web-dashboard/public/index.html +2 -2
  464. package/dist/tools/child-agent-worker.js +0 -212
  465. package/src/web-dashboard/public/assets/index-CjvoBhlz.js +0 -207
  466. package/src/web-dashboard/public/assets/index-CjvoBhlz.js.map +0 -1
@@ -0,0 +1,443 @@
1
+ /**
2
+ * Step hand-off — the durable record a FAILED step leaves for whoever runs next.
3
+ *
4
+ * WHY THIS EXISTS (the live NVDA-addon failure):
5
+ * Over 19 attempts on one WhatsApp ask the pipeline never produced the add-on,
6
+ * and every attempt started from an empty hand. The morning's traces show the
7
+ * shape of it: the same plan re-planned 18 times, the same three files "created"
8
+ * 18 times, and a 934s stall in the middle of the run that had a model change
9
+ * underneath it. The design says a broken task is handed to another model — and
10
+ * it is, WITHIN a step (`loop-executor`'s candidate walk). What did not exist is
11
+ * the record that survives the step. So the next candidate, the next turn and
12
+ * the next *run* each re-derived the same plan and re-attempted the same files,
13
+ * with nothing telling them that a previous attempt had already landed two of
14
+ * the three files.
15
+ *
16
+ * The four facts a hand-off carries, in the order they matter:
17
+ * 1. WHAT the step must produce (`declared`) — from the planner's
18
+ * `expectedFiles` / the goal's named deliverable, not from the model's
19
+ * self-report.
20
+ * 2. WHAT IS ALREADY ON DISK (`landed`) — re-derived from the filesystem on
21
+ * every read, never trusted from a previous write. A hand-off that
22
+ * remembered "installTasks.py: done" while the file was absent would
23
+ * recreate the exact false completion this exists to end.
24
+ * 3. WHAT IS STILL MISSING (`remaining`).
25
+ * 4. WHO TRIED AND WHY IT FAILED (`attempts`) — so the incoming model is told
26
+ * what was already attempted, not silently handed the same prompt.
27
+ *
28
+ * Keying (this is what makes a REWORDED ask resume):
29
+ * A step's key is the digest of its DECLARED ARTIFACTS, sorted, so the same
30
+ * deliverable written two different ways in one project maps to one hand-off.
31
+ * Only when a step declares no artifacts does the key fall back to a normalized
32
+ * digest of its description. `loadOpenHandoffs` is project-scoped for the same
33
+ * reason: a run that asks for the same thing in different words still finds the
34
+ * previous attempt, because it is looking at the project, not at the sentence.
35
+ *
36
+ * Deliberately deterministic and LLM-free, like the working-state ledger: facts
37
+ * and a compact block, no summarizer, no drift. Storage is
38
+ * `~/.nuvira/memory/step-handoffs.json` (honours NUVIRA_MEMORY_DIR /
39
+ * BUFF_MEMORY_DIR). Every operation is best-effort and must NEVER throw — a
40
+ * hand-off failure reports, it does not break a run.
41
+ */
42
+ import { envBuff, resolveNuviraHome } from '../config/paths.js';
43
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
44
+ import { createHash } from 'node:crypto';
45
+ import { join, resolve } from 'node:path';
46
+ import { verifyArtifacts } from './artifact-verification.js';
47
+ // ─── Constants ──────────────────────────────────────────────────────────────
48
+ const CURRENT_VERSION = 1;
49
+ /** Cap on remembered attempts per step (oldest drop first). */
50
+ export const MAX_ATTEMPTS = 10;
51
+ /** Cap on remembered steps in the whole file (oldest drop first). */
52
+ export const MAX_ENTRIES = 120;
53
+ /** Cap on the injected block — it rides in prompts, so it stays short. */
54
+ export const MAX_BLOCK_CHARS = 1_600;
55
+ /** Built-in artifacts a plan may name without the planner declaring them. */
56
+ const DELIVERABLE_EXTENSIONS = [
57
+ '.nvda-addon', '.zip', '.wheel', '.whl', '.vsix', '.tar.gz', '.tgz', '.jar', '.epub',
58
+ ];
59
+ // ─── Storage ────────────────────────────────────────────────────────────────
60
+ function memoryDir() {
61
+ return envBuff('MEMORY_DIR') || join(resolveNuviraHome(), 'memory');
62
+ }
63
+ function storePath() {
64
+ return join(memoryDir(), 'step-handoffs.json');
65
+ }
66
+ function readFileSafe() {
67
+ try {
68
+ if (!existsSync(storePath()))
69
+ return { version: CURRENT_VERSION, entries: {} };
70
+ const data = JSON.parse(readFileSync(storePath(), 'utf-8'));
71
+ if (!data || typeof data !== 'object' || !data.entries || typeof data.entries !== 'object') {
72
+ return { version: CURRENT_VERSION, entries: {} };
73
+ }
74
+ return data;
75
+ }
76
+ catch {
77
+ return { version: CURRENT_VERSION, entries: {} };
78
+ }
79
+ }
80
+ function writeFileSafe(data) {
81
+ try {
82
+ if (!existsSync(memoryDir()))
83
+ mkdirSync(memoryDir(), { recursive: true });
84
+ writeFileSync(storePath(), JSON.stringify(data, null, 2), 'utf-8');
85
+ }
86
+ catch {
87
+ // Best-effort — a hand-off write must never break a run.
88
+ }
89
+ }
90
+ /** Normalize a project path so one project always maps to one entry. */
91
+ export function normalizeProjectPath(projectPath) {
92
+ try {
93
+ return resolve(projectPath);
94
+ }
95
+ catch {
96
+ return projectPath;
97
+ }
98
+ }
99
+ function sha(text) {
100
+ return createHash('sha1').update(text).digest('hex').slice(0, 12);
101
+ }
102
+ /**
103
+ * Normalize a declared artifact path so two spellings of the same file collide:
104
+ * absolute or relative, with either slash, with surrounding quotes or whitespace.
105
+ * Deliberately does NOT resolve against a root — the stored key must be stable
106
+ * whether the caller passes `manifest.ini` or the absolute path.
107
+ */
108
+ function normalizeArtifact(declared) {
109
+ return declared
110
+ .trim()
111
+ .replace(/^['"]|['"]$/g, '')
112
+ .replace(/\\/g, '/')
113
+ .replace(/\/{2,}/g, '/')
114
+ .replace(/^\.\//, '')
115
+ .toLowerCase();
116
+ }
117
+ /**
118
+ * Lowercase, punctuation-free, whitespace-collapsed — so rewording still matches.
119
+ * Hyphens and underscores are JOINED rather than split: "add-on" and "addon"
120
+ * are the same word, and that is the pair a person varies most when re-asking.
121
+ */
122
+ function normalizeGoal(goal) {
123
+ return (goal || '')
124
+ .toLowerCase()
125
+ .replace(/[-_]+/g, '')
126
+ .replace(/[^a-z0-9]+/g, ' ')
127
+ .trim()
128
+ .replace(/\s+/g, ' ');
129
+ }
130
+ /**
131
+ * The stable key for a step.
132
+ *
133
+ * Artifacts win when there are any: the same deliverable asked for in different
134
+ * words yields the same key, which is the whole point (a reworded ask must
135
+ * resume). The description is the fallback, normalized so trivial rewording
136
+ * ("Package the addon" / "package the add-on") collapses to one key.
137
+ */
138
+ export function stepKeyFor(input) {
139
+ const artifacts = (input.declared ?? [])
140
+ .map(normalizeArtifact)
141
+ .filter(Boolean)
142
+ .sort();
143
+ if (artifacts.length > 0)
144
+ return `art:${sha(artifacts.join('\n'))}`;
145
+ const text = input.stepDescription?.trim() || input.goal?.trim() || 'step';
146
+ return `txt:${sha(normalizeGoal(text))}`;
147
+ }
148
+ /** The composite store key: project + step. Goal text is NOT part of it, on purpose. */
149
+ function entryKey(projectPath, stepKey) {
150
+ return `${normalizeProjectPath(projectPath)}\u0000${stepKey}`;
151
+ }
152
+ // ─── Reconciliation ─────────────────────────────────────────────────────────
153
+ /**
154
+ * Re-derive `landed` / `remaining` from the filesystem.
155
+ *
156
+ * This is the rule that keeps a hand-off honest: a stored field saying a file
157
+ * was written is a CLAIM, and the live failure was a run that believed one. So
158
+ * every read of a hand-off re-checks disk, and a file that has since vanished
159
+ * moves back into `remaining`.
160
+ */
161
+ export function reconcileHandoff(handoff) {
162
+ const declared = handoff.declared ?? [];
163
+ if (declared.length === 0)
164
+ return handoff;
165
+ try {
166
+ const check = verifyArtifacts(declared, handoff.projectPath, handoff.allowEmpty ? { allowEmpty: handoff.allowEmpty } : {});
167
+ const bad = new Set([...check.missing, ...check.empty].map(normalizeArtifact));
168
+ const landed = declared.filter((d) => !bad.has(normalizeArtifact(d)));
169
+ const remaining = declared.filter((d) => bad.has(normalizeArtifact(d)));
170
+ return { ...handoff, landed, remaining };
171
+ }
172
+ catch {
173
+ // An unreadable filesystem is not a verdict — keep the previous split.
174
+ return handoff;
175
+ }
176
+ }
177
+ // ─── API ────────────────────────────────────────────────────────────────────
178
+ /**
179
+ * Record one failed attempt at a step, and return the updated hand-off.
180
+ *
181
+ * Called wherever an attempt stops without finishing: a candidate failing in the
182
+ * loop's failover walk, a task failing in the pipeline, a deliverable that is
183
+ * missing after a step claimed success. A step that later succeeds should call
184
+ * {@link clearStepHandoff} so the next run does not inherit stale guidance.
185
+ */
186
+ export function recordStepHandoff(input) {
187
+ const projectPath = normalizeProjectPath(input.projectPath);
188
+ const stepKey = input.stepKey || stepKeyFor({
189
+ ...(input.declared ? { declared: input.declared } : {}),
190
+ stepDescription: input.stepDescription,
191
+ goal: input.goal,
192
+ });
193
+ const key = entryKey(projectPath, stepKey);
194
+ const data = readFileSafe();
195
+ const now = Date.now();
196
+ const declared = (input.declared ?? []).filter((d) => d && d.trim());
197
+ const prev = data.entries[key] ?? {
198
+ goal: input.goal,
199
+ projectPath,
200
+ stepKey,
201
+ stepDescription: input.stepDescription,
202
+ declared,
203
+ landed: [],
204
+ remaining: declared,
205
+ attempts: [],
206
+ updatedAt: now,
207
+ };
208
+ const attempt = {
209
+ at: now,
210
+ route: input.route,
211
+ kind: input.kind,
212
+ reason: (input.reason || '').replace(/\s+/g, ' ').trim().slice(0, 300),
213
+ ...(input.tokens ? { tokens: input.tokens } : {}),
214
+ };
215
+ const attempts = [...prev.attempts, attempt];
216
+ if (attempts.length > MAX_ATTEMPTS)
217
+ attempts.splice(0, attempts.length - MAX_ATTEMPTS);
218
+ const next = reconcileHandoff({
219
+ ...prev,
220
+ // A later statement of the same step wins: the planner may have learned the
221
+ // real file list on a retry, and the freshest declaration is the better one.
222
+ goal: input.goal || prev.goal,
223
+ stepDescription: input.stepDescription || prev.stepDescription,
224
+ declared: declared.length > 0 ? declared : prev.declared,
225
+ attempts,
226
+ updatedAt: now,
227
+ });
228
+ data.entries[key] = next;
229
+ prune(data);
230
+ writeFileSafe(data);
231
+ return next;
232
+ }
233
+ /** Drop the oldest entries once the file is over its cap. */
234
+ function prune(data) {
235
+ const entries = Object.entries(data.entries);
236
+ if (entries.length <= MAX_ENTRIES)
237
+ return;
238
+ entries.sort((a, b) => b[1].updatedAt - a[1].updatedAt);
239
+ data.entries = Object.fromEntries(entries.slice(0, MAX_ENTRIES));
240
+ }
241
+ /** Load one step's hand-off, reconciled against disk (null when none). */
242
+ export function loadStepHandoff(projectPath, stepKey) {
243
+ const data = readFileSafe();
244
+ const found = data.entries[entryKey(projectPath, stepKey)];
245
+ return found ? reconcileHandoff(found) : null;
246
+ }
247
+ /**
248
+ * Every hand-off for a project that still has work left, newest first.
249
+ *
250
+ * Project-scoped rather than goal-scoped on purpose: this is what lets a
251
+ * REWORDED ask resume. The caller asked the same thing of the same project, so
252
+ * the outstanding work is found by project, not by matching sentences.
253
+ *
254
+ * A hand-off whose `remaining` is empty is finished — it is filtered out here so
255
+ * a completed step is never presented as outstanding.
256
+ */
257
+ export function loadOpenHandoffs(projectPath, options = {}) {
258
+ const key = normalizeProjectPath(projectPath);
259
+ const data = readFileSafe();
260
+ const open = [];
261
+ for (const [k, value] of Object.entries(data.entries)) {
262
+ if (!k.startsWith(`${key}\u0000`))
263
+ continue;
264
+ const reconciled = reconcileHandoff(value);
265
+ // "Open" means a declared artifact is still missing — the only honest test.
266
+ if (reconciled.remaining.length === 0)
267
+ continue;
268
+ // A step with nothing declared and no recorded attempt is not outstanding
269
+ // work we can describe; it would only add prompt weight.
270
+ if (reconciled.declared.length === 0)
271
+ continue;
272
+ open.push(reconciled);
273
+ }
274
+ open.sort((a, b) => b.updatedAt - a.updatedAt);
275
+ const limit = options.limit ?? 5;
276
+ return open.slice(0, limit);
277
+ }
278
+ /** Forget one step's hand-off (call it when the step has genuinely finished). */
279
+ export function clearStepHandoff(projectPath, stepKey) {
280
+ const data = readFileSafe();
281
+ const key = entryKey(projectPath, stepKey);
282
+ if (!(key in data.entries))
283
+ return;
284
+ delete data.entries[key];
285
+ writeFileSafe(data);
286
+ }
287
+ /** Forget every hand-off for a project. */
288
+ export function clearProjectHandoffs(projectPath) {
289
+ const prefix = `${normalizeProjectPath(projectPath)}\u0000`;
290
+ const data = readFileSafe();
291
+ let changed = false;
292
+ for (const k of Object.keys(data.entries)) {
293
+ if (k.startsWith(prefix)) {
294
+ delete data.entries[k];
295
+ changed = true;
296
+ }
297
+ }
298
+ if (changed)
299
+ writeFileSafe(data);
300
+ }
301
+ // ─── Formatting (the injected block) ────────────────────────────────────────
302
+ /** `provider:model` → `provider` (the model name is noise when both are shown). */
303
+ function providerOf(route) {
304
+ const idx = route.indexOf(':');
305
+ return idx > 0 ? route.slice(0, idx) : route;
306
+ }
307
+ /**
308
+ * Format hand-offs as a compact, model-readable block ('' when there is nothing
309
+ * outstanding — a clean project must add no prompt weight).
310
+ *
311
+ * The instruction is blunt by design. The live failure was a run that re-derived
312
+ * a plan it already had and re-attempted files that already existed; "do NOT
313
+ * redo the files listed as already on disk" is the one sentence that changes
314
+ * that behaviour, so it is stated rather than implied.
315
+ */
316
+ export function formatHandoffs(handoffs, now = Date.now()) {
317
+ const open = handoffs.filter((h) => h.remaining.length > 0);
318
+ if (open.length === 0)
319
+ return '';
320
+ const lines = [
321
+ '[Hand-off — earlier attempts at this work did NOT finish. Continue from this state; do not start over.]',
322
+ ];
323
+ for (const h of open) {
324
+ const label = (h.stepDescription || h.goal || 'unfinished step').replace(/\s+/g, ' ').trim().slice(0, 160);
325
+ lines.push(`• ${label}`);
326
+ if (h.landed.length > 0) {
327
+ // Wrapped, not passed by reference: `Array.map` hands the callback
328
+ // (value, index, array), so `.map(shorten)` would pass the INDEX as the
329
+ // width and truncate every path to `…`.
330
+ lines.push(` ✅ already on disk (do NOT redo): ${h.landed.map((p) => shorten(p)).join(', ')}`);
331
+ }
332
+ lines.push(` ⬜ still missing: ${h.remaining.map((p) => shorten(p)).join(', ')}`);
333
+ const last = h.attempts[h.attempts.length - 1];
334
+ if (last) {
335
+ const age = relativeAge(last.at, now);
336
+ const what = last.kind === 'quality'
337
+ ? 'answered with its own reasoning instead of the work'
338
+ : last.kind === 'refused'
339
+ ? 'was refused by a tool gate'
340
+ : 'failed';
341
+ lines.push(` ⚠️ last attempt (${age}, ${providerOf(last.route)}) ${what}${last.reason ? `: ${last.reason}` : ''}`);
342
+ if (h.attempts.length > 1) {
343
+ lines.push(` ℹ️ ${h.attempts.length} attempts so far — the approaches above did not work; take a different one.`);
344
+ }
345
+ }
346
+ }
347
+ let block = lines.join('\n');
348
+ if (block.length > MAX_BLOCK_CHARS) {
349
+ block = `${block.slice(0, MAX_BLOCK_CHARS)}\n[hand-off truncated to fit the context budget]`;
350
+ }
351
+ return block;
352
+ }
353
+ /** Show the tail of a long path — the filename is the part that matters. */
354
+ function shorten(path, max = 60) {
355
+ const flat = path.replace(/\\/g, '/');
356
+ if (flat.length <= max)
357
+ return flat;
358
+ const tail = flat.split('/').slice(-2).join('/');
359
+ return tail.length <= max ? `…/${tail}` : `…${flat.slice(-max)}`;
360
+ }
361
+ function relativeAge(ts, now) {
362
+ const mins = Math.max(0, Math.round((now - ts) / 60_000));
363
+ if (mins < 1)
364
+ return 'just now';
365
+ if (mins < 60)
366
+ return `${mins}m ago`;
367
+ const hours = Math.round(mins / 60);
368
+ if (hours < 24)
369
+ return `${hours}h ago`;
370
+ return `${Math.round(hours / 24)}d ago`;
371
+ }
372
+ /**
373
+ * Convenience: the block a caller injects for a project, '' when clean.
374
+ * The single entry point every surface uses, so "load and reconcile" is one
375
+ * call rather than a convention each caller has to remember.
376
+ */
377
+ export function handoffBlockFor(projectPath, options = {}) {
378
+ try {
379
+ return formatHandoffs(loadOpenHandoffs(projectPath, options));
380
+ }
381
+ catch {
382
+ return '';
383
+ }
384
+ }
385
+ /**
386
+ * The artifacts a goal names but a plan may not have declared.
387
+ *
388
+ * A planner that forgets `expectedFiles` leaves the deliverable unverified —
389
+ * exactly the shape of the live failure, where the ask named
390
+ * `kuttaaddon.nvda-addon` and no step declared it. Pulling obvious deliverable
391
+ * paths out of the goal text gives the hand-off (and the verifier) something
392
+ * concrete to check even then. Best-effort and deliberately narrow: only paths
393
+ * with a file extension are taken, capped, and never invented.
394
+ */
395
+ export function deliverablesNamedIn(goal) {
396
+ const found = [];
397
+ const seen = new Set();
398
+ const push = (path) => {
399
+ const key = normalizeArtifact(path);
400
+ if (!path || seen.has(key))
401
+ return false;
402
+ seen.add(key);
403
+ found.push(path);
404
+ return found.length >= 8;
405
+ };
406
+ // 1. Anything with a file extension: `kuttaaddon.nvda-addon`, `report.pdf`.
407
+ // The extension group allows an INTERNAL hyphen, because the deliverable
408
+ // in the live failure was `.nvda-addon` — the one extension that matters
409
+ // here is the one a plain `[a-z0-9]` class cannot match.
410
+ const withExt = (goal || '').match(/[~./\w-]*[\w.-]+\.(?:[a-z0-9][a-z0-9-]{0,15})(?:\.[a-z0-9]{2,8})?/gi) ?? [];
411
+ for (const raw of withExt) {
412
+ const path = raw.replace(/^['"]|['"]$/g, '').trim();
413
+ if (!path || !path.includes('.'))
414
+ continue;
415
+ const lower = path.toLowerCase();
416
+ const interesting = DELIVERABLE_EXTENSIONS.some((ext) => lower.endsWith(ext)) ||
417
+ /\//.test(path) ||
418
+ /^(dockerfile|makefile)$/i.test(path);
419
+ if (!interesting)
420
+ continue;
421
+ if (push(path))
422
+ return found;
423
+ }
424
+ // 2. An ABSOLUTE destination with no extension — `Save this in folder
425
+ // /Users/dheeraj/Documents/kuttaaddon/`. This is the case the live ask
426
+ // actually used: it named a destination DIRECTORY and never named the
427
+ // package, so extension-matching alone found nothing to hold the run
428
+ // accountable to. Two or more segments, so a bare `/tmp` in prose is not
429
+ // mistaken for a deliverable. Directories satisfy existence, so these are
430
+ // verified (and re-opened on resume) by the same artifact check as files.
431
+ const absolute = (goal || '').match(/(?:~\/|\/)[\w.-]+(?:\/[\w.-]+)+\/?/g) ?? [];
432
+ for (const raw of absolute) {
433
+ const path = raw.replace(/[.,;:]+$/, '').trim();
434
+ if (!path || path.includes('.'))
435
+ continue; // extensions handled above
436
+ if (path.split('/').filter(Boolean).length < 2)
437
+ continue;
438
+ if (push(path))
439
+ return found;
440
+ }
441
+ return found;
442
+ }
443
+ //# sourceMappingURL=step-handoff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-handoff.js","sourceRoot":"","sources":["../../src/agents/step-handoff.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  /**
2
- * Agent command — Scaffold and manage custom agents for the agent-baba-d platform.
2
+ * Agent command — Scaffold and manage custom agents for the agent-nuvira platform.
3
3
  *
4
4
  * Usage:
5
5
  * nuvira agent create <name> — Create a new custom agent project from a template
6
6
  * nuvira agent list — List all discovered custom agent plugins
7
7
  * nuvira agent info <name> — Show details about a discovered agent plugin
8
8
  *
9
- * The `nuvira agent create` command scaffolds a new project using the @agent-baba-d/sdk
9
+ * The `nuvira agent create` command scaffolds a new project using the @agent-nuvira/sdk
10
10
  * package, providing a ready-to-develop custom agent with:
11
11
  * - package.json with SDK dependency
12
12
  * - TypeScript configuration
package/dist/cli/agent.js CHANGED
@@ -1,12 +1,12 @@
1
1
  /**
2
- * Agent command — Scaffold and manage custom agents for the agent-baba-d platform.
2
+ * Agent command — Scaffold and manage custom agents for the agent-nuvira platform.
3
3
  *
4
4
  * Usage:
5
5
  * nuvira agent create <name> — Create a new custom agent project from a template
6
6
  * nuvira agent list — List all discovered custom agent plugins
7
7
  * nuvira agent info <name> — Show details about a discovered agent plugin
8
8
  *
9
- * The `nuvira agent create` command scaffolds a new project using the @agent-baba-d/sdk
9
+ * The `nuvira agent create` command scaffolds a new project using the @agent-nuvira/sdk
10
10
  * package, providing a ready-to-develop custom agent with:
11
11
  * - package.json with SDK dependency
12
12
  * - TypeScript configuration
@@ -27,7 +27,7 @@ function generateAgentProject(name, agentName, description) {
27
27
  'package.json': JSON.stringify({
28
28
  name: name.toLowerCase().replace(/\s+/g, '-'),
29
29
  version: '1.0.0',
30
- description: `Custom agent-baba-d agent: ${description}`,
30
+ description: `Custom agent-nuvira agent: ${description}`,
31
31
  type: 'module',
32
32
  main: './dist/agent.js',
33
33
  scripts: {
@@ -37,7 +37,7 @@ function generateAgentProject(name, agentName, description) {
37
37
  dev: 'tsc --watch',
38
38
  },
39
39
  dependencies: {
40
- '@agent-baba-d/sdk': '^1.0.0',
40
+ '@agent-nuvira/sdk': '^1.0.1',
41
41
  },
42
42
  devDependencies: {
43
43
  typescript: '^5.3.0',
@@ -59,7 +59,7 @@ function generateAgentProject(name, agentName, description) {
59
59
  },
60
60
  include: ['src'],
61
61
  }, null, 2),
62
- 'src/agent.ts': `import { Agent, type AgentContext, type AgentResult, type LLMCallFn } from '@agent-baba-d/sdk';
62
+ 'src/agent.ts': `import { Agent, type AgentContext, type AgentResult, type LLMCallFn } from '@agent-nuvira/sdk';
63
63
 
64
64
  /**
65
65
  * ${className} — ${description}
@@ -109,7 +109,7 @@ import {
109
109
  createTestContext,
110
110
  createMockCallLLM,
111
111
  assertAgentResult,
112
- } from '@agent-baba-d/sdk/testing';
112
+ } from '@agent-nuvira/sdk/testing';
113
113
  import { ${className} } from '../src/agent.js';
114
114
 
115
115
  describe('${className}', () => {
@@ -190,7 +190,7 @@ npm run build
190
190
  npm test
191
191
  \`\`\`
192
192
 
193
- ## Usage in agent-baba-d
193
+ ## Usage in agent-nuvira
194
194
 
195
195
  Place the compiled agent in \`~/.nuvira/agents/\`:
196
196
 
@@ -218,14 +218,14 @@ function toPascalCase(str) {
218
218
  export class AgentCommand extends BaseCommand {
219
219
  create() {
220
220
  const command = new Command('agent')
221
- .description('Scaffold and manage custom agent-baba-d agents');
221
+ .description('Scaffold and manage custom agent-nuvira agents');
222
222
  // ── create ─────────────────────────────────────────────────────────────
223
223
  command
224
224
  .command('create')
225
225
  .description('Create a new custom agent project from a template')
226
226
  .argument('[name]', 'Agent project name (e.g., "my-code-reviewer")')
227
227
  .option('-n, --agent-name <name>', 'Agent class name (defaults to project name in PascalCase)')
228
- .option('-d, --description <desc>', 'Agent description', 'A custom agent-baba-d agent')
228
+ .option('-d, --description <desc>', 'Agent description', 'A custom agent-nuvira agent')
229
229
  .option('--dir <path>', 'Output directory (defaults to ./<name>)')
230
230
  .action(async (name, options) => {
231
231
  await this.createAgent(name, options || {});
@@ -267,7 +267,7 @@ export class AgentCommand extends BaseCommand {
267
267
  projectName = answer.name.trim();
268
268
  }
269
269
  const agentName = options?.agentName || projectName;
270
- const description = options?.description || 'A custom agent-baba-d agent';
270
+ const description = options?.description || 'A custom agent-nuvira agent';
271
271
  const projectDir = options?.dir || join(process.cwd(), projectName);
272
272
  if (existsSync(projectDir)) {
273
273
  logger.error(`Directory already exists: ${projectDir}`);
@@ -1 +1 @@
1
- {"version":3,"file":"benchmark.d.ts","sourceRoot":"","sources":["../../src/cli/benchmark.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAuB5C,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,MAAM,IAAI,OAAO;YA4DH,YAAY;IA4H1B;;;;;OAKG;YACW,mBAAmB;IA0KjC,OAAO,CAAC,SAAS;YA6BH,WAAW;CAqD1B"}
1
+ {"version":3,"file":"benchmark.d.ts","sourceRoot":"","sources":["../../src/cli/benchmark.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAuB5C,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,MAAM,IAAI,OAAO;YA4DH,YAAY;IA4H1B;;;;;OAKG;YACW,mBAAmB;IAiLjC,OAAO,CAAC,SAAS;YA6BH,WAAW;CAqD1B"}
@@ -18,7 +18,7 @@ import { BaseCommand } from './commands.js';
18
18
  import { PipelineBoard } from './pipeline-board.js';
19
19
  import { getEventBus, EventNames } from '../observability/event-bus.js';
20
20
  import { resolveProvider } from './router.js';
21
- import { resolveWorkingModel } from '../inference/model-validator.js';
21
+ import { resolveRoute } from '../inference/route-resolver.js';
22
22
  import { resolveDefaultModel } from '../inference/default-model-resolver.js';
23
23
  import { getAutoRouter } from '../learning/auto-router.js';
24
24
  import { buildAutoResolveOptions } from '../learning/resolve-options.js';
@@ -273,9 +273,16 @@ export class BenchmarkCommand extends BaseCommand {
273
273
  // which can be stale (deprecated gemini-2.0-flash-exp → 404) or a
274
274
  // placeholder (nim 'new-nim-model'). Validate against the provider's live
275
275
  // list and repair to a verified-working model so benchmark --routing
276
- // never benchmarks a model that 404s.
277
- const workingModel = await resolveWorkingModel(resolved.provider, pick.provider, pick.model);
278
- if (workingModel !== pick.model) {
276
+ // never benchmarks a model that 404s. resolveRoute prints the
277
+ // substitution itself, so this no longer repeats it.
278
+ const route = await resolveRoute({
279
+ providerType: pick.provider,
280
+ provider: resolved.provider,
281
+ model: pick.model,
282
+ source: 'benchmark',
283
+ });
284
+ const workingModel = route.model;
285
+ if (route.substituted) {
279
286
  logger.warn(` ♻️ Model '${pick.model}' unavailable on '${pick.provider}' — benchmarking verified '${workingModel}' instead.`);
280
287
  // Keep the dashboard audit trail accurate: re-record with the model
281
288
  // actually benchmarked, carrying the router's real complexity/score.