agent-nuvira 2.7.3 → 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 (366) 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/cli/chat.d.ts +55 -1
  21. package/dist/cli/chat.d.ts.map +1 -1
  22. package/dist/cli/chat.js +239 -63
  23. package/dist/cli/chat.js.map +1 -1
  24. package/dist/cli/cli-program.d.ts +6 -0
  25. package/dist/cli/cli-program.d.ts.map +1 -0
  26. package/dist/cli/cli-program.js +222 -0
  27. package/dist/cli/cli-program.js.map +1 -0
  28. package/dist/cli/edit.d.ts.map +1 -1
  29. package/dist/cli/edit.js +18 -3
  30. package/dist/cli/edit.js.map +1 -1
  31. package/dist/cli/execute.d.ts.map +1 -1
  32. package/dist/cli/execute.js +29 -5
  33. package/dist/cli/execute.js.map +1 -1
  34. package/dist/cli/failover-runner.d.ts +13 -0
  35. package/dist/cli/failover-runner.d.ts.map +1 -1
  36. package/dist/cli/failover-runner.js +11 -0
  37. package/dist/cli/failover-runner.js.map +1 -1
  38. package/dist/cli/gateway.d.ts +16 -0
  39. package/dist/cli/gateway.d.ts.map +1 -1
  40. package/dist/cli/gateway.js +108 -2
  41. package/dist/cli/gateway.js.map +1 -1
  42. package/dist/cli/loop-executor.d.ts.map +1 -1
  43. package/dist/cli/loop-executor.js +245 -12
  44. package/dist/cli/loop-executor.js.map +1 -1
  45. package/dist/cli/plan.d.ts.map +1 -1
  46. package/dist/cli/plan.js +20 -6
  47. package/dist/cli/plan.js.map +1 -1
  48. package/dist/cli/process-control.d.ts +10 -0
  49. package/dist/cli/process-control.d.ts.map +1 -1
  50. package/dist/cli/process-control.js +73 -7
  51. package/dist/cli/process-control.js.map +1 -1
  52. package/dist/cli/router.d.ts +16 -5
  53. package/dist/cli/router.d.ts.map +1 -1
  54. package/dist/cli/router.js +31 -206
  55. package/dist/cli/router.js.map +1 -1
  56. package/dist/config/paths.d.ts +23 -0
  57. package/dist/config/paths.d.ts.map +1 -1
  58. package/dist/config/paths.js +30 -0
  59. package/dist/config/paths.js.map +1 -1
  60. package/dist/config/provider-env.d.ts +37 -0
  61. package/dist/config/provider-env.d.ts.map +1 -0
  62. package/dist/config/provider-env.js +86 -0
  63. package/dist/config/provider-env.js.map +1 -0
  64. package/dist/context/history.d.ts.map +1 -1
  65. package/dist/context/history.js +24 -8
  66. package/dist/context/history.js.map +1 -1
  67. package/dist/context/session-recall.d.ts +30 -0
  68. package/dist/context/session-recall.d.ts.map +1 -1
  69. package/dist/context/session-recall.js +61 -0
  70. package/dist/context/session-recall.js.map +1 -1
  71. package/dist/file.js +0 -1
  72. package/dist/file.js.map +1 -1
  73. package/dist/gateway/adapters.d.ts +10 -0
  74. package/dist/gateway/adapters.d.ts.map +1 -1
  75. package/dist/gateway/adapters.js +4 -1
  76. package/dist/gateway/adapters.js.map +1 -1
  77. package/dist/gateway/dedup.d.ts +105 -0
  78. package/dist/gateway/dedup.d.ts.map +1 -0
  79. package/dist/gateway/dedup.js +160 -0
  80. package/dist/gateway/dedup.js.map +1 -0
  81. package/dist/gateway/heartbeat.d.ts +99 -0
  82. package/dist/gateway/heartbeat.d.ts.map +1 -0
  83. package/dist/gateway/heartbeat.js +122 -0
  84. package/dist/gateway/heartbeat.js.map +1 -0
  85. package/dist/gateway/inbox.d.ts +14 -1
  86. package/dist/gateway/inbox.d.ts.map +1 -1
  87. package/dist/gateway/inbox.js.map +1 -1
  88. package/dist/gateway/platform-config.d.ts +5 -0
  89. package/dist/gateway/platform-config.d.ts.map +1 -1
  90. package/dist/gateway/platform-config.js +8 -13
  91. package/dist/gateway/platform-config.js.map +1 -1
  92. package/dist/gateway/registry.d.ts +47 -0
  93. package/dist/gateway/registry.d.ts.map +1 -1
  94. package/dist/gateway/registry.js +227 -21
  95. package/dist/gateway/registry.js.map +1 -1
  96. package/dist/gateway/whatsapp/baileys-bridge.d.ts +11 -1
  97. package/dist/gateway/whatsapp/baileys-bridge.d.ts.map +1 -1
  98. package/dist/gateway/whatsapp/baileys-bridge.js +64 -1
  99. package/dist/gateway/whatsapp/baileys-bridge.js.map +1 -1
  100. package/dist/gateway/whatsapp/bridge.d.ts +4 -2
  101. package/dist/gateway/whatsapp/bridge.d.ts.map +1 -1
  102. package/dist/gateway/whatsapp/bridge.js.map +1 -1
  103. package/dist/index.js +1 -1
  104. package/dist/index.js.map +1 -1
  105. package/dist/inference/factory.d.ts +16 -0
  106. package/dist/inference/factory.d.ts.map +1 -1
  107. package/dist/inference/factory.js +42 -0
  108. package/dist/inference/factory.js.map +1 -1
  109. package/dist/inference/gemini-adapter.d.ts.map +1 -1
  110. package/dist/inference/gemini-adapter.js +3 -0
  111. package/dist/inference/gemini-adapter.js.map +1 -1
  112. package/dist/inference/interface.d.ts +12 -0
  113. package/dist/inference/interface.d.ts.map +1 -1
  114. package/dist/inference/local-adapter.d.ts +2 -0
  115. package/dist/inference/local-adapter.d.ts.map +1 -1
  116. package/dist/inference/local-adapter.js +36 -5
  117. package/dist/inference/local-adapter.js.map +1 -1
  118. package/dist/inference/native-tools.d.ts +8 -0
  119. package/dist/inference/native-tools.d.ts.map +1 -1
  120. package/dist/inference/native-tools.js +14 -3
  121. package/dist/inference/native-tools.js.map +1 -1
  122. package/dist/inference/tool-call-utils.d.ts +66 -7
  123. package/dist/inference/tool-call-utils.d.ts.map +1 -1
  124. package/dist/inference/tool-call-utils.js +134 -13
  125. package/dist/inference/tool-call-utils.js.map +1 -1
  126. package/dist/learning/auto-router.d.ts.map +1 -1
  127. package/dist/learning/auto-router.js +90 -5
  128. package/dist/learning/auto-router.js.map +1 -1
  129. package/dist/learning/context-budget.d.ts +133 -0
  130. package/dist/learning/context-budget.d.ts.map +1 -0
  131. package/dist/learning/context-budget.js +196 -0
  132. package/dist/learning/context-budget.js.map +1 -0
  133. package/dist/learning/cost-tracker.d.ts.map +1 -1
  134. package/dist/learning/cost-tracker.js +20 -8
  135. package/dist/learning/cost-tracker.js.map +1 -1
  136. package/dist/learning/eval-framework.d.ts.map +1 -1
  137. package/dist/learning/eval-framework.js +6 -2
  138. package/dist/learning/eval-framework.js.map +1 -1
  139. package/dist/learning/failure-bookkeeping.d.ts +19 -0
  140. package/dist/learning/failure-bookkeeping.d.ts.map +1 -1
  141. package/dist/learning/failure-bookkeeping.js +67 -2
  142. package/dist/learning/failure-bookkeeping.js.map +1 -1
  143. package/dist/learning/feedback.d.ts.map +1 -1
  144. package/dist/learning/feedback.js +19 -8
  145. package/dist/learning/feedback.js.map +1 -1
  146. package/dist/learning/model-harness.d.ts +76 -0
  147. package/dist/learning/model-harness.d.ts.map +1 -0
  148. package/dist/learning/model-harness.js +119 -0
  149. package/dist/learning/model-harness.js.map +1 -0
  150. package/dist/learning/model-selection.d.ts +15 -0
  151. package/dist/learning/model-selection.d.ts.map +1 -1
  152. package/dist/learning/model-selection.js +27 -1
  153. package/dist/learning/model-selection.js.map +1 -1
  154. package/dist/learning/provider-fallback.d.ts +12 -0
  155. package/dist/learning/provider-fallback.d.ts.map +1 -1
  156. package/dist/learning/provider-fallback.js +74 -0
  157. package/dist/learning/provider-fallback.js.map +1 -1
  158. package/dist/learning/provider-revival.d.ts +106 -0
  159. package/dist/learning/provider-revival.d.ts.map +1 -0
  160. package/dist/learning/provider-revival.js +154 -0
  161. package/dist/learning/provider-revival.js.map +1 -0
  162. package/dist/learning/resilient-call.d.ts.map +1 -1
  163. package/dist/learning/resilient-call.js +48 -3
  164. package/dist/learning/resilient-call.js.map +1 -1
  165. package/dist/nlu/conversation-gate.d.ts +37 -0
  166. package/dist/nlu/conversation-gate.d.ts.map +1 -1
  167. package/dist/nlu/conversation-gate.js +49 -0
  168. package/dist/nlu/conversation-gate.js.map +1 -1
  169. package/dist/nlu/schema.d.ts +2 -2
  170. package/dist/observability/dag-bridge.d.ts +69 -0
  171. package/dist/observability/dag-bridge.d.ts.map +1 -0
  172. package/dist/observability/dag-bridge.js +56 -0
  173. package/dist/observability/dag-bridge.js.map +1 -0
  174. package/dist/observability/event-bus.d.ts +5 -10
  175. package/dist/observability/event-bus.d.ts.map +1 -1
  176. package/dist/observability/event-bus.js +10 -42
  177. package/dist/observability/event-bus.js.map +1 -1
  178. package/dist/skills/execution-audit.d.ts.map +1 -1
  179. package/dist/skills/execution-audit.js +17 -5
  180. package/dist/skills/execution-audit.js.map +1 -1
  181. package/dist/skills/sandbox-executor.d.ts +12 -1
  182. package/dist/skills/sandbox-executor.d.ts.map +1 -1
  183. package/dist/skills/sandbox-executor.js +28 -6
  184. package/dist/skills/sandbox-executor.js.map +1 -1
  185. package/dist/skills/secret-capture.d.ts +45 -1
  186. package/dist/skills/secret-capture.d.ts.map +1 -1
  187. package/dist/skills/secret-capture.js +82 -19
  188. package/dist/skills/secret-capture.js.map +1 -1
  189. package/dist/skills/skill-env-inventory.d.ts +79 -0
  190. package/dist/skills/skill-env-inventory.d.ts.map +1 -0
  191. package/dist/skills/skill-env-inventory.js +167 -0
  192. package/dist/skills/skill-env-inventory.js.map +1 -0
  193. package/dist/skills/skill-executor.d.ts +2 -0
  194. package/dist/skills/skill-executor.d.ts.map +1 -1
  195. package/dist/skills/skill-executor.js +19 -24
  196. package/dist/skills/skill-executor.js.map +1 -1
  197. package/dist/tools/ask-user.d.ts +14 -1
  198. package/dist/tools/ask-user.d.ts.map +1 -1
  199. package/dist/tools/ask-user.js +25 -1
  200. package/dist/tools/ask-user.js.map +1 -1
  201. package/dist/tools/followup-utils.d.ts +64 -0
  202. package/dist/tools/followup-utils.d.ts.map +1 -0
  203. package/dist/tools/followup-utils.js +158 -0
  204. package/dist/tools/followup-utils.js.map +1 -0
  205. package/dist/tools/memory-tools.d.ts +35 -0
  206. package/dist/tools/memory-tools.d.ts.map +1 -1
  207. package/dist/tools/memory-tools.js +76 -0
  208. package/dist/tools/memory-tools.js.map +1 -1
  209. package/dist/tools/pipeline-tool.d.ts.map +1 -1
  210. package/dist/tools/pipeline-tool.js +8 -3
  211. package/dist/tools/pipeline-tool.js.map +1 -1
  212. package/dist/tools/registry.d.ts +25 -12
  213. package/dist/tools/registry.d.ts.map +1 -1
  214. package/dist/tools/registry.js +31 -6
  215. package/dist/tools/registry.js.map +1 -1
  216. package/dist/tools/skill-tool.d.ts.map +1 -1
  217. package/dist/tools/skill-tool.js +52 -5
  218. package/dist/tools/skill-tool.js.map +1 -1
  219. package/dist/tools/tool-loop.d.ts +63 -1
  220. package/dist/tools/tool-loop.d.ts.map +1 -1
  221. package/dist/tools/tool-loop.js +305 -66
  222. package/dist/tools/tool-loop.js.map +1 -1
  223. package/dist/tools/toolsets.d.ts +19 -3
  224. package/dist/tools/toolsets.d.ts.map +1 -1
  225. package/dist/tools/toolsets.js +21 -5
  226. package/dist/tools/toolsets.js.map +1 -1
  227. package/dist/utils/env.d.ts.map +1 -1
  228. package/dist/utils/env.js +9 -13
  229. package/dist/utils/env.js.map +1 -1
  230. package/dist/web-dashboard/chat-console.d.ts +13 -1
  231. package/dist/web-dashboard/chat-console.d.ts.map +1 -1
  232. package/dist/web-dashboard/chat-console.js +16 -2
  233. package/dist/web-dashboard/chat-console.js.map +1 -1
  234. package/dist/web-dashboard/hub-data.d.ts +2 -0
  235. package/dist/web-dashboard/hub-data.d.ts.map +1 -1
  236. package/dist/web-dashboard/hub-data.js +4 -0
  237. package/dist/web-dashboard/hub-data.js.map +1 -1
  238. package/dist/web-dashboard/server.d.ts +6 -0
  239. package/dist/web-dashboard/server.d.ts.map +1 -1
  240. package/dist/web-dashboard/server.js +192 -3
  241. package/dist/web-dashboard/server.js.map +1 -1
  242. package/dist/web-dashboard/src/types.d.ts +31 -1
  243. package/dist/web-dashboard/src/types.d.ts.map +1 -1
  244. package/package.json +11 -1
  245. package/src/web-dashboard/public/assets/index-56yPnN_m.js +207 -0
  246. package/src/web-dashboard/public/assets/index-56yPnN_m.js.map +1 -0
  247. package/src/web-dashboard/public/assets/{index-C507EUWf.css → index-Cyd6tIew.css} +1 -1
  248. package/src/web-dashboard/public/index.html +2 -2
  249. package/dist/example.d.ts +0 -1
  250. package/dist/example.d.ts.map +0 -1
  251. package/dist/example.js +0 -3
  252. package/dist/example.js.map +0 -1
  253. package/dist/fresh.d.ts +0 -2
  254. package/dist/fresh.d.ts.map +0 -1
  255. package/dist/fresh.js +0 -2
  256. package/dist/fresh.js.map +0 -1
  257. package/dist/mcp/mcp-dashboard-oauth.d.ts +0 -94
  258. package/dist/mcp/mcp-dashboard-oauth.d.ts.map +0 -1
  259. package/dist/mcp/mcp-dashboard-oauth.js +0 -140
  260. package/dist/mcp/mcp-dashboard-oauth.js.map +0 -1
  261. package/dist/memory/background-sync.d.ts +0 -107
  262. package/dist/memory/background-sync.d.ts.map +0 -1
  263. package/dist/memory/background-sync.js +0 -242
  264. package/dist/memory/background-sync.js.map +0 -1
  265. package/dist/memory/cross-session.d.ts +0 -68
  266. package/dist/memory/cross-session.d.ts.map +0 -1
  267. package/dist/memory/cross-session.js +0 -153
  268. package/dist/memory/cross-session.js.map +0 -1
  269. package/dist/memory/drift-detector.d.ts +0 -76
  270. package/dist/memory/drift-detector.d.ts.map +0 -1
  271. package/dist/memory/drift-detector.js +0 -216
  272. package/dist/memory/drift-detector.js.map +0 -1
  273. package/dist/memory/enhanced-manager.d.ts +0 -105
  274. package/dist/memory/enhanced-manager.d.ts.map +0 -1
  275. package/dist/memory/enhanced-manager.js +0 -280
  276. package/dist/memory/enhanced-manager.js.map +0 -1
  277. package/dist/memory/session-extraction.d.ts +0 -93
  278. package/dist/memory/session-extraction.d.ts.map +0 -1
  279. package/dist/memory/session-extraction.js +0 -290
  280. package/dist/memory/session-extraction.js.map +0 -1
  281. package/dist/memory/sqlite-store.d.ts +0 -208
  282. package/dist/memory/sqlite-store.d.ts.map +0 -1
  283. package/dist/memory/sqlite-store.js +0 -556
  284. package/dist/memory/sqlite-store.js.map +0 -1
  285. package/dist/skills/daytona-executor.d.ts +0 -78
  286. package/dist/skills/daytona-executor.d.ts.map +0 -1
  287. package/dist/skills/daytona-executor.js +0 -256
  288. package/dist/skills/daytona-executor.js.map +0 -1
  289. package/dist/skills/modal-executor.d.ts +0 -81
  290. package/dist/skills/modal-executor.d.ts.map +0 -1
  291. package/dist/skills/modal-executor.js +0 -285
  292. package/dist/skills/modal-executor.js.map +0 -1
  293. package/dist/sync/inventory.d.ts +0 -1
  294. package/dist/sync/inventory.d.ts.map +0 -1
  295. package/dist/sync/inventory.js +0 -3
  296. package/dist/sync/inventory.js.map +0 -1
  297. package/dist/sync/validate.d.ts +0 -1
  298. package/dist/sync/validate.d.ts.map +0 -1
  299. package/dist/sync/validate.js +0 -3
  300. package/dist/sync/validate.js.map +0 -1
  301. package/dist/test.d.ts +0 -2
  302. package/dist/test.d.ts.map +0 -1
  303. package/dist/test.js +0 -3
  304. package/dist/test.js.map +0 -1
  305. package/dist/tools/browser-tool.d.ts +0 -206
  306. package/dist/tools/browser-tool.d.ts.map +0 -1
  307. package/dist/tools/browser-tool.js +0 -726
  308. package/dist/tools/browser-tool.js.map +0 -1
  309. package/dist/tools/delegate-tool.d.ts +0 -109
  310. package/dist/tools/delegate-tool.d.ts.map +0 -1
  311. package/dist/tools/delegate-tool.js +0 -185
  312. package/dist/tools/delegate-tool.js.map +0 -1
  313. package/dist/tools/delegation-state.d.ts +0 -87
  314. package/dist/tools/delegation-state.d.ts.map +0 -1
  315. package/dist/tools/delegation-state.js +0 -278
  316. package/dist/tools/delegation-state.js.map +0 -1
  317. package/dist/tools/desktop-ui.d.ts +0 -148
  318. package/dist/tools/desktop-ui.d.ts.map +0 -1
  319. package/dist/tools/desktop-ui.js +0 -486
  320. package/dist/tools/desktop-ui.js.map +0 -1
  321. package/dist/tools/image-video-tool.d.ts +0 -88
  322. package/dist/tools/image-video-tool.d.ts.map +0 -1
  323. package/dist/tools/image-video-tool.js +0 -276
  324. package/dist/tools/image-video-tool.js.map +0 -1
  325. package/dist/tools/kanban-cron-tools.d.ts +0 -92
  326. package/dist/tools/kanban-cron-tools.d.ts.map +0 -1
  327. package/dist/tools/kanban-cron-tools.js +0 -197
  328. package/dist/tools/kanban-cron-tools.js.map +0 -1
  329. package/dist/tools/messaging-tool.d.ts +0 -127
  330. package/dist/tools/messaging-tool.d.ts.map +0 -1
  331. package/dist/tools/messaging-tool.js +0 -314
  332. package/dist/tools/messaging-tool.js.map +0 -1
  333. package/dist/tools/modality/generic-caller.d.ts +0 -43
  334. package/dist/tools/modality/generic-caller.d.ts.map +0 -1
  335. package/dist/tools/modality/generic-caller.js +0 -254
  336. package/dist/tools/modality/generic-caller.js.map +0 -1
  337. package/dist/tools/modality/modality-catalog.d.ts +0 -134
  338. package/dist/tools/modality/modality-catalog.d.ts.map +0 -1
  339. package/dist/tools/modality/modality-catalog.js +0 -445
  340. package/dist/tools/modality/modality-catalog.js.map +0 -1
  341. package/dist/tools/modality/tool-router.d.ts +0 -81
  342. package/dist/tools/modality/tool-router.d.ts.map +0 -1
  343. package/dist/tools/modality/tool-router.js +0 -84
  344. package/dist/tools/modality/tool-router.js.map +0 -1
  345. package/dist/tools/security-tools.d.ts +0 -107
  346. package/dist/tools/security-tools.d.ts.map +0 -1
  347. package/dist/tools/security-tools.js +0 -264
  348. package/dist/tools/security-tools.js.map +0 -1
  349. package/dist/tools/ssh-tool.d.ts +0 -130
  350. package/dist/tools/ssh-tool.d.ts.map +0 -1
  351. package/dist/tools/ssh-tool.js +0 -328
  352. package/dist/tools/ssh-tool.js.map +0 -1
  353. package/dist/tools/tts-tool.d.ts +0 -91
  354. package/dist/tools/tts-tool.d.ts.map +0 -1
  355. package/dist/tools/tts-tool.js +0 -406
  356. package/dist/tools/tts-tool.js.map +0 -1
  357. package/dist/utils/shell-detection.d.ts +0 -124
  358. package/dist/utils/shell-detection.d.ts.map +0 -1
  359. package/dist/utils/shell-detection.js +0 -305
  360. package/dist/utils/shell-detection.js.map +0 -1
  361. package/dist/utils/windows-paths.d.ts +0 -185
  362. package/dist/utils/windows-paths.d.ts.map +0 -1
  363. package/dist/utils/windows-paths.js +0 -472
  364. package/dist/utils/windows-paths.js.map +0 -1
  365. package/src/web-dashboard/public/assets/index-C4frng1Q.js +0 -207
  366. package/src/web-dashboard/public/assets/index-C4frng1Q.js.map +0 -1
@@ -1,254 +0,0 @@
1
- /**
2
- * GenericCaller — handles API calls to modality providers.
3
- *
4
- * Instead of provider-specific code, this module:
5
- * 1. Uses provider's requestBuilder to construct the request
6
- * 2. Makes the API call with proper auth, timeouts, retries
7
- * 3. Uses provider's responseParser to parse the response
8
- * 4. Handles errors generically
9
- *
10
- * This allows adding new providers without writing new API calling code.
11
- */
12
- import { logger } from '../../utils/logger.js';
13
- // ─── Types ──────────────────────────────────────────────────────────────────
14
- export class ModalityError extends Error {
15
- providerId;
16
- statusCode;
17
- details;
18
- constructor(providerId, statusCode, details) {
19
- super(`[${providerId}] HTTP ${statusCode}: ${details}`);
20
- this.providerId = providerId;
21
- this.statusCode = statusCode;
22
- this.details = details;
23
- this.name = 'ModalityError';
24
- }
25
- }
26
- // ─── API Key Resolution ─────────────────────────────────────────────────────
27
- /**
28
- * Get the API key for a provider.
29
- * Checks: config > envVar > hardcoded
30
- */
31
- function getApiKey(provider, config) {
32
- // Check config first
33
- if (config) {
34
- const modalityConfig = config.modality;
35
- if (modalityConfig) {
36
- const providerConfig = modalityConfig[provider.modality]?.[provider.id];
37
- if (providerConfig?.apiKey) {
38
- return providerConfig.apiKey;
39
- }
40
- }
41
- }
42
- // Check env var
43
- if (provider.envVar) {
44
- return process.env[provider.envVar];
45
- }
46
- return undefined;
47
- }
48
- // ─── Generic API Caller ─────────────────────────────────────────────────────
49
- /**
50
- * Call a modality provider with generic API handling.
51
- *
52
- * Flow:
53
- * 1. Build request using provider's requestBuilder
54
- * 2. Resolve auth (API key from config or env)
55
- * 3. Make HTTP request with timeout
56
- * 4. Parse response using provider's responseParser
57
- * 5. Return standardized result
58
- */
59
- export async function callModalityProvider(provider, prompt, opts = {}, config) {
60
- const startTime = Date.now();
61
- const apiKey = getApiKey(provider, config);
62
- // Determine endpoint
63
- const endpoint = provider.endpoint || getDefaultEndpoint(provider.modality);
64
- // Build request
65
- const requestBody = provider.requestBuilder(prompt, opts);
66
- // Build headers
67
- const headers = {
68
- 'Content-Type': 'application/json',
69
- ...provider.headers,
70
- };
71
- // Add auth
72
- if (apiKey) {
73
- if (provider.apiType === 'openai') {
74
- headers['Authorization'] = `Bearer ${apiKey}`;
75
- }
76
- else {
77
- // Generic API key header
78
- headers['Authorization'] = `Bearer ${apiKey}`;
79
- }
80
- }
81
- // Handle file uploads (for transcription)
82
- let body;
83
- if (provider.modality === 'transcription' && typeof requestBody.file === 'string') {
84
- // For transcription, we need to send a file
85
- const { readFileSync } = await import('fs');
86
- const fileBuffer = readFileSync(requestBody.file);
87
- const formData = new FormData();
88
- formData.append('file', new Blob([fileBuffer]), 'audio.wav');
89
- if (requestBody.model)
90
- formData.append('model', requestBody.model);
91
- if (requestBody.language)
92
- formData.append('language', requestBody.language);
93
- body = formData;
94
- delete headers['Content-Type']; // Let browser set multipart boundary
95
- }
96
- else {
97
- body = JSON.stringify(requestBody);
98
- }
99
- // Handle Pollinations (special case: GET request)
100
- if (provider.apiType === 'pollinations') {
101
- const { writeArtifact, safeArtifactName } = await import('./shared.js');
102
- const { fetchImageBytes } = await import('./image-gen.js');
103
- const width = opts.width ?? 1024;
104
- const height = opts.height ?? 1024;
105
- const url = `${provider.baseUrl}/${encodeURIComponent(prompt)}?width=${width}&height=${height}&nologo=true`;
106
- const buffer = await fetchImageBytes(url);
107
- const file = writeArtifact('images', safeArtifactName(prompt, '.png'), buffer, opts.cwd);
108
- return {
109
- ok: true,
110
- file,
111
- durationMs: Date.now() - startTime,
112
- };
113
- }
114
- // Make HTTP request
115
- const response = await fetch(provider.baseUrl + endpoint, {
116
- method: 'POST',
117
- headers,
118
- body,
119
- signal: AbortSignal.timeout(provider.timeoutMs || 30000),
120
- });
121
- // Handle errors
122
- if (!response.ok) {
123
- const errorText = await response.text().catch(() => 'Unknown error');
124
- throw new ModalityError(provider.id, response.status, errorText.slice(0, 200));
125
- }
126
- // Parse response
127
- let data;
128
- const contentType = response.headers.get('content-type') || '';
129
- if (contentType.includes('application/json')) {
130
- data = await response.json();
131
- }
132
- else if (contentType.includes('image/') || contentType.includes('audio/') || contentType.includes('video/')) {
133
- // Binary response (image, audio, video)
134
- const buffer = Buffer.from(await response.arrayBuffer());
135
- data = { buffer, contentType };
136
- }
137
- else {
138
- // Text response
139
- const text = await response.text();
140
- data = { text };
141
- }
142
- // Use provider's response parser
143
- const result = provider.responseParser(data);
144
- // Handle file saving if data is a buffer
145
- if (result.ok && result.data instanceof Buffer) {
146
- const { writeArtifact, safeArtifactName } = await import('./shared.js');
147
- const ext = getExtension(contentType);
148
- const file = writeArtifact(getOutputDir(provider.modality), safeArtifactName(prompt, ext), result.data, opts.cwd);
149
- result.file = file;
150
- }
151
- // Handle URL download if data is a string (URL)
152
- if (result.ok && typeof result.data === 'string' && result.data.startsWith('http')) {
153
- const { writeArtifact, safeArtifactName } = await import('./shared.js');
154
- const fetchResponse = await fetch(result.data);
155
- if (fetchResponse.ok) {
156
- const buffer = Buffer.from(await fetchResponse.arrayBuffer());
157
- const ext = getExtension(fetchResponse.headers.get('content-type') || '');
158
- const file = writeArtifact(getOutputDir(provider.modality), safeArtifactName(prompt, ext), buffer, opts.cwd);
159
- result.file = file;
160
- }
161
- }
162
- result.durationMs = Date.now() - startTime;
163
- return result;
164
- }
165
- // ─── Helpers ────────────────────────────────────────────────────────────────
166
- function getDefaultEndpoint(modality) {
167
- switch (modality) {
168
- case 'image': return '/images/generations';
169
- case 'tts': return '/audio/speech';
170
- case 'video': return '/generation';
171
- case 'transcription': return '/audio/transcriptions';
172
- default: return '/';
173
- }
174
- }
175
- function getExtension(contentType) {
176
- if (contentType.includes('jpeg') || contentType.includes('jpg'))
177
- return '.jpg';
178
- if (contentType.includes('png'))
179
- return '.png';
180
- if (contentType.includes('webp'))
181
- return '.webp';
182
- if (contentType.includes('gif'))
183
- return '.gif';
184
- if (contentType.includes('mp4'))
185
- return '.mp4';
186
- if (contentType.includes('webm'))
187
- return '.webm';
188
- if (contentType.includes('mp3'))
189
- return '.mp3';
190
- if (contentType.includes('wav'))
191
- return '.wav';
192
- if (contentType.includes('ogg'))
193
- return '.ogg';
194
- return '.bin';
195
- }
196
- function getOutputDir(modality) {
197
- switch (modality) {
198
- case 'image': return 'images';
199
- case 'tts': return 'audio';
200
- case 'video': return 'videos';
201
- case 'transcription': return 'transcriptions';
202
- default: return 'output';
203
- }
204
- }
205
- // ─── Failover Caller ────────────────────────────────────────────────────────
206
- /**
207
- * Call modality with failover across providers.
208
- *
209
- * Flow:
210
- * 1. Get all available providers for the modality
211
- * 2. Score each provider
212
- * 3. Try best provider first
213
- * 4. On failure, try next best
214
- * 5. Continue until success or all providers exhausted
215
- */
216
- export async function callModalityWithFailover(modality, prompt, opts = {}, config) {
217
- const { getAvailableModalityProviders, scoreModalityProvider } = await import('./modality-catalog.js');
218
- const providers = getAvailableModalityProviders(modality);
219
- if (providers.length === 0) {
220
- return {
221
- ok: false,
222
- error: `No ${modality} providers available`,
223
- durationMs: 0,
224
- provider: 'none',
225
- };
226
- }
227
- // Score and sort providers
228
- const scored = providers.map(p => ({
229
- provider: p,
230
- score: scoreModalityProvider(p),
231
- })).sort((a, b) => b.score - a.score);
232
- // Try each provider
233
- for (const { provider } of scored) {
234
- try {
235
- logger.debug(`[generic-caller] Trying ${provider.name} for ${modality}`);
236
- const result = await callModalityProvider(provider, prompt, opts, config);
237
- if (result.ok) {
238
- logger.info(`[generic-caller] ${modality} generated via ${provider.name} in ${result.durationMs}ms`);
239
- return { ...result, provider: provider.id };
240
- }
241
- }
242
- catch (err) {
243
- logger.debug(`[generic-caller] ${provider.name} failed: ${err instanceof Error ? err.message : err}`);
244
- // Continue to next provider
245
- }
246
- }
247
- return {
248
- ok: false,
249
- error: `All ${modality} providers failed`,
250
- durationMs: 0,
251
- provider: 'none',
252
- };
253
- }
254
- //# sourceMappingURL=generic-caller.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generic-caller.js","sourceRoot":"","sources":["../../../src/tools/modality/generic-caller.ts"],"names":[],"mappings":"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"}
@@ -1,134 +0,0 @@
1
- /**
2
- * ModalityCatalog — data-driven provider definitions for modality tools.
3
- *
4
- * This is the modality equivalent of `provider-catalog.ts` for LLMs.
5
- * Instead of hardcoding providers in tool-router.ts, we define them as data
6
- * objects that can be extended via config without code changes.
7
- *
8
- * Design principles:
9
- * 1. Data over code — providers are data objects, not if/else blocks
10
- * 2. User-configurable — add providers via config, no code changes
11
- * 3. Generic API caller — uses requestBuilder + responseParser
12
- * 4. Consistent scoring — same pattern as LLM routing
13
- *
14
- * Usage:
15
- * const providers = getModalityProviders('image');
16
- * const best = selectBestModalityProvider(providers, context);
17
- * const result = await callModalityProvider(best, prompt, opts);
18
- */
19
- export type ModalityType = 'image' | 'tts' | 'video' | 'transcription';
20
- export type ApiType = 'openai' | 'rest' | 'grpc' | 'local' | 'pollinations';
21
- export interface ModalityProvider {
22
- /** Unique provider identifier (e.g., 'dalle', 'pollinations'). */
23
- id: string;
24
- /** Human-readable name (e.g., 'DALL-E 3'). */
25
- name: string;
26
- /** Which modality this provider serves. */
27
- modality: ModalityType;
28
- /** API type determines how to call the provider. */
29
- apiType: ApiType;
30
- /** Base URL for API calls. */
31
- baseUrl: string;
32
- /** Environment variable for API key (undefined for keyless). */
33
- envVar?: string;
34
- /** Custom headers to include in API calls. */
35
- headers?: Record<string, string>;
36
- /** Endpoint path (appended to baseUrl). Default depends on modality. */
37
- endpoint?: string;
38
- /** Cost per unit (image=per image, tts=per 1K chars, video=per second). */
39
- costPerUnit: number;
40
- /** Quality score 0-1 (higher = better). */
41
- quality: number;
42
- /** Speed score 0-1 (higher = faster). */
43
- speed: number;
44
- /** Available models for this provider. */
45
- models: string[];
46
- /** Default model to use if none specified. */
47
- defaultModel?: string;
48
- /** Timeout in milliseconds. */
49
- timeoutMs?: number;
50
- /** Whether this provider is currently available (has API key). */
51
- available: boolean;
52
- /** Build the API request body from prompt and options. */
53
- requestBuilder: (prompt: string, opts: ModalityOptions) => Record<string, unknown>;
54
- /** Parse the API response into a standardized result. */
55
- responseParser: (data: unknown) => ModalityResponse;
56
- }
57
- export interface ModalityOptions {
58
- width?: number;
59
- height?: number;
60
- duration?: number;
61
- resolution?: string;
62
- voice?: string;
63
- language?: string;
64
- model?: string;
65
- cwd?: string;
66
- }
67
- export interface ModalityResponse {
68
- /** Whether the operation succeeded. */
69
- ok: boolean;
70
- /** Output data (buffer for image/audio, URL for video). */
71
- data?: Buffer | string;
72
- /** Output file path (if saved to disk). */
73
- file?: string;
74
- /** Text output (for transcription). */
75
- text?: string;
76
- /** Error message if failed. */
77
- error?: string;
78
- /** Duration in milliseconds. */
79
- durationMs: number;
80
- }
81
- /**
82
- * Get all providers for a modality (built-in + user-configured).
83
- */
84
- export declare function getModalityProviders(modality: ModalityType): ModalityProvider[];
85
- /**
86
- * Get all available providers for a modality (has API key or is keyless).
87
- */
88
- export declare function getAvailableModalityProviders(modality: ModalityType): ModalityProvider[];
89
- /**
90
- * Get a specific provider by ID.
91
- */
92
- export declare function getModalityProvider(id: string): ModalityProvider | undefined;
93
- /**
94
- * Add a user-configured provider.
95
- * Called when user sets config like:
96
- * nuvira config set modality.image.replicate.apiKey=xxxxx
97
- */
98
- export declare function addModalityProvider(provider: ModalityProvider): void;
99
- /**
100
- * Remove a user-configured provider.
101
- */
102
- export declare function removeModalityProvider(id: string): boolean;
103
- /**
104
- * Load user-configured providers from config.
105
- */
106
- export declare function loadUserConfiguredProviders(config: Record<string, unknown>): void;
107
- /**
108
- * Score a modality provider for routing.
109
- */
110
- export declare function scoreModalityProvider(provider: ModalityProvider, context?: {
111
- maxCost?: number;
112
- priorityQuality?: boolean;
113
- prioritySpeed?: boolean;
114
- }): number;
115
- /**
116
- * Select the best modality provider for a task.
117
- */
118
- export declare function selectBestModalityProvider(modality: ModalityType, context?: {
119
- maxCost?: number;
120
- priorityQuality?: boolean;
121
- prioritySpeed?: boolean;
122
- }): ModalityProvider | null;
123
- /**
124
- * Get status of all modality providers (for dashboard display).
125
- */
126
- export declare function getModalityProviderStatus(): Record<ModalityType, Array<{
127
- id: string;
128
- name: string;
129
- available: boolean;
130
- costPerUnit: number;
131
- quality: number;
132
- speed: number;
133
- }>>;
134
- //# sourceMappingURL=modality-catalog.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"modality-catalog.d.ts","sourceRoot":"","sources":["../../../src/tools/modality/modality-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAOH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,eAAe,CAAC;AAEvE,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,cAAc,CAAC;AAE5E,MAAM,WAAW,gBAAgB;IAC/B,kEAAkE;IAClE,EAAE,EAAE,MAAM,CAAC;IACX,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,QAAQ,EAAE,YAAY,CAAC;IACvB,oDAAoD;IACpD,OAAO,EAAE,OAAO,CAAC;IACjB,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,SAAS,EAAE,OAAO,CAAC;IACnB,0DAA0D;IAC1D,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnF,yDAAyD;IACzD,cAAc,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,gBAAgB,CAAC;CACrD;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,uCAAuC;IACvC,EAAE,EAAE,OAAO,CAAC;IACZ,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;CACpB;AA8QD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,GAAG,gBAAgB,EAAE,CAI/E;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,YAAY,GAAG,gBAAgB,EAAE,CAExF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAM5E;AAID;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CASpE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAQ1D;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CA2CjF;AAID;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;CACpB,GACL,MAAM,CA6BR;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,YAAY,EACtB,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;CACpB,GACL,gBAAgB,GAAG,IAAI,CAWzB;AAID;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC;IACtE,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAAC,CA4BF"}