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
@@ -4,202 +4,263 @@
4
4
  * Handles: loop detection, parallel execution, result truncation, bail-out.
5
5
  * Used by agent-loop, subagent, teammate, and server-agent-loop.
6
6
  */
7
+
8
+ import { AGENT_DEFAULTS } from "./agent-core.js";
7
9
  // ============================================================================
8
10
  // TYPES
9
11
  // ============================================================================
12
+
10
13
  /** Hard cap on tool result size — matches Claude Code's 30K char limit.
11
14
  * Prevents single tool outputs from blowing up context. Anthropic's
12
15
  * context_management (clear_tool_uses + compact) handles multi-turn growth;
13
16
  * this cap prevents any ONE result from being catastrophic. */
14
17
  const SAFETY_MAX_CHARS = 30_000;
18
+
15
19
  /** Tools that spawn workers/subprocesses and need much longer than 2 min */
16
20
  const LONG_RUNNING_TOOL_TIMEOUT_MS = 10 * 60 * 1000; // 10 minutes
17
- const LONG_RUNNING_TOOLS = new Set(["team_create", "task", "kali", "delegate_task", "exit_plan_mode", "ask_user_question"]);
21
+ const LONG_RUNNING_TOOLS = new Set(["team_create", "task", "task_output", "kali", "delegate_task", "exit_plan_mode", "ask_user_question"]);
18
22
  // ============================================================================
19
23
  // DISPATCH
20
24
  // ============================================================================
25
+
21
26
  /**
22
27
  * Execute tool calls with loop detection, parallel batching, and truncation.
23
28
  * Returns tool result messages in original order.
24
29
  */
25
30
  export async function dispatchTools(toolCalls, executor, opts) {
26
- const { loopDetector, maxConcurrent = 7, toolTimeoutMs = 120_000, onStart, onResult, signal, transcribeAudio, } = opts;
27
- const resultMap = new Map();
28
- async function executeSingle(tu) {
29
- if (signal?.aborted) {
30
- resultMap.set(tu.id, {
31
- type: "tool_result",
32
- tool_use_id: tu.id,
33
- content: JSON.stringify({ error: "Aborted" }),
34
- });
35
- return;
36
- }
37
- // Loop detection check
38
- const loopCheck = loopDetector.recordCall(tu.name, tu.input);
39
- if (loopCheck.blocked) {
40
- onResult?.(tu.name, false, loopCheck.reason, 0);
41
- resultMap.set(tu.id, {
42
- type: "tool_result",
43
- tool_use_id: tu.id,
44
- content: JSON.stringify({ error: loopCheck.reason }),
45
- });
46
- return;
47
- }
48
- // File read frequency tracking — tool-dispatch knows about read_file,
49
- // LoopDetector.trackRead() stays tool-name-agnostic.
50
- if (tu.name === "read_file" && typeof tu.input.path === "string") {
51
- const readCheck = loopDetector.trackRead(tu.input.path);
52
- if (readCheck.blocked) {
53
- onResult?.(tu.name, false, readCheck.reason, 0);
54
- resultMap.set(tu.id, {
55
- type: "tool_result",
56
- tool_use_id: tu.id,
57
- content: JSON.stringify({ error: readCheck.reason }),
58
- });
59
- return;
60
- }
61
- }
62
- onStart?.(tu.name, tu.input);
63
- const toolStart = Date.now();
64
- let result;
65
- try {
66
- const toolPromise = executor(tu.name, tu.input);
67
- const effectiveTimeout = LONG_RUNNING_TOOLS.has(tu.name)
68
- ? Math.max(toolTimeoutMs, LONG_RUNNING_TOOL_TIMEOUT_MS)
69
- : toolTimeoutMs;
70
- const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error(`Tool "${tu.name}" timed out after ${effectiveTimeout}ms`)), effectiveTimeout));
71
- result = await Promise.race([toolPromise, timeoutPromise]);
72
- }
73
- catch (err) {
74
- result = {
75
- success: false,
76
- output: `Tool execution error: ${err.message || String(err)}`,
77
- };
78
- }
79
- const durationMs = Date.now() - toolStart;
80
- loopDetector.recordResult(tu.name, result.success, tu.input);
81
- onResult?.(tu.name, result.success, result.output, durationMs);
82
- // Check for media markers — convert to appropriate content blocks
83
- const mediaMatch = result.success && typeof result.output === "string"
84
- ? result.output.match(/^__(IMAGE|AUDIO)__(.+?)__(.+)$/)
85
- : null;
86
- let resultBlock;
87
- if (mediaMatch && mediaMatch[1] === "IMAGE") {
88
- // Image → multimodal image content block
89
- resultBlock = {
90
- type: "tool_result",
91
- tool_use_id: tu.id,
92
- content: [
93
- {
94
- type: "image",
95
- source: {
96
- type: "base64",
97
- media_type: mediaMatch[2],
98
- data: mediaMatch[3],
99
- },
100
- },
101
- ],
102
- };
103
- }
104
- else if (mediaMatch && mediaMatch[1] === "AUDIO") {
105
- // Audio → transcribe via Whisper, return transcript as text
106
- let transcript;
107
- if (transcribeAudio) {
108
- try {
109
- transcript = await transcribeAudio(mediaMatch[3], mediaMatch[2]);
110
- }
111
- catch (err) {
112
- transcript = `Audio transcription failed: ${err.message}. The audio file was read successfully but could not be transcribed.`;
113
- }
114
- }
115
- else {
116
- transcript = "Audio file detected but transcription is not available. Configure an OpenAI API key for audio transcription via Whisper.";
117
- }
118
- resultBlock = {
119
- type: "tool_result",
120
- tool_use_id: tu.id,
121
- content: transcript,
122
- };
123
- }
124
- else {
125
- const rawContent = result.success
126
- ? result.output
127
- : JSON.stringify({ error: result.output });
128
- let contentStr = typeof rawContent === "string"
129
- ? rawContent
130
- : JSON.stringify(rawContent);
131
- // Safety-only cap — prevents OOM from pathological tool outputs.
132
- // Normal results flow through unmodified; Anthropic's context_management
133
- // API clears old tool uses when context grows (clear_tool_uses_20250919).
134
- if (contentStr.length > SAFETY_MAX_CHARS) {
135
- contentStr =
136
- contentStr.slice(0, SAFETY_MAX_CHARS) +
137
- `\n\n... (safety truncated — ${contentStr.length.toLocaleString()} chars total)`;
138
- }
139
- resultBlock = {
140
- type: "tool_result",
141
- tool_use_id: tu.id,
142
- content: contentStr,
143
- };
144
- }
145
- resultMap.set(tu.id, resultBlock);
31
+ const {
32
+ loopDetector,
33
+ maxConcurrent = 7,
34
+ toolTimeoutMs = 120_000,
35
+ batchErrorLimit = AGENT_DEFAULTS.loopBatchErrorLimit,
36
+ onStart,
37
+ onResult,
38
+ signal,
39
+ transcribeAudio
40
+ } = opts;
41
+ const resultMap = new Map();
42
+
43
+ /** Shared state for each parallel batch — tracks how many tools failed so we
44
+ * can abort remaining calls and avoid inflating LoopDetector error counts.
45
+ * JavaScript is single-threaded, so between `await` yields this is atomic. */
46
+
47
+ async function executeSingle(tu, batch) {
48
+ // Early exit if batch already aborted or signal fired
49
+ if (batch.aborted || signal?.aborted) {
50
+ resultMap.set(tu.id, {
51
+ type: "tool_result",
52
+ tool_use_id: tu.id,
53
+ content: JSON.stringify({
54
+ error: batch.aborted ? "Batch aborted — too many sibling tool calls failed in this parallel batch. Re-assess your approach." : "Aborted"
55
+ })
56
+ });
57
+ return;
146
58
  }
147
- // Execute in parallel batches
148
- for (let i = 0; i < toolCalls.length; i += maxConcurrent) {
149
- if (signal?.aborted)
150
- break;
151
- const batch = toolCalls.slice(i, i + maxConcurrent);
152
- await Promise.all(batch.map((tu) => executeSingle(tu)));
59
+
60
+ // Loop detection check
61
+ const loopCheck = loopDetector.recordCall(tu.name, tu.input);
62
+ if (loopCheck.blocked) {
63
+ onResult?.(tu.name, false, loopCheck.reason, 0);
64
+ resultMap.set(tu.id, {
65
+ type: "tool_result",
66
+ tool_use_id: tu.id,
67
+ content: JSON.stringify({
68
+ error: loopCheck.reason
69
+ })
70
+ });
71
+ return;
153
72
  }
154
- // Collect results in original order
155
- const results = [];
156
- for (const tu of toolCalls) {
157
- const r = resultMap.get(tu.id);
158
- if (r)
159
- results.push(r);
73
+
74
+ // File read frequency tracking — tool-dispatch knows about read_file,
75
+ // LoopDetector.trackRead() stays tool-name-agnostic.
76
+ if (tu.name === "read_file" && typeof tu.input.path === "string") {
77
+ const readCheck = loopDetector.trackRead(tu.input.path);
78
+ if (readCheck.blocked) {
79
+ onResult?.(tu.name, false, readCheck.reason, 0);
80
+ resultMap.set(tu.id, {
81
+ type: "tool_result",
82
+ tool_use_id: tu.id,
83
+ content: JSON.stringify({
84
+ error: readCheck.reason
85
+ })
86
+ });
87
+ return;
88
+ }
160
89
  }
161
- // Bail-out detection
162
- const bailCheck = loopDetector.endTurn();
163
- if (bailCheck.shouldBail && results.length > 0) {
164
- const lastResult = results[results.length - 1];
165
- if (typeof lastResult.content === "string") {
166
- lastResult.content = `[SYSTEM WARNING] ${bailCheck.message}\n\n${lastResult.content}`;
90
+ onStart?.(tu.name, tu.input);
91
+ const toolStart = Date.now();
92
+ let result;
93
+ let isTransient = false;
94
+ try {
95
+ const toolPromise = executor(tu.name, tu.input);
96
+ const effectiveTimeout = LONG_RUNNING_TOOLS.has(tu.name) ? Math.max(toolTimeoutMs, LONG_RUNNING_TOOL_TIMEOUT_MS) : toolTimeoutMs;
97
+ const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error(`Tool "${tu.name}" timed out after ${effectiveTimeout}ms`)), effectiveTimeout));
98
+ result = await Promise.race([toolPromise, timeoutPromise]);
99
+ } catch (err) {
100
+ const msg = err.message || String(err);
101
+ isTransient = /timed?\s*out/i.test(msg) || /rate.?limit/i.test(msg) || /429/i.test(msg);
102
+ result = {
103
+ success: false,
104
+ output: `Tool execution error: ${msg}`
105
+ };
106
+ }
107
+ const durationMs = Date.now() - toolStart;
108
+
109
+ // If the batch was aborted while this tool was executing, skip recording
110
+ // the failure in LoopDetector to avoid inflating error counts from a single
111
+ // bad parallel batch. This is the key fix for the TOCTOU race condition:
112
+ // all N calls pass recordCall() before any recordResult() runs, so without
113
+ // this guard, N parallel failures push consecutiveErrors to N.
114
+ if (!result.success && batch.aborted) {
115
+ onResult?.(tu.name, false, "Batch aborted — error not recorded in loop detector", durationMs);
116
+ resultMap.set(tu.id, {
117
+ type: "tool_result",
118
+ tool_use_id: tu.id,
119
+ content: JSON.stringify({
120
+ error: "Batch aborted — too many sibling tool calls failed. Re-assess your approach."
121
+ })
122
+ });
123
+ return;
124
+ }
125
+ loopDetector.recordResult(tu.name, result.success, tu.input, isTransient);
126
+
127
+ // Track batch-level failures — after batchErrorLimit, abort remaining
128
+ if (!result.success) {
129
+ batch.errors++;
130
+ if (batch.errors >= batchErrorLimit) {
131
+ batch.aborted = true;
132
+ }
133
+ }
134
+ onResult?.(tu.name, result.success, result.output, durationMs);
135
+
136
+ // Check for media markers — convert to appropriate content blocks
137
+ const mediaMatch = result.success && typeof result.output === "string" ? result.output.match(/^__(IMAGE|AUDIO)__(.+?)__(.+)$/) : null;
138
+ let resultBlock;
139
+ if (mediaMatch && mediaMatch[1] === "IMAGE") {
140
+ // Image → multimodal image content block
141
+ resultBlock = {
142
+ type: "tool_result",
143
+ tool_use_id: tu.id,
144
+ content: [{
145
+ type: "image",
146
+ source: {
147
+ type: "base64",
148
+ media_type: mediaMatch[2],
149
+ data: mediaMatch[3]
150
+ }
151
+ }]
152
+ };
153
+ } else if (mediaMatch && mediaMatch[1] === "AUDIO") {
154
+ // Audio → transcribe via Whisper, return transcript as text
155
+ let transcript;
156
+ if (transcribeAudio) {
157
+ try {
158
+ transcript = await transcribeAudio(mediaMatch[3], mediaMatch[2]);
159
+ } catch (err) {
160
+ transcript = `Audio transcription failed: ${err.message}. The audio file was read successfully but could not be transcribed.`;
167
161
  }
162
+ } else {
163
+ transcript = "Audio file detected but transcription is not available. Configure an OpenAI API key for audio transcription via Whisper.";
164
+ }
165
+ resultBlock = {
166
+ type: "tool_result",
167
+ tool_use_id: tu.id,
168
+ content: transcript
169
+ };
170
+ } else {
171
+ const rawContent = result.success ? result.output : JSON.stringify({
172
+ error: result.output
173
+ });
174
+ let contentStr = typeof rawContent === "string" ? rawContent : JSON.stringify(rawContent);
175
+ // Safety-only cap — prevents OOM from pathological tool outputs.
176
+ // Normal results flow through unmodified; Anthropic's context_management
177
+ // API clears old tool uses when context grows (clear_tool_uses_20250919).
178
+ if (contentStr.length > SAFETY_MAX_CHARS) {
179
+ contentStr = contentStr.slice(0, SAFETY_MAX_CHARS) + `\n\n... (safety truncated — ${contentStr.length.toLocaleString()} chars total)`;
180
+ }
181
+ resultBlock = {
182
+ type: "tool_result",
183
+ tool_use_id: tu.id,
184
+ content: contentStr
185
+ };
168
186
  }
169
- return {
170
- results,
171
- bailOut: bailCheck.shouldBail,
172
- bailMessage: bailCheck.message,
187
+ resultMap.set(tu.id, resultBlock);
188
+ }
189
+
190
+ // Execute in parallel batches — each batch gets its own error state
191
+ // so failures in one batch can't cascade into the next
192
+ for (let i = 0; i < toolCalls.length; i += maxConcurrent) {
193
+ if (signal?.aborted) break;
194
+ const calls = toolCalls.slice(i, i + maxConcurrent);
195
+ const batchState = {
196
+ errors: 0,
197
+ aborted: false
173
198
  };
199
+ await Promise.all(calls.map(tu => executeSingle(tu, batchState)));
200
+ }
201
+
202
+ // Collect results in original order
203
+ const results = [];
204
+ for (const tu of toolCalls) {
205
+ const r = resultMap.get(tu.id);
206
+ if (r) results.push(r);
207
+ }
208
+
209
+ // Bail-out detection
210
+ const bailCheck = loopDetector.endTurn();
211
+ if (bailCheck.shouldBail && results.length > 0) {
212
+ const lastResult = results[results.length - 1];
213
+ if (typeof lastResult.content === "string") {
214
+ lastResult.content = `[SYSTEM WARNING] ${bailCheck.message}\n\n${lastResult.content}`;
215
+ }
216
+ }
217
+ return {
218
+ results,
219
+ bailOut: bailCheck.shouldBail,
220
+ bailMessage: bailCheck.message
221
+ };
174
222
  }
223
+
175
224
  // ============================================================================
176
225
  // ASSISTANT CONTENT BUILDER — builds message content for next turn
177
226
  // ============================================================================
227
+
178
228
  /**
179
229
  * Build assistant content array from stream result for the next conversation turn.
180
230
  */
181
231
  export function buildAssistantContent(opts) {
182
- const content = [];
183
- // Compaction block must come first
184
- if (opts.compactionContent !== null && opts.compactionContent !== undefined) {
185
- content.push({ type: "compaction", content: opts.compactionContent });
186
- }
187
- // Thinking blocks before text/tool_use
188
- if (opts.thinkingBlocks) {
189
- for (const tb of opts.thinkingBlocks) {
190
- content.push(tb);
191
- }
192
- }
193
- if (opts.text) {
194
- content.push({ type: "text", text: opts.text });
232
+ const content = [];
233
+
234
+ // Compaction block must come first
235
+ if (opts.compactionContent !== null && opts.compactionContent !== undefined) {
236
+ content.push({
237
+ type: "compaction",
238
+ content: opts.compactionContent
239
+ });
240
+ }
241
+
242
+ // Thinking blocks before text/tool_use
243
+ if (opts.thinkingBlocks) {
244
+ for (const tb of opts.thinkingBlocks) {
245
+ content.push(tb);
195
246
  }
196
- content.push(...opts.toolUseBlocks.map((t) => ({
197
- type: "tool_use",
198
- id: t.id,
199
- name: t.name,
200
- input: t.input,
201
- // Preserve Gemini thought signatures through function call round-trips
202
- ...(t.thoughtSignature ? { thought_signature: t.thoughtSignature } : {}),
203
- })));
204
- return content;
247
+ }
248
+ if (opts.text) {
249
+ content.push({
250
+ type: "text",
251
+ text: opts.text
252
+ });
253
+ }
254
+ content.push(...opts.toolUseBlocks.map(t => ({
255
+ type: "tool_use",
256
+ id: t.id,
257
+ name: t.name,
258
+ input: t.input,
259
+ // Preserve Gemini thought signatures through function call round-trips
260
+ ...(t.thoughtSignature ? {
261
+ thought_signature: t.thoughtSignature
262
+ } : {})
263
+ })));
264
+ return content;
205
265
  }
266
+ //# sourceMappingURL=tool-dispatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-dispatch.js","names":["AGENT_DEFAULTS","SAFETY_MAX_CHARS","LONG_RUNNING_TOOL_TIMEOUT_MS","LONG_RUNNING_TOOLS","Set","dispatchTools","toolCalls","executor","opts","loopDetector","maxConcurrent","toolTimeoutMs","batchErrorLimit","loopBatchErrorLimit","onStart","onResult","signal","transcribeAudio","resultMap","Map","executeSingle","tu","batch","aborted","set","id","type","tool_use_id","content","JSON","stringify","error","loopCheck","recordCall","name","input","blocked","reason","path","readCheck","trackRead","toolStart","Date","now","result","isTransient","toolPromise","effectiveTimeout","has","Math","max","timeoutPromise","Promise","_","reject","setTimeout","Error","race","err","msg","message","String","test","success","output","durationMs","recordResult","errors","mediaMatch","match","resultBlock","source","media_type","data","transcript","rawContent","contentStr","length","slice","toLocaleString","i","calls","batchState","all","map","results","r","get","push","bailCheck","endTurn","shouldBail","lastResult","bailOut","bailMessage","buildAssistantContent","compactionContent","undefined","thinkingBlocks","tb","text","toolUseBlocks","t","thoughtSignature","thought_signature"],"sources":["../../src/shared/tool-dispatch.ts"],"sourcesContent":["/**\n * Unified Tool Dispatch — ONE implementation replacing 4 duplicates.\n *\n * Handles: loop detection, parallel execution, result truncation, bail-out.\n * Used by agent-loop, subagent, teammate, and server-agent-loop.\n */\n\nimport { LoopDetector, AGENT_DEFAULTS } from \"./agent-core.js\";\nimport type { ToolUseBlock, ToolResultMessage } from \"./types.js\";\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\n/** Hard cap on tool result size — matches Claude Code's 30K char limit.\n * Prevents single tool outputs from blowing up context. Anthropic's\n * context_management (clear_tool_uses + compact) handles multi-turn growth;\n * this cap prevents any ONE result from being catastrophic. */\nconst SAFETY_MAX_CHARS = 30_000;\n\n/** Tools that spawn workers/subprocesses and need much longer than 2 min */\nconst LONG_RUNNING_TOOL_TIMEOUT_MS = 10 * 60 * 1000; // 10 minutes\nconst LONG_RUNNING_TOOLS = new Set([\"team_create\", \"task\", \"task_output\", \"kali\", \"delegate_task\", \"exit_plan_mode\", \"ask_user_question\"]);\n\nexport interface ToolDispatchOptions {\n /** Loop detector instance (shared across turns) */\n loopDetector: LoopDetector;\n /** Max concurrent tool executions (7 for main, 1 for sequential) */\n maxConcurrent?: number;\n /** Per-tool execution timeout in ms (default 120000 = 2 minutes) */\n toolTimeoutMs?: number;\n /** Max errors from a single parallel batch before aborting remaining calls.\n * Prevents Promise.all() from cascading N failures into the LoopDetector,\n * which can permanently brick tools. Default: AGENT_DEFAULTS.loopBatchErrorLimit */\n batchErrorLimit?: number;\n /** Called when a tool starts executing */\n onStart?: (name: string, input: Record<string, unknown>) => void;\n /** Called when a tool finishes */\n onResult?: (name: string, success: boolean, result: string, durationMs: number) => void;\n /** Abort signal */\n signal?: AbortSignal;\n /** Transcribe audio data — called when __AUDIO__ marker detected in tool result */\n transcribeAudio?: (base64: string, mediaType: string) => Promise<string>;\n}\n\nexport type ToolExecutor = (\n name: string,\n input: Record<string, unknown>,\n) => Promise<{ success: boolean; output: string }>;\n\n// ============================================================================\n// DISPATCH\n// ============================================================================\n\n/**\n * Execute tool calls with loop detection, parallel batching, and truncation.\n * Returns tool result messages in original order.\n */\nexport async function dispatchTools(\n toolCalls: ToolUseBlock[],\n executor: ToolExecutor,\n opts: ToolDispatchOptions,\n): Promise<{ results: ToolResultMessage[]; bailOut: boolean; bailMessage?: string }> {\n const {\n loopDetector,\n maxConcurrent = 7,\n toolTimeoutMs = 120_000,\n batchErrorLimit = AGENT_DEFAULTS.loopBatchErrorLimit,\n onStart,\n onResult,\n signal,\n transcribeAudio,\n } = opts;\n\n const resultMap = new Map<string, ToolResultMessage>();\n\n /** Shared state for each parallel batch — tracks how many tools failed so we\n * can abort remaining calls and avoid inflating LoopDetector error counts.\n * JavaScript is single-threaded, so between `await` yields this is atomic. */\n interface BatchState {\n errors: number;\n aborted: boolean;\n }\n\n async function executeSingle(tu: ToolUseBlock, batch: BatchState): Promise<void> {\n // Early exit if batch already aborted or signal fired\n if (batch.aborted || signal?.aborted) {\n resultMap.set(tu.id, {\n type: \"tool_result\",\n tool_use_id: tu.id,\n content: JSON.stringify({ error: batch.aborted\n ? \"Batch aborted — too many sibling tool calls failed in this parallel batch. Re-assess your approach.\"\n : \"Aborted\" }),\n });\n return;\n }\n\n // Loop detection check\n const loopCheck = loopDetector.recordCall(tu.name, tu.input);\n if (loopCheck.blocked) {\n onResult?.(tu.name, false, loopCheck.reason!, 0);\n resultMap.set(tu.id, {\n type: \"tool_result\",\n tool_use_id: tu.id,\n content: JSON.stringify({ error: loopCheck.reason }),\n });\n return;\n }\n\n // File read frequency tracking — tool-dispatch knows about read_file,\n // LoopDetector.trackRead() stays tool-name-agnostic.\n if (tu.name === \"read_file\" && typeof tu.input.path === \"string\") {\n const readCheck = loopDetector.trackRead(tu.input.path as string);\n if (readCheck.blocked) {\n onResult?.(tu.name, false, readCheck.reason!, 0);\n resultMap.set(tu.id, {\n type: \"tool_result\",\n tool_use_id: tu.id,\n content: JSON.stringify({ error: readCheck.reason }),\n });\n return;\n }\n }\n\n onStart?.(tu.name, tu.input);\n const toolStart = Date.now();\n let result: { success: boolean; output: string };\n\n let isTransient = false;\n try {\n const toolPromise = executor(tu.name, tu.input);\n const effectiveTimeout = LONG_RUNNING_TOOLS.has(tu.name)\n ? Math.max(toolTimeoutMs, LONG_RUNNING_TOOL_TIMEOUT_MS)\n : toolTimeoutMs;\n const timeoutPromise = new Promise<never>((_, reject) =>\n setTimeout(() => reject(new Error(`Tool \"${tu.name}\" timed out after ${effectiveTimeout}ms`)), effectiveTimeout)\n );\n result = await Promise.race([toolPromise, timeoutPromise]);\n } catch (err: unknown) {\n const msg = (err as Error).message || String(err);\n isTransient = /timed?\\s*out/i.test(msg) || /rate.?limit/i.test(msg) || /429/i.test(msg);\n result = {\n success: false,\n output: `Tool execution error: ${msg}`,\n };\n }\n\n const durationMs = Date.now() - toolStart;\n\n // If the batch was aborted while this tool was executing, skip recording\n // the failure in LoopDetector to avoid inflating error counts from a single\n // bad parallel batch. This is the key fix for the TOCTOU race condition:\n // all N calls pass recordCall() before any recordResult() runs, so without\n // this guard, N parallel failures push consecutiveErrors to N.\n if (!result.success && batch.aborted) {\n onResult?.(tu.name, false, \"Batch aborted — error not recorded in loop detector\", durationMs);\n resultMap.set(tu.id, {\n type: \"tool_result\",\n tool_use_id: tu.id,\n content: JSON.stringify({ error: \"Batch aborted — too many sibling tool calls failed. Re-assess your approach.\" }),\n });\n return;\n }\n\n loopDetector.recordResult(tu.name, result.success, tu.input, isTransient);\n\n // Track batch-level failures — after batchErrorLimit, abort remaining\n if (!result.success) {\n batch.errors++;\n if (batch.errors >= batchErrorLimit) {\n batch.aborted = true;\n }\n }\n\n onResult?.(tu.name, result.success, result.output, durationMs);\n\n // Check for media markers — convert to appropriate content blocks\n const mediaMatch = result.success && typeof result.output === \"string\"\n ? result.output.match(/^__(IMAGE|AUDIO)__(.+?)__(.+)$/)\n : null;\n\n let resultBlock: ToolResultMessage;\n if (mediaMatch && mediaMatch[1] === \"IMAGE\") {\n // Image → multimodal image content block\n resultBlock = {\n type: \"tool_result\",\n tool_use_id: tu.id,\n content: [\n {\n type: \"image\",\n source: {\n type: \"base64\",\n media_type: mediaMatch[2],\n data: mediaMatch[3],\n },\n },\n ],\n };\n } else if (mediaMatch && mediaMatch[1] === \"AUDIO\") {\n // Audio → transcribe via Whisper, return transcript as text\n let transcript: string;\n if (transcribeAudio) {\n try {\n transcript = await transcribeAudio(mediaMatch[3], mediaMatch[2]);\n } catch (err) {\n transcript = `Audio transcription failed: ${(err as Error).message}. The audio file was read successfully but could not be transcribed.`;\n }\n } else {\n transcript = \"Audio file detected but transcription is not available. Configure an OpenAI API key for audio transcription via Whisper.\";\n }\n resultBlock = {\n type: \"tool_result\",\n tool_use_id: tu.id,\n content: transcript,\n };\n } else {\n const rawContent = result.success\n ? result.output\n : JSON.stringify({ error: result.output });\n let contentStr = typeof rawContent === \"string\"\n ? rawContent\n : JSON.stringify(rawContent);\n // Safety-only cap — prevents OOM from pathological tool outputs.\n // Normal results flow through unmodified; Anthropic's context_management\n // API clears old tool uses when context grows (clear_tool_uses_20250919).\n if (contentStr.length > SAFETY_MAX_CHARS) {\n contentStr =\n contentStr.slice(0, SAFETY_MAX_CHARS) +\n `\\n\\n... (safety truncated — ${contentStr.length.toLocaleString()} chars total)`;\n }\n resultBlock = {\n type: \"tool_result\",\n tool_use_id: tu.id,\n content: contentStr,\n };\n }\n\n resultMap.set(tu.id, resultBlock);\n }\n\n // Execute in parallel batches — each batch gets its own error state\n // so failures in one batch can't cascade into the next\n for (let i = 0; i < toolCalls.length; i += maxConcurrent) {\n if (signal?.aborted) break;\n const calls = toolCalls.slice(i, i + maxConcurrent);\n const batchState: BatchState = { errors: 0, aborted: false };\n await Promise.all(calls.map((tu) => executeSingle(tu, batchState)));\n }\n\n // Collect results in original order\n const results: ToolResultMessage[] = [];\n for (const tu of toolCalls) {\n const r = resultMap.get(tu.id);\n if (r) results.push(r);\n }\n\n // Bail-out detection\n const bailCheck = loopDetector.endTurn();\n if (bailCheck.shouldBail && results.length > 0) {\n const lastResult = results[results.length - 1];\n if (typeof lastResult.content === \"string\") {\n lastResult.content = `[SYSTEM WARNING] ${bailCheck.message}\\n\\n${lastResult.content}`;\n }\n }\n\n return {\n results,\n bailOut: bailCheck.shouldBail,\n bailMessage: bailCheck.message,\n };\n}\n\n// ============================================================================\n// ASSISTANT CONTENT BUILDER — builds message content for next turn\n// ============================================================================\n\n/**\n * Build assistant content array from stream result for the next conversation turn.\n */\nexport function buildAssistantContent(opts: {\n text: string;\n toolUseBlocks: ToolUseBlock[];\n thinkingBlocks?: Array<{ type: \"thinking\"; thinking: string; signature: string }>;\n compactionContent?: string | null;\n}): Array<Record<string, unknown>> {\n const content: Array<Record<string, unknown>> = [];\n\n // Compaction block must come first\n if (opts.compactionContent !== null && opts.compactionContent !== undefined) {\n content.push({ type: \"compaction\", content: opts.compactionContent });\n }\n\n // Thinking blocks before text/tool_use\n if (opts.thinkingBlocks) {\n for (const tb of opts.thinkingBlocks) {\n content.push(tb);\n }\n }\n\n if (opts.text) {\n content.push({ type: \"text\" as const, text: opts.text });\n }\n\n content.push(\n ...opts.toolUseBlocks.map((t) => ({\n type: \"tool_use\" as const,\n id: t.id,\n name: t.name,\n input: t.input,\n // Preserve Gemini thought signatures through function call round-trips\n ...(t.thoughtSignature ? { thought_signature: t.thoughtSignature } : {}),\n })),\n );\n\n return content;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,2 @@
1
- /**
2
- * Shared Types — unified interfaces used by both CLI and server.
3
- *
4
- * Replaces 3 separate ToolResult definitions and provides typed SSE events.
5
- * Pure TypeScript, no runtime dependencies.
6
- */
7
1
  export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../src/shared/types.ts"],"sourcesContent":["/**\n * Shared Types — unified interfaces used by both CLI and server.\n *\n * Replaces 3 separate ToolResult definitions and provides typed SSE events.\n * Pure TypeScript, no runtime dependencies.\n */\n\n// ============================================================================\n// TOOL RESULT — canonical format (server uses this)\n// ============================================================================\n\n/** Canonical tool result format — CLI tools return { success, output } */\nexport interface ToolResult {\n success: boolean;\n output: string;\n}\n\n// ============================================================================\n// SSE STREAM TYPES — typed events from Anthropic API streaming\n// ============================================================================\n\nexport interface ToolUseBlock {\n id: string;\n name: string;\n input: Record<string, unknown>;\n /** Gemini thought signature — must be preserved through function call round-trips */\n thoughtSignature?: string;\n}\n\nexport interface ThinkingBlock {\n type: \"thinking\";\n thinking: string;\n signature: string;\n}\n\nexport interface CitationBlock {\n type: \"cite\";\n cited_text: string;\n document_index: number;\n document_title?: string;\n start_char_index: number;\n end_char_index: number;\n}\n\n/** Result of processing a complete SSE stream */\nexport interface StreamResult {\n text: string;\n toolUseBlocks: ToolUseBlock[];\n thinkingBlocks: ThinkingBlock[];\n thinkingTokens: number;\n citations: CitationBlock[];\n usage: {\n inputTokens: number;\n outputTokens: number;\n cacheCreationTokens: number;\n cacheReadTokens: number;\n };\n compactionContent: string | null;\n contextManagementApplied: boolean;\n stopReason: string;\n}\n\n/** Callbacks for real-time stream processing (used by agent-loop for UI) */\nexport interface StreamCallbacks {\n onText?: (text: string) => void;\n onToolStart?: (name: string, input?: Record<string, unknown>) => void;\n onThinking?: (text: string) => void;\n onCitation?: (citation: CitationBlock) => void;\n}\n\n// ============================================================================\n// API REQUEST CONFIG — profiles for different agent types\n// ============================================================================\n\nexport type ContextProfile = \"main\" | \"subagent\" | \"teammate\";\n\nexport interface APIRequestConfig {\n betas: string[];\n contextManagement: { edits: Array<Record<string, unknown>> };\n thinking?: { type: string; budget_tokens?: number };\n maxTokens: number;\n}\n\n// ============================================================================\n// TOOL DISPATCH — shared result message format\n// ============================================================================\n\nexport interface ToolResultMessage {\n type: \"tool_result\";\n tool_use_id: string;\n content: string | Array<Record<string, unknown>>;\n}\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=cli-highlight.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-highlight.d.js","names":[],"sources":["../../src/types/cli-highlight.d.ts"],"sourcesContent":["declare module \"cli-highlight\" {\n export function highlight(code: string, options?: {\n language?: string;\n ignoreIllegals?: boolean;\n theme?: any;\n }): string;\n}\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=diff.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.d.js","names":[],"sources":["../../src/types/diff.d.ts"],"sourcesContent":["declare module \"diff\" {\n interface Change {\n count?: number;\n added?: boolean;\n removed?: boolean;\n value: string;\n }\n\n export function diffWords(oldStr: string, newStr: string): Change[];\n export function diffChars(oldStr: string, newStr: string): Change[];\n export function diffLines(oldStr: string, newStr: string): Change[];\n}\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=pdf-parse.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdf-parse.d.js","names":[],"sources":["../../src/types/pdf-parse.d.ts"],"sourcesContent":["declare module \"pdf-parse\" {\n interface PDFData {\n numpages: number;\n numrender: number;\n info: Record<string, unknown>;\n metadata: unknown;\n text: string;\n version: string;\n }\n\n function pdfParse(dataBuffer: Buffer): Promise<PDFData>;\n export default pdfParse;\n}\n"],"mappings":"","ignoreList":[]}
package/dist/updater.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * OTA Auto-Updater for SwagManager MCP Server
2
+ * OTA Auto-Updater for Whale Code
3
3
  *
4
4
  * Checks the npm registry for newer versions and self-updates.
5
5
  * - Runs on server startup (non-blocking)