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
@@ -2,38 +2,47 @@
2
2
  //
3
3
  // Used by workflow steps (webhook_out, custom), email attachments, and any other
4
4
  // user-controlled URL fetching. Centralizes all IP blocking logic in one place.
5
+
5
6
  import { resolve as dnsResolve } from "node:dns/promises";
7
+
6
8
  // Private/internal IPv4 ranges
7
- const PRIVATE_IPV4_RANGES = [
8
- /^127\./, // Loopback
9
- /^10\./, // RFC 1918
10
- /^172\.(1[6-9]|2\d|3[01])\./, // RFC 1918
11
- /^192\.168\./, // RFC 1918
12
- /^169\.254\./, // Link-local / cloud metadata
13
- /^0\./, // "This" network
14
- /^100\.(6[4-9]|[7-9]\d|1[0-1]\d|12[0-7])\./, // CGNAT (RFC 6598)
15
- /^198\.18\./, // Benchmarking (RFC 2544)
9
+ const PRIVATE_IPV4_RANGES = [/^127\./,
10
+ // Loopback
11
+ /^10\./,
12
+ // RFC 1918
13
+ /^172\.(1[6-9]|2\d|3[01])\./,
14
+ // RFC 1918
15
+ /^192\.168\./,
16
+ // RFC 1918
17
+ /^169\.254\./,
18
+ // Link-local / cloud metadata
19
+ /^0\./,
20
+ // "This" network
21
+ /^100\.(6[4-9]|[7-9]\d|1[0-1]\d|12[0-7])\./,
22
+ // CGNAT (RFC 6598)
23
+ /^198\.18\./ // Benchmarking (RFC 2544)
16
24
  ];
25
+
17
26
  // IPv6-mapped IPv4 patterns
18
27
  // Dotted decimal form: ::ffff:127.0.0.1
19
28
  const IPV6_MAPPED_V4 = /^::ffff:(\d+\.\d+\.\d+\.\d+)$/i;
20
29
  // Hex form (URL parser normalizes to this): ::ffff:7f00:1
21
30
  const IPV6_MAPPED_V4_HEX = /^::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/i;
31
+
22
32
  // Private/internal IPv6 ranges
23
- const PRIVATE_IPV6_PATTERNS = [
24
- /^::1$/, // Loopback
25
- /^fe80:/i, // Link-local
26
- /^fc00:/i, // Unique local
27
- /^fd/i, // Unique local
28
- /^::$/, // Unspecified address
33
+ const PRIVATE_IPV6_PATTERNS = [/^::1$/,
34
+ // Loopback
35
+ /^fe80:/i,
36
+ // Link-local
37
+ /^fc00:/i,
38
+ // Unique local
39
+ /^fd/i,
40
+ // Unique local
41
+ /^::$/ // Unspecified address
29
42
  ];
30
- const BLOCKED_HOSTS = new Set([
31
- "localhost",
32
- "0.0.0.0",
33
- "metadata.google.internal",
34
- "metadata.internal",
35
- ]);
43
+ const BLOCKED_HOSTS = new Set(["localhost", "0.0.0.0", "metadata.google.internal", "metadata.internal"]);
36
44
  const BLOCKED_TLDS = [".internal", ".local", ".localhost"];
45
+
37
46
  /**
38
47
  * P0 FIX: Normalize alternative IP encodings to standard dotted-decimal.
39
48
  * Catches bypass attempts via decimal, hex, octal, and mixed representations:
@@ -46,107 +55,109 @@ const BLOCKED_TLDS = [".internal", ".local", ".localhost"];
46
55
  * Returns the normalized dotted-decimal string, or null if not a recognizable IP.
47
56
  */
48
57
  function normalizeIp(input) {
49
- const cleaned = input.trim();
50
- // Case 1: Pure decimal integer (e.g. 2130706433 = 127.0.0.1)
51
- if (/^\d{1,10}$/.test(cleaned) && !cleaned.startsWith("0")) {
52
- const num = parseInt(cleaned, 10);
53
- if (num >= 0 && num <= 0xffffffff) {
54
- return `${(num >>> 24) & 0xff}.${(num >>> 16) & 0xff}.${(num >>> 8) & 0xff}.${num & 0xff}`;
55
- }
56
- }
57
- // Case 2: Pure hex integer (e.g. 0x7f000001)
58
- if (/^0x[0-9a-f]+$/i.test(cleaned)) {
59
- const num = parseInt(cleaned, 16);
60
- if (num >= 0 && num <= 0xffffffff) {
61
- return `${(num >>> 24) & 0xff}.${(num >>> 16) & 0xff}.${(num >>> 8) & 0xff}.${num & 0xff}`;
62
- }
63
- }
64
- // Case 3: Dotted form with octal/hex/decimal octets (e.g. 0177.0.0.01, 0x7f.0.0.1)
65
- const parts = cleaned.split(".");
66
- if (parts.length === 4) {
67
- const octets = [];
68
- for (const part of parts) {
69
- let val;
70
- if (/^0x[0-9a-f]+$/i.test(part)) {
71
- // Hex octet
72
- val = parseInt(part, 16);
73
- }
74
- else if (/^0\d+$/.test(part)) {
75
- // Octal octet (leading zero)
76
- val = parseInt(part, 8);
77
- }
78
- else if (/^\d+$/.test(part)) {
79
- // Decimal octet
80
- val = parseInt(part, 10);
81
- }
82
- else {
83
- return null; // Not a valid octet
84
- }
85
- if (isNaN(val) || val < 0 || val > 255)
86
- return null;
87
- octets.push(val);
88
- }
89
- return octets.join(".");
90
- }
91
- return null;
58
+ const cleaned = input.trim();
59
+
60
+ // Case 1: Pure decimal integer (e.g. 2130706433 = 127.0.0.1)
61
+ if (/^\d{1,10}$/.test(cleaned) && !cleaned.startsWith("0")) {
62
+ const num = parseInt(cleaned, 10);
63
+ if (num >= 0 && num <= 0xffffffff) {
64
+ return `${num >>> 24 & 0xff}.${num >>> 16 & 0xff}.${num >>> 8 & 0xff}.${num & 0xff}`;
65
+ }
66
+ }
67
+
68
+ // Case 2: Pure hex integer (e.g. 0x7f000001)
69
+ if (/^0x[0-9a-f]+$/i.test(cleaned)) {
70
+ const num = parseInt(cleaned, 16);
71
+ if (num >= 0 && num <= 0xffffffff) {
72
+ return `${num >>> 24 & 0xff}.${num >>> 16 & 0xff}.${num >>> 8 & 0xff}.${num & 0xff}`;
73
+ }
74
+ }
75
+
76
+ // Case 3: Dotted form with octal/hex/decimal octets (e.g. 0177.0.0.01, 0x7f.0.0.1)
77
+ const parts = cleaned.split(".");
78
+ if (parts.length === 4) {
79
+ const octets = [];
80
+ for (const part of parts) {
81
+ let val;
82
+ if (/^0x[0-9a-f]+$/i.test(part)) {
83
+ // Hex octet
84
+ val = parseInt(part, 16);
85
+ } else if (/^0\d+$/.test(part)) {
86
+ // Octal octet (leading zero)
87
+ val = parseInt(part, 8);
88
+ } else if (/^\d+$/.test(part)) {
89
+ // Decimal octet
90
+ val = parseInt(part, 10);
91
+ } else {
92
+ return null; // Not a valid octet
93
+ }
94
+ if (isNaN(val) || val < 0 || val > 255) return null;
95
+ octets.push(val);
96
+ }
97
+ return octets.join(".");
98
+ }
99
+ return null;
92
100
  }
101
+
93
102
  /**
94
103
  * Check if an IP address is in a private/internal range.
95
104
  * P0 FIX: Now normalizes alternative IP encodings before checking.
96
105
  */
97
106
  function isPrivateIp(ip) {
98
- // Strip brackets from IPv6
99
- const cleaned = ip.replace(/^\[|\]$/g, "");
100
- // Check IPv6-mapped IPv4 — dotted decimal form (::ffff:x.x.x.x)
101
- const mapped = cleaned.match(IPV6_MAPPED_V4);
102
- if (mapped) {
103
- const v4 = mapped[1];
104
- const normalized = normalizeIp(v4) || v4;
105
- return PRIVATE_IPV4_RANGES.some((r) => r.test(normalized));
106
- }
107
- // Check IPv6-mapped IPv4 — hex form (::ffff:7f00:1, as normalized by URL parser)
108
- const mappedHex = cleaned.match(IPV6_MAPPED_V4_HEX);
109
- if (mappedHex) {
110
- const hi = parseInt(mappedHex[1], 16);
111
- const lo = parseInt(mappedHex[2], 16);
112
- const v4 = `${(hi >> 8) & 0xff}.${hi & 0xff}.${(lo >> 8) & 0xff}.${lo & 0xff}`;
113
- return PRIVATE_IPV4_RANGES.some((r) => r.test(v4));
114
- }
115
- // P0 FIX: Normalize alternative encodings (decimal, hex, octal, mixed)
116
- const normalized = normalizeIp(cleaned);
117
- if (normalized) {
118
- return PRIVATE_IPV4_RANGES.some((r) => r.test(normalized));
119
- }
120
- // Check plain IPv4 (standard dotted decimal — no leading zeros)
121
- if (/^\d+\.\d+\.\d+\.\d+$/.test(cleaned)) {
122
- return PRIVATE_IPV4_RANGES.some((r) => r.test(cleaned));
123
- }
124
- // Check IPv6
125
- return PRIVATE_IPV6_PATTERNS.some((r) => r.test(cleaned));
107
+ // Strip brackets from IPv6
108
+ const cleaned = ip.replace(/^\[|\]$/g, "");
109
+
110
+ // Check IPv6-mapped IPv4 — dotted decimal form (::ffff:x.x.x.x)
111
+ const mapped = cleaned.match(IPV6_MAPPED_V4);
112
+ if (mapped) {
113
+ const v4 = mapped[1];
114
+ const normalized = normalizeIp(v4) || v4;
115
+ return PRIVATE_IPV4_RANGES.some(r => r.test(normalized));
116
+ }
117
+
118
+ // Check IPv6-mapped IPv4 — hex form (::ffff:7f00:1, as normalized by URL parser)
119
+ const mappedHex = cleaned.match(IPV6_MAPPED_V4_HEX);
120
+ if (mappedHex) {
121
+ const hi = parseInt(mappedHex[1], 16);
122
+ const lo = parseInt(mappedHex[2], 16);
123
+ const v4 = `${hi >> 8 & 0xff}.${hi & 0xff}.${lo >> 8 & 0xff}.${lo & 0xff}`;
124
+ return PRIVATE_IPV4_RANGES.some(r => r.test(v4));
125
+ }
126
+
127
+ // P0 FIX: Normalize alternative encodings (decimal, hex, octal, mixed)
128
+ const normalized = normalizeIp(cleaned);
129
+ if (normalized) {
130
+ return PRIVATE_IPV4_RANGES.some(r => r.test(normalized));
131
+ }
132
+
133
+ // Check plain IPv4 (standard dotted decimal — no leading zeros)
134
+ if (/^\d+\.\d+\.\d+\.\d+$/.test(cleaned)) {
135
+ return PRIVATE_IPV4_RANGES.some(r => r.test(cleaned));
136
+ }
137
+
138
+ // Check IPv6
139
+ return PRIVATE_IPV6_PATTERNS.some(r => r.test(cleaned));
126
140
  }
141
+
127
142
  /**
128
143
  * Check if a hostname looks like a direct IP address (v4, v6, or alternative encoding).
129
144
  * Used to decide whether DNS failure should block or allow.
130
145
  */
131
146
  function looksLikeIp(host) {
132
- const cleaned = host.replace(/^\[|\]$/g, "");
133
- // Standard dotted decimal
134
- if (/^\d+\.\d+\.\d+\.\d+$/.test(cleaned))
135
- return true;
136
- // Pure decimal integer
137
- if (/^\d{1,10}$/.test(cleaned))
138
- return true;
139
- // Hex integer
140
- if (/^0x[0-9a-f]+$/i.test(cleaned))
141
- return true;
142
- // Dotted with octal/hex octets
143
- if (/^[\d.x]+$/i.test(cleaned) && cleaned.split(".").length === 4)
144
- return true;
145
- // IPv6 (contains colons)
146
- if (cleaned.includes(":"))
147
- return true;
148
- return false;
147
+ const cleaned = host.replace(/^\[|\]$/g, "");
148
+ // Standard dotted decimal
149
+ if (/^\d+\.\d+\.\d+\.\d+$/.test(cleaned)) return true;
150
+ // Pure decimal integer
151
+ if (/^\d{1,10}$/.test(cleaned)) return true;
152
+ // Hex integer
153
+ if (/^0x[0-9a-f]+$/i.test(cleaned)) return true;
154
+ // Dotted with octal/hex octets
155
+ if (/^[\d.x]+$/i.test(cleaned) && cleaned.split(".").length === 4) return true;
156
+ // IPv6 (contains colons)
157
+ if (cleaned.includes(":")) return true;
158
+ return false;
149
159
  }
160
+
150
161
  /**
151
162
  * Validate a URL is safe to fetch (not targeting internal/private addresses).
152
163
  * Does basic hostname checks first, then resolves DNS to catch rebinding attacks.
@@ -154,87 +165,85 @@ function looksLikeIp(host) {
154
165
  * @returns null if safe, or a string error message if blocked.
155
166
  */
156
167
  export async function validateUrl(urlStr) {
157
- let u;
158
- try {
159
- u = new URL(urlStr);
160
- }
161
- catch {
162
- return "Malformed URL";
163
- }
164
- // Block non-HTTP(S) schemes
165
- if (u.protocol !== "http:" && u.protocol !== "https:") {
166
- return `Blocked scheme: ${u.protocol}`;
167
- }
168
- const host = u.hostname.toLowerCase();
169
- // Block known internal hostnames
170
- if (BLOCKED_HOSTS.has(host)) {
171
- return "URL targets a blocked internal host";
172
- }
173
- // Block internal TLDs
174
- for (const tld of BLOCKED_TLDS) {
175
- if (host.endsWith(tld)) {
176
- return "URL targets a blocked internal domain";
177
- }
178
- }
179
- // Block .fly.dev (our own infrastructure)
180
- if (host.endsWith(".fly.dev")) {
181
- return "URL targets internal infrastructure";
182
- }
183
- // Block bare IPs that resolve to private ranges (including alternative encodings)
184
- if (isPrivateIp(host)) {
185
- return "URL targets a private/internal IP address";
186
- }
187
- // DNS resolve-then-check: catch DNS rebinding attacks
188
- try {
189
- const addresses = await dnsResolve(host);
190
- for (const addr of addresses) {
191
- if (isPrivateIp(addr)) {
192
- return `DNS resolved to private address: ${addr}`;
193
- }
194
- }
195
- }
196
- catch {
197
- // P0 FIX: DNS resolution failed only allow through if host is already a
198
- // validated direct IP (which was checked above). If it's a hostname that
199
- // failed DNS, block it: we can't verify where it points.
200
- if (!looksLikeIp(host)) {
201
- return "DNS resolution failed — cannot verify target is safe";
202
- }
203
- // Direct IP that passed isPrivateIp check above safe to proceed
204
- }
205
- return null;
168
+ let u;
169
+ try {
170
+ u = new URL(urlStr);
171
+ } catch {
172
+ return "Malformed URL";
173
+ }
174
+
175
+ // Block non-HTTP(S) schemes
176
+ if (u.protocol !== "http:" && u.protocol !== "https:") {
177
+ return `Blocked scheme: ${u.protocol}`;
178
+ }
179
+ const host = u.hostname.toLowerCase();
180
+
181
+ // Block known internal hostnames
182
+ if (BLOCKED_HOSTS.has(host)) {
183
+ return "URL targets a blocked internal host";
184
+ }
185
+
186
+ // Block internal TLDs
187
+ for (const tld of BLOCKED_TLDS) {
188
+ if (host.endsWith(tld)) {
189
+ return "URL targets a blocked internal domain";
190
+ }
191
+ }
192
+
193
+ // Block .fly.dev (our own infrastructure)
194
+ if (host.endsWith(".fly.dev")) {
195
+ return "URL targets internal infrastructure";
196
+ }
197
+
198
+ // Block bare IPs that resolve to private ranges (including alternative encodings)
199
+ if (isPrivateIp(host)) {
200
+ return "URL targets a private/internal IP address";
201
+ }
202
+
203
+ // DNS resolve-then-check: catch DNS rebinding attacks
204
+ try {
205
+ const addresses = await dnsResolve(host);
206
+ for (const addr of addresses) {
207
+ if (isPrivateIp(addr)) {
208
+ return `DNS resolved to private address: ${addr}`;
209
+ }
210
+ }
211
+ } catch {
212
+ // P0 FIX: DNS resolution failed — only allow through if host is already a
213
+ // validated direct IP (which was checked above). If it's a hostname that
214
+ // failed DNS, block it: we can't verify where it points.
215
+ if (!looksLikeIp(host)) {
216
+ return "DNS resolution failed — cannot verify target is safe";
217
+ }
218
+ // Direct IP that passed isPrivateIp check above — safe to proceed
219
+ }
220
+ return null;
206
221
  }
222
+
207
223
  /**
208
224
  * Synchronous fast-path check (no DNS resolution).
209
225
  * Use this when you can't await, or for backward compatibility.
210
226
  * For full protection (including DNS rebinding), use validateUrl().
211
227
  */
212
228
  export function isBlockedUrl(urlStr) {
213
- try {
214
- const u = new URL(urlStr);
215
- const host = u.hostname.toLowerCase();
216
- if (BLOCKED_HOSTS.has(host) || host === "127.0.0.1" || host === "::1" || host === "[::1]")
217
- return true;
218
- if (PRIVATE_IPV4_RANGES.some((r) => r.test(host)))
219
- return true;
220
- if (PRIVATE_IPV6_PATTERNS.some((r) => r.test(host.replace(/^\[|\]$/g, ""))))
221
- return true;
222
- // P0 FIX: Check alternative IP encodings (decimal, hex, octal)
223
- if (isPrivateIp(host))
224
- return true;
225
- if (host === "169.254.169.254")
226
- return true;
227
- for (const tld of BLOCKED_TLDS) {
228
- if (host.endsWith(tld))
229
- return true;
230
- }
231
- if (host.endsWith(".fly.dev"))
232
- return true;
233
- if (u.protocol !== "http:" && u.protocol !== "https:")
234
- return true;
235
- return false;
236
- }
237
- catch {
238
- return true;
229
+ try {
230
+ const u = new URL(urlStr);
231
+ const host = u.hostname.toLowerCase();
232
+ if (BLOCKED_HOSTS.has(host) || host === "127.0.0.1" || host === "::1" || host === "[::1]") return true;
233
+ if (PRIVATE_IPV4_RANGES.some(r => r.test(host))) return true;
234
+ if (PRIVATE_IPV6_PATTERNS.some(r => r.test(host.replace(/^\[|\]$/g, "")))) return true;
235
+
236
+ // P0 FIX: Check alternative IP encodings (decimal, hex, octal)
237
+ if (isPrivateIp(host)) return true;
238
+ if (host === "169.254.169.254") return true;
239
+ for (const tld of BLOCKED_TLDS) {
240
+ if (host.endsWith(tld)) return true;
239
241
  }
242
+ if (host.endsWith(".fly.dev")) return true;
243
+ if (u.protocol !== "http:" && u.protocol !== "https:") return true;
244
+ return false;
245
+ } catch {
246
+ return true;
247
+ }
240
248
  }
249
+ //# sourceMappingURL=ssrf-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ssrf-guard.js","names":["resolve","dnsResolve","PRIVATE_IPV4_RANGES","IPV6_MAPPED_V4","IPV6_MAPPED_V4_HEX","PRIVATE_IPV6_PATTERNS","BLOCKED_HOSTS","Set","BLOCKED_TLDS","normalizeIp","input","cleaned","trim","test","startsWith","num","parseInt","parts","split","length","octets","part","val","isNaN","push","join","isPrivateIp","ip","replace","mapped","match","v4","normalized","some","r","mappedHex","hi","lo","looksLikeIp","host","includes","validateUrl","urlStr","u","URL","protocol","hostname","toLowerCase","has","tld","endsWith","addresses","addr","isBlockedUrl"],"sources":["../../../src/server/lib/ssrf-guard.ts"],"sourcesContent":["// server/lib/ssrf-guard.ts — Shared SSRF validation with DNS resolve-then-check\n//\n// Used by workflow steps (webhook_out, custom), email attachments, and any other\n// user-controlled URL fetching. Centralizes all IP blocking logic in one place.\n\nimport { resolve as dnsResolve } from \"node:dns/promises\";\n\n// Private/internal IPv4 ranges\nconst PRIVATE_IPV4_RANGES = [\n /^127\\./, // Loopback\n /^10\\./, // RFC 1918\n /^172\\.(1[6-9]|2\\d|3[01])\\./, // RFC 1918\n /^192\\.168\\./, // RFC 1918\n /^169\\.254\\./, // Link-local / cloud metadata\n /^0\\./, // \"This\" network\n /^100\\.(6[4-9]|[7-9]\\d|1[0-1]\\d|12[0-7])\\./, // CGNAT (RFC 6598)\n /^198\\.18\\./, // Benchmarking (RFC 2544)\n];\n\n// IPv6-mapped IPv4 patterns\n// Dotted decimal form: ::ffff:127.0.0.1\nconst IPV6_MAPPED_V4 = /^::ffff:(\\d+\\.\\d+\\.\\d+\\.\\d+)$/i;\n// Hex form (URL parser normalizes to this): ::ffff:7f00:1\nconst IPV6_MAPPED_V4_HEX = /^::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/i;\n\n// Private/internal IPv6 ranges\nconst PRIVATE_IPV6_PATTERNS = [\n /^::1$/, // Loopback\n /^fe80:/i, // Link-local\n /^fc00:/i, // Unique local\n /^fd/i, // Unique local\n /^::$/, // Unspecified address\n];\n\nconst BLOCKED_HOSTS = new Set([\n \"localhost\",\n \"0.0.0.0\",\n \"metadata.google.internal\",\n \"metadata.internal\",\n]);\n\nconst BLOCKED_TLDS = [\".internal\", \".local\", \".localhost\"];\n\n/**\n * P0 FIX: Normalize alternative IP encodings to standard dotted-decimal.\n * Catches bypass attempts via decimal, hex, octal, and mixed representations:\n * - Decimal: 2130706433 → 127.0.0.1\n * - Hex: 0x7f000001 → 127.0.0.1\n * - Octal: 0177.0.0.01 → 127.0.0.1\n * - Mixed: 0x7f.0.0.1 → 127.0.0.1\n * - Leading zeros: 0127.0.0.01 → 87.0.0.1 (octal interpretation)\n *\n * Returns the normalized dotted-decimal string, or null if not a recognizable IP.\n */\nfunction normalizeIp(input: string): string | null {\n const cleaned = input.trim();\n\n // Case 1: Pure decimal integer (e.g. 2130706433 = 127.0.0.1)\n if (/^\\d{1,10}$/.test(cleaned) && !cleaned.startsWith(\"0\")) {\n const num = parseInt(cleaned, 10);\n if (num >= 0 && num <= 0xffffffff) {\n return `${(num >>> 24) & 0xff}.${(num >>> 16) & 0xff}.${(num >>> 8) & 0xff}.${num & 0xff}`;\n }\n }\n\n // Case 2: Pure hex integer (e.g. 0x7f000001)\n if (/^0x[0-9a-f]+$/i.test(cleaned)) {\n const num = parseInt(cleaned, 16);\n if (num >= 0 && num <= 0xffffffff) {\n return `${(num >>> 24) & 0xff}.${(num >>> 16) & 0xff}.${(num >>> 8) & 0xff}.${num & 0xff}`;\n }\n }\n\n // Case 3: Dotted form with octal/hex/decimal octets (e.g. 0177.0.0.01, 0x7f.0.0.1)\n const parts = cleaned.split(\".\");\n if (parts.length === 4) {\n const octets: number[] = [];\n for (const part of parts) {\n let val: number;\n if (/^0x[0-9a-f]+$/i.test(part)) {\n // Hex octet\n val = parseInt(part, 16);\n } else if (/^0\\d+$/.test(part)) {\n // Octal octet (leading zero)\n val = parseInt(part, 8);\n } else if (/^\\d+$/.test(part)) {\n // Decimal octet\n val = parseInt(part, 10);\n } else {\n return null; // Not a valid octet\n }\n if (isNaN(val) || val < 0 || val > 255) return null;\n octets.push(val);\n }\n return octets.join(\".\");\n }\n\n return null;\n}\n\n/**\n * Check if an IP address is in a private/internal range.\n * P0 FIX: Now normalizes alternative IP encodings before checking.\n */\nfunction isPrivateIp(ip: string): boolean {\n // Strip brackets from IPv6\n const cleaned = ip.replace(/^\\[|\\]$/g, \"\");\n\n // Check IPv6-mapped IPv4 — dotted decimal form (::ffff:x.x.x.x)\n const mapped = cleaned.match(IPV6_MAPPED_V4);\n if (mapped) {\n const v4 = mapped[1];\n const normalized = normalizeIp(v4) || v4;\n return PRIVATE_IPV4_RANGES.some((r) => r.test(normalized));\n }\n\n // Check IPv6-mapped IPv4 — hex form (::ffff:7f00:1, as normalized by URL parser)\n const mappedHex = cleaned.match(IPV6_MAPPED_V4_HEX);\n if (mappedHex) {\n const hi = parseInt(mappedHex[1], 16);\n const lo = parseInt(mappedHex[2], 16);\n const v4 = `${(hi >> 8) & 0xff}.${hi & 0xff}.${(lo >> 8) & 0xff}.${lo & 0xff}`;\n return PRIVATE_IPV4_RANGES.some((r) => r.test(v4));\n }\n\n // P0 FIX: Normalize alternative encodings (decimal, hex, octal, mixed)\n const normalized = normalizeIp(cleaned);\n if (normalized) {\n return PRIVATE_IPV4_RANGES.some((r) => r.test(normalized));\n }\n\n // Check plain IPv4 (standard dotted decimal — no leading zeros)\n if (/^\\d+\\.\\d+\\.\\d+\\.\\d+$/.test(cleaned)) {\n return PRIVATE_IPV4_RANGES.some((r) => r.test(cleaned));\n }\n\n // Check IPv6\n return PRIVATE_IPV6_PATTERNS.some((r) => r.test(cleaned));\n}\n\n/**\n * Check if a hostname looks like a direct IP address (v4, v6, or alternative encoding).\n * Used to decide whether DNS failure should block or allow.\n */\nfunction looksLikeIp(host: string): boolean {\n const cleaned = host.replace(/^\\[|\\]$/g, \"\");\n // Standard dotted decimal\n if (/^\\d+\\.\\d+\\.\\d+\\.\\d+$/.test(cleaned)) return true;\n // Pure decimal integer\n if (/^\\d{1,10}$/.test(cleaned)) return true;\n // Hex integer\n if (/^0x[0-9a-f]+$/i.test(cleaned)) return true;\n // Dotted with octal/hex octets\n if (/^[\\d.x]+$/i.test(cleaned) && cleaned.split(\".\").length === 4) return true;\n // IPv6 (contains colons)\n if (cleaned.includes(\":\")) return true;\n return false;\n}\n\n/**\n * Validate a URL is safe to fetch (not targeting internal/private addresses).\n * Does basic hostname checks first, then resolves DNS to catch rebinding attacks.\n *\n * @returns null if safe, or a string error message if blocked.\n */\nexport async function validateUrl(urlStr: string): Promise<string | null> {\n let u: URL;\n try {\n u = new URL(urlStr);\n } catch {\n return \"Malformed URL\";\n }\n\n // Block non-HTTP(S) schemes\n if (u.protocol !== \"http:\" && u.protocol !== \"https:\") {\n return `Blocked scheme: ${u.protocol}`;\n }\n\n const host = u.hostname.toLowerCase();\n\n // Block known internal hostnames\n if (BLOCKED_HOSTS.has(host)) {\n return \"URL targets a blocked internal host\";\n }\n\n // Block internal TLDs\n for (const tld of BLOCKED_TLDS) {\n if (host.endsWith(tld)) {\n return \"URL targets a blocked internal domain\";\n }\n }\n\n // Block .fly.dev (our own infrastructure)\n if (host.endsWith(\".fly.dev\")) {\n return \"URL targets internal infrastructure\";\n }\n\n // Block bare IPs that resolve to private ranges (including alternative encodings)\n if (isPrivateIp(host)) {\n return \"URL targets a private/internal IP address\";\n }\n\n // DNS resolve-then-check: catch DNS rebinding attacks\n try {\n const addresses = await dnsResolve(host);\n for (const addr of addresses) {\n if (isPrivateIp(addr)) {\n return `DNS resolved to private address: ${addr}`;\n }\n }\n } catch {\n // P0 FIX: DNS resolution failed — only allow through if host is already a\n // validated direct IP (which was checked above). If it's a hostname that\n // failed DNS, block it: we can't verify where it points.\n if (!looksLikeIp(host)) {\n return \"DNS resolution failed — cannot verify target is safe\";\n }\n // Direct IP that passed isPrivateIp check above — safe to proceed\n }\n\n return null;\n}\n\n/**\n * Synchronous fast-path check (no DNS resolution).\n * Use this when you can't await, or for backward compatibility.\n * For full protection (including DNS rebinding), use validateUrl().\n */\nexport function isBlockedUrl(urlStr: string): boolean {\n try {\n const u = new URL(urlStr);\n const host = u.hostname.toLowerCase();\n\n if (BLOCKED_HOSTS.has(host) || host === \"127.0.0.1\" || host === \"::1\" || host === \"[::1]\") return true;\n if (PRIVATE_IPV4_RANGES.some((r) => r.test(host))) return true;\n if (PRIVATE_IPV6_PATTERNS.some((r) => r.test(host.replace(/^\\[|\\]$/g, \"\")))) return true;\n\n // P0 FIX: Check alternative IP encodings (decimal, hex, octal)\n if (isPrivateIp(host)) return true;\n\n if (host === \"169.254.169.254\") return true;\n for (const tld of BLOCKED_TLDS) {\n if (host.endsWith(tld)) return true;\n }\n if (host.endsWith(\".fly.dev\")) return true;\n if (u.protocol !== \"http:\" && u.protocol !== \"https:\") return true;\n\n return false;\n } catch {\n return true;\n }\n}\n"],"mappings":"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","ignoreList":[]}