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
@@ -3,12 +3,13 @@
3
3
  *
4
4
  * Extracted from local-tools.ts for single-responsibility.
5
5
  */
6
+
6
7
  import { readFileSync, existsSync } from "fs";
7
8
  import { dirname, join } from "path";
8
- import { homedir } from "os";
9
- import { runSubagent, runSubagentBackground, } from "../subagent.js";
10
- import { createTurnContext, getTurnNumber, } from "../telemetry.js";
11
- import { runAgentTeam, runAutoTeam, } from "../team-lead.js";
9
+ import { MEMORY_FILE, COMMANDS_DIR } from "../paths.js";
10
+ import { runSubagent, runSubagentBackground } from "../subagent.js";
11
+ import { createTurnContext, getTurnNumber } from "../telemetry.js";
12
+ import { runAgentTeam, runAutoTeam } from "../team-lead.js";
12
13
  import { readAgentOutput, stopBackgroundAgent } from "../background-processes.js";
13
14
  import { readProcessOutput, killProcess } from "../background-processes.js";
14
15
  import { getGlobalEmitter } from "../agent-events.js";
@@ -19,375 +20,532 @@ import { getModel, setModel } from "../model-manager.js";
19
20
  // ============================================================================
20
21
  // CONFIG TOOL
21
22
  // ============================================================================
23
+
22
24
  export function configTool(input) {
23
- const setting = input.setting;
24
- const value = input.value;
25
- switch (setting) {
26
- case "model": {
27
- if (!value)
28
- return { success: true, output: `Current model: ${getModel()}` };
29
- const result = setModel(value);
30
- if (!result.success) {
31
- return { success: false, output: result.error || `Unknown model: ${value}` };
32
- }
33
- return { success: true, output: `Model set to: ${result.model}` };
25
+ const setting = input.setting;
26
+ const value = input.value;
27
+ switch (setting) {
28
+ case "model":
29
+ {
30
+ if (!value) return {
31
+ success: true,
32
+ output: `Current model: ${getModel()}`
33
+ };
34
+ const result = setModel(value);
35
+ if (!result.success) {
36
+ return {
37
+ success: false,
38
+ output: result.error || `Unknown model: ${value}`
39
+ };
34
40
  }
35
- case "mode":
36
- case "permission_mode": {
37
- if (!value)
38
- return { success: true, output: `Current mode: ${getPermissionMode()}` };
39
- if (!["default", "plan", "yolo"].includes(value)) {
40
- return { success: false, output: `Invalid mode: ${value}. Use: default, plan, yolo` };
41
- }
42
- const result = setPermissionMode(value);
43
- return { success: result.success, output: result.message };
41
+ return {
42
+ success: true,
43
+ output: `Model set to: ${result.model}`
44
+ };
45
+ }
46
+ case "mode":
47
+ case "permission_mode":
48
+ {
49
+ if (!value) return {
50
+ success: true,
51
+ output: `Current mode: ${getPermissionMode()}`
52
+ };
53
+ if (!["default", "plan", "yolo"].includes(value)) {
54
+ return {
55
+ success: false,
56
+ output: `Invalid mode: ${value}. Use: default, plan, yolo`
57
+ };
44
58
  }
45
- case "memory": {
46
- if (!value) {
47
- const memPath = join(homedir(), ".swagmanager", "memory", "MEMORY.md");
48
- if (!existsSync(memPath))
49
- return { success: true, output: "No memory file found." };
50
- const content = readFileSync(memPath, "utf-8");
51
- return { success: true, output: `Memory (${content.length} chars):\n${content.slice(0, 20_000)}` };
52
- }
53
- return { success: false, output: "Use read_file/write_file to edit memory directly." };
59
+ const result = setPermissionMode(value);
60
+ return {
61
+ success: result.success,
62
+ output: result.message
63
+ };
64
+ }
65
+ case "memory":
66
+ {
67
+ if (!value) {
68
+ const memPath = MEMORY_FILE;
69
+ if (!existsSync(memPath)) return {
70
+ success: true,
71
+ output: "No memory file found."
72
+ };
73
+ const content = readFileSync(memPath, "utf-8");
74
+ return {
75
+ success: true,
76
+ output: `Memory (${content.length} chars):\n${content.slice(0, 20_000)}`
77
+ };
54
78
  }
55
- default:
56
- return { success: false, output: `Unknown setting: ${setting}. Available: model, mode, memory` };
57
- }
79
+ return {
80
+ success: false,
81
+ output: "Use read_file/write_file to edit memory directly."
82
+ };
83
+ }
84
+ default:
85
+ return {
86
+ success: false,
87
+ output: `Unknown setting: ${setting}. Available: model, mode, memory`
88
+ };
89
+ }
58
90
  }
91
+
59
92
  // ============================================================================
60
93
  // ASK USER
61
94
  // ============================================================================
95
+
62
96
  export function askUser(input) {
63
- const question = input.question;
64
- const options = input.options;
65
- if (!question)
66
- return { success: false, output: "question is required" };
67
- if (!options || options.length < 2)
68
- return { success: false, output: "at least 2 options required" };
69
- // Emit the question via the global event emitter for the UI to render
70
- const emitter = getGlobalEmitter();
71
- if (emitter) {
72
- emitter.emit("ask_user", { question, options });
73
- }
74
- // Format question as text for the model to see in the response
75
- const optionLines = options.map((o, i) => ` ${i + 1}. **${o.label}** — ${o.description}`).join("\n");
76
- return {
77
- success: true,
78
- output: `Question presented to user:\n${question}\n\nOptions:\n${optionLines}\n\n(Waiting for user response...)`,
79
- };
97
+ const question = input.question;
98
+ const options = input.options;
99
+ if (!question) return {
100
+ success: false,
101
+ output: "question is required"
102
+ };
103
+ if (!options || options.length < 2) return {
104
+ success: false,
105
+ output: "at least 2 options required"
106
+ };
107
+
108
+ // Emit the question via the global event emitter for the UI to render
109
+ const emitter = getGlobalEmitter();
110
+ if (emitter) {
111
+ emitter.emit("ask_user", {
112
+ question,
113
+ options
114
+ });
115
+ }
116
+
117
+ // Format question as text for the model to see in the response
118
+ const optionLines = options.map((o, i) => ` ${i + 1}. **${o.label}** — ${o.description}`).join("\n");
119
+ return {
120
+ success: true,
121
+ output: `Question presented to user:\n${question}\n\nOptions:\n${optionLines}\n\n(Waiting for user response...)`
122
+ };
80
123
  }
124
+
81
125
  // ============================================================================
82
126
  // LSP TOOL
83
127
  // ============================================================================
128
+
84
129
  export async function lspTool(input) {
85
- const operation = input.operation;
86
- if (!operation)
87
- return { success: false, output: "operation is required" };
88
- return await executeLSP(operation, input);
130
+ const operation = input.operation;
131
+ if (!operation) return {
132
+ success: false,
133
+ output: "operation is required"
134
+ };
135
+ return await executeLSP(operation, input);
89
136
  }
137
+
90
138
  // ============================================================================
91
139
  // SKILL TOOL
92
140
  // ============================================================================
141
+
93
142
  export function skillTool(input) {
94
- const skillName = input.skill;
95
- if (!skillName)
96
- return { success: false, output: "skill name is required" };
97
- const args = (input.args || "").split(/\s+/).filter(Boolean);
98
- // Resolution order:
99
- // 1. .whale/commands/{skill}.md (project-local)
100
- // 2. ~/.swagmanager/commands/{skill}.md (user global)
101
- // 3. Built-in skills bundled with package
102
- const localPath = join(process.cwd(), ".whale", "commands", `${skillName}.md`);
103
- const globalPath = join(homedir(), ".swagmanager", "commands", `${skillName}.md`);
104
- // Built-in skills: check both dist/ and src/ locations
105
- const thisFileDir = dirname(new URL(import.meta.url).pathname);
106
- const builtinPaths = [
107
- join(thisFileDir, "..", "builtin-skills", `${skillName}.md`), // dist/cli/services/tools/../builtin-skills/
108
- join(thisFileDir, "..", "..", "..", "..", "src", "cli", "services", "builtin-skills", `${skillName}.md`), // src/ from dist/
109
- ];
110
- let template = null;
111
- let source = "";
112
- // Check local -> global -> builtin (multiple paths)
113
- const candidates = [
114
- [localPath, "local"],
115
- [globalPath, "global"],
116
- ...builtinPaths.map(p => [p, "builtin"]),
117
- ];
118
- for (const [path, src] of candidates) {
119
- if (existsSync(path)) {
120
- try {
121
- let content = readFileSync(path, "utf-8");
122
- // Strip frontmatter
123
- if (content.startsWith("---")) {
124
- const endIdx = content.indexOf("---", 3);
125
- if (endIdx !== -1) {
126
- content = content.slice(endIdx + 3).trim();
127
- }
128
- }
129
- template = content;
130
- source = src;
131
- break;
132
- }
133
- catch { /* skip */ }
143
+ const skillName = input.skill;
144
+ if (!skillName) return {
145
+ success: false,
146
+ output: "skill name is required"
147
+ };
148
+ const args = (input.args || "").split(/\s+/).filter(Boolean);
149
+
150
+ // Resolution order:
151
+ // 1. .whale/commands/{skill}.md (project-local)
152
+ // 2. ~/.whale/commands/{skill}.md (user global)
153
+ // 3. Built-in skills bundled with package
154
+
155
+ const localPath = join(process.cwd(), ".whale", "commands", `${skillName}.md`);
156
+ const globalPath = join(COMMANDS_DIR, `${skillName}.md`);
157
+ // Built-in skills: check both dist/ and src/ locations
158
+ const thisFileDir = dirname(new URL(import.meta.url).pathname);
159
+ const builtinPaths = [join(thisFileDir, "..", "builtin-skills", `${skillName}.md`),
160
+ // dist/cli/services/tools/../builtin-skills/
161
+ join(thisFileDir, "..", "..", "..", "..", "src", "cli", "services", "builtin-skills", `${skillName}.md`) // src/ from dist/
162
+ ];
163
+ let template = null;
164
+ let source = "";
165
+
166
+ // Check local -> global -> builtin (multiple paths)
167
+ const candidates = [[localPath, "local"], [globalPath, "global"], ...builtinPaths.map(p => [p, "builtin"])];
168
+ for (const [path, src] of candidates) {
169
+ if (existsSync(path)) {
170
+ try {
171
+ let content = readFileSync(path, "utf-8");
172
+ // Strip frontmatter
173
+ if (content.startsWith("---")) {
174
+ const endIdx = content.indexOf("---", 3);
175
+ if (endIdx !== -1) {
176
+ content = content.slice(endIdx + 3).trim();
177
+ }
134
178
  }
179
+ template = content;
180
+ source = src;
181
+ break;
182
+ } catch {/* skip */}
135
183
  }
136
- if (!template) {
137
- return {
138
- success: false,
139
- output: `Skill not found: ${skillName}. Available locations:\n .whale/commands/${skillName}.md\n ~/.swagmanager/commands/${skillName}.md\n\nBuilt-in skills: commit, review, review-pr`,
140
- };
141
- }
142
- // Expand arguments ($1, $2, $ARGS)
143
- let expanded = template;
144
- for (let i = 0; i < args.length; i++) {
145
- expanded = expanded.replace(new RegExp(`\\$${i + 1}`, "g"), args[i]);
146
- }
147
- expanded = expanded.replace(/\$ARGS/g, args.join(" "));
148
- expanded = expanded.replace(/\$\d+/g, ""); // Clean up unused
184
+ }
185
+ if (!template) {
149
186
  return {
150
- success: true,
151
- output: `[Skill: ${skillName} (${source})]\n\n${expanded.trim()}`,
187
+ success: false,
188
+ output: `Skill not found: ${skillName}. Available locations:\n .whale/commands/${skillName}.md\n ~/.whale/commands/${skillName}.md\n\nBuilt-in skills: commit, review, review-pr`
152
189
  };
190
+ }
191
+
192
+ // Expand arguments ($1, $2, $ARGS)
193
+ let expanded = template;
194
+ for (let i = 0; i < args.length; i++) {
195
+ expanded = expanded.replace(new RegExp(`\\$${i + 1}`, "g"), args[i]);
196
+ }
197
+ expanded = expanded.replace(/\$ARGS/g, args.join(" "));
198
+ expanded = expanded.replace(/\$\d+/g, ""); // Clean up unused
199
+
200
+ return {
201
+ success: true,
202
+ output: `[Skill: ${skillName} (${source})]\n\n${expanded.trim()}`
203
+ };
153
204
  }
205
+
154
206
  // ============================================================================
155
207
  // TASK TOOL — subagent execution
156
208
  // ============================================================================
209
+
157
210
  /** Create parent trace context for subagent hierarchy */
158
211
  function getParentTraceContext() {
159
- const ctx = createTurnContext();
160
- return {
161
- traceId: ctx.traceId,
162
- spanId: ctx.spanId,
163
- conversationId: ctx.conversationId,
164
- turnNumber: getTurnNumber(),
165
- userId: ctx.userId,
166
- userEmail: ctx.userEmail,
167
- };
212
+ const ctx = createTurnContext();
213
+ return {
214
+ traceId: ctx.traceId,
215
+ spanId: ctx.spanId,
216
+ conversationId: ctx.conversationId,
217
+ turnNumber: getTurnNumber(),
218
+ userId: ctx.userId,
219
+ userEmail: ctx.userEmail
220
+ };
168
221
  }
169
- export async function taskTool(input) {
170
- const prompt = input.prompt;
171
- const subagent_type = input.subagent_type;
172
- const model = input.model || "haiku";
173
- const runInBackground = input.run_in_background;
174
- const maxTurns = input.max_turns;
175
- const agentName = input.name;
176
- const teamName = input.team_name;
177
- const mode = input.mode;
178
- if (!prompt)
179
- return { success: false, output: "prompt is required" };
180
- if (!subagent_type)
181
- return { success: false, output: "subagent_type is required" };
182
- // Apply permission mode for subagent if specified
183
- if (mode) {
184
- setPermissionMode(mode);
185
- // Note: mode resets are handled by subagent isolation
186
- }
187
- debugLog("tools", `task: ${agentName || subagent_type}`, { model, maxTurns, teamName, mode });
188
- try {
189
- // Background mode: start agent, return output file path immediately
190
- if (runInBackground) {
191
- const { agentId, outputFile } = await runSubagentBackground({
192
- prompt,
193
- subagent_type,
194
- model,
195
- max_turns: maxTurns,
196
- name: agentName,
197
- run_in_background: true,
198
- parentTraceContext: getParentTraceContext(),
199
- });
200
- return {
201
- success: true,
202
- output: `Background agent started.\n agent_id: ${agentId}\n output_file: ${outputFile}\n\nUse task_output with task_id="${agentId}" to check progress.`,
203
- };
204
- }
205
- // Foreground mode: run agent synchronously
206
- const result = await runSubagent({
207
- prompt,
208
- subagent_type,
209
- model,
210
- max_turns: maxTurns,
211
- name: agentName,
212
- parentTraceContext: getParentTraceContext(),
213
- });
214
- return {
215
- success: result.success,
216
- output: result.output,
217
- };
218
- }
219
- catch (err) {
220
- return {
221
- success: false,
222
- output: `Task failed: ${err.message || err}`,
223
- };
222
+ export async function taskTool(input, signal) {
223
+ const prompt = input.prompt;
224
+ const subagent_type = input.subagent_type;
225
+ const model = input.model || "haiku";
226
+ const runInBackground = input.run_in_background;
227
+ const maxTurns = input.max_turns;
228
+ const agentName = input.name;
229
+ const teamName = input.team_name;
230
+ const mode = input.mode;
231
+ if (!prompt) return {
232
+ success: false,
233
+ output: "prompt is required"
234
+ };
235
+ if (!subagent_type) return {
236
+ success: false,
237
+ output: "subagent_type is required"
238
+ };
239
+
240
+ // Apply permission mode for subagent if specified
241
+ if (mode) {
242
+ setPermissionMode(mode);
243
+ // Note: mode resets are handled by subagent isolation
244
+ }
245
+ debugLog("tools", `task: ${agentName || subagent_type}`, {
246
+ model,
247
+ maxTurns,
248
+ teamName,
249
+ mode
250
+ });
251
+ try {
252
+ // Background mode: start agent, return output file path immediately
253
+ if (runInBackground) {
254
+ const {
255
+ agentId,
256
+ outputFile
257
+ } = await runSubagentBackground({
258
+ prompt,
259
+ subagent_type,
260
+ model,
261
+ max_turns: maxTurns,
262
+ name: agentName,
263
+ run_in_background: true,
264
+ parentTraceContext: getParentTraceContext()
265
+ });
266
+ return {
267
+ success: true,
268
+ output: `Background agent started.\n agent_id: ${agentId}\n output_file: ${outputFile}\n\nUse task_output with task_id="${agentId}" to check progress.`
269
+ };
224
270
  }
271
+
272
+ // Foreground mode: run agent synchronously
273
+ const result = await runSubagent({
274
+ prompt,
275
+ subagent_type,
276
+ model,
277
+ max_turns: maxTurns,
278
+ name: agentName,
279
+ parentTraceContext: getParentTraceContext(),
280
+ signal
281
+ });
282
+ return {
283
+ success: result.success,
284
+ output: result.output
285
+ };
286
+ } catch (err) {
287
+ return {
288
+ success: false,
289
+ output: `Task failed: ${err.message || err}`
290
+ };
291
+ }
225
292
  }
293
+
226
294
  // ============================================================================
227
295
  // TASK OUTPUT / TASK STOP
228
296
  // ============================================================================
297
+
298
+ /**
299
+ * Tracks consecutive identical outputs per task to detect polling loops.
300
+ * Key: taskId, Value: { hash of last output, consecutive count }
301
+ */
302
+ const taskOutputDedup = new Map();
303
+ const TASK_OUTPUT_DEDUP_LIMIT = 3; // After 3 identical results, warn the model
304
+
305
+ function simpleHash(s) {
306
+ let h = 0;
307
+ for (let i = 0; i < s.length; i++) {
308
+ h = (h << 5) - h + s.charCodeAt(i) | 0;
309
+ }
310
+ return h;
311
+ }
229
312
  export async function taskOutput(input) {
230
- const taskId = input.task_id;
231
- const block = input.block ?? true;
232
- const timeout = Math.min(input.timeout || 30000, 120000);
233
- if (!taskId)
234
- return { success: false, output: "task_id is required" };
235
- // Check if it's a background agent (agent-xxx prefix)
236
- if (taskId.startsWith("agent-")) {
237
- const agentResult = readAgentOutput(taskId);
238
- if (!agentResult)
239
- return { success: false, output: `Agent not found: ${taskId}. Use list_shells to see available tasks.` };
240
- // If blocking and still running, poll until done or timeout
241
- if (block && agentResult.status === "running") {
242
- const start = Date.now();
243
- while (Date.now() - start < timeout) {
244
- await new Promise(r => setTimeout(r, 1000));
245
- const updated = readAgentOutput(taskId);
246
- if (updated && updated.status !== "running") {
247
- return { success: true, output: updated.output };
248
- }
249
- }
250
- const final = readAgentOutput(taskId);
251
- return { success: true, output: `${final?.output || ""}\n(timed out waiting — agent may still be running)`.trim() };
313
+ const taskId = input.task_id;
314
+ const block = input.block ?? true;
315
+ const timeout = Math.min(input.timeout || 30000, 120000);
316
+ if (!taskId) return {
317
+ success: false,
318
+ output: "task_id is required"
319
+ };
320
+
321
+ // Check if it's a background agent (agent-xxx prefix)
322
+ if (taskId.startsWith("agent-")) {
323
+ const agentResult = readAgentOutput(taskId);
324
+ if (!agentResult) return {
325
+ success: false,
326
+ output: `Agent not found: ${taskId}. Use list_shells to see available tasks.`
327
+ };
328
+
329
+ // If blocking and still running, poll until done or timeout
330
+ if (block && agentResult.status === "running") {
331
+ const start = Date.now();
332
+ while (Date.now() - start < timeout) {
333
+ await new Promise(r => setTimeout(r, 1000));
334
+ const updated = readAgentOutput(taskId);
335
+ if (updated && updated.status !== "running") {
336
+ // Agent finished — clear dedup tracker
337
+ taskOutputDedup.delete(taskId);
338
+ return {
339
+ success: true,
340
+ output: updated.output
341
+ };
252
342
  }
253
- return { success: true, output: agentResult.output };
254
- }
255
- // Fall back to shell process output (bash_output behavior)
256
- const result = readProcessOutput(taskId, {});
257
- if ("error" in result)
258
- return { success: false, output: result.error };
259
- const statusIcon = result.status === "running" ? "\u25CF" : result.status === "completed" ? "\u2713" : "\u2715";
260
- const lines = [];
261
- lines.push(`${statusIcon} Task ${taskId} — ${result.status}`);
262
- if (result.exitCode !== undefined)
263
- lines.push(` Exit code: ${result.exitCode}`);
264
- if (result.newOutput) {
265
- lines.push(` Output:`);
266
- lines.push(result.newOutput);
343
+ }
344
+ const final = readAgentOutput(taskId);
345
+ const output = `${final?.output || ""}\n(timed out waiting — agent may still be running)`.trim();
346
+
347
+ // Track repeated identical output to detect polling loops
348
+ return dedupTaskOutput(taskId, output);
267
349
  }
268
- if (result.newErrors) {
269
- lines.push(` Errors:`);
270
- lines.push(result.newErrors);
350
+
351
+ // Agent already done — clear dedup tracker
352
+ if (agentResult.status !== "running") {
353
+ taskOutputDedup.delete(taskId);
271
354
  }
272
- if (!result.newOutput && !result.newErrors)
273
- lines.push(" (no new output since last check)");
274
- return { success: true, output: lines.join("\n") };
355
+ return {
356
+ success: true,
357
+ output: agentResult.output
358
+ };
359
+ }
360
+
361
+ // Fall back to shell process output (bash_output behavior)
362
+ const result = readProcessOutput(taskId, {});
363
+ if ("error" in result) return {
364
+ success: false,
365
+ output: result.error
366
+ };
367
+ const statusIcon = result.status === "running" ? "\u25CF" : result.status === "completed" ? "\u2713" : "\u2715";
368
+ const lines = [];
369
+ lines.push(`${statusIcon} Task ${taskId} — ${result.status}`);
370
+ if (result.exitCode !== undefined) lines.push(` Exit code: ${result.exitCode}`);
371
+ if (result.newOutput) {
372
+ lines.push(` Output:`);
373
+ lines.push(result.newOutput);
374
+ }
375
+ if (result.newErrors) {
376
+ lines.push(` Errors:`);
377
+ lines.push(result.newErrors);
378
+ }
379
+ if (!result.newOutput && !result.newErrors) lines.push(" (no new output since last check)");
380
+ const output = lines.join("\n");
381
+ return result.status === "running" ? dedupTaskOutput(taskId, output) : {
382
+ success: true,
383
+ output
384
+ };
385
+ }
386
+
387
+ /**
388
+ * Check for repeated identical output from a running task.
389
+ * After TASK_OUTPUT_DEDUP_LIMIT identical results, append a warning
390
+ * telling the model to stop polling and do other work instead.
391
+ */
392
+ function dedupTaskOutput(taskId, output) {
393
+ const hash = simpleHash(output);
394
+ const prev = taskOutputDedup.get(taskId);
395
+ if (prev && prev.hash === hash) {
396
+ prev.count++;
397
+ } else {
398
+ taskOutputDedup.set(taskId, {
399
+ hash,
400
+ count: 1
401
+ });
402
+ }
403
+ const entry = taskOutputDedup.get(taskId);
404
+ if (entry.count >= TASK_OUTPUT_DEDUP_LIMIT) {
405
+ return {
406
+ success: true,
407
+ output: output + `\n\n⚠️ POLLING LOOP DETECTED: You have checked this task ${entry.count} times with identical output. The task is still running — STOP polling and move on to other work. The result will be available when the task completes.`
408
+ };
409
+ }
410
+ return {
411
+ success: true,
412
+ output
413
+ };
275
414
  }
276
415
  export function taskStop(input) {
277
- const taskId = input.task_id;
278
- if (!taskId)
279
- return { success: false, output: "task_id is required" };
280
- // Check if it's a background agent
281
- if (taskId.startsWith("agent-")) {
282
- const result = stopBackgroundAgent(taskId);
283
- return { success: result.success, output: result.message };
284
- }
285
- // Fall back to shell kill
286
- const result = killProcess(taskId);
287
- return { success: result.success, output: result.message };
416
+ const taskId = input.task_id;
417
+ if (!taskId) return {
418
+ success: false,
419
+ output: "task_id is required"
420
+ };
421
+
422
+ // Check if it's a background agent
423
+ if (taskId.startsWith("agent-")) {
424
+ const result = stopBackgroundAgent(taskId);
425
+ return {
426
+ success: result.success,
427
+ output: result.message
428
+ };
429
+ }
430
+
431
+ // Fall back to shell kill
432
+ const result = killProcess(taskId);
433
+ return {
434
+ success: result.success,
435
+ output: result.message
436
+ };
288
437
  }
438
+
289
439
  // ============================================================================
290
440
  // TEAM CREATE
291
441
  // ============================================================================
292
- export async function teamCreateTool(input) {
293
- const name = input.name;
294
- const teammateCount = input.teammate_count;
295
- const model = input.model || "sonnet";
296
- const tasksInput = input.tasks;
297
- if (!name)
298
- return { success: false, output: "name is required" };
299
- if (!teammateCount || teammateCount < 1) {
300
- return { success: false, output: "teammate_count must be at least 1" };
301
- }
302
- if (!tasksInput || tasksInput.length === 0) {
303
- return { success: false, output: "tasks array is required and must not be empty" };
304
- }
305
- // Validate task count vs teammate count
306
- if (tasksInput.length < teammateCount) {
307
- return {
308
- success: false,
309
- output: `Not enough tasks (${tasksInput.length}) for ${teammateCount} teammates. Add more tasks or reduce teammates.`,
310
- };
311
- }
312
- const config = {
313
- name,
314
- teammateCount,
315
- model,
316
- tasks: tasksInput,
442
+
443
+ export async function teamCreateTool(input, signal) {
444
+ const name = input.name;
445
+ const teammateCount = input.teammate_count;
446
+ const model = input.model || "sonnet";
447
+ const tasksInput = input.tasks;
448
+ if (!name) return {
449
+ success: false,
450
+ output: "name is required"
451
+ };
452
+ if (!teammateCount || teammateCount < 1) {
453
+ return {
454
+ success: false,
455
+ output: "teammate_count must be at least 1"
317
456
  };
318
- try {
319
- const result = await runAgentTeam(config);
320
- // Build summary output
321
- const lines = [
322
- `## Team: ${name}`,
323
- `Status: ${result.success ? "SUCCESS" : "PARTIAL"}`,
324
- `Duration: ${(result.durationMs / 1000).toFixed(1)}s`,
325
- `Tokens: ${result.tokensUsed.input} in, ${result.tokensUsed.output} out`,
326
- "",
327
- "### Task Results",
328
- ];
329
- for (const task of result.taskResults) {
330
- const icon = task.status === "completed" ? "[done]" : "[fail]";
331
- lines.push(`${icon} ${task.description}`);
332
- if (task.result) {
333
- lines.push(` ${task.result.slice(0, 200)}${task.result.length > 200 ? "..." : ""}`);
334
- }
335
- }
336
- return {
337
- success: result.success,
338
- output: lines.join("\n"),
339
- };
340
- }
341
- catch (err) {
342
- return {
343
- success: false,
344
- output: `Team failed: ${err.message || err}`,
345
- };
457
+ }
458
+ if (!tasksInput || tasksInput.length === 0) {
459
+ return {
460
+ success: false,
461
+ output: "tasks array is required and must not be empty"
462
+ };
463
+ }
464
+
465
+ // Validate task count vs teammate count
466
+ if (tasksInput.length < teammateCount) {
467
+ return {
468
+ success: false,
469
+ output: `Not enough tasks (${tasksInput.length}) for ${teammateCount} teammates. Add more tasks or reduce teammates.`
470
+ };
471
+ }
472
+ const config = {
473
+ name,
474
+ teammateCount,
475
+ model,
476
+ tasks: tasksInput
477
+ };
478
+ try {
479
+ const result = await runAgentTeam(config, signal);
480
+
481
+ // Build summary output
482
+ const lines = [`## Team: ${name}`, `Status: ${result.success ? "SUCCESS" : "PARTIAL"}`, `Duration: ${(result.durationMs / 1000).toFixed(1)}s`, `Tokens: ${result.tokensUsed.input} in, ${result.tokensUsed.output} out`, "", "### Task Results"];
483
+ for (const task of result.taskResults) {
484
+ const icon = task.status === "completed" ? "[done]" : "[fail]";
485
+ lines.push(`${icon} ${task.description}`);
486
+ if (task.result) {
487
+ lines.push(` ${task.result.slice(0, 200)}${task.result.length > 200 ? "..." : ""}`);
488
+ }
346
489
  }
490
+ return {
491
+ success: result.success,
492
+ output: lines.join("\n")
493
+ };
494
+ } catch (err) {
495
+ return {
496
+ success: false,
497
+ output: `Team failed: ${err.message || err}`
498
+ };
499
+ }
347
500
  }
501
+
348
502
  // ============================================================================
349
503
  // TEAM AUTO — auto-decompose + parallel execution + review
350
504
  // ============================================================================
351
- export async function teamAutoTool(input) {
352
- const task = input.task;
353
- if (!task)
354
- return { success: false, output: "task is required" };
355
- const maxTeammates = input.max_teammates || 4;
356
- const model = input.model || "sonnet";
357
- const workingDirectory = input.working_directory || process.cwd();
358
- const review = input.review !== false;
359
- try {
360
- const result = await runAutoTeam(task, {
361
- maxTeammates,
362
- model,
363
- workingDirectory,
364
- review,
365
- });
366
- const lines = [
367
- `## Auto Team`,
368
- `Status: ${result.success ? "SUCCESS" : "PARTIAL"}`,
369
- `Duration: ${(result.durationMs / 1000).toFixed(1)}s`,
370
- `Tokens: ${result.tokensUsed.input} in, ${result.tokensUsed.output} out`,
371
- ];
372
- if (result.warnings?.length) {
373
- lines.push("", "### Warnings");
374
- for (const w of result.warnings)
375
- lines.push(`- ${w}`);
376
- }
377
- lines.push("", "### Task Results");
378
- for (const t of result.taskResults) {
379
- const icon = t.status === "completed" ? "[done]" : "[fail]";
380
- lines.push(`${icon} ${t.description.slice(0, 120)}`);
381
- if (t.result) {
382
- lines.push(` ${t.result.slice(0, 200)}${t.result.length > 200 ? "..." : ""}`);
383
- }
384
- }
385
- if (result.review) {
386
- lines.push("", "### Review", result.review);
387
- }
388
- return { success: result.success, output: lines.join("\n") };
505
+
506
+ export async function teamAutoTool(input, signal) {
507
+ const task = input.task;
508
+ if (!task) return {
509
+ success: false,
510
+ output: "task is required"
511
+ };
512
+ const maxTeammates = input.max_teammates || 4;
513
+ const model = input.model || "sonnet";
514
+ const workingDirectory = input.working_directory || process.cwd();
515
+ const review = input.review !== false;
516
+ try {
517
+ const result = await runAutoTeam(task, {
518
+ maxTeammates,
519
+ model,
520
+ workingDirectory,
521
+ review,
522
+ signal
523
+ });
524
+ const lines = [`## Auto Team`, `Status: ${result.success ? "SUCCESS" : "PARTIAL"}`, `Duration: ${(result.durationMs / 1000).toFixed(1)}s`, `Tokens: ${result.tokensUsed.input} in, ${result.tokensUsed.output} out`];
525
+ if (result.warnings?.length) {
526
+ lines.push("", "### Warnings");
527
+ for (const w of result.warnings) lines.push(`- ${w}`);
389
528
  }
390
- catch (err) {
391
- return { success: false, output: `Auto team failed: ${err.message || err}` };
529
+ lines.push("", "### Task Results");
530
+ for (const t of result.taskResults) {
531
+ const icon = t.status === "completed" ? "[done]" : "[fail]";
532
+ lines.push(`${icon} ${t.description.slice(0, 120)}`);
533
+ if (t.result) {
534
+ lines.push(` ${t.result.slice(0, 200)}${t.result.length > 200 ? "..." : ""}`);
535
+ }
392
536
  }
537
+ if (result.review) {
538
+ lines.push("", "### Review", result.review);
539
+ }
540
+ return {
541
+ success: result.success,
542
+ output: lines.join("\n")
543
+ };
544
+ } catch (err) {
545
+ return {
546
+ success: false,
547
+ output: `Auto team failed: ${err.message || err}`
548
+ };
549
+ }
393
550
  }
551
+ //# sourceMappingURL=agent-tools.js.map