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
package/dist/setup.js CHANGED
@@ -1,181 +1,185 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * SwagManager MCP — Interactive Setup
3
+ * Whale Code — Interactive Setup
4
4
  *
5
5
  * Detects installed MCP-compatible CLIs and writes config for each.
6
- * Usage: npx swagmanager-mcp setup
6
+ * Usage: whale setup
7
7
  */
8
8
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
9
9
  import { homedir } from "os";
10
10
  import { dirname, join } from "path";
11
11
  import { createInterface } from "readline";
12
+
13
+ // ============================================================================
14
+ // CLI CONFIG TARGETS
15
+ // ============================================================================
16
+
12
17
  const home = homedir();
13
- const CLI_TARGETS = [
14
- {
15
- name: "Claude Code",
16
- configPath: join(home, ".claude", "settings.json"),
17
- configKey: "mcpServers",
18
- detect: () => existsSync(join(home, ".claude")),
19
- format: (servers) => servers,
20
- },
21
- {
22
- name: "Claude Desktop",
23
- configPath: process.platform === "darwin"
24
- ? join(home, "Library", "Application Support", "Claude", "claude_desktop_config.json")
25
- : join(home, "AppData", "Roaming", "Claude", "claude_desktop_config.json"),
26
- configKey: "mcpServers",
27
- detect: () => existsSync(process.platform === "darwin"
28
- ? join(home, "Library", "Application Support", "Claude")
29
- : join(home, "AppData", "Roaming", "Claude")),
30
- format: (servers) => servers,
31
- },
32
- {
33
- name: "Cursor",
34
- configPath: join(home, ".cursor", "mcp.json"),
35
- configKey: "mcpServers",
36
- detect: () => existsSync(join(home, ".cursor")),
37
- format: (servers) => servers,
38
- },
39
- {
40
- name: "Windsurf",
41
- configPath: join(home, ".codeium", "windsurf", "mcp_config.json"),
42
- configKey: "mcpServers",
43
- detect: () => existsSync(join(home, ".codeium", "windsurf")),
44
- format: (servers) => servers,
45
- },
46
- {
47
- name: "Gemini CLI",
48
- configPath: join(home, ".gemini", "settings.json"),
49
- configKey: "mcpServers",
50
- detect: () => existsSync(join(home, ".gemini")),
51
- format: (servers) => servers,
52
- },
53
- ];
18
+ const CLI_TARGETS = [{
19
+ name: "Claude Code",
20
+ configPath: join(home, ".claude", "settings.json"),
21
+ configKey: "mcpServers",
22
+ detect: () => existsSync(join(home, ".claude")),
23
+ format: servers => servers
24
+ }, {
25
+ name: "Claude Desktop",
26
+ configPath: process.platform === "darwin" ? join(home, "Library", "Application Support", "Claude", "claude_desktop_config.json") : join(home, "AppData", "Roaming", "Claude", "claude_desktop_config.json"),
27
+ configKey: "mcpServers",
28
+ detect: () => existsSync(process.platform === "darwin" ? join(home, "Library", "Application Support", "Claude") : join(home, "AppData", "Roaming", "Claude")),
29
+ format: servers => servers
30
+ }, {
31
+ name: "Cursor",
32
+ configPath: join(home, ".cursor", "mcp.json"),
33
+ configKey: "mcpServers",
34
+ detect: () => existsSync(join(home, ".cursor")),
35
+ format: servers => servers
36
+ }, {
37
+ name: "Windsurf",
38
+ configPath: join(home, ".codeium", "windsurf", "mcp_config.json"),
39
+ configKey: "mcpServers",
40
+ detect: () => existsSync(join(home, ".codeium", "windsurf")),
41
+ format: servers => servers
42
+ }, {
43
+ name: "Gemini CLI",
44
+ configPath: join(home, ".gemini", "settings.json"),
45
+ configKey: "mcpServers",
46
+ detect: () => existsSync(join(home, ".gemini")),
47
+ format: servers => servers
48
+ }];
49
+
54
50
  // ============================================================================
55
51
  // HELPERS
56
52
  // ============================================================================
53
+
57
54
  function readJSON(path) {
58
- try {
59
- return JSON.parse(readFileSync(path, "utf-8"));
60
- }
61
- catch {
62
- return {};
63
- }
55
+ try {
56
+ return JSON.parse(readFileSync(path, "utf-8"));
57
+ } catch {
58
+ return {};
59
+ }
64
60
  }
65
61
  function writeJSON(path, data) {
66
- const dir = dirname(path);
67
- if (!existsSync(dir))
68
- mkdirSync(dir, { recursive: true });
69
- writeFileSync(path, JSON.stringify(data, null, 2) + "\n", "utf-8");
62
+ const dir = dirname(path);
63
+ if (!existsSync(dir)) mkdirSync(dir, {
64
+ recursive: true
65
+ });
66
+ writeFileSync(path, JSON.stringify(data, null, 2) + "\n", "utf-8");
70
67
  }
71
68
  function prompt(rl, question, defaultValue) {
72
- const suffix = defaultValue ? ` (${defaultValue})` : "";
73
- return new Promise((resolve) => {
74
- rl.question(`${question}${suffix}: `, (answer) => {
75
- resolve(answer.trim() || defaultValue || "");
76
- });
69
+ const suffix = defaultValue ? ` (${defaultValue})` : "";
70
+ return new Promise(resolve => {
71
+ rl.question(`${question}${suffix}: `, answer => {
72
+ resolve(answer.trim() || defaultValue || "");
77
73
  });
74
+ });
78
75
  }
79
76
  function promptYN(rl, question, defaultYes = true) {
80
- const hint = defaultYes ? "[Y/n]" : "[y/N]";
81
- return new Promise((resolve) => {
82
- rl.question(`${question} ${hint} `, (answer) => {
83
- const a = answer.trim().toLowerCase();
84
- if (a === "")
85
- resolve(defaultYes);
86
- else
87
- resolve(a === "y" || a === "yes");
88
- });
77
+ const hint = defaultYes ? "[Y/n]" : "[y/N]";
78
+ return new Promise(resolve => {
79
+ rl.question(`${question} ${hint} `, answer => {
80
+ const a = answer.trim().toLowerCase();
81
+ if (a === "") resolve(defaultYes);else resolve(a === "y" || a === "yes");
89
82
  });
83
+ });
90
84
  }
85
+
91
86
  // ============================================================================
92
87
  // MAIN
93
88
  // ============================================================================
89
+
94
90
  export async function runSetup() {
95
- const rl = createInterface({ input: process.stdin, output: process.stdout });
96
- console.log("");
97
- console.log(" SwagManager MCP — Setup");
98
- console.log(" ═══════════════════════");
99
- console.log("");
100
- // Detect installed CLIs
101
- const detected = CLI_TARGETS.filter((t) => t.detect());
102
- const notDetected = CLI_TARGETS.filter((t) => !t.detect());
103
- if (detected.length > 0) {
104
- console.log(" Detected CLIs:");
105
- detected.forEach((t) => console.log(` + ${t.name}`));
106
- }
107
- if (notDetected.length > 0) {
108
- console.log(" Not found:");
109
- notDetected.forEach((t) => console.log(` - ${t.name}`));
110
- }
111
- console.log("");
112
- if (detected.length === 0) {
113
- console.log(" No supported MCP clients detected.");
114
- console.log(" Install Claude Code, Claude Desktop, Cursor, Windsurf, or Gemini CLI first.");
115
- rl.close();
116
- return;
117
- }
118
- // Collect credentials
119
- console.log(" Enter your Supabase credentials:");
120
- console.log("");
121
- const supabaseUrl = await prompt(rl, " Supabase URL");
122
- if (!supabaseUrl) {
123
- console.log(" Supabase URL is required. Aborting.");
124
- rl.close();
125
- return;
126
- }
127
- const supabaseKey = await prompt(rl, " Supabase Service Role Key");
128
- if (!supabaseKey) {
129
- console.log(" Service Role Key is required. Aborting.");
130
- rl.close();
131
- return;
132
- }
133
- const storeId = await prompt(rl, " Store ID (optional, press enter to skip)");
134
- console.log("");
135
- // Build MCP server entry
136
- const serverEntry = {
137
- type: "stdio",
138
- command: "npx",
139
- args: ["-y", "swagmanager-mcp"],
140
- env: {
141
- SUPABASE_URL: supabaseUrl,
142
- SUPABASE_SERVICE_ROLE_KEY: supabaseKey,
143
- ...(storeId ? { STORE_ID: storeId } : {}),
144
- },
145
- };
146
- // Install to each detected CLI
147
- let installed = 0;
148
- for (const target of detected) {
149
- const install = await promptYN(rl, ` Install to ${target.name}?`);
150
- if (!install)
151
- continue;
152
- const config = readJSON(target.configPath);
153
- if (!config[target.configKey])
154
- config[target.configKey] = {};
155
- // Check for existing entry
156
- if (config[target.configKey].swagmanager) {
157
- const overwrite = await promptYN(rl, ` swagmanager already configured in ${target.name}. Overwrite?`, false);
158
- if (!overwrite)
159
- continue;
160
- }
161
- config[target.configKey].swagmanager = target.format(serverEntry);
162
- writeJSON(target.configPath, config);
163
- console.log(` Wrote ${target.configPath}`);
164
- installed++;
165
- }
166
- console.log("");
167
- if (installed > 0) {
168
- console.log(` Done! Installed to ${installed} CLI${installed > 1 ? "s" : ""}.`);
169
- console.log(" Restart your CLI(s) to load the MCP server.");
91
+ const rl = createInterface({
92
+ input: process.stdin,
93
+ output: process.stdout
94
+ });
95
+ console.log("");
96
+ console.log(" Whale Code Setup");
97
+ console.log(" ══════════════════");
98
+ console.log("");
99
+
100
+ // Detect installed CLIs
101
+ const detected = CLI_TARGETS.filter(t => t.detect());
102
+ const notDetected = CLI_TARGETS.filter(t => !t.detect());
103
+ if (detected.length > 0) {
104
+ console.log(" Detected CLIs:");
105
+ detected.forEach(t => console.log(` + ${t.name}`));
106
+ }
107
+ if (notDetected.length > 0) {
108
+ console.log(" Not found:");
109
+ notDetected.forEach(t => console.log(` - ${t.name}`));
110
+ }
111
+ console.log("");
112
+ if (detected.length === 0) {
113
+ console.log(" No supported MCP clients detected.");
114
+ console.log(" Install Claude Code, Claude Desktop, Cursor, Windsurf, or Gemini CLI first.");
115
+ rl.close();
116
+ return;
117
+ }
118
+
119
+ // Collect credentials
120
+ console.log(" Enter your Supabase credentials:");
121
+ console.log("");
122
+ const supabaseUrl = await prompt(rl, " Supabase URL");
123
+ if (!supabaseUrl) {
124
+ console.log(" Supabase URL is required. Aborting.");
125
+ rl.close();
126
+ return;
127
+ }
128
+ const supabaseKey = await prompt(rl, " Supabase Service Role Key");
129
+ if (!supabaseKey) {
130
+ console.log(" Service Role Key is required. Aborting.");
131
+ rl.close();
132
+ return;
133
+ }
134
+ const storeId = await prompt(rl, " Store ID (optional, press enter to skip)");
135
+ console.log("");
136
+
137
+ // Build MCP server entry
138
+ const serverEntry = {
139
+ type: "stdio",
140
+ command: "npx",
141
+ args: ["-y", "whale-code"],
142
+ env: {
143
+ SUPABASE_URL: supabaseUrl,
144
+ SUPABASE_SERVICE_ROLE_KEY: supabaseKey,
145
+ ...(storeId ? {
146
+ STORE_ID: storeId
147
+ } : {})
170
148
  }
171
- else {
172
- console.log(" No changes made.");
149
+ };
150
+
151
+ // Install to each detected CLI
152
+ let installed = 0;
153
+ for (const target of detected) {
154
+ const install = await promptYN(rl, ` Install to ${target.name}?`);
155
+ if (!install) continue;
156
+ const config = readJSON(target.configPath);
157
+ if (!config[target.configKey]) config[target.configKey] = {};
158
+
159
+ // Check for existing entry
160
+ if (config[target.configKey]["whale-code"]) {
161
+ const overwrite = await promptYN(rl, ` whale-code already configured in ${target.name}. Overwrite?`, false);
162
+ if (!overwrite) continue;
173
163
  }
174
- console.log("");
175
- rl.close();
164
+ config[target.configKey]["whale-code"] = target.format(serverEntry);
165
+ writeJSON(target.configPath, config);
166
+ console.log(` Wrote ${target.configPath}`);
167
+ installed++;
168
+ }
169
+ console.log("");
170
+ if (installed > 0) {
171
+ console.log(` Done! Installed to ${installed} CLI${installed > 1 ? "s" : ""}.`);
172
+ console.log(" Restart your CLI(s) to load the MCP server.");
173
+ } else {
174
+ console.log(" No changes made.");
175
+ }
176
+ console.log("");
177
+ rl.close();
176
178
  }
179
+
177
180
  // Run if called directly
178
181
  const isDirectRun = process.argv[1]?.includes("setup");
179
182
  if (isDirectRun) {
180
- runSetup().catch(console.error);
183
+ runSetup().catch(console.error);
181
184
  }
185
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","names":["existsSync","mkdirSync","readFileSync","writeFileSync","homedir","dirname","join","createInterface","home","CLI_TARGETS","name","configPath","configKey","detect","format","servers","process","platform","readJSON","path","JSON","parse","writeJSON","data","dir","recursive","stringify","prompt","rl","question","defaultValue","suffix","Promise","resolve","answer","trim","promptYN","defaultYes","hint","a","toLowerCase","runSetup","input","stdin","output","stdout","console","log","detected","filter","t","notDetected","length","forEach","close","supabaseUrl","supabaseKey","storeId","serverEntry","type","command","args","env","SUPABASE_URL","SUPABASE_SERVICE_ROLE_KEY","STORE_ID","installed","target","install","config","overwrite","isDirectRun","argv","includes","catch","error"],"sources":["../src/setup.ts"],"sourcesContent":["#!/usr/bin/env node\n/**\n * Whale Code — Interactive Setup\n *\n * Detects installed MCP-compatible CLIs and writes config for each.\n * Usage: whale setup\n */\n\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from \"fs\";\nimport { homedir } from \"os\";\nimport { dirname, join } from \"path\";\nimport { createInterface } from \"readline\";\n\n// ============================================================================\n// CLI CONFIG TARGETS\n// ============================================================================\n\ninterface CLITarget {\n name: string;\n configPath: string;\n configKey: string; // JSON key that holds MCP servers\n detect: () => boolean;\n format: (servers: Record<string, any>) => Record<string, any>;\n}\n\nconst home = homedir();\n\nconst CLI_TARGETS: CLITarget[] = [\n {\n name: \"Claude Code\",\n configPath: join(home, \".claude\", \"settings.json\"),\n configKey: \"mcpServers\",\n detect: () => existsSync(join(home, \".claude\")),\n format: (servers) => servers,\n },\n {\n name: \"Claude Desktop\",\n configPath:\n process.platform === \"darwin\"\n ? join(home, \"Library\", \"Application Support\", \"Claude\", \"claude_desktop_config.json\")\n : join(home, \"AppData\", \"Roaming\", \"Claude\", \"claude_desktop_config.json\"),\n configKey: \"mcpServers\",\n detect: () =>\n existsSync(\n process.platform === \"darwin\"\n ? join(home, \"Library\", \"Application Support\", \"Claude\")\n : join(home, \"AppData\", \"Roaming\", \"Claude\")\n ),\n format: (servers) => servers,\n },\n {\n name: \"Cursor\",\n configPath: join(home, \".cursor\", \"mcp.json\"),\n configKey: \"mcpServers\",\n detect: () => existsSync(join(home, \".cursor\")),\n format: (servers) => servers,\n },\n {\n name: \"Windsurf\",\n configPath: join(home, \".codeium\", \"windsurf\", \"mcp_config.json\"),\n configKey: \"mcpServers\",\n detect: () => existsSync(join(home, \".codeium\", \"windsurf\")),\n format: (servers) => servers,\n },\n {\n name: \"Gemini CLI\",\n configPath: join(home, \".gemini\", \"settings.json\"),\n configKey: \"mcpServers\",\n detect: () => existsSync(join(home, \".gemini\")),\n format: (servers) => servers,\n },\n];\n\n// ============================================================================\n// HELPERS\n// ============================================================================\n\nfunction readJSON(path: string): Record<string, any> {\n try {\n return JSON.parse(readFileSync(path, \"utf-8\"));\n } catch {\n return {};\n }\n}\n\nfunction writeJSON(path: string, data: Record<string, any>): void {\n const dir = dirname(path);\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n writeFileSync(path, JSON.stringify(data, null, 2) + \"\\n\", \"utf-8\");\n}\n\nfunction prompt(rl: ReturnType<typeof createInterface>, question: string, defaultValue?: string): Promise<string> {\n const suffix = defaultValue ? ` (${defaultValue})` : \"\";\n return new Promise((resolve) => {\n rl.question(`${question}${suffix}: `, (answer) => {\n resolve(answer.trim() || defaultValue || \"\");\n });\n });\n}\n\nfunction promptYN(rl: ReturnType<typeof createInterface>, question: string, defaultYes = true): Promise<boolean> {\n const hint = defaultYes ? \"[Y/n]\" : \"[y/N]\";\n return new Promise((resolve) => {\n rl.question(`${question} ${hint} `, (answer) => {\n const a = answer.trim().toLowerCase();\n if (a === \"\") resolve(defaultYes);\n else resolve(a === \"y\" || a === \"yes\");\n });\n });\n}\n\n// ============================================================================\n// MAIN\n// ============================================================================\n\nexport async function runSetup(): Promise<void> {\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n\n console.log(\"\");\n console.log(\" Whale Code — Setup\");\n console.log(\" ══════════════════\");\n console.log(\"\");\n\n // Detect installed CLIs\n const detected = CLI_TARGETS.filter((t) => t.detect());\n const notDetected = CLI_TARGETS.filter((t) => !t.detect());\n\n if (detected.length > 0) {\n console.log(\" Detected CLIs:\");\n detected.forEach((t) => console.log(` + ${t.name}`));\n }\n if (notDetected.length > 0) {\n console.log(\" Not found:\");\n notDetected.forEach((t) => console.log(` - ${t.name}`));\n }\n console.log(\"\");\n\n if (detected.length === 0) {\n console.log(\" No supported MCP clients detected.\");\n console.log(\" Install Claude Code, Claude Desktop, Cursor, Windsurf, or Gemini CLI first.\");\n rl.close();\n return;\n }\n\n // Collect credentials\n console.log(\" Enter your Supabase credentials:\");\n console.log(\"\");\n\n const supabaseUrl = await prompt(rl, \" Supabase URL\");\n if (!supabaseUrl) {\n console.log(\" Supabase URL is required. Aborting.\");\n rl.close();\n return;\n }\n\n const supabaseKey = await prompt(rl, \" Supabase Service Role Key\");\n if (!supabaseKey) {\n console.log(\" Service Role Key is required. Aborting.\");\n rl.close();\n return;\n }\n\n const storeId = await prompt(rl, \" Store ID (optional, press enter to skip)\");\n\n console.log(\"\");\n\n // Build MCP server entry\n const serverEntry: Record<string, any> = {\n type: \"stdio\",\n command: \"npx\",\n args: [\"-y\", \"whale-code\"],\n env: {\n SUPABASE_URL: supabaseUrl,\n SUPABASE_SERVICE_ROLE_KEY: supabaseKey,\n ...(storeId ? { STORE_ID: storeId } : {}),\n },\n };\n\n // Install to each detected CLI\n let installed = 0;\n for (const target of detected) {\n const install = await promptYN(rl, ` Install to ${target.name}?`);\n if (!install) continue;\n\n const config = readJSON(target.configPath);\n if (!config[target.configKey]) config[target.configKey] = {};\n\n // Check for existing entry\n if (config[target.configKey][\"whale-code\"]) {\n const overwrite = await promptYN(rl, ` whale-code already configured in ${target.name}. Overwrite?`, false);\n if (!overwrite) continue;\n }\n\n config[target.configKey][\"whale-code\"] = target.format(serverEntry);\n writeJSON(target.configPath, config);\n console.log(` Wrote ${target.configPath}`);\n installed++;\n }\n\n console.log(\"\");\n if (installed > 0) {\n console.log(` Done! Installed to ${installed} CLI${installed > 1 ? \"s\" : \"\"}.`);\n console.log(\" Restart your CLI(s) to load the MCP server.\");\n } else {\n console.log(\" No changes made.\");\n }\n console.log(\"\");\n\n rl.close();\n}\n\n// Run if called directly\nconst isDirectRun = process.argv[1]?.includes(\"setup\");\nif (isDirectRun) {\n runSetup().catch(console.error);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -4,6 +4,7 @@
4
4
  * Pure TypeScript, no runtime-specific APIs (no Deno.env, no process.env, no fs).
5
5
  * Both the CLI (Node.js) and server (Fly container) import from here.
6
6
  */
7
+ import type { CompactableMessage } from "./compaction.js";
7
8
  export interface LoopCheckResult {
8
9
  blocked: boolean;
9
10
  reason?: string;
@@ -52,12 +53,21 @@ export interface ContextManagementConfig {
52
53
  edits: Array<Record<string, unknown>>;
53
54
  };
54
55
  }
55
- /** Compaction trigger thresholdshared so agent loops can track budget */
56
- export declare const COMPACTION_TRIGGER_TOKENS = 120000;
57
- /** Max cumulative tokens before forcing wrap-up (prevents runaway compaction cost) */
56
+ /** Overrides from ai_agent_config.context_config JSONB all optional, falls back to defaults */
57
+ export interface ContextManagementOverrides {
58
+ compaction_trigger_tokens?: number;
59
+ compaction_total_budget?: number;
60
+ clear_thinking_keep?: number;
61
+ clear_tool_uses_trigger?: number;
62
+ clear_tool_uses_keep?: number;
63
+ session_cost_budget_usd?: number;
64
+ }
65
+ /** Legacy compaction trigger — used by getCompactionConfig() for non-Anthropic providers. */
66
+ export declare const COMPACTION_TRIGGER_TOKENS = 167000;
67
+ /** Max cumulative tokens before forcing wrap-up */
58
68
  export declare const COMPACTION_TOTAL_BUDGET = 2000000;
59
- /** Default session cost budget in USD hard cap to prevent runaway spending */
60
- export declare const DEFAULT_SESSION_COST_BUDGET_USD = 5;
69
+ /** Session cost safety capDB context_config.session_cost_budget_usd overrides */
70
+ export declare const DEFAULT_SESSION_COST_BUDGET_USD = 25;
61
71
  /**
62
72
  * Provider-aware compaction configuration.
63
73
  * - Anthropic/Bedrock: native server-side compaction via compact_20260112
@@ -75,7 +85,7 @@ export declare function getCompactionConfig(model: string): CompactionConfig;
75
85
  * - All other Claude models: clear thinking + clear tools at 80K/keep 3
76
86
  * - Non-Anthropic models (Gemini, OpenAI): no betas, no context management
77
87
  */
78
- export declare function getContextManagement(model: string): ContextManagementConfig;
88
+ export declare function getContextManagement(model: string, overrides?: ContextManagementOverrides): ContextManagementConfig;
79
89
  export declare function getMaxOutputTokens(model: string, agentMax?: number): number;
80
90
  /**
81
91
  * Add prompt cache breakpoints to tools and messages.
@@ -84,12 +94,21 @@ export declare function getMaxOutputTokens(model: string, agentMax?: number): nu
84
94
  * - Turn boundary (second-to-last message)
85
95
  * System prompt caching is handled by the caller.
86
96
  */
87
- export declare function addPromptCaching(tools: Array<Record<string, unknown>>, messages: Array<Record<string, unknown>>): {
88
- tools: Array<Record<string, unknown>>;
89
- messages: Array<Record<string, unknown>>;
97
+ export declare function addPromptCaching<T extends object = Record<string, unknown>, M extends CompactableMessage = CompactableMessage>(tools: T[], messages: M[]): {
98
+ tools: T[];
99
+ messages: M[];
90
100
  };
91
101
  /** djb2 string hash — fast, deterministic, no dependencies */
92
102
  export declare function djb2Hash(str: string): string;
103
+ export interface LoopDetectorConfig {
104
+ identicalCallLimit: number;
105
+ consecutiveErrorLimit: number;
106
+ turnErrorLimit: number;
107
+ window: number;
108
+ sessionToolErrorLimit: number;
109
+ consecutiveFailedTurnLimit: number;
110
+ fileReadLimit: number;
111
+ }
93
112
  export declare class LoopDetector {
94
113
  private history;
95
114
  private consecutiveErrors;
@@ -101,13 +120,11 @@ export declare class LoopDetector {
101
120
  private totalSessionErrors;
102
121
  /** Tracks how many times the same file path has been read this session */
103
122
  private fileReadCounts;
104
- static IDENTICAL_CALL_LIMIT: number;
105
- static CONSECUTIVE_ERROR_LIMIT: number;
106
- static TURN_ERROR_LIMIT: number;
107
- static WINDOW: number;
108
- static SESSION_TOOL_ERROR_LIMIT: number;
109
- static CONSECUTIVE_FAILED_TURN_LIMIT: number;
110
- static FILE_READ_LIMIT: number;
123
+ /** Resolved config — accepts DB overrides, falls back to AGENT_DEFAULTS */
124
+ readonly config: LoopDetectorConfig;
125
+ constructor(config?: Partial<LoopDetectorConfig>);
126
+ /** Create a LoopDetector from a ResolvedAgentLoopConfig */
127
+ static fromResolved(resolved: ResolvedAgentLoopConfig): LoopDetector;
111
128
  /** Get the error-tracking key for a tool call. Tools with an `action` param
112
129
  * are tracked per-action so e.g. voice/speak failing won't block voice/music_compose. */
113
130
  private errorKey;
@@ -117,7 +134,14 @@ export declare class LoopDetector {
117
134
  * Blocks re-reading the same path more than FILE_READ_LIMIT times per session.
118
135
  */
119
136
  trackRead(path: string): LoopCheckResult;
120
- recordResult(name: string, success: boolean, input?: Record<string, unknown>): void;
137
+ /**
138
+ * Record a tool execution result.
139
+ * @param transient - If true, the failure is transient (timeout, rate limit)
140
+ * and should NOT be added to failedStrategies. Transient failures are
141
+ * retryable with the exact same inputs — e.g., a task_output poll that
142
+ * timed out because the task is still running.
143
+ */
144
+ recordResult(name: string, success: boolean, input?: Record<string, unknown>, transient?: boolean): void;
121
145
  endTurn(): BailCheckResult;
122
146
  resetTurn(): void;
123
147
  reset(): void;
@@ -163,12 +187,6 @@ export declare function categorizeError(err: unknown): {
163
187
  retryable: boolean;
164
188
  };
165
189
  export declare function isRetryableError(err: unknown): boolean;
166
- /** @deprecated — Anthropic context_management handles limits. Use SAFETY_MAX_CHARS in tool-dispatch instead. */
167
- export declare function truncateToolResult(content: string, maxChars: number): string;
168
- /** @deprecated — Anthropic context_management handles limits. */
169
- export declare function getMaxToolResultChars(contextConfig?: {
170
- max_tool_result_chars?: number;
171
- } | null): number;
172
190
  /**
173
191
  * Demote subagent model requests — single source of truth for server + CLI.
174
192
  * - explore/research: always haiku
@@ -176,5 +194,154 @@ export declare function getMaxToolResultChars(contextConfig?: {
176
194
  * - sonnet: kept for plan, demoted to haiku for others
177
195
  * - default/undefined: haiku
178
196
  */
179
- export declare function demoteSubagentModel(requested: string | undefined, agentType?: string): "haiku" | "sonnet";
197
+ /**
198
+ * Resolve subagent model based on agent type and request.
199
+ *
200
+ * Claude Code behavior: general-purpose and plan subagents inherit the parent
201
+ * model (they do real work / need full reasoning). Only explore and research
202
+ * are demoted to haiku (fast, focused tasks).
203
+ */
204
+ export declare function demoteSubagentModel(requested: string | undefined, agentType?: string): "haiku" | "sonnet" | "opus";
205
+ export type CallPath = "sse" | "workflow" | "channel";
206
+ /**
207
+ * EMERGENCY FALLBACK DEFAULTS — used ONLY when ai_agent_config DB is unreachable.
208
+ *
209
+ * The SINGLE SOURCE OF TRUTH is the ai_agent_config table (Supabase), specifically
210
+ * the row for Whale Code (id: 72d7aaa8-2e8b-48a0-a38d-f332f69600bb).
211
+ * All behavioral knobs are stored in `context_config` JSONB.
212
+ *
213
+ * These values MUST mirror what's in the DB. If you change a value, update the DB
214
+ * first (via Supabase dashboard or migration), then mirror it here.
215
+ *
216
+ * DB → resolveAgentLoopConfig() → code reads resolved values.
217
+ * AGENT_DEFAULTS → code reads ONLY if DB fetch returns null.
218
+ */
219
+ export declare const AGENT_DEFAULTS: {
220
+ readonly maxTurns: 0;
221
+ readonly temperature: 1;
222
+ readonly maxConcurrentTools: 7;
223
+ readonly enableDelegation: true;
224
+ readonly maxDurationMs: 900000;
225
+ readonly maxDurationMsWorkflow: 120000;
226
+ readonly enableModelRouting: true;
227
+ readonly subagentMaxTokens: 32000;
228
+ readonly subagentMaxTurns: 0;
229
+ readonly subagentTemperature: 1;
230
+ readonly subagentMaxRetries: 2;
231
+ readonly maxContinuations: 10;
232
+ readonly subagentMaxContinuations: 5;
233
+ readonly maxMessageChars: 100000;
234
+ readonly maxHistoryChars: 400000;
235
+ readonly maxToolResultChars: 2048;
236
+ readonly compactionTriggerTokens: 167000;
237
+ readonly compactionTotalBudget: 2000000;
238
+ readonly sessionCostBudgetUsd: 25;
239
+ readonly teammateMaxTotalTurns: 0;
240
+ readonly teamTimeoutMs: 600000;
241
+ readonly workerStallMs: 90000;
242
+ readonly teamReviewMaxTokens: 1024;
243
+ readonly apiTimeoutMs: 90000;
244
+ readonly toolTimeoutMs: 60000;
245
+ readonly toolResultTruncateChars: 30000;
246
+ readonly loopIdenticalCallLimit: 4;
247
+ readonly loopConsecutiveErrorLimit: 3;
248
+ readonly loopTurnErrorLimit: 5;
249
+ readonly loopWindow: 20;
250
+ readonly loopSessionToolErrorLimit: 10;
251
+ readonly loopConsecutiveFailedTurnLimit: 3;
252
+ readonly loopFileReadLimit: 3;
253
+ readonly loopBatchErrorLimit: 3;
254
+ };
255
+ /** Context config shape from ai_agent_config.context_config JSONB */
256
+ export interface AgentContextConfig {
257
+ includeLocations?: boolean;
258
+ locationIds?: string[];
259
+ includeCustomers?: boolean;
260
+ customerSegments?: string[];
261
+ max_history_chars?: number;
262
+ max_tool_result_chars?: number;
263
+ max_message_chars?: number;
264
+ compaction_trigger_tokens?: number;
265
+ compaction_total_budget?: number;
266
+ clear_thinking_keep?: number;
267
+ clear_tool_uses_trigger?: number;
268
+ clear_tool_uses_keep?: number;
269
+ session_cost_budget_usd?: number;
270
+ max_concurrent_tools?: number;
271
+ enable_delegation?: boolean;
272
+ max_duration_ms?: number;
273
+ enable_model_routing?: boolean;
274
+ subagent_max_tokens?: number;
275
+ subagent_max_turns?: number;
276
+ subagent_temperature?: number;
277
+ subagent_max_retries?: number;
278
+ max_continuations?: number;
279
+ subagent_max_continuations?: number;
280
+ teammate_max_total_turns?: number;
281
+ team_timeout_ms?: number;
282
+ worker_stall_ms?: number;
283
+ team_review_max_tokens?: number;
284
+ api_timeout_ms?: number;
285
+ tool_timeout_ms?: number;
286
+ tool_result_truncate_chars?: number;
287
+ loop_identical_call_limit?: number;
288
+ loop_consecutive_error_limit?: number;
289
+ loop_turn_error_limit?: number;
290
+ loop_window?: number;
291
+ loop_session_tool_error_limit?: number;
292
+ loop_consecutive_failed_turn_limit?: number;
293
+ loop_file_read_limit?: number;
294
+ loop_batch_error_limit?: number;
295
+ }
296
+ export interface ResolvedAgentLoopConfig {
297
+ maxTurns: number;
298
+ temperature: number;
299
+ maxTokens: number;
300
+ maxConcurrentTools: number;
301
+ enableDelegation: boolean;
302
+ maxDurationMs: number;
303
+ enableModelRouting: boolean;
304
+ maxMessageChars: number;
305
+ maxHistoryChars: number;
306
+ contextOverrides: ContextManagementOverrides;
307
+ subagentMaxTokens: number;
308
+ subagentMaxTurns: number;
309
+ subagentTemperature: number;
310
+ maxContinuations: number;
311
+ subagentMaxContinuations: number;
312
+ subagentMaxRetries: number;
313
+ maxToolResultChars: number;
314
+ teammateMaxTotalTurns: number;
315
+ teamTimeoutMs: number;
316
+ workerStallMs: number;
317
+ teamReviewMaxTokens: number;
318
+ apiTimeoutMs: number;
319
+ toolTimeoutMs: number;
320
+ toolResultTruncateChars: number;
321
+ loopIdenticalCallLimit: number;
322
+ loopConsecutiveErrorLimit: number;
323
+ loopTurnErrorLimit: number;
324
+ loopWindow: number;
325
+ loopSessionToolErrorLimit: number;
326
+ loopConsecutiveFailedTurnLimit: number;
327
+ loopFileReadLimit: number;
328
+ loopBatchErrorLimit: number;
329
+ /** Which fields fell back to AGENT_DEFAULTS (transparency for logging) */
330
+ defaultsUsed: string[];
331
+ }
332
+ /**
333
+ * Resolve all agent loop behavioral knobs from DB config.
334
+ * All 3 call paths MUST use this — structurally prevents hardcoded constants.
335
+ *
336
+ * @param agent - Agent config (DB row or subset)
337
+ * @param callPath - Which call path is invoking ("sse" | "workflow" | "channel")
338
+ * @param workflowMaxTurns - Optional cap from workflow step config (workflow path only)
339
+ */
340
+ export declare function resolveAgentLoopConfig(agent: {
341
+ max_tool_calls: number;
342
+ temperature: number;
343
+ max_tokens: number;
344
+ model: string;
345
+ context_config: AgentContextConfig | null;
346
+ }, callPath: CallPath, workflowMaxTurns?: number): ResolvedAgentLoopConfig;
180
347
  export declare function sanitizeError(err: unknown): string;