agent-nuvira 2.7.2 → 3.0.0

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 (402) hide show
  1. package/dist/agents/agents/writer-tool-calling.d.ts +14 -0
  2. package/dist/agents/agents/writer-tool-calling.d.ts.map +1 -1
  3. package/dist/agents/agents/writer-tool-calling.js +20 -0
  4. package/dist/agents/agents/writer-tool-calling.js.map +1 -1
  5. package/dist/agents/agents/writer.d.ts.map +1 -1
  6. package/dist/agents/agents/writer.js +15 -4
  7. package/dist/agents/agents/writer.js.map +1 -1
  8. package/dist/agents/edit-module.d.ts +7 -0
  9. package/dist/agents/edit-module.d.ts.map +1 -1
  10. package/dist/agents/edit-module.js +21 -6
  11. package/dist/agents/edit-module.js.map +1 -1
  12. package/dist/agents/orchestrator.d.ts +40 -0
  13. package/dist/agents/orchestrator.d.ts.map +1 -1
  14. package/dist/agents/orchestrator.js +116 -27
  15. package/dist/agents/orchestrator.js.map +1 -1
  16. package/dist/agents/tool-calling-agent.d.ts +19 -0
  17. package/dist/agents/tool-calling-agent.d.ts.map +1 -1
  18. package/dist/agents/tool-calling-agent.js +42 -2
  19. package/dist/agents/tool-calling-agent.js.map +1 -1
  20. package/dist/auth-api.d.ts +2 -0
  21. package/dist/auth-api.d.ts.map +1 -0
  22. package/dist/auth-api.js +61 -0
  23. package/dist/auth-api.js.map +1 -0
  24. package/dist/auth.test.d.ts +1 -0
  25. package/dist/auth.test.d.ts.map +1 -0
  26. package/dist/auth.test.js +3 -0
  27. package/dist/auth.test.js.map +1 -0
  28. package/dist/cli/chat.d.ts +66 -1
  29. package/dist/cli/chat.d.ts.map +1 -1
  30. package/dist/cli/chat.js +323 -77
  31. package/dist/cli/chat.js.map +1 -1
  32. package/dist/cli/cli-program.d.ts +6 -0
  33. package/dist/cli/cli-program.d.ts.map +1 -0
  34. package/dist/cli/cli-program.js +222 -0
  35. package/dist/cli/cli-program.js.map +1 -0
  36. package/dist/cli/edit.d.ts.map +1 -1
  37. package/dist/cli/edit.js +18 -3
  38. package/dist/cli/edit.js.map +1 -1
  39. package/dist/cli/execute.d.ts.map +1 -1
  40. package/dist/cli/execute.js +29 -5
  41. package/dist/cli/execute.js.map +1 -1
  42. package/dist/cli/failover-runner.d.ts +13 -0
  43. package/dist/cli/failover-runner.d.ts.map +1 -1
  44. package/dist/cli/failover-runner.js +11 -0
  45. package/dist/cli/failover-runner.js.map +1 -1
  46. package/dist/cli/gateway.d.ts +16 -0
  47. package/dist/cli/gateway.d.ts.map +1 -1
  48. package/dist/cli/gateway.js +108 -2
  49. package/dist/cli/gateway.js.map +1 -1
  50. package/dist/cli/loop-executor.d.ts.map +1 -1
  51. package/dist/cli/loop-executor.js +296 -20
  52. package/dist/cli/loop-executor.js.map +1 -1
  53. package/dist/cli/plan.d.ts.map +1 -1
  54. package/dist/cli/plan.js +20 -6
  55. package/dist/cli/plan.js.map +1 -1
  56. package/dist/cli/process-control.d.ts +10 -0
  57. package/dist/cli/process-control.d.ts.map +1 -1
  58. package/dist/cli/process-control.js +73 -7
  59. package/dist/cli/process-control.js.map +1 -1
  60. package/dist/cli/router.d.ts +16 -5
  61. package/dist/cli/router.d.ts.map +1 -1
  62. package/dist/cli/router.js +31 -206
  63. package/dist/cli/router.js.map +1 -1
  64. package/dist/config/paths.d.ts +23 -0
  65. package/dist/config/paths.d.ts.map +1 -1
  66. package/dist/config/paths.js +30 -0
  67. package/dist/config/paths.js.map +1 -1
  68. package/dist/config/provider-env.d.ts +37 -0
  69. package/dist/config/provider-env.d.ts.map +1 -0
  70. package/dist/config/provider-env.js +86 -0
  71. package/dist/config/provider-env.js.map +1 -0
  72. package/dist/context/history.d.ts.map +1 -1
  73. package/dist/context/history.js +24 -8
  74. package/dist/context/history.js.map +1 -1
  75. package/dist/context/session-recall.d.ts +30 -0
  76. package/dist/context/session-recall.d.ts.map +1 -1
  77. package/dist/context/session-recall.js +61 -0
  78. package/dist/context/session-recall.js.map +1 -1
  79. package/dist/file.js +0 -1
  80. package/dist/file.js.map +1 -1
  81. package/dist/gateway/adapters.d.ts +10 -0
  82. package/dist/gateway/adapters.d.ts.map +1 -1
  83. package/dist/gateway/adapters.js +4 -1
  84. package/dist/gateway/adapters.js.map +1 -1
  85. package/dist/gateway/dedup.d.ts +105 -0
  86. package/dist/gateway/dedup.d.ts.map +1 -0
  87. package/dist/gateway/dedup.js +160 -0
  88. package/dist/gateway/dedup.js.map +1 -0
  89. package/dist/gateway/heartbeat.d.ts +99 -0
  90. package/dist/gateway/heartbeat.d.ts.map +1 -0
  91. package/dist/gateway/heartbeat.js +122 -0
  92. package/dist/gateway/heartbeat.js.map +1 -0
  93. package/dist/gateway/inbox.d.ts +14 -1
  94. package/dist/gateway/inbox.d.ts.map +1 -1
  95. package/dist/gateway/inbox.js.map +1 -1
  96. package/dist/gateway/platform-config.d.ts +5 -0
  97. package/dist/gateway/platform-config.d.ts.map +1 -1
  98. package/dist/gateway/platform-config.js +8 -13
  99. package/dist/gateway/platform-config.js.map +1 -1
  100. package/dist/gateway/registry.d.ts +65 -0
  101. package/dist/gateway/registry.d.ts.map +1 -1
  102. package/dist/gateway/registry.js +307 -32
  103. package/dist/gateway/registry.js.map +1 -1
  104. package/dist/gateway/whatsapp/baileys-bridge.d.ts +11 -1
  105. package/dist/gateway/whatsapp/baileys-bridge.d.ts.map +1 -1
  106. package/dist/gateway/whatsapp/baileys-bridge.js +64 -1
  107. package/dist/gateway/whatsapp/baileys-bridge.js.map +1 -1
  108. package/dist/gateway/whatsapp/bridge.d.ts +4 -2
  109. package/dist/gateway/whatsapp/bridge.d.ts.map +1 -1
  110. package/dist/gateway/whatsapp/bridge.js.map +1 -1
  111. package/dist/index.js +1 -1
  112. package/dist/index.js.map +1 -1
  113. package/dist/inference/factory.d.ts +16 -0
  114. package/dist/inference/factory.d.ts.map +1 -1
  115. package/dist/inference/factory.js +42 -0
  116. package/dist/inference/factory.js.map +1 -1
  117. package/dist/inference/gemini-adapter.d.ts.map +1 -1
  118. package/dist/inference/gemini-adapter.js +3 -0
  119. package/dist/inference/gemini-adapter.js.map +1 -1
  120. package/dist/inference/interface.d.ts +12 -0
  121. package/dist/inference/interface.d.ts.map +1 -1
  122. package/dist/inference/local-adapter.d.ts +2 -0
  123. package/dist/inference/local-adapter.d.ts.map +1 -1
  124. package/dist/inference/local-adapter.js +36 -5
  125. package/dist/inference/local-adapter.js.map +1 -1
  126. package/dist/inference/model-catalog.d.ts +8 -0
  127. package/dist/inference/model-catalog.d.ts.map +1 -1
  128. package/dist/inference/model-catalog.js +40 -0
  129. package/dist/inference/model-catalog.js.map +1 -1
  130. package/dist/inference/model-probe.d.ts +7 -0
  131. package/dist/inference/model-probe.d.ts.map +1 -1
  132. package/dist/inference/model-probe.js +25 -7
  133. package/dist/inference/model-probe.js.map +1 -1
  134. package/dist/inference/native-tools.d.ts +8 -0
  135. package/dist/inference/native-tools.d.ts.map +1 -1
  136. package/dist/inference/native-tools.js +14 -3
  137. package/dist/inference/native-tools.js.map +1 -1
  138. package/dist/inference/tool-call-utils.d.ts +66 -7
  139. package/dist/inference/tool-call-utils.d.ts.map +1 -1
  140. package/dist/inference/tool-call-utils.js +134 -13
  141. package/dist/inference/tool-call-utils.js.map +1 -1
  142. package/dist/learning/auto-router.d.ts +21 -0
  143. package/dist/learning/auto-router.d.ts.map +1 -1
  144. package/dist/learning/auto-router.js +282 -21
  145. package/dist/learning/auto-router.js.map +1 -1
  146. package/dist/learning/context-budget.d.ts +133 -0
  147. package/dist/learning/context-budget.d.ts.map +1 -0
  148. package/dist/learning/context-budget.js +196 -0
  149. package/dist/learning/context-budget.js.map +1 -0
  150. package/dist/learning/cost-tracker.d.ts.map +1 -1
  151. package/dist/learning/cost-tracker.js +20 -8
  152. package/dist/learning/cost-tracker.js.map +1 -1
  153. package/dist/learning/eval-framework.d.ts.map +1 -1
  154. package/dist/learning/eval-framework.js +6 -2
  155. package/dist/learning/eval-framework.js.map +1 -1
  156. package/dist/learning/failure-bookkeeping.d.ts +41 -0
  157. package/dist/learning/failure-bookkeeping.d.ts.map +1 -1
  158. package/dist/learning/failure-bookkeeping.js +122 -4
  159. package/dist/learning/failure-bookkeeping.js.map +1 -1
  160. package/dist/learning/feedback.d.ts.map +1 -1
  161. package/dist/learning/feedback.js +19 -8
  162. package/dist/learning/feedback.js.map +1 -1
  163. package/dist/learning/model-first-router.d.ts.map +1 -1
  164. package/dist/learning/model-first-router.js +5 -11
  165. package/dist/learning/model-first-router.js.map +1 -1
  166. package/dist/learning/model-harness.d.ts +76 -0
  167. package/dist/learning/model-harness.d.ts.map +1 -0
  168. package/dist/learning/model-harness.js +119 -0
  169. package/dist/learning/model-harness.js.map +1 -0
  170. package/dist/learning/model-registry.d.ts +29 -0
  171. package/dist/learning/model-registry.d.ts.map +1 -1
  172. package/dist/learning/model-registry.js +129 -3
  173. package/dist/learning/model-registry.js.map +1 -1
  174. package/dist/learning/model-scoring.d.ts.map +1 -1
  175. package/dist/learning/model-scoring.js +6 -1
  176. package/dist/learning/model-scoring.js.map +1 -1
  177. package/dist/learning/model-selection.d.ts +15 -0
  178. package/dist/learning/model-selection.d.ts.map +1 -1
  179. package/dist/learning/model-selection.js +40 -1
  180. package/dist/learning/model-selection.js.map +1 -1
  181. package/dist/learning/provider-fallback.d.ts +12 -0
  182. package/dist/learning/provider-fallback.d.ts.map +1 -1
  183. package/dist/learning/provider-fallback.js +84 -0
  184. package/dist/learning/provider-fallback.js.map +1 -1
  185. package/dist/learning/provider-revival.d.ts +106 -0
  186. package/dist/learning/provider-revival.d.ts.map +1 -0
  187. package/dist/learning/provider-revival.js +154 -0
  188. package/dist/learning/provider-revival.js.map +1 -0
  189. package/dist/learning/quota-ledger.d.ts +64 -3
  190. package/dist/learning/quota-ledger.d.ts.map +1 -1
  191. package/dist/learning/quota-ledger.js +122 -9
  192. package/dist/learning/quota-ledger.js.map +1 -1
  193. package/dist/learning/resilient-call.d.ts +98 -0
  194. package/dist/learning/resilient-call.d.ts.map +1 -1
  195. package/dist/learning/resilient-call.js +252 -46
  196. package/dist/learning/resilient-call.js.map +1 -1
  197. package/dist/nlu/conversation-gate.d.ts +37 -0
  198. package/dist/nlu/conversation-gate.d.ts.map +1 -1
  199. package/dist/nlu/conversation-gate.js +49 -0
  200. package/dist/nlu/conversation-gate.js.map +1 -1
  201. package/dist/nlu/schema.d.ts +4 -4
  202. package/dist/observability/dag-bridge.d.ts +69 -0
  203. package/dist/observability/dag-bridge.d.ts.map +1 -0
  204. package/dist/observability/dag-bridge.js +56 -0
  205. package/dist/observability/dag-bridge.js.map +1 -0
  206. package/dist/observability/event-bus.d.ts +5 -10
  207. package/dist/observability/event-bus.d.ts.map +1 -1
  208. package/dist/observability/event-bus.js +10 -42
  209. package/dist/observability/event-bus.js.map +1 -1
  210. package/dist/routes/auth.d.ts +3 -0
  211. package/dist/routes/auth.d.ts.map +1 -0
  212. package/dist/routes/auth.js +41 -36
  213. package/dist/routes/auth.js.map +1 -0
  214. package/dist/skills/execution-audit.d.ts.map +1 -1
  215. package/dist/skills/execution-audit.js +17 -5
  216. package/dist/skills/execution-audit.js.map +1 -1
  217. package/dist/skills/sandbox-executor.d.ts +12 -1
  218. package/dist/skills/sandbox-executor.d.ts.map +1 -1
  219. package/dist/skills/sandbox-executor.js +28 -6
  220. package/dist/skills/sandbox-executor.js.map +1 -1
  221. package/dist/skills/secret-capture.d.ts +45 -1
  222. package/dist/skills/secret-capture.d.ts.map +1 -1
  223. package/dist/skills/secret-capture.js +82 -19
  224. package/dist/skills/secret-capture.js.map +1 -1
  225. package/dist/skills/skill-env-inventory.d.ts +79 -0
  226. package/dist/skills/skill-env-inventory.d.ts.map +1 -0
  227. package/dist/skills/skill-env-inventory.js +167 -0
  228. package/dist/skills/skill-env-inventory.js.map +1 -0
  229. package/dist/skills/skill-executor.d.ts +2 -0
  230. package/dist/skills/skill-executor.d.ts.map +1 -1
  231. package/dist/skills/skill-executor.js +19 -24
  232. package/dist/skills/skill-executor.js.map +1 -1
  233. package/dist/tools/ask-user.d.ts +14 -1
  234. package/dist/tools/ask-user.d.ts.map +1 -1
  235. package/dist/tools/ask-user.js +25 -1
  236. package/dist/tools/ask-user.js.map +1 -1
  237. package/dist/tools/followup-utils.d.ts +64 -0
  238. package/dist/tools/followup-utils.d.ts.map +1 -0
  239. package/dist/tools/followup-utils.js +158 -0
  240. package/dist/tools/followup-utils.js.map +1 -0
  241. package/dist/tools/memory-tools.d.ts +35 -0
  242. package/dist/tools/memory-tools.d.ts.map +1 -1
  243. package/dist/tools/memory-tools.js +76 -0
  244. package/dist/tools/memory-tools.js.map +1 -1
  245. package/dist/tools/pipeline-tool.d.ts.map +1 -1
  246. package/dist/tools/pipeline-tool.js +8 -3
  247. package/dist/tools/pipeline-tool.js.map +1 -1
  248. package/dist/tools/registry.d.ts +25 -12
  249. package/dist/tools/registry.d.ts.map +1 -1
  250. package/dist/tools/registry.js +31 -6
  251. package/dist/tools/registry.js.map +1 -1
  252. package/dist/tools/skill-tool.d.ts.map +1 -1
  253. package/dist/tools/skill-tool.js +52 -5
  254. package/dist/tools/skill-tool.js.map +1 -1
  255. package/dist/tools/tool-loop.d.ts +63 -1
  256. package/dist/tools/tool-loop.d.ts.map +1 -1
  257. package/dist/tools/tool-loop.js +305 -66
  258. package/dist/tools/tool-loop.js.map +1 -1
  259. package/dist/tools/toolsets.d.ts +19 -3
  260. package/dist/tools/toolsets.d.ts.map +1 -1
  261. package/dist/tools/toolsets.js +21 -5
  262. package/dist/tools/toolsets.js.map +1 -1
  263. package/dist/utils/env.d.ts.map +1 -1
  264. package/dist/utils/env.js +9 -13
  265. package/dist/utils/env.js.map +1 -1
  266. package/dist/web-dashboard/chat-console.d.ts +13 -1
  267. package/dist/web-dashboard/chat-console.d.ts.map +1 -1
  268. package/dist/web-dashboard/chat-console.js +16 -2
  269. package/dist/web-dashboard/chat-console.js.map +1 -1
  270. package/dist/web-dashboard/hub-data.d.ts +2 -0
  271. package/dist/web-dashboard/hub-data.d.ts.map +1 -1
  272. package/dist/web-dashboard/hub-data.js +4 -0
  273. package/dist/web-dashboard/hub-data.js.map +1 -1
  274. package/dist/web-dashboard/server.d.ts +6 -0
  275. package/dist/web-dashboard/server.d.ts.map +1 -1
  276. package/dist/web-dashboard/server.js +196 -3
  277. package/dist/web-dashboard/server.js.map +1 -1
  278. package/dist/web-dashboard/src/types.d.ts +31 -1
  279. package/dist/web-dashboard/src/types.d.ts.map +1 -1
  280. package/package.json +11 -1
  281. package/src/web-dashboard/public/assets/index-56yPnN_m.js +207 -0
  282. package/src/web-dashboard/public/assets/index-56yPnN_m.js.map +1 -0
  283. package/src/web-dashboard/public/assets/{index-C507EUWf.css → index-Cyd6tIew.css} +1 -1
  284. package/src/web-dashboard/public/index.html +2 -2
  285. package/dist/example.d.ts +0 -1
  286. package/dist/example.d.ts.map +0 -1
  287. package/dist/example.js +0 -3
  288. package/dist/example.js.map +0 -1
  289. package/dist/fresh.d.ts +0 -2
  290. package/dist/fresh.d.ts.map +0 -1
  291. package/dist/fresh.js +0 -2
  292. package/dist/fresh.js.map +0 -1
  293. package/dist/mcp/mcp-dashboard-oauth.d.ts +0 -94
  294. package/dist/mcp/mcp-dashboard-oauth.d.ts.map +0 -1
  295. package/dist/mcp/mcp-dashboard-oauth.js +0 -140
  296. package/dist/mcp/mcp-dashboard-oauth.js.map +0 -1
  297. package/dist/memory/background-sync.d.ts +0 -107
  298. package/dist/memory/background-sync.d.ts.map +0 -1
  299. package/dist/memory/background-sync.js +0 -242
  300. package/dist/memory/background-sync.js.map +0 -1
  301. package/dist/memory/cross-session.d.ts +0 -68
  302. package/dist/memory/cross-session.d.ts.map +0 -1
  303. package/dist/memory/cross-session.js +0 -153
  304. package/dist/memory/cross-session.js.map +0 -1
  305. package/dist/memory/drift-detector.d.ts +0 -76
  306. package/dist/memory/drift-detector.d.ts.map +0 -1
  307. package/dist/memory/drift-detector.js +0 -216
  308. package/dist/memory/drift-detector.js.map +0 -1
  309. package/dist/memory/enhanced-manager.d.ts +0 -105
  310. package/dist/memory/enhanced-manager.d.ts.map +0 -1
  311. package/dist/memory/enhanced-manager.js +0 -280
  312. package/dist/memory/enhanced-manager.js.map +0 -1
  313. package/dist/memory/session-extraction.d.ts +0 -93
  314. package/dist/memory/session-extraction.d.ts.map +0 -1
  315. package/dist/memory/session-extraction.js +0 -290
  316. package/dist/memory/session-extraction.js.map +0 -1
  317. package/dist/memory/sqlite-store.d.ts +0 -208
  318. package/dist/memory/sqlite-store.d.ts.map +0 -1
  319. package/dist/memory/sqlite-store.js +0 -556
  320. package/dist/memory/sqlite-store.js.map +0 -1
  321. package/dist/skills/daytona-executor.d.ts +0 -78
  322. package/dist/skills/daytona-executor.d.ts.map +0 -1
  323. package/dist/skills/daytona-executor.js +0 -256
  324. package/dist/skills/daytona-executor.js.map +0 -1
  325. package/dist/skills/modal-executor.d.ts +0 -81
  326. package/dist/skills/modal-executor.d.ts.map +0 -1
  327. package/dist/skills/modal-executor.js +0 -285
  328. package/dist/skills/modal-executor.js.map +0 -1
  329. package/dist/sync/inventory.d.ts +0 -1
  330. package/dist/sync/inventory.d.ts.map +0 -1
  331. package/dist/sync/inventory.js +0 -3
  332. package/dist/sync/inventory.js.map +0 -1
  333. package/dist/sync/validate.d.ts +0 -1
  334. package/dist/sync/validate.d.ts.map +0 -1
  335. package/dist/sync/validate.js +0 -3
  336. package/dist/sync/validate.js.map +0 -1
  337. package/dist/test.d.ts +0 -2
  338. package/dist/test.d.ts.map +0 -1
  339. package/dist/test.js +0 -3
  340. package/dist/test.js.map +0 -1
  341. package/dist/tools/browser-tool.d.ts +0 -206
  342. package/dist/tools/browser-tool.d.ts.map +0 -1
  343. package/dist/tools/browser-tool.js +0 -726
  344. package/dist/tools/browser-tool.js.map +0 -1
  345. package/dist/tools/delegate-tool.d.ts +0 -109
  346. package/dist/tools/delegate-tool.d.ts.map +0 -1
  347. package/dist/tools/delegate-tool.js +0 -185
  348. package/dist/tools/delegate-tool.js.map +0 -1
  349. package/dist/tools/delegation-state.d.ts +0 -87
  350. package/dist/tools/delegation-state.d.ts.map +0 -1
  351. package/dist/tools/delegation-state.js +0 -278
  352. package/dist/tools/delegation-state.js.map +0 -1
  353. package/dist/tools/desktop-ui.d.ts +0 -148
  354. package/dist/tools/desktop-ui.d.ts.map +0 -1
  355. package/dist/tools/desktop-ui.js +0 -486
  356. package/dist/tools/desktop-ui.js.map +0 -1
  357. package/dist/tools/image-video-tool.d.ts +0 -88
  358. package/dist/tools/image-video-tool.d.ts.map +0 -1
  359. package/dist/tools/image-video-tool.js +0 -276
  360. package/dist/tools/image-video-tool.js.map +0 -1
  361. package/dist/tools/kanban-cron-tools.d.ts +0 -92
  362. package/dist/tools/kanban-cron-tools.d.ts.map +0 -1
  363. package/dist/tools/kanban-cron-tools.js +0 -197
  364. package/dist/tools/kanban-cron-tools.js.map +0 -1
  365. package/dist/tools/messaging-tool.d.ts +0 -127
  366. package/dist/tools/messaging-tool.d.ts.map +0 -1
  367. package/dist/tools/messaging-tool.js +0 -314
  368. package/dist/tools/messaging-tool.js.map +0 -1
  369. package/dist/tools/modality/generic-caller.d.ts +0 -43
  370. package/dist/tools/modality/generic-caller.d.ts.map +0 -1
  371. package/dist/tools/modality/generic-caller.js +0 -254
  372. package/dist/tools/modality/generic-caller.js.map +0 -1
  373. package/dist/tools/modality/modality-catalog.d.ts +0 -134
  374. package/dist/tools/modality/modality-catalog.d.ts.map +0 -1
  375. package/dist/tools/modality/modality-catalog.js +0 -445
  376. package/dist/tools/modality/modality-catalog.js.map +0 -1
  377. package/dist/tools/modality/tool-router.d.ts +0 -81
  378. package/dist/tools/modality/tool-router.d.ts.map +0 -1
  379. package/dist/tools/modality/tool-router.js +0 -84
  380. package/dist/tools/modality/tool-router.js.map +0 -1
  381. package/dist/tools/security-tools.d.ts +0 -107
  382. package/dist/tools/security-tools.d.ts.map +0 -1
  383. package/dist/tools/security-tools.js +0 -264
  384. package/dist/tools/security-tools.js.map +0 -1
  385. package/dist/tools/ssh-tool.d.ts +0 -130
  386. package/dist/tools/ssh-tool.d.ts.map +0 -1
  387. package/dist/tools/ssh-tool.js +0 -328
  388. package/dist/tools/ssh-tool.js.map +0 -1
  389. package/dist/tools/tts-tool.d.ts +0 -91
  390. package/dist/tools/tts-tool.d.ts.map +0 -1
  391. package/dist/tools/tts-tool.js +0 -406
  392. package/dist/tools/tts-tool.js.map +0 -1
  393. package/dist/utils/shell-detection.d.ts +0 -124
  394. package/dist/utils/shell-detection.d.ts.map +0 -1
  395. package/dist/utils/shell-detection.js +0 -305
  396. package/dist/utils/shell-detection.js.map +0 -1
  397. package/dist/utils/windows-paths.d.ts +0 -185
  398. package/dist/utils/windows-paths.d.ts.map +0 -1
  399. package/dist/utils/windows-paths.js +0 -472
  400. package/dist/utils/windows-paths.js.map +0 -1
  401. package/src/web-dashboard/public/assets/index-C4frng1Q.js +0 -207
  402. package/src/web-dashboard/public/assets/index-C4frng1Q.js.map +0 -1
@@ -59,7 +59,18 @@ export interface SandboxExecutionResult {
59
59
  */
60
60
  export declare function executeInSandbox(scriptContent: string, scriptPath: string, env?: Record<string, string>, args?: string[], config?: Partial<SandboxConfig>): Promise<SandboxExecutionResult>;
61
61
  /**
62
- * Check if Docker is available and running.
62
+ * Check if Docker is available and RUNNING.
63
+ *
64
+ * `docker --version` only proves the CLI is installed — it succeeds with the
65
+ * daemon stopped, and every subsequent `docker run` then dies with exit code
66
+ * 125 ("Cannot connect to the Docker daemon"). Callers trust this answer to
67
+ * decide between the sandbox and a local fallback, so a CLI-only probe made a
68
+ * machine with Docker installed-but-not-running take the sandbox path, fail on
69
+ * every skill, and never fall back.
70
+ *
71
+ * So probe the DAEMON (`docker info`) and keep `--version` only to report the
72
+ * version string. A stopped daemon now reports `available: false` with the
73
+ * daemon's own error, which is exactly what enables the local fallback.
63
74
  */
64
75
  export declare function checkDockerAvailable(): Promise<{
65
76
  available: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox-executor.d.ts","sourceRoot":"","sources":["../../src/skills/sandbox-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAUH,MAAM,WAAW,aAAa;IAC5B,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IACzC,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACzE,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAiBD;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CACpC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,IAAI,CAAC,EAAE,MAAM,EAAE,EACf,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAC9B,OAAO,CAAC,sBAAsB,CAAC,CAsCjC;AAuMD;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC;IACpD,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAcD;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOtE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CASpE"}
1
+ {"version":3,"file":"sandbox-executor.d.ts","sourceRoot":"","sources":["../../src/skills/sandbox-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAUH,MAAM,WAAW,aAAa;IAC5B,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IACzC,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACzE,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAiBD;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CACpC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,IAAI,CAAC,EAAE,MAAM,EAAE,EACf,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAC9B,OAAO,CAAC,sBAAsB,CAAC,CAsCjC;AAuMD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC;IACpD,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CA2BD;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOtE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CASpE"}
@@ -248,16 +248,38 @@ function getRuntimeCommand(runtime) {
248
248
  }
249
249
  // ─── Docker Availability Check ───────────────────────────────────────────
250
250
  /**
251
- * Check if Docker is available and running.
251
+ * Check if Docker is available and RUNNING.
252
+ *
253
+ * `docker --version` only proves the CLI is installed — it succeeds with the
254
+ * daemon stopped, and every subsequent `docker run` then dies with exit code
255
+ * 125 ("Cannot connect to the Docker daemon"). Callers trust this answer to
256
+ * decide between the sandbox and a local fallback, so a CLI-only probe made a
257
+ * machine with Docker installed-but-not-running take the sandbox path, fail on
258
+ * every skill, and never fall back.
259
+ *
260
+ * So probe the DAEMON (`docker info`) and keep `--version` only to report the
261
+ * version string. A stopped daemon now reports `available: false` with the
262
+ * daemon's own error, which is exactly what enables the local fallback.
252
263
  */
253
264
  export async function checkDockerAvailable() {
254
265
  try {
255
- const result = await spawnDocker(['--version'], 5000);
256
- if (result.exitCode === 0) {
257
- const version = result.stdout.trim();
258
- return { available: true, version };
266
+ // 1. Is the CLI here at all? (cheap; gives us the version string)
267
+ const versionResult = await spawnDocker(['--version'], 5000);
268
+ if (versionResult.exitCode !== 0) {
269
+ return { available: false, error: versionResult.stderr.trim() || 'docker CLI not available' };
270
+ }
271
+ const version = versionResult.stdout.trim();
272
+ // 2. Is the DAEMON actually reachable? `docker info` fails (non-zero) when
273
+ // it is not, which is the distinction that matters to callers.
274
+ const infoResult = await spawnDocker(['info'], 5000);
275
+ if (infoResult.exitCode !== 0) {
276
+ return {
277
+ available: false,
278
+ version,
279
+ error: infoResult.stderr.trim() || 'Docker daemon is not running',
280
+ };
259
281
  }
260
- return { available: false, error: result.stderr };
282
+ return { available: true, version };
261
283
  }
262
284
  catch (err) {
263
285
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox-executor.js","sourceRoot":"","sources":["../../src/skills/sandbox-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sandbox-executor.js","sourceRoot":"","sources":["../../src/skills/sandbox-executor.ts"],"names":[],"mappings":"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"}
@@ -28,7 +28,21 @@ export interface CaptureResult {
28
28
  setupSkipped: boolean;
29
29
  /** Vars that were successfully stored. */
30
30
  storedVars: string[];
31
+ /**
32
+ * Vars REFUSED because they are provider credentials (see
33
+ * `isProviderEnvBlocked`). Reported separately from `missingNames` so a
34
+ * caller can say *why* nothing was stored instead of silently looping.
35
+ */
36
+ blockedNames?: string[];
31
37
  }
38
+ /** Why a save/delete did not take effect (absent when it succeeded). */
39
+ export type SecretWriteReason =
40
+ /** The var is a provider credential — configure it as a provider instead. */
41
+ 'provider-credential'
42
+ /** The name is not a valid env var identifier. */
43
+ | 'invalid-name'
44
+ /** The write/read failed at the filesystem layer. */
45
+ | 'write-failed';
32
46
  /**
33
47
  * Load all env vars from the .env file.
34
48
  */
@@ -47,9 +61,39 @@ export declare function getEnvVarValue(varName: string): string;
47
61
  * Save or update a value in ~/.nuvira/.env (or ~/.nuvira/.env).
48
62
  * Preserves existing lines, adds new ones at the end.
49
63
  */
50
- export declare function saveEnvValue(key: string, value: string): {
64
+ export declare function saveEnvValue(key: string, value: string, opts?: {
65
+ /**
66
+ * Permit storing a provider credential here. Defaults to FALSE: this is the
67
+ * SKILL-secret path, and a provider credential stored here would be
68
+ * advertised as available to skills while `skill-executor` deliberately
69
+ * blocks it from ever reaching them. Provider keys belong in provider
70
+ * setup (dashboard AdminPanel / `nuvira models`), where the router also
71
+ * learns the provider is credentialed.
72
+ */
73
+ allowProviderCredential?: boolean;
74
+ }): {
51
75
  success: boolean;
52
76
  path: string;
77
+ reason?: SecretWriteReason;
78
+ };
79
+ /**
80
+ * Remove an env var from the .env file.
81
+ *
82
+ * Rewrites the file keeping every other line — comments, blank lines and
83
+ * ordering — byte-for-byte, so deleting one secret never reshuffles the file
84
+ * a user hand-edited. Removes `KEY=...` in both plain and `export KEY=` forms,
85
+ * and drops only the FIRST match (a duplicate later in the file is a different
86
+ * line, and removing it too would be surprising).
87
+ *
88
+ * A missing file, or a key that was never there, is a SUCCESS: the caller's
89
+ * intent ("this var should not be set") already holds, and reporting failure
90
+ * would make the dashboard surface a pointless error.
91
+ */
92
+ export declare function deleteEnvValue(key: string): {
93
+ success: boolean;
94
+ path: string;
95
+ removed: boolean;
96
+ reason?: SecretWriteReason;
53
97
  };
54
98
  /**
55
99
  * Capture missing env vars interactively.
@@ -1 +1 @@
1
- {"version":3,"file":"secret-capture.d.ts","sourceRoot":"","sources":["../../src/skills/secret-capture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAUH,MAAM,WAAW,WAAW;IAC1B,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,qDAAqD;IACrD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,iDAAiD;IACjD,YAAY,EAAE,OAAO,CAAC;IACtB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AA0CD;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAapD;AAoBD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAO1D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAItD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAoD3F;AA4CD;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,WAAW,EAAE,EAC7B,OAAO,GAAE,KAAK,GAAG,WAAmB,GACnC,OAAO,CAAC,aAAa,CAAC,CAoExB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,eAAe,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GACtG,WAAW,EAAE,CA2Bf;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,eAAe,EAAE,MAAM,EAAE,GACxB,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAc7D"}
1
+ {"version":3,"file":"secret-capture.d.ts","sourceRoot":"","sources":["../../src/skills/secret-capture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AASH,MAAM,WAAW,WAAW;IAC1B,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,qDAAqD;IACrD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,iDAAiD;IACjD,YAAY,EAAE,OAAO,CAAC;IACtB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,wEAAwE;AACxE,MAAM,MAAM,iBAAiB;AAC3B,6EAA6E;AAC3E,qBAAqB;AACvB,kDAAkD;GAChD,cAAc;AAChB,qDAAqD;GACnD,cAAc,CAAC;AAwCnB;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAapD;AAoBD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAO1D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAItD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;IACJ;;;;;;;OAOG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CAC9B,GACL;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAAE,CA+DhE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAAE,CAwC5H;AA4CD;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,WAAW,EAAE,EAC7B,OAAO,GAAE,KAAK,GAAG,WAAmB,GACnC,OAAO,CAAC,aAAa,CAAC,CA8ExB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,eAAe,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GACtG,WAAW,EAAE,CA2Bf;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,eAAe,EAAE,MAAM,EAAE,GACxB,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAc7D"}
@@ -12,25 +12,20 @@
12
12
  * Hermes reference: tools/skills_tool.py:_capture_required_environment_variables()
13
13
  */
14
14
  import { existsSync, readFileSync } from 'fs';
15
- import { envBuff, resolveNuviraHome } from '../config/paths.js';
16
- import { join } from 'path';
17
- import { homedir } from 'os';
15
+ import { resolveNuviraEnvFile } from '../config/paths.js';
16
+ import { isProviderEnvBlocked } from '../config/provider-env.js';
18
17
  import { logger } from '../utils/logger.js';
19
18
  // ─── Env File Resolution ──────────────────────────────────────────────────
20
19
  /**
21
20
  * Resolve the path to the .env file.
22
- * Priority: NUVIRA_ENV_FILE > NUVIRA_ENV_FILE > ~/.nuvira/.env > ~/.nuvira/.env
21
+ * Priority: NUVIRA_ENV_FILE / BUFF_ENV_FILE > <active config dir>/.env
22
+ *
23
+ * Delegates to the shared resolver so secret capture agrees with loadEnv() and
24
+ * honours `NUVIRA_CONFIG_DIR` — a hardcoded `~/.nuvira/.env` here meant an
25
+ * isolated process could read AND write the real profile's credentials.
23
26
  */
24
27
  function envFilePath() {
25
- if (process.env.NUVIRA_ENV_FILE && process.env.NUVIRA_ENV_FILE.trim().length > 0)
26
- return process.env.NUVIRA_ENV_FILE;
27
- const override = envBuff('ENV_FILE');
28
- if (override && override.trim().length > 0)
29
- return override;
30
- const nuviraEnv = join(homedir(), '.nuvira', '.env');
31
- if (existsSync(nuviraEnv))
32
- return nuviraEnv;
33
- return join(resolveNuviraHome(), '.env');
28
+ return resolveNuviraEnvFile();
34
29
  }
35
30
  // ─── Core Functions ───────────────────────────────────────────────────────
36
31
  /**
@@ -124,13 +119,21 @@ export function getEnvVarValue(varName) {
124
119
  * Save or update a value in ~/.nuvira/.env (or ~/.nuvira/.env).
125
120
  * Preserves existing lines, adds new ones at the end.
126
121
  */
127
- export function saveEnvValue(key, value) {
122
+ export function saveEnvValue(key, value, opts = {}) {
128
123
  const path = envFilePath();
129
124
  const cleaned = value.replace(/[\r\n]/g, '');
130
125
  // Validate env var name
131
126
  if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key)) {
132
127
  logger.error(`Invalid environment variable name: ${key}`);
133
- return { success: false, path };
128
+ return { success: false, path, reason: 'invalid-name' };
129
+ }
130
+ // Provider credentials are refused unless a caller explicitly opts in.
131
+ // Without this the dashboard's 🔒 badge was decorative: the endpoint accepted
132
+ // the key and wrote it, so a "blocked" row could be saved through the API.
133
+ if (!opts.allowProviderCredential && isProviderEnvBlocked(key)) {
134
+ logger.warn(`Refusing to store ${key} as a skill secret — it is a provider credential. ` +
135
+ 'Configure it through provider setup instead.');
136
+ return { success: false, path, reason: 'provider-credential' };
134
137
  }
135
138
  const ENV_LINE_RE = /^(export\s+)?([A-Za-z_][A-Za-z0-9_]*)\s*=/;
136
139
  const pending = new Map();
@@ -170,7 +173,57 @@ export function saveEnvValue(key, value) {
170
173
  }
171
174
  catch (err) {
172
175
  logger.error(`Failed to write env file: ${err}`);
173
- return { success: false, path };
176
+ return { success: false, path, reason: 'write-failed' };
177
+ }
178
+ }
179
+ /**
180
+ * Remove an env var from the .env file.
181
+ *
182
+ * Rewrites the file keeping every other line — comments, blank lines and
183
+ * ordering — byte-for-byte, so deleting one secret never reshuffles the file
184
+ * a user hand-edited. Removes `KEY=...` in both plain and `export KEY=` forms,
185
+ * and drops only the FIRST match (a duplicate later in the file is a different
186
+ * line, and removing it too would be surprising).
187
+ *
188
+ * A missing file, or a key that was never there, is a SUCCESS: the caller's
189
+ * intent ("this var should not be set") already holds, and reporting failure
190
+ * would make the dashboard surface a pointless error.
191
+ */
192
+ export function deleteEnvValue(key) {
193
+ const path = envFilePath();
194
+ if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key)) {
195
+ return { success: false, path, removed: false, reason: 'invalid-name' };
196
+ }
197
+ if (!existsSync(path)) {
198
+ return { success: true, path, removed: false };
199
+ }
200
+ const ENV_LINE_RE = /^(export\s+)?([A-Za-z_][A-Za-z0-9_]*)\s*=/;
201
+ const lines = readFileSync(path, 'utf-8').split(/\r?\n/);
202
+ const kept = [];
203
+ let removed = false;
204
+ for (const rawLine of lines) {
205
+ const m = rawLine.match(ENV_LINE_RE);
206
+ if (!removed && m && m[2] === key) {
207
+ removed = true;
208
+ continue;
209
+ }
210
+ kept.push(rawLine);
211
+ }
212
+ if (!removed) {
213
+ return { success: true, path, removed: false };
214
+ }
215
+ try {
216
+ const { writeFileSync } = require('fs');
217
+ // Drop the trailing empty element left by the final newline, then re-add
218
+ // exactly one — matching saveEnvValue's file shape.
219
+ const body = kept.filter((l, i) => !(i === kept.length - 1 && l === '')).join('\n');
220
+ writeFileSync(path, body.length > 0 ? `${body}\n` : '', 'utf-8');
221
+ logger.debug(`Removed ${key} from ${path}`);
222
+ return { success: true, path, removed: true };
223
+ }
224
+ catch (err) {
225
+ logger.error(`Failed to write env file: ${err}`);
226
+ return { success: false, path, removed: false, reason: 'write-failed' };
174
227
  }
175
228
  }
176
229
  // ─── Interactive Capture ──────────────────────────────────────────────────
@@ -218,10 +271,11 @@ async function promptCli(entries) {
218
271
  */
219
272
  export async function captureSecrets(skillName, missingEntries, surface = 'cli') {
220
273
  if (missingEntries.length === 0) {
221
- return { missingNames: [], setupSkipped: false, storedVars: [] };
274
+ return { missingNames: [], setupSkipped: false, storedVars: [], blockedNames: [] };
222
275
  }
223
276
  const storedVars = [];
224
277
  const missingNames = [];
278
+ const blockedNames = [];
225
279
  let setupSkipped = false;
226
280
  // Filter out optional vars that aren't set — we'll prompt but allow skip
227
281
  const requiredMissing = missingEntries.filter(e => !e.optional);
@@ -244,7 +298,16 @@ export async function captureSecrets(skillName, missingEntries, surface = 'cli')
244
298
  for (const entry of missingEntries) {
245
299
  const value = answers.get(entry.name);
246
300
  if (value && value.length > 0) {
247
- saveEnvValue(entry.name, value);
301
+ const saved = saveEnvValue(entry.name, value);
302
+ if (!saved.success) {
303
+ // Refused (provider credential / invalid name). Do not claim it was
304
+ // stored, and do not silently set it in-process either — that would
305
+ // make the refusal meaningless for this run.
306
+ blockedNames.push(entry.name);
307
+ missingNames.push(entry.name);
308
+ logger.warn(`${entry.name} was not stored (${saved.reason ?? 'refused'})`);
309
+ continue;
310
+ }
248
311
  process.env[entry.name] = value; // Also set in current process
249
312
  storedVars.push(entry.name);
250
313
  logger.success(`Saved ${entry.name}`);
@@ -278,7 +341,7 @@ export async function captureSecrets(skillName, missingEntries, surface = 'cli')
278
341
  console.log('');
279
342
  }
280
343
  }
281
- return { missingNames, setupSkipped, storedVars };
344
+ return { missingNames, setupSkipped, storedVars, blockedNames };
282
345
  }
283
346
  /**
284
347
  * Check which required env vars are missing for a skill.
@@ -1 +1 @@
1
- {"version":3,"file":"secret-capture.js","sourceRoot":"","sources":["../../src/skills/secret-capture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAC,OAAO,EAAE,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAwB5C,6EAA6E;AAE7E;;;GAGG;AACH,SAAS,WAAW;IAClB,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QAC9E,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACrD,IAAI,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5C,OAAO,IAAI,CAAC,iBAAiB,EAAE,EAAE,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED,6EAA6E;AAE7E;;GAEG;AACH,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACrD,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IACpF,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,EAAE,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACrC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACtC,2BAA2B;IAC3B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC9C,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACnD,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;IACD,uBAAuB;IACvB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,IAAI,KAAK,CAAC,CAAC;QAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IACrD,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAC3B,MAAM,IAAI,GAA2B,EAAE,CAAC;IACxC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,KAAK,MAAM,OAAO,IAAI,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACjE,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,MAAM;gBAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,2CAA2C;IAC7C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,OAAe;IACvC,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAC3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,KAAK,MAAM,OAAO,IAAI,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACjE,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO;gBAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,+DAA+D;IAC/D,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IACxD,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,OAAO,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAClD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAC7D,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,KAAa;IACrD,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAE7C,wBAAwB;IACxB,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,CAAC,KAAK,CAAC,sCAAsC,GAAG,EAAE,CAAC,CAAC;QAC1D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAClC,CAAC;IAED,MAAM,WAAW,GAAG,2CAA2C,CAAC;IAChE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC1B,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,KAAK,MAAM,OAAO,IAAI,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACjE,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACrC,IAAI,CAAC,EAAE,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACf,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACrC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBAClB,SAAS;gBACX,CAAC;YACH,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,8BAA8B;IAC9B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,0BAA0B;IAC1B,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,CAAC;QACH,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IAED,IAAI,CAAC;QACH,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;QACtD,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,OAAO,IAAI,EAAE,CAAC,CAAC;QACxC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACjC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,6BAA6B,GAAG,EAAE,CAAC,CAAC;QACjD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAClC,CAAC;AACH,CAAC;AAED,6EAA6E;AAE7E;;;GAGG;AACH,KAAK,UAAU,SAAS,CACtB,OAAsB;IAEtB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE1C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QAE1C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACxC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU;YAC3C,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,yCAAyC;YACzC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAa,EAAE,EAAE;gBACxD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACxC,OAAO,GAAG,KAAK,CAAC,IAAI,sDAAsD,CAAC;gBAC7E,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CAAC,CAAC,CAAC;QAEJ,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,gDAAgD;QAChD,MAAM,CAAC,KAAK,CAAC,sBAAsB,GAAG,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,SAAiB,EACjB,cAA6B,EAC7B,UAA+B,KAAK;IAEpC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IACnE,CAAC;IAED,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,IAAI,YAAY,GAAG,KAAK,CAAC;IAEzB,yEAAyE;IACzE,MAAM,eAAe,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAChE,MAAM,eAAe,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAE/D,gCAAgC;IAChC,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,aAAa,SAAS,mCAAmC,CAAC,CAAC;QACvE,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;YACzC,IAAI,KAAK,CAAC,IAAI;gBAAE,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,oBAAoB;IACpB,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,cAAc,CAAC,CAAC;QAEhD,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,8BAA8B;gBAC/D,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC5B,MAAM,CAAC,OAAO,CAAC,SAAS,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACxC,CAAC;iBAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC1B,sCAAsC;gBACtC,MAAM,CAAC,IAAI,CAAC,wBAAwB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACN,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,iEAAiE;QACjE,wDAAwD;QACxD,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;YACnC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,4DAA4D;IAC5D,MAAM,oBAAoB,GAAG,YAAY,CAAC,MAAM,CAC9C,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CACnD,CAAC;IACF,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,YAAY,GAAG,IAAI,CAAC;QACpB,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,iDAAiD,SAAS,IAAI,CAAC,CAAC;YAC5E,KAAK,MAAM,IAAI,IAAI,oBAAoB,EAAE,CAAC;gBACxC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,YAAY,CAAC,CAAC;YAC7C,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;AACpD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,eAAuG;IAEvG,MAAM,OAAO,GAAkB,EAAE,CAAC;IAElC,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;QACpC,IAAI,IAAY,CAAC;QACjB,IAAI,MAAc,CAAC;QACnB,IAAI,IAAwB,CAAC;QAC7B,IAAI,QAAiB,CAAC;QAEtB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,GAAG,KAAK,CAAC;YACb,MAAM,GAAG,mBAAmB,IAAI,GAAG,CAAC;YACpC,IAAI,GAAG,SAAS,CAAC;YACjB,QAAQ,GAAG,KAAK,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YAClB,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,mBAAmB,IAAI,GAAG,CAAC;YACpD,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YAClB,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC;QACrC,CAAC;QAED,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,eAAyB;IAEzB,OAAO,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAChC,MAAM,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,WAA+B,CAAC;QACpC,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,CAAC;iBAAM,CAAC;gBACN,WAAW,GAAG,KAAK,CAAC;YACtB,CAAC;QACH,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"secret-capture.js","sourceRoot":"","sources":["../../src/skills/secret-capture.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Skill env-var inventory — the data behind the dashboard's environment
3
+ * variable editor.
4
+ *
5
+ * The editor (`web-dashboard/src/components/EnvVarEditor.tsx`) was written
6
+ * against exactly this shape (`name`, `value`, `isSet`, `requiredBy`,
7
+ * `description`, `isProviderCredential`) and had no producer: the write
8
+ * endpoint existed for skill secrets, but nothing ever reported which vars are
9
+ * wanted, which are set, or which rows are provider credentials. So the panel
10
+ * was unreachable and the credential boundary it draws was unenforced.
11
+ *
12
+ * ## The domain boundary (this is the supersede-or-extend decision)
13
+ *
14
+ * Three dashboard surfaces touch credentials and they do NOT overlap:
15
+ *
16
+ * - `AdminPanel` / provider setup → **provider** credentials
17
+ * (`OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, …). Writing one there is what
18
+ * makes the router see the provider as credentialed.
19
+ * - `PlatformsPage` / `PlatformConfigSection` → **platform** credentials
20
+ * (Twilio/SMTP/…), sourced from `PLATFORM_ENV_VARS`.
21
+ * - **this module** → **skill** env vars: the vars a skill declares it needs,
22
+ * which are injected into a skill execution and nothing else.
23
+ *
24
+ * The boundary is enforced, not advisory: a provider credential is reported
25
+ * here with `isProviderCredential: true` (so the user understands why the row
26
+ * is locked) and `saveEnvValue` refuses to write it through the skill path.
27
+ * Platform-owned vars are excluded entirely — they are editable in the surface
28
+ * that owns their semantics.
29
+ */
30
+ /** One row of the env-var editor. Structurally the component's `EnvVar`. */
31
+ export interface SkillEnvVarRow {
32
+ /** Variable name. */
33
+ name: string;
34
+ /** Masked value when set ('' when unset — a real value never leaves here). */
35
+ value: string;
36
+ /** Whether a non-empty value is persisted or present in the environment. */
37
+ isSet: boolean;
38
+ /** Installed skill that declares this var (absent for a hand-set secret). */
39
+ requiredBy?: string;
40
+ /** Skill description, used as the row's help text. */
41
+ description?: string;
42
+ /** True for provider credentials — shown 🔒 and not editable in this editor. */
43
+ isProviderCredential?: boolean;
44
+ }
45
+ export interface SkillEnvInventoryOptions {
46
+ /** Project root to scan for `.agents/skills` (defaults to cwd). */
47
+ projectRoot?: string;
48
+ /** Home dir to scan for `~/.nuvira/skills` (defaults to the real home). */
49
+ home?: string;
50
+ }
51
+ /**
52
+ * Build the editor's row set:
53
+ *
54
+ * 1. Every var REQUIRED by an installed hub skill (set or not) — these are
55
+ * the rows a user needs to act on, so an unset one must appear as ❌.
56
+ * 2. Every persisted .env var that is not a provider credential and not
57
+ * platform-owned — hand-set skill secrets, which would otherwise be
58
+ * invisible once written.
59
+ * 3. Provider credentials that are present in the file, flagged so the user
60
+ * sees the boundary instead of silently wondering where the key went.
61
+ *
62
+ * Never throws: a missing skills root or unreadable .env simply contributes
63
+ * nothing, because a broken inventory must not blank the page.
64
+ */
65
+ export declare function readSkillEnvInventory(opts?: SkillEnvInventoryOptions): SkillEnvVarRow[];
66
+ /**
67
+ * Can a SKILL actually consume this variable right now?
68
+ *
69
+ * This is what the editor's "🧪 Test" button asks — not "is this API key
70
+ * valid" (which would need a paid provider call per keystroke), but the
71
+ * question the panel can answer truthfully: *will a skill run see this value?*
72
+ * That is exactly the set of conditions `skill-tool` checks before executing,
73
+ * so the verdict matches what execution will really do.
74
+ */
75
+ export declare function probeSkillEnvVar(name: string): {
76
+ usable: boolean;
77
+ detail: string;
78
+ };
79
+ //# sourceMappingURL=skill-env-inventory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-env-inventory.d.ts","sourceRoot":"","sources":["../../src/skills/skill-env-inventory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAOH,4EAA4E;AAC5E,MAAM,WAAW,cAAc;IAC7B,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,KAAK,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,KAAK,EAAE,OAAO,CAAC;IACf,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAsBD,MAAM,WAAW,wBAAwB;IACvC,mEAAmE;IACnE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,GAAE,wBAA6B,GAClC,cAAc,EAAE,CAgElB;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAyBlF"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * Skill env-var inventory — the data behind the dashboard's environment
3
+ * variable editor.
4
+ *
5
+ * The editor (`web-dashboard/src/components/EnvVarEditor.tsx`) was written
6
+ * against exactly this shape (`name`, `value`, `isSet`, `requiredBy`,
7
+ * `description`, `isProviderCredential`) and had no producer: the write
8
+ * endpoint existed for skill secrets, but nothing ever reported which vars are
9
+ * wanted, which are set, or which rows are provider credentials. So the panel
10
+ * was unreachable and the credential boundary it draws was unenforced.
11
+ *
12
+ * ## The domain boundary (this is the supersede-or-extend decision)
13
+ *
14
+ * Three dashboard surfaces touch credentials and they do NOT overlap:
15
+ *
16
+ * - `AdminPanel` / provider setup → **provider** credentials
17
+ * (`OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, …). Writing one there is what
18
+ * makes the router see the provider as credentialed.
19
+ * - `PlatformsPage` / `PlatformConfigSection` → **platform** credentials
20
+ * (Twilio/SMTP/…), sourced from `PLATFORM_ENV_VARS`.
21
+ * - **this module** → **skill** env vars: the vars a skill declares it needs,
22
+ * which are injected into a skill execution and nothing else.
23
+ *
24
+ * The boundary is enforced, not advisory: a provider credential is reported
25
+ * here with `isProviderCredential: true` (so the user understands why the row
26
+ * is locked) and `saveEnvValue` refuses to write it through the skill path.
27
+ * Platform-owned vars are excluded entirely — they are editable in the surface
28
+ * that owns their semantics.
29
+ */
30
+ import { loadEnvFile, isEnvVarPersisted, getEnvVarValue } from './secret-capture.js';
31
+ import { readHubCatalog } from '../learning/hub-skill-catalog.js';
32
+ import { isProviderEnvBlocked } from '../config/provider-env.js';
33
+ import { PLATFORM_ENV_VARS } from '../gateway/channel-directory.js';
34
+ /** Every env var claimed by a messaging platform (owned by PlatformsPage). */
35
+ function platformOwnedVars() {
36
+ const out = new Set();
37
+ for (const vars of Object.values(PLATFORM_ENV_VARS)) {
38
+ for (const v of vars)
39
+ out.add(v);
40
+ }
41
+ return out;
42
+ }
43
+ /**
44
+ * Mask a secret for display. Mirrors `redactValue`'s intent (first/last 4) but
45
+ * is deliberately stricter here: the dashboard only ever needs to prove a value
46
+ * EXISTS, and a 4-char prefix of an API key is already meaningful.
47
+ */
48
+ function maskValue(value) {
49
+ if (value.length === 0)
50
+ return '';
51
+ if (value.length <= 8)
52
+ return '••••••••';
53
+ return `${value.slice(0, 3)}••••${value.slice(-2)}`;
54
+ }
55
+ /**
56
+ * Build the editor's row set:
57
+ *
58
+ * 1. Every var REQUIRED by an installed hub skill (set or not) — these are
59
+ * the rows a user needs to act on, so an unset one must appear as ❌.
60
+ * 2. Every persisted .env var that is not a provider credential and not
61
+ * platform-owned — hand-set skill secrets, which would otherwise be
62
+ * invisible once written.
63
+ * 3. Provider credentials that are present in the file, flagged so the user
64
+ * sees the boundary instead of silently wondering where the key went.
65
+ *
66
+ * Never throws: a missing skills root or unreadable .env simply contributes
67
+ * nothing, because a broken inventory must not blank the page.
68
+ */
69
+ export function readSkillEnvInventory(opts = {}) {
70
+ const rows = new Map();
71
+ const platformOwned = platformOwnedVars();
72
+ const put = (row) => {
73
+ // First writer wins so a provider-credential flag survives a later skill
74
+ // row for the same name (the skill row carries no flag).
75
+ if (rows.has(row.name)) {
76
+ const existing = rows.get(row.name);
77
+ existing.requiredBy ??= row.requiredBy;
78
+ existing.description ??= row.description;
79
+ existing.isProviderCredential ||= row.isProviderCredential;
80
+ return;
81
+ }
82
+ rows.set(row.name, row);
83
+ };
84
+ // ── 1. Declared by installed skills ──────────────────────────────────────
85
+ try {
86
+ const catalog = readHubCatalog(opts.projectRoot ?? process.cwd(), opts.home);
87
+ for (const skill of catalog) {
88
+ for (const name of skill.requiredEnvVars ?? []) {
89
+ const isSet = isEnvVarPersisted(name);
90
+ put({
91
+ name,
92
+ value: isSet ? maskValue(getEnvVarValue(name)) : '',
93
+ isSet,
94
+ requiredBy: skill.name,
95
+ description: skill.description,
96
+ isProviderCredential: isProviderEnvBlocked(name) || undefined,
97
+ });
98
+ }
99
+ }
100
+ }
101
+ catch {
102
+ // Best-effort — an unreadable catalog contributes nothing.
103
+ }
104
+ // ── 2 + 3. What is actually in the env file ─────────────────────────────
105
+ try {
106
+ for (const [name, rawValue] of Object.entries(loadEnvFile())) {
107
+ if (platformOwned.has(name))
108
+ continue; // owned by PlatformsPage
109
+ if (isProviderEnvBlocked(name)) {
110
+ put({
111
+ name,
112
+ value: maskValue(rawValue),
113
+ isSet: rawValue.length > 0,
114
+ description: 'Provider credential — manage this in provider setup, not here.',
115
+ isProviderCredential: true,
116
+ });
117
+ continue;
118
+ }
119
+ // `put` (not an unconditional set) so a skill-declared row keeps its
120
+ // `requiredBy` attribution.
121
+ put({
122
+ name,
123
+ value: maskValue(rawValue),
124
+ isSet: rawValue.length > 0,
125
+ });
126
+ }
127
+ }
128
+ catch {
129
+ // Best-effort.
130
+ }
131
+ return [...rows.values()].sort((a, b) => a.name.localeCompare(b.name));
132
+ }
133
+ /**
134
+ * Can a SKILL actually consume this variable right now?
135
+ *
136
+ * This is what the editor's "🧪 Test" button asks — not "is this API key
137
+ * valid" (which would need a paid provider call per keystroke), but the
138
+ * question the panel can answer truthfully: *will a skill run see this value?*
139
+ * That is exactly the set of conditions `skill-tool` checks before executing,
140
+ * so the verdict matches what execution will really do.
141
+ */
142
+ export function probeSkillEnvVar(name) {
143
+ if (isProviderEnvBlocked(name)) {
144
+ return {
145
+ usable: false,
146
+ detail: `${name} is a provider credential and is blocked from skill execution by design. ` +
147
+ 'Configure it in provider setup — skills never receive it.',
148
+ };
149
+ }
150
+ if (platformOwnedVars().has(name)) {
151
+ return {
152
+ usable: false,
153
+ detail: `${name} is a platform credential — configure it on the Platforms page.`,
154
+ };
155
+ }
156
+ if (!isEnvVarPersisted(name)) {
157
+ return {
158
+ usable: false,
159
+ detail: `${name} is not set. Add a value to make it available to skills.`,
160
+ };
161
+ }
162
+ return {
163
+ usable: true,
164
+ detail: `${name} is set and will be passed to skill executions that require it.`,
165
+ };
166
+ }
167
+ //# sourceMappingURL=skill-env-inventory.js.map