whale-code 6.5.11 → 6.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (613) hide show
  1. package/dist/cli/chat/ChatApp.js +7 -11
  2. package/dist/cli/chat/ChatApp.js.map +1 -1
  3. package/dist/cli/chat/ChatInput.js +7 -3
  4. package/dist/cli/chat/ChatInput.js.map +1 -1
  5. package/dist/cli/chat/MessageList.js +5 -6
  6. package/dist/cli/chat/MessageList.js.map +1 -1
  7. package/dist/cli/chat/StatusBar.d.ts +2 -2
  8. package/dist/cli/chat/StatusBar.js +90 -160
  9. package/dist/cli/chat/StatusBar.js.map +1 -1
  10. package/dist/cli/chat/components/LiveArea.js +78 -115
  11. package/dist/cli/chat/components/LiveArea.js.map +1 -1
  12. package/dist/cli/chat/components/StaticMessages.js +60 -79
  13. package/dist/cli/chat/components/StaticMessages.js.map +1 -1
  14. package/dist/cli/chat/hooks/useAgentLoop.js +45 -37
  15. package/dist/cli/chat/hooks/useAgentLoop.js.map +1 -1
  16. package/dist/cli/chat/store.d.ts +12 -0
  17. package/dist/cli/chat/store.js +19 -0
  18. package/dist/cli/chat/store.js.map +1 -1
  19. package/dist/cli/services/agent-loop-tools.js +10 -1
  20. package/dist/cli/services/agent-loop-tools.js.map +1 -1
  21. package/dist/cli/services/cli-agent-loop.js +3 -2
  22. package/dist/cli/services/cli-agent-loop.js.map +1 -1
  23. package/dist/cli/services/config-store.js +4 -3
  24. package/dist/cli/services/config-store.js.map +1 -1
  25. package/dist/cli/services/memory-manager.js +2 -2
  26. package/dist/cli/services/memory-manager.js.map +1 -1
  27. package/dist/cli/services/permission-modes.js +14 -10
  28. package/dist/cli/services/permission-modes.js.map +1 -1
  29. package/dist/cli/services/session-client.js +2 -1
  30. package/dist/cli/services/session-client.js.map +1 -1
  31. package/dist/cli/services/session-persistence.js +14 -6
  32. package/dist/cli/services/session-persistence.js.map +1 -1
  33. package/dist/cli/shared/SpinnerSlot.js +4 -1
  34. package/dist/cli/shared/SpinnerSlot.js.map +1 -1
  35. package/dist/server/handlers/browser-lifecycle.js +10 -0
  36. package/dist/server/handlers/browser-lifecycle.js.map +1 -1
  37. package/dist/server/handlers/browser.js +16 -1
  38. package/dist/server/handlers/browser.js.map +1 -1
  39. package/dist/server/handlers/campaigns.js +11 -0
  40. package/dist/server/handlers/campaigns.js.map +1 -1
  41. package/dist/server/handlers/catalog-products.js +19 -5
  42. package/dist/server/handlers/catalog-products.js.map +1 -1
  43. package/dist/server/handlers/catalog.js +42 -8
  44. package/dist/server/handlers/catalog.js.map +1 -1
  45. package/dist/server/handlers/clickhouse.js +4 -4
  46. package/dist/server/handlers/clickhouse.js.map +1 -1
  47. package/dist/server/handlers/comms-email.js +70 -8
  48. package/dist/server/handlers/comms-email.js.map +1 -1
  49. package/dist/server/handlers/comms.js +63 -21
  50. package/dist/server/handlers/comms.js.map +1 -1
  51. package/dist/server/handlers/coupons.js +141 -77
  52. package/dist/server/handlers/coupons.js.map +1 -1
  53. package/dist/server/handlers/google-ads.js +280 -8
  54. package/dist/server/handlers/google-ads.js.map +1 -1
  55. package/dist/server/handlers/remove-bg.d.ts +33 -0
  56. package/dist/server/handlers/remove-bg.js +698 -44
  57. package/dist/server/handlers/remove-bg.js.map +1 -1
  58. package/dist/server/handlers/supply-chain.js +93 -1
  59. package/dist/server/handlers/supply-chain.js.map +1 -1
  60. package/dist/server/handlers/workflow-steps-types.d.ts +1 -1
  61. package/dist/server/handlers/workflow-steps-types.js +7 -1
  62. package/dist/server/handlers/workflow-steps-types.js.map +1 -1
  63. package/dist/server/handlers/workflow-steps.js +1 -1
  64. package/dist/server/handlers/workflow-steps.js.map +1 -1
  65. package/dist/server/index.js +122 -29
  66. package/dist/server/index.js.map +1 -1
  67. package/dist/server/lib/agent-loop-turn.js +33 -3
  68. package/dist/server/lib/agent-loop-turn.js.map +1 -1
  69. package/dist/server/lib/agent-loop-types.d.ts +6 -2
  70. package/dist/server/lib/agent-loop-types.js +14 -2
  71. package/dist/server/lib/agent-loop-types.js.map +1 -1
  72. package/dist/server/lib/clickhouse-client.js +4 -2
  73. package/dist/server/lib/clickhouse-client.js.map +1 -1
  74. package/dist/server/lib/code-worker.js +4 -1
  75. package/dist/server/lib/code-worker.js.map +1 -1
  76. package/dist/server/providers/anthropic.js +103 -33
  77. package/dist/server/providers/anthropic.js.map +1 -1
  78. package/dist/server/server-chat.js +2 -2
  79. package/dist/server/server-chat.js.map +1 -1
  80. package/dist/server/server-helpers.d.ts +8 -1
  81. package/dist/server/server-helpers.js +17 -3
  82. package/dist/server/server-helpers.js.map +1 -1
  83. package/dist/server/server-persist.js +34 -21
  84. package/dist/server/server-persist.js.map +1 -1
  85. package/dist/server/server-rate-limit.d.ts +0 -1
  86. package/dist/server/server-rate-limit.js +5 -5
  87. package/dist/server/server-rate-limit.js.map +1 -1
  88. package/dist/server/server-routes-approvals.js +2 -2
  89. package/dist/server/server-routes-approvals.js.map +1 -1
  90. package/dist/server/server-routes-auth.js +2 -2
  91. package/dist/server/server-routes-auth.js.map +1 -1
  92. package/dist/server/server-routes-events.js +2 -2
  93. package/dist/server/server-routes-events.js.map +1 -1
  94. package/dist/server/server-routes-public.js +4 -4
  95. package/dist/server/server-routes-public.js.map +1 -1
  96. package/dist/server/server-routes-webchat.js +3 -3
  97. package/dist/server/server-routes-webchat.js.map +1 -1
  98. package/dist/server/server-store-circuit-breaker.js +1 -1
  99. package/dist/server/server-store-circuit-breaker.js.map +1 -1
  100. package/dist/server/tool-router.js +7 -4
  101. package/dist/server/tool-router.js.map +1 -1
  102. package/dist/server/validation.js +11 -0
  103. package/dist/server/validation.js.map +1 -1
  104. package/dist/shared/api-client.js +38 -11
  105. package/dist/shared/api-client.js.map +1 -1
  106. package/package.json +12 -10
  107. package/vendor/ink/build/ink.js +68 -24
  108. package/vendor/ink/node_modules/react-devtools-core/README.md +152 -0
  109. package/vendor/ink/node_modules/react-devtools-core/backend.js +1 -0
  110. package/vendor/ink/node_modules/react-devtools-core/dist/648.chunk.js +2 -0
  111. package/vendor/ink/node_modules/react-devtools-core/dist/648.chunk.js.map +1 -0
  112. package/vendor/ink/node_modules/react-devtools-core/dist/backend.js +15691 -0
  113. package/vendor/ink/node_modules/react-devtools-core/dist/backend.js.map +1 -0
  114. package/vendor/ink/node_modules/react-devtools-core/dist/importFile.worker.worker.js +2 -0
  115. package/vendor/ink/node_modules/react-devtools-core/dist/importFile.worker.worker.js.map +1 -0
  116. package/vendor/ink/node_modules/react-devtools-core/dist/parseSourceAndMetadata.worker.worker.js +14 -0
  117. package/vendor/ink/node_modules/react-devtools-core/dist/parseSourceAndMetadata.worker.worker.js.map +1 -0
  118. package/vendor/ink/node_modules/react-devtools-core/dist/standalone.js +2 -0
  119. package/vendor/ink/node_modules/react-devtools-core/dist/standalone.js.map +1 -0
  120. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/LICENSE +21 -0
  121. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/README.md +495 -0
  122. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/browser.js +8 -0
  123. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/index.js +10 -0
  124. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/buffer-util.js +129 -0
  125. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/constants.js +10 -0
  126. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/event-target.js +184 -0
  127. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/extension.js +223 -0
  128. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/limiter.js +55 -0
  129. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/permessage-deflate.js +518 -0
  130. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/receiver.js +607 -0
  131. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/sender.js +409 -0
  132. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/stream.js +180 -0
  133. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/validation.js +104 -0
  134. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/websocket-server.js +449 -0
  135. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/websocket.js +1197 -0
  136. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/package.json +56 -0
  137. package/vendor/ink/node_modules/react-devtools-core/package.json +38 -0
  138. package/vendor/ink/node_modules/react-devtools-core/standalone.js +1 -0
  139. package/dist/cli/__tests__/print-mode-streaming.test.js +0 -270
  140. package/dist/cli/__tests__/print-mode.basic-output.test.js +0 -230
  141. package/dist/cli/__tests__/print-mode.session-errors.test.js +0 -252
  142. package/dist/cli/__tests__/print-mode.test.js +0 -273
  143. package/dist/cli/__tests__/serve-mode-messages.test.js +0 -338
  144. package/dist/cli/__tests__/serve-mode.messages.part2.test.js +0 -266
  145. package/dist/cli/__tests__/serve-mode.messages.test.js +0 -277
  146. package/dist/cli/__tests__/serve-mode.startup-http.test.js +0 -279
  147. package/dist/cli/__tests__/serve-mode.test.js +0 -345
  148. package/dist/cli/chat/NodeManager.d.ts +0 -30
  149. package/dist/cli/chat/NodeManager.js +0 -66
  150. package/dist/cli/chat/NodeManager.js.map +0 -1
  151. package/dist/cli/chat/chat-input-menu-handler.d.ts +0 -32
  152. package/dist/cli/chat/hooks/slash-imsg-handlers.js +0 -148
  153. package/dist/cli/chat/hooks/slash-imsg-handlers.js.map +0 -1
  154. package/dist/cli/chat/hooks/useStreamingReducer.d.ts +0 -66
  155. package/dist/cli/commands/__tests__/config-cmd.test.js +0 -270
  156. package/dist/cli/commands/__tests__/doctor.test.js +0 -257
  157. package/dist/cli/commands/__tests__/imsg-node-bridge.test.js +0 -99
  158. package/dist/cli/commands/__tests__/imsg-utils.test.js +0 -73
  159. package/dist/cli/commands/__tests__/init.test.js +0 -214
  160. package/dist/cli/commands/__tests__/mcp.test.js +0 -287
  161. package/dist/cli/commands/imsg-watcher-helpers.d.ts +0 -40
  162. package/dist/cli/commands/imsg-watcher-helpers.js +0 -184
  163. package/dist/cli/commands/imsg-watcher-helpers.js.map +0 -1
  164. package/dist/cli/commands/imsg-watcher.d.ts +0 -11
  165. package/dist/cli/commands/imsg-watcher.js +0 -230
  166. package/dist/cli/commands/imsg-watcher.js.map +0 -1
  167. package/dist/cli/services/__tests__/agent-definitions.test.js +0 -153
  168. package/dist/cli/services/__tests__/agent-events-global.test.js +0 -39
  169. package/dist/cli/services/__tests__/agent-events.part2.test.js +0 -113
  170. package/dist/cli/services/__tests__/agent-events.test.js +0 -157
  171. package/dist/cli/services/__tests__/agent-loop-auth.test.js +0 -392
  172. package/dist/cli/services/__tests__/agent-loop-budget.test.js +0 -389
  173. package/dist/cli/services/__tests__/agent-loop-tools-lifecycle.test.js +0 -430
  174. package/dist/cli/services/__tests__/agent-loop-tools-maxturns.test.js +0 -486
  175. package/dist/cli/services/__tests__/agent-loop-utils-execution.test.js +0 -528
  176. package/dist/cli/services/__tests__/agent-loop-utils-helpers.test.js +0 -466
  177. package/dist/cli/services/__tests__/agent-worker-base-execute.test.js +0 -257
  178. package/dist/cli/services/__tests__/agent-worker-base-helpers.test.js +0 -198
  179. package/dist/cli/services/__tests__/agent-worker-base.test.js +0 -278
  180. package/dist/cli/services/__tests__/auth-service-exports.test.js +0 -41
  181. package/dist/cli/services/__tests__/auth-service.part2.test.js +0 -169
  182. package/dist/cli/services/__tests__/auth-service.test.js +0 -242
  183. package/dist/cli/services/__tests__/background-processes.test.js +0 -282
  184. package/dist/cli/services/__tests__/claude-md-loader.test.js +0 -134
  185. package/dist/cli/services/__tests__/config-store.test.js +0 -247
  186. package/dist/cli/services/__tests__/debug-log.test.js +0 -199
  187. package/dist/cli/services/__tests__/edge-cases-caching.test.js +0 -174
  188. package/dist/cli/services/__tests__/edge-cases-compaction-core.test.js +0 -226
  189. package/dist/cli/services/__tests__/edge-cases-compaction-openai.test.js +0 -152
  190. package/dist/cli/services/__tests__/edge-cases-compaction-shapes.test.js +0 -53
  191. package/dist/cli/services/__tests__/edge-cases-compaction-thinking.test.js +0 -226
  192. package/dist/cli/services/__tests__/edge-cases-compaction.test.js +0 -131
  193. package/dist/cli/services/__tests__/edge-cases-paths.test.js +0 -86
  194. package/dist/cli/services/__tests__/error-logger-messages.test.js +0 -81
  195. package/dist/cli/services/__tests__/error-logger-transport.test.js +0 -119
  196. package/dist/cli/services/__tests__/error-logger.test.js +0 -264
  197. package/dist/cli/services/__tests__/file-history.test.js +0 -136
  198. package/dist/cli/services/__tests__/git-context-cache-reset.test.js +0 -223
  199. package/dist/cli/services/__tests__/git-context.test.js +0 -241
  200. package/dist/cli/services/__tests__/interactive-tools-execute.test.js +0 -166
  201. package/dist/cli/services/__tests__/interactive-tools-plan.test.js +0 -197
  202. package/dist/cli/services/__tests__/interactive-tools.part2.test.js +0 -168
  203. package/dist/cli/services/__tests__/interactive-tools.test.js +0 -179
  204. package/dist/cli/services/__tests__/keybinding-manager.test.js +0 -205
  205. package/dist/cli/services/__tests__/local-tools-dispatch.test.js +0 -404
  206. package/dist/cli/services/__tests__/local-tools.test.js +0 -238
  207. package/dist/cli/services/__tests__/lsp-manager.test.js +0 -364
  208. package/dist/cli/services/__tests__/mcp-client-connect-disconnect.test.js +0 -310
  209. package/dist/cli/services/__tests__/mcp-client.test.js +0 -93
  210. package/dist/cli/services/__tests__/memory-manager.test.js +0 -154
  211. package/dist/cli/services/__tests__/model-manager-utils.test.js +0 -154
  212. package/dist/cli/services/__tests__/model-manager.test.js +0 -175
  213. package/dist/cli/services/__tests__/permission-modes.test.js +0 -222
  214. package/dist/cli/services/__tests__/ripgrep.test.js +0 -328
  215. package/dist/cli/services/__tests__/server-tools-execute.test.js +0 -317
  216. package/dist/cli/services/__tests__/server-tools.test.js +0 -272
  217. package/dist/cli/services/__tests__/session-persistence.test.js +0 -245
  218. package/dist/cli/services/__tests__/subagent-basic.test.js +0 -489
  219. package/dist/cli/services/__tests__/subagent-edge.test.js +0 -545
  220. package/dist/cli/services/__tests__/subagent-prompts.test.js +0 -558
  221. package/dist/cli/services/__tests__/subagent-worker-errors.test.js +0 -255
  222. package/dist/cli/services/__tests__/subagent-worker.test.js +0 -242
  223. package/dist/cli/services/__tests__/system-prompt.test.js +0 -210
  224. package/dist/cli/services/__tests__/team-lead-comms-messaging.test.js +0 -250
  225. package/dist/cli/services/__tests__/team-lead-comms-result.test.js +0 -232
  226. package/dist/cli/services/__tests__/team-lead-comms-stop.test.js +0 -344
  227. package/dist/cli/services/__tests__/team-lead-comms.test.js +0 -285
  228. package/dist/cli/services/__tests__/team-lead-create.test.js +0 -327
  229. package/dist/cli/services/__tests__/team-lead-run.test.js +0 -318
  230. package/dist/cli/services/__tests__/team-lead-stop.test.js +0 -199
  231. package/dist/cli/services/__tests__/team-state-comms.test.js +0 -240
  232. package/dist/cli/services/__tests__/team-state-core.test.js +0 -230
  233. package/dist/cli/services/__tests__/team-state-tasks-complete-fail-available.test.js +0 -224
  234. package/dist/cli/services/__tests__/team-state-tasks.test.js +0 -184
  235. package/dist/cli/services/__tests__/telemetry-ai-metadata.test.js +0 -116
  236. package/dist/cli/services/__tests__/telemetry.part2.test.js +0 -195
  237. package/dist/cli/services/__tests__/telemetry.test.js +0 -176
  238. package/dist/cli/services/agent-loop-iteration.d.ts +0 -13
  239. package/dist/cli/services/agent-loop-setup.d.ts +0 -32
  240. package/dist/cli/services/agent-worker-base-api.d.ts +0 -19
  241. package/dist/cli/services/agent-worker-base-helpers.d.ts +0 -27
  242. package/dist/cli/services/agent-worker-base-tools.d.ts +0 -16
  243. package/dist/cli/services/agent-worker-base-types.d.ts +0 -81
  244. package/dist/cli/services/background-agents.d.ts +0 -26
  245. package/dist/cli/services/background-processes-ops.d.ts +0 -24
  246. package/dist/cli/services/background-tool-defs.d.ts +0 -50
  247. package/dist/cli/services/config-modules-model.test.js +0 -133
  248. package/dist/cli/services/config-modules-permission.test.js +0 -85
  249. package/dist/cli/services/config-modules-permissions.test.js +0 -85
  250. package/dist/cli/services/config-modules-session.test.js +0 -297
  251. package/dist/cli/services/format-server-response-columns.test.js +0 -265
  252. package/dist/cli/services/format-server-response-fallback.test.js +0 -65
  253. package/dist/cli/services/format-server-response-primitives-basic.test.js +0 -261
  254. package/dist/cli/services/format-server-response-primitives-nested.test.js +0 -188
  255. package/dist/cli/services/format-server-response-primitives.test.js +0 -300
  256. package/dist/cli/services/format-server-response-realworld.test.js +0 -248
  257. package/dist/cli/services/format-server-response-values.test.js +0 -247
  258. package/dist/cli/services/hooks-runners.test.js +0 -184
  259. package/dist/cli/services/hooks.glob-load.test.js +0 -233
  260. package/dist/cli/services/hooks.run-hooks.test.js +0 -184
  261. package/dist/cli/services/hooks.test.js +0 -233
  262. package/dist/cli/services/ink-incremental.d.ts +0 -19
  263. package/dist/cli/services/ink-incremental.js +0 -59
  264. package/dist/cli/services/ink-incremental.js.map +0 -1
  265. package/dist/cli/services/ink-resize-fix.d.ts +0 -18
  266. package/dist/cli/services/ink-resize-fix.js +0 -76
  267. package/dist/cli/services/ink-resize-fix.js.map +0 -1
  268. package/dist/cli/services/ink-sync-output.d.ts +0 -12
  269. package/dist/cli/services/ink-sync-output.js +0 -16
  270. package/dist/cli/services/ink-sync-output.js.map +0 -1
  271. package/dist/cli/services/interactive-tool-defs.d.ts +0 -80
  272. package/dist/cli/services/local-tools-definitions.d.ts +0 -6
  273. package/dist/cli/services/local-tools-files.test.js +0 -256
  274. package/dist/cli/services/local-tools-read-many.d.ts +0 -6
  275. package/dist/cli/services/model-router.test.js +0 -245
  276. package/dist/cli/services/rewind-rewindTo.test.js +0 -202
  277. package/dist/cli/services/rewind.test.js +0 -175
  278. package/dist/cli/services/sandbox.test.js +0 -198
  279. package/dist/cli/services/subagent-execution.d.ts +0 -12
  280. package/dist/cli/services/team-lead-auto.d.ts +0 -11
  281. package/dist/cli/services/team-lead-execution.d.ts +0 -28
  282. package/dist/cli/services/teammate-loop.js +0 -557
  283. package/dist/cli/services/teammate-loop.js.map +0 -1
  284. package/dist/cli/services/tools/__tests__/agent-tools-tasks-teams.test.js +0 -250
  285. package/dist/cli/services/tools/__tests__/agent-tools-teams.test.js +0 -200
  286. package/dist/cli/services/tools/__tests__/agent-tools.test.js +0 -340
  287. package/dist/cli/services/tools/__tests__/file-ops-cache.test.js +0 -152
  288. package/dist/cli/services/tools/__tests__/file-ops-notebook.test.js +0 -249
  289. package/dist/cli/services/tools/__tests__/file-ops-read.test.js +0 -261
  290. package/dist/cli/services/tools/__tests__/file-ops-write.test.js +0 -292
  291. package/dist/cli/services/tools/__tests__/search-tools-rg.test.js +0 -92
  292. package/dist/cli/services/tools/__tests__/search-tools.part2.test.js +0 -174
  293. package/dist/cli/services/tools/__tests__/search-tools.test.js +0 -227
  294. package/dist/cli/services/tools/__tests__/shell-exec-allowed-core.test.js +0 -163
  295. package/dist/cli/services/tools/__tests__/shell-exec-allowed-extended.test.js +0 -220
  296. package/dist/cli/services/tools/__tests__/shell-exec-allowed.part2.test.js +0 -215
  297. package/dist/cli/services/tools/__tests__/shell-exec-allowed.test.js +0 -154
  298. package/dist/cli/services/tools/__tests__/shell-exec-blocked.test.js +0 -132
  299. package/dist/cli/services/tools/__tests__/shell-exec-execution.test.js +0 -245
  300. package/dist/cli/services/tools/__tests__/task-manager-create.test.js +0 -110
  301. package/dist/cli/services/tools/__tests__/task-manager-crud.test.js +0 -339
  302. package/dist/cli/services/tools/__tests__/task-manager-list-get.test.js +0 -343
  303. package/dist/cli/services/tools/__tests__/task-manager-query.test.js +0 -346
  304. package/dist/cli/services/tools/__tests__/task-manager-routing.test.js +0 -58
  305. package/dist/cli/services/tools/__tests__/task-manager-update.test.js +0 -224
  306. package/dist/cli/services/tools/__tests__/task-manager.test.js +0 -159
  307. package/dist/cli/services/tools/__tests__/web-tools-html-search.test.js +0 -227
  308. package/dist/cli/services/tools/__tests__/web-tools.test.js +0 -285
  309. package/dist/cli/services/tools/shell-exec.test.js +0 -148
  310. package/dist/cli/shared/SharedTick.d.ts +0 -10
  311. package/dist/cli/shared/__tests__/markdown.test.js +0 -188
  312. package/dist/local-agent/__tests__/connection-disconnect.test.js +0 -201
  313. package/dist/local-agent/__tests__/connection-lifecycle.test.js +0 -289
  314. package/dist/local-agent/__tests__/connection-msghandling.test.js +0 -311
  315. package/dist/local-agent/__tests__/connection-reconnect.test.js +0 -230
  316. package/dist/local-agent/__tests__/connection-toolexec.test.js +0 -253
  317. package/dist/local-agent/__tests__/discovery.test.js +0 -328
  318. package/dist/local-agent/__tests__/executor-background.test.js +0 -219
  319. package/dist/local-agent/__tests__/executor-exec.test.js +0 -221
  320. package/dist/local-agent/__tests__/executor-jobs-sessions.test.js +0 -220
  321. package/dist/local-agent/__tests__/executor-system-info.test.js +0 -133
  322. package/dist/local-agent/__tests__/executor-systeminfo.test.js +0 -109
  323. package/dist/local-agent/__tests__/executor.test.js +0 -235
  324. package/dist/local-agent/__tests__/index.test.js +0 -139
  325. package/dist/node/__tests__/cli-channels.test.js +0 -293
  326. package/dist/node/__tests__/cli-config-edge.test.js +0 -154
  327. package/dist/node/__tests__/cli-config.test.js +0 -215
  328. package/dist/node/__tests__/config.test.js +0 -292
  329. package/dist/node/__tests__/runtime-heartbeat.test.js +0 -153
  330. package/dist/node/__tests__/runtime-lifecycle-init.test.js +0 -263
  331. package/dist/node/__tests__/runtime-lifecycle-stats.test.js +0 -180
  332. package/dist/node/__tests__/runtime-lifecycle.test.js +0 -305
  333. package/dist/node/__tests__/runtime-relay.test.js +0 -341
  334. package/dist/node/adapters/__tests__/base.test.js +0 -286
  335. package/dist/node/adapters/__tests__/discord.test.js +0 -284
  336. package/dist/node/adapters/__tests__/email-send.test.js +0 -295
  337. package/dist/node/adapters/__tests__/email.inbound-send.test.js +0 -217
  338. package/dist/node/adapters/__tests__/email.lifecycle.test.js +0 -211
  339. package/dist/node/adapters/__tests__/email.test.js +0 -290
  340. package/dist/node/adapters/__tests__/email.webhook-send.test.js +0 -251
  341. package/dist/node/adapters/__tests__/imessage-filter.test.js +0 -183
  342. package/dist/node/adapters/__tests__/imessage-lifecycle.test.js +0 -215
  343. package/dist/node/adapters/__tests__/imessage-send-restart.test.js +0 -227
  344. package/dist/node/adapters/__tests__/slack.part2.test.js +0 -135
  345. package/dist/node/adapters/__tests__/slack.test.js +0 -241
  346. package/dist/node/adapters/__tests__/sms-extras.test.js +0 -108
  347. package/dist/node/adapters/__tests__/sms-lifecycle.test.js +0 -203
  348. package/dist/node/adapters/__tests__/sms-messaging.test.js +0 -266
  349. package/dist/node/adapters/__tests__/sms.part2.test.js +0 -174
  350. package/dist/node/adapters/__tests__/sms.test.js +0 -253
  351. package/dist/node/adapters/__tests__/telegram-polling.test.js +0 -256
  352. package/dist/node/adapters/__tests__/telegram-send.test.js +0 -166
  353. package/dist/node/adapters/__tests__/webchat-inbound.test.js +0 -188
  354. package/dist/node/adapters/__tests__/webchat-outbound.test.js +0 -178
  355. package/dist/node/adapters/__tests__/whatsapp-inbound.test.js +0 -200
  356. package/dist/node/adapters/__tests__/whatsapp-send.test.js +0 -212
  357. package/dist/node/adapters/__tests__/whatsapp.test.js +0 -280
  358. package/dist/server/__tests__/gateway-fast-fail.test.js +0 -160
  359. package/dist/server/__tests__/local-agent-gateway.test.js +0 -186
  360. package/dist/server/__tests__/proxy-handlers-delegation.test.js +0 -240
  361. package/dist/server/__tests__/proxy-handlers-validation.test.js +0 -211
  362. package/dist/server/__tests__/proxy-handlers.part2.test.js +0 -240
  363. package/dist/server/__tests__/proxy-handlers.test.js +0 -213
  364. package/dist/server/__tests__/strip-base64-e2e.test.js +0 -303
  365. package/dist/server/__tests__/strip-base64.test.js +0 -256
  366. package/dist/server/__tests__/tool-router-agent-tools.test.js +0 -324
  367. package/dist/server/__tests__/tool-router-execute-core.test.js +0 -357
  368. package/dist/server/__tests__/tool-router-execute-permissions.test.js +0 -332
  369. package/dist/server/__tests__/tool-router-execute.test.js +0 -348
  370. package/dist/server/__tests__/tool-router-load.test.js +0 -432
  371. package/dist/server/__tests__/tool-router-permissions.test.js +0 -359
  372. package/dist/server/__tests__/tool-router-registry-cache.test.js +0 -383
  373. package/dist/server/__tests__/tool-router-registry-handlers.test.js +0 -272
  374. package/dist/server/__tests__/tool-router-registry.test.js +0 -331
  375. package/dist/server/__tests__/validation-inventory.test.js +0 -250
  376. package/dist/server/__tests__/validation-misc.test.js +0 -243
  377. package/dist/server/__tests__/validation-supply-chain.test.js +0 -188
  378. package/dist/server/__tests__/worker.test.js +0 -265
  379. package/dist/server/handlers/__tests__/conversation-lock.test.js +0 -117
  380. package/dist/server/handlers/__tests__/e2e/auth-cross-platform-login.e2e.test.js +0 -268
  381. package/dist/server/handlers/__tests__/e2e/auth-cross-platform-tokens.e2e.test.js +0 -264
  382. package/dist/server/handlers/__tests__/e2e/email-pipeline-send.e2e.test.js +0 -214
  383. package/dist/server/handlers/__tests__/e2e/email-pipeline-threads.e2e.test.js +0 -168
  384. package/dist/server/handlers/__tests__/e2e/error-logging-pipeline-dedup.e2e.test.js +0 -229
  385. package/dist/server/handlers/__tests__/e2e/error-logging-pipeline.e2e.test.js +0 -239
  386. package/dist/server/handlers/__tests__/e2e/error-logging-rate-limit.e2e.test.js +0 -150
  387. package/dist/server/handlers/__tests__/e2e/inventory-sync-guards.e2e.test.js +0 -177
  388. package/dist/server/handlers/__tests__/e2e/inventory-sync.e2e.test.js +0 -228
  389. package/dist/server/handlers/__tests__/e2e/inventory-sync.part2.e2e.test.js +0 -188
  390. package/dist/server/handlers/__tests__/e2e/order-lifecycle-fulfillment.e2e.test.js +0 -295
  391. package/dist/server/handlers/__tests__/e2e/order-lifecycle.e2e.test.js +0 -277
  392. package/dist/server/handlers/__tests__/e2e/order-lifecycle.fulfillment.e2e.test.js +0 -307
  393. package/dist/server/handlers/__tests__/e2e/order-lifecycle.setup.e2e.test.js +0 -177
  394. package/dist/server/handlers/__tests__/e2e/storefront-checkout-cart.e2e.test.js +0 -255
  395. package/dist/server/handlers/__tests__/e2e/storefront-checkout-webhook.e2e.test.js +0 -231
  396. package/dist/server/handlers/__tests__/e2e/workflow-execution-failures.e2e.test.js +0 -235
  397. package/dist/server/handlers/__tests__/e2e/workflow-execution.e2e.test.js +0 -294
  398. package/dist/server/handlers/__tests__/e2e/workflow-security.e2e.test.js +0 -311
  399. package/dist/server/handlers/__tests__/e2e/workflow-security.part2.e2e.test.js +0 -267
  400. package/dist/server/handlers/__tests__/workflow-cache.test.js +0 -237
  401. package/dist/server/handlers/analytics-errors-edge.test.js +0 -173
  402. package/dist/server/handlers/analytics.test.js +0 -280
  403. package/dist/server/handlers/api-docs-examples-ext.d.ts +0 -9
  404. package/dist/server/handlers/api-docs-examples-ext.js +0 -278
  405. package/dist/server/handlers/api-docs-examples-ext.js.map +0 -1
  406. package/dist/server/handlers/api-docs-examples.d.ts +0 -8
  407. package/dist/server/handlers/api-docs-examples.js +0 -221
  408. package/dist/server/handlers/api-docs-examples.js.map +0 -1
  409. package/dist/server/handlers/api-docs-sections-ext.d.ts +0 -2
  410. package/dist/server/handlers/api-docs-sections-ext.js +0 -497
  411. package/dist/server/handlers/api-docs-sections-ext.js.map +0 -1
  412. package/dist/server/handlers/api-docs-sections.d.ts +0 -21
  413. package/dist/server/handlers/api-docs-sections.js +0 -293
  414. package/dist/server/handlers/api-docs-sections.js.map +0 -1
  415. package/dist/server/handlers/api-keys.part2.test.js +0 -157
  416. package/dist/server/handlers/api-keys.test.js +0 -161
  417. package/dist/server/handlers/billing-routes.test.js +0 -123
  418. package/dist/server/handlers/billing.test.js +0 -215
  419. package/dist/server/handlers/browser-actions-errors.test.js +0 -94
  420. package/dist/server/handlers/browser-actions.part2.test.js +0 -190
  421. package/dist/server/handlers/browser-actions.test.js +0 -190
  422. package/dist/server/handlers/browser-validation.test.js +0 -257
  423. package/dist/server/handlers/catalog.test.js +0 -297
  424. package/dist/server/handlers/comms.test.js +0 -289
  425. package/dist/server/handlers/creations-advanced-collections.test.js +0 -214
  426. package/dist/server/handlers/creations-advanced-generate.test.js +0 -142
  427. package/dist/server/handlers/creations-advanced.test.js +0 -171
  428. package/dist/server/handlers/creations-collections-preview.test.js +0 -214
  429. package/dist/server/handlers/creations-crud.test.js +0 -260
  430. package/dist/server/handlers/creations-mutations.test.js +0 -197
  431. package/dist/server/handlers/crm.test.js +0 -179
  432. package/dist/server/handlers/discovery-advertise.test.js +0 -185
  433. package/dist/server/handlers/discovery-scan.test.js +0 -233
  434. package/dist/server/handlers/embeddings-embed-search.test.js +0 -196
  435. package/dist/server/handlers/embeddings-index-delete-stats.test.js +0 -140
  436. package/dist/server/handlers/embeddings-search.test.js +0 -221
  437. package/dist/server/handlers/embeddings.test.js +0 -137
  438. package/dist/server/handlers/enrichment-breach.d.ts +0 -8
  439. package/dist/server/handlers/enrichment-breach.js +0 -266
  440. package/dist/server/handlers/enrichment-breach.js.map +0 -1
  441. package/dist/server/handlers/enrichment-data.d.ts +0 -13
  442. package/dist/server/handlers/enrichment-data.js +0 -145
  443. package/dist/server/handlers/enrichment-data.js.map +0 -1
  444. package/dist/server/handlers/enrichment-mutations.test.js +0 -240
  445. package/dist/server/handlers/enrichment-queries.test.js +0 -181
  446. package/dist/server/handlers/enrichment-validation.test.js +0 -177
  447. package/dist/server/handlers/enrichment-writes.d.ts +0 -16
  448. package/dist/server/handlers/enrichment-writes.js +0 -226
  449. package/dist/server/handlers/enrichment-writes.js.map +0 -1
  450. package/dist/server/handlers/image-gen.test.js +0 -205
  451. package/dist/server/handlers/inventory.test.js +0 -380
  452. package/dist/server/handlers/kali-background.test.js +0 -222
  453. package/dist/server/handlers/kali-errors.test.js +0 -92
  454. package/dist/server/handlers/kali-validation.test.js +0 -234
  455. package/dist/server/handlers/llm-providers-actions.test.js +0 -220
  456. package/dist/server/handlers/llm-providers-anthropic.test.js +0 -239
  457. package/dist/server/handlers/llm-providers-failover.test.js +0 -232
  458. package/dist/server/handlers/llm-providers-providers.test.js +0 -300
  459. package/dist/server/handlers/llm-providers-validation.test.js +0 -239
  460. package/dist/server/handlers/local-agent-tools.test.js +0 -224
  461. package/dist/server/handlers/local-agent.test.js +0 -198
  462. package/dist/server/handlers/local-agent.tools-status.test.js +0 -204
  463. package/dist/server/handlers/local-agent.validation-exec.test.js +0 -182
  464. package/dist/server/handlers/meta-ads-audience-rules.test.js +0 -243
  465. package/dist/server/handlers/meta-ads-audience-targeting.test.js +0 -205
  466. package/dist/server/handlers/meta-ads-audiences-targeting.test.js +0 -383
  467. package/dist/server/handlers/meta-ads-crud-ads.test.js +0 -136
  468. package/dist/server/handlers/meta-ads-crud-campaigns.test.js +0 -189
  469. package/dist/server/handlers/meta-ads-crud-create.test.js +0 -303
  470. package/dist/server/handlers/meta-ads-crud-list-update.test.js +0 -259
  471. package/dist/server/handlers/meta-ads-delete-publish-sync.test.js +0 -282
  472. package/dist/server/handlers/meta-ads-insights.test.js +0 -80
  473. package/dist/server/handlers/meta-ads-list-get.test.js +0 -237
  474. package/dist/server/handlers/meta-ads-publish-delete.test.js +0 -254
  475. package/dist/server/handlers/meta-ads-publish-helpers.js +0 -117
  476. package/dist/server/handlers/meta-ads-publish-helpers.js.map +0 -1
  477. package/dist/server/handlers/meta-ads-publish-sync.test.js +0 -205
  478. package/dist/server/handlers/meta-ads-publish.test.js +0 -254
  479. package/dist/server/handlers/meta-ads-sync-insights.test.js +0 -184
  480. package/dist/server/handlers/meta-ads-update.test.js +0 -117
  481. package/dist/server/handlers/nodes-channels.test.js +0 -413
  482. package/dist/server/handlers/nodes-events.test.js +0 -131
  483. package/dist/server/handlers/nodes-list-delete.test.js +0 -171
  484. package/dist/server/handlers/nodes-messages-delivery.test.js +0 -208
  485. package/dist/server/handlers/nodes-messages.test.js +0 -211
  486. package/dist/server/handlers/nodes-register.test.js +0 -277
  487. package/dist/server/handlers/nodes.test.js +0 -353
  488. package/dist/server/handlers/operations.test.js +0 -136
  489. package/dist/server/handlers/platform-telemetry.test.js +0 -200
  490. package/dist/server/handlers/platform-websearch.test.js +0 -160
  491. package/dist/server/handlers/storefront.test.js +0 -329
  492. package/dist/server/handlers/supply-chain.test.js +0 -347
  493. package/dist/server/handlers/transcription.test.js +0 -118
  494. package/dist/server/handlers/video-gen-veo.js +0 -114
  495. package/dist/server/handlers/video-gen-veo.js.map +0 -1
  496. package/dist/server/handlers/video-gen.test.js +0 -146
  497. package/dist/server/handlers/voice.test.js +0 -153
  498. package/dist/server/handlers/workflow-steps.test.js +0 -330
  499. package/dist/server/handlers/workflows-extras.test.js +0 -65
  500. package/dist/server/handlers/workflows.part2.test.js +0 -170
  501. package/dist/server/handlers/workflows.test.js +0 -281
  502. package/dist/server/lib/__tests__/batch-client-conversion-jsonl.test.js +0 -171
  503. package/dist/server/lib/__tests__/batch-client-polling.test.js +0 -292
  504. package/dist/server/lib/__tests__/batch-client-queue.test.js +0 -270
  505. package/dist/server/lib/__tests__/clickhouse-buffer.test.js +0 -236
  506. package/dist/server/lib/__tests__/code-worker-edge-cases.test.js +0 -118
  507. package/dist/server/lib/__tests__/code-worker-pool-execute.test.js +0 -193
  508. package/dist/server/lib/__tests__/code-worker-pool-execution.test.js +0 -165
  509. package/dist/server/lib/__tests__/code-worker-pool-init.test.js +0 -131
  510. package/dist/server/lib/__tests__/code-worker-pool.test.js +0 -194
  511. package/dist/server/lib/__tests__/code-worker-sandbox-ops.test.js +0 -123
  512. package/dist/server/lib/__tests__/code-worker-sandbox.test.js +0 -217
  513. package/dist/server/lib/__tests__/code-worker.test.js +0 -179
  514. package/dist/server/lib/__tests__/compaction-service-generate.test.js +0 -229
  515. package/dist/server/lib/__tests__/compaction-service.test.js +0 -319
  516. package/dist/server/lib/__tests__/otel.test.js +0 -146
  517. package/dist/server/lib/__tests__/prompt-sanitizer-validation.test.js +0 -165
  518. package/dist/server/lib/__tests__/prompt-sanitizer.sanitize.test.js +0 -343
  519. package/dist/server/lib/__tests__/prompt-sanitizer.test.js +0 -328
  520. package/dist/server/lib/__tests__/prompt-sanitizer.validate-tool.test.js +0 -145
  521. package/dist/server/lib/__tests__/provider-capabilities.test.js +0 -263
  522. package/dist/server/lib/__tests__/provider-failover-routing.test.js +0 -145
  523. package/dist/server/lib/__tests__/provider-failover-state.test.js +0 -131
  524. package/dist/server/lib/__tests__/rate-limiter-budgets.test.js +0 -216
  525. package/dist/server/lib/__tests__/rate-limiter.budgets-tools.test.js +0 -113
  526. package/dist/server/lib/__tests__/rate-limiter.check-request.test.js +0 -141
  527. package/dist/server/lib/__tests__/rate-limiter.stats-lifecycle.test.js +0 -135
  528. package/dist/server/lib/__tests__/rate-limiter.test.js +0 -207
  529. package/dist/server/lib/__tests__/server-agent-loop-abort-conditions.test.js +0 -544
  530. package/dist/server/lib/__tests__/server-agent-loop-abort.part2.test.js +0 -504
  531. package/dist/server/lib/__tests__/server-agent-loop-abort.test.js +0 -396
  532. package/dist/server/lib/__tests__/server-agent-loop-compaction.test.js +0 -397
  533. package/dist/server/lib/__tests__/server-agent-loop-failover.test.js +0 -356
  534. package/dist/server/lib/__tests__/server-agent-loop-features-caching.test.js +0 -519
  535. package/dist/server/lib/__tests__/server-agent-loop-features-edges.test.js +0 -512
  536. package/dist/server/lib/__tests__/server-subagent-bailout.test.js +0 -194
  537. package/dist/server/lib/__tests__/server-subagent-basics.test.js +0 -348
  538. package/dist/server/lib/__tests__/server-subagent-errors-abort.test.js +0 -319
  539. package/dist/server/lib/__tests__/server-subagent-errors-progress.test.js +0 -253
  540. package/dist/server/lib/__tests__/server-subagent-errors.part2.test.js +0 -253
  541. package/dist/server/lib/__tests__/server-subagent-errors.test.js +0 -319
  542. package/dist/server/lib/__tests__/session-checkpoint-load.test.js +0 -275
  543. package/dist/server/lib/__tests__/session-checkpoint-save.test.js +0 -159
  544. package/dist/server/lib/__tests__/ssrf-guard.test.js +0 -93
  545. package/dist/server/lib/__tests__/supabase-client.test.js +0 -111
  546. package/dist/server/lib/__tests__/template-resolver.test.js +0 -317
  547. package/dist/server/lib/__tests__/utils-timeout.test.js +0 -49
  548. package/dist/server/lib/__tests__/utils.test.js +0 -322
  549. package/dist/server/providers/__tests__/anthropic-adapter.test.js +0 -228
  550. package/dist/server/providers/__tests__/anthropic-betas-toolchoice.test.js +0 -257
  551. package/dist/server/providers/__tests__/anthropic-errors.test.js +0 -262
  552. package/dist/server/providers/__tests__/anthropic-stream-core.test.js +0 -275
  553. package/dist/server/providers/__tests__/anthropic-streaming-betas.test.js +0 -247
  554. package/dist/server/providers/__tests__/anthropic-streaming-core.test.js +0 -275
  555. package/dist/server/providers/__tests__/bedrock-config.test.js +0 -177
  556. package/dist/server/providers/__tests__/bedrock-stream-behavior-streaming.test.js +0 -272
  557. package/dist/server/providers/__tests__/bedrock-stream-behavior-toolchoice.test.js +0 -214
  558. package/dist/server/providers/__tests__/bedrock-stream-behavior.part2.test.js +0 -165
  559. package/dist/server/providers/__tests__/bedrock-stream-behavior.test.js +0 -309
  560. package/dist/server/providers/__tests__/bedrock-stream-body-credentials.test.js +0 -170
  561. package/dist/server/providers/__tests__/bedrock-stream-body-extras.test.js +0 -183
  562. package/dist/server/providers/__tests__/bedrock-stream-body-request.test.js +0 -305
  563. package/dist/server/providers/__tests__/bedrock-stream-body.part2.test.js +0 -305
  564. package/dist/server/providers/__tests__/bedrock-stream-body.test.js +0 -175
  565. package/dist/server/providers/__tests__/bedrock-stream-errors.test.js +0 -165
  566. package/dist/server/providers/__tests__/gemini-config-methods.test.js +0 -182
  567. package/dist/server/providers/__tests__/gemini-config-streaming.test.js +0 -257
  568. package/dist/server/providers/__tests__/gemini-conversion-messages.test.js +0 -247
  569. package/dist/server/providers/__tests__/gemini-conversion-schema.test.js +0 -365
  570. package/dist/server/providers/__tests__/gemini-tools-choice.test.js +0 -221
  571. package/dist/server/providers/__tests__/gemini-tools-fn.test.js +0 -252
  572. package/dist/server/providers/__tests__/openai-config.test.js +0 -194
  573. package/dist/server/providers/__tests__/openai-conversion.test.js +0 -276
  574. package/dist/server/providers/__tests__/openai-messages.test.js +0 -261
  575. package/dist/server/providers/__tests__/openai-streaming.test.js +0 -394
  576. package/dist/server/providers/__tests__/openai-tools-cache.test.js +0 -227
  577. package/dist/server/providers/__tests__/registry.test.js +0 -183
  578. package/dist/server/providers/__tests__/shared.test.js +0 -297
  579. package/dist/shared/agent-core-config.test.js +0 -132
  580. package/dist/shared/agent-core-context-thinking.test.js +0 -293
  581. package/dist/shared/agent-core-loop-calls.test.js +0 -174
  582. package/dist/shared/agent-core-loop-detector-bail.test.js +0 -201
  583. package/dist/shared/agent-core-loop-detector.test.js +0 -195
  584. package/dist/shared/agent-core-loop-errors.test.js +0 -258
  585. package/dist/shared/agent-core-pricing.test.js +0 -191
  586. package/dist/shared/agent-core-sanitize-retry.test.js +0 -129
  587. package/dist/shared/api-client-build-request.test.js +0 -228
  588. package/dist/shared/api-client-build-system-caching.test.js +0 -107
  589. package/dist/shared/api-client-build.test.js +0 -223
  590. package/dist/shared/api-client-config.d.ts +0 -21
  591. package/dist/shared/api-client-helpers.d.ts +0 -57
  592. package/dist/shared/api-client-helpers.test.js +0 -261
  593. package/dist/shared/api-client-proxy-happy.test.js +0 -255
  594. package/dist/shared/api-client-proxy-retry.test.js +0 -307
  595. package/dist/shared/api-client-proxy.d.ts +0 -26
  596. package/dist/shared/api-client-proxy.test.js +0 -255
  597. package/dist/shared/api-client-retry.test.js +0 -307
  598. package/dist/shared/api-client-system-trimming.test.js +0 -261
  599. package/dist/shared/api-client-trimming.d.ts +0 -36
  600. package/dist/shared/api-client.test.js +0 -228
  601. package/dist/shared/compaction-thinking.test.js +0 -315
  602. package/dist/shared/compaction-trimming.test.js +0 -223
  603. package/dist/shared/sse-parser-callbacks.test.js +0 -422
  604. package/dist/shared/sse-parser-collect.test.js +0 -252
  605. package/dist/shared/sse-parser-e2e.test.js +0 -558
  606. package/dist/shared/sse-parser-parse.test.js +0 -253
  607. package/dist/shared/tool-dispatch-advanced-batch-build.test.js +0 -405
  608. package/dist/shared/tool-dispatch-advanced.test.js +0 -320
  609. package/dist/shared/tool-dispatch-basic.test.js +0 -278
  610. package/dist/shared/tool-dispatch-content.d.ts +0 -14
  611. package/dist/shared/tool-dispatch-parallel.test.js +0 -378
  612. package/dist/webchat/__tests__/widget-messaging.test.js +0 -323
  613. package/dist/webchat/__tests__/widget.test.js +0 -273
@@ -1,557 +0,0 @@
1
- /**
2
- * Teammate worker loop — the main agent loop that runs inside a child process.
3
- * Extracted from teammate.ts
4
- */
5
-
6
- import { loadTeam, claimTask, completeTask, failTask, getAvailableTasks, updateTeammate } from "./team-state.js";
7
- import { LoopDetector, estimateCostUsd, AGENT_DEFAULTS } from "../../shared/agent-core.js";
8
- import { preCompact } from "../../shared/compaction.js";
9
- import { MODEL_MAP } from "../../shared/constants.js";
10
- import { LOCAL_TOOL_DEFINITIONS } from "./local-tools.js";
11
- import { loadServerToolDefinitions } from "./server-tools.js";
12
- import { logSpan, generateSpanId, generateTraceId, getConversationId, initializeTelemetryClient, PKG_VERSION } from "./telemetry.js";
13
- import { callAgentAPI, executeToolBlocks, extractTextBlocks, extractToolUseBlocks, deduplicateTools, assertUniqueToolNames } from "./agent-worker-base.js";
14
- import { applyTeammateConfig, resolveTeammateConfig, TEAMMATE_MAX_TURNS_PER_TASK, TEAMMATE_MAX_OUTPUT_TOKENS, TEAMMATE_MAX_TOTAL_TURNS, TEAMMATE_MAX_DURATION_MS, API_TIMEOUT_MS, TOOL_TIMEOUT_MS, resolvedTeammateConfig } from "./teammate-types.js";
15
- import { buildTeammatePrompt } from "./teammate-prompt.js";
16
- import { TEAM_TOOLS, executeTeamTool } from "./teammate-tools.js";
17
-
18
- // ============================================================================
19
- // API CLIENT
20
- // ============================================================================
21
-
22
- async function callAPI(modelId, systemPrompt, messages, tools, thinkingEnabled = false, onHeartbeat) {
23
- return callAgentAPI({
24
- modelId,
25
- contextProfile: "teammate",
26
- systemPrompt,
27
- messages,
28
- tools,
29
- thinkingEnabled,
30
- maxOutputTokens: TEAMMATE_MAX_OUTPUT_TOKENS,
31
- timeoutMs: API_TIMEOUT_MS,
32
- onHeartbeat
33
- });
34
- }
35
-
36
- // ============================================================================
37
- // TEAMMATE WORKER LOOP
38
- // ============================================================================
39
-
40
- export async function runTeammateLoop(data) {
41
- const {
42
- teamId,
43
- teammateId,
44
- teammateName,
45
- model,
46
- cwd,
47
- parentConversationId,
48
- teamName,
49
- authToken,
50
- preloadedConfig,
51
- preloadedServerTools
52
- } = data;
53
- const modelId = MODEL_MAP[model] || MODEL_MAP.opus;
54
- const startTime = Date.now();
55
- if (authToken) {
56
- initializeTelemetryClient(authToken);
57
- }
58
-
59
- // Apply config from parent or load from DB
60
- if (preloadedConfig?.context_config) {
61
- applyTeammateConfig(preloadedConfig);
62
- } else {
63
- await resolveTeammateConfig();
64
- }
65
- const teammateConversationId = getConversationId();
66
- const teammateTraceId = generateTraceId();
67
- const teammateSpanId = generateSpanId();
68
- logSpan({
69
- action: "team.teammate_start",
70
- durationMs: 0,
71
- context: {
72
- traceId: teammateTraceId,
73
- spanId: teammateSpanId,
74
- conversationId: teammateConversationId,
75
- source: "claude_code",
76
- serviceName: "whale-cli",
77
- serviceVersion: PKG_VERSION,
78
- model: modelId
79
- },
80
- details: {
81
- is_team: true,
82
- is_teammate: true,
83
- team_id: teamId,
84
- teammate_id: teammateId,
85
- teammate_name: teammateName,
86
- team_name: teamName,
87
- parent_conversation_id: parentConversationId,
88
- model,
89
- display_name: teammateName,
90
- display_icon: "person.fill",
91
- display_color: "#3B82F6"
92
- }
93
- });
94
- const report = msg => {
95
- if (process.send) process.send(msg);
96
- };
97
- report({
98
- type: "progress",
99
- teammateId,
100
- content: `${teammateName} initializing...`
101
- });
102
-
103
- // Get all tools (local + server + team)
104
- const localTools = LOCAL_TOOL_DEFINITIONS.map(t => ({
105
- name: t.name,
106
- description: t.description,
107
- input_schema: t.input_schema
108
- }));
109
- let serverTools = preloadedServerTools || [];
110
- if (!preloadedServerTools) {
111
- try {
112
- serverTools = await loadServerToolDefinitions();
113
- } catch {/* continue with local only */}
114
- }
115
- const allTools = deduplicateTools([...localTools, ...serverTools, ...TEAM_TOOLS]);
116
- assertUniqueToolNames(allTools);
117
- const loopDetector = resolvedTeammateConfig ? LoopDetector.fromResolved(resolvedTeammateConfig) : new LoopDetector();
118
- let totalIn = 0;
119
- let totalOut = 0;
120
- let currentTaskId = null;
121
- let currentTaskModelId = modelId;
122
- let currentTaskThinking = false;
123
- let messages = [];
124
- let tasksCompleted = 0;
125
- report({
126
- type: "progress",
127
- teammateId,
128
- content: `${teammateName} ready (${allTools.length} tools)`
129
- });
130
- const logTeammateComplete = reason => {
131
- const teammateCost = estimateCostUsd(totalIn, totalOut, modelId);
132
- logSpan({
133
- action: "team.teammate_done",
134
- durationMs: Date.now() - startTime,
135
- context: {
136
- traceId: teammateTraceId,
137
- spanId: generateSpanId(),
138
- parentSpanId: teammateSpanId,
139
- conversationId: teammateConversationId,
140
- source: "claude_code",
141
- serviceName: "whale-cli",
142
- serviceVersion: PKG_VERSION,
143
- model: modelId,
144
- inputTokens: totalIn,
145
- outputTokens: totalOut,
146
- totalCost: teammateCost
147
- },
148
- details: {
149
- is_team: true,
150
- is_teammate: true,
151
- team_id: teamId,
152
- teammate_id: teammateId,
153
- teammate_name: teammateName,
154
- team_name: teamName,
155
- parent_conversation_id: parentConversationId,
156
- tasks_completed: tasksCompleted,
157
- completion_reason: reason,
158
- "gen_ai.request.model": modelId,
159
- "gen_ai.usage.input_tokens": totalIn,
160
- "gen_ai.usage.output_tokens": totalOut,
161
- "gen_ai.usage.cost": teammateCost,
162
- display_name: `${teammateName} done`,
163
- display_icon: "checkmark.circle.fill",
164
- display_color: "#10B981"
165
- }
166
- });
167
- };
168
-
169
- // Main work loop
170
- let outerTurn = 0;
171
- while (true) {
172
- if (TEAMMATE_MAX_TOTAL_TURNS > 0 && ++outerTurn > TEAMMATE_MAX_TOTAL_TURNS) {
173
- logTeammateComplete("max_turns_reached");
174
- report({
175
- type: "done",
176
- teammateId,
177
- content: `${teammateName} reached max turns (${TEAMMATE_MAX_TOTAL_TURNS})`,
178
- tokensUsed: {
179
- input: totalIn,
180
- output: totalOut
181
- }
182
- });
183
- break;
184
- }
185
- if (Date.now() - startTime > TEAMMATE_MAX_DURATION_MS) {
186
- logTeammateComplete("timeout");
187
- report({
188
- type: "done",
189
- teammateId,
190
- content: `${teammateName} timed out after ${Math.round(TEAMMATE_MAX_DURATION_MS / 60_000)}min`,
191
- tokensUsed: {
192
- input: totalIn,
193
- output: totalOut
194
- }
195
- });
196
- break;
197
- }
198
- const team = loadTeam(teamId);
199
- if (!team || team.status !== "active") {
200
- logTeammateComplete("team_inactive");
201
- report({
202
- type: "done",
203
- teammateId,
204
- content: "Team completed or inactive",
205
- tokensUsed: {
206
- input: totalIn,
207
- output: totalOut
208
- }
209
- });
210
- break;
211
- }
212
- const currentTask = currentTaskId ? team.tasks.find(t => t.id === currentTaskId) : null;
213
- if (!currentTask || currentTask.status === "completed") {
214
- const available = getAvailableTasks(team);
215
- if (available.length === 0) {
216
- const inProgress = team.tasks.filter(t => t.status === "in_progress").length;
217
- if (inProgress === 0) {
218
- logTeammateComplete("all_tasks_done");
219
- report({
220
- type: "done",
221
- teammateId,
222
- content: "All tasks completed",
223
- tokensUsed: {
224
- input: totalIn,
225
- output: totalOut
226
- }
227
- });
228
- break;
229
- }
230
- await new Promise(r => setTimeout(r, 2000));
231
- continue;
232
- }
233
- const claimed = await claimTask(teamId, available[0].id, teammateId);
234
- if (!claimed) {
235
- await new Promise(r => setTimeout(r, 1000));
236
- continue;
237
- }
238
- currentTaskId = claimed.id;
239
- const taskModel = claimed.model || model;
240
- currentTaskModelId = MODEL_MAP[taskModel] || MODEL_MAP[model] || MODEL_MAP.opus;
241
- currentTaskThinking = true;
242
- await updateTeammate(teamId, teammateId, {
243
- status: "working",
244
- currentTask: currentTaskId
245
- });
246
- report({
247
- type: "task_started",
248
- teammateId,
249
- taskId: currentTaskId,
250
- content: claimed.description
251
- });
252
- messages = [{
253
- role: "user",
254
- content: `Your task: ${claimed.description}\n\nBegin working on this task. When finished, you MUST call team_complete_task with a summary of changes made. Do not stop without calling team_complete_task.`
255
- }];
256
- }
257
- const freshTeam = loadTeam(teamId);
258
- const freshTask = freshTeam.tasks.find(t => t.id === currentTaskId) || null;
259
- const systemPrompt = buildTeammatePrompt(teammateName, freshTeam, freshTask, cwd);
260
- let apiError = null;
261
- let lastTurn = 0;
262
- const taskTurnLimit = TEAMMATE_MAX_TURNS_PER_TASK === 0 ? Number.MAX_SAFE_INTEGER : TEAMMATE_MAX_TURNS_PER_TASK;
263
- for (let turn = 0; turn < taskTurnLimit; turn++) {
264
- lastTurn = turn;
265
- const apiStart = Date.now();
266
- let response;
267
- try {
268
- response = await callAPI(currentTaskModelId, systemPrompt, messages, allTools, currentTaskThinking, () => {
269
- report({
270
- type: "progress",
271
- teammateId,
272
- content: "streaming..."
273
- });
274
- });
275
- } catch (err) {
276
- apiError = err.message || String(err);
277
- report({
278
- type: "progress",
279
- teammateId,
280
- content: `API error: ${apiError.slice(0, 80)}`
281
- });
282
- logSpan({
283
- action: "claude_api_request",
284
- durationMs: Date.now() - apiStart,
285
- severity: "error",
286
- error: apiError || undefined,
287
- context: {
288
- traceId: teammateTraceId,
289
- spanId: generateSpanId(),
290
- parentSpanId: teammateSpanId,
291
- conversationId: teammateConversationId,
292
- source: "claude_code",
293
- serviceName: "whale-cli",
294
- serviceVersion: PKG_VERSION,
295
- model: currentTaskModelId
296
- },
297
- details: {
298
- is_team: true,
299
- is_teammate: true,
300
- team_id: teamId,
301
- teammate_id: teammateId,
302
- teammate_name: teammateName,
303
- parent_conversation_id: parentConversationId,
304
- turn_number: turn + 1,
305
- task_id: currentTaskId
306
- }
307
- });
308
- break;
309
- }
310
- const apiDuration = Date.now() - apiStart;
311
- totalIn += response.usage.input_tokens;
312
- totalOut += response.usage.output_tokens;
313
- const turnCostUsd = estimateCostUsd(response.usage.input_tokens, response.usage.output_tokens, currentTaskModelId, 0, response.usage.cache_read_tokens, response.usage.cache_creation_tokens);
314
- logSpan({
315
- action: "claude_api_request",
316
- durationMs: apiDuration,
317
- context: {
318
- traceId: teammateTraceId,
319
- spanId: generateSpanId(),
320
- parentSpanId: teammateSpanId,
321
- conversationId: teammateConversationId,
322
- source: "claude_code",
323
- serviceName: "whale-cli",
324
- serviceVersion: PKG_VERSION,
325
- model: currentTaskModelId,
326
- inputTokens: response.usage.input_tokens,
327
- outputTokens: response.usage.output_tokens,
328
- cacheReadTokens: response.usage.cache_read_tokens,
329
- cacheCreationTokens: response.usage.cache_creation_tokens,
330
- totalCost: turnCostUsd
331
- },
332
- details: {
333
- is_team: true,
334
- is_teammate: true,
335
- team_id: teamId,
336
- teammate_id: teammateId,
337
- teammate_name: teammateName,
338
- parent_conversation_id: parentConversationId,
339
- turn_number: turn + 1,
340
- task_id: currentTaskId,
341
- stop_reason: response.stop_reason,
342
- "gen_ai.request.model": currentTaskModelId,
343
- "gen_ai.usage.input_tokens": response.usage.input_tokens,
344
- "gen_ai.usage.output_tokens": response.usage.output_tokens,
345
- "gen_ai.usage.cache_read_tokens": response.usage.cache_read_tokens,
346
- "gen_ai.usage.cache_creation_tokens": response.usage.cache_creation_tokens,
347
- "gen_ai.usage.cost": turnCostUsd
348
- }
349
- });
350
- const textBlocks = extractTextBlocks(response.content);
351
- const toolBlocks = extractToolUseBlocks(response.content);
352
- if (textBlocks.length) {
353
- report({
354
- type: "progress",
355
- teammateId,
356
- taskId: currentTaskId || undefined,
357
- content: textBlocks[0].text.slice(0, 200)
358
- });
359
- }
360
-
361
- // Compaction handling
362
- if (response.stop_reason === "compaction") {
363
- const compactionBlock = response.content.find(b => b.type === "compaction");
364
- if (compactionBlock) {
365
- report({
366
- type: "progress",
367
- teammateId,
368
- taskId: currentTaskId || undefined,
369
- content: "context compacted"
370
- });
371
- messages = [{
372
- role: "assistant",
373
- content: [{
374
- type: "compaction",
375
- content: compactionBlock.content
376
- }]
377
- }, {
378
- role: "user",
379
- content: [{
380
- type: "text",
381
- text: "Continue with your task."
382
- }]
383
- }];
384
- turn--;
385
- continue;
386
- }
387
- }
388
- if (toolBlocks.length === 0) break;
389
- let taskCompleted = false;
390
- const {
391
- toolResults
392
- } = await executeToolBlocks({
393
- toolBlocks,
394
- loopDetector,
395
- toolTimeoutMs: TOOL_TIMEOUT_MS,
396
- customExecutor: async (toolName, input) => {
397
- if (!TEAM_TOOLS.some(t => t.name === toolName)) return null;
398
- const result = await executeTeamTool(toolName, input, teamId, teammateId, currentTaskId);
399
- if (toolName === "team_complete_task" && result.success) {
400
- taskCompleted = true;
401
- tasksCompleted++;
402
- report({
403
- type: "task_completed",
404
- teammateId,
405
- taskId: currentTaskId || undefined,
406
- content: result.output
407
- });
408
- logSpan({
409
- action: "team.task_complete",
410
- durationMs: 0,
411
- context: {
412
- traceId: teammateTraceId,
413
- spanId: generateSpanId(),
414
- parentSpanId: teammateSpanId,
415
- conversationId: teammateConversationId,
416
- source: "claude_code",
417
- serviceName: "whale-cli",
418
- serviceVersion: PKG_VERSION
419
- },
420
- details: {
421
- is_team: true,
422
- is_teammate: true,
423
- team_id: teamId,
424
- teammate_id: teammateId,
425
- teammate_name: teammateName,
426
- parent_conversation_id: parentConversationId,
427
- task_id: currentTaskId,
428
- task_result: result.output.slice(0, 500),
429
- display_name: "Task completed",
430
- display_icon: "checkmark.square.fill",
431
- display_color: "#10B981"
432
- }
433
- });
434
- }
435
- return result;
436
- },
437
- callbacks: {
438
- onToolEnd: (toolName, success, durationMs) => {
439
- report({
440
- type: "progress",
441
- teammateId,
442
- taskId: currentTaskId || undefined,
443
- content: `${toolName} (${durationMs}ms)`
444
- });
445
- const toolCategory = TEAM_TOOLS.some(t => t.name === toolName) ? "team" : "standard";
446
- logSpan({
447
- action: `tool.${toolName}`,
448
- durationMs,
449
- severity: success ? "info" : "error",
450
- context: {
451
- traceId: teammateTraceId,
452
- spanId: generateSpanId(),
453
- parentSpanId: teammateSpanId,
454
- conversationId: teammateConversationId,
455
- source: "claude_code",
456
- serviceName: "whale-cli",
457
- serviceVersion: PKG_VERSION
458
- },
459
- error: success ? undefined : "(see tool result)",
460
- details: {
461
- is_team: true,
462
- is_teammate: true,
463
- team_id: teamId,
464
- teammate_id: teammateId,
465
- teammate_name: teammateName,
466
- parent_conversation_id: parentConversationId,
467
- tool_category: toolCategory
468
- }
469
- });
470
- }
471
- }
472
- });
473
- messages.push({
474
- role: "assistant",
475
- content: response.content
476
- });
477
- messages.push({
478
- role: "user",
479
- content: toolResults
480
- });
481
- const maxToolResultChars = resolvedTeammateConfig?.maxToolResultChars ?? AGENT_DEFAULTS.maxToolResultChars;
482
- const {
483
- messages: compactedMessages
484
- } = preCompact(messages, {
485
- maxToolResultChars,
486
- stripThinking: true
487
- });
488
- messages = compactedMessages;
489
- if (taskCompleted) {
490
- currentTaskId = null;
491
- await updateTeammate(teamId, teammateId, {
492
- status: "idle",
493
- currentTask: undefined
494
- });
495
- break;
496
- }
497
- }
498
-
499
- // Force-complete if inner loop ended without team_complete_task
500
- if (currentTaskId) {
501
- const team = loadTeam(teamId);
502
- const task = team?.tasks.find(t => t.id === currentTaskId);
503
- if (task && task.status === "in_progress") {
504
- if (apiError) {
505
- await failTask(teamId, currentTaskId, apiError);
506
- report({
507
- type: "progress",
508
- teammateId,
509
- taskId: currentTaskId,
510
- content: `Task failed: ${apiError.slice(0, 80)}`
511
- });
512
- } else if (totalIn === 0 && totalOut === 0) {
513
- await failTask(teamId, currentTaskId, "No API response received (0 tokens)");
514
- report({
515
- type: "progress",
516
- teammateId,
517
- taskId: currentTaskId,
518
- content: "Task failed: no API response"
519
- });
520
- } else {
521
- const hitTurnLimit = lastTurn >= taskTurnLimit - 1;
522
- const lastText = messages.length > 0 ? messages[messages.length - 1] : null;
523
- let partialResult = hitTurnLimit ? `Task auto-completed after reaching turn limit (${taskTurnLimit} turns).` : "Task completed (model finished).";
524
- if (lastText && typeof lastText === "object" && "content" in lastText) {
525
- const content = lastText.content;
526
- if (typeof content === "string") partialResult = content.slice(0, 500);else if (Array.isArray(content)) {
527
- const txt = content.find(b => b.type === "text");
528
- if (txt && "text" in txt) partialResult = txt.text.slice(0, 500);
529
- }
530
- }
531
- await completeTask(teamId, currentTaskId, partialResult);
532
- tasksCompleted++;
533
- report({
534
- type: "task_completed",
535
- teammateId,
536
- taskId: currentTaskId,
537
- content: partialResult
538
- });
539
- }
540
- }
541
- currentTaskId = null;
542
- await updateTeammate(teamId, teammateId, {
543
- status: "idle",
544
- currentTask: undefined
545
- });
546
- }
547
- }
548
- await updateTeammate(teamId, teammateId, {
549
- status: "done",
550
- currentTask: undefined,
551
- tokensUsed: {
552
- input: totalIn,
553
- output: totalOut
554
- }
555
- });
556
- }
557
- //# sourceMappingURL=teammate-loop.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"teammate-loop.js","names":["loadTeam","claimTask","completeTask","failTask","getAvailableTasks","updateTeammate","LoopDetector","estimateCostUsd","AGENT_DEFAULTS","preCompact","MODEL_MAP","LOCAL_TOOL_DEFINITIONS","loadServerToolDefinitions","logSpan","generateSpanId","generateTraceId","getConversationId","initializeTelemetryClient","PKG_VERSION","callAgentAPI","executeToolBlocks","extractTextBlocks","extractToolUseBlocks","deduplicateTools","assertUniqueToolNames","applyTeammateConfig","resolveTeammateConfig","TEAMMATE_MAX_TURNS_PER_TASK","TEAMMATE_MAX_OUTPUT_TOKENS","TEAMMATE_MAX_TOTAL_TURNS","TEAMMATE_MAX_DURATION_MS","API_TIMEOUT_MS","TOOL_TIMEOUT_MS","resolvedTeammateConfig","buildTeammatePrompt","TEAM_TOOLS","executeTeamTool","callAPI","modelId","systemPrompt","messages","tools","thinkingEnabled","onHeartbeat","contextProfile","maxOutputTokens","timeoutMs","runTeammateLoop","data","teamId","teammateId","teammateName","model","cwd","parentConversationId","teamName","authToken","preloadedConfig","preloadedServerTools","opus","startTime","Date","now","context_config","teammateConversationId","teammateTraceId","teammateSpanId","action","durationMs","context","traceId","spanId","conversationId","source","serviceName","serviceVersion","details","is_team","is_teammate","team_id","teammate_id","teammate_name","team_name","parent_conversation_id","display_name","display_icon","display_color","report","msg","process","send","type","content","localTools","map","t","name","description","input_schema","serverTools","allTools","loopDetector","fromResolved","totalIn","totalOut","currentTaskId","currentTaskModelId","currentTaskThinking","tasksCompleted","length","logTeammateComplete","reason","teammateCost","parentSpanId","inputTokens","outputTokens","totalCost","tasks_completed","completion_reason","outerTurn","tokensUsed","input","output","Math","round","team","status","currentTask","tasks","find","id","available","inProgress","filter","Promise","r","setTimeout","claimed","taskModel","taskId","role","freshTeam","freshTask","apiError","lastTurn","taskTurnLimit","Number","MAX_SAFE_INTEGER","turn","apiStart","response","err","message","String","slice","severity","error","undefined","turn_number","task_id","apiDuration","usage","input_tokens","output_tokens","turnCostUsd","cache_read_tokens","cache_creation_tokens","cacheReadTokens","cacheCreationTokens","stop_reason","textBlocks","toolBlocks","text","compactionBlock","b","taskCompleted","toolResults","toolTimeoutMs","customExecutor","toolName","some","result","success","task_result","callbacks","onToolEnd","toolCategory","tool_category","push","maxToolResultChars","compactedMessages","stripThinking","task","hitTurnLimit","lastText","partialResult","Array","isArray","txt"],"sources":["../../../src/cli/services/teammate-loop.ts"],"sourcesContent":["/**\n * Teammate worker loop — the main agent loop that runs inside a child process.\n * Extracted from teammate.ts\n */\n\nimport type Anthropic from \"@anthropic-ai/sdk\";\nimport {\n loadTeam,\n claimTask,\n completeTask,\n failTask,\n getAvailableTasks,\n updateTeammate,\n} from \"./team-state.js\";\nimport { LoopDetector, estimateCostUsd, AGENT_DEFAULTS } from \"../../shared/agent-core.js\";\nimport { preCompact } from \"../../shared/compaction.js\";\nimport { MODEL_MAP } from \"../../shared/constants.js\";\nimport { LOCAL_TOOL_DEFINITIONS } from \"./local-tools.js\";\nimport { loadServerToolDefinitions } from \"./server-tools.js\";\nimport { logSpan, generateSpanId, generateTraceId, getConversationId, initializeTelemetryClient, PKG_VERSION } from \"./telemetry.js\";\nimport {\n callAgentAPI,\n executeToolBlocks,\n extractTextBlocks,\n extractToolUseBlocks,\n deduplicateTools,\n assertUniqueToolNames,\n} from \"./agent-worker-base.js\";\nimport type { AgentAPIResponse, ToolExecResult } from \"./agent-worker-base.js\";\n\nimport {\n applyTeammateConfig,\n resolveTeammateConfig,\n TEAMMATE_MAX_TURNS_PER_TASK,\n TEAMMATE_MAX_OUTPUT_TOKENS,\n TEAMMATE_MAX_TOTAL_TURNS,\n TEAMMATE_MAX_DURATION_MS,\n API_TIMEOUT_MS,\n TOOL_TIMEOUT_MS,\n resolvedTeammateConfig,\n} from \"./teammate-types.js\";\nimport type { TeammateWorkerData, TeammateMessage } from \"./teammate-types.js\";\nimport { buildTeammatePrompt } from \"./teammate-prompt.js\";\nimport { TEAM_TOOLS, executeTeamTool } from \"./teammate-tools.js\";\n\n// ============================================================================\n// API CLIENT\n// ============================================================================\n\nasync function callAPI(\n modelId: string,\n systemPrompt: string,\n messages: Anthropic.MessageParam[],\n tools: Anthropic.Tool[],\n thinkingEnabled: boolean = false,\n onHeartbeat?: () => void,\n): Promise<AgentAPIResponse> {\n return callAgentAPI({\n modelId,\n contextProfile: \"teammate\",\n systemPrompt,\n messages,\n tools,\n thinkingEnabled,\n maxOutputTokens: TEAMMATE_MAX_OUTPUT_TOKENS,\n timeoutMs: API_TIMEOUT_MS,\n onHeartbeat,\n });\n}\n\n// ============================================================================\n// TEAMMATE WORKER LOOP\n// ============================================================================\n\nexport async function runTeammateLoop(data: TeammateWorkerData): Promise<void> {\n const { teamId, teammateId, teammateName, model, cwd, parentConversationId, teamName, authToken, preloadedConfig, preloadedServerTools } = data;\n const modelId = MODEL_MAP[model] || MODEL_MAP.opus;\n const startTime = Date.now();\n\n if (authToken) {\n initializeTelemetryClient(authToken);\n }\n\n // Apply config from parent or load from DB\n if (preloadedConfig?.context_config) {\n applyTeammateConfig(preloadedConfig);\n } else {\n await resolveTeammateConfig();\n }\n\n const teammateConversationId = getConversationId();\n const teammateTraceId = generateTraceId();\n const teammateSpanId = generateSpanId();\n\n logSpan({\n action: \"team.teammate_start\",\n durationMs: 0,\n context: {\n traceId: teammateTraceId, spanId: teammateSpanId, conversationId: teammateConversationId,\n source: \"claude_code\", serviceName: \"whale-cli\", serviceVersion: PKG_VERSION, model: modelId,\n },\n details: {\n is_team: true, is_teammate: true, team_id: teamId, teammate_id: teammateId,\n teammate_name: teammateName, team_name: teamName,\n parent_conversation_id: parentConversationId, model,\n display_name: teammateName, display_icon: \"person.fill\", display_color: \"#3B82F6\",\n },\n });\n\n const report = (msg: TeammateMessage) => {\n if (process.send) process.send(msg);\n };\n\n report({ type: \"progress\", teammateId, content: `${teammateName} initializing...` });\n\n // Get all tools (local + server + team)\n const localTools: Anthropic.Tool[] = LOCAL_TOOL_DEFINITIONS.map(t => ({\n name: t.name,\n description: t.description,\n input_schema: t.input_schema as Anthropic.Tool[\"input_schema\"],\n }));\n\n let serverTools: Anthropic.Tool[] = preloadedServerTools || [];\n if (!preloadedServerTools) {\n try { serverTools = await loadServerToolDefinitions(); } catch { /* continue with local only */ }\n }\n\n const allTools = deduplicateTools([...localTools, ...serverTools, ...TEAM_TOOLS]);\n assertUniqueToolNames(allTools);\n\n const loopDetector = resolvedTeammateConfig\n ? LoopDetector.fromResolved(resolvedTeammateConfig)\n : new LoopDetector();\n\n let totalIn = 0;\n let totalOut = 0;\n let currentTaskId: string | null = null;\n let currentTaskModelId: string = modelId;\n let currentTaskThinking: boolean = false;\n let messages: Anthropic.MessageParam[] = [];\n let tasksCompleted = 0;\n\n report({ type: \"progress\", teammateId, content: `${teammateName} ready (${allTools.length} tools)` });\n\n const logTeammateComplete = (reason: string) => {\n const teammateCost = estimateCostUsd(totalIn, totalOut, modelId);\n logSpan({\n action: \"team.teammate_done\",\n durationMs: Date.now() - startTime,\n context: {\n traceId: teammateTraceId, spanId: generateSpanId(), parentSpanId: teammateSpanId,\n conversationId: teammateConversationId, source: \"claude_code\",\n serviceName: \"whale-cli\", serviceVersion: PKG_VERSION, model: modelId,\n inputTokens: totalIn, outputTokens: totalOut, totalCost: teammateCost,\n },\n details: {\n is_team: true, is_teammate: true, team_id: teamId, teammate_id: teammateId,\n teammate_name: teammateName, team_name: teamName,\n parent_conversation_id: parentConversationId, tasks_completed: tasksCompleted,\n completion_reason: reason,\n \"gen_ai.request.model\": modelId, \"gen_ai.usage.input_tokens\": totalIn,\n \"gen_ai.usage.output_tokens\": totalOut, \"gen_ai.usage.cost\": teammateCost,\n display_name: `${teammateName} done`, display_icon: \"checkmark.circle.fill\", display_color: \"#10B981\",\n },\n });\n };\n\n // Main work loop\n let outerTurn = 0;\n while (true) {\n if (TEAMMATE_MAX_TOTAL_TURNS > 0 && ++outerTurn > TEAMMATE_MAX_TOTAL_TURNS) {\n logTeammateComplete(\"max_turns_reached\");\n report({ type: \"done\", teammateId, content: `${teammateName} reached max turns (${TEAMMATE_MAX_TOTAL_TURNS})`, tokensUsed: { input: totalIn, output: totalOut } });\n break;\n }\n if (Date.now() - startTime > TEAMMATE_MAX_DURATION_MS) {\n logTeammateComplete(\"timeout\");\n report({ type: \"done\", teammateId, content: `${teammateName} timed out after ${Math.round(TEAMMATE_MAX_DURATION_MS / 60_000)}min`, tokensUsed: { input: totalIn, output: totalOut } });\n break;\n }\n\n const team = loadTeam(teamId);\n if (!team || team.status !== \"active\") {\n logTeammateComplete(\"team_inactive\");\n report({ type: \"done\", teammateId, content: \"Team completed or inactive\", tokensUsed: { input: totalIn, output: totalOut } });\n break;\n }\n\n const currentTask = currentTaskId ? team.tasks.find(t => t.id === currentTaskId) : null;\n\n if (!currentTask || currentTask.status === \"completed\") {\n const available = getAvailableTasks(team);\n if (available.length === 0) {\n const inProgress = team.tasks.filter(t => t.status === \"in_progress\").length;\n if (inProgress === 0) {\n logTeammateComplete(\"all_tasks_done\");\n report({ type: \"done\", teammateId, content: \"All tasks completed\", tokensUsed: { input: totalIn, output: totalOut } });\n break;\n }\n await new Promise(r => setTimeout(r, 2000));\n continue;\n }\n\n const claimed = await claimTask(teamId, available[0].id, teammateId);\n if (!claimed) { await new Promise(r => setTimeout(r, 1000)); continue; }\n\n currentTaskId = claimed.id;\n const taskModel = claimed.model || model;\n currentTaskModelId = MODEL_MAP[taskModel] || MODEL_MAP[model] || MODEL_MAP.opus;\n currentTaskThinking = true;\n\n await updateTeammate(teamId, teammateId, { status: \"working\", currentTask: currentTaskId });\n report({ type: \"task_started\", teammateId, taskId: currentTaskId, content: claimed.description });\n\n messages = [{\n role: \"user\",\n content: `Your task: ${claimed.description}\\n\\nBegin working on this task. When finished, you MUST call team_complete_task with a summary of changes made. Do not stop without calling team_complete_task.`,\n }];\n }\n\n const freshTeam = loadTeam(teamId)!;\n const freshTask = freshTeam.tasks.find(t => t.id === currentTaskId) || null;\n const systemPrompt = buildTeammatePrompt(teammateName, freshTeam, freshTask, cwd);\n\n let apiError: string | null = null;\n let lastTurn = 0;\n const taskTurnLimit = TEAMMATE_MAX_TURNS_PER_TASK === 0 ? Number.MAX_SAFE_INTEGER : TEAMMATE_MAX_TURNS_PER_TASK;\n\n for (let turn = 0; turn < taskTurnLimit; turn++) {\n lastTurn = turn;\n const apiStart = Date.now();\n let response!: Awaited<ReturnType<typeof callAPI>>;\n try {\n response = await callAPI(currentTaskModelId, systemPrompt, messages, allTools, currentTaskThinking, () => {\n report({ type: \"progress\", teammateId, content: \"streaming...\" });\n });\n } catch (err: any) {\n apiError = err.message || String(err);\n report({ type: \"progress\", teammateId, content: `API error: ${apiError!.slice(0, 80)}` });\n logSpan({\n action: \"claude_api_request\", durationMs: Date.now() - apiStart, severity: \"error\",\n error: apiError || undefined,\n context: { traceId: teammateTraceId, spanId: generateSpanId(), parentSpanId: teammateSpanId, conversationId: teammateConversationId, source: \"claude_code\", serviceName: \"whale-cli\", serviceVersion: PKG_VERSION, model: currentTaskModelId },\n details: { is_team: true, is_teammate: true, team_id: teamId, teammate_id: teammateId, teammate_name: teammateName, parent_conversation_id: parentConversationId, turn_number: turn + 1, task_id: currentTaskId },\n });\n break;\n }\n const apiDuration = Date.now() - apiStart;\n totalIn += response.usage.input_tokens;\n totalOut += response.usage.output_tokens;\n\n const turnCostUsd = estimateCostUsd(response.usage.input_tokens, response.usage.output_tokens, currentTaskModelId, 0, response.usage.cache_read_tokens, response.usage.cache_creation_tokens);\n logSpan({\n action: \"claude_api_request\", durationMs: apiDuration,\n context: { traceId: teammateTraceId, spanId: generateSpanId(), parentSpanId: teammateSpanId, conversationId: teammateConversationId, source: \"claude_code\", serviceName: \"whale-cli\", serviceVersion: PKG_VERSION, model: currentTaskModelId, inputTokens: response.usage.input_tokens, outputTokens: response.usage.output_tokens, cacheReadTokens: response.usage.cache_read_tokens, cacheCreationTokens: response.usage.cache_creation_tokens, totalCost: turnCostUsd },\n details: { is_team: true, is_teammate: true, team_id: teamId, teammate_id: teammateId, teammate_name: teammateName, parent_conversation_id: parentConversationId, turn_number: turn + 1, task_id: currentTaskId, stop_reason: response.stop_reason, \"gen_ai.request.model\": currentTaskModelId, \"gen_ai.usage.input_tokens\": response.usage.input_tokens, \"gen_ai.usage.output_tokens\": response.usage.output_tokens, \"gen_ai.usage.cache_read_tokens\": response.usage.cache_read_tokens, \"gen_ai.usage.cache_creation_tokens\": response.usage.cache_creation_tokens, \"gen_ai.usage.cost\": turnCostUsd },\n });\n\n const textBlocks = extractTextBlocks(response.content);\n const toolBlocks = extractToolUseBlocks(response.content);\n\n if (textBlocks.length) {\n report({ type: \"progress\", teammateId, taskId: currentTaskId || undefined, content: textBlocks[0].text.slice(0, 200) });\n }\n\n // Compaction handling\n if (response.stop_reason === \"compaction\") {\n const compactionBlock = response.content.find((b: any) => b.type === \"compaction\") as any;\n if (compactionBlock) {\n report({ type: \"progress\", teammateId, taskId: currentTaskId || undefined, content: \"context compacted\" });\n messages = [\n { role: \"assistant\", content: [{ type: \"compaction\", content: compactionBlock.content }] },\n { role: \"user\", content: [{ type: \"text\", text: \"Continue with your task.\" }] },\n ] as any;\n turn--;\n continue;\n }\n }\n\n if (toolBlocks.length === 0) break;\n\n let taskCompleted = false;\n const { toolResults } = await executeToolBlocks({\n toolBlocks, loopDetector, toolTimeoutMs: TOOL_TIMEOUT_MS,\n customExecutor: async (toolName, input): Promise<ToolExecResult | null> => {\n if (!TEAM_TOOLS.some(t => t.name === toolName)) return null;\n const result = await executeTeamTool(toolName, input, teamId, teammateId, currentTaskId);\n if (toolName === \"team_complete_task\" && result.success) {\n taskCompleted = true;\n tasksCompleted++;\n report({ type: \"task_completed\", teammateId, taskId: currentTaskId || undefined, content: result.output });\n logSpan({\n action: \"team.task_complete\", durationMs: 0,\n context: { traceId: teammateTraceId, spanId: generateSpanId(), parentSpanId: teammateSpanId, conversationId: teammateConversationId, source: \"claude_code\", serviceName: \"whale-cli\", serviceVersion: PKG_VERSION },\n details: { is_team: true, is_teammate: true, team_id: teamId, teammate_id: teammateId, teammate_name: teammateName, parent_conversation_id: parentConversationId, task_id: currentTaskId, task_result: result.output.slice(0, 500), display_name: \"Task completed\", display_icon: \"checkmark.square.fill\", display_color: \"#10B981\" },\n });\n }\n return result;\n },\n callbacks: {\n onToolEnd: (toolName, success, durationMs) => {\n report({ type: \"progress\", teammateId, taskId: currentTaskId || undefined, content: `${toolName} (${durationMs}ms)` });\n const toolCategory = TEAM_TOOLS.some(t => t.name === toolName) ? \"team\" : \"standard\";\n logSpan({\n action: `tool.${toolName}`, durationMs, severity: success ? \"info\" : \"error\",\n context: { traceId: teammateTraceId, spanId: generateSpanId(), parentSpanId: teammateSpanId, conversationId: teammateConversationId, source: \"claude_code\", serviceName: \"whale-cli\", serviceVersion: PKG_VERSION },\n error: success ? undefined : \"(see tool result)\",\n details: { is_team: true, is_teammate: true, team_id: teamId, teammate_id: teammateId, teammate_name: teammateName, parent_conversation_id: parentConversationId, tool_category: toolCategory },\n });\n },\n },\n });\n\n messages.push({ role: \"assistant\", content: response.content });\n messages.push({ role: \"user\", content: toolResults });\n\n const maxToolResultChars = resolvedTeammateConfig?.maxToolResultChars ?? AGENT_DEFAULTS.maxToolResultChars;\n const { messages: compactedMessages } = preCompact(messages, { maxToolResultChars, stripThinking: true });\n messages = compactedMessages;\n\n if (taskCompleted) {\n currentTaskId = null;\n await updateTeammate(teamId, teammateId, { status: \"idle\", currentTask: undefined });\n break;\n }\n }\n\n // Force-complete if inner loop ended without team_complete_task\n if (currentTaskId) {\n const team = loadTeam(teamId);\n const task = team?.tasks.find(t => t.id === currentTaskId);\n if (task && task.status === \"in_progress\") {\n if (apiError) {\n await failTask(teamId, currentTaskId, apiError);\n report({ type: \"progress\", teammateId, taskId: currentTaskId, content: `Task failed: ${apiError.slice(0, 80)}` });\n } else if (totalIn === 0 && totalOut === 0) {\n await failTask(teamId, currentTaskId, \"No API response received (0 tokens)\");\n report({ type: \"progress\", teammateId, taskId: currentTaskId, content: \"Task failed: no API response\" });\n } else {\n const hitTurnLimit = lastTurn >= taskTurnLimit - 1;\n const lastText = messages.length > 0 ? messages[messages.length - 1] : null;\n let partialResult = hitTurnLimit\n ? `Task auto-completed after reaching turn limit (${taskTurnLimit} turns).`\n : \"Task completed (model finished).\";\n if (lastText && typeof lastText === \"object\" && \"content\" in lastText) {\n const content = lastText.content;\n if (typeof content === \"string\") partialResult = content.slice(0, 500);\n else if (Array.isArray(content)) {\n const txt = content.find((b: any) => b.type === \"text\");\n if (txt && \"text\" in txt) partialResult = (txt as any).text.slice(0, 500);\n }\n }\n await completeTask(teamId, currentTaskId, partialResult);\n tasksCompleted++;\n report({ type: \"task_completed\", teammateId, taskId: currentTaskId, content: partialResult });\n }\n }\n currentTaskId = null;\n await updateTeammate(teamId, teammateId, { status: \"idle\", currentTask: undefined });\n }\n }\n\n await updateTeammate(teamId, teammateId, {\n status: \"done\", currentTask: undefined,\n tokensUsed: { input: totalIn, output: totalOut },\n });\n}\n"],"mappings":"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","ignoreList":[]}