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,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":[]}