whale-code 6.5.5 → 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 (847) 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 +5 -1
  73. package/dist/cli/services/agent-config.js +66 -36
  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 +976 -688
  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.js +187 -169
  107. package/dist/cli/services/error-logger.js.map +1 -0
  108. package/dist/cli/services/file-history.d.ts +1 -1
  109. package/dist/cli/services/file-history.js +50 -54
  110. package/dist/cli/services/file-history.js.map +1 -0
  111. package/dist/cli/services/format-server-response.js +332 -372
  112. package/dist/cli/services/format-server-response.js.map +1 -0
  113. package/dist/cli/services/git-context.js +61 -45
  114. package/dist/cli/services/git-context.js.map +1 -0
  115. package/dist/cli/services/hooks.d.ts +2 -2
  116. package/dist/cli/services/hooks.js +195 -180
  117. package/dist/cli/services/hooks.js.map +1 -0
  118. package/dist/cli/services/ink-incremental.d.ts +19 -0
  119. package/dist/cli/services/ink-incremental.js +59 -0
  120. package/dist/cli/services/ink-incremental.js.map +1 -0
  121. package/dist/cli/services/ink-resize-fix.js +54 -44
  122. package/dist/cli/services/ink-resize-fix.js.map +1 -0
  123. package/dist/cli/services/ink-sync-output.d.ts +12 -0
  124. package/dist/cli/services/ink-sync-output.js +16 -0
  125. package/dist/cli/services/ink-sync-output.js.map +1 -0
  126. package/dist/cli/services/interactive-tools.js +268 -212
  127. package/dist/cli/services/interactive-tools.js.map +1 -0
  128. package/dist/cli/services/keybinding-manager.d.ts +11 -1
  129. package/dist/cli/services/keybinding-manager.js +126 -63
  130. package/dist/cli/services/keybinding-manager.js.map +1 -0
  131. package/dist/cli/services/local-tools.d.ts +1 -1
  132. package/dist/cli/services/local-tools.js +939 -656
  133. package/dist/cli/services/local-tools.js.map +1 -0
  134. package/dist/cli/services/lsp-manager.js +757 -594
  135. package/dist/cli/services/lsp-manager.js.map +1 -0
  136. package/dist/cli/services/mcp-client.d.ts +1 -1
  137. package/dist/cli/services/mcp-client.js +173 -134
  138. package/dist/cli/services/mcp-client.js.map +1 -0
  139. package/dist/cli/services/memory-manager.js +53 -40
  140. package/dist/cli/services/memory-manager.js.map +1 -0
  141. package/dist/cli/services/model-manager.js +55 -40
  142. package/dist/cli/services/model-manager.js.map +1 -0
  143. package/dist/cli/services/model-router.js +115 -85
  144. package/dist/cli/services/model-router.js.map +1 -0
  145. package/dist/cli/services/paths.d.ts +30 -0
  146. package/dist/cli/services/paths.js +81 -0
  147. package/dist/cli/services/paths.js.map +1 -0
  148. package/dist/cli/services/permission-modes.js +32 -25
  149. package/dist/cli/services/permission-modes.js.map +1 -0
  150. package/dist/cli/services/rewind.js +182 -168
  151. package/dist/cli/services/rewind.js.map +1 -0
  152. package/dist/cli/services/ripgrep.js +115 -115
  153. package/dist/cli/services/ripgrep.js.map +1 -0
  154. package/dist/cli/services/sandbox.d.ts +1 -1
  155. package/dist/cli/services/sandbox.js +58 -37
  156. package/dist/cli/services/sandbox.js.map +1 -0
  157. package/dist/cli/services/server-tools.js +738 -565
  158. package/dist/cli/services/server-tools.js.map +1 -0
  159. package/dist/cli/services/session-persistence.js +69 -74
  160. package/dist/cli/services/session-persistence.js.map +1 -0
  161. package/dist/cli/services/subagent-worker.js +42 -27
  162. package/dist/cli/services/subagent-worker.js.map +1 -0
  163. package/dist/cli/services/subagent.d.ts +2 -0
  164. package/dist/cli/services/subagent.js +605 -433
  165. package/dist/cli/services/subagent.js.map +1 -0
  166. package/dist/cli/services/system-prompt.js +86 -78
  167. package/dist/cli/services/system-prompt.js.map +1 -0
  168. package/dist/cli/services/task-decomposer.d.ts +1 -1
  169. package/dist/cli/services/task-decomposer.js +172 -139
  170. package/dist/cli/services/task-decomposer.js.map +1 -0
  171. package/dist/cli/services/team-lead.d.ts +2 -2
  172. package/dist/cli/services/team-lead.js +727 -529
  173. package/dist/cli/services/team-lead.js.map +1 -0
  174. package/dist/cli/services/team-state.js +319 -319
  175. package/dist/cli/services/team-state.js.map +1 -0
  176. package/dist/cli/services/teammate.d.ts +8 -2
  177. package/dist/cli/services/teammate.js +857 -569
  178. package/dist/cli/services/teammate.js.map +1 -0
  179. package/dist/cli/services/telemetry.d.ts +6 -1
  180. package/dist/cli/services/telemetry.js +180 -157
  181. package/dist/cli/services/telemetry.js.map +1 -0
  182. package/dist/cli/services/tools/agent-tools.d.ts +3 -3
  183. package/dist/cli/services/tools/agent-tools.js +480 -322
  184. package/dist/cli/services/tools/agent-tools.js.map +1 -0
  185. package/dist/cli/services/tools/file-ops.js +563 -450
  186. package/dist/cli/services/tools/file-ops.js.map +1 -0
  187. package/dist/cli/services/tools/search-tools.js +231 -162
  188. package/dist/cli/services/tools/search-tools.js.map +1 -0
  189. package/dist/cli/services/tools/shell-exec.js +197 -151
  190. package/dist/cli/services/tools/shell-exec.js.map +1 -0
  191. package/dist/cli/services/tools/task-manager.js +206 -173
  192. package/dist/cli/services/tools/task-manager.js.map +1 -0
  193. package/dist/cli/services/tools/web-tools.js +388 -341
  194. package/dist/cli/services/tools/web-tools.js.map +1 -0
  195. package/dist/cli/setup/SetupApp.d.ts +2 -2
  196. package/dist/cli/setup/SetupApp.js +608 -160
  197. package/dist/cli/setup/SetupApp.js.map +1 -0
  198. package/dist/cli/shared/ErrorBoundary.d.ts +22 -0
  199. package/dist/cli/shared/ErrorBoundary.js +73 -0
  200. package/dist/cli/shared/ErrorBoundary.js.map +1 -0
  201. package/dist/cli/shared/MatrixIntro.js +66 -69
  202. package/dist/cli/shared/MatrixIntro.js.map +1 -0
  203. package/dist/cli/shared/SpinnerSlot.d.ts +14 -0
  204. package/dist/cli/shared/SpinnerSlot.js +63 -0
  205. package/dist/cli/shared/SpinnerSlot.js.map +1 -0
  206. package/dist/cli/shared/Theme.d.ts +1 -1
  207. package/dist/cli/shared/Theme.js +136 -92
  208. package/dist/cli/shared/Theme.js.map +1 -0
  209. package/dist/cli/shared/WhaleBanner.js +99 -11
  210. package/dist/cli/shared/WhaleBanner.js.map +1 -0
  211. package/dist/cli/shared/markdown.d.ts +3 -1
  212. package/dist/cli/shared/markdown.js +736 -674
  213. package/dist/cli/shared/markdown.js.map +1 -0
  214. package/dist/cli/shared/marked-terminal.d.js +2 -0
  215. package/dist/cli/shared/marked-terminal.d.js.map +1 -0
  216. package/dist/cli/shared/theme-manager.js +99 -90
  217. package/dist/cli/shared/theme-manager.js.map +1 -0
  218. package/dist/cli/shared/theme-presets.js +256 -254
  219. package/dist/cli/shared/theme-presets.js.map +1 -0
  220. package/dist/cli/status/StatusApp.js +235 -86
  221. package/dist/cli/status/StatusApp.js.map +1 -0
  222. package/dist/cli/stores/StoreApp.js +275 -65
  223. package/dist/cli/stores/StoreApp.js.map +1 -0
  224. package/dist/index.d.ts +2 -2
  225. package/dist/index.js +509 -396
  226. package/dist/index.js.map +1 -0
  227. package/dist/local-agent/connection.d.ts +2 -2
  228. package/dist/local-agent/connection.js +352 -293
  229. package/dist/local-agent/connection.js.map +1 -0
  230. package/dist/local-agent/discovery.js +259 -122
  231. package/dist/local-agent/discovery.js.map +1 -0
  232. package/dist/local-agent/executor.js +216 -193
  233. package/dist/local-agent/executor.js.map +1 -0
  234. package/dist/local-agent/index.d.ts +2 -2
  235. package/dist/local-agent/index.js +156 -156
  236. package/dist/local-agent/index.js.map +1 -0
  237. package/dist/node/adapters/base.js +18 -8
  238. package/dist/node/adapters/base.js.map +1 -0
  239. package/dist/node/adapters/discord.js +286 -275
  240. package/dist/node/adapters/discord.js.map +1 -0
  241. package/dist/node/adapters/email.js +189 -202
  242. package/dist/node/adapters/email.js.map +1 -0
  243. package/dist/node/adapters/imessage.js +145 -142
  244. package/dist/node/adapters/imessage.js.map +1 -0
  245. package/dist/node/adapters/slack.js +237 -236
  246. package/dist/node/adapters/slack.js.map +1 -0
  247. package/dist/node/adapters/sms.js +149 -151
  248. package/dist/node/adapters/sms.js.map +1 -0
  249. package/dist/node/adapters/telegram.js +88 -92
  250. package/dist/node/adapters/telegram.js.map +1 -0
  251. package/dist/node/adapters/webchat.js +160 -136
  252. package/dist/node/adapters/webchat.js.map +1 -0
  253. package/dist/node/adapters/whatsapp.js +212 -215
  254. package/dist/node/adapters/whatsapp.js.map +1 -0
  255. package/dist/node/cli.js +884 -653
  256. package/dist/node/cli.js.map +1 -0
  257. package/dist/node/config.js +20 -18
  258. package/dist/node/config.js.map +1 -0
  259. package/dist/node/gateway-client.js +191 -181
  260. package/dist/node/gateway-client.js.map +1 -0
  261. package/dist/node/portal/clipboard.js +161 -130
  262. package/dist/node/portal/clipboard.js.map +1 -0
  263. package/dist/node/portal/discovery.js +51 -45
  264. package/dist/node/portal/discovery.js.map +1 -0
  265. package/dist/node/portal/forward.js +64 -58
  266. package/dist/node/portal/forward.js.map +1 -0
  267. package/dist/node/portal/index.js +246 -221
  268. package/dist/node/portal/index.js.map +1 -0
  269. package/dist/node/portal/multiplexer.js +192 -182
  270. package/dist/node/portal/multiplexer.js.map +1 -0
  271. package/dist/node/portal/permissions.js +102 -70
  272. package/dist/node/portal/permissions.js.map +1 -0
  273. package/dist/node/portal/protocol.js +153 -116
  274. package/dist/node/portal/protocol.js.map +1 -0
  275. package/dist/node/portal/screen.js +80 -69
  276. package/dist/node/portal/screen.js.map +1 -0
  277. package/dist/node/portal/session.js +124 -117
  278. package/dist/node/portal/session.js.map +1 -0
  279. package/dist/node/portal/shell.js +140 -113
  280. package/dist/node/portal/shell.js.map +1 -0
  281. package/dist/node/portal/stream.js +77 -75
  282. package/dist/node/portal/stream.js.map +1 -0
  283. package/dist/node/portal/transfer.js +190 -167
  284. package/dist/node/portal/transfer.js.map +1 -0
  285. package/dist/node/portal/ui.js +124 -99
  286. package/dist/node/portal/ui.js.map +1 -0
  287. package/dist/node/remote-desktop/compile-helper.js +50 -45
  288. package/dist/node/remote-desktop/compile-helper.js.map +1 -0
  289. package/dist/node/remote-desktop/index.js +215 -187
  290. package/dist/node/remote-desktop/index.js.map +1 -0
  291. package/dist/node/remote-desktop/protocol.js +45 -29
  292. package/dist/node/remote-desktop/protocol.js.map +1 -0
  293. package/dist/node/runtime.js +493 -410
  294. package/dist/node/runtime.js.map +1 -0
  295. package/dist/server/handlers/__test-utils__/test-db.js +39 -89
  296. package/dist/server/handlers/__test-utils__/test-db.js.map +1 -0
  297. package/dist/server/handlers/analytics.js +467 -261
  298. package/dist/server/handlers/analytics.js.map +1 -0
  299. package/dist/server/handlers/api-docs.js +1030 -895
  300. package/dist/server/handlers/api-docs.js.map +1 -0
  301. package/dist/server/handlers/api-keys.js +291 -242
  302. package/dist/server/handlers/api-keys.js.map +1 -0
  303. package/dist/server/handlers/billing.js +330 -239
  304. package/dist/server/handlers/billing.js.map +1 -0
  305. package/dist/server/handlers/browser.js +468 -395
  306. package/dist/server/handlers/browser.js.map +1 -0
  307. package/dist/server/handlers/catalog.js +1377 -978
  308. package/dist/server/handlers/catalog.js.map +1 -0
  309. package/dist/server/handlers/clickhouse.js +157 -109
  310. package/dist/server/handlers/clickhouse.js.map +1 -0
  311. package/dist/server/handlers/comms.js +1439 -984
  312. package/dist/server/handlers/comms.js.map +1 -0
  313. package/dist/server/handlers/creations.js +461 -394
  314. package/dist/server/handlers/creations.js.map +1 -0
  315. package/dist/server/handlers/crm.js +1082 -791
  316. package/dist/server/handlers/crm.js.map +1 -0
  317. package/dist/server/handlers/discovery.js +251 -232
  318. package/dist/server/handlers/discovery.js.map +1 -0
  319. package/dist/server/handlers/embeddings.js +241 -164
  320. package/dist/server/handlers/embeddings.js.map +1 -0
  321. package/dist/server/handlers/enrichment.js +887 -718
  322. package/dist/server/handlers/enrichment.js.map +1 -0
  323. package/dist/server/handlers/image-gen.js +467 -376
  324. package/dist/server/handlers/image-gen.js.map +1 -0
  325. package/dist/server/handlers/inventory.js +797 -424
  326. package/dist/server/handlers/inventory.js.map +1 -0
  327. package/dist/server/handlers/kali.js +272 -230
  328. package/dist/server/handlers/kali.js.map +1 -0
  329. package/dist/server/handlers/llm-providers.js +803 -580
  330. package/dist/server/handlers/llm-providers.js.map +1 -0
  331. package/dist/server/handlers/local-agent.js +133 -105
  332. package/dist/server/handlers/local-agent.js.map +1 -0
  333. package/dist/server/handlers/media.js +1179 -857
  334. package/dist/server/handlers/media.js.map +1 -0
  335. package/dist/server/handlers/meta-ads.js +2669 -2093
  336. package/dist/server/handlers/meta-ads.js.map +1 -0
  337. package/dist/server/handlers/nodes.js +1321 -913
  338. package/dist/server/handlers/nodes.js.map +1 -0
  339. package/dist/server/handlers/operations.js +183 -157
  340. package/dist/server/handlers/operations.js.map +1 -0
  341. package/dist/server/handlers/platform.js +346 -210
  342. package/dist/server/handlers/platform.js.map +1 -0
  343. package/dist/server/handlers/remove-bg.js +118 -86
  344. package/dist/server/handlers/remove-bg.js.map +1 -0
  345. package/dist/server/handlers/storefront.js +586 -446
  346. package/dist/server/handlers/storefront.js.map +1 -0
  347. package/dist/server/handlers/supply-chain.js +546 -326
  348. package/dist/server/handlers/supply-chain.js.map +1 -0
  349. package/dist/server/handlers/transcription.js +106 -97
  350. package/dist/server/handlers/transcription.js.map +1 -0
  351. package/dist/server/handlers/video-gen.js +593 -424
  352. package/dist/server/handlers/video-gen.js.map +1 -0
  353. package/dist/server/handlers/voice.js +1458 -1039
  354. package/dist/server/handlers/voice.js.map +1 -0
  355. package/dist/server/handlers/workflow-steps.js +2837 -2116
  356. package/dist/server/handlers/workflow-steps.js.map +1 -0
  357. package/dist/server/handlers/workflows.js +1630 -933
  358. package/dist/server/handlers/workflows.js.map +1 -0
  359. package/dist/server/index.js +3167 -2422
  360. package/dist/server/index.js.map +1 -0
  361. package/dist/server/lib/batch-client.js +471 -409
  362. package/dist/server/lib/batch-client.js.map +1 -0
  363. package/dist/server/lib/clickhouse-buffer.js +118 -104
  364. package/dist/server/lib/clickhouse-buffer.js.map +1 -0
  365. package/dist/server/lib/clickhouse-client.js +107 -107
  366. package/dist/server/lib/clickhouse-client.js.map +1 -0
  367. package/dist/server/lib/coa-renderer.js +1786 -356
  368. package/dist/server/lib/coa-renderer.js.map +1 -0
  369. package/dist/server/lib/code-worker-pool.js +227 -177
  370. package/dist/server/lib/code-worker-pool.js.map +1 -0
  371. package/dist/server/lib/code-worker.js +174 -164
  372. package/dist/server/lib/code-worker.js.map +1 -0
  373. package/dist/server/lib/compaction-service.d.ts +2 -12
  374. package/dist/server/lib/compaction-service.js +74 -184
  375. package/dist/server/lib/compaction-service.js.map +1 -0
  376. package/dist/server/lib/logger.js +36 -24
  377. package/dist/server/lib/logger.js.map +1 -0
  378. package/dist/server/lib/otel.js +101 -80
  379. package/dist/server/lib/otel.js.map +1 -0
  380. package/dist/server/lib/pdf-renderer.js +952 -788
  381. package/dist/server/lib/pdf-renderer.js.map +1 -0
  382. package/dist/server/lib/prompt-sanitizer.js +188 -108
  383. package/dist/server/lib/prompt-sanitizer.js.map +1 -0
  384. package/dist/server/lib/provider-capabilities.js +136 -138
  385. package/dist/server/lib/provider-capabilities.js.map +1 -0
  386. package/dist/server/lib/provider-failover.js +190 -168
  387. package/dist/server/lib/provider-failover.js.map +1 -0
  388. package/dist/server/lib/rate-limiter.js +186 -117
  389. package/dist/server/lib/rate-limiter.js.map +1 -0
  390. package/dist/server/lib/react-pdf-layout.js +551 -382
  391. package/dist/server/lib/react-pdf-layout.js.map +1 -0
  392. package/dist/server/lib/server-agent-loop.d.ts +4 -1
  393. package/dist/server/lib/server-agent-loop.js +906 -634
  394. package/dist/server/lib/server-agent-loop.js.map +1 -0
  395. package/dist/server/lib/server-subagent.js +260 -164
  396. package/dist/server/lib/server-subagent.js.map +1 -0
  397. package/dist/server/lib/session-checkpoint.js +105 -96
  398. package/dist/server/lib/session-checkpoint.js.map +1 -0
  399. package/dist/server/lib/ssrf-guard.js +193 -184
  400. package/dist/server/lib/ssrf-guard.js.map +1 -0
  401. package/dist/server/lib/supabase-client.js +94 -82
  402. package/dist/server/lib/supabase-client.js.map +1 -0
  403. package/dist/server/lib/template-resolver.js +154 -176
  404. package/dist/server/lib/template-resolver.js.map +1 -0
  405. package/dist/server/lib/utils.js +242 -133
  406. package/dist/server/lib/utils.js.map +1 -0
  407. package/dist/server/local-agent-gateway.d.ts +2 -2
  408. package/dist/server/local-agent-gateway.js +785 -627
  409. package/dist/server/local-agent-gateway.js.map +1 -0
  410. package/dist/server/providers/anthropic.js +250 -172
  411. package/dist/server/providers/anthropic.js.map +1 -0
  412. package/dist/server/providers/bedrock.js +217 -158
  413. package/dist/server/providers/bedrock.js.map +1 -0
  414. package/dist/server/providers/gemini.js +548 -418
  415. package/dist/server/providers/gemini.js.map +1 -0
  416. package/dist/server/providers/openai.js +571 -437
  417. package/dist/server/providers/openai.js.map +1 -0
  418. package/dist/server/providers/registry.js +23 -18
  419. package/dist/server/providers/registry.js.map +1 -0
  420. package/dist/server/providers/shared.js +123 -95
  421. package/dist/server/providers/shared.js.map +1 -0
  422. package/dist/server/providers/types.js +1 -11
  423. package/dist/server/providers/types.js.map +1 -0
  424. package/dist/server/proxy-handlers.js +209 -165
  425. package/dist/server/proxy-handlers.js.map +1 -0
  426. package/dist/server/tool-router.js +959 -599
  427. package/dist/server/tool-router.js.map +1 -0
  428. package/dist/server/validation.js +248 -188
  429. package/dist/server/validation.js.map +1 -0
  430. package/dist/server/worker.js +202 -133
  431. package/dist/server/worker.js.map +1 -0
  432. package/dist/setup.d.ts +2 -2
  433. package/dist/setup.js +151 -147
  434. package/dist/setup.js.map +1 -0
  435. package/dist/shared/agent-core.d.ts +115 -26
  436. package/dist/shared/agent-core.js +956 -522
  437. package/dist/shared/agent-core.js.map +1 -0
  438. package/dist/shared/anthropic-types.js +1 -6
  439. package/dist/shared/anthropic-types.js.map +1 -0
  440. package/dist/shared/api-client.d.ts +16 -9
  441. package/dist/shared/api-client.js +419 -327
  442. package/dist/shared/api-client.js.map +1 -0
  443. package/dist/shared/compaction.d.ts +36 -0
  444. package/dist/shared/compaction.js +138 -0
  445. package/dist/shared/compaction.js.map +1 -0
  446. package/dist/shared/constants.js +67 -64
  447. package/dist/shared/constants.js.map +1 -0
  448. package/dist/shared/sse-parser.js +221 -219
  449. package/dist/shared/sse-parser.js.map +1 -0
  450. package/dist/shared/tool-dispatch.d.ts +4 -0
  451. package/dist/shared/tool-dispatch.js +226 -165
  452. package/dist/shared/tool-dispatch.js.map +1 -0
  453. package/dist/shared/types.js +1 -6
  454. package/dist/shared/types.js.map +1 -0
  455. package/dist/types/cli-highlight.d.js +2 -0
  456. package/dist/types/cli-highlight.d.js.map +1 -0
  457. package/dist/types/diff.d.js +2 -0
  458. package/dist/types/diff.d.js.map +1 -0
  459. package/dist/types/pdf-parse.d.js +2 -0
  460. package/dist/types/pdf-parse.d.js.map +1 -0
  461. package/dist/updater.d.ts +1 -1
  462. package/dist/updater.js +118 -92
  463. package/dist/updater.js.map +1 -0
  464. package/dist/webchat/widget.js +227 -380
  465. package/dist/webchat/widget.js.map +1 -0
  466. package/package.json +22 -10
  467. package/vendor/ink/build/ansi-tokenizer.d.ts +38 -0
  468. package/vendor/ink/build/ansi-tokenizer.js +316 -0
  469. package/vendor/ink/build/ansi-tokenizer.js.map +1 -0
  470. package/vendor/ink/build/apply-styles.js +175 -0
  471. package/vendor/ink/build/build-layout.js +77 -0
  472. package/vendor/ink/build/calculate-wrapped-text.js +53 -0
  473. package/vendor/ink/build/colorize.d.ts +3 -0
  474. package/vendor/ink/build/colorize.js +48 -0
  475. package/vendor/ink/build/colorize.js.map +1 -0
  476. package/vendor/ink/build/components/AccessibilityContext.d.ts +3 -0
  477. package/vendor/ink/build/components/AccessibilityContext.js +5 -0
  478. package/vendor/ink/build/components/AccessibilityContext.js.map +1 -0
  479. package/vendor/ink/build/components/App.d.ts +18 -0
  480. package/vendor/ink/build/components/App.js +351 -0
  481. package/vendor/ink/build/components/App.js.map +1 -0
  482. package/vendor/ink/build/components/AppContext.d.ts +15 -0
  483. package/vendor/ink/build/components/AppContext.js +11 -0
  484. package/vendor/ink/build/components/AppContext.js.map +1 -0
  485. package/vendor/ink/build/components/BackgroundContext.d.ts +4 -0
  486. package/vendor/ink/build/components/BackgroundContext.js +3 -0
  487. package/vendor/ink/build/components/BackgroundContext.js.map +1 -0
  488. package/vendor/ink/build/components/Box.d.ts +117 -0
  489. package/vendor/ink/build/components/Box.js +34 -0
  490. package/vendor/ink/build/components/Box.js.map +1 -0
  491. package/vendor/ink/build/components/Color.js +62 -0
  492. package/vendor/ink/build/components/Cursor.d.ts +83 -0
  493. package/vendor/ink/build/components/Cursor.js +53 -0
  494. package/vendor/ink/build/components/Cursor.js.map +1 -0
  495. package/vendor/ink/build/components/CursorContext.d.ts +11 -0
  496. package/vendor/ink/build/components/CursorContext.js +8 -0
  497. package/vendor/ink/build/components/CursorContext.js.map +1 -0
  498. package/vendor/ink/build/components/ErrorBoundary.d.ts +18 -0
  499. package/vendor/ink/build/components/ErrorBoundary.js +23 -0
  500. package/vendor/ink/build/components/ErrorBoundary.js.map +1 -0
  501. package/vendor/ink/build/components/ErrorOverview.d.ts +6 -0
  502. package/vendor/ink/build/components/ErrorOverview.js +84 -0
  503. package/vendor/ink/build/components/ErrorOverview.js.map +1 -0
  504. package/vendor/ink/build/components/FocusContext.d.ts +16 -0
  505. package/vendor/ink/build/components/FocusContext.js +17 -0
  506. package/vendor/ink/build/components/FocusContext.js.map +1 -0
  507. package/vendor/ink/build/components/Newline.d.ts +13 -0
  508. package/vendor/ink/build/components/Newline.js +8 -0
  509. package/vendor/ink/build/components/Newline.js.map +1 -0
  510. package/vendor/ink/build/components/Spacer.d.ts +7 -0
  511. package/vendor/ink/build/components/Spacer.js +11 -0
  512. package/vendor/ink/build/components/Spacer.js.map +1 -0
  513. package/vendor/ink/build/components/Static.d.ts +24 -0
  514. package/vendor/ink/build/components/Static.js +28 -0
  515. package/vendor/ink/build/components/Static.js.map +1 -0
  516. package/vendor/ink/build/components/StderrContext.d.ts +15 -0
  517. package/vendor/ink/build/components/StderrContext.js +13 -0
  518. package/vendor/ink/build/components/StderrContext.js.map +1 -0
  519. package/vendor/ink/build/components/StdinContext.d.ts +22 -0
  520. package/vendor/ink/build/components/StdinContext.js +19 -0
  521. package/vendor/ink/build/components/StdinContext.js.map +1 -0
  522. package/vendor/ink/build/components/StdoutContext.d.ts +15 -0
  523. package/vendor/ink/build/components/StdoutContext.js +13 -0
  524. package/vendor/ink/build/components/StdoutContext.js.map +1 -0
  525. package/vendor/ink/build/components/Text.d.ts +55 -0
  526. package/vendor/ink/build/components/Text.js +50 -0
  527. package/vendor/ink/build/components/Text.js.map +1 -0
  528. package/vendor/ink/build/components/Transform.d.ts +16 -0
  529. package/vendor/ink/build/components/Transform.js +15 -0
  530. package/vendor/ink/build/components/Transform.js.map +1 -0
  531. package/vendor/ink/build/cursor-helpers.d.ts +38 -0
  532. package/vendor/ink/build/cursor-helpers.js +56 -0
  533. package/vendor/ink/build/cursor-helpers.js.map +1 -0
  534. package/vendor/ink/build/devtools-window-polyfill.d.ts +1 -0
  535. package/vendor/ink/build/devtools-window-polyfill.js +65 -0
  536. package/vendor/ink/build/devtools-window-polyfill.js.map +1 -0
  537. package/vendor/ink/build/devtools.d.ts +1 -0
  538. package/vendor/ink/build/devtools.js +11 -0
  539. package/vendor/ink/build/devtools.js.map +1 -0
  540. package/vendor/ink/build/dom.d.ts +56 -0
  541. package/vendor/ink/build/dom.js +124 -0
  542. package/vendor/ink/build/dom.js.map +1 -0
  543. package/vendor/ink/build/experimental/apply-style.js +140 -0
  544. package/vendor/ink/build/experimental/dom.js +123 -0
  545. package/vendor/ink/build/experimental/output.js +91 -0
  546. package/vendor/ink/build/experimental/reconciler.js +141 -0
  547. package/vendor/ink/build/experimental/renderer.js +81 -0
  548. package/vendor/ink/build/get-max-width.d.ts +3 -0
  549. package/vendor/ink/build/get-max-width.js +10 -0
  550. package/vendor/ink/build/get-max-width.js.map +1 -0
  551. package/vendor/ink/build/hooks/use-app.d.ts +5 -0
  552. package/vendor/ink/build/hooks/use-app.js +8 -0
  553. package/vendor/ink/build/hooks/use-app.js.map +1 -0
  554. package/vendor/ink/build/hooks/use-cursor.d.ts +12 -0
  555. package/vendor/ink/build/hooks/use-cursor.js +29 -0
  556. package/vendor/ink/build/hooks/use-cursor.js.map +1 -0
  557. package/vendor/ink/build/hooks/use-focus-manager.d.ts +28 -0
  558. package/vendor/ink/build/hooks/use-focus-manager.js +17 -0
  559. package/vendor/ink/build/hooks/use-focus-manager.js.map +1 -0
  560. package/vendor/ink/build/hooks/use-focus.d.ts +29 -0
  561. package/vendor/ink/build/hooks/use-focus.js +42 -0
  562. package/vendor/ink/build/hooks/use-focus.js.map +1 -0
  563. package/vendor/ink/build/hooks/use-input.d.ts +131 -0
  564. package/vendor/ink/build/hooks/use-input.js +124 -0
  565. package/vendor/ink/build/hooks/use-input.js.map +1 -0
  566. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.d.ts +5 -0
  567. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.js +11 -0
  568. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.js.map +1 -0
  569. package/vendor/ink/build/hooks/use-stderr.d.ts +5 -0
  570. package/vendor/ink/build/hooks/use-stderr.js +8 -0
  571. package/vendor/ink/build/hooks/use-stderr.js.map +1 -0
  572. package/vendor/ink/build/hooks/use-stdin.d.ts +5 -0
  573. package/vendor/ink/build/hooks/use-stdin.js +8 -0
  574. package/vendor/ink/build/hooks/use-stdin.js.map +1 -0
  575. package/vendor/ink/build/hooks/use-stdout.d.ts +5 -0
  576. package/vendor/ink/build/hooks/use-stdout.js +8 -0
  577. package/vendor/ink/build/hooks/use-stdout.js.map +1 -0
  578. package/vendor/ink/build/hooks/useInput.js +38 -0
  579. package/vendor/ink/build/index.d.ts +34 -0
  580. package/vendor/ink/build/index.js +20 -0
  581. package/vendor/ink/build/index.js.map +1 -0
  582. package/vendor/ink/build/ink.d.ts +90 -0
  583. package/vendor/ink/build/ink.js +654 -0
  584. package/vendor/ink/build/ink.js.map +1 -0
  585. package/vendor/ink/build/input-parser.d.ts +7 -0
  586. package/vendor/ink/build/input-parser.js +154 -0
  587. package/vendor/ink/build/input-parser.js.map +1 -0
  588. package/vendor/ink/build/instance.js +205 -0
  589. package/vendor/ink/build/instances.d.ts +3 -0
  590. package/vendor/ink/build/instances.js +8 -0
  591. package/vendor/ink/build/instances.js.map +1 -0
  592. package/vendor/ink/build/kitty-keyboard.d.ts +23 -0
  593. package/vendor/ink/build/kitty-keyboard.js +32 -0
  594. package/vendor/ink/build/kitty-keyboard.js.map +1 -0
  595. package/vendor/ink/build/layout.d.ts +7 -0
  596. package/vendor/ink/build/layout.js +33 -0
  597. package/vendor/ink/build/layout.js.map +1 -0
  598. package/vendor/ink/build/log-update.d.ts +19 -0
  599. package/vendor/ink/build/log-update.js +243 -0
  600. package/vendor/ink/build/log-update.js.map +1 -0
  601. package/vendor/ink/build/measure-element.d.ts +16 -0
  602. package/vendor/ink/build/measure-element.js +9 -0
  603. package/vendor/ink/build/measure-element.js.map +1 -0
  604. package/vendor/ink/build/measure-text.d.ts +6 -0
  605. package/vendor/ink/build/measure-text.js +21 -0
  606. package/vendor/ink/build/measure-text.js.map +1 -0
  607. package/vendor/ink/build/options.d.ts +52 -0
  608. package/vendor/ink/build/options.js +2 -0
  609. package/vendor/ink/build/options.js.map +1 -0
  610. package/vendor/ink/build/output.d.ts +35 -0
  611. package/vendor/ink/build/output.js +183 -0
  612. package/vendor/ink/build/output.js.map +1 -0
  613. package/vendor/ink/build/parse-keypress.d.ts +22 -0
  614. package/vendor/ink/build/parse-keypress.js +493 -0
  615. package/vendor/ink/build/parse-keypress.js.map +1 -0
  616. package/vendor/ink/build/reconciler.d.ts +4 -0
  617. package/vendor/ink/build/reconciler.js +274 -0
  618. package/vendor/ink/build/reconciler.js.map +1 -0
  619. package/vendor/ink/build/render-background.d.ts +4 -0
  620. package/vendor/ink/build/render-background.js +25 -0
  621. package/vendor/ink/build/render-background.js.map +1 -0
  622. package/vendor/ink/build/render-border.d.ts +4 -0
  623. package/vendor/ink/build/render-border.js +73 -0
  624. package/vendor/ink/build/render-border.js.map +1 -0
  625. package/vendor/ink/build/render-node-to-output.d.ts +14 -0
  626. package/vendor/ink/build/render-node-to-output.js +147 -0
  627. package/vendor/ink/build/render-node-to-output.js.map +1 -0
  628. package/vendor/ink/build/render-to-string.d.ts +38 -0
  629. package/vendor/ink/build/render-to-string.js +115 -0
  630. package/vendor/ink/build/render-to-string.js.map +1 -0
  631. package/vendor/ink/build/render.d.ts +121 -0
  632. package/vendor/ink/build/render.js +55 -0
  633. package/vendor/ink/build/render.js.map +1 -0
  634. package/vendor/ink/build/renderer.d.ts +8 -0
  635. package/vendor/ink/build/renderer.js +55 -0
  636. package/vendor/ink/build/renderer.js.map +1 -0
  637. package/vendor/ink/build/sanitize-ansi.d.ts +2 -0
  638. package/vendor/ink/build/sanitize-ansi.js +27 -0
  639. package/vendor/ink/build/sanitize-ansi.js.map +1 -0
  640. package/vendor/ink/build/screen-reader-update.d.ts +13 -0
  641. package/vendor/ink/build/screen-reader-update.js +38 -0
  642. package/vendor/ink/build/screen-reader-update.js.map +1 -0
  643. package/vendor/ink/build/squash-text-nodes.d.ts +3 -0
  644. package/vendor/ink/build/squash-text-nodes.js +36 -0
  645. package/vendor/ink/build/squash-text-nodes.js.map +1 -0
  646. package/vendor/ink/build/styles.d.ts +240 -0
  647. package/vendor/ink/build/styles.js +232 -0
  648. package/vendor/ink/build/styles.js.map +1 -0
  649. package/vendor/ink/build/utils.d.ts +2 -0
  650. package/vendor/ink/build/utils.js +4 -0
  651. package/vendor/ink/build/utils.js.map +1 -0
  652. package/vendor/ink/build/wrap-text.d.ts +3 -0
  653. package/vendor/ink/build/wrap-text.js +31 -0
  654. package/vendor/ink/build/wrap-text.js.map +1 -0
  655. package/vendor/ink/build/write-synchronized.d.ts +4 -0
  656. package/vendor/ink/build/write-synchronized.js +7 -0
  657. package/vendor/ink/build/write-synchronized.js.map +1 -0
  658. package/vendor/ink/license +10 -0
  659. package/vendor/ink/node_modules/@types/node/LICENSE +21 -0
  660. package/vendor/ink/node_modules/@types/node/README.md +15 -0
  661. package/vendor/ink/node_modules/@types/node/assert/strict.d.ts +105 -0
  662. package/vendor/ink/node_modules/@types/node/assert.d.ts +955 -0
  663. package/vendor/ink/node_modules/@types/node/async_hooks.d.ts +623 -0
  664. package/vendor/ink/node_modules/@types/node/buffer.buffer.d.ts +466 -0
  665. package/vendor/ink/node_modules/@types/node/buffer.d.ts +1810 -0
  666. package/vendor/ink/node_modules/@types/node/child_process.d.ts +1428 -0
  667. package/vendor/ink/node_modules/@types/node/cluster.d.ts +486 -0
  668. package/vendor/ink/node_modules/@types/node/compatibility/iterators.d.ts +21 -0
  669. package/vendor/ink/node_modules/@types/node/console.d.ts +151 -0
  670. package/vendor/ink/node_modules/@types/node/constants.d.ts +20 -0
  671. package/vendor/ink/node_modules/@types/node/crypto.d.ts +4065 -0
  672. package/vendor/ink/node_modules/@types/node/dgram.d.ts +564 -0
  673. package/vendor/ink/node_modules/@types/node/diagnostics_channel.d.ts +576 -0
  674. package/vendor/ink/node_modules/@types/node/dns/promises.d.ts +503 -0
  675. package/vendor/ink/node_modules/@types/node/dns.d.ts +922 -0
  676. package/vendor/ink/node_modules/@types/node/domain.d.ts +166 -0
  677. package/vendor/ink/node_modules/@types/node/events.d.ts +1054 -0
  678. package/vendor/ink/node_modules/@types/node/fs/promises.d.ts +1329 -0
  679. package/vendor/ink/node_modules/@types/node/fs.d.ts +4676 -0
  680. package/vendor/ink/node_modules/@types/node/globals.d.ts +150 -0
  681. package/vendor/ink/node_modules/@types/node/globals.typedarray.d.ts +101 -0
  682. package/vendor/ink/node_modules/@types/node/http.d.ts +2167 -0
  683. package/vendor/ink/node_modules/@types/node/http2.d.ts +2480 -0
  684. package/vendor/ink/node_modules/@types/node/https.d.ts +405 -0
  685. package/vendor/ink/node_modules/@types/node/index.d.ts +115 -0
  686. package/vendor/ink/node_modules/@types/node/inspector/promises.d.ts +41 -0
  687. package/vendor/ink/node_modules/@types/node/inspector.d.ts +224 -0
  688. package/vendor/ink/node_modules/@types/node/inspector.generated.d.ts +4226 -0
  689. package/vendor/ink/node_modules/@types/node/module.d.ts +819 -0
  690. package/vendor/ink/node_modules/@types/node/net.d.ts +933 -0
  691. package/vendor/ink/node_modules/@types/node/os.d.ts +507 -0
  692. package/vendor/ink/node_modules/@types/node/package.json +155 -0
  693. package/vendor/ink/node_modules/@types/node/path/posix.d.ts +8 -0
  694. package/vendor/ink/node_modules/@types/node/path/win32.d.ts +8 -0
  695. package/vendor/ink/node_modules/@types/node/path.d.ts +187 -0
  696. package/vendor/ink/node_modules/@types/node/perf_hooks.d.ts +643 -0
  697. package/vendor/ink/node_modules/@types/node/process.d.ts +2156 -0
  698. package/vendor/ink/node_modules/@types/node/punycode.d.ts +117 -0
  699. package/vendor/ink/node_modules/@types/node/querystring.d.ts +152 -0
  700. package/vendor/ink/node_modules/@types/node/quic.d.ts +910 -0
  701. package/vendor/ink/node_modules/@types/node/readline/promises.d.ts +161 -0
  702. package/vendor/ink/node_modules/@types/node/readline.d.ts +541 -0
  703. package/vendor/ink/node_modules/@types/node/repl.d.ts +415 -0
  704. package/vendor/ink/node_modules/@types/node/sea.d.ts +162 -0
  705. package/vendor/ink/node_modules/@types/node/sqlite.d.ts +955 -0
  706. package/vendor/ink/node_modules/@types/node/stream/consumers.d.ts +38 -0
  707. package/vendor/ink/node_modules/@types/node/stream/promises.d.ts +211 -0
  708. package/vendor/ink/node_modules/@types/node/stream/web.d.ts +296 -0
  709. package/vendor/ink/node_modules/@types/node/stream.d.ts +1760 -0
  710. package/vendor/ink/node_modules/@types/node/string_decoder.d.ts +67 -0
  711. package/vendor/ink/node_modules/@types/node/test/reporters.d.ts +96 -0
  712. package/vendor/ink/node_modules/@types/node/test.d.ts +2240 -0
  713. package/vendor/ink/node_modules/@types/node/timers/promises.d.ts +108 -0
  714. package/vendor/ink/node_modules/@types/node/timers.d.ts +159 -0
  715. package/vendor/ink/node_modules/@types/node/tls.d.ts +1198 -0
  716. package/vendor/ink/node_modules/@types/node/trace_events.d.ts +197 -0
  717. package/vendor/ink/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +462 -0
  718. package/vendor/ink/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +71 -0
  719. package/vendor/ink/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +36 -0
  720. package/vendor/ink/node_modules/@types/node/ts5.6/index.d.ts +117 -0
  721. package/vendor/ink/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +72 -0
  722. package/vendor/ink/node_modules/@types/node/ts5.7/index.d.ts +117 -0
  723. package/vendor/ink/node_modules/@types/node/tty.d.ts +250 -0
  724. package/vendor/ink/node_modules/@types/node/url.d.ts +519 -0
  725. package/vendor/ink/node_modules/@types/node/util/types.d.ts +558 -0
  726. package/vendor/ink/node_modules/@types/node/util.d.ts +1662 -0
  727. package/vendor/ink/node_modules/@types/node/v8.d.ts +983 -0
  728. package/vendor/ink/node_modules/@types/node/vm.d.ts +1208 -0
  729. package/vendor/ink/node_modules/@types/node/wasi.d.ts +202 -0
  730. package/vendor/ink/node_modules/@types/node/web-globals/abortcontroller.d.ts +59 -0
  731. package/vendor/ink/node_modules/@types/node/web-globals/blob.d.ts +23 -0
  732. package/vendor/ink/node_modules/@types/node/web-globals/console.d.ts +9 -0
  733. package/vendor/ink/node_modules/@types/node/web-globals/crypto.d.ts +39 -0
  734. package/vendor/ink/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
  735. package/vendor/ink/node_modules/@types/node/web-globals/encoding.d.ts +11 -0
  736. package/vendor/ink/node_modules/@types/node/web-globals/events.d.ts +106 -0
  737. package/vendor/ink/node_modules/@types/node/web-globals/fetch.d.ts +69 -0
  738. package/vendor/ink/node_modules/@types/node/web-globals/importmeta.d.ts +13 -0
  739. package/vendor/ink/node_modules/@types/node/web-globals/messaging.d.ts +23 -0
  740. package/vendor/ink/node_modules/@types/node/web-globals/navigator.d.ts +25 -0
  741. package/vendor/ink/node_modules/@types/node/web-globals/performance.d.ts +45 -0
  742. package/vendor/ink/node_modules/@types/node/web-globals/storage.d.ts +24 -0
  743. package/vendor/ink/node_modules/@types/node/web-globals/streams.d.ts +115 -0
  744. package/vendor/ink/node_modules/@types/node/web-globals/timers.d.ts +44 -0
  745. package/vendor/ink/node_modules/@types/node/web-globals/url.d.ts +24 -0
  746. package/vendor/ink/node_modules/@types/node/worker_threads.d.ts +717 -0
  747. package/vendor/ink/node_modules/@types/node/zlib.d.ts +618 -0
  748. package/vendor/ink/node_modules/node-pty/LICENSE +69 -0
  749. package/vendor/ink/node_modules/node-pty/README.md +164 -0
  750. package/vendor/ink/node_modules/node-pty/binding.gyp +150 -0
  751. package/vendor/ink/node_modules/node-pty/lib/conpty_console_list_agent.js +25 -0
  752. package/vendor/ink/node_modules/node-pty/lib/eventEmitter2.js +47 -0
  753. package/vendor/ink/node_modules/node-pty/lib/index.js +52 -0
  754. package/vendor/ink/node_modules/node-pty/lib/interfaces.js +7 -0
  755. package/vendor/ink/node_modules/node-pty/lib/shared/conout.js +11 -0
  756. package/vendor/ink/node_modules/node-pty/lib/terminal.js +190 -0
  757. package/vendor/ink/node_modules/node-pty/lib/types.js +7 -0
  758. package/vendor/ink/node_modules/node-pty/lib/unixTerminal.js +349 -0
  759. package/vendor/ink/node_modules/node-pty/lib/utils.js +39 -0
  760. package/vendor/ink/node_modules/node-pty/lib/windowsConoutConnection.js +125 -0
  761. package/vendor/ink/node_modules/node-pty/lib/windowsPtyAgent.js +287 -0
  762. package/vendor/ink/node_modules/node-pty/lib/windowsTerminal.js +201 -0
  763. package/vendor/ink/node_modules/node-pty/lib/worker/conoutSocketWorker.js +22 -0
  764. package/vendor/ink/node_modules/node-pty/package.json +65 -0
  765. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-arm64/pty.node +0 -0
  766. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-arm64/spawn-helper +0 -0
  767. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-x64/pty.node +0 -0
  768. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-x64/spawn-helper +0 -0
  769. package/vendor/ink/node_modules/node-pty/prebuilds/linux-arm64/pty.node +0 -0
  770. package/vendor/ink/node_modules/node-pty/prebuilds/linux-x64/pty.node +0 -0
  771. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty/OpenConsole.exe +0 -0
  772. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty/conpty.dll +0 -0
  773. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty.node +0 -0
  774. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty.pdb +0 -0
  775. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.node +0 -0
  776. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.pdb +0 -0
  777. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty/OpenConsole.exe +0 -0
  778. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty/conpty.dll +0 -0
  779. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty.node +0 -0
  780. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty.pdb +0 -0
  781. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.node +0 -0
  782. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.pdb +0 -0
  783. package/vendor/ink/node_modules/node-pty/scripts/post-install.js +76 -0
  784. package/vendor/ink/node_modules/node-pty/scripts/prebuild.js +34 -0
  785. package/vendor/ink/node_modules/node-pty/src/unix/pty.cc +875 -0
  786. package/vendor/ink/node_modules/node-pty/src/unix/spawn-helper.cc +23 -0
  787. package/vendor/ink/node_modules/node-pty/src/win/conpty.cc +582 -0
  788. package/vendor/ink/node_modules/node-pty/src/win/conpty.h +41 -0
  789. package/vendor/ink/node_modules/node-pty/src/win/conpty_console_list.cc +44 -0
  790. package/vendor/ink/node_modules/node-pty/src/win/path_util.cc +95 -0
  791. package/vendor/ink/node_modules/node-pty/src/win/path_util.h +26 -0
  792. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-arm64/OpenConsole.exe +0 -0
  793. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-arm64/conpty.dll +0 -0
  794. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/OpenConsole.exe +0 -0
  795. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/conpty.dll +0 -0
  796. package/vendor/ink/node_modules/node-pty/typings/node-pty.d.ts +215 -0
  797. package/vendor/ink/node_modules/undici-types/LICENSE +21 -0
  798. package/vendor/ink/node_modules/undici-types/README.md +6 -0
  799. package/vendor/ink/node_modules/undici-types/agent.d.ts +32 -0
  800. package/vendor/ink/node_modules/undici-types/api.d.ts +43 -0
  801. package/vendor/ink/node_modules/undici-types/balanced-pool.d.ts +30 -0
  802. package/vendor/ink/node_modules/undici-types/cache-interceptor.d.ts +173 -0
  803. package/vendor/ink/node_modules/undici-types/cache.d.ts +36 -0
  804. package/vendor/ink/node_modules/undici-types/client-stats.d.ts +15 -0
  805. package/vendor/ink/node_modules/undici-types/client.d.ts +108 -0
  806. package/vendor/ink/node_modules/undici-types/connector.d.ts +34 -0
  807. package/vendor/ink/node_modules/undici-types/content-type.d.ts +21 -0
  808. package/vendor/ink/node_modules/undici-types/cookies.d.ts +30 -0
  809. package/vendor/ink/node_modules/undici-types/diagnostics-channel.d.ts +74 -0
  810. package/vendor/ink/node_modules/undici-types/dispatcher.d.ts +276 -0
  811. package/vendor/ink/node_modules/undici-types/env-http-proxy-agent.d.ts +22 -0
  812. package/vendor/ink/node_modules/undici-types/errors.d.ts +161 -0
  813. package/vendor/ink/node_modules/undici-types/eventsource.d.ts +66 -0
  814. package/vendor/ink/node_modules/undici-types/fetch.d.ts +211 -0
  815. package/vendor/ink/node_modules/undici-types/formdata.d.ts +108 -0
  816. package/vendor/ink/node_modules/undici-types/global-dispatcher.d.ts +9 -0
  817. package/vendor/ink/node_modules/undici-types/global-origin.d.ts +7 -0
  818. package/vendor/ink/node_modules/undici-types/h2c-client.d.ts +73 -0
  819. package/vendor/ink/node_modules/undici-types/handlers.d.ts +15 -0
  820. package/vendor/ink/node_modules/undici-types/header.d.ts +160 -0
  821. package/vendor/ink/node_modules/undici-types/index.d.ts +88 -0
  822. package/vendor/ink/node_modules/undici-types/interceptors.d.ts +73 -0
  823. package/vendor/ink/node_modules/undici-types/mock-agent.d.ts +68 -0
  824. package/vendor/ink/node_modules/undici-types/mock-call-history.d.ts +111 -0
  825. package/vendor/ink/node_modules/undici-types/mock-client.d.ts +27 -0
  826. package/vendor/ink/node_modules/undici-types/mock-errors.d.ts +12 -0
  827. package/vendor/ink/node_modules/undici-types/mock-interceptor.d.ts +94 -0
  828. package/vendor/ink/node_modules/undici-types/mock-pool.d.ts +27 -0
  829. package/vendor/ink/node_modules/undici-types/package.json +55 -0
  830. package/vendor/ink/node_modules/undici-types/patch.d.ts +29 -0
  831. package/vendor/ink/node_modules/undici-types/pool-stats.d.ts +19 -0
  832. package/vendor/ink/node_modules/undici-types/pool.d.ts +41 -0
  833. package/vendor/ink/node_modules/undici-types/proxy-agent.d.ts +29 -0
  834. package/vendor/ink/node_modules/undici-types/readable.d.ts +68 -0
  835. package/vendor/ink/node_modules/undici-types/retry-agent.d.ts +8 -0
  836. package/vendor/ink/node_modules/undici-types/retry-handler.d.ts +125 -0
  837. package/vendor/ink/node_modules/undici-types/round-robin-pool.d.ts +41 -0
  838. package/vendor/ink/node_modules/undici-types/snapshot-agent.d.ts +109 -0
  839. package/vendor/ink/node_modules/undici-types/util.d.ts +18 -0
  840. package/vendor/ink/node_modules/undici-types/utility.d.ts +7 -0
  841. package/vendor/ink/node_modules/undici-types/webidl.d.ts +341 -0
  842. package/vendor/ink/node_modules/undici-types/websocket.d.ts +186 -0
  843. package/vendor/ink/package.json +201 -0
  844. package/vendor/ink/readme.md +2636 -0
  845. package/bin/swag-agent.js +0 -9
  846. package/dist/server/lib/pg-rate-limiter.d.ts +0 -21
  847. 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)