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
@@ -1,288 +1,307 @@
1
1
  // server/handlers/discovery.ts — mDNS/DNS-SD local network device discovery
2
2
  // Scan for POS terminals, printers, and other services on the local network.
3
3
  // Uses bonjour-service (Zeroconf/mDNS implementation in TypeScript).
4
+
4
5
  import Bonjour from "bonjour-service";
6
+
5
7
  // ============================================================================
6
8
  // MODULE-LEVEL STATE
7
9
  // ============================================================================
10
+
8
11
  /** Single Bonjour instance shared across advertise operations */
9
12
  let bonjourInstance = null;
13
+
10
14
  /** Map of advertised service name -> Service instance for stop/list */
11
15
  const advertisedServices = new Map();
12
16
  function getBonjour() {
13
- if (!bonjourInstance) {
14
- bonjourInstance = new Bonjour();
15
- }
16
- return bonjourInstance;
17
+ if (!bonjourInstance) {
18
+ bonjourInstance = new Bonjour();
19
+ }
20
+ return bonjourInstance;
17
21
  }
22
+
18
23
  /** Common service types to scan when doing a broad discovery */
19
- const COMMON_SERVICE_TYPES = [
20
- "http",
21
- "https",
22
- "printer",
23
- "ipp",
24
- "pos",
25
- "airplay",
26
- "raop",
27
- "smb",
28
- "ftp",
29
- "ssh",
30
- "mqtt",
31
- ];
24
+ const COMMON_SERVICE_TYPES = ["http", "https", "printer", "ipp", "pos", "airplay", "raop", "smb", "ftp", "ssh", "mqtt"];
25
+
26
+ // ============================================================================
27
+ // SCAN
28
+ // ============================================================================
29
+
32
30
  /**
33
31
  * Scan the local network for mDNS services.
34
32
  * Creates a short-lived Bonjour instance per scan to avoid memory leaks.
35
33
  */
36
34
  async function scanServices(serviceType, timeoutMs) {
37
- return new Promise((resolve, reject) => {
38
- let bonjour;
39
- try {
40
- bonjour = new Bonjour();
41
- }
42
- catch (err) {
43
- reject(new Error(`mDNS not available on this host. This typically happens in Docker/cloud environments without multicast support. (${err instanceof Error ? err.message : String(err)})`));
44
- return;
45
- }
46
- const services = [];
47
- const seen = new Set();
48
- // Strip leading underscore and trailing protocol if user passed full form
49
- // e.g. "_http._tcp" -> "http"
50
- let type = serviceType;
51
- if (type.startsWith("_"))
52
- type = type.slice(1);
53
- if (type.endsWith("._tcp"))
54
- type = type.slice(0, -5);
55
- if (type.endsWith("._udp"))
56
- type = type.slice(0, -5);
57
- let browser;
58
- try {
59
- browser = bonjour.find({ type });
60
- }
61
- catch (err) {
62
- bonjour.destroy();
63
- reject(new Error(`Failed to start mDNS browser: ${err instanceof Error ? err.message : String(err)}`));
64
- return;
65
- }
66
- browser.on("up", (service) => {
67
- const key = `${service.name}::${service.type}::${service.port}`;
68
- if (!seen.has(key)) {
69
- seen.add(key);
70
- services.push({
71
- name: service.name,
72
- type: service.type,
73
- host: service.host,
74
- port: service.port,
75
- addresses: service.addresses,
76
- txt: service.txt,
77
- });
78
- }
79
- });
80
- const timer = setTimeout(() => {
81
- try {
82
- browser.stop();
83
- bonjour.destroy();
84
- }
85
- catch {
86
- // Ignore cleanup errors
87
- }
88
- resolve(services);
89
- }, timeoutMs);
90
- // Safety: if the browser errors out, resolve with whatever we have
91
- browser.on("error", () => {
92
- clearTimeout(timer);
93
- try {
94
- browser.stop();
95
- bonjour.destroy();
96
- }
97
- catch {
98
- // Ignore cleanup errors
99
- }
100
- resolve(services);
35
+ return new Promise((resolve, reject) => {
36
+ let bonjour;
37
+ try {
38
+ bonjour = new Bonjour();
39
+ } catch (err) {
40
+ reject(new Error(`mDNS not available on this host. This typically happens in Docker/cloud environments without multicast support. (${err instanceof Error ? err.message : String(err)})`));
41
+ return;
42
+ }
43
+ const services = [];
44
+ const seen = new Set();
45
+
46
+ // Strip leading underscore and trailing protocol if user passed full form
47
+ // e.g. "_http._tcp" -> "http"
48
+ let type = serviceType;
49
+ if (type.startsWith("_")) type = type.slice(1);
50
+ if (type.endsWith("._tcp")) type = type.slice(0, -5);
51
+ if (type.endsWith("._udp")) type = type.slice(0, -5);
52
+ let browser;
53
+ try {
54
+ browser = bonjour.find({
55
+ type
56
+ });
57
+ } catch (err) {
58
+ bonjour.destroy();
59
+ reject(new Error(`Failed to start mDNS browser: ${err instanceof Error ? err.message : String(err)}`));
60
+ return;
61
+ }
62
+ browser.on("up", service => {
63
+ const key = `${service.name}::${service.type}::${service.port}`;
64
+ if (!seen.has(key)) {
65
+ seen.add(key);
66
+ services.push({
67
+ name: service.name,
68
+ type: service.type,
69
+ host: service.host,
70
+ port: service.port,
71
+ addresses: service.addresses,
72
+ txt: service.txt
101
73
  });
74
+ }
75
+ });
76
+ const timer = setTimeout(() => {
77
+ try {
78
+ browser.stop();
79
+ bonjour.destroy();
80
+ } catch {
81
+ // Ignore cleanup errors
82
+ }
83
+ resolve(services);
84
+ }, timeoutMs);
85
+
86
+ // Safety: if the browser errors out, resolve with whatever we have
87
+ browser.on("error", () => {
88
+ clearTimeout(timer);
89
+ try {
90
+ browser.stop();
91
+ bonjour.destroy();
92
+ } catch {
93
+ // Ignore cleanup errors
94
+ }
95
+ resolve(services);
102
96
  });
97
+ });
103
98
  }
99
+
104
100
  /**
105
101
  * Multi-type scan: run parallel scans for common service types.
106
102
  */
107
103
  async function scanAllCommonTypes(timeoutMs) {
108
- const results = await Promise.allSettled(COMMON_SERVICE_TYPES.map((type) => scanServices(type, timeoutMs)));
109
- const allServices = [];
110
- const seen = new Set();
111
- for (const result of results) {
112
- if (result.status === "fulfilled") {
113
- for (const svc of result.value) {
114
- const key = `${svc.name}::${svc.type}::${svc.port}`;
115
- if (!seen.has(key)) {
116
- seen.add(key);
117
- allServices.push(svc);
118
- }
119
- }
104
+ const results = await Promise.allSettled(COMMON_SERVICE_TYPES.map(type => scanServices(type, timeoutMs)));
105
+ const allServices = [];
106
+ const seen = new Set();
107
+ for (const result of results) {
108
+ if (result.status === "fulfilled") {
109
+ for (const svc of result.value) {
110
+ const key = `${svc.name}::${svc.type}::${svc.port}`;
111
+ if (!seen.has(key)) {
112
+ seen.add(key);
113
+ allServices.push(svc);
120
114
  }
115
+ }
121
116
  }
122
- return allServices;
117
+ }
118
+ return allServices;
123
119
  }
120
+
124
121
  // ============================================================================
125
122
  // ADVERTISE
126
123
  // ============================================================================
124
+
127
125
  function advertiseService(name, type, port, txt) {
128
- if (advertisedServices.has(name)) {
129
- return {
130
- success: false,
131
- error: `Service "${name}" is already being advertised. Stop it first with stop_advertise.`,
132
- };
133
- }
134
- // Strip protocol suffix from type for bonjour-service
135
- let cleanType = type;
136
- if (cleanType.startsWith("_"))
137
- cleanType = cleanType.slice(1);
138
- if (cleanType.endsWith("._tcp"))
139
- cleanType = cleanType.slice(0, -5);
140
- if (cleanType.endsWith("._udp"))
141
- cleanType = cleanType.slice(0, -5);
142
- try {
143
- const bonjour = getBonjour();
144
- const service = bonjour.publish({
145
- name,
146
- type: cleanType,
147
- port,
148
- txt: txt,
149
- });
150
- advertisedServices.set(name, service);
151
- return { success: true };
152
- }
153
- catch (err) {
154
- return {
155
- success: false,
156
- error: `Failed to advertise service: ${err instanceof Error ? err.message : String(err)}`,
157
- };
158
- }
126
+ if (advertisedServices.has(name)) {
127
+ return {
128
+ success: false,
129
+ error: `Service "${name}" is already being advertised. Stop it first with stop_advertise.`
130
+ };
131
+ }
132
+
133
+ // Strip protocol suffix from type for bonjour-service
134
+ let cleanType = type;
135
+ if (cleanType.startsWith("_")) cleanType = cleanType.slice(1);
136
+ if (cleanType.endsWith("._tcp")) cleanType = cleanType.slice(0, -5);
137
+ if (cleanType.endsWith("._udp")) cleanType = cleanType.slice(0, -5);
138
+ try {
139
+ const bonjour = getBonjour();
140
+ const service = bonjour.publish({
141
+ name,
142
+ type: cleanType,
143
+ port,
144
+ txt: txt
145
+ });
146
+ advertisedServices.set(name, service);
147
+ return {
148
+ success: true
149
+ };
150
+ } catch (err) {
151
+ return {
152
+ success: false,
153
+ error: `Failed to advertise service: ${err instanceof Error ? err.message : String(err)}`
154
+ };
155
+ }
159
156
  }
157
+
160
158
  // ============================================================================
161
159
  // STOP ADVERTISE
162
160
  // ============================================================================
161
+
163
162
  function stopAdvertise(name) {
164
- const service = advertisedServices.get(name);
165
- if (!service) {
166
- return {
167
- success: false,
168
- error: `No advertised service found with name "${name}". Currently advertised: ${advertisedServices.size === 0 ? "none" : Array.from(advertisedServices.keys()).join(", ")}`,
169
- };
170
- }
171
- try {
172
- if (service.stop) {
173
- service.stop();
174
- }
175
- // The service also has a 'destroyed' flag — set externally isn't needed
176
- // since stop() handles cleanup in bonjour-service
177
- }
178
- catch {
179
- // Best-effort cleanup
163
+ const service = advertisedServices.get(name);
164
+ if (!service) {
165
+ return {
166
+ success: false,
167
+ error: `No advertised service found with name "${name}". Currently advertised: ${advertisedServices.size === 0 ? "none" : Array.from(advertisedServices.keys()).join(", ")}`
168
+ };
169
+ }
170
+ try {
171
+ if (service.stop) {
172
+ service.stop();
180
173
  }
181
- advertisedServices.delete(name);
182
- return { success: true };
174
+ // The service also has a 'destroyed' flag — set externally isn't needed
175
+ // since stop() handles cleanup in bonjour-service
176
+ } catch {
177
+ // Best-effort cleanup
178
+ }
179
+ advertisedServices.delete(name);
180
+ return {
181
+ success: true
182
+ };
183
183
  }
184
+
184
185
  // ============================================================================
185
186
  // LIST ADVERTISED
186
187
  // ============================================================================
188
+
187
189
  function listAdvertised() {
188
- const list = Array.from(advertisedServices.entries()).map(([name, svc]) => ({
189
- name,
190
- type: svc.type,
191
- port: svc.port,
192
- host: svc.host,
193
- txt: svc.txt,
194
- }));
195
- return { success: true, data: list };
190
+ const list = Array.from(advertisedServices.entries()).map(([name, svc]) => ({
191
+ name,
192
+ type: svc.type,
193
+ port: svc.port,
194
+ host: svc.host,
195
+ txt: svc.txt
196
+ }));
197
+ return {
198
+ success: true,
199
+ data: list
200
+ };
196
201
  }
202
+
197
203
  // ============================================================================
198
204
  // MAIN HANDLER
199
205
  // ============================================================================
206
+
200
207
  export async function handleDiscovery(_sb, args, _storeId) {
201
- const action = args.action;
202
- switch (action) {
203
- case "scan": {
204
- const serviceType = args.service_type || "";
205
- const timeoutMs = Math.min(Math.max(args.timeout_ms || 5000, 1000), 30000); // clamp 1-30s
206
- try {
207
- let services;
208
- if (!serviceType || serviceType === "all") {
209
- services = await scanAllCommonTypes(timeoutMs);
210
- }
211
- else {
212
- services = await scanServices(serviceType, timeoutMs);
213
- }
214
- return {
215
- success: true,
216
- data: {
217
- service_type: serviceType || "all (common types)",
218
- timeout_ms: timeoutMs,
219
- count: services.length,
220
- services,
221
- },
222
- };
223
- }
224
- catch (err) {
225
- return {
226
- success: false,
227
- error: err instanceof Error
228
- ? err.message
229
- : `Scan failed: ${String(err)}`,
230
- };
208
+ const action = args.action;
209
+ switch (action) {
210
+ case "scan":
211
+ {
212
+ const serviceType = args.service_type || "";
213
+ const timeoutMs = Math.min(Math.max(args.timeout_ms || 5000, 1000), 30000); // clamp 1-30s
214
+
215
+ try {
216
+ let services;
217
+ if (!serviceType || serviceType === "all") {
218
+ services = await scanAllCommonTypes(timeoutMs);
219
+ } else {
220
+ services = await scanServices(serviceType, timeoutMs);
221
+ }
222
+ return {
223
+ success: true,
224
+ data: {
225
+ service_type: serviceType || "all (common types)",
226
+ timeout_ms: timeoutMs,
227
+ count: services.length,
228
+ services
231
229
  }
230
+ };
231
+ } catch (err) {
232
+ return {
233
+ success: false,
234
+ error: err instanceof Error ? err.message : `Scan failed: ${String(err)}`
235
+ };
232
236
  }
233
- case "advertise": {
234
- const name = args.name;
235
- const type = args.type;
236
- const port = args.port;
237
- const txt = args.txt;
238
- if (!name)
239
- return { success: false, error: "name is required for advertise" };
240
- if (!type)
241
- return { success: false, error: "type is required for advertise (e.g. _http._tcp)" };
242
- if (!port || typeof port !== "number")
243
- return { success: false, error: "port is required for advertise (must be a number)" };
244
- const result = advertiseService(name, type, port, txt);
245
- if (result.success) {
246
- return {
247
- success: true,
248
- data: {
249
- message: `Service "${name}" is now being advertised as ${type} on port ${port}`,
250
- name,
251
- type,
252
- port,
253
- txt: txt || null,
254
- },
255
- };
237
+ }
238
+ case "advertise":
239
+ {
240
+ const name = args.name;
241
+ const type = args.type;
242
+ const port = args.port;
243
+ const txt = args.txt;
244
+ if (!name) return {
245
+ success: false,
246
+ error: "name is required for advertise"
247
+ };
248
+ if (!type) return {
249
+ success: false,
250
+ error: "type is required for advertise (e.g. _http._tcp)"
251
+ };
252
+ if (!port || typeof port !== "number") return {
253
+ success: false,
254
+ error: "port is required for advertise (must be a number)"
255
+ };
256
+ const result = advertiseService(name, type, port, txt);
257
+ if (result.success) {
258
+ return {
259
+ success: true,
260
+ data: {
261
+ message: `Service "${name}" is now being advertised as ${type} on port ${port}`,
262
+ name,
263
+ type,
264
+ port,
265
+ txt: txt || null
256
266
  }
257
- return result;
267
+ };
258
268
  }
259
- case "stop_advertise": {
260
- const name = args.name;
261
- if (!name)
262
- return { success: false, error: "name is required for stop_advertise" };
263
- const result = stopAdvertise(name);
264
- if (result.success) {
265
- return {
266
- success: true,
267
- data: { message: `Stopped advertising service "${name}"` },
268
- };
269
+ return result;
270
+ }
271
+ case "stop_advertise":
272
+ {
273
+ const name = args.name;
274
+ if (!name) return {
275
+ success: false,
276
+ error: "name is required for stop_advertise"
277
+ };
278
+ const result = stopAdvertise(name);
279
+ if (result.success) {
280
+ return {
281
+ success: true,
282
+ data: {
283
+ message: `Stopped advertising service "${name}"`
269
284
  }
270
- return result;
271
- }
272
- case "list_advertised": {
273
- const result = listAdvertised();
274
- return {
275
- success: true,
276
- data: {
277
- count: result.data.length,
278
- services: result.data,
279
- },
280
- };
285
+ };
281
286
  }
282
- default:
283
- return {
284
- success: false,
285
- error: `Unknown discovery action: "${action}". Valid actions: scan, advertise, stop_advertise, list_advertised`,
286
- };
287
- }
287
+ return result;
288
+ }
289
+ case "list_advertised":
290
+ {
291
+ const result = listAdvertised();
292
+ return {
293
+ success: true,
294
+ data: {
295
+ count: result.data.length,
296
+ services: result.data
297
+ }
298
+ };
299
+ }
300
+ default:
301
+ return {
302
+ success: false,
303
+ error: `Unknown discovery action: "${action}". Valid actions: scan, advertise, stop_advertise, list_advertised`
304
+ };
305
+ }
288
306
  }
307
+ //# sourceMappingURL=discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.js","names":["Bonjour","bonjourInstance","advertisedServices","Map","getBonjour","COMMON_SERVICE_TYPES","scanServices","serviceType","timeoutMs","Promise","resolve","reject","bonjour","err","Error","message","String","services","seen","Set","type","startsWith","slice","endsWith","browser","find","destroy","on","service","key","name","port","has","add","push","host","addresses","txt","timer","setTimeout","stop","clearTimeout","scanAllCommonTypes","results","allSettled","map","allServices","result","status","svc","value","advertiseService","success","error","cleanType","publish","set","stopAdvertise","get","size","Array","from","keys","join","delete","listAdvertised","list","entries","data","handleDiscovery","_sb","args","_storeId","action","service_type","Math","min","max","timeout_ms","count","length"],"sources":["../../../src/server/handlers/discovery.ts"],"sourcesContent":["// server/handlers/discovery.ts — mDNS/DNS-SD local network device discovery\n// Scan for POS terminals, printers, and other services on the local network.\n// Uses bonjour-service (Zeroconf/mDNS implementation in TypeScript).\n\nimport type { SupabaseClient } from \"@supabase/supabase-js\";\nimport Bonjour, { type Service } from \"bonjour-service\";\n\n// ============================================================================\n// MODULE-LEVEL STATE\n// ============================================================================\n\n/** Single Bonjour instance shared across advertise operations */\nlet bonjourInstance: Bonjour | null = null;\n\n/** Map of advertised service name -> Service instance for stop/list */\nconst advertisedServices = new Map<string, Service>();\n\nfunction getBonjour(): Bonjour {\n if (!bonjourInstance) {\n bonjourInstance = new Bonjour();\n }\n return bonjourInstance;\n}\n\n/** Common service types to scan when doing a broad discovery */\nconst COMMON_SERVICE_TYPES = [\n \"http\",\n \"https\",\n \"printer\",\n \"ipp\",\n \"pos\",\n \"airplay\",\n \"raop\",\n \"smb\",\n \"ftp\",\n \"ssh\",\n \"mqtt\",\n];\n\n// ============================================================================\n// SCAN\n// ============================================================================\n\ninterface DiscoveredService {\n name: string;\n type: string;\n host: string;\n port: number;\n addresses: string[] | undefined;\n txt: Record<string, unknown> | undefined;\n}\n\n/**\n * Scan the local network for mDNS services.\n * Creates a short-lived Bonjour instance per scan to avoid memory leaks.\n */\nasync function scanServices(\n serviceType: string,\n timeoutMs: number\n): Promise<DiscoveredService[]> {\n return new Promise((resolve, reject) => {\n let bonjour: Bonjour;\n try {\n bonjour = new Bonjour();\n } catch (err) {\n reject(\n new Error(\n `mDNS not available on this host. This typically happens in Docker/cloud environments without multicast support. (${err instanceof Error ? err.message : String(err)})`\n )\n );\n return;\n }\n\n const services: DiscoveredService[] = [];\n const seen = new Set<string>();\n\n // Strip leading underscore and trailing protocol if user passed full form\n // e.g. \"_http._tcp\" -> \"http\"\n let type = serviceType;\n if (type.startsWith(\"_\")) type = type.slice(1);\n if (type.endsWith(\"._tcp\")) type = type.slice(0, -5);\n if (type.endsWith(\"._udp\")) type = type.slice(0, -5);\n\n let browser: ReturnType<typeof bonjour.find>;\n try {\n browser = bonjour.find({ type });\n } catch (err) {\n bonjour.destroy();\n reject(\n new Error(\n `Failed to start mDNS browser: ${err instanceof Error ? err.message : String(err)}`\n )\n );\n return;\n }\n\n browser.on(\"up\", (service: Service) => {\n const key = `${service.name}::${service.type}::${service.port}`;\n if (!seen.has(key)) {\n seen.add(key);\n services.push({\n name: service.name,\n type: service.type,\n host: service.host,\n port: service.port,\n addresses: service.addresses,\n txt: service.txt as Record<string, unknown> | undefined,\n });\n }\n });\n\n const timer = setTimeout(() => {\n try {\n browser.stop();\n bonjour.destroy();\n } catch {\n // Ignore cleanup errors\n }\n resolve(services);\n }, timeoutMs);\n\n // Safety: if the browser errors out, resolve with whatever we have\n browser.on(\"error\", () => {\n clearTimeout(timer);\n try {\n browser.stop();\n bonjour.destroy();\n } catch {\n // Ignore cleanup errors\n }\n resolve(services);\n });\n });\n}\n\n/**\n * Multi-type scan: run parallel scans for common service types.\n */\nasync function scanAllCommonTypes(\n timeoutMs: number\n): Promise<DiscoveredService[]> {\n const results = await Promise.allSettled(\n COMMON_SERVICE_TYPES.map((type) => scanServices(type, timeoutMs))\n );\n\n const allServices: DiscoveredService[] = [];\n const seen = new Set<string>();\n\n for (const result of results) {\n if (result.status === \"fulfilled\") {\n for (const svc of result.value) {\n const key = `${svc.name}::${svc.type}::${svc.port}`;\n if (!seen.has(key)) {\n seen.add(key);\n allServices.push(svc);\n }\n }\n }\n }\n\n return allServices;\n}\n\n// ============================================================================\n// ADVERTISE\n// ============================================================================\n\nfunction advertiseService(\n name: string,\n type: string,\n port: number,\n txt?: Record<string, string>\n): { success: boolean; error?: string } {\n if (advertisedServices.has(name)) {\n return {\n success: false,\n error: `Service \"${name}\" is already being advertised. Stop it first with stop_advertise.`,\n };\n }\n\n // Strip protocol suffix from type for bonjour-service\n let cleanType = type;\n if (cleanType.startsWith(\"_\")) cleanType = cleanType.slice(1);\n if (cleanType.endsWith(\"._tcp\")) cleanType = cleanType.slice(0, -5);\n if (cleanType.endsWith(\"._udp\")) cleanType = cleanType.slice(0, -5);\n\n try {\n const bonjour = getBonjour();\n const service = bonjour.publish({\n name,\n type: cleanType,\n port,\n txt: txt as Record<string, string> | undefined,\n });\n advertisedServices.set(name, service);\n return { success: true };\n } catch (err) {\n return {\n success: false,\n error: `Failed to advertise service: ${err instanceof Error ? err.message : String(err)}`,\n };\n }\n}\n\n// ============================================================================\n// STOP ADVERTISE\n// ============================================================================\n\nfunction stopAdvertise(name: string): { success: boolean; error?: string } {\n const service = advertisedServices.get(name);\n if (!service) {\n return {\n success: false,\n error: `No advertised service found with name \"${name}\". Currently advertised: ${advertisedServices.size === 0 ? \"none\" : Array.from(advertisedServices.keys()).join(\", \")}`,\n };\n }\n\n try {\n if (service.stop) {\n service.stop();\n }\n // The service also has a 'destroyed' flag — set externally isn't needed\n // since stop() handles cleanup in bonjour-service\n } catch {\n // Best-effort cleanup\n }\n advertisedServices.delete(name);\n return { success: true };\n}\n\n// ============================================================================\n// LIST ADVERTISED\n// ============================================================================\n\nfunction listAdvertised(): {\n success: boolean;\n data: Array<{ name: string; type: string; port: number; host: string; txt?: unknown }>;\n} {\n const list = Array.from(advertisedServices.entries()).map(([name, svc]) => ({\n name,\n type: svc.type,\n port: svc.port,\n host: svc.host,\n txt: svc.txt,\n }));\n return { success: true, data: list };\n}\n\n// ============================================================================\n// MAIN HANDLER\n// ============================================================================\n\nexport async function handleDiscovery(\n _sb: SupabaseClient,\n args: Record<string, unknown>,\n _storeId?: string\n): Promise<{ success: boolean; data?: unknown; error?: string }> {\n const action = args.action as string;\n\n switch (action) {\n case \"scan\": {\n const serviceType = (args.service_type as string) || \"\";\n const timeoutMs = Math.min(\n Math.max((args.timeout_ms as number) || 5000, 1000),\n 30000\n ); // clamp 1-30s\n\n try {\n let services: DiscoveredService[];\n if (!serviceType || serviceType === \"all\") {\n services = await scanAllCommonTypes(timeoutMs);\n } else {\n services = await scanServices(serviceType, timeoutMs);\n }\n return {\n success: true,\n data: {\n service_type: serviceType || \"all (common types)\",\n timeout_ms: timeoutMs,\n count: services.length,\n services,\n },\n };\n } catch (err) {\n return {\n success: false,\n error:\n err instanceof Error\n ? err.message\n : `Scan failed: ${String(err)}`,\n };\n }\n }\n\n case \"advertise\": {\n const name = args.name as string;\n const type = args.type as string;\n const port = args.port as number;\n const txt = args.txt as Record<string, string> | undefined;\n\n if (!name) return { success: false, error: \"name is required for advertise\" };\n if (!type) return { success: false, error: \"type is required for advertise (e.g. _http._tcp)\" };\n if (!port || typeof port !== \"number\")\n return { success: false, error: \"port is required for advertise (must be a number)\" };\n\n const result = advertiseService(name, type, port, txt);\n if (result.success) {\n return {\n success: true,\n data: {\n message: `Service \"${name}\" is now being advertised as ${type} on port ${port}`,\n name,\n type,\n port,\n txt: txt || null,\n },\n };\n }\n return result;\n }\n\n case \"stop_advertise\": {\n const name = args.name as string;\n if (!name) return { success: false, error: \"name is required for stop_advertise\" };\n\n const result = stopAdvertise(name);\n if (result.success) {\n return {\n success: true,\n data: { message: `Stopped advertising service \"${name}\"` },\n };\n }\n return result;\n }\n\n case \"list_advertised\": {\n const result = listAdvertised();\n return {\n success: true,\n data: {\n count: result.data.length,\n services: result.data,\n },\n };\n }\n\n default:\n return {\n success: false,\n error: `Unknown discovery action: \"${action}\". Valid actions: scan, advertise, stop_advertise, list_advertised`,\n };\n }\n}\n"],"mappings":"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","ignoreList":[]}