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