whale-code 6.5.5 → 6.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (847) hide show
  1. package/README.md +39 -31
  2. package/bin/{swagmanager-mcp.js → whale-code.js} +17 -2
  3. package/dist/cli/app.js +148 -72
  4. package/dist/cli/app.js.map +1 -0
  5. package/dist/cli/chat/AgentSelector.js +105 -10
  6. package/dist/cli/chat/AgentSelector.js.map +1 -0
  7. package/dist/cli/chat/ChatApp.d.ts +31 -0
  8. package/dist/cli/chat/ChatApp.js +539 -286
  9. package/dist/cli/chat/ChatApp.js.map +1 -0
  10. package/dist/cli/chat/ChatInput.js +1088 -770
  11. package/dist/cli/chat/ChatInput.js.map +1 -0
  12. package/dist/cli/chat/MarkdownText.js +39 -14
  13. package/dist/cli/chat/MarkdownText.js.map +1 -0
  14. package/dist/cli/chat/MemoryManager.js +181 -46
  15. package/dist/cli/chat/MemoryManager.js.map +1 -0
  16. package/dist/cli/chat/MessageList.d.ts +2 -3
  17. package/dist/cli/chat/MessageList.js +186 -45
  18. package/dist/cli/chat/MessageList.js.map +1 -0
  19. package/dist/cli/chat/ModelSelector.js +282 -63
  20. package/dist/cli/chat/ModelSelector.js.map +1 -0
  21. package/dist/cli/chat/NodeManager.js +165 -75
  22. package/dist/cli/chat/NodeManager.js.map +1 -0
  23. package/dist/cli/chat/NodeSelector.js +171 -30
  24. package/dist/cli/chat/NodeSelector.js.map +1 -0
  25. package/dist/cli/chat/PlanApproval.js +281 -57
  26. package/dist/cli/chat/PlanApproval.js.map +1 -0
  27. package/dist/cli/chat/RewindViewer.js +559 -144
  28. package/dist/cli/chat/RewindViewer.js.map +1 -0
  29. package/dist/cli/chat/SessionManager.js +137 -30
  30. package/dist/cli/chat/SessionManager.js.map +1 -0
  31. package/dist/cli/chat/SlashMenu.js +293 -164
  32. package/dist/cli/chat/SlashMenu.js.map +1 -0
  33. package/dist/cli/chat/StatusBar.js +172 -9
  34. package/dist/cli/chat/StatusBar.js.map +1 -0
  35. package/dist/cli/chat/StoreSelector.js +147 -18
  36. package/dist/cli/chat/StoreSelector.js.map +1 -0
  37. package/dist/cli/chat/StreamingText.d.ts +1 -5
  38. package/dist/cli/chat/StreamingText.js +22 -7
  39. package/dist/cli/chat/StreamingText.js.map +1 -0
  40. package/dist/cli/chat/SubagentPanel.d.ts +1 -2
  41. package/dist/cli/chat/SubagentPanel.js +612 -72
  42. package/dist/cli/chat/SubagentPanel.js.map +1 -0
  43. package/dist/cli/chat/TeamPanel.d.ts +1 -0
  44. package/dist/cli/chat/TeamPanel.js +230 -30
  45. package/dist/cli/chat/TeamPanel.js.map +1 -0
  46. package/dist/cli/chat/ThemeSelector.js +84 -24
  47. package/dist/cli/chat/ThemeSelector.js.map +1 -0
  48. package/dist/cli/chat/ToolIndicator.js +1476 -371
  49. package/dist/cli/chat/ToolIndicator.js.map +1 -0
  50. package/dist/cli/chat/hooks/useAgentLoop.d.ts +1 -0
  51. package/dist/cli/chat/hooks/useAgentLoop.js +481 -367
  52. package/dist/cli/chat/hooks/useAgentLoop.js.map +1 -0
  53. package/dist/cli/chat/hooks/useSlashCommands.d.ts +3 -14
  54. package/dist/cli/chat/hooks/useSlashCommands.js +744 -572
  55. package/dist/cli/chat/hooks/useSlashCommands.js.map +1 -0
  56. package/dist/cli/commands/config-cmd.js +56 -57
  57. package/dist/cli/commands/config-cmd.js.map +1 -0
  58. package/dist/cli/commands/db.js +184 -169
  59. package/dist/cli/commands/db.js.map +1 -0
  60. package/dist/cli/commands/doctor.js +212 -122
  61. package/dist/cli/commands/doctor.js.map +1 -0
  62. package/dist/cli/commands/init.js +211 -244
  63. package/dist/cli/commands/init.js.map +1 -0
  64. package/dist/cli/commands/mcp.js +127 -122
  65. package/dist/cli/commands/mcp.js.map +1 -0
  66. package/dist/cli/login/LoginApp.js +355 -141
  67. package/dist/cli/login/LoginApp.js.map +1 -0
  68. package/dist/cli/print-mode.js +196 -177
  69. package/dist/cli/print-mode.js.map +1 -0
  70. package/dist/cli/serve-mode.js +615 -530
  71. package/dist/cli/serve-mode.js.map +1 -0
  72. package/dist/cli/services/agent-config.d.ts +5 -1
  73. package/dist/cli/services/agent-config.js +66 -36
  74. package/dist/cli/services/agent-config.js.map +1 -0
  75. package/dist/cli/services/agent-definitions.d.ts +4 -1
  76. package/dist/cli/services/agent-definitions.js +97 -56
  77. package/dist/cli/services/agent-definitions.js.map +1 -0
  78. package/dist/cli/services/agent-events.js +225 -162
  79. package/dist/cli/services/agent-events.js.map +1 -0
  80. package/dist/cli/services/agent-loop.js +976 -688
  81. package/dist/cli/services/agent-loop.js.map +1 -0
  82. package/dist/cli/services/agent-worker-base.d.ts +35 -5
  83. package/dist/cli/services/agent-worker-base.js +337 -153
  84. package/dist/cli/services/agent-worker-base.js.map +1 -0
  85. package/dist/cli/services/api-retry.js +69 -64
  86. package/dist/cli/services/api-retry.js.map +1 -0
  87. package/dist/cli/services/auth-service.d.ts +3 -3
  88. package/dist/cli/services/auth-service.js +209 -132
  89. package/dist/cli/services/auth-service.js.map +1 -0
  90. package/dist/cli/services/background-processes.js +343 -267
  91. package/dist/cli/services/background-processes.js.map +1 -0
  92. package/dist/cli/services/browser-auth.d.ts +2 -2
  93. package/dist/cli/services/browser-auth.js +159 -118
  94. package/dist/cli/services/browser-auth.js.map +1 -0
  95. package/dist/cli/services/claude-md-loader.js +40 -36
  96. package/dist/cli/services/claude-md-loader.js.map +1 -0
  97. package/dist/cli/services/config-store.d.ts +9 -4
  98. package/dist/cli/services/config-store.js +164 -117
  99. package/dist/cli/services/config-store.js.map +1 -0
  100. package/dist/cli/services/debug-log.d.ts +1 -1
  101. package/dist/cli/services/debug-log.js +34 -35
  102. package/dist/cli/services/debug-log.js.map +1 -0
  103. package/dist/cli/services/env-detect.d.ts +7 -0
  104. package/dist/cli/services/env-detect.js +9 -0
  105. package/dist/cli/services/env-detect.js.map +1 -0
  106. package/dist/cli/services/error-logger.js +187 -169
  107. package/dist/cli/services/error-logger.js.map +1 -0
  108. package/dist/cli/services/file-history.d.ts +1 -1
  109. package/dist/cli/services/file-history.js +50 -54
  110. package/dist/cli/services/file-history.js.map +1 -0
  111. package/dist/cli/services/format-server-response.js +332 -372
  112. package/dist/cli/services/format-server-response.js.map +1 -0
  113. package/dist/cli/services/git-context.js +61 -45
  114. package/dist/cli/services/git-context.js.map +1 -0
  115. package/dist/cli/services/hooks.d.ts +2 -2
  116. package/dist/cli/services/hooks.js +195 -180
  117. package/dist/cli/services/hooks.js.map +1 -0
  118. package/dist/cli/services/ink-incremental.d.ts +19 -0
  119. package/dist/cli/services/ink-incremental.js +59 -0
  120. package/dist/cli/services/ink-incremental.js.map +1 -0
  121. package/dist/cli/services/ink-resize-fix.js +54 -44
  122. package/dist/cli/services/ink-resize-fix.js.map +1 -0
  123. package/dist/cli/services/ink-sync-output.d.ts +12 -0
  124. package/dist/cli/services/ink-sync-output.js +16 -0
  125. package/dist/cli/services/ink-sync-output.js.map +1 -0
  126. package/dist/cli/services/interactive-tools.js +268 -212
  127. package/dist/cli/services/interactive-tools.js.map +1 -0
  128. package/dist/cli/services/keybinding-manager.d.ts +11 -1
  129. package/dist/cli/services/keybinding-manager.js +126 -63
  130. package/dist/cli/services/keybinding-manager.js.map +1 -0
  131. package/dist/cli/services/local-tools.d.ts +1 -1
  132. package/dist/cli/services/local-tools.js +939 -656
  133. package/dist/cli/services/local-tools.js.map +1 -0
  134. package/dist/cli/services/lsp-manager.js +757 -594
  135. package/dist/cli/services/lsp-manager.js.map +1 -0
  136. package/dist/cli/services/mcp-client.d.ts +1 -1
  137. package/dist/cli/services/mcp-client.js +173 -134
  138. package/dist/cli/services/mcp-client.js.map +1 -0
  139. package/dist/cli/services/memory-manager.js +53 -40
  140. package/dist/cli/services/memory-manager.js.map +1 -0
  141. package/dist/cli/services/model-manager.js +55 -40
  142. package/dist/cli/services/model-manager.js.map +1 -0
  143. package/dist/cli/services/model-router.js +115 -85
  144. package/dist/cli/services/model-router.js.map +1 -0
  145. package/dist/cli/services/paths.d.ts +30 -0
  146. package/dist/cli/services/paths.js +81 -0
  147. package/dist/cli/services/paths.js.map +1 -0
  148. package/dist/cli/services/permission-modes.js +32 -25
  149. package/dist/cli/services/permission-modes.js.map +1 -0
  150. package/dist/cli/services/rewind.js +182 -168
  151. package/dist/cli/services/rewind.js.map +1 -0
  152. package/dist/cli/services/ripgrep.js +115 -115
  153. package/dist/cli/services/ripgrep.js.map +1 -0
  154. package/dist/cli/services/sandbox.d.ts +1 -1
  155. package/dist/cli/services/sandbox.js +58 -37
  156. package/dist/cli/services/sandbox.js.map +1 -0
  157. package/dist/cli/services/server-tools.js +738 -565
  158. package/dist/cli/services/server-tools.js.map +1 -0
  159. package/dist/cli/services/session-persistence.js +69 -74
  160. package/dist/cli/services/session-persistence.js.map +1 -0
  161. package/dist/cli/services/subagent-worker.js +42 -27
  162. package/dist/cli/services/subagent-worker.js.map +1 -0
  163. package/dist/cli/services/subagent.d.ts +2 -0
  164. package/dist/cli/services/subagent.js +605 -433
  165. package/dist/cli/services/subagent.js.map +1 -0
  166. package/dist/cli/services/system-prompt.js +86 -78
  167. package/dist/cli/services/system-prompt.js.map +1 -0
  168. package/dist/cli/services/task-decomposer.d.ts +1 -1
  169. package/dist/cli/services/task-decomposer.js +172 -139
  170. package/dist/cli/services/task-decomposer.js.map +1 -0
  171. package/dist/cli/services/team-lead.d.ts +2 -2
  172. package/dist/cli/services/team-lead.js +727 -529
  173. package/dist/cli/services/team-lead.js.map +1 -0
  174. package/dist/cli/services/team-state.js +319 -319
  175. package/dist/cli/services/team-state.js.map +1 -0
  176. package/dist/cli/services/teammate.d.ts +8 -2
  177. package/dist/cli/services/teammate.js +857 -569
  178. package/dist/cli/services/teammate.js.map +1 -0
  179. package/dist/cli/services/telemetry.d.ts +6 -1
  180. package/dist/cli/services/telemetry.js +180 -157
  181. package/dist/cli/services/telemetry.js.map +1 -0
  182. package/dist/cli/services/tools/agent-tools.d.ts +3 -3
  183. package/dist/cli/services/tools/agent-tools.js +480 -322
  184. package/dist/cli/services/tools/agent-tools.js.map +1 -0
  185. package/dist/cli/services/tools/file-ops.js +563 -450
  186. package/dist/cli/services/tools/file-ops.js.map +1 -0
  187. package/dist/cli/services/tools/search-tools.js +231 -162
  188. package/dist/cli/services/tools/search-tools.js.map +1 -0
  189. package/dist/cli/services/tools/shell-exec.js +197 -151
  190. package/dist/cli/services/tools/shell-exec.js.map +1 -0
  191. package/dist/cli/services/tools/task-manager.js +206 -173
  192. package/dist/cli/services/tools/task-manager.js.map +1 -0
  193. package/dist/cli/services/tools/web-tools.js +388 -341
  194. package/dist/cli/services/tools/web-tools.js.map +1 -0
  195. package/dist/cli/setup/SetupApp.d.ts +2 -2
  196. package/dist/cli/setup/SetupApp.js +608 -160
  197. package/dist/cli/setup/SetupApp.js.map +1 -0
  198. package/dist/cli/shared/ErrorBoundary.d.ts +22 -0
  199. package/dist/cli/shared/ErrorBoundary.js +73 -0
  200. package/dist/cli/shared/ErrorBoundary.js.map +1 -0
  201. package/dist/cli/shared/MatrixIntro.js +66 -69
  202. package/dist/cli/shared/MatrixIntro.js.map +1 -0
  203. package/dist/cli/shared/SpinnerSlot.d.ts +14 -0
  204. package/dist/cli/shared/SpinnerSlot.js +63 -0
  205. package/dist/cli/shared/SpinnerSlot.js.map +1 -0
  206. package/dist/cli/shared/Theme.d.ts +1 -1
  207. package/dist/cli/shared/Theme.js +136 -92
  208. package/dist/cli/shared/Theme.js.map +1 -0
  209. package/dist/cli/shared/WhaleBanner.js +99 -11
  210. package/dist/cli/shared/WhaleBanner.js.map +1 -0
  211. package/dist/cli/shared/markdown.d.ts +3 -1
  212. package/dist/cli/shared/markdown.js +736 -674
  213. package/dist/cli/shared/markdown.js.map +1 -0
  214. package/dist/cli/shared/marked-terminal.d.js +2 -0
  215. package/dist/cli/shared/marked-terminal.d.js.map +1 -0
  216. package/dist/cli/shared/theme-manager.js +99 -90
  217. package/dist/cli/shared/theme-manager.js.map +1 -0
  218. package/dist/cli/shared/theme-presets.js +256 -254
  219. package/dist/cli/shared/theme-presets.js.map +1 -0
  220. package/dist/cli/status/StatusApp.js +235 -86
  221. package/dist/cli/status/StatusApp.js.map +1 -0
  222. package/dist/cli/stores/StoreApp.js +275 -65
  223. package/dist/cli/stores/StoreApp.js.map +1 -0
  224. package/dist/index.d.ts +2 -2
  225. package/dist/index.js +509 -396
  226. package/dist/index.js.map +1 -0
  227. package/dist/local-agent/connection.d.ts +2 -2
  228. package/dist/local-agent/connection.js +352 -293
  229. package/dist/local-agent/connection.js.map +1 -0
  230. package/dist/local-agent/discovery.js +259 -122
  231. package/dist/local-agent/discovery.js.map +1 -0
  232. package/dist/local-agent/executor.js +216 -193
  233. package/dist/local-agent/executor.js.map +1 -0
  234. package/dist/local-agent/index.d.ts +2 -2
  235. package/dist/local-agent/index.js +156 -156
  236. package/dist/local-agent/index.js.map +1 -0
  237. package/dist/node/adapters/base.js +18 -8
  238. package/dist/node/adapters/base.js.map +1 -0
  239. package/dist/node/adapters/discord.js +286 -275
  240. package/dist/node/adapters/discord.js.map +1 -0
  241. package/dist/node/adapters/email.js +189 -202
  242. package/dist/node/adapters/email.js.map +1 -0
  243. package/dist/node/adapters/imessage.js +145 -142
  244. package/dist/node/adapters/imessage.js.map +1 -0
  245. package/dist/node/adapters/slack.js +237 -236
  246. package/dist/node/adapters/slack.js.map +1 -0
  247. package/dist/node/adapters/sms.js +149 -151
  248. package/dist/node/adapters/sms.js.map +1 -0
  249. package/dist/node/adapters/telegram.js +88 -92
  250. package/dist/node/adapters/telegram.js.map +1 -0
  251. package/dist/node/adapters/webchat.js +160 -136
  252. package/dist/node/adapters/webchat.js.map +1 -0
  253. package/dist/node/adapters/whatsapp.js +212 -215
  254. package/dist/node/adapters/whatsapp.js.map +1 -0
  255. package/dist/node/cli.js +884 -653
  256. package/dist/node/cli.js.map +1 -0
  257. package/dist/node/config.js +20 -18
  258. package/dist/node/config.js.map +1 -0
  259. package/dist/node/gateway-client.js +191 -181
  260. package/dist/node/gateway-client.js.map +1 -0
  261. package/dist/node/portal/clipboard.js +161 -130
  262. package/dist/node/portal/clipboard.js.map +1 -0
  263. package/dist/node/portal/discovery.js +51 -45
  264. package/dist/node/portal/discovery.js.map +1 -0
  265. package/dist/node/portal/forward.js +64 -58
  266. package/dist/node/portal/forward.js.map +1 -0
  267. package/dist/node/portal/index.js +246 -221
  268. package/dist/node/portal/index.js.map +1 -0
  269. package/dist/node/portal/multiplexer.js +192 -182
  270. package/dist/node/portal/multiplexer.js.map +1 -0
  271. package/dist/node/portal/permissions.js +102 -70
  272. package/dist/node/portal/permissions.js.map +1 -0
  273. package/dist/node/portal/protocol.js +153 -116
  274. package/dist/node/portal/protocol.js.map +1 -0
  275. package/dist/node/portal/screen.js +80 -69
  276. package/dist/node/portal/screen.js.map +1 -0
  277. package/dist/node/portal/session.js +124 -117
  278. package/dist/node/portal/session.js.map +1 -0
  279. package/dist/node/portal/shell.js +140 -113
  280. package/dist/node/portal/shell.js.map +1 -0
  281. package/dist/node/portal/stream.js +77 -75
  282. package/dist/node/portal/stream.js.map +1 -0
  283. package/dist/node/portal/transfer.js +190 -167
  284. package/dist/node/portal/transfer.js.map +1 -0
  285. package/dist/node/portal/ui.js +124 -99
  286. package/dist/node/portal/ui.js.map +1 -0
  287. package/dist/node/remote-desktop/compile-helper.js +50 -45
  288. package/dist/node/remote-desktop/compile-helper.js.map +1 -0
  289. package/dist/node/remote-desktop/index.js +215 -187
  290. package/dist/node/remote-desktop/index.js.map +1 -0
  291. package/dist/node/remote-desktop/protocol.js +45 -29
  292. package/dist/node/remote-desktop/protocol.js.map +1 -0
  293. package/dist/node/runtime.js +493 -410
  294. package/dist/node/runtime.js.map +1 -0
  295. package/dist/server/handlers/__test-utils__/test-db.js +39 -89
  296. package/dist/server/handlers/__test-utils__/test-db.js.map +1 -0
  297. package/dist/server/handlers/analytics.js +467 -261
  298. package/dist/server/handlers/analytics.js.map +1 -0
  299. package/dist/server/handlers/api-docs.js +1030 -895
  300. package/dist/server/handlers/api-docs.js.map +1 -0
  301. package/dist/server/handlers/api-keys.js +291 -242
  302. package/dist/server/handlers/api-keys.js.map +1 -0
  303. package/dist/server/handlers/billing.js +330 -239
  304. package/dist/server/handlers/billing.js.map +1 -0
  305. package/dist/server/handlers/browser.js +468 -395
  306. package/dist/server/handlers/browser.js.map +1 -0
  307. package/dist/server/handlers/catalog.js +1377 -978
  308. package/dist/server/handlers/catalog.js.map +1 -0
  309. package/dist/server/handlers/clickhouse.js +157 -109
  310. package/dist/server/handlers/clickhouse.js.map +1 -0
  311. package/dist/server/handlers/comms.js +1439 -984
  312. package/dist/server/handlers/comms.js.map +1 -0
  313. package/dist/server/handlers/creations.js +461 -394
  314. package/dist/server/handlers/creations.js.map +1 -0
  315. package/dist/server/handlers/crm.js +1082 -791
  316. package/dist/server/handlers/crm.js.map +1 -0
  317. package/dist/server/handlers/discovery.js +251 -232
  318. package/dist/server/handlers/discovery.js.map +1 -0
  319. package/dist/server/handlers/embeddings.js +241 -164
  320. package/dist/server/handlers/embeddings.js.map +1 -0
  321. package/dist/server/handlers/enrichment.js +887 -718
  322. package/dist/server/handlers/enrichment.js.map +1 -0
  323. package/dist/server/handlers/image-gen.js +467 -376
  324. package/dist/server/handlers/image-gen.js.map +1 -0
  325. package/dist/server/handlers/inventory.js +797 -424
  326. package/dist/server/handlers/inventory.js.map +1 -0
  327. package/dist/server/handlers/kali.js +272 -230
  328. package/dist/server/handlers/kali.js.map +1 -0
  329. package/dist/server/handlers/llm-providers.js +803 -580
  330. package/dist/server/handlers/llm-providers.js.map +1 -0
  331. package/dist/server/handlers/local-agent.js +133 -105
  332. package/dist/server/handlers/local-agent.js.map +1 -0
  333. package/dist/server/handlers/media.js +1179 -857
  334. package/dist/server/handlers/media.js.map +1 -0
  335. package/dist/server/handlers/meta-ads.js +2669 -2093
  336. package/dist/server/handlers/meta-ads.js.map +1 -0
  337. package/dist/server/handlers/nodes.js +1321 -913
  338. package/dist/server/handlers/nodes.js.map +1 -0
  339. package/dist/server/handlers/operations.js +183 -157
  340. package/dist/server/handlers/operations.js.map +1 -0
  341. package/dist/server/handlers/platform.js +346 -210
  342. package/dist/server/handlers/platform.js.map +1 -0
  343. package/dist/server/handlers/remove-bg.js +118 -86
  344. package/dist/server/handlers/remove-bg.js.map +1 -0
  345. package/dist/server/handlers/storefront.js +586 -446
  346. package/dist/server/handlers/storefront.js.map +1 -0
  347. package/dist/server/handlers/supply-chain.js +546 -326
  348. package/dist/server/handlers/supply-chain.js.map +1 -0
  349. package/dist/server/handlers/transcription.js +106 -97
  350. package/dist/server/handlers/transcription.js.map +1 -0
  351. package/dist/server/handlers/video-gen.js +593 -424
  352. package/dist/server/handlers/video-gen.js.map +1 -0
  353. package/dist/server/handlers/voice.js +1458 -1039
  354. package/dist/server/handlers/voice.js.map +1 -0
  355. package/dist/server/handlers/workflow-steps.js +2837 -2116
  356. package/dist/server/handlers/workflow-steps.js.map +1 -0
  357. package/dist/server/handlers/workflows.js +1630 -933
  358. package/dist/server/handlers/workflows.js.map +1 -0
  359. package/dist/server/index.js +3167 -2422
  360. package/dist/server/index.js.map +1 -0
  361. package/dist/server/lib/batch-client.js +471 -409
  362. package/dist/server/lib/batch-client.js.map +1 -0
  363. package/dist/server/lib/clickhouse-buffer.js +118 -104
  364. package/dist/server/lib/clickhouse-buffer.js.map +1 -0
  365. package/dist/server/lib/clickhouse-client.js +107 -107
  366. package/dist/server/lib/clickhouse-client.js.map +1 -0
  367. package/dist/server/lib/coa-renderer.js +1786 -356
  368. package/dist/server/lib/coa-renderer.js.map +1 -0
  369. package/dist/server/lib/code-worker-pool.js +227 -177
  370. package/dist/server/lib/code-worker-pool.js.map +1 -0
  371. package/dist/server/lib/code-worker.js +174 -164
  372. package/dist/server/lib/code-worker.js.map +1 -0
  373. package/dist/server/lib/compaction-service.d.ts +2 -12
  374. package/dist/server/lib/compaction-service.js +74 -184
  375. package/dist/server/lib/compaction-service.js.map +1 -0
  376. package/dist/server/lib/logger.js +36 -24
  377. package/dist/server/lib/logger.js.map +1 -0
  378. package/dist/server/lib/otel.js +101 -80
  379. package/dist/server/lib/otel.js.map +1 -0
  380. package/dist/server/lib/pdf-renderer.js +952 -788
  381. package/dist/server/lib/pdf-renderer.js.map +1 -0
  382. package/dist/server/lib/prompt-sanitizer.js +188 -108
  383. package/dist/server/lib/prompt-sanitizer.js.map +1 -0
  384. package/dist/server/lib/provider-capabilities.js +136 -138
  385. package/dist/server/lib/provider-capabilities.js.map +1 -0
  386. package/dist/server/lib/provider-failover.js +190 -168
  387. package/dist/server/lib/provider-failover.js.map +1 -0
  388. package/dist/server/lib/rate-limiter.js +186 -117
  389. package/dist/server/lib/rate-limiter.js.map +1 -0
  390. package/dist/server/lib/react-pdf-layout.js +551 -382
  391. package/dist/server/lib/react-pdf-layout.js.map +1 -0
  392. package/dist/server/lib/server-agent-loop.d.ts +4 -1
  393. package/dist/server/lib/server-agent-loop.js +906 -634
  394. package/dist/server/lib/server-agent-loop.js.map +1 -0
  395. package/dist/server/lib/server-subagent.js +260 -164
  396. package/dist/server/lib/server-subagent.js.map +1 -0
  397. package/dist/server/lib/session-checkpoint.js +105 -96
  398. package/dist/server/lib/session-checkpoint.js.map +1 -0
  399. package/dist/server/lib/ssrf-guard.js +193 -184
  400. package/dist/server/lib/ssrf-guard.js.map +1 -0
  401. package/dist/server/lib/supabase-client.js +94 -82
  402. package/dist/server/lib/supabase-client.js.map +1 -0
  403. package/dist/server/lib/template-resolver.js +154 -176
  404. package/dist/server/lib/template-resolver.js.map +1 -0
  405. package/dist/server/lib/utils.js +242 -133
  406. package/dist/server/lib/utils.js.map +1 -0
  407. package/dist/server/local-agent-gateway.d.ts +2 -2
  408. package/dist/server/local-agent-gateway.js +785 -627
  409. package/dist/server/local-agent-gateway.js.map +1 -0
  410. package/dist/server/providers/anthropic.js +250 -172
  411. package/dist/server/providers/anthropic.js.map +1 -0
  412. package/dist/server/providers/bedrock.js +217 -158
  413. package/dist/server/providers/bedrock.js.map +1 -0
  414. package/dist/server/providers/gemini.js +548 -418
  415. package/dist/server/providers/gemini.js.map +1 -0
  416. package/dist/server/providers/openai.js +571 -437
  417. package/dist/server/providers/openai.js.map +1 -0
  418. package/dist/server/providers/registry.js +23 -18
  419. package/dist/server/providers/registry.js.map +1 -0
  420. package/dist/server/providers/shared.js +123 -95
  421. package/dist/server/providers/shared.js.map +1 -0
  422. package/dist/server/providers/types.js +1 -11
  423. package/dist/server/providers/types.js.map +1 -0
  424. package/dist/server/proxy-handlers.js +209 -165
  425. package/dist/server/proxy-handlers.js.map +1 -0
  426. package/dist/server/tool-router.js +959 -599
  427. package/dist/server/tool-router.js.map +1 -0
  428. package/dist/server/validation.js +248 -188
  429. package/dist/server/validation.js.map +1 -0
  430. package/dist/server/worker.js +202 -133
  431. package/dist/server/worker.js.map +1 -0
  432. package/dist/setup.d.ts +2 -2
  433. package/dist/setup.js +151 -147
  434. package/dist/setup.js.map +1 -0
  435. package/dist/shared/agent-core.d.ts +115 -26
  436. package/dist/shared/agent-core.js +956 -522
  437. package/dist/shared/agent-core.js.map +1 -0
  438. package/dist/shared/anthropic-types.js +1 -6
  439. package/dist/shared/anthropic-types.js.map +1 -0
  440. package/dist/shared/api-client.d.ts +16 -9
  441. package/dist/shared/api-client.js +419 -327
  442. package/dist/shared/api-client.js.map +1 -0
  443. package/dist/shared/compaction.d.ts +36 -0
  444. package/dist/shared/compaction.js +138 -0
  445. package/dist/shared/compaction.js.map +1 -0
  446. package/dist/shared/constants.js +67 -64
  447. package/dist/shared/constants.js.map +1 -0
  448. package/dist/shared/sse-parser.js +221 -219
  449. package/dist/shared/sse-parser.js.map +1 -0
  450. package/dist/shared/tool-dispatch.d.ts +4 -0
  451. package/dist/shared/tool-dispatch.js +226 -165
  452. package/dist/shared/tool-dispatch.js.map +1 -0
  453. package/dist/shared/types.js +1 -6
  454. package/dist/shared/types.js.map +1 -0
  455. package/dist/types/cli-highlight.d.js +2 -0
  456. package/dist/types/cli-highlight.d.js.map +1 -0
  457. package/dist/types/diff.d.js +2 -0
  458. package/dist/types/diff.d.js.map +1 -0
  459. package/dist/types/pdf-parse.d.js +2 -0
  460. package/dist/types/pdf-parse.d.js.map +1 -0
  461. package/dist/updater.d.ts +1 -1
  462. package/dist/updater.js +118 -92
  463. package/dist/updater.js.map +1 -0
  464. package/dist/webchat/widget.js +227 -380
  465. package/dist/webchat/widget.js.map +1 -0
  466. package/package.json +22 -10
  467. package/vendor/ink/build/ansi-tokenizer.d.ts +38 -0
  468. package/vendor/ink/build/ansi-tokenizer.js +316 -0
  469. package/vendor/ink/build/ansi-tokenizer.js.map +1 -0
  470. package/vendor/ink/build/apply-styles.js +175 -0
  471. package/vendor/ink/build/build-layout.js +77 -0
  472. package/vendor/ink/build/calculate-wrapped-text.js +53 -0
  473. package/vendor/ink/build/colorize.d.ts +3 -0
  474. package/vendor/ink/build/colorize.js +48 -0
  475. package/vendor/ink/build/colorize.js.map +1 -0
  476. package/vendor/ink/build/components/AccessibilityContext.d.ts +3 -0
  477. package/vendor/ink/build/components/AccessibilityContext.js +5 -0
  478. package/vendor/ink/build/components/AccessibilityContext.js.map +1 -0
  479. package/vendor/ink/build/components/App.d.ts +18 -0
  480. package/vendor/ink/build/components/App.js +351 -0
  481. package/vendor/ink/build/components/App.js.map +1 -0
  482. package/vendor/ink/build/components/AppContext.d.ts +15 -0
  483. package/vendor/ink/build/components/AppContext.js +11 -0
  484. package/vendor/ink/build/components/AppContext.js.map +1 -0
  485. package/vendor/ink/build/components/BackgroundContext.d.ts +4 -0
  486. package/vendor/ink/build/components/BackgroundContext.js +3 -0
  487. package/vendor/ink/build/components/BackgroundContext.js.map +1 -0
  488. package/vendor/ink/build/components/Box.d.ts +117 -0
  489. package/vendor/ink/build/components/Box.js +34 -0
  490. package/vendor/ink/build/components/Box.js.map +1 -0
  491. package/vendor/ink/build/components/Color.js +62 -0
  492. package/vendor/ink/build/components/Cursor.d.ts +83 -0
  493. package/vendor/ink/build/components/Cursor.js +53 -0
  494. package/vendor/ink/build/components/Cursor.js.map +1 -0
  495. package/vendor/ink/build/components/CursorContext.d.ts +11 -0
  496. package/vendor/ink/build/components/CursorContext.js +8 -0
  497. package/vendor/ink/build/components/CursorContext.js.map +1 -0
  498. package/vendor/ink/build/components/ErrorBoundary.d.ts +18 -0
  499. package/vendor/ink/build/components/ErrorBoundary.js +23 -0
  500. package/vendor/ink/build/components/ErrorBoundary.js.map +1 -0
  501. package/vendor/ink/build/components/ErrorOverview.d.ts +6 -0
  502. package/vendor/ink/build/components/ErrorOverview.js +84 -0
  503. package/vendor/ink/build/components/ErrorOverview.js.map +1 -0
  504. package/vendor/ink/build/components/FocusContext.d.ts +16 -0
  505. package/vendor/ink/build/components/FocusContext.js +17 -0
  506. package/vendor/ink/build/components/FocusContext.js.map +1 -0
  507. package/vendor/ink/build/components/Newline.d.ts +13 -0
  508. package/vendor/ink/build/components/Newline.js +8 -0
  509. package/vendor/ink/build/components/Newline.js.map +1 -0
  510. package/vendor/ink/build/components/Spacer.d.ts +7 -0
  511. package/vendor/ink/build/components/Spacer.js +11 -0
  512. package/vendor/ink/build/components/Spacer.js.map +1 -0
  513. package/vendor/ink/build/components/Static.d.ts +24 -0
  514. package/vendor/ink/build/components/Static.js +28 -0
  515. package/vendor/ink/build/components/Static.js.map +1 -0
  516. package/vendor/ink/build/components/StderrContext.d.ts +15 -0
  517. package/vendor/ink/build/components/StderrContext.js +13 -0
  518. package/vendor/ink/build/components/StderrContext.js.map +1 -0
  519. package/vendor/ink/build/components/StdinContext.d.ts +22 -0
  520. package/vendor/ink/build/components/StdinContext.js +19 -0
  521. package/vendor/ink/build/components/StdinContext.js.map +1 -0
  522. package/vendor/ink/build/components/StdoutContext.d.ts +15 -0
  523. package/vendor/ink/build/components/StdoutContext.js +13 -0
  524. package/vendor/ink/build/components/StdoutContext.js.map +1 -0
  525. package/vendor/ink/build/components/Text.d.ts +55 -0
  526. package/vendor/ink/build/components/Text.js +50 -0
  527. package/vendor/ink/build/components/Text.js.map +1 -0
  528. package/vendor/ink/build/components/Transform.d.ts +16 -0
  529. package/vendor/ink/build/components/Transform.js +15 -0
  530. package/vendor/ink/build/components/Transform.js.map +1 -0
  531. package/vendor/ink/build/cursor-helpers.d.ts +38 -0
  532. package/vendor/ink/build/cursor-helpers.js +56 -0
  533. package/vendor/ink/build/cursor-helpers.js.map +1 -0
  534. package/vendor/ink/build/devtools-window-polyfill.d.ts +1 -0
  535. package/vendor/ink/build/devtools-window-polyfill.js +65 -0
  536. package/vendor/ink/build/devtools-window-polyfill.js.map +1 -0
  537. package/vendor/ink/build/devtools.d.ts +1 -0
  538. package/vendor/ink/build/devtools.js +11 -0
  539. package/vendor/ink/build/devtools.js.map +1 -0
  540. package/vendor/ink/build/dom.d.ts +56 -0
  541. package/vendor/ink/build/dom.js +124 -0
  542. package/vendor/ink/build/dom.js.map +1 -0
  543. package/vendor/ink/build/experimental/apply-style.js +140 -0
  544. package/vendor/ink/build/experimental/dom.js +123 -0
  545. package/vendor/ink/build/experimental/output.js +91 -0
  546. package/vendor/ink/build/experimental/reconciler.js +141 -0
  547. package/vendor/ink/build/experimental/renderer.js +81 -0
  548. package/vendor/ink/build/get-max-width.d.ts +3 -0
  549. package/vendor/ink/build/get-max-width.js +10 -0
  550. package/vendor/ink/build/get-max-width.js.map +1 -0
  551. package/vendor/ink/build/hooks/use-app.d.ts +5 -0
  552. package/vendor/ink/build/hooks/use-app.js +8 -0
  553. package/vendor/ink/build/hooks/use-app.js.map +1 -0
  554. package/vendor/ink/build/hooks/use-cursor.d.ts +12 -0
  555. package/vendor/ink/build/hooks/use-cursor.js +29 -0
  556. package/vendor/ink/build/hooks/use-cursor.js.map +1 -0
  557. package/vendor/ink/build/hooks/use-focus-manager.d.ts +28 -0
  558. package/vendor/ink/build/hooks/use-focus-manager.js +17 -0
  559. package/vendor/ink/build/hooks/use-focus-manager.js.map +1 -0
  560. package/vendor/ink/build/hooks/use-focus.d.ts +29 -0
  561. package/vendor/ink/build/hooks/use-focus.js +42 -0
  562. package/vendor/ink/build/hooks/use-focus.js.map +1 -0
  563. package/vendor/ink/build/hooks/use-input.d.ts +131 -0
  564. package/vendor/ink/build/hooks/use-input.js +124 -0
  565. package/vendor/ink/build/hooks/use-input.js.map +1 -0
  566. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.d.ts +5 -0
  567. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.js +11 -0
  568. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.js.map +1 -0
  569. package/vendor/ink/build/hooks/use-stderr.d.ts +5 -0
  570. package/vendor/ink/build/hooks/use-stderr.js +8 -0
  571. package/vendor/ink/build/hooks/use-stderr.js.map +1 -0
  572. package/vendor/ink/build/hooks/use-stdin.d.ts +5 -0
  573. package/vendor/ink/build/hooks/use-stdin.js +8 -0
  574. package/vendor/ink/build/hooks/use-stdin.js.map +1 -0
  575. package/vendor/ink/build/hooks/use-stdout.d.ts +5 -0
  576. package/vendor/ink/build/hooks/use-stdout.js +8 -0
  577. package/vendor/ink/build/hooks/use-stdout.js.map +1 -0
  578. package/vendor/ink/build/hooks/useInput.js +38 -0
  579. package/vendor/ink/build/index.d.ts +34 -0
  580. package/vendor/ink/build/index.js +20 -0
  581. package/vendor/ink/build/index.js.map +1 -0
  582. package/vendor/ink/build/ink.d.ts +90 -0
  583. package/vendor/ink/build/ink.js +654 -0
  584. package/vendor/ink/build/ink.js.map +1 -0
  585. package/vendor/ink/build/input-parser.d.ts +7 -0
  586. package/vendor/ink/build/input-parser.js +154 -0
  587. package/vendor/ink/build/input-parser.js.map +1 -0
  588. package/vendor/ink/build/instance.js +205 -0
  589. package/vendor/ink/build/instances.d.ts +3 -0
  590. package/vendor/ink/build/instances.js +8 -0
  591. package/vendor/ink/build/instances.js.map +1 -0
  592. package/vendor/ink/build/kitty-keyboard.d.ts +23 -0
  593. package/vendor/ink/build/kitty-keyboard.js +32 -0
  594. package/vendor/ink/build/kitty-keyboard.js.map +1 -0
  595. package/vendor/ink/build/layout.d.ts +7 -0
  596. package/vendor/ink/build/layout.js +33 -0
  597. package/vendor/ink/build/layout.js.map +1 -0
  598. package/vendor/ink/build/log-update.d.ts +19 -0
  599. package/vendor/ink/build/log-update.js +243 -0
  600. package/vendor/ink/build/log-update.js.map +1 -0
  601. package/vendor/ink/build/measure-element.d.ts +16 -0
  602. package/vendor/ink/build/measure-element.js +9 -0
  603. package/vendor/ink/build/measure-element.js.map +1 -0
  604. package/vendor/ink/build/measure-text.d.ts +6 -0
  605. package/vendor/ink/build/measure-text.js +21 -0
  606. package/vendor/ink/build/measure-text.js.map +1 -0
  607. package/vendor/ink/build/options.d.ts +52 -0
  608. package/vendor/ink/build/options.js +2 -0
  609. package/vendor/ink/build/options.js.map +1 -0
  610. package/vendor/ink/build/output.d.ts +35 -0
  611. package/vendor/ink/build/output.js +183 -0
  612. package/vendor/ink/build/output.js.map +1 -0
  613. package/vendor/ink/build/parse-keypress.d.ts +22 -0
  614. package/vendor/ink/build/parse-keypress.js +493 -0
  615. package/vendor/ink/build/parse-keypress.js.map +1 -0
  616. package/vendor/ink/build/reconciler.d.ts +4 -0
  617. package/vendor/ink/build/reconciler.js +274 -0
  618. package/vendor/ink/build/reconciler.js.map +1 -0
  619. package/vendor/ink/build/render-background.d.ts +4 -0
  620. package/vendor/ink/build/render-background.js +25 -0
  621. package/vendor/ink/build/render-background.js.map +1 -0
  622. package/vendor/ink/build/render-border.d.ts +4 -0
  623. package/vendor/ink/build/render-border.js +73 -0
  624. package/vendor/ink/build/render-border.js.map +1 -0
  625. package/vendor/ink/build/render-node-to-output.d.ts +14 -0
  626. package/vendor/ink/build/render-node-to-output.js +147 -0
  627. package/vendor/ink/build/render-node-to-output.js.map +1 -0
  628. package/vendor/ink/build/render-to-string.d.ts +38 -0
  629. package/vendor/ink/build/render-to-string.js +115 -0
  630. package/vendor/ink/build/render-to-string.js.map +1 -0
  631. package/vendor/ink/build/render.d.ts +121 -0
  632. package/vendor/ink/build/render.js +55 -0
  633. package/vendor/ink/build/render.js.map +1 -0
  634. package/vendor/ink/build/renderer.d.ts +8 -0
  635. package/vendor/ink/build/renderer.js +55 -0
  636. package/vendor/ink/build/renderer.js.map +1 -0
  637. package/vendor/ink/build/sanitize-ansi.d.ts +2 -0
  638. package/vendor/ink/build/sanitize-ansi.js +27 -0
  639. package/vendor/ink/build/sanitize-ansi.js.map +1 -0
  640. package/vendor/ink/build/screen-reader-update.d.ts +13 -0
  641. package/vendor/ink/build/screen-reader-update.js +38 -0
  642. package/vendor/ink/build/screen-reader-update.js.map +1 -0
  643. package/vendor/ink/build/squash-text-nodes.d.ts +3 -0
  644. package/vendor/ink/build/squash-text-nodes.js +36 -0
  645. package/vendor/ink/build/squash-text-nodes.js.map +1 -0
  646. package/vendor/ink/build/styles.d.ts +240 -0
  647. package/vendor/ink/build/styles.js +232 -0
  648. package/vendor/ink/build/styles.js.map +1 -0
  649. package/vendor/ink/build/utils.d.ts +2 -0
  650. package/vendor/ink/build/utils.js +4 -0
  651. package/vendor/ink/build/utils.js.map +1 -0
  652. package/vendor/ink/build/wrap-text.d.ts +3 -0
  653. package/vendor/ink/build/wrap-text.js +31 -0
  654. package/vendor/ink/build/wrap-text.js.map +1 -0
  655. package/vendor/ink/build/write-synchronized.d.ts +4 -0
  656. package/vendor/ink/build/write-synchronized.js +7 -0
  657. package/vendor/ink/build/write-synchronized.js.map +1 -0
  658. package/vendor/ink/license +10 -0
  659. package/vendor/ink/node_modules/@types/node/LICENSE +21 -0
  660. package/vendor/ink/node_modules/@types/node/README.md +15 -0
  661. package/vendor/ink/node_modules/@types/node/assert/strict.d.ts +105 -0
  662. package/vendor/ink/node_modules/@types/node/assert.d.ts +955 -0
  663. package/vendor/ink/node_modules/@types/node/async_hooks.d.ts +623 -0
  664. package/vendor/ink/node_modules/@types/node/buffer.buffer.d.ts +466 -0
  665. package/vendor/ink/node_modules/@types/node/buffer.d.ts +1810 -0
  666. package/vendor/ink/node_modules/@types/node/child_process.d.ts +1428 -0
  667. package/vendor/ink/node_modules/@types/node/cluster.d.ts +486 -0
  668. package/vendor/ink/node_modules/@types/node/compatibility/iterators.d.ts +21 -0
  669. package/vendor/ink/node_modules/@types/node/console.d.ts +151 -0
  670. package/vendor/ink/node_modules/@types/node/constants.d.ts +20 -0
  671. package/vendor/ink/node_modules/@types/node/crypto.d.ts +4065 -0
  672. package/vendor/ink/node_modules/@types/node/dgram.d.ts +564 -0
  673. package/vendor/ink/node_modules/@types/node/diagnostics_channel.d.ts +576 -0
  674. package/vendor/ink/node_modules/@types/node/dns/promises.d.ts +503 -0
  675. package/vendor/ink/node_modules/@types/node/dns.d.ts +922 -0
  676. package/vendor/ink/node_modules/@types/node/domain.d.ts +166 -0
  677. package/vendor/ink/node_modules/@types/node/events.d.ts +1054 -0
  678. package/vendor/ink/node_modules/@types/node/fs/promises.d.ts +1329 -0
  679. package/vendor/ink/node_modules/@types/node/fs.d.ts +4676 -0
  680. package/vendor/ink/node_modules/@types/node/globals.d.ts +150 -0
  681. package/vendor/ink/node_modules/@types/node/globals.typedarray.d.ts +101 -0
  682. package/vendor/ink/node_modules/@types/node/http.d.ts +2167 -0
  683. package/vendor/ink/node_modules/@types/node/http2.d.ts +2480 -0
  684. package/vendor/ink/node_modules/@types/node/https.d.ts +405 -0
  685. package/vendor/ink/node_modules/@types/node/index.d.ts +115 -0
  686. package/vendor/ink/node_modules/@types/node/inspector/promises.d.ts +41 -0
  687. package/vendor/ink/node_modules/@types/node/inspector.d.ts +224 -0
  688. package/vendor/ink/node_modules/@types/node/inspector.generated.d.ts +4226 -0
  689. package/vendor/ink/node_modules/@types/node/module.d.ts +819 -0
  690. package/vendor/ink/node_modules/@types/node/net.d.ts +933 -0
  691. package/vendor/ink/node_modules/@types/node/os.d.ts +507 -0
  692. package/vendor/ink/node_modules/@types/node/package.json +155 -0
  693. package/vendor/ink/node_modules/@types/node/path/posix.d.ts +8 -0
  694. package/vendor/ink/node_modules/@types/node/path/win32.d.ts +8 -0
  695. package/vendor/ink/node_modules/@types/node/path.d.ts +187 -0
  696. package/vendor/ink/node_modules/@types/node/perf_hooks.d.ts +643 -0
  697. package/vendor/ink/node_modules/@types/node/process.d.ts +2156 -0
  698. package/vendor/ink/node_modules/@types/node/punycode.d.ts +117 -0
  699. package/vendor/ink/node_modules/@types/node/querystring.d.ts +152 -0
  700. package/vendor/ink/node_modules/@types/node/quic.d.ts +910 -0
  701. package/vendor/ink/node_modules/@types/node/readline/promises.d.ts +161 -0
  702. package/vendor/ink/node_modules/@types/node/readline.d.ts +541 -0
  703. package/vendor/ink/node_modules/@types/node/repl.d.ts +415 -0
  704. package/vendor/ink/node_modules/@types/node/sea.d.ts +162 -0
  705. package/vendor/ink/node_modules/@types/node/sqlite.d.ts +955 -0
  706. package/vendor/ink/node_modules/@types/node/stream/consumers.d.ts +38 -0
  707. package/vendor/ink/node_modules/@types/node/stream/promises.d.ts +211 -0
  708. package/vendor/ink/node_modules/@types/node/stream/web.d.ts +296 -0
  709. package/vendor/ink/node_modules/@types/node/stream.d.ts +1760 -0
  710. package/vendor/ink/node_modules/@types/node/string_decoder.d.ts +67 -0
  711. package/vendor/ink/node_modules/@types/node/test/reporters.d.ts +96 -0
  712. package/vendor/ink/node_modules/@types/node/test.d.ts +2240 -0
  713. package/vendor/ink/node_modules/@types/node/timers/promises.d.ts +108 -0
  714. package/vendor/ink/node_modules/@types/node/timers.d.ts +159 -0
  715. package/vendor/ink/node_modules/@types/node/tls.d.ts +1198 -0
  716. package/vendor/ink/node_modules/@types/node/trace_events.d.ts +197 -0
  717. package/vendor/ink/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +462 -0
  718. package/vendor/ink/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +71 -0
  719. package/vendor/ink/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +36 -0
  720. package/vendor/ink/node_modules/@types/node/ts5.6/index.d.ts +117 -0
  721. package/vendor/ink/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +72 -0
  722. package/vendor/ink/node_modules/@types/node/ts5.7/index.d.ts +117 -0
  723. package/vendor/ink/node_modules/@types/node/tty.d.ts +250 -0
  724. package/vendor/ink/node_modules/@types/node/url.d.ts +519 -0
  725. package/vendor/ink/node_modules/@types/node/util/types.d.ts +558 -0
  726. package/vendor/ink/node_modules/@types/node/util.d.ts +1662 -0
  727. package/vendor/ink/node_modules/@types/node/v8.d.ts +983 -0
  728. package/vendor/ink/node_modules/@types/node/vm.d.ts +1208 -0
  729. package/vendor/ink/node_modules/@types/node/wasi.d.ts +202 -0
  730. package/vendor/ink/node_modules/@types/node/web-globals/abortcontroller.d.ts +59 -0
  731. package/vendor/ink/node_modules/@types/node/web-globals/blob.d.ts +23 -0
  732. package/vendor/ink/node_modules/@types/node/web-globals/console.d.ts +9 -0
  733. package/vendor/ink/node_modules/@types/node/web-globals/crypto.d.ts +39 -0
  734. package/vendor/ink/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
  735. package/vendor/ink/node_modules/@types/node/web-globals/encoding.d.ts +11 -0
  736. package/vendor/ink/node_modules/@types/node/web-globals/events.d.ts +106 -0
  737. package/vendor/ink/node_modules/@types/node/web-globals/fetch.d.ts +69 -0
  738. package/vendor/ink/node_modules/@types/node/web-globals/importmeta.d.ts +13 -0
  739. package/vendor/ink/node_modules/@types/node/web-globals/messaging.d.ts +23 -0
  740. package/vendor/ink/node_modules/@types/node/web-globals/navigator.d.ts +25 -0
  741. package/vendor/ink/node_modules/@types/node/web-globals/performance.d.ts +45 -0
  742. package/vendor/ink/node_modules/@types/node/web-globals/storage.d.ts +24 -0
  743. package/vendor/ink/node_modules/@types/node/web-globals/streams.d.ts +115 -0
  744. package/vendor/ink/node_modules/@types/node/web-globals/timers.d.ts +44 -0
  745. package/vendor/ink/node_modules/@types/node/web-globals/url.d.ts +24 -0
  746. package/vendor/ink/node_modules/@types/node/worker_threads.d.ts +717 -0
  747. package/vendor/ink/node_modules/@types/node/zlib.d.ts +618 -0
  748. package/vendor/ink/node_modules/node-pty/LICENSE +69 -0
  749. package/vendor/ink/node_modules/node-pty/README.md +164 -0
  750. package/vendor/ink/node_modules/node-pty/binding.gyp +150 -0
  751. package/vendor/ink/node_modules/node-pty/lib/conpty_console_list_agent.js +25 -0
  752. package/vendor/ink/node_modules/node-pty/lib/eventEmitter2.js +47 -0
  753. package/vendor/ink/node_modules/node-pty/lib/index.js +52 -0
  754. package/vendor/ink/node_modules/node-pty/lib/interfaces.js +7 -0
  755. package/vendor/ink/node_modules/node-pty/lib/shared/conout.js +11 -0
  756. package/vendor/ink/node_modules/node-pty/lib/terminal.js +190 -0
  757. package/vendor/ink/node_modules/node-pty/lib/types.js +7 -0
  758. package/vendor/ink/node_modules/node-pty/lib/unixTerminal.js +349 -0
  759. package/vendor/ink/node_modules/node-pty/lib/utils.js +39 -0
  760. package/vendor/ink/node_modules/node-pty/lib/windowsConoutConnection.js +125 -0
  761. package/vendor/ink/node_modules/node-pty/lib/windowsPtyAgent.js +287 -0
  762. package/vendor/ink/node_modules/node-pty/lib/windowsTerminal.js +201 -0
  763. package/vendor/ink/node_modules/node-pty/lib/worker/conoutSocketWorker.js +22 -0
  764. package/vendor/ink/node_modules/node-pty/package.json +65 -0
  765. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-arm64/pty.node +0 -0
  766. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-arm64/spawn-helper +0 -0
  767. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-x64/pty.node +0 -0
  768. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-x64/spawn-helper +0 -0
  769. package/vendor/ink/node_modules/node-pty/prebuilds/linux-arm64/pty.node +0 -0
  770. package/vendor/ink/node_modules/node-pty/prebuilds/linux-x64/pty.node +0 -0
  771. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty/OpenConsole.exe +0 -0
  772. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty/conpty.dll +0 -0
  773. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty.node +0 -0
  774. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty.pdb +0 -0
  775. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.node +0 -0
  776. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.pdb +0 -0
  777. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty/OpenConsole.exe +0 -0
  778. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty/conpty.dll +0 -0
  779. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty.node +0 -0
  780. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty.pdb +0 -0
  781. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.node +0 -0
  782. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.pdb +0 -0
  783. package/vendor/ink/node_modules/node-pty/scripts/post-install.js +76 -0
  784. package/vendor/ink/node_modules/node-pty/scripts/prebuild.js +34 -0
  785. package/vendor/ink/node_modules/node-pty/src/unix/pty.cc +875 -0
  786. package/vendor/ink/node_modules/node-pty/src/unix/spawn-helper.cc +23 -0
  787. package/vendor/ink/node_modules/node-pty/src/win/conpty.cc +582 -0
  788. package/vendor/ink/node_modules/node-pty/src/win/conpty.h +41 -0
  789. package/vendor/ink/node_modules/node-pty/src/win/conpty_console_list.cc +44 -0
  790. package/vendor/ink/node_modules/node-pty/src/win/path_util.cc +95 -0
  791. package/vendor/ink/node_modules/node-pty/src/win/path_util.h +26 -0
  792. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-arm64/OpenConsole.exe +0 -0
  793. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-arm64/conpty.dll +0 -0
  794. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/OpenConsole.exe +0 -0
  795. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/conpty.dll +0 -0
  796. package/vendor/ink/node_modules/node-pty/typings/node-pty.d.ts +215 -0
  797. package/vendor/ink/node_modules/undici-types/LICENSE +21 -0
  798. package/vendor/ink/node_modules/undici-types/README.md +6 -0
  799. package/vendor/ink/node_modules/undici-types/agent.d.ts +32 -0
  800. package/vendor/ink/node_modules/undici-types/api.d.ts +43 -0
  801. package/vendor/ink/node_modules/undici-types/balanced-pool.d.ts +30 -0
  802. package/vendor/ink/node_modules/undici-types/cache-interceptor.d.ts +173 -0
  803. package/vendor/ink/node_modules/undici-types/cache.d.ts +36 -0
  804. package/vendor/ink/node_modules/undici-types/client-stats.d.ts +15 -0
  805. package/vendor/ink/node_modules/undici-types/client.d.ts +108 -0
  806. package/vendor/ink/node_modules/undici-types/connector.d.ts +34 -0
  807. package/vendor/ink/node_modules/undici-types/content-type.d.ts +21 -0
  808. package/vendor/ink/node_modules/undici-types/cookies.d.ts +30 -0
  809. package/vendor/ink/node_modules/undici-types/diagnostics-channel.d.ts +74 -0
  810. package/vendor/ink/node_modules/undici-types/dispatcher.d.ts +276 -0
  811. package/vendor/ink/node_modules/undici-types/env-http-proxy-agent.d.ts +22 -0
  812. package/vendor/ink/node_modules/undici-types/errors.d.ts +161 -0
  813. package/vendor/ink/node_modules/undici-types/eventsource.d.ts +66 -0
  814. package/vendor/ink/node_modules/undici-types/fetch.d.ts +211 -0
  815. package/vendor/ink/node_modules/undici-types/formdata.d.ts +108 -0
  816. package/vendor/ink/node_modules/undici-types/global-dispatcher.d.ts +9 -0
  817. package/vendor/ink/node_modules/undici-types/global-origin.d.ts +7 -0
  818. package/vendor/ink/node_modules/undici-types/h2c-client.d.ts +73 -0
  819. package/vendor/ink/node_modules/undici-types/handlers.d.ts +15 -0
  820. package/vendor/ink/node_modules/undici-types/header.d.ts +160 -0
  821. package/vendor/ink/node_modules/undici-types/index.d.ts +88 -0
  822. package/vendor/ink/node_modules/undici-types/interceptors.d.ts +73 -0
  823. package/vendor/ink/node_modules/undici-types/mock-agent.d.ts +68 -0
  824. package/vendor/ink/node_modules/undici-types/mock-call-history.d.ts +111 -0
  825. package/vendor/ink/node_modules/undici-types/mock-client.d.ts +27 -0
  826. package/vendor/ink/node_modules/undici-types/mock-errors.d.ts +12 -0
  827. package/vendor/ink/node_modules/undici-types/mock-interceptor.d.ts +94 -0
  828. package/vendor/ink/node_modules/undici-types/mock-pool.d.ts +27 -0
  829. package/vendor/ink/node_modules/undici-types/package.json +55 -0
  830. package/vendor/ink/node_modules/undici-types/patch.d.ts +29 -0
  831. package/vendor/ink/node_modules/undici-types/pool-stats.d.ts +19 -0
  832. package/vendor/ink/node_modules/undici-types/pool.d.ts +41 -0
  833. package/vendor/ink/node_modules/undici-types/proxy-agent.d.ts +29 -0
  834. package/vendor/ink/node_modules/undici-types/readable.d.ts +68 -0
  835. package/vendor/ink/node_modules/undici-types/retry-agent.d.ts +8 -0
  836. package/vendor/ink/node_modules/undici-types/retry-handler.d.ts +125 -0
  837. package/vendor/ink/node_modules/undici-types/round-robin-pool.d.ts +41 -0
  838. package/vendor/ink/node_modules/undici-types/snapshot-agent.d.ts +109 -0
  839. package/vendor/ink/node_modules/undici-types/util.d.ts +18 -0
  840. package/vendor/ink/node_modules/undici-types/utility.d.ts +7 -0
  841. package/vendor/ink/node_modules/undici-types/webidl.d.ts +341 -0
  842. package/vendor/ink/node_modules/undici-types/websocket.d.ts +186 -0
  843. package/vendor/ink/package.json +201 -0
  844. package/vendor/ink/readme.md +2636 -0
  845. package/bin/swag-agent.js +0 -9
  846. package/dist/server/lib/pg-rate-limiter.d.ts +0 -21
  847. package/dist/server/lib/pg-rate-limiter.js +0 -86
@@ -2,258 +2,300 @@
2
2
  // Proxies commands to a dedicated Fly.io Kali machine via internal network.
3
3
  // Pattern: same as browser.ts — external execution environment, handler is a thin proxy.
4
4
  // Supports NDJSON streaming for exec actions via exec_stream on kali-box.
5
+
5
6
  const KALI_BOX_URL = process.env.KALI_BOX_URL || "http://kali-box.internal:8080";
6
7
  const KALI_AUTH_TOKEN = process.env.KALI_AUTH_TOKEN || "";
7
8
  const MAX_OUTPUT_CHARS = 500 * 1024; // 500KB safety cap — context_management handles limits
9
+
8
10
  /** Detect the current phase of a command based on output patterns */
9
11
  function detectPhase(stdout, stderr) {
10
- const combined = (stderr + "\n" + stdout).toLowerCase();
11
- if (combined.includes("compiling") || combined.includes("building"))
12
- return "compiling";
13
- if (combined.includes("scanning") || combined.includes("nmap"))
14
- return "scanning";
15
- if (combined.includes("downloading") || combined.includes("fetching"))
16
- return "downloading";
17
- if (combined.includes("installing") || combined.includes("apt"))
18
- return "installing";
19
- if (combined.includes("testing") || combined.includes("exploit"))
20
- return "testing";
21
- if (combined.includes("cracking") || combined.includes("hashcat") || combined.includes("john"))
22
- return "cracking";
23
- if (combined.includes("enumerating") || combined.includes("enum"))
24
- return "enumerating";
25
- return undefined;
12
+ const combined = (stderr + "\n" + stdout).toLowerCase();
13
+ if (combined.includes("compiling") || combined.includes("building")) return "compiling";
14
+ if (combined.includes("scanning") || combined.includes("nmap")) return "scanning";
15
+ if (combined.includes("downloading") || combined.includes("fetching")) return "downloading";
16
+ if (combined.includes("installing") || combined.includes("apt")) return "installing";
17
+ if (combined.includes("testing") || combined.includes("exploit")) return "testing";
18
+ if (combined.includes("cracking") || combined.includes("hashcat") || combined.includes("john")) return "cracking";
19
+ if (combined.includes("enumerating") || combined.includes("enum")) return "enumerating";
20
+ return undefined;
26
21
  }
27
- const VALID_ACTIONS = new Set([
28
- "exec", "exec_stream", "exec_bg", "bg_status", "bg_kill", "bg_list",
29
- "upload", "download", "info", "sessions", "reset",
30
- ]);
31
- const FORWARD_KEYS = [
32
- "command", "session_id", "timeout", "job_id",
33
- "path", "content", "encoding", "tail",
34
- ];
22
+ const VALID_ACTIONS = new Set(["exec", "exec_stream", "exec_bg", "bg_status", "bg_kill", "bg_list", "upload", "download", "info", "sessions", "reset"]);
23
+ const FORWARD_KEYS = ["command", "session_id", "timeout", "job_id", "path", "content", "encoding", "tail"];
35
24
  function truncate(text) {
36
- if (!text || text.length <= MAX_OUTPUT_CHARS)
37
- return text;
38
- return text.substring(0, MAX_OUTPUT_CHARS) + `\n...[truncated, ${text.length} total chars]`;
25
+ if (!text || text.length <= MAX_OUTPUT_CHARS) return text;
26
+ return text.substring(0, MAX_OUTPUT_CHARS) + `\n...[truncated, ${text.length} total chars]`;
39
27
  }
28
+
40
29
  /**
41
30
  * Read NDJSON lines from a ReadableStream (Node.js or web).
42
31
  * Yields parsed JSON objects, one per newline-delimited line.
43
32
  */
44
33
  async function* readNDJSON(body) {
45
- const reader = body.getReader();
46
- const decoder = new TextDecoder();
47
- let buffer = "";
48
- try {
49
- while (true) {
50
- const { done, value } = await reader.read();
51
- if (done)
52
- break;
53
- buffer += decoder.decode(value, { stream: true });
54
- // Process complete lines
55
- let newlineIdx;
56
- while ((newlineIdx = buffer.indexOf("\n")) !== -1) {
57
- const line = buffer.substring(0, newlineIdx).trim();
58
- buffer = buffer.substring(newlineIdx + 1);
59
- if (line) {
60
- try {
61
- yield JSON.parse(line);
62
- }
63
- catch {
64
- // Skip malformed JSON lines
65
- }
66
- }
67
- }
68
- }
69
- // Process any remaining buffer
70
- const remaining = buffer.trim();
71
- if (remaining) {
72
- try {
73
- yield JSON.parse(remaining);
74
- }
75
- catch {
76
- // Skip malformed final fragment
77
- }
34
+ const reader = body.getReader();
35
+ const decoder = new TextDecoder();
36
+ let buffer = "";
37
+ try {
38
+ while (true) {
39
+ const {
40
+ done,
41
+ value
42
+ } = await reader.read();
43
+ if (done) break;
44
+ buffer += decoder.decode(value, {
45
+ stream: true
46
+ });
47
+
48
+ // Process complete lines
49
+ let newlineIdx;
50
+ while ((newlineIdx = buffer.indexOf("\n")) !== -1) {
51
+ const line = buffer.substring(0, newlineIdx).trim();
52
+ buffer = buffer.substring(newlineIdx + 1);
53
+ if (line) {
54
+ try {
55
+ yield JSON.parse(line);
56
+ } catch {
57
+ // Skip malformed JSON lines
58
+ }
78
59
  }
60
+ }
79
61
  }
80
- finally {
81
- reader.releaseLock();
62
+
63
+ // Process any remaining buffer
64
+ const remaining = buffer.trim();
65
+ if (remaining) {
66
+ try {
67
+ yield JSON.parse(remaining);
68
+ } catch {
69
+ // Skip malformed final fragment
70
+ }
82
71
  }
72
+ } finally {
73
+ reader.releaseLock();
74
+ }
83
75
  }
84
76
  export async function handleKali(_sb, args, _storeId, onToolProgress, onStructuredProgress) {
85
- const action = args.action;
86
- if (!action) {
87
- return { success: false, error: "action is required" };
88
- }
89
- if (!VALID_ACTIONS.has(action)) {
90
- return { success: false, error: `Unknown action: ${action}. Valid: ${[...VALID_ACTIONS].join(", ")}` };
91
- }
92
- if ((action === "exec" || action === "exec_stream" || action === "exec_bg") && !args.command) {
93
- return { success: false, error: "command is required for exec/exec_bg" };
94
- }
95
- if (!KALI_AUTH_TOKEN) {
96
- return { success: false, error: "KALI_AUTH_TOKEN not configured on whale-agent" };
97
- }
98
- // Build payload only forward recognized keys
99
- const payload = { action };
100
- for (const key of FORWARD_KEYS) {
101
- if (args[key] !== undefined)
102
- payload[key] = args[key];
103
- }
104
- // Command timeout + HTTP buffer
105
- const cmdTimeout = Math.min(args.timeout || 30000, 600000);
106
- const httpTimeout = cmdTimeout + 10000; // 10s buffer over command timeout
107
- // ── Streaming path: exec actions use exec_stream on kali-box ──────
108
- if ((action === "exec" || action === "exec_stream") && onToolProgress) {
109
- payload.action = "exec_stream";
110
- payload.timeout = cmdTimeout;
111
- try {
112
- const controller = new AbortController();
113
- const timer = setTimeout(() => controller.abort(), httpTimeout);
114
- const resp = await fetch(KALI_BOX_URL, {
115
- method: "POST",
116
- headers: {
117
- "Content-Type": "application/json",
118
- Authorization: `Bearer ${KALI_AUTH_TOKEN}`,
119
- },
120
- body: JSON.stringify(payload),
121
- signal: controller.signal,
77
+ const action = args.action;
78
+ if (!action) {
79
+ return {
80
+ success: false,
81
+ error: "action is required"
82
+ };
83
+ }
84
+ if (!VALID_ACTIONS.has(action)) {
85
+ return {
86
+ success: false,
87
+ error: `Unknown action: ${action}. Valid: ${[...VALID_ACTIONS].join(", ")}`
88
+ };
89
+ }
90
+ if ((action === "exec" || action === "exec_stream" || action === "exec_bg") && !args.command) {
91
+ return {
92
+ success: false,
93
+ error: "command is required for exec/exec_bg"
94
+ };
95
+ }
96
+ if (!KALI_AUTH_TOKEN) {
97
+ return {
98
+ success: false,
99
+ error: "KALI_AUTH_TOKEN not configured on whale-agent"
100
+ };
101
+ }
102
+
103
+ // Build payload — only forward recognized keys
104
+ const payload = {
105
+ action
106
+ };
107
+ for (const key of FORWARD_KEYS) {
108
+ if (args[key] !== undefined) payload[key] = args[key];
109
+ }
110
+
111
+ // Command timeout + HTTP buffer
112
+ const cmdTimeout = Math.min(args.timeout || 30000, 600000);
113
+ const httpTimeout = cmdTimeout + 10000; // 10s buffer over command timeout
114
+
115
+ // ── Streaming path: exec actions use exec_stream on kali-box ──────
116
+ if ((action === "exec" || action === "exec_stream") && onToolProgress) {
117
+ payload.action = "exec_stream";
118
+ payload.timeout = cmdTimeout;
119
+ try {
120
+ const controller = new AbortController();
121
+ const timer = setTimeout(() => controller.abort(), httpTimeout);
122
+ const resp = await fetch(KALI_BOX_URL, {
123
+ method: "POST",
124
+ headers: {
125
+ "Content-Type": "application/json",
126
+ Authorization: `Bearer ${KALI_AUTH_TOKEN}`
127
+ },
128
+ body: JSON.stringify(payload),
129
+ signal: controller.signal
130
+ });
131
+ clearTimeout(timer);
132
+ if (!resp.ok) {
133
+ const text = await resp.text().catch(() => "");
134
+ return {
135
+ success: false,
136
+ error: `Kali box HTTP ${resp.status}: ${text.substring(0, 500)}`
137
+ };
138
+ }
139
+ if (!resp.body) {
140
+ return {
141
+ success: false,
142
+ error: "Kali box returned no response body for exec_stream"
143
+ };
144
+ }
145
+
146
+ // Read NDJSON stream — emit progress for each chunk, accumulate for final result
147
+ let stdout = "";
148
+ let stderr = "";
149
+ let stdoutLines = 0;
150
+ let stderrLines = 0;
151
+ let lastLine = "";
152
+ let doneEvent = null;
153
+ const streamStart = Date.now();
154
+ let lastStatusEmit = 0;
155
+ const STATUS_INTERVAL_MS = 3000;
156
+ for await (const line of readNDJSON(resp.body)) {
157
+ if (line.type === "stdout") {
158
+ const data = String(line.data || "");
159
+ stdout += data;
160
+ stdoutLines += data.split("\n").filter(l => l.trim()).length;
161
+ const trimmed = data.trim();
162
+ if (trimmed) lastLine = trimmed.split("\n").pop() || lastLine;
163
+ // Filter out the CWD marker line from progress events
164
+ if (!data.includes("__KALI_END_")) {
165
+ onToolProgress({
166
+ type: "stdout",
167
+ data
122
168
  });
123
- clearTimeout(timer);
124
- if (!resp.ok) {
125
- const text = await resp.text().catch(() => "");
126
- return { success: false, error: `Kali box HTTP ${resp.status}: ${text.substring(0, 500)}` };
127
- }
128
- if (!resp.body) {
129
- return { success: false, error: "Kali box returned no response body for exec_stream" };
130
- }
131
- // Read NDJSON stream — emit progress for each chunk, accumulate for final result
132
- let stdout = "";
133
- let stderr = "";
134
- let stdoutLines = 0;
135
- let stderrLines = 0;
136
- let lastLine = "";
137
- let doneEvent = null;
138
- const streamStart = Date.now();
139
- let lastStatusEmit = 0;
140
- const STATUS_INTERVAL_MS = 3000;
141
- for await (const line of readNDJSON(resp.body)) {
142
- if (line.type === "stdout") {
143
- const data = String(line.data || "");
144
- stdout += data;
145
- stdoutLines += data.split("\n").filter(l => l.trim()).length;
146
- const trimmed = data.trim();
147
- if (trimmed)
148
- lastLine = trimmed.split("\n").pop() || lastLine;
149
- // Filter out the CWD marker line from progress events
150
- if (!data.includes("__KALI_END_")) {
151
- onToolProgress({ type: "stdout", data });
152
- }
153
- }
154
- else if (line.type === "stderr") {
155
- const data = String(line.data || "");
156
- stderr += data;
157
- stderrLines += data.split("\n").filter(l => l.trim()).length;
158
- onToolProgress({ type: "stderr", data });
159
- }
160
- else if (line.type === "done") {
161
- doneEvent = line;
162
- }
163
- // Emit structured status every 3 seconds
164
- const now = Date.now();
165
- if (now - lastStatusEmit >= STATUS_INTERVAL_MS) {
166
- lastStatusEmit = now;
167
- const structuredProgress = {
168
- phase: detectPhase(stdout, stderr),
169
- elapsed_s: Math.round((now - streamStart) / 1000),
170
- stdout_lines: stdoutLines,
171
- stderr_lines: stderrLines,
172
- stdout_bytes: stdout.length,
173
- last_line: lastLine.length > 120 ? lastLine.slice(0, 117) + "..." : lastLine || undefined,
174
- };
175
- if (onStructuredProgress) {
176
- onStructuredProgress(structuredProgress);
177
- }
178
- // Also emit as a special "status" event through the standard progress callback
179
- // so the NDJSON streaming path can relay it to the CLI
180
- onToolProgress({ type: "status", progress: structuredProgress });
181
- }
182
- }
183
- // Strip CWD marker from accumulated stdout (same as non-streaming path)
184
- const markerIdx = stdout.lastIndexOf("__KALI_END_");
185
- if (markerIdx !== -1) {
186
- stdout = stdout.substring(0, markerIdx);
187
- }
188
- // Build final result (same shape as non-streaming exec)
189
- const exitCode = doneEvent ? doneEvent.exit_code ?? -1 : -1;
190
- const result = {
191
- success: exitCode === 0,
192
- stdout: truncate(stdout.replace(/\s+$/, "")),
193
- stderr: truncate(stderr.replace(/\s+$/, "")),
194
- exit_code: exitCode,
195
- killed: doneEvent?.killed ?? false,
196
- cwd: doneEvent?.cwd ?? "",
197
- duration_ms: doneEvent?.duration_ms ?? 0,
198
- };
199
- return { success: exitCode === 0, data: result };
169
+ }
170
+ } else if (line.type === "stderr") {
171
+ const data = String(line.data || "");
172
+ stderr += data;
173
+ stderrLines += data.split("\n").filter(l => l.trim()).length;
174
+ onToolProgress({
175
+ type: "stderr",
176
+ data
177
+ });
178
+ } else if (line.type === "done") {
179
+ doneEvent = line;
200
180
  }
201
- catch (err) {
202
- if (err instanceof Error && err.name === "AbortError") {
203
- return { success: false, error: `Kali box streaming request timed out after ${httpTimeout}ms` };
204
- }
205
- const msg = err instanceof Error ? err.message : String(err);
206
- if (msg.includes("ECONNREFUSED") || msg.includes("ENOTFOUND") || msg.includes("fetch failed")) {
207
- return {
208
- success: false,
209
- error: `Cannot reach kali-box at ${KALI_BOX_URL}. Ensure the kali-box Fly.io app is running (fly status -a kali-box).`,
210
- };
211
- }
212
- return { success: false, error: `Kali box streaming error: ${msg}` };
181
+
182
+ // Emit structured status every 3 seconds
183
+ const now = Date.now();
184
+ if (now - lastStatusEmit >= STATUS_INTERVAL_MS) {
185
+ lastStatusEmit = now;
186
+ const structuredProgress = {
187
+ phase: detectPhase(stdout, stderr),
188
+ elapsed_s: Math.round((now - streamStart) / 1000),
189
+ stdout_lines: stdoutLines,
190
+ stderr_lines: stderrLines,
191
+ stdout_bytes: stdout.length,
192
+ last_line: lastLine.length > 120 ? lastLine.slice(0, 117) + "..." : lastLine || undefined
193
+ };
194
+ if (onStructuredProgress) {
195
+ onStructuredProgress(structuredProgress);
196
+ }
197
+ // Also emit as a special "status" event through the standard progress callback
198
+ // so the NDJSON streaming path can relay it to the CLI
199
+ onToolProgress({
200
+ type: "status",
201
+ progress: structuredProgress
202
+ });
213
203
  }
204
+ }
205
+
206
+ // Strip CWD marker from accumulated stdout (same as non-streaming path)
207
+ const markerIdx = stdout.lastIndexOf("__KALI_END_");
208
+ if (markerIdx !== -1) {
209
+ stdout = stdout.substring(0, markerIdx);
210
+ }
211
+
212
+ // Build final result (same shape as non-streaming exec)
213
+ const exitCode = doneEvent ? doneEvent.exit_code ?? -1 : -1;
214
+ const result = {
215
+ success: exitCode === 0,
216
+ stdout: truncate(stdout.replace(/\s+$/, "")),
217
+ stderr: truncate(stderr.replace(/\s+$/, "")),
218
+ exit_code: exitCode,
219
+ killed: doneEvent?.killed ?? false,
220
+ cwd: doneEvent?.cwd ?? "",
221
+ duration_ms: doneEvent?.duration_ms ?? 0
222
+ };
223
+ return {
224
+ success: exitCode === 0,
225
+ data: result
226
+ };
227
+ } catch (err) {
228
+ if (err instanceof Error && err.name === "AbortError") {
229
+ return {
230
+ success: false,
231
+ error: `Kali box streaming request timed out after ${httpTimeout}ms`
232
+ };
233
+ }
234
+ const msg = err instanceof Error ? err.message : String(err);
235
+ if (msg.includes("ECONNREFUSED") || msg.includes("ENOTFOUND") || msg.includes("fetch failed")) {
236
+ return {
237
+ success: false,
238
+ error: `Cannot reach kali-box at ${KALI_BOX_URL}. Ensure the kali-box Fly.io app is running (fly status -a kali-box).`
239
+ };
240
+ }
241
+ return {
242
+ success: false,
243
+ error: `Kali box streaming error: ${msg}`
244
+ };
214
245
  }
215
- // ── Standard path: non-exec actions or no progress callback ───────
216
- if (action === "exec")
217
- payload.timeout = cmdTimeout;
218
- try {
219
- const controller = new AbortController();
220
- const timer = setTimeout(() => controller.abort(), httpTimeout);
221
- const resp = await fetch(KALI_BOX_URL, {
222
- method: "POST",
223
- headers: {
224
- "Content-Type": "application/json",
225
- Authorization: `Bearer ${KALI_AUTH_TOKEN}`,
226
- },
227
- body: JSON.stringify(payload),
228
- signal: controller.signal,
229
- });
230
- clearTimeout(timer);
231
- if (!resp.ok) {
232
- const text = await resp.text().catch(() => "");
233
- return { success: false, error: `Kali box HTTP ${resp.status}: ${text.substring(0, 500)}` };
234
- }
235
- const result = (await resp.json());
236
- // Truncate large text fields before returning to agent
237
- if (typeof result.stdout === "string")
238
- result.stdout = truncate(result.stdout);
239
- if (typeof result.stderr === "string")
240
- result.stderr = truncate(result.stderr);
241
- if (typeof result.content === "string")
242
- result.content = truncate(result.content);
243
- return { success: result.success !== false, data: result };
246
+ }
247
+
248
+ // ── Standard path: non-exec actions or no progress callback ───────
249
+ if (action === "exec") payload.timeout = cmdTimeout;
250
+ try {
251
+ const controller = new AbortController();
252
+ const timer = setTimeout(() => controller.abort(), httpTimeout);
253
+ const resp = await fetch(KALI_BOX_URL, {
254
+ method: "POST",
255
+ headers: {
256
+ "Content-Type": "application/json",
257
+ Authorization: `Bearer ${KALI_AUTH_TOKEN}`
258
+ },
259
+ body: JSON.stringify(payload),
260
+ signal: controller.signal
261
+ });
262
+ clearTimeout(timer);
263
+ if (!resp.ok) {
264
+ const text = await resp.text().catch(() => "");
265
+ return {
266
+ success: false,
267
+ error: `Kali box HTTP ${resp.status}: ${text.substring(0, 500)}`
268
+ };
244
269
  }
245
- catch (err) {
246
- if (err instanceof Error && err.name === "AbortError") {
247
- return { success: false, error: `Kali box request timed out after ${httpTimeout}ms` };
248
- }
249
- const msg = err instanceof Error ? err.message : String(err);
250
- // Friendly message for connection failures
251
- if (msg.includes("ECONNREFUSED") || msg.includes("ENOTFOUND") || msg.includes("fetch failed")) {
252
- return {
253
- success: false,
254
- error: `Cannot reach kali-box at ${KALI_BOX_URL}. Ensure the kali-box Fly.io app is running (fly status -a kali-box).`,
255
- };
256
- }
257
- return { success: false, error: `Kali box error: ${msg}` };
270
+ const result = await resp.json();
271
+
272
+ // Truncate large text fields before returning to agent
273
+ if (typeof result.stdout === "string") result.stdout = truncate(result.stdout);
274
+ if (typeof result.stderr === "string") result.stderr = truncate(result.stderr);
275
+ if (typeof result.content === "string") result.content = truncate(result.content);
276
+ return {
277
+ success: result.success !== false,
278
+ data: result
279
+ };
280
+ } catch (err) {
281
+ if (err instanceof Error && err.name === "AbortError") {
282
+ return {
283
+ success: false,
284
+ error: `Kali box request timed out after ${httpTimeout}ms`
285
+ };
286
+ }
287
+ const msg = err instanceof Error ? err.message : String(err);
288
+ // Friendly message for connection failures
289
+ if (msg.includes("ECONNREFUSED") || msg.includes("ENOTFOUND") || msg.includes("fetch failed")) {
290
+ return {
291
+ success: false,
292
+ error: `Cannot reach kali-box at ${KALI_BOX_URL}. Ensure the kali-box Fly.io app is running (fly status -a kali-box).`
293
+ };
258
294
  }
295
+ return {
296
+ success: false,
297
+ error: `Kali box error: ${msg}`
298
+ };
299
+ }
259
300
  }
301
+ //# sourceMappingURL=kali.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kali.js","names":["KALI_BOX_URL","process","env","KALI_AUTH_TOKEN","MAX_OUTPUT_CHARS","detectPhase","stdout","stderr","combined","toLowerCase","includes","undefined","VALID_ACTIONS","Set","FORWARD_KEYS","truncate","text","length","substring","readNDJSON","body","reader","getReader","decoder","TextDecoder","buffer","done","value","read","decode","stream","newlineIdx","indexOf","line","trim","JSON","parse","remaining","releaseLock","handleKali","_sb","args","_storeId","onToolProgress","onStructuredProgress","action","success","error","has","join","command","payload","key","cmdTimeout","Math","min","timeout","httpTimeout","controller","AbortController","timer","setTimeout","abort","resp","fetch","method","headers","Authorization","stringify","signal","clearTimeout","ok","catch","status","stdoutLines","stderrLines","lastLine","doneEvent","streamStart","Date","now","lastStatusEmit","STATUS_INTERVAL_MS","type","data","String","split","filter","l","trimmed","pop","structuredProgress","phase","elapsed_s","round","stdout_lines","stderr_lines","stdout_bytes","last_line","slice","progress","markerIdx","lastIndexOf","exitCode","exit_code","result","replace","killed","cwd","duration_ms","err","Error","name","msg","message","json","content"],"sources":["../../../src/server/handlers/kali.ts"],"sourcesContent":["// server/handlers/kali.ts — Kali Linux remote execution\n// Proxies commands to a dedicated Fly.io Kali machine via internal network.\n// Pattern: same as browser.ts — external execution environment, handler is a thin proxy.\n// Supports NDJSON streaming for exec actions via exec_stream on kali-box.\n\nimport type { SupabaseClient } from \"@supabase/supabase-js\";\n\nconst KALI_BOX_URL = process.env.KALI_BOX_URL || \"http://kali-box.internal:8080\";\nconst KALI_AUTH_TOKEN = process.env.KALI_AUTH_TOKEN || \"\";\nconst MAX_OUTPUT_CHARS = 500 * 1024; // 500KB safety cap — context_management handles limits\n\nexport interface KaliProgressEvent {\n type: \"stdout\" | \"stderr\";\n data: string;\n}\n\nexport interface KaliStructuredProgress {\n phase?: string;\n elapsed_s: number;\n stdout_lines: number;\n stderr_lines: number;\n stdout_bytes: number;\n last_line?: string;\n}\n\n/** Detect the current phase of a command based on output patterns */\nfunction detectPhase(stdout: string, stderr: string): string | undefined {\n const combined = (stderr + \"\\n\" + stdout).toLowerCase();\n if (combined.includes(\"compiling\") || combined.includes(\"building\")) return \"compiling\";\n if (combined.includes(\"scanning\") || combined.includes(\"nmap\")) return \"scanning\";\n if (combined.includes(\"downloading\") || combined.includes(\"fetching\")) return \"downloading\";\n if (combined.includes(\"installing\") || combined.includes(\"apt\")) return \"installing\";\n if (combined.includes(\"testing\") || combined.includes(\"exploit\")) return \"testing\";\n if (combined.includes(\"cracking\") || combined.includes(\"hashcat\") || combined.includes(\"john\")) return \"cracking\";\n if (combined.includes(\"enumerating\") || combined.includes(\"enum\")) return \"enumerating\";\n return undefined;\n}\n\nconst VALID_ACTIONS = new Set([\n \"exec\", \"exec_stream\", \"exec_bg\", \"bg_status\", \"bg_kill\", \"bg_list\",\n \"upload\", \"download\", \"info\", \"sessions\", \"reset\",\n]);\n\nconst FORWARD_KEYS = [\n \"command\", \"session_id\", \"timeout\", \"job_id\",\n \"path\", \"content\", \"encoding\", \"tail\",\n];\n\nfunction truncate(text: string): string {\n if (!text || text.length <= MAX_OUTPUT_CHARS) return text;\n return text.substring(0, MAX_OUTPUT_CHARS) + `\\n...[truncated, ${text.length} total chars]`;\n}\n\n/**\n * Read NDJSON lines from a ReadableStream (Node.js or web).\n * Yields parsed JSON objects, one per newline-delimited line.\n */\nasync function* readNDJSON(body: ReadableStream<Uint8Array>): AsyncGenerator<Record<string, unknown>> {\n const reader = body.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer += decoder.decode(value, { stream: true });\n\n // Process complete lines\n let newlineIdx: number;\n while ((newlineIdx = buffer.indexOf(\"\\n\")) !== -1) {\n const line = buffer.substring(0, newlineIdx).trim();\n buffer = buffer.substring(newlineIdx + 1);\n if (line) {\n try {\n yield JSON.parse(line);\n } catch {\n // Skip malformed JSON lines\n }\n }\n }\n }\n\n // Process any remaining buffer\n const remaining = buffer.trim();\n if (remaining) {\n try {\n yield JSON.parse(remaining);\n } catch {\n // Skip malformed final fragment\n }\n }\n } finally {\n reader.releaseLock();\n }\n}\n\nexport async function handleKali(\n _sb: SupabaseClient,\n args: Record<string, unknown>,\n _storeId?: string,\n onToolProgress?: (progress: KaliProgressEvent) => void,\n onStructuredProgress?: (progress: KaliStructuredProgress) => void,\n): Promise<{ success: boolean; data?: unknown; error?: string }> {\n const action = args.action as string;\n\n if (!action) {\n return { success: false, error: \"action is required\" };\n }\n if (!VALID_ACTIONS.has(action)) {\n return { success: false, error: `Unknown action: ${action}. Valid: ${[...VALID_ACTIONS].join(\", \")}` };\n }\n if ((action === \"exec\" || action === \"exec_stream\" || action === \"exec_bg\") && !args.command) {\n return { success: false, error: \"command is required for exec/exec_bg\" };\n }\n if (!KALI_AUTH_TOKEN) {\n return { success: false, error: \"KALI_AUTH_TOKEN not configured on whale-agent\" };\n }\n\n // Build payload — only forward recognized keys\n const payload: Record<string, unknown> = { action };\n for (const key of FORWARD_KEYS) {\n if (args[key] !== undefined) payload[key] = args[key];\n }\n\n // Command timeout + HTTP buffer\n const cmdTimeout = Math.min((args.timeout as number) || 30000, 600000);\n const httpTimeout = cmdTimeout + 10000; // 10s buffer over command timeout\n\n // ── Streaming path: exec actions use exec_stream on kali-box ──────\n if ((action === \"exec\" || action === \"exec_stream\") && onToolProgress) {\n payload.action = \"exec_stream\";\n payload.timeout = cmdTimeout;\n\n try {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), httpTimeout);\n\n const resp = await fetch(KALI_BOX_URL, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${KALI_AUTH_TOKEN}`,\n },\n body: JSON.stringify(payload),\n signal: controller.signal,\n });\n clearTimeout(timer);\n\n if (!resp.ok) {\n const text = await resp.text().catch(() => \"\");\n return { success: false, error: `Kali box HTTP ${resp.status}: ${text.substring(0, 500)}` };\n }\n\n if (!resp.body) {\n return { success: false, error: \"Kali box returned no response body for exec_stream\" };\n }\n\n // Read NDJSON stream — emit progress for each chunk, accumulate for final result\n let stdout = \"\";\n let stderr = \"\";\n let stdoutLines = 0;\n let stderrLines = 0;\n let lastLine = \"\";\n let doneEvent: Record<string, unknown> | null = null;\n const streamStart = Date.now();\n let lastStatusEmit = 0;\n const STATUS_INTERVAL_MS = 3000;\n\n for await (const line of readNDJSON(resp.body)) {\n if (line.type === \"stdout\") {\n const data = String(line.data || \"\");\n stdout += data;\n stdoutLines += data.split(\"\\n\").filter(l => l.trim()).length;\n const trimmed = data.trim();\n if (trimmed) lastLine = trimmed.split(\"\\n\").pop() || lastLine;\n // Filter out the CWD marker line from progress events\n if (!data.includes(\"__KALI_END_\")) {\n onToolProgress({ type: \"stdout\", data });\n }\n } else if (line.type === \"stderr\") {\n const data = String(line.data || \"\");\n stderr += data;\n stderrLines += data.split(\"\\n\").filter(l => l.trim()).length;\n onToolProgress({ type: \"stderr\", data });\n } else if (line.type === \"done\") {\n doneEvent = line;\n }\n\n // Emit structured status every 3 seconds\n const now = Date.now();\n if (now - lastStatusEmit >= STATUS_INTERVAL_MS) {\n lastStatusEmit = now;\n const structuredProgress: KaliStructuredProgress = {\n phase: detectPhase(stdout, stderr),\n elapsed_s: Math.round((now - streamStart) / 1000),\n stdout_lines: stdoutLines,\n stderr_lines: stderrLines,\n stdout_bytes: stdout.length,\n last_line: lastLine.length > 120 ? lastLine.slice(0, 117) + \"...\" : lastLine || undefined,\n };\n if (onStructuredProgress) {\n onStructuredProgress(structuredProgress);\n }\n // Also emit as a special \"status\" event through the standard progress callback\n // so the NDJSON streaming path can relay it to the CLI\n onToolProgress({ type: \"status\" as any, progress: structuredProgress } as any);\n }\n }\n\n // Strip CWD marker from accumulated stdout (same as non-streaming path)\n const markerIdx = stdout.lastIndexOf(\"__KALI_END_\");\n if (markerIdx !== -1) {\n stdout = stdout.substring(0, markerIdx);\n }\n\n // Build final result (same shape as non-streaming exec)\n const exitCode = doneEvent ? (doneEvent.exit_code as number) ?? -1 : -1;\n const result: Record<string, unknown> = {\n success: exitCode === 0,\n stdout: truncate(stdout.replace(/\\s+$/, \"\")),\n stderr: truncate(stderr.replace(/\\s+$/, \"\")),\n exit_code: exitCode,\n killed: doneEvent?.killed ?? false,\n cwd: doneEvent?.cwd ?? \"\",\n duration_ms: doneEvent?.duration_ms ?? 0,\n };\n\n return { success: exitCode === 0, data: result };\n } catch (err: unknown) {\n if (err instanceof Error && err.name === \"AbortError\") {\n return { success: false, error: `Kali box streaming request timed out after ${httpTimeout}ms` };\n }\n const msg = err instanceof Error ? err.message : String(err);\n if (msg.includes(\"ECONNREFUSED\") || msg.includes(\"ENOTFOUND\") || msg.includes(\"fetch failed\")) {\n return {\n success: false,\n error: `Cannot reach kali-box at ${KALI_BOX_URL}. Ensure the kali-box Fly.io app is running (fly status -a kali-box).`,\n };\n }\n return { success: false, error: `Kali box streaming error: ${msg}` };\n }\n }\n\n // ── Standard path: non-exec actions or no progress callback ───────\n if (action === \"exec\") payload.timeout = cmdTimeout;\n\n try {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), httpTimeout);\n\n const resp = await fetch(KALI_BOX_URL, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${KALI_AUTH_TOKEN}`,\n },\n body: JSON.stringify(payload),\n signal: controller.signal,\n });\n clearTimeout(timer);\n\n if (!resp.ok) {\n const text = await resp.text().catch(() => \"\");\n return { success: false, error: `Kali box HTTP ${resp.status}: ${text.substring(0, 500)}` };\n }\n\n const result = (await resp.json()) as Record<string, unknown>;\n\n // Truncate large text fields before returning to agent\n if (typeof result.stdout === \"string\") result.stdout = truncate(result.stdout);\n if (typeof result.stderr === \"string\") result.stderr = truncate(result.stderr);\n if (typeof result.content === \"string\") result.content = truncate(result.content);\n\n return { success: result.success !== false, data: result };\n } catch (err: unknown) {\n if (err instanceof Error && err.name === \"AbortError\") {\n return { success: false, error: `Kali box request timed out after ${httpTimeout}ms` };\n }\n const msg = err instanceof Error ? err.message : String(err);\n // Friendly message for connection failures\n if (msg.includes(\"ECONNREFUSED\") || msg.includes(\"ENOTFOUND\") || msg.includes(\"fetch failed\")) {\n return {\n success: false,\n error: `Cannot reach kali-box at ${KALI_BOX_URL}. Ensure the kali-box Fly.io app is running (fly status -a kali-box).`,\n };\n }\n return { success: false, error: `Kali box error: ${msg}` };\n }\n}\n"],"mappings":"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","ignoreList":[]}