whale-code 6.5.4 → 6.5.6

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 (853) hide show
  1. package/README.md +39 -31
  2. package/bin/{swagmanager-mcp.js → whale-code.js} +17 -2
  3. package/dist/cli/app.js +148 -72
  4. package/dist/cli/app.js.map +1 -0
  5. package/dist/cli/chat/AgentSelector.js +105 -10
  6. package/dist/cli/chat/AgentSelector.js.map +1 -0
  7. package/dist/cli/chat/ChatApp.d.ts +31 -0
  8. package/dist/cli/chat/ChatApp.js +539 -286
  9. package/dist/cli/chat/ChatApp.js.map +1 -0
  10. package/dist/cli/chat/ChatInput.js +1088 -770
  11. package/dist/cli/chat/ChatInput.js.map +1 -0
  12. package/dist/cli/chat/MarkdownText.js +39 -14
  13. package/dist/cli/chat/MarkdownText.js.map +1 -0
  14. package/dist/cli/chat/MemoryManager.js +181 -46
  15. package/dist/cli/chat/MemoryManager.js.map +1 -0
  16. package/dist/cli/chat/MessageList.d.ts +2 -3
  17. package/dist/cli/chat/MessageList.js +186 -45
  18. package/dist/cli/chat/MessageList.js.map +1 -0
  19. package/dist/cli/chat/ModelSelector.js +282 -63
  20. package/dist/cli/chat/ModelSelector.js.map +1 -0
  21. package/dist/cli/chat/NodeManager.js +165 -75
  22. package/dist/cli/chat/NodeManager.js.map +1 -0
  23. package/dist/cli/chat/NodeSelector.js +171 -30
  24. package/dist/cli/chat/NodeSelector.js.map +1 -0
  25. package/dist/cli/chat/PlanApproval.js +281 -57
  26. package/dist/cli/chat/PlanApproval.js.map +1 -0
  27. package/dist/cli/chat/RewindViewer.js +559 -144
  28. package/dist/cli/chat/RewindViewer.js.map +1 -0
  29. package/dist/cli/chat/SessionManager.js +137 -30
  30. package/dist/cli/chat/SessionManager.js.map +1 -0
  31. package/dist/cli/chat/SlashMenu.js +293 -164
  32. package/dist/cli/chat/SlashMenu.js.map +1 -0
  33. package/dist/cli/chat/StatusBar.js +172 -9
  34. package/dist/cli/chat/StatusBar.js.map +1 -0
  35. package/dist/cli/chat/StoreSelector.js +147 -18
  36. package/dist/cli/chat/StoreSelector.js.map +1 -0
  37. package/dist/cli/chat/StreamingText.d.ts +1 -5
  38. package/dist/cli/chat/StreamingText.js +22 -7
  39. package/dist/cli/chat/StreamingText.js.map +1 -0
  40. package/dist/cli/chat/SubagentPanel.d.ts +1 -2
  41. package/dist/cli/chat/SubagentPanel.js +612 -72
  42. package/dist/cli/chat/SubagentPanel.js.map +1 -0
  43. package/dist/cli/chat/TeamPanel.d.ts +1 -0
  44. package/dist/cli/chat/TeamPanel.js +230 -30
  45. package/dist/cli/chat/TeamPanel.js.map +1 -0
  46. package/dist/cli/chat/ThemeSelector.js +84 -24
  47. package/dist/cli/chat/ThemeSelector.js.map +1 -0
  48. package/dist/cli/chat/ToolIndicator.js +1476 -371
  49. package/dist/cli/chat/ToolIndicator.js.map +1 -0
  50. package/dist/cli/chat/hooks/useAgentLoop.d.ts +1 -0
  51. package/dist/cli/chat/hooks/useAgentLoop.js +481 -367
  52. package/dist/cli/chat/hooks/useAgentLoop.js.map +1 -0
  53. package/dist/cli/chat/hooks/useSlashCommands.d.ts +3 -14
  54. package/dist/cli/chat/hooks/useSlashCommands.js +744 -572
  55. package/dist/cli/chat/hooks/useSlashCommands.js.map +1 -0
  56. package/dist/cli/commands/config-cmd.js +56 -57
  57. package/dist/cli/commands/config-cmd.js.map +1 -0
  58. package/dist/cli/commands/db.js +184 -169
  59. package/dist/cli/commands/db.js.map +1 -0
  60. package/dist/cli/commands/doctor.js +212 -122
  61. package/dist/cli/commands/doctor.js.map +1 -0
  62. package/dist/cli/commands/init.js +211 -244
  63. package/dist/cli/commands/init.js.map +1 -0
  64. package/dist/cli/commands/mcp.js +127 -122
  65. package/dist/cli/commands/mcp.js.map +1 -0
  66. package/dist/cli/login/LoginApp.js +355 -141
  67. package/dist/cli/login/LoginApp.js.map +1 -0
  68. package/dist/cli/print-mode.js +196 -177
  69. package/dist/cli/print-mode.js.map +1 -0
  70. package/dist/cli/serve-mode.js +615 -530
  71. package/dist/cli/serve-mode.js.map +1 -0
  72. package/dist/cli/services/agent-config.d.ts +29 -0
  73. package/dist/cli/services/agent-config.js +91 -0
  74. package/dist/cli/services/agent-config.js.map +1 -0
  75. package/dist/cli/services/agent-definitions.d.ts +4 -1
  76. package/dist/cli/services/agent-definitions.js +97 -56
  77. package/dist/cli/services/agent-definitions.js.map +1 -0
  78. package/dist/cli/services/agent-events.js +225 -162
  79. package/dist/cli/services/agent-events.js.map +1 -0
  80. package/dist/cli/services/agent-loop.js +978 -669
  81. package/dist/cli/services/agent-loop.js.map +1 -0
  82. package/dist/cli/services/agent-worker-base.d.ts +35 -5
  83. package/dist/cli/services/agent-worker-base.js +337 -153
  84. package/dist/cli/services/agent-worker-base.js.map +1 -0
  85. package/dist/cli/services/api-retry.js +69 -64
  86. package/dist/cli/services/api-retry.js.map +1 -0
  87. package/dist/cli/services/auth-service.d.ts +3 -3
  88. package/dist/cli/services/auth-service.js +209 -132
  89. package/dist/cli/services/auth-service.js.map +1 -0
  90. package/dist/cli/services/background-processes.js +343 -267
  91. package/dist/cli/services/background-processes.js.map +1 -0
  92. package/dist/cli/services/browser-auth.d.ts +2 -2
  93. package/dist/cli/services/browser-auth.js +159 -118
  94. package/dist/cli/services/browser-auth.js.map +1 -0
  95. package/dist/cli/services/claude-md-loader.js +40 -36
  96. package/dist/cli/services/claude-md-loader.js.map +1 -0
  97. package/dist/cli/services/config-store.d.ts +9 -4
  98. package/dist/cli/services/config-store.js +164 -117
  99. package/dist/cli/services/config-store.js.map +1 -0
  100. package/dist/cli/services/debug-log.d.ts +1 -1
  101. package/dist/cli/services/debug-log.js +34 -35
  102. package/dist/cli/services/debug-log.js.map +1 -0
  103. package/dist/cli/services/env-detect.d.ts +7 -0
  104. package/dist/cli/services/env-detect.js +9 -0
  105. package/dist/cli/services/env-detect.js.map +1 -0
  106. package/dist/cli/services/error-logger.d.ts +2 -3
  107. package/dist/cli/services/error-logger.js +189 -180
  108. package/dist/cli/services/error-logger.js.map +1 -0
  109. package/dist/cli/services/file-history.d.ts +1 -1
  110. package/dist/cli/services/file-history.js +50 -54
  111. package/dist/cli/services/file-history.js.map +1 -0
  112. package/dist/cli/services/format-server-response.js +332 -372
  113. package/dist/cli/services/format-server-response.js.map +1 -0
  114. package/dist/cli/services/git-context.js +61 -45
  115. package/dist/cli/services/git-context.js.map +1 -0
  116. package/dist/cli/services/hooks.d.ts +2 -2
  117. package/dist/cli/services/hooks.js +195 -180
  118. package/dist/cli/services/hooks.js.map +1 -0
  119. package/dist/cli/services/ink-incremental.d.ts +19 -0
  120. package/dist/cli/services/ink-incremental.js +59 -0
  121. package/dist/cli/services/ink-incremental.js.map +1 -0
  122. package/dist/cli/services/ink-resize-fix.js +54 -44
  123. package/dist/cli/services/ink-resize-fix.js.map +1 -0
  124. package/dist/cli/services/ink-sync-output.d.ts +12 -0
  125. package/dist/cli/services/ink-sync-output.js +16 -0
  126. package/dist/cli/services/ink-sync-output.js.map +1 -0
  127. package/dist/cli/services/interactive-tools.js +268 -212
  128. package/dist/cli/services/interactive-tools.js.map +1 -0
  129. package/dist/cli/services/keybinding-manager.d.ts +11 -1
  130. package/dist/cli/services/keybinding-manager.js +126 -63
  131. package/dist/cli/services/keybinding-manager.js.map +1 -0
  132. package/dist/cli/services/local-tools.d.ts +1 -1
  133. package/dist/cli/services/local-tools.js +939 -656
  134. package/dist/cli/services/local-tools.js.map +1 -0
  135. package/dist/cli/services/lsp-manager.js +757 -594
  136. package/dist/cli/services/lsp-manager.js.map +1 -0
  137. package/dist/cli/services/mcp-client.d.ts +1 -1
  138. package/dist/cli/services/mcp-client.js +173 -134
  139. package/dist/cli/services/mcp-client.js.map +1 -0
  140. package/dist/cli/services/memory-manager.js +53 -40
  141. package/dist/cli/services/memory-manager.js.map +1 -0
  142. package/dist/cli/services/model-manager.js +55 -40
  143. package/dist/cli/services/model-manager.js.map +1 -0
  144. package/dist/cli/services/model-router.js +115 -85
  145. package/dist/cli/services/model-router.js.map +1 -0
  146. package/dist/cli/services/paths.d.ts +30 -0
  147. package/dist/cli/services/paths.js +81 -0
  148. package/dist/cli/services/paths.js.map +1 -0
  149. package/dist/cli/services/permission-modes.js +32 -25
  150. package/dist/cli/services/permission-modes.js.map +1 -0
  151. package/dist/cli/services/rewind.js +182 -168
  152. package/dist/cli/services/rewind.js.map +1 -0
  153. package/dist/cli/services/ripgrep.js +115 -115
  154. package/dist/cli/services/ripgrep.js.map +1 -0
  155. package/dist/cli/services/sandbox.d.ts +1 -1
  156. package/dist/cli/services/sandbox.js +58 -37
  157. package/dist/cli/services/sandbox.js.map +1 -0
  158. package/dist/cli/services/server-tools.js +738 -565
  159. package/dist/cli/services/server-tools.js.map +1 -0
  160. package/dist/cli/services/session-persistence.js +69 -74
  161. package/dist/cli/services/session-persistence.js.map +1 -0
  162. package/dist/cli/services/subagent-worker.js +42 -27
  163. package/dist/cli/services/subagent-worker.js.map +1 -0
  164. package/dist/cli/services/subagent.d.ts +2 -0
  165. package/dist/cli/services/subagent.js +606 -430
  166. package/dist/cli/services/subagent.js.map +1 -0
  167. package/dist/cli/services/system-prompt.js +86 -78
  168. package/dist/cli/services/system-prompt.js.map +1 -0
  169. package/dist/cli/services/task-decomposer.d.ts +1 -1
  170. package/dist/cli/services/task-decomposer.js +172 -139
  171. package/dist/cli/services/task-decomposer.js.map +1 -0
  172. package/dist/cli/services/team-lead.d.ts +2 -2
  173. package/dist/cli/services/team-lead.js +727 -529
  174. package/dist/cli/services/team-lead.js.map +1 -0
  175. package/dist/cli/services/team-state.js +319 -319
  176. package/dist/cli/services/team-state.js.map +1 -0
  177. package/dist/cli/services/teammate.d.ts +8 -2
  178. package/dist/cli/services/teammate.js +862 -560
  179. package/dist/cli/services/teammate.js.map +1 -0
  180. package/dist/cli/services/telemetry.d.ts +6 -1
  181. package/dist/cli/services/telemetry.js +180 -157
  182. package/dist/cli/services/telemetry.js.map +1 -0
  183. package/dist/cli/services/tools/agent-tools.d.ts +3 -3
  184. package/dist/cli/services/tools/agent-tools.js +480 -322
  185. package/dist/cli/services/tools/agent-tools.js.map +1 -0
  186. package/dist/cli/services/tools/file-ops.js +563 -450
  187. package/dist/cli/services/tools/file-ops.js.map +1 -0
  188. package/dist/cli/services/tools/search-tools.js +231 -162
  189. package/dist/cli/services/tools/search-tools.js.map +1 -0
  190. package/dist/cli/services/tools/shell-exec.js +197 -151
  191. package/dist/cli/services/tools/shell-exec.js.map +1 -0
  192. package/dist/cli/services/tools/task-manager.js +206 -173
  193. package/dist/cli/services/tools/task-manager.js.map +1 -0
  194. package/dist/cli/services/tools/web-tools.js +388 -341
  195. package/dist/cli/services/tools/web-tools.js.map +1 -0
  196. package/dist/cli/setup/SetupApp.d.ts +2 -2
  197. package/dist/cli/setup/SetupApp.js +608 -160
  198. package/dist/cli/setup/SetupApp.js.map +1 -0
  199. package/dist/cli/shared/ErrorBoundary.d.ts +22 -0
  200. package/dist/cli/shared/ErrorBoundary.js +73 -0
  201. package/dist/cli/shared/ErrorBoundary.js.map +1 -0
  202. package/dist/cli/shared/MatrixIntro.js +66 -69
  203. package/dist/cli/shared/MatrixIntro.js.map +1 -0
  204. package/dist/cli/shared/SpinnerSlot.d.ts +14 -0
  205. package/dist/cli/shared/SpinnerSlot.js +63 -0
  206. package/dist/cli/shared/SpinnerSlot.js.map +1 -0
  207. package/dist/cli/shared/Theme.d.ts +1 -1
  208. package/dist/cli/shared/Theme.js +136 -92
  209. package/dist/cli/shared/Theme.js.map +1 -0
  210. package/dist/cli/shared/WhaleBanner.js +99 -11
  211. package/dist/cli/shared/WhaleBanner.js.map +1 -0
  212. package/dist/cli/shared/markdown.d.ts +3 -1
  213. package/dist/cli/shared/markdown.js +736 -674
  214. package/dist/cli/shared/markdown.js.map +1 -0
  215. package/dist/cli/shared/marked-terminal.d.js +2 -0
  216. package/dist/cli/shared/marked-terminal.d.js.map +1 -0
  217. package/dist/cli/shared/theme-manager.js +99 -90
  218. package/dist/cli/shared/theme-manager.js.map +1 -0
  219. package/dist/cli/shared/theme-presets.js +256 -254
  220. package/dist/cli/shared/theme-presets.js.map +1 -0
  221. package/dist/cli/status/StatusApp.js +235 -86
  222. package/dist/cli/status/StatusApp.js.map +1 -0
  223. package/dist/cli/stores/StoreApp.js +275 -65
  224. package/dist/cli/stores/StoreApp.js.map +1 -0
  225. package/dist/index.d.ts +2 -2
  226. package/dist/index.js +509 -396
  227. package/dist/index.js.map +1 -0
  228. package/dist/local-agent/connection.d.ts +2 -2
  229. package/dist/local-agent/connection.js +352 -293
  230. package/dist/local-agent/connection.js.map +1 -0
  231. package/dist/local-agent/discovery.js +259 -122
  232. package/dist/local-agent/discovery.js.map +1 -0
  233. package/dist/local-agent/executor.js +216 -193
  234. package/dist/local-agent/executor.js.map +1 -0
  235. package/dist/local-agent/index.d.ts +2 -2
  236. package/dist/local-agent/index.js +156 -156
  237. package/dist/local-agent/index.js.map +1 -0
  238. package/dist/node/adapters/base.js +18 -8
  239. package/dist/node/adapters/base.js.map +1 -0
  240. package/dist/node/adapters/discord.js +286 -275
  241. package/dist/node/adapters/discord.js.map +1 -0
  242. package/dist/node/adapters/email.js +189 -202
  243. package/dist/node/adapters/email.js.map +1 -0
  244. package/dist/node/adapters/imessage.js +145 -142
  245. package/dist/node/adapters/imessage.js.map +1 -0
  246. package/dist/node/adapters/slack.js +237 -236
  247. package/dist/node/adapters/slack.js.map +1 -0
  248. package/dist/node/adapters/sms.js +149 -151
  249. package/dist/node/adapters/sms.js.map +1 -0
  250. package/dist/node/adapters/telegram.js +88 -92
  251. package/dist/node/adapters/telegram.js.map +1 -0
  252. package/dist/node/adapters/webchat.js +160 -136
  253. package/dist/node/adapters/webchat.js.map +1 -0
  254. package/dist/node/adapters/whatsapp.js +212 -215
  255. package/dist/node/adapters/whatsapp.js.map +1 -0
  256. package/dist/node/cli.js +884 -653
  257. package/dist/node/cli.js.map +1 -0
  258. package/dist/node/config.js +20 -18
  259. package/dist/node/config.js.map +1 -0
  260. package/dist/node/gateway-client.js +191 -181
  261. package/dist/node/gateway-client.js.map +1 -0
  262. package/dist/node/portal/clipboard.js +161 -130
  263. package/dist/node/portal/clipboard.js.map +1 -0
  264. package/dist/node/portal/discovery.js +51 -45
  265. package/dist/node/portal/discovery.js.map +1 -0
  266. package/dist/node/portal/forward.js +64 -58
  267. package/dist/node/portal/forward.js.map +1 -0
  268. package/dist/node/portal/index.js +246 -221
  269. package/dist/node/portal/index.js.map +1 -0
  270. package/dist/node/portal/multiplexer.js +192 -182
  271. package/dist/node/portal/multiplexer.js.map +1 -0
  272. package/dist/node/portal/permissions.js +102 -70
  273. package/dist/node/portal/permissions.js.map +1 -0
  274. package/dist/node/portal/protocol.js +153 -116
  275. package/dist/node/portal/protocol.js.map +1 -0
  276. package/dist/node/portal/screen.js +80 -69
  277. package/dist/node/portal/screen.js.map +1 -0
  278. package/dist/node/portal/session.js +124 -117
  279. package/dist/node/portal/session.js.map +1 -0
  280. package/dist/node/portal/shell.js +140 -113
  281. package/dist/node/portal/shell.js.map +1 -0
  282. package/dist/node/portal/stream.js +77 -75
  283. package/dist/node/portal/stream.js.map +1 -0
  284. package/dist/node/portal/transfer.js +190 -167
  285. package/dist/node/portal/transfer.js.map +1 -0
  286. package/dist/node/portal/ui.js +124 -99
  287. package/dist/node/portal/ui.js.map +1 -0
  288. package/dist/node/remote-desktop/compile-helper.js +50 -45
  289. package/dist/node/remote-desktop/compile-helper.js.map +1 -0
  290. package/dist/node/remote-desktop/index.js +215 -187
  291. package/dist/node/remote-desktop/index.js.map +1 -0
  292. package/dist/node/remote-desktop/protocol.js +45 -29
  293. package/dist/node/remote-desktop/protocol.js.map +1 -0
  294. package/dist/node/runtime.js +493 -410
  295. package/dist/node/runtime.js.map +1 -0
  296. package/dist/server/handlers/__test-utils__/test-db.js +39 -89
  297. package/dist/server/handlers/__test-utils__/test-db.js.map +1 -0
  298. package/dist/server/handlers/analytics.js +467 -261
  299. package/dist/server/handlers/analytics.js.map +1 -0
  300. package/dist/server/handlers/api-docs.d.ts +6 -0
  301. package/dist/server/handlers/api-docs.js +1613 -0
  302. package/dist/server/handlers/api-docs.js.map +1 -0
  303. package/dist/server/handlers/api-keys.js +295 -232
  304. package/dist/server/handlers/api-keys.js.map +1 -0
  305. package/dist/server/handlers/billing.js +330 -239
  306. package/dist/server/handlers/billing.js.map +1 -0
  307. package/dist/server/handlers/browser.js +468 -395
  308. package/dist/server/handlers/browser.js.map +1 -0
  309. package/dist/server/handlers/catalog.js +1377 -978
  310. package/dist/server/handlers/catalog.js.map +1 -0
  311. package/dist/server/handlers/clickhouse.js +157 -109
  312. package/dist/server/handlers/clickhouse.js.map +1 -0
  313. package/dist/server/handlers/comms.d.ts +0 -53
  314. package/dist/server/handlers/comms.js +1443 -970
  315. package/dist/server/handlers/comms.js.map +1 -0
  316. package/dist/server/handlers/creations.js +461 -394
  317. package/dist/server/handlers/creations.js.map +1 -0
  318. package/dist/server/handlers/crm.js +1082 -791
  319. package/dist/server/handlers/crm.js.map +1 -0
  320. package/dist/server/handlers/discovery.js +251 -232
  321. package/dist/server/handlers/discovery.js.map +1 -0
  322. package/dist/server/handlers/embeddings.js +241 -164
  323. package/dist/server/handlers/embeddings.js.map +1 -0
  324. package/dist/server/handlers/enrichment.js +887 -718
  325. package/dist/server/handlers/enrichment.js.map +1 -0
  326. package/dist/server/handlers/image-gen.js +467 -376
  327. package/dist/server/handlers/image-gen.js.map +1 -0
  328. package/dist/server/handlers/inventory.js +797 -424
  329. package/dist/server/handlers/inventory.js.map +1 -0
  330. package/dist/server/handlers/kali.js +272 -230
  331. package/dist/server/handlers/kali.js.map +1 -0
  332. package/dist/server/handlers/llm-providers.js +803 -580
  333. package/dist/server/handlers/llm-providers.js.map +1 -0
  334. package/dist/server/handlers/local-agent.js +133 -105
  335. package/dist/server/handlers/local-agent.js.map +1 -0
  336. package/dist/server/handlers/media.js +1179 -857
  337. package/dist/server/handlers/media.js.map +1 -0
  338. package/dist/server/handlers/meta-ads.js +2669 -2093
  339. package/dist/server/handlers/meta-ads.js.map +1 -0
  340. package/dist/server/handlers/nodes.js +1321 -913
  341. package/dist/server/handlers/nodes.js.map +1 -0
  342. package/dist/server/handlers/operations.js +183 -157
  343. package/dist/server/handlers/operations.js.map +1 -0
  344. package/dist/server/handlers/platform.js +346 -210
  345. package/dist/server/handlers/platform.js.map +1 -0
  346. package/dist/server/handlers/remove-bg.js +118 -86
  347. package/dist/server/handlers/remove-bg.js.map +1 -0
  348. package/dist/server/handlers/storefront.js +586 -446
  349. package/dist/server/handlers/storefront.js.map +1 -0
  350. package/dist/server/handlers/supply-chain.js +546 -326
  351. package/dist/server/handlers/supply-chain.js.map +1 -0
  352. package/dist/server/handlers/transcription.js +106 -97
  353. package/dist/server/handlers/transcription.js.map +1 -0
  354. package/dist/server/handlers/video-gen.js +593 -424
  355. package/dist/server/handlers/video-gen.js.map +1 -0
  356. package/dist/server/handlers/voice.js +1458 -1017
  357. package/dist/server/handlers/voice.js.map +1 -0
  358. package/dist/server/handlers/workflow-steps.js +2837 -2116
  359. package/dist/server/handlers/workflow-steps.js.map +1 -0
  360. package/dist/server/handlers/workflows.js +1630 -933
  361. package/dist/server/handlers/workflows.js.map +1 -0
  362. package/dist/server/index.js +3166 -2390
  363. package/dist/server/index.js.map +1 -0
  364. package/dist/server/lib/batch-client.js +471 -409
  365. package/dist/server/lib/batch-client.js.map +1 -0
  366. package/dist/server/lib/clickhouse-buffer.js +118 -104
  367. package/dist/server/lib/clickhouse-buffer.js.map +1 -0
  368. package/dist/server/lib/clickhouse-client.js +107 -107
  369. package/dist/server/lib/clickhouse-client.js.map +1 -0
  370. package/dist/server/lib/coa-renderer.js +1786 -356
  371. package/dist/server/lib/coa-renderer.js.map +1 -0
  372. package/dist/server/lib/code-worker-pool.js +227 -177
  373. package/dist/server/lib/code-worker-pool.js.map +1 -0
  374. package/dist/server/lib/code-worker.js +174 -164
  375. package/dist/server/lib/code-worker.js.map +1 -0
  376. package/dist/server/lib/compaction-service.d.ts +2 -12
  377. package/dist/server/lib/compaction-service.js +74 -184
  378. package/dist/server/lib/compaction-service.js.map +1 -0
  379. package/dist/server/lib/logger.js +36 -24
  380. package/dist/server/lib/logger.js.map +1 -0
  381. package/dist/server/lib/otel.js +101 -80
  382. package/dist/server/lib/otel.js.map +1 -0
  383. package/dist/server/lib/pdf-renderer.d.ts +1 -1
  384. package/dist/server/lib/pdf-renderer.js +954 -776
  385. package/dist/server/lib/pdf-renderer.js.map +1 -0
  386. package/dist/server/lib/prompt-sanitizer.js +188 -108
  387. package/dist/server/lib/prompt-sanitizer.js.map +1 -0
  388. package/dist/server/lib/provider-capabilities.js +136 -138
  389. package/dist/server/lib/provider-capabilities.js.map +1 -0
  390. package/dist/server/lib/provider-failover.js +190 -168
  391. package/dist/server/lib/provider-failover.js.map +1 -0
  392. package/dist/server/lib/rate-limiter.js +186 -117
  393. package/dist/server/lib/rate-limiter.js.map +1 -0
  394. package/dist/server/lib/react-pdf-layout.js +551 -382
  395. package/dist/server/lib/react-pdf-layout.js.map +1 -0
  396. package/dist/server/lib/server-agent-loop.d.ts +9 -0
  397. package/dist/server/lib/server-agent-loop.js +906 -624
  398. package/dist/server/lib/server-agent-loop.js.map +1 -0
  399. package/dist/server/lib/server-subagent.d.ts +2 -0
  400. package/dist/server/lib/server-subagent.js +260 -162
  401. package/dist/server/lib/server-subagent.js.map +1 -0
  402. package/dist/server/lib/session-checkpoint.js +105 -96
  403. package/dist/server/lib/session-checkpoint.js.map +1 -0
  404. package/dist/server/lib/ssrf-guard.js +193 -184
  405. package/dist/server/lib/ssrf-guard.js.map +1 -0
  406. package/dist/server/lib/supabase-client.js +94 -82
  407. package/dist/server/lib/supabase-client.js.map +1 -0
  408. package/dist/server/lib/template-resolver.js +154 -176
  409. package/dist/server/lib/template-resolver.js.map +1 -0
  410. package/dist/server/lib/utils.js +242 -133
  411. package/dist/server/lib/utils.js.map +1 -0
  412. package/dist/server/local-agent-gateway.d.ts +2 -2
  413. package/dist/server/local-agent-gateway.js +785 -627
  414. package/dist/server/local-agent-gateway.js.map +1 -0
  415. package/dist/server/providers/anthropic.js +254 -176
  416. package/dist/server/providers/anthropic.js.map +1 -0
  417. package/dist/server/providers/bedrock.js +221 -162
  418. package/dist/server/providers/bedrock.js.map +1 -0
  419. package/dist/server/providers/gemini.js +548 -418
  420. package/dist/server/providers/gemini.js.map +1 -0
  421. package/dist/server/providers/openai.js +571 -437
  422. package/dist/server/providers/openai.js.map +1 -0
  423. package/dist/server/providers/registry.js +23 -18
  424. package/dist/server/providers/registry.js.map +1 -0
  425. package/dist/server/providers/shared.js +123 -95
  426. package/dist/server/providers/shared.js.map +1 -0
  427. package/dist/server/providers/types.js +1 -11
  428. package/dist/server/providers/types.js.map +1 -0
  429. package/dist/server/proxy-handlers.js +209 -165
  430. package/dist/server/proxy-handlers.js.map +1 -0
  431. package/dist/server/tool-router.d.ts +13 -0
  432. package/dist/server/tool-router.js +960 -598
  433. package/dist/server/tool-router.js.map +1 -0
  434. package/dist/server/validation.js +248 -188
  435. package/dist/server/validation.js.map +1 -0
  436. package/dist/server/worker.js +202 -133
  437. package/dist/server/worker.js.map +1 -0
  438. package/dist/setup.d.ts +2 -2
  439. package/dist/setup.js +151 -147
  440. package/dist/setup.js.map +1 -0
  441. package/dist/shared/agent-core.d.ts +191 -24
  442. package/dist/shared/agent-core.js +971 -462
  443. package/dist/shared/agent-core.js.map +1 -0
  444. package/dist/shared/anthropic-types.js +1 -6
  445. package/dist/shared/anthropic-types.js.map +1 -0
  446. package/dist/shared/api-client.d.ts +17 -9
  447. package/dist/shared/api-client.js +419 -327
  448. package/dist/shared/api-client.js.map +1 -0
  449. package/dist/shared/compaction.d.ts +36 -0
  450. package/dist/shared/compaction.js +138 -0
  451. package/dist/shared/compaction.js.map +1 -0
  452. package/dist/shared/constants.js +67 -64
  453. package/dist/shared/constants.js.map +1 -0
  454. package/dist/shared/sse-parser.js +221 -219
  455. package/dist/shared/sse-parser.js.map +1 -0
  456. package/dist/shared/tool-dispatch.d.ts +4 -2
  457. package/dist/shared/tool-dispatch.js +226 -165
  458. package/dist/shared/tool-dispatch.js.map +1 -0
  459. package/dist/shared/types.js +1 -6
  460. package/dist/shared/types.js.map +1 -0
  461. package/dist/types/cli-highlight.d.js +2 -0
  462. package/dist/types/cli-highlight.d.js.map +1 -0
  463. package/dist/types/diff.d.js +2 -0
  464. package/dist/types/diff.d.js.map +1 -0
  465. package/dist/types/pdf-parse.d.js +2 -0
  466. package/dist/types/pdf-parse.d.js.map +1 -0
  467. package/dist/updater.d.ts +1 -1
  468. package/dist/updater.js +118 -92
  469. package/dist/updater.js.map +1 -0
  470. package/dist/webchat/widget.js +227 -380
  471. package/dist/webchat/widget.js.map +1 -0
  472. package/package.json +22 -10
  473. package/vendor/ink/build/ansi-tokenizer.d.ts +38 -0
  474. package/vendor/ink/build/ansi-tokenizer.js +316 -0
  475. package/vendor/ink/build/ansi-tokenizer.js.map +1 -0
  476. package/vendor/ink/build/apply-styles.js +175 -0
  477. package/vendor/ink/build/build-layout.js +77 -0
  478. package/vendor/ink/build/calculate-wrapped-text.js +53 -0
  479. package/vendor/ink/build/colorize.d.ts +3 -0
  480. package/vendor/ink/build/colorize.js +48 -0
  481. package/vendor/ink/build/colorize.js.map +1 -0
  482. package/vendor/ink/build/components/AccessibilityContext.d.ts +3 -0
  483. package/vendor/ink/build/components/AccessibilityContext.js +5 -0
  484. package/vendor/ink/build/components/AccessibilityContext.js.map +1 -0
  485. package/vendor/ink/build/components/App.d.ts +18 -0
  486. package/vendor/ink/build/components/App.js +351 -0
  487. package/vendor/ink/build/components/App.js.map +1 -0
  488. package/vendor/ink/build/components/AppContext.d.ts +15 -0
  489. package/vendor/ink/build/components/AppContext.js +11 -0
  490. package/vendor/ink/build/components/AppContext.js.map +1 -0
  491. package/vendor/ink/build/components/BackgroundContext.d.ts +4 -0
  492. package/vendor/ink/build/components/BackgroundContext.js +3 -0
  493. package/vendor/ink/build/components/BackgroundContext.js.map +1 -0
  494. package/vendor/ink/build/components/Box.d.ts +117 -0
  495. package/vendor/ink/build/components/Box.js +34 -0
  496. package/vendor/ink/build/components/Box.js.map +1 -0
  497. package/vendor/ink/build/components/Color.js +62 -0
  498. package/vendor/ink/build/components/Cursor.d.ts +83 -0
  499. package/vendor/ink/build/components/Cursor.js +53 -0
  500. package/vendor/ink/build/components/Cursor.js.map +1 -0
  501. package/vendor/ink/build/components/CursorContext.d.ts +11 -0
  502. package/vendor/ink/build/components/CursorContext.js +8 -0
  503. package/vendor/ink/build/components/CursorContext.js.map +1 -0
  504. package/vendor/ink/build/components/ErrorBoundary.d.ts +18 -0
  505. package/vendor/ink/build/components/ErrorBoundary.js +23 -0
  506. package/vendor/ink/build/components/ErrorBoundary.js.map +1 -0
  507. package/vendor/ink/build/components/ErrorOverview.d.ts +6 -0
  508. package/vendor/ink/build/components/ErrorOverview.js +84 -0
  509. package/vendor/ink/build/components/ErrorOverview.js.map +1 -0
  510. package/vendor/ink/build/components/FocusContext.d.ts +16 -0
  511. package/vendor/ink/build/components/FocusContext.js +17 -0
  512. package/vendor/ink/build/components/FocusContext.js.map +1 -0
  513. package/vendor/ink/build/components/Newline.d.ts +13 -0
  514. package/vendor/ink/build/components/Newline.js +8 -0
  515. package/vendor/ink/build/components/Newline.js.map +1 -0
  516. package/vendor/ink/build/components/Spacer.d.ts +7 -0
  517. package/vendor/ink/build/components/Spacer.js +11 -0
  518. package/vendor/ink/build/components/Spacer.js.map +1 -0
  519. package/vendor/ink/build/components/Static.d.ts +24 -0
  520. package/vendor/ink/build/components/Static.js +28 -0
  521. package/vendor/ink/build/components/Static.js.map +1 -0
  522. package/vendor/ink/build/components/StderrContext.d.ts +15 -0
  523. package/vendor/ink/build/components/StderrContext.js +13 -0
  524. package/vendor/ink/build/components/StderrContext.js.map +1 -0
  525. package/vendor/ink/build/components/StdinContext.d.ts +22 -0
  526. package/vendor/ink/build/components/StdinContext.js +19 -0
  527. package/vendor/ink/build/components/StdinContext.js.map +1 -0
  528. package/vendor/ink/build/components/StdoutContext.d.ts +15 -0
  529. package/vendor/ink/build/components/StdoutContext.js +13 -0
  530. package/vendor/ink/build/components/StdoutContext.js.map +1 -0
  531. package/vendor/ink/build/components/Text.d.ts +55 -0
  532. package/vendor/ink/build/components/Text.js +50 -0
  533. package/vendor/ink/build/components/Text.js.map +1 -0
  534. package/vendor/ink/build/components/Transform.d.ts +16 -0
  535. package/vendor/ink/build/components/Transform.js +15 -0
  536. package/vendor/ink/build/components/Transform.js.map +1 -0
  537. package/vendor/ink/build/cursor-helpers.d.ts +38 -0
  538. package/vendor/ink/build/cursor-helpers.js +56 -0
  539. package/vendor/ink/build/cursor-helpers.js.map +1 -0
  540. package/vendor/ink/build/devtools-window-polyfill.d.ts +1 -0
  541. package/vendor/ink/build/devtools-window-polyfill.js +65 -0
  542. package/vendor/ink/build/devtools-window-polyfill.js.map +1 -0
  543. package/vendor/ink/build/devtools.d.ts +1 -0
  544. package/vendor/ink/build/devtools.js +11 -0
  545. package/vendor/ink/build/devtools.js.map +1 -0
  546. package/vendor/ink/build/dom.d.ts +56 -0
  547. package/vendor/ink/build/dom.js +124 -0
  548. package/vendor/ink/build/dom.js.map +1 -0
  549. package/vendor/ink/build/experimental/apply-style.js +140 -0
  550. package/vendor/ink/build/experimental/dom.js +123 -0
  551. package/vendor/ink/build/experimental/output.js +91 -0
  552. package/vendor/ink/build/experimental/reconciler.js +141 -0
  553. package/vendor/ink/build/experimental/renderer.js +81 -0
  554. package/vendor/ink/build/get-max-width.d.ts +3 -0
  555. package/vendor/ink/build/get-max-width.js +10 -0
  556. package/vendor/ink/build/get-max-width.js.map +1 -0
  557. package/vendor/ink/build/hooks/use-app.d.ts +5 -0
  558. package/vendor/ink/build/hooks/use-app.js +8 -0
  559. package/vendor/ink/build/hooks/use-app.js.map +1 -0
  560. package/vendor/ink/build/hooks/use-cursor.d.ts +12 -0
  561. package/vendor/ink/build/hooks/use-cursor.js +29 -0
  562. package/vendor/ink/build/hooks/use-cursor.js.map +1 -0
  563. package/vendor/ink/build/hooks/use-focus-manager.d.ts +28 -0
  564. package/vendor/ink/build/hooks/use-focus-manager.js +17 -0
  565. package/vendor/ink/build/hooks/use-focus-manager.js.map +1 -0
  566. package/vendor/ink/build/hooks/use-focus.d.ts +29 -0
  567. package/vendor/ink/build/hooks/use-focus.js +42 -0
  568. package/vendor/ink/build/hooks/use-focus.js.map +1 -0
  569. package/vendor/ink/build/hooks/use-input.d.ts +131 -0
  570. package/vendor/ink/build/hooks/use-input.js +124 -0
  571. package/vendor/ink/build/hooks/use-input.js.map +1 -0
  572. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.d.ts +5 -0
  573. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.js +11 -0
  574. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.js.map +1 -0
  575. package/vendor/ink/build/hooks/use-stderr.d.ts +5 -0
  576. package/vendor/ink/build/hooks/use-stderr.js +8 -0
  577. package/vendor/ink/build/hooks/use-stderr.js.map +1 -0
  578. package/vendor/ink/build/hooks/use-stdin.d.ts +5 -0
  579. package/vendor/ink/build/hooks/use-stdin.js +8 -0
  580. package/vendor/ink/build/hooks/use-stdin.js.map +1 -0
  581. package/vendor/ink/build/hooks/use-stdout.d.ts +5 -0
  582. package/vendor/ink/build/hooks/use-stdout.js +8 -0
  583. package/vendor/ink/build/hooks/use-stdout.js.map +1 -0
  584. package/vendor/ink/build/hooks/useInput.js +38 -0
  585. package/vendor/ink/build/index.d.ts +34 -0
  586. package/vendor/ink/build/index.js +20 -0
  587. package/vendor/ink/build/index.js.map +1 -0
  588. package/vendor/ink/build/ink.d.ts +90 -0
  589. package/vendor/ink/build/ink.js +654 -0
  590. package/vendor/ink/build/ink.js.map +1 -0
  591. package/vendor/ink/build/input-parser.d.ts +7 -0
  592. package/vendor/ink/build/input-parser.js +154 -0
  593. package/vendor/ink/build/input-parser.js.map +1 -0
  594. package/vendor/ink/build/instance.js +205 -0
  595. package/vendor/ink/build/instances.d.ts +3 -0
  596. package/vendor/ink/build/instances.js +8 -0
  597. package/vendor/ink/build/instances.js.map +1 -0
  598. package/vendor/ink/build/kitty-keyboard.d.ts +23 -0
  599. package/vendor/ink/build/kitty-keyboard.js +32 -0
  600. package/vendor/ink/build/kitty-keyboard.js.map +1 -0
  601. package/vendor/ink/build/layout.d.ts +7 -0
  602. package/vendor/ink/build/layout.js +33 -0
  603. package/vendor/ink/build/layout.js.map +1 -0
  604. package/vendor/ink/build/log-update.d.ts +19 -0
  605. package/vendor/ink/build/log-update.js +243 -0
  606. package/vendor/ink/build/log-update.js.map +1 -0
  607. package/vendor/ink/build/measure-element.d.ts +16 -0
  608. package/vendor/ink/build/measure-element.js +9 -0
  609. package/vendor/ink/build/measure-element.js.map +1 -0
  610. package/vendor/ink/build/measure-text.d.ts +6 -0
  611. package/vendor/ink/build/measure-text.js +21 -0
  612. package/vendor/ink/build/measure-text.js.map +1 -0
  613. package/vendor/ink/build/options.d.ts +52 -0
  614. package/vendor/ink/build/options.js +2 -0
  615. package/vendor/ink/build/options.js.map +1 -0
  616. package/vendor/ink/build/output.d.ts +35 -0
  617. package/vendor/ink/build/output.js +183 -0
  618. package/vendor/ink/build/output.js.map +1 -0
  619. package/vendor/ink/build/parse-keypress.d.ts +22 -0
  620. package/vendor/ink/build/parse-keypress.js +493 -0
  621. package/vendor/ink/build/parse-keypress.js.map +1 -0
  622. package/vendor/ink/build/reconciler.d.ts +4 -0
  623. package/vendor/ink/build/reconciler.js +274 -0
  624. package/vendor/ink/build/reconciler.js.map +1 -0
  625. package/vendor/ink/build/render-background.d.ts +4 -0
  626. package/vendor/ink/build/render-background.js +25 -0
  627. package/vendor/ink/build/render-background.js.map +1 -0
  628. package/vendor/ink/build/render-border.d.ts +4 -0
  629. package/vendor/ink/build/render-border.js +73 -0
  630. package/vendor/ink/build/render-border.js.map +1 -0
  631. package/vendor/ink/build/render-node-to-output.d.ts +14 -0
  632. package/vendor/ink/build/render-node-to-output.js +147 -0
  633. package/vendor/ink/build/render-node-to-output.js.map +1 -0
  634. package/vendor/ink/build/render-to-string.d.ts +38 -0
  635. package/vendor/ink/build/render-to-string.js +115 -0
  636. package/vendor/ink/build/render-to-string.js.map +1 -0
  637. package/vendor/ink/build/render.d.ts +121 -0
  638. package/vendor/ink/build/render.js +55 -0
  639. package/vendor/ink/build/render.js.map +1 -0
  640. package/vendor/ink/build/renderer.d.ts +8 -0
  641. package/vendor/ink/build/renderer.js +55 -0
  642. package/vendor/ink/build/renderer.js.map +1 -0
  643. package/vendor/ink/build/sanitize-ansi.d.ts +2 -0
  644. package/vendor/ink/build/sanitize-ansi.js +27 -0
  645. package/vendor/ink/build/sanitize-ansi.js.map +1 -0
  646. package/vendor/ink/build/screen-reader-update.d.ts +13 -0
  647. package/vendor/ink/build/screen-reader-update.js +38 -0
  648. package/vendor/ink/build/screen-reader-update.js.map +1 -0
  649. package/vendor/ink/build/squash-text-nodes.d.ts +3 -0
  650. package/vendor/ink/build/squash-text-nodes.js +36 -0
  651. package/vendor/ink/build/squash-text-nodes.js.map +1 -0
  652. package/vendor/ink/build/styles.d.ts +240 -0
  653. package/vendor/ink/build/styles.js +232 -0
  654. package/vendor/ink/build/styles.js.map +1 -0
  655. package/vendor/ink/build/utils.d.ts +2 -0
  656. package/vendor/ink/build/utils.js +4 -0
  657. package/vendor/ink/build/utils.js.map +1 -0
  658. package/vendor/ink/build/wrap-text.d.ts +3 -0
  659. package/vendor/ink/build/wrap-text.js +31 -0
  660. package/vendor/ink/build/wrap-text.js.map +1 -0
  661. package/vendor/ink/build/write-synchronized.d.ts +4 -0
  662. package/vendor/ink/build/write-synchronized.js +7 -0
  663. package/vendor/ink/build/write-synchronized.js.map +1 -0
  664. package/vendor/ink/license +10 -0
  665. package/vendor/ink/node_modules/@types/node/LICENSE +21 -0
  666. package/vendor/ink/node_modules/@types/node/README.md +15 -0
  667. package/vendor/ink/node_modules/@types/node/assert/strict.d.ts +105 -0
  668. package/vendor/ink/node_modules/@types/node/assert.d.ts +955 -0
  669. package/vendor/ink/node_modules/@types/node/async_hooks.d.ts +623 -0
  670. package/vendor/ink/node_modules/@types/node/buffer.buffer.d.ts +466 -0
  671. package/vendor/ink/node_modules/@types/node/buffer.d.ts +1810 -0
  672. package/vendor/ink/node_modules/@types/node/child_process.d.ts +1428 -0
  673. package/vendor/ink/node_modules/@types/node/cluster.d.ts +486 -0
  674. package/vendor/ink/node_modules/@types/node/compatibility/iterators.d.ts +21 -0
  675. package/vendor/ink/node_modules/@types/node/console.d.ts +151 -0
  676. package/vendor/ink/node_modules/@types/node/constants.d.ts +20 -0
  677. package/vendor/ink/node_modules/@types/node/crypto.d.ts +4065 -0
  678. package/vendor/ink/node_modules/@types/node/dgram.d.ts +564 -0
  679. package/vendor/ink/node_modules/@types/node/diagnostics_channel.d.ts +576 -0
  680. package/vendor/ink/node_modules/@types/node/dns/promises.d.ts +503 -0
  681. package/vendor/ink/node_modules/@types/node/dns.d.ts +922 -0
  682. package/vendor/ink/node_modules/@types/node/domain.d.ts +166 -0
  683. package/vendor/ink/node_modules/@types/node/events.d.ts +1054 -0
  684. package/vendor/ink/node_modules/@types/node/fs/promises.d.ts +1329 -0
  685. package/vendor/ink/node_modules/@types/node/fs.d.ts +4676 -0
  686. package/vendor/ink/node_modules/@types/node/globals.d.ts +150 -0
  687. package/vendor/ink/node_modules/@types/node/globals.typedarray.d.ts +101 -0
  688. package/vendor/ink/node_modules/@types/node/http.d.ts +2167 -0
  689. package/vendor/ink/node_modules/@types/node/http2.d.ts +2480 -0
  690. package/vendor/ink/node_modules/@types/node/https.d.ts +405 -0
  691. package/vendor/ink/node_modules/@types/node/index.d.ts +115 -0
  692. package/vendor/ink/node_modules/@types/node/inspector/promises.d.ts +41 -0
  693. package/vendor/ink/node_modules/@types/node/inspector.d.ts +224 -0
  694. package/vendor/ink/node_modules/@types/node/inspector.generated.d.ts +4226 -0
  695. package/vendor/ink/node_modules/@types/node/module.d.ts +819 -0
  696. package/vendor/ink/node_modules/@types/node/net.d.ts +933 -0
  697. package/vendor/ink/node_modules/@types/node/os.d.ts +507 -0
  698. package/vendor/ink/node_modules/@types/node/package.json +155 -0
  699. package/vendor/ink/node_modules/@types/node/path/posix.d.ts +8 -0
  700. package/vendor/ink/node_modules/@types/node/path/win32.d.ts +8 -0
  701. package/vendor/ink/node_modules/@types/node/path.d.ts +187 -0
  702. package/vendor/ink/node_modules/@types/node/perf_hooks.d.ts +643 -0
  703. package/vendor/ink/node_modules/@types/node/process.d.ts +2156 -0
  704. package/vendor/ink/node_modules/@types/node/punycode.d.ts +117 -0
  705. package/vendor/ink/node_modules/@types/node/querystring.d.ts +152 -0
  706. package/vendor/ink/node_modules/@types/node/quic.d.ts +910 -0
  707. package/vendor/ink/node_modules/@types/node/readline/promises.d.ts +161 -0
  708. package/vendor/ink/node_modules/@types/node/readline.d.ts +541 -0
  709. package/vendor/ink/node_modules/@types/node/repl.d.ts +415 -0
  710. package/vendor/ink/node_modules/@types/node/sea.d.ts +162 -0
  711. package/vendor/ink/node_modules/@types/node/sqlite.d.ts +955 -0
  712. package/vendor/ink/node_modules/@types/node/stream/consumers.d.ts +38 -0
  713. package/vendor/ink/node_modules/@types/node/stream/promises.d.ts +211 -0
  714. package/vendor/ink/node_modules/@types/node/stream/web.d.ts +296 -0
  715. package/vendor/ink/node_modules/@types/node/stream.d.ts +1760 -0
  716. package/vendor/ink/node_modules/@types/node/string_decoder.d.ts +67 -0
  717. package/vendor/ink/node_modules/@types/node/test/reporters.d.ts +96 -0
  718. package/vendor/ink/node_modules/@types/node/test.d.ts +2240 -0
  719. package/vendor/ink/node_modules/@types/node/timers/promises.d.ts +108 -0
  720. package/vendor/ink/node_modules/@types/node/timers.d.ts +159 -0
  721. package/vendor/ink/node_modules/@types/node/tls.d.ts +1198 -0
  722. package/vendor/ink/node_modules/@types/node/trace_events.d.ts +197 -0
  723. package/vendor/ink/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +462 -0
  724. package/vendor/ink/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +71 -0
  725. package/vendor/ink/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +36 -0
  726. package/vendor/ink/node_modules/@types/node/ts5.6/index.d.ts +117 -0
  727. package/vendor/ink/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +72 -0
  728. package/vendor/ink/node_modules/@types/node/ts5.7/index.d.ts +117 -0
  729. package/vendor/ink/node_modules/@types/node/tty.d.ts +250 -0
  730. package/vendor/ink/node_modules/@types/node/url.d.ts +519 -0
  731. package/vendor/ink/node_modules/@types/node/util/types.d.ts +558 -0
  732. package/vendor/ink/node_modules/@types/node/util.d.ts +1662 -0
  733. package/vendor/ink/node_modules/@types/node/v8.d.ts +983 -0
  734. package/vendor/ink/node_modules/@types/node/vm.d.ts +1208 -0
  735. package/vendor/ink/node_modules/@types/node/wasi.d.ts +202 -0
  736. package/vendor/ink/node_modules/@types/node/web-globals/abortcontroller.d.ts +59 -0
  737. package/vendor/ink/node_modules/@types/node/web-globals/blob.d.ts +23 -0
  738. package/vendor/ink/node_modules/@types/node/web-globals/console.d.ts +9 -0
  739. package/vendor/ink/node_modules/@types/node/web-globals/crypto.d.ts +39 -0
  740. package/vendor/ink/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
  741. package/vendor/ink/node_modules/@types/node/web-globals/encoding.d.ts +11 -0
  742. package/vendor/ink/node_modules/@types/node/web-globals/events.d.ts +106 -0
  743. package/vendor/ink/node_modules/@types/node/web-globals/fetch.d.ts +69 -0
  744. package/vendor/ink/node_modules/@types/node/web-globals/importmeta.d.ts +13 -0
  745. package/vendor/ink/node_modules/@types/node/web-globals/messaging.d.ts +23 -0
  746. package/vendor/ink/node_modules/@types/node/web-globals/navigator.d.ts +25 -0
  747. package/vendor/ink/node_modules/@types/node/web-globals/performance.d.ts +45 -0
  748. package/vendor/ink/node_modules/@types/node/web-globals/storage.d.ts +24 -0
  749. package/vendor/ink/node_modules/@types/node/web-globals/streams.d.ts +115 -0
  750. package/vendor/ink/node_modules/@types/node/web-globals/timers.d.ts +44 -0
  751. package/vendor/ink/node_modules/@types/node/web-globals/url.d.ts +24 -0
  752. package/vendor/ink/node_modules/@types/node/worker_threads.d.ts +717 -0
  753. package/vendor/ink/node_modules/@types/node/zlib.d.ts +618 -0
  754. package/vendor/ink/node_modules/node-pty/LICENSE +69 -0
  755. package/vendor/ink/node_modules/node-pty/README.md +164 -0
  756. package/vendor/ink/node_modules/node-pty/binding.gyp +150 -0
  757. package/vendor/ink/node_modules/node-pty/lib/conpty_console_list_agent.js +25 -0
  758. package/vendor/ink/node_modules/node-pty/lib/eventEmitter2.js +47 -0
  759. package/vendor/ink/node_modules/node-pty/lib/index.js +52 -0
  760. package/vendor/ink/node_modules/node-pty/lib/interfaces.js +7 -0
  761. package/vendor/ink/node_modules/node-pty/lib/shared/conout.js +11 -0
  762. package/vendor/ink/node_modules/node-pty/lib/terminal.js +190 -0
  763. package/vendor/ink/node_modules/node-pty/lib/types.js +7 -0
  764. package/vendor/ink/node_modules/node-pty/lib/unixTerminal.js +349 -0
  765. package/vendor/ink/node_modules/node-pty/lib/utils.js +39 -0
  766. package/vendor/ink/node_modules/node-pty/lib/windowsConoutConnection.js +125 -0
  767. package/vendor/ink/node_modules/node-pty/lib/windowsPtyAgent.js +287 -0
  768. package/vendor/ink/node_modules/node-pty/lib/windowsTerminal.js +201 -0
  769. package/vendor/ink/node_modules/node-pty/lib/worker/conoutSocketWorker.js +22 -0
  770. package/vendor/ink/node_modules/node-pty/package.json +65 -0
  771. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-arm64/pty.node +0 -0
  772. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-arm64/spawn-helper +0 -0
  773. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-x64/pty.node +0 -0
  774. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-x64/spawn-helper +0 -0
  775. package/vendor/ink/node_modules/node-pty/prebuilds/linux-arm64/pty.node +0 -0
  776. package/vendor/ink/node_modules/node-pty/prebuilds/linux-x64/pty.node +0 -0
  777. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty/OpenConsole.exe +0 -0
  778. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty/conpty.dll +0 -0
  779. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty.node +0 -0
  780. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty.pdb +0 -0
  781. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.node +0 -0
  782. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.pdb +0 -0
  783. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty/OpenConsole.exe +0 -0
  784. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty/conpty.dll +0 -0
  785. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty.node +0 -0
  786. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty.pdb +0 -0
  787. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.node +0 -0
  788. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.pdb +0 -0
  789. package/vendor/ink/node_modules/node-pty/scripts/post-install.js +76 -0
  790. package/vendor/ink/node_modules/node-pty/scripts/prebuild.js +34 -0
  791. package/vendor/ink/node_modules/node-pty/src/unix/pty.cc +875 -0
  792. package/vendor/ink/node_modules/node-pty/src/unix/spawn-helper.cc +23 -0
  793. package/vendor/ink/node_modules/node-pty/src/win/conpty.cc +582 -0
  794. package/vendor/ink/node_modules/node-pty/src/win/conpty.h +41 -0
  795. package/vendor/ink/node_modules/node-pty/src/win/conpty_console_list.cc +44 -0
  796. package/vendor/ink/node_modules/node-pty/src/win/path_util.cc +95 -0
  797. package/vendor/ink/node_modules/node-pty/src/win/path_util.h +26 -0
  798. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-arm64/OpenConsole.exe +0 -0
  799. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-arm64/conpty.dll +0 -0
  800. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/OpenConsole.exe +0 -0
  801. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/conpty.dll +0 -0
  802. package/vendor/ink/node_modules/node-pty/typings/node-pty.d.ts +215 -0
  803. package/vendor/ink/node_modules/undici-types/LICENSE +21 -0
  804. package/vendor/ink/node_modules/undici-types/README.md +6 -0
  805. package/vendor/ink/node_modules/undici-types/agent.d.ts +32 -0
  806. package/vendor/ink/node_modules/undici-types/api.d.ts +43 -0
  807. package/vendor/ink/node_modules/undici-types/balanced-pool.d.ts +30 -0
  808. package/vendor/ink/node_modules/undici-types/cache-interceptor.d.ts +173 -0
  809. package/vendor/ink/node_modules/undici-types/cache.d.ts +36 -0
  810. package/vendor/ink/node_modules/undici-types/client-stats.d.ts +15 -0
  811. package/vendor/ink/node_modules/undici-types/client.d.ts +108 -0
  812. package/vendor/ink/node_modules/undici-types/connector.d.ts +34 -0
  813. package/vendor/ink/node_modules/undici-types/content-type.d.ts +21 -0
  814. package/vendor/ink/node_modules/undici-types/cookies.d.ts +30 -0
  815. package/vendor/ink/node_modules/undici-types/diagnostics-channel.d.ts +74 -0
  816. package/vendor/ink/node_modules/undici-types/dispatcher.d.ts +276 -0
  817. package/vendor/ink/node_modules/undici-types/env-http-proxy-agent.d.ts +22 -0
  818. package/vendor/ink/node_modules/undici-types/errors.d.ts +161 -0
  819. package/vendor/ink/node_modules/undici-types/eventsource.d.ts +66 -0
  820. package/vendor/ink/node_modules/undici-types/fetch.d.ts +211 -0
  821. package/vendor/ink/node_modules/undici-types/formdata.d.ts +108 -0
  822. package/vendor/ink/node_modules/undici-types/global-dispatcher.d.ts +9 -0
  823. package/vendor/ink/node_modules/undici-types/global-origin.d.ts +7 -0
  824. package/vendor/ink/node_modules/undici-types/h2c-client.d.ts +73 -0
  825. package/vendor/ink/node_modules/undici-types/handlers.d.ts +15 -0
  826. package/vendor/ink/node_modules/undici-types/header.d.ts +160 -0
  827. package/vendor/ink/node_modules/undici-types/index.d.ts +88 -0
  828. package/vendor/ink/node_modules/undici-types/interceptors.d.ts +73 -0
  829. package/vendor/ink/node_modules/undici-types/mock-agent.d.ts +68 -0
  830. package/vendor/ink/node_modules/undici-types/mock-call-history.d.ts +111 -0
  831. package/vendor/ink/node_modules/undici-types/mock-client.d.ts +27 -0
  832. package/vendor/ink/node_modules/undici-types/mock-errors.d.ts +12 -0
  833. package/vendor/ink/node_modules/undici-types/mock-interceptor.d.ts +94 -0
  834. package/vendor/ink/node_modules/undici-types/mock-pool.d.ts +27 -0
  835. package/vendor/ink/node_modules/undici-types/package.json +55 -0
  836. package/vendor/ink/node_modules/undici-types/patch.d.ts +29 -0
  837. package/vendor/ink/node_modules/undici-types/pool-stats.d.ts +19 -0
  838. package/vendor/ink/node_modules/undici-types/pool.d.ts +41 -0
  839. package/vendor/ink/node_modules/undici-types/proxy-agent.d.ts +29 -0
  840. package/vendor/ink/node_modules/undici-types/readable.d.ts +68 -0
  841. package/vendor/ink/node_modules/undici-types/retry-agent.d.ts +8 -0
  842. package/vendor/ink/node_modules/undici-types/retry-handler.d.ts +125 -0
  843. package/vendor/ink/node_modules/undici-types/round-robin-pool.d.ts +41 -0
  844. package/vendor/ink/node_modules/undici-types/snapshot-agent.d.ts +109 -0
  845. package/vendor/ink/node_modules/undici-types/util.d.ts +18 -0
  846. package/vendor/ink/node_modules/undici-types/utility.d.ts +7 -0
  847. package/vendor/ink/node_modules/undici-types/webidl.d.ts +341 -0
  848. package/vendor/ink/node_modules/undici-types/websocket.d.ts +186 -0
  849. package/vendor/ink/package.json +201 -0
  850. package/vendor/ink/readme.md +2636 -0
  851. package/bin/swag-agent.js +0 -9
  852. package/dist/server/lib/pg-rate-limiter.d.ts +0 -21
  853. package/dist/server/lib/pg-rate-limiter.js +0 -86
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-router.js","names":["sanitizeError","validateToolArgs","sanitizeToolDescription","validateUrl","handleInventory","handleInventoryQuery","handleInventoryAudit","handlePurchaseOrders","handleTransfers","handleProducts","handleCollections","handleCustomers","handleOrders","handleAnalytics","handleLocations","handleSuppliers","handleAlerts","handleAuditTrail","handleStore","handleEmail","handleDocuments","handleWebSearch","handleTelemetry","handleBrowser","handleDiscovery","handleVoice","handleWorkflows","handleEmbeddings","handleLLM","handleImageGen","handleRemoveBg","handleMedia","handleVideoGen","handleAPIKeys","handleCreations","handleMetaAds","handleKali","handleLocalAgent","handleEnrichment","handleStorefront","handleApiDocs","handleClickHouse","summarizeResult","withTimeout","queueSpan","flushSpans","auditRowToSpan","classifyErrorType","toolMetrics","Map","getToolMetrics","result","name","m","invocations","errors","avgMs","Math","round","totalMs","lastMs","recordToolMetric","toolName","durationMs","success","get","set","cachedResult","cacheTime","cachedApiToolDefs","truncateDescription","desc","maxLen","length","cut","lastIndexOf","substring","loadTools","supabase","forceRefresh","Date","now","data","error","from","select","eq","neq","core","extended","all","allTools","map","t","description","definition","input_schema","type","properties","migrationApplied","some","auto_load","push","i","DISCOVER_TOOLS_DEF","getCachedToolDefs","tools","cached","names","items","category","refresh","userToolCache","USER_TOOL_CACHE_MAX","evictUserToolCache","size","entries","sort","a","b","lastAccessed","excess","delete","loadUserTools","storeId","time","rows","defs","display_name","requires_approval","getUserToolByPrefixedName","prefixedName","replace","find","getToolsForAgent","agent","coreTools","userToolDefs","enabled_tools","filteredUserTools","filter","includes","DEFAULT_TIMEOUT","TOOL_HANDLERS","inventory","handler","sb","args","sid","action","startsWith","slice","timeout","requiresStore","purchase_orders","transfers","products","collections","customers","orders","analytics","locations","suppliers","store","storefront","email","documents","alerts","audit_trail","workflows","voice","image_gen","remove_bg","media","video_gen","llm","embeddings","creations","web_search","telemetry","browser","discovery","api_keys","api_docs","meta_ads","kali","supportsProgress","local_agent","enrichment","clickhouse","discover_tools","handleDiscoverTools","Object","freeze","getRegisteredToolNames","keys","_extendedToolsCache","_extendedToolsIndex","setExtendedToolsCache","split","getExtendedToolsCache","getExtendedToolsIndex","getFullToolSchemas","toolNames","nameSet","Set","has","TOOL_CATEGORIES","freshResult","matching","cat","toLowerCase","categoryTools","existingNames","available","join","count","refreshed","executeUserTool","userTool","agentId","conversationId","max_execution_time_ms","execution_type","executeHTTPUserTool","rpc","p_tool_id","id","p_store_id","p_args","p_agent_id","p_conversation_id","message","pending_approval","execution_id","execute_sql","executeSQLUserTool","err","config","http_config","url","httpCfg","headers","configStr","JSON","stringify","body","body_template","secretRefs","matchAll","secretMap","Promise","p_name","resolveSecrets","text","_","resolveArgs","val","undefined","String","resolve","key","method","toUpperCase","resolvedBody","ssrfError","controller","AbortController","timer","setTimeout","abort","resp","fetch","signal","clearTimeout","clear","contentType","json","ok","status","sqlConfig","is_read_only","template","p_sql","p_params","p_allowed_tables","allowed_tables","executeSupplyChain","traceId","userId","userEmail","source","userToolRows","scAction","PO_ALIASES","create","list","add_items","approve","mark_ordered","receive","cancel","executeTool","onToolProgress","skipAudit","startTime","entry","test","agentFlags","single","can_query","readActions","can_modify","writeActions","wa","validation","valid","execStartMs","toolPromise","progressCb","progress","timeoutMs","stepTimeout","_step_timeout_seconds","console","warn","endTime","inputJson","outputJson","inputBytes","outputBytes","details","tool_input","input_bytes","output_bytes","result_summary","tool_result","_truncated","_type","Array","isArray","_size","_count","tool_error","errorType","error_type","bytes","Uint8Array","crypto","getRandomValues","spanId","toString","padStart","auditRow","severity","store_id","resource_type","resource_id","request_id","conversation_id","error_message","duration_ms","user_id","user_email","trace_id","span_id","span_kind","service_name","status_code","start_time","toISOString","end_time","loadAgentConfig","query"],"sources":["../../src/server/tool-router.ts"],"sourcesContent":["/**\n * Tool Router — unified tool registry, dispatch, and execution.\n *\n * SINGLE SOURCE OF TRUTH for all AI systems (MCP server, HTTP agent, workflows, CLI).\n *\n * Architecture:\n * - ai_tool_registry (DB): tool definitions (name, description, schema) — queried by ALL clients\n * - TOOL_HANDLERS (code): name → handler function mapping — the only place handler routing lives\n * - user_tools (DB): per-store custom tools — additive, never filtered from built-ins\n * - getToolsForAgent(): consistent tool set — all registry tools always available\n * - executeTool(): unified dispatch — handler lookup + timeout + audit logging\n *\n * To add a new tool:\n * 1. Add handler in src/server/handlers/\n * 2. Import and register in TOOL_HANDLERS below\n * 3. Add row to ai_tool_registry table (defines schema for all clients)\n * That's it — MCP, WhaleChat, workflows, CLI all pick it up automatically.\n */\n\nimport type { SupabaseClient } from \"@supabase/supabase-js\";\nimport { sanitizeError } from \"../shared/agent-core.js\";\nimport { validateToolArgs } from \"./validation.js\";\nimport { sanitizeToolDescription } from \"./lib/prompt-sanitizer.js\";\nimport { validateUrl } from \"./lib/ssrf-guard.js\";\n\nimport { handleInventory, handleInventoryQuery, handleInventoryAudit } from \"./handlers/inventory.js\";\nimport { handlePurchaseOrders, handleTransfers } from \"./handlers/supply-chain.js\";\nimport { handleProducts, handleCollections } from \"./handlers/catalog.js\";\nimport { handleCustomers, handleOrders } from \"./handlers/crm.js\";\nimport { handleAnalytics } from \"./handlers/analytics.js\";\nimport { handleLocations, handleSuppliers, handleAlerts, handleAuditTrail, handleStore } from \"./handlers/operations.js\";\nimport { handleEmail, handleDocuments } from \"./handlers/comms.js\";\nimport { handleWebSearch, handleTelemetry } from \"./handlers/platform.js\";\nimport { handleBrowser } from \"./handlers/browser.js\";\nimport { handleDiscovery } from \"./handlers/discovery.js\";\nimport { handleVoice } from \"./handlers/voice.js\";\nimport { handleWorkflows } from \"./handlers/workflows.js\";\nimport { handleEmbeddings } from \"./handlers/embeddings.js\";\nimport { handleLLM } from \"./handlers/llm-providers.js\";\nimport { handleImageGen } from \"./handlers/image-gen.js\";\nimport { handleRemoveBg } from \"./handlers/remove-bg.js\";\nimport { handleMedia } from \"./handlers/media.js\";\nimport { handleVideoGen } from \"./handlers/video-gen.js\";\nimport { handleAPIKeys } from \"./handlers/api-keys.js\";\nimport { handleCreations } from \"./handlers/creations.js\";\nimport { handleMetaAds } from \"./handlers/meta-ads.js\";\nimport { handleKali } from \"./handlers/kali.js\";\nimport { handleLocalAgent } from \"./handlers/local-agent.js\";\nimport { handleEnrichment } from \"./handlers/enrichment.js\";\nimport { handleStorefront } from \"./handlers/storefront.js\";\nimport { handleApiDocs } from \"./handlers/api-docs.js\";\nimport { handleClickHouse } from \"./handlers/clickhouse.js\";\nimport { summarizeResult, withTimeout } from \"./lib/utils.js\";\n\n// ============================================================================\n// TELEMETRY — ClickHouse span buffer (replaces Postgres audit_logs buffer)\n// ============================================================================\n\nimport { queueSpan, flushSpans, auditRowToSpan, classifyErrorType } from \"./lib/clickhouse-buffer.js\";\n\n// Re-export for callers that used flushAuditLogs (e.g. index.ts shutdown)\nexport { flushSpans };\n\n// ============================================================================\n// IN-MEMORY EXECUTION METRICS\n// ============================================================================\n\nconst toolMetrics = new Map<string, { invocations: number; errors: number; totalMs: number; lastMs: number }>();\n\nexport function getToolMetrics(): Record<string, { invocations: number; errors: number; avgMs: number; lastMs: number }> {\n const result: Record<string, { invocations: number; errors: number; avgMs: number; lastMs: number }> = {};\n for (const [name, m] of toolMetrics) {\n result[name] = { invocations: m.invocations, errors: m.errors, avgMs: m.invocations > 0 ? Math.round(m.totalMs / m.invocations) : 0, lastMs: m.lastMs };\n }\n return result;\n}\n\nfunction recordToolMetric(toolName: string, durationMs: number, success: boolean): void {\n let m = toolMetrics.get(toolName);\n if (!m) { m = { invocations: 0, errors: 0, totalMs: 0, lastMs: 0 }; toolMetrics.set(toolName, m); }\n m.invocations++;\n m.totalMs += durationMs;\n m.lastMs = durationMs;\n if (!success) m.errors++;\n}\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface ToolDef {\n name: string;\n description: string;\n input_schema: Record<string, unknown>;\n}\n\nexport interface UserToolRow {\n id: string;\n name: string;\n display_name: string;\n description: string;\n input_schema: Record<string, unknown>;\n execution_type: \"rpc\" | \"http\" | \"sql\";\n is_read_only: boolean;\n requires_approval: boolean;\n http_config: Record<string, unknown> | null;\n rpc_function: string | null;\n sql_template: string | null;\n allowed_tables: string[] | null;\n max_execution_time_ms: number;\n}\n\nexport interface AgentConfig {\n id: string;\n name: string;\n description: string;\n system_prompt: string;\n model: string;\n max_tokens: number;\n max_tool_calls: number;\n temperature: number;\n enabled_tools: string[];\n can_query: boolean;\n can_send: boolean;\n can_modify: boolean;\n tone: string;\n verbosity: string;\n api_key: string | null;\n store_id: string | null;\n context_config: {\n includeLocations?: boolean;\n locationIds?: string[];\n includeCustomers?: boolean;\n customerSegments?: string[];\n max_history_chars?: number;\n max_tool_result_chars?: number;\n max_message_chars?: number;\n // Context management overrides — match Anthropic API defaults when unset\n compaction_trigger_tokens?: number;\n compaction_total_budget?: number;\n clear_thinking_keep?: number;\n clear_tool_uses_trigger?: number;\n clear_tool_uses_keep?: number;\n session_cost_budget_usd?: number;\n // Agent loop behavior — DB is single source of truth, defaults in AGENT_DEFAULTS\n max_concurrent_tools?: number;\n enable_delegation?: boolean;\n max_duration_ms?: number;\n enable_model_routing?: boolean;\n subagent_max_tokens?: number;\n subagent_max_turns?: number;\n subagent_temperature?: number;\n } | null;\n}\n\n// ============================================================================\n// TOOL REGISTRY (loaded from database — same as CLI and edge function)\n// ============================================================================\n\nexport interface ToolLoadResult {\n /** Core tools — always sent to the model (auto_load=true + discover_tools) */\n core: ToolDef[];\n /** Extended tools — only name+description sent; full schema loaded on demand */\n extended: ToolDef[];\n /** All tools combined (backward compat for callers that don't need the split) */\n all: ToolDef[];\n}\n\nlet cachedResult: ToolLoadResult | null = null;\nlet cacheTime = 0;\n\n/** Pre-computed API-ready tool defs (name + truncated description + input_schema).\n * Computed once at load time, reused every turn without re-serialization. */\nlet cachedApiToolDefs: Map<string, { name: string; description: string; input_schema: Record<string, unknown> }> | null = null;\n\n/** Truncate a description to maxLen characters, ending at a word boundary with ellipsis. */\nfunction truncateDescription(desc: string, maxLen = 150): string {\n if (desc.length <= maxLen) return desc;\n const cut = desc.lastIndexOf(\" \", maxLen - 3);\n return desc.substring(0, cut > 0 ? cut : maxLen - 3) + \"...\";\n}\n\n/**\n * Load tools from ai_tool_registry, split into core (auto_load=true) and extended.\n * The `discover_tools` meta-tool is always injected into core.\n * Descriptions are truncated to 150 chars at load time.\n */\nexport async function loadTools(supabase: SupabaseClient, forceRefresh = false): Promise<ToolLoadResult> {\n if (!forceRefresh && cachedResult && Date.now() - cacheTime < 60_000) return cachedResult;\n\n const { data, error } = await supabase\n .from(\"ai_tool_registry\")\n .select(\"name, description, definition, auto_load\")\n .eq(\"is_active\", true)\n .neq(\"tool_mode\", \"code\");\n\n if (error || !data) {\n return cachedResult || { core: [], extended: [], all: [] };\n }\n\n const allTools: ToolDef[] = data.map((t: any) => ({\n name: t.name,\n description: sanitizeToolDescription(\n truncateDescription(t.description || t.definition?.description || t.name),\n ),\n input_schema: t.definition?.input_schema || { type: \"object\", properties: {} },\n }));\n\n const core: ToolDef[] = [];\n const extended: ToolDef[] = [];\n\n // Check if any row has auto_load set — if the column doesn't exist yet\n // (migration not run), all values will be null/undefined. In that case,\n // treat ALL tools as core to preserve pre-migration behavior.\n const migrationApplied = data.some((t: any) => t.auto_load === true || t.auto_load === false);\n\n if (!migrationApplied) {\n // Pre-migration: all tools are core (original behavior)\n core.push(...allTools);\n } else {\n for (let i = 0; i < data.length; i++) {\n if (data[i].auto_load) {\n core.push(allTools[i]);\n } else {\n extended.push(allTools[i]);\n }\n }\n }\n\n // Always inject discover_tools into core set\n if (!core.some(t => t.name === \"discover_tools\")) {\n core.push(DISCOVER_TOOLS_DEF);\n }\n\n // Pre-compute API-ready tool defs keyed by name — avoids per-turn .map()\n cachedApiToolDefs = new Map();\n for (const t of [...core, ...extended]) {\n cachedApiToolDefs.set(t.name, {\n name: t.name,\n description: t.description,\n input_schema: t.input_schema,\n });\n }\n\n cachedResult = { core, extended, all: allTools };\n cacheTime = Date.now();\n return cachedResult;\n}\n\n/**\n * Get pre-computed API-ready tool definitions. Returns frozen objects keyed by name\n * so the agent loop can look up defs without re-mapping every turn.\n * Falls back to building from a ToolDef[] if cache not yet populated.\n */\nexport function getCachedToolDefs(\n tools: ToolDef[],\n): Array<{ name: string; description: string; input_schema: Record<string, unknown> }> {\n if (cachedApiToolDefs) {\n // Fast path: look up each active tool in the pre-computed map\n const result: Array<{ name: string; description: string; input_schema: Record<string, unknown> }> = [];\n for (const t of tools) {\n const cached = cachedApiToolDefs.get(t.name);\n if (cached) {\n result.push(cached);\n } else {\n // Dynamic tool (e.g. delegate_task, user tools, discovered tools) — build on the fly\n result.push({\n name: t.name,\n description: truncateDescription(t.description),\n input_schema: t.input_schema,\n });\n }\n }\n return result;\n }\n // Fallback: cache not populated yet — build from scratch with truncation\n return tools.map((t) => ({\n name: t.name,\n description: truncateDescription(t.description),\n input_schema: t.input_schema,\n }));\n}\n\n/** discover_tools meta-tool — lets the model load extended tool schemas on demand */\nconst DISCOVER_TOOLS_DEF: ToolDef = {\n name: \"discover_tools\",\n description: \"Load full schemas for extended tools not in your core set. Call this before using a tool that is listed under 'Extended Tools' in your system prompt. You can load tools by name or by category.\",\n input_schema: {\n type: \"object\",\n properties: {\n names: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Specific tool names to load (e.g. ['kali', 'browser', 'voice'])\",\n },\n category: {\n type: \"string\",\n description: \"Load all tools in this category (e.g. 'security', 'media', 'operations')\",\n },\n refresh: {\n type: \"boolean\",\n description: \"Force reload tool definitions from DB (bust cache). Use when tools may have been updated mid-conversation.\",\n },\n },\n },\n};\n\n// ============================================================================\n// USER TOOLS (per-store custom tools from user_tools table)\n// ============================================================================\n\nconst userToolCache = new Map<string, { tools: UserToolRow[]; defs: ToolDef[]; time: number; lastAccessed: number }>();\nconst USER_TOOL_CACHE_MAX = 100;\n\nfunction evictUserToolCache(): void {\n if (userToolCache.size <= USER_TOOL_CACHE_MAX) return;\n const entries = [...userToolCache.entries()].sort((a, b) => a[1].lastAccessed - b[1].lastAccessed);\n const excess = userToolCache.size - USER_TOOL_CACHE_MAX;\n for (let i = 0; i < excess; i++) {\n userToolCache.delete(entries[i][0]);\n }\n}\n\nexport async function loadUserTools(supabase: SupabaseClient, storeId: string): Promise<{ rows: UserToolRow[]; defs: ToolDef[] }> {\n const cached = userToolCache.get(storeId);\n if (cached && Date.now() - cached.time < 60_000) {\n cached.lastAccessed = Date.now();\n return { rows: cached.tools, defs: cached.defs };\n }\n\n const { data, error } = await supabase\n .from(\"user_tools\")\n .select(\"id, name, display_name, description, input_schema, execution_type, is_read_only, requires_approval, http_config, rpc_function, sql_template, allowed_tables, max_execution_time_ms\")\n .eq(\"store_id\", storeId)\n .eq(\"is_active\", true);\n\n if (error || !data?.length) return { rows: [], defs: [] };\n\n const rows: UserToolRow[] = data as UserToolRow[];\n const defs: ToolDef[] = rows.map((t) => ({\n name: `user_tool__${t.name}`,\n description: sanitizeToolDescription(\n `[Custom Tool] ${t.display_name}: ${t.description}${t.requires_approval ? \" (requires approval)\" : \"\"}`,\n ),\n input_schema: t.input_schema || { type: \"object\", properties: {} },\n }));\n\n userToolCache.set(storeId, { tools: rows, defs, time: Date.now(), lastAccessed: Date.now() });\n evictUserToolCache();\n return { rows, defs };\n}\n\nexport function getUserToolByPrefixedName(rows: UserToolRow[], prefixedName: string): UserToolRow | undefined {\n const toolName = prefixedName.replace(/^user_tool__/, \"\");\n return rows.find((t) => t.name === toolName);\n}\n\nexport function getToolsForAgent(agent: AgentConfig, coreTools: ToolDef[], userToolDefs: ToolDef[] = []): ToolDef[] {\n // Core registry tools are always available (matches MCP server behavior).\n // enabled_tools only restricts custom user tools.\n if (agent.enabled_tools?.length > 0) {\n const filteredUserTools = userToolDefs.filter((t) => agent.enabled_tools.includes(t.name));\n return [...coreTools, ...filteredUserTools];\n }\n return [...coreTools, ...userToolDefs];\n}\n\n// ============================================================================\n// UNIFIED HANDLER REGISTRY — single source of truth for all tool dispatch\n// ============================================================================\n\nexport type ToolProgressCallback = (toolName: string, progress: unknown) => void;\n\ntype ToolHandler = (\n sb: SupabaseClient,\n args: Record<string, unknown>,\n storeId?: string,\n onToolProgress?: (progress: unknown) => void,\n) => Promise<{ success: boolean; data?: unknown; error?: string }>;\n\ninterface ToolHandlerEntry {\n handler: ToolHandler;\n timeout: number; // ms — execution timeout\n requiresStore: boolean; // whether store_id is mandatory\n supportsProgress?: boolean; // handler accepts onToolProgress (4th param)\n}\n\nconst DEFAULT_TIMEOUT = 30_000;\n\n/**\n * Every built-in tool MUST be registered here. This map is the single source\n * of truth for handler routing, timeouts, and store requirements.\n * Adding a tool to ai_tool_registry without an entry here → \"Unknown tool\" error.\n */\nexport const TOOL_HANDLERS: Record<string, ToolHandlerEntry> = {\n // --- Business Data ---\n inventory: { handler: (sb, args, sid) => {\n const a = args.action as string || \"\";\n if (a.startsWith(\"audit_\")) return handleInventoryAudit(sb, { ...args, action: a.slice(6) }, sid);\n if ([\"summary\",\"velocity\",\"by_location\",\"in_stock\",\"out_of_stock\",\"by_category\"].includes(a)) return handleInventoryQuery(sb, args, sid);\n return handleInventory(sb, args, sid);\n }, timeout: DEFAULT_TIMEOUT, requiresStore: true },\n purchase_orders: { handler: handlePurchaseOrders, timeout: DEFAULT_TIMEOUT, requiresStore: true },\n transfers: { handler: handleTransfers, timeout: DEFAULT_TIMEOUT, requiresStore: true },\n products: { handler: handleProducts, timeout: DEFAULT_TIMEOUT, requiresStore: true },\n collections: { handler: handleCollections, timeout: DEFAULT_TIMEOUT, requiresStore: true },\n customers: { handler: handleCustomers, timeout: DEFAULT_TIMEOUT, requiresStore: true },\n orders: { handler: handleOrders, timeout: DEFAULT_TIMEOUT, requiresStore: true },\n analytics: { handler: handleAnalytics, timeout: DEFAULT_TIMEOUT, requiresStore: true },\n locations: { handler: handleLocations, timeout: DEFAULT_TIMEOUT, requiresStore: true },\n suppliers: { handler: handleSuppliers, timeout: DEFAULT_TIMEOUT, requiresStore: true },\n store: { handler: handleStore, timeout: DEFAULT_TIMEOUT, requiresStore: true },\n storefront: { handler: handleStorefront, timeout: DEFAULT_TIMEOUT, requiresStore: true },\n\n // --- Communication ---\n email: { handler: handleEmail, timeout: DEFAULT_TIMEOUT, requiresStore: true },\n documents: { handler: handleDocuments, timeout: 120_000, requiresStore: true },\n\n // --- Operations ---\n alerts: { handler: handleAlerts, timeout: DEFAULT_TIMEOUT, requiresStore: true },\n audit_trail: { handler: handleAuditTrail, timeout: DEFAULT_TIMEOUT, requiresStore: true },\n workflows: { handler: handleWorkflows, timeout: DEFAULT_TIMEOUT, requiresStore: true },\n\n // --- AI & Generation ---\n voice: { handler: handleVoice, timeout: 120_000, requiresStore: true },\n image_gen: { handler: handleImageGen, timeout: 60_000, requiresStore: true },\n remove_bg: { handler: handleRemoveBg, timeout: 60_000, requiresStore: true },\n media: { handler: handleMedia, timeout: 60_000, requiresStore: true },\n video_gen: { handler: handleVideoGen, timeout: 600_000, requiresStore: true },\n llm: { handler: handleLLM, timeout: 120_000, requiresStore: true },\n embeddings: { handler: handleEmbeddings, timeout: 60_000, requiresStore: true },\n creations: { handler: handleCreations, timeout: 60_000, requiresStore: true },\n\n // --- Platform & Infrastructure (no store required) ---\n web_search: { handler: handleWebSearch, timeout: DEFAULT_TIMEOUT, requiresStore: false },\n telemetry: { handler: handleTelemetry, timeout: DEFAULT_TIMEOUT, requiresStore: true },\n browser: { handler: handleBrowser, timeout: 120_000, requiresStore: true },\n discovery: { handler: handleDiscovery, timeout: DEFAULT_TIMEOUT, requiresStore: false },\n api_keys: { handler: handleAPIKeys, timeout: DEFAULT_TIMEOUT, requiresStore: true },\n api_docs: { handler: handleApiDocs, timeout: 5000, requiresStore: false },\n\n // --- Advertising ---\n meta_ads: { handler: handleMetaAds, timeout: 300_000, requiresStore: true },\n\n // --- Security & Local ---\n kali: { handler: handleKali as ToolHandler, timeout: 600_000, requiresStore: true, supportsProgress: true },\n local_agent: { handler: handleLocalAgent, timeout: 600_000, requiresStore: false },\n\n // --- Customer Data Protection ---\n enrichment: { handler: handleEnrichment, timeout: 60_000, requiresStore: true },\n\n // --- Observability (ClickHouse) ---\n clickhouse: { handler: handleClickHouse, timeout: 60_000, requiresStore: false },\n\n // --- Meta: Tool Discovery (lazy loading) ---\n discover_tools: { handler: handleDiscoverTools, timeout: 5000, requiresStore: false },\n};\n\nObject.freeze(TOOL_HANDLERS);\n\n/** Get all registered built-in tool names */\nexport function getRegisteredToolNames(): string[] {\n return Object.keys(TOOL_HANDLERS);\n}\n\n// ============================================================================\n// DISCOVER_TOOLS HANDLER — returns full schemas for extended tools on demand\n// ============================================================================\n\n/** Full extended tool defs (with schemas) — used by handleDiscoverTools to return schemas on demand */\nlet _extendedToolsCache: ToolDef[] = [];\n\n/** Lightweight extended tool index — name + first-sentence description only (for system prompt) */\nlet _extendedToolsIndex: Array<{ name: string; description: string }> = [];\n\n/** Called by index.ts after loadTools() to populate the discover_tools cache.\n * Stores full schemas for on-demand loading, plus a lightweight index for the system prompt. */\nexport function setExtendedToolsCache(tools: ToolDef[]): void {\n _extendedToolsCache = tools;\n // Pre-compute lightweight index: name + first sentence only (no schemas)\n _extendedToolsIndex = tools.map(t => ({\n name: t.name,\n description: t.description.split(\".\")[0],\n }));\n}\n\n/** Get full extended tools with schemas (for discover_tools handler) */\nexport function getExtendedToolsCache(): ToolDef[] {\n return _extendedToolsCache;\n}\n\n/** Get lightweight extended tools index — name + short description only (for system prompt).\n * Avoids serializing full schemas into the prompt. */\nexport function getExtendedToolsIndex(): Array<{ name: string; description: string }> {\n return _extendedToolsIndex;\n}\n\n/**\n * Get full tool schemas for specific tool names from the extended tools cache.\n * Used by the agent loop to inject discovered tool schemas into the active tool set.\n * Returns only tools that exist in the cache; unknown names are silently skipped.\n */\nexport function getFullToolSchemas(toolNames: string[]): ToolDef[] {\n if (!toolNames.length || !_extendedToolsCache.length) return [];\n const nameSet = new Set(toolNames);\n return _extendedToolsCache.filter(t => nameSet.has(t.name));\n}\n\n// Tool category heuristics — maps tool names to categories for category-based discovery\nconst TOOL_CATEGORIES: Record<string, string> = {\n // Business Data\n inventory: \"business\", purchase_orders: \"business\", transfers: \"business\",\n products: \"business\", collections: \"business\", customers: \"business\",\n orders: \"business\", analytics: \"business\", locations: \"business\",\n suppliers: \"business\", store: \"business\", storefront: \"business\",\n // Communication\n email: \"communication\", documents: \"communication\",\n // Operations\n alerts: \"operations\", audit_trail: \"operations\", workflows: \"operations\",\n telemetry: \"operations\",\n // Media & AI\n voice: \"media\", image_gen: \"media\", video_gen: \"media\", remove_bg: \"media\", media: \"media\",\n llm: \"ai\", embeddings: \"ai\", creations: \"media\",\n // Platform\n web_search: \"platform\", browser: \"platform\", discovery: \"platform\",\n api_keys: \"platform\", api_docs: \"platform\",\n // Security\n kali: \"security\", local_agent: \"platform\",\n // Advertising\n meta_ads: \"advertising\",\n // Data\n enrichment: \"data\",\n};\n\nasync function handleDiscoverTools(\n sb: SupabaseClient,\n args: Record<string, unknown>,\n): Promise<{ success: boolean; data?: unknown; error?: string }> {\n const names = args.names as string[] | undefined;\n const category = args.category as string | undefined;\n const refresh = args.refresh as boolean | undefined;\n\n // Force reload from DB if refresh requested — busts the 60s cache\n if (refresh) {\n try {\n const freshResult = await loadTools(sb, true);\n setExtendedToolsCache(freshResult.extended);\n } catch {\n // If refresh fails, continue with stale cache — better than erroring\n }\n }\n\n if (!names?.length && !category) {\n return { success: false, error: \"Provide 'names' (array of tool names) or 'category' to discover tools.\" };\n }\n\n let matching: ToolDef[] = [];\n\n if (names?.length) {\n const nameSet = new Set(names);\n matching = _extendedToolsCache.filter(t => nameSet.has(t.name));\n }\n\n if (category) {\n const cat = category.toLowerCase();\n const categoryTools = _extendedToolsCache.filter(t => TOOL_CATEGORIES[t.name] === cat);\n // Merge without duplicates\n const existingNames = new Set(matching.map(t => t.name));\n for (const t of categoryTools) {\n if (!existingNames.has(t.name)) matching.push(t);\n }\n }\n\n if (matching.length === 0) {\n const available = _extendedToolsCache.map(t => t.name).join(\", \");\n return { success: false, error: `No matching extended tools found. Available: ${available}` };\n }\n\n return {\n success: true,\n data: {\n tools: matching.map(t => ({ name: t.name, description: t.description, input_schema: t.input_schema })),\n count: matching.length,\n refreshed: !!refresh,\n },\n };\n}\n\n// ============================================================================\n// USER TOOL EXECUTOR — handles RPC, HTTP, SQL execution types\n// ============================================================================\n\nasync function executeUserTool(\n supabase: SupabaseClient,\n userTool: UserToolRow,\n args: Record<string, unknown>,\n storeId: string,\n agentId?: string,\n conversationId?: string,\n): Promise<{ success: boolean; data?: unknown; error?: string }> {\n const timeout = userTool.max_execution_time_ms || 5000;\n\n if (userTool.execution_type === \"http\") {\n return executeHTTPUserTool(supabase, userTool, args, storeId, timeout);\n }\n\n try {\n const { data, error } = await supabase.rpc(\"execute_user_tool\", {\n p_tool_id: userTool.id,\n p_store_id: storeId,\n p_args: args,\n p_agent_id: agentId || null,\n p_conversation_id: conversationId || null,\n });\n\n if (error) return { success: false, error: error.message };\n\n const result = data as { success: boolean; data?: unknown; error?: string; pending_approval?: boolean; execution_id?: string; message?: string };\n\n if (result.pending_approval) {\n return { success: false, error: `Tool requires approval. Execution ID: ${result.execution_id}. ${result.message}` };\n }\n\n if (result.success && result.data && (result.data as any).execute_sql) {\n return executeSQLUserTool(supabase, result.data as any, args, storeId);\n }\n\n return result.success\n ? { success: true, data: result.data }\n : { success: false, error: result.error || \"Unknown error\" };\n } catch (err) {\n return { success: false, error: sanitizeError(err) };\n }\n}\n\nasync function executeHTTPUserTool(\n supabase: SupabaseClient,\n userTool: UserToolRow,\n args: Record<string, unknown>,\n storeId: string,\n timeout: number,\n): Promise<{ success: boolean; data?: unknown; error?: string }> {\n const config = userTool.http_config;\n if (!config || !(config as any).url) {\n return { success: false, error: \"HTTP tool has no URL configured\" };\n }\n\n const httpCfg = config as { url: string; method?: string; headers?: Record<string, string>; body_template?: Record<string, unknown> };\n\n let url = httpCfg.url;\n let headers: Record<string, string> = { ...(httpCfg.headers || {}) };\n\n // Collect secret names referenced in the URL, headers, and body template\n const configStr = JSON.stringify({ url: httpCfg.url, headers: httpCfg.headers, body: httpCfg.body_template });\n const secretRefs = [...configStr.matchAll(/\\{\\{secret:(\\w+)\\}\\}/g)].map(m => m[1]);\n\n // Decrypt each referenced secret via RPC (consistent with all other handlers)\n const secretMap = new Map<string, string>();\n await Promise.all(\n [...new Set(secretRefs)].map(async (name) => {\n try {\n const { data } = await supabase.rpc(\"decrypt_secret\", { p_name: name, p_store_id: storeId });\n if (data) secretMap.set(name, data as string);\n } catch { /* secret not found — will remain as {{secret:NAME}} placeholder */ }\n }),\n );\n\n const resolveSecrets = (text: string): string => {\n return text.replace(/\\{\\{secret:(\\w+)\\}\\}/g, (_, name) => secretMap.get(name) || `{{secret:${name}}}`);\n };\n\n const resolveArgs = (text: string): string => {\n return text.replace(/\\{\\{(\\w+)\\}\\}/g, (_, name) => {\n if (name === \"secret\") return `{{${name}}}`;\n const val = args[name];\n return val !== undefined ? String(val) : `{{${name}}}`;\n });\n };\n\n const resolve = (text: string): string => resolveSecrets(resolveArgs(text));\n\n url = resolve(url);\n for (const [key, val] of Object.entries(headers)) {\n headers[key] = resolve(val);\n }\n\n let body: string | undefined;\n const method = (httpCfg.method || \"GET\").toUpperCase();\n if (method !== \"GET\" && method !== \"HEAD\") {\n if (httpCfg.body_template) {\n const resolvedBody: Record<string, unknown> = {};\n for (const [key, val] of Object.entries(httpCfg.body_template)) {\n if (typeof val === \"string\") {\n resolvedBody[key] = resolve(val);\n } else {\n resolvedBody[key] = val;\n }\n }\n for (const [key, val] of Object.entries(args)) {\n if (!(key in resolvedBody)) {\n resolvedBody[key] = val;\n }\n }\n body = JSON.stringify(resolvedBody);\n } else {\n body = JSON.stringify(args);\n }\n if (!headers[\"Content-Type\"] && !headers[\"content-type\"]) {\n headers[\"Content-Type\"] = \"application/json\";\n }\n }\n\n // P0 FIX: Use shared SSRF guard with DNS resolve-then-check (replaces inline regex)\n const ssrfError = await validateUrl(url);\n if (ssrfError) {\n return { success: false, error: `Blocked: ${ssrfError}` };\n }\n\n try {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), timeout);\n\n const resp = await fetch(url, { method, headers, body, signal: controller.signal });\n clearTimeout(timer);\n\n // Clear secrets from memory as soon as the request is sent\n secretMap.clear();\n\n const contentType = resp.headers.get(\"content-type\") || \"\";\n let data: unknown;\n if (contentType.includes(\"json\")) {\n data = await resp.json();\n } else {\n data = await resp.text();\n }\n\n if (!resp.ok) {\n return { success: false, error: `HTTP ${resp.status}: ${typeof data === \"string\" ? data.substring(0, 500) : JSON.stringify(data).substring(0, 500)}` };\n }\n\n return { success: true, data };\n } catch (err: any) {\n // Clear secrets from memory even on error\n secretMap.clear();\n if (err.name === \"AbortError\") {\n return { success: false, error: `HTTP request timed out after ${timeout}ms` };\n }\n return { success: false, error: sanitizeError(err) };\n }\n}\n\nasync function executeSQLUserTool(\n supabase: SupabaseClient,\n sqlConfig: { template: string; allowed_tables: string[]; is_read_only: boolean },\n args: Record<string, unknown>,\n storeId: string,\n): Promise<{ success: boolean; data?: unknown; error?: string }> {\n if (!sqlConfig.is_read_only) {\n return { success: false, error: \"Write SQL tools are not supported in server execution\" };\n }\n\n if (!sqlConfig.template) {\n return { success: false, error: \"No SQL template configured\" };\n }\n\n try {\n const { data, error } = await supabase.rpc(\"execute_safe_sql\", {\n p_sql: sqlConfig.template,\n p_params: args,\n p_store_id: storeId,\n p_allowed_tables: sqlConfig.allowed_tables || [],\n });\n\n if (error) return { success: false, error: error.message };\n\n if (data?.success) {\n return { success: true, data: data.data };\n }\n return { success: false, error: data?.error || \"SQL execution failed\" };\n } catch (err) {\n return { success: false, error: sanitizeError(err) };\n }\n}\n\n// ============================================================================\n// SUPPLY CHAIN — action aliasing (LLMs omit po_/transfer_ prefix)\n// ============================================================================\n\nasync function executeSupplyChain(\n supabase: SupabaseClient,\n args: Record<string, unknown>,\n storeId?: string,\n traceId?: string,\n userId?: string | null,\n userEmail?: string | null,\n source?: string,\n conversationId?: string,\n userToolRows?: UserToolRow[],\n agentId?: string,\n): Promise<{ success: boolean; data?: unknown; error?: string }> {\n let scAction = args.action as string || \"\";\n const PO_ALIASES: Record<string, string> = {\n create: \"po_create\", list: \"po_list\", get: \"po_get\",\n add_items: \"po_add_items\", approve: \"po_approve\", mark_ordered: \"po_mark_ordered\",\n receive: \"po_receive\", cancel: \"po_cancel\",\n };\n if (PO_ALIASES[scAction]) scAction = PO_ALIASES[scAction];\n\n if (scAction === \"find_suppliers\") {\n return executeTool(supabase, \"suppliers\", { ...args, action: \"find_suppliers\" }, storeId, traceId, userId, userEmail, source, conversationId, userToolRows, agentId);\n }\n if (scAction.startsWith(\"po_\")) {\n return executeTool(supabase, \"purchase_orders\", { ...args, action: scAction.slice(3) }, storeId, traceId, userId, userEmail, source, conversationId, userToolRows, agentId);\n }\n if (scAction.startsWith(\"transfer_\")) {\n return executeTool(supabase, \"transfers\", { ...args, action: scAction.slice(9) }, storeId, traceId, userId, userEmail, source, conversationId, userToolRows, agentId);\n }\n return { success: false, error: `Unknown supply_chain action: ${scAction}. Use po_create, po_list, po_get, po_approve, po_receive, po_cancel, transfer_create, transfer_list, transfer_approve, transfer_ship, transfer_receive, transfer_cancel, find_suppliers.` };\n}\n\n// ============================================================================\n// TOOL EXECUTOR — dispatches via unified handler registry\n// ============================================================================\n\nexport async function executeTool(\n supabase: SupabaseClient,\n toolName: string,\n args: Record<string, unknown>,\n storeId?: string,\n traceId?: string,\n userId?: string | null,\n userEmail?: string | null,\n source?: string,\n conversationId?: string,\n userToolRows?: UserToolRow[],\n agentId?: string,\n onToolProgress?: ToolProgressCallback,\n /** Skip per-tool audit when called within a conversation — persistAgentTurn handles it */\n skipAudit?: boolean,\n): Promise<{ success: boolean; data?: unknown; error?: string }> {\n const startTime = Date.now();\n const action = args.action as string | undefined;\n let result: { success: boolean; data?: unknown; error?: string };\n\n // Handle supply_chain aliases (LLMs often omit po_/transfer_ prefix)\n if (toolName === \"supply_chain\") {\n return executeSupplyChain(supabase, args, storeId, traceId, userId, userEmail, source, conversationId, userToolRows, agentId);\n }\n\n // Look up handler from unified registry\n const entry = TOOL_HANDLERS[toolName];\n\n // Check store requirement from registry (not hardcoded)\n const requiresStore = entry ? entry.requiresStore : true;\n if (requiresStore && (!storeId || !/^[0-9a-fA-F]{8}-/.test(storeId))) {\n return { success: false, error: `store_id is required for ${toolName}. Ensure a store is selected.` };\n }\n\n // Permission enforcement — check agent flags before tool execution\n if (agentId) {\n const { data: agentFlags } = await supabase.from(\"ai_agent_config\")\n .select(\"can_query, can_modify\")\n .eq(\"id\", agentId).single();\n if (agentFlags) {\n // Read-only agent check — block ALL tool calls if can_query is false\n if (!agentFlags.can_query) {\n const readActions = [\"list\", \"get\", \"search\", \"query\", \"summary\", \"stats\", \"count\", \"by_location\", \"in_stock\", \"out_of_stock\", \"velocity\"];\n const action = args.action as string | undefined;\n if (action && readActions.includes(action)) {\n return { success: false, error: `Agent does not have query permission (can_query=false). Contact an admin.` };\n }\n }\n // Mutation check — already in system prompt but enforce at execution level\n if (!agentFlags.can_modify) {\n const writeActions = [\"create\", \"update\", \"delete\", \"upsert\", \"send\", \"approve\", \"cancel\", \"add\", \"remove\", \"set\", \"adjust\", \"transfer\"];\n const action = args.action as string | undefined;\n if (action && writeActions.some(wa => action.startsWith(wa))) {\n return { success: false, error: `Agent has read-only access (can_modify=false). Cannot perform \"${action}\".` };\n }\n }\n }\n }\n\n // User tool approval check — requires_approval enforced at execution level\n if (toolName.startsWith(\"user_tool__\") && userToolRows?.length) {\n const userTool = getUserToolByPrefixedName(userToolRows, toolName);\n if (userTool?.requires_approval) {\n return { success: false, error: `Tool \"${userTool.display_name}\" requires approval before execution. Use the workflow approval system to request permission.` };\n }\n }\n\n // Validate mutation args before dispatch — read-only actions pass through\n const validation = validateToolArgs(toolName, args);\n if (!validation.valid) {\n return { success: false, error: validation.error };\n }\n args = validation.data;\n\n const execStartMs = Date.now();\n try {\n let toolPromise: Promise<{ success: boolean; data?: unknown; error?: string }>;\n\n if (entry) {\n // Dispatch via unified handler registry — pass progress callback to handlers that support it\n const progressCb = entry.supportsProgress && onToolProgress\n ? (progress: unknown) => onToolProgress(toolName, progress)\n : undefined;\n toolPromise = entry.handler(supabase, args, storeId, progressCb);\n } else if (toolName.startsWith(\"user_tool__\") && userToolRows && storeId) {\n // Custom user tools\n const userTool = getUserToolByPrefixedName(userToolRows, toolName);\n if (userTool) {\n toolPromise = executeUserTool(supabase, userTool, args, storeId, agentId, conversationId);\n } else {\n toolPromise = Promise.resolve({ success: false, error: `Unknown user tool: ${toolName}` });\n }\n } else {\n toolPromise = Promise.resolve({ success: false, error: `Unknown tool: ${toolName}. Use the discover_tools action to see available tools.` });\n }\n\n const timeoutMs = entry?.timeout || DEFAULT_TIMEOUT;\n\n // FIX 7: Timeout cascade validation — warn if step timeout < tool timeout\n const stepTimeout = args._step_timeout_seconds as number | undefined;\n if (stepTimeout && stepTimeout * 1000 < timeoutMs) {\n console.warn(`[timeout-cascade] Step timeout (${stepTimeout}s) < tool timeout (${timeoutMs / 1000}s) for ${toolName}. Tool may outlive step.`);\n }\n\n result = await withTimeout(toolPromise, timeoutMs, toolName);\n } catch (err) {\n result = { success: false, error: sanitizeError(err) };\n }\n\n // Record execution metrics\n recordToolMetric(toolName, Date.now() - execStartMs, result.success);\n\n // Audit log — enriched with OTEL fields for distributed tracing\n // Skipped when tool is called within a conversation (SSE chat, channel agent, workflow)\n // because persistAgentTurn already logs the full conversation with tool details\n if (skipAudit) return result;\n try {\n const endTime = Date.now();\n // Compute payload sizes for observability\n const inputJson = JSON.stringify(args);\n const outputJson = result.data ? JSON.stringify(result.data) : \"\";\n const inputBytes = inputJson.length;\n const outputBytes = outputJson.length;\n\n const details: Record<string, unknown> = {\n source: source || \"fly_container\",\n args,\n // Keys that SwiftUI telemetry panel reads for rich display\n tool_input: args,\n input_bytes: inputBytes,\n output_bytes: outputBytes,\n };\n if (result.success && result.data) {\n details.result_summary = summarizeResult(toolName, action, result.data);\n // Store full result for rich telemetry display (capped at 50KB to prevent JSONB bloat)\n if (outputBytes <= 50_000) {\n details.tool_result = result.data;\n } else {\n details.tool_result = {\n _truncated: true,\n _type: Array.isArray(result.data) ? \"array\" : \"object\",\n _size: outputBytes,\n _count: Array.isArray(result.data) ? result.data.length : Object.keys(result.data as object).length,\n };\n }\n }\n if (result.error) {\n details.tool_error = result.error;\n const errorType = classifyErrorType(result.error);\n if (errorType) details.error_type = errorType;\n }\n const bytes = new Uint8Array(8);\n crypto.getRandomValues(bytes);\n const spanId = Array.from(bytes).map(b => b.toString(16).padStart(2, \"0\")).join(\"\");\n const auditRow: Record<string, unknown> = {\n action: `tool.${toolName}${action ? `.${action}` : \"\"}`,\n severity: result.success ? \"info\" : \"error\",\n store_id: storeId || null,\n resource_type: \"mcp_tool\",\n resource_id: toolName,\n request_id: traceId || null,\n conversation_id: conversationId || null,\n source: source || \"fly_container\",\n details,\n error_message: result.error || null,\n error_type: classifyErrorType(result.error) || undefined,\n duration_ms: endTime - startTime,\n user_id: userId || null,\n user_email: userEmail || null,\n input_bytes: inputBytes,\n output_bytes: outputBytes,\n // OTEL fields\n trace_id: traceId || null,\n span_id: spanId,\n span_kind: \"INTERNAL\",\n service_name: \"agent-server\",\n status_code: result.success ? \"OK\" : \"ERROR\",\n start_time: new Date(startTime).toISOString(),\n end_time: new Date(endTime).toISOString(),\n };\n queueSpan(auditRowToSpan(auditRow));\n } catch (err) {\n console.error(\"[audit] exception:\", err);\n }\n\n return result;\n}\n\n// ============================================================================\n// AGENT LOADER\n// ============================================================================\n\nexport async function loadAgentConfig(supabase: SupabaseClient, agentId: string, storeId?: string): Promise<AgentConfig | null> {\n // storeId is required for tenant isolation — only omit for internal/migration callers\n let query = supabase\n .from(\"ai_agent_config\")\n .select(\"*\")\n .eq(\"id\", agentId);\n\n // ALWAYS filter by store_id when provided (which should be always for user requests)\n if (storeId) {\n query = query.eq(\"store_id\", storeId);\n }\n\n const { data, error } = await query.single();\n\n if (error || !data) return null;\n return data as AgentConfig;\n}\n"],"mappings":"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","ignoreList":[]}