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
@@ -7,43 +7,48 @@
7
7
  * Respects `retry-after` header on 429 responses.
8
8
  * 429 gets a 4x delay multiplier since the server is actively rate-limiting.
9
9
  */
10
+
10
11
  const RETRIABLE_STATUS_CODES = new Set([429, 500, 502, 503, 504, 529]);
11
- const RETRIABLE_ERROR_PATTERNS = [
12
- "ECONNRESET",
13
- "ECONNREFUSED",
14
- "ETIMEDOUT",
15
- "ENOTFOUND",
16
- "fetch failed",
17
- "network",
18
- "socket hang up",
19
- "aborted",
20
- ];
12
+ const RETRIABLE_ERROR_PATTERNS = ["ECONNRESET", "ECONNREFUSED", "ETIMEDOUT", "ENOTFOUND", "fetch failed", "network", "socket hang up", "aborted"];
21
13
  function isRetriable(err) {
22
- if (!err || typeof err !== "object")
23
- return { retriable: false };
24
- const e = err;
25
- // Anthropic SDK errors expose `.status` for HTTP status codes
26
- const status = e.status ?? e.statusCode;
27
- if (status && RETRIABLE_STATUS_CODES.has(status)) {
28
- let retryAfterMs;
29
- // Check for retry-after header (Anthropic SDK surfaces headers on error)
30
- const headers = e.headers;
31
- if (headers?.["retry-after"]) {
32
- const retryAfterSec = parseFloat(headers["retry-after"]);
33
- if (!isNaN(retryAfterSec)) {
34
- retryAfterMs = retryAfterSec * 1000;
35
- }
36
- }
37
- return { retriable: true, statusCode: status, retryAfterMs };
14
+ if (!err || typeof err !== "object") return {
15
+ retriable: false
16
+ };
17
+ const e = err;
18
+
19
+ // Anthropic SDK errors expose `.status` for HTTP status codes
20
+ const status = e.status ?? e.statusCode;
21
+ if (status && RETRIABLE_STATUS_CODES.has(status)) {
22
+ let retryAfterMs;
23
+
24
+ // Check for retry-after header (Anthropic SDK surfaces headers on error)
25
+ const headers = e.headers;
26
+ if (headers?.["retry-after"]) {
27
+ const retryAfterSec = parseFloat(headers["retry-after"]);
28
+ if (!isNaN(retryAfterSec)) {
29
+ retryAfterMs = retryAfterSec * 1000;
30
+ }
38
31
  }
39
- // Check error message for network-level failures
40
- const message = (e.message ?? "").toLowerCase();
41
- const code = e.code ?? "";
42
- if (RETRIABLE_ERROR_PATTERNS.some(p => message.includes(p.toLowerCase()) || code === p)) {
43
- return { retriable: true };
44
- }
45
- return { retriable: false };
32
+ return {
33
+ retriable: true,
34
+ statusCode: status,
35
+ retryAfterMs
36
+ };
37
+ }
38
+
39
+ // Check error message for network-level failures
40
+ const message = (e.message ?? "").toLowerCase();
41
+ const code = e.code ?? "";
42
+ if (RETRIABLE_ERROR_PATTERNS.some(p => message.includes(p.toLowerCase()) || code === p)) {
43
+ return {
44
+ retriable: true
45
+ };
46
+ }
47
+ return {
48
+ retriable: false
49
+ };
46
50
  }
51
+
47
52
  /**
48
53
  * Call an async function with automatic retry and exponential backoff.
49
54
  *
@@ -54,38 +59,38 @@ function isRetriable(err) {
54
59
  * );
55
60
  */
56
61
  export async function callWithRetry(fn, opts = {}) {
57
- const maxRetries = opts.maxRetries ?? 3;
58
- const baseDelayMs = opts.baseDelayMs ?? 2000;
59
- const maxDelayMs = opts.maxDelayMs ?? 30000;
60
- const label = opts.label ?? "api";
61
- let lastError;
62
- for (let attempt = 0; attempt <= maxRetries; attempt++) {
63
- try {
64
- return await fn();
65
- }
66
- catch (err) {
67
- lastError = err;
68
- if (attempt >= maxRetries)
69
- break;
70
- const { retriable, statusCode, retryAfterMs } = isRetriable(err);
71
- if (!retriable)
72
- throw err;
73
- // Exponential backoff: 2s → 8s → 30s
74
- let delayMs = Math.min(baseDelayMs * Math.pow(2, attempt), maxDelayMs);
75
- // 429 gets 4x multiplier the server is rate-limiting us
76
- if (statusCode === 429) {
77
- delayMs = retryAfterMs
78
- ? Math.min(retryAfterMs, maxDelayMs)
79
- : Math.min(delayMs * 4, maxDelayMs);
80
- }
81
- console.warn(`[${label}] Attempt ${attempt + 1}/${maxRetries + 1} failed` +
82
- (statusCode ? ` (HTTP ${statusCode})` : "") +
83
- ` — retrying in ${(delayMs / 1000).toFixed(1)}s: ${err.message?.slice(0, 100)}`);
84
- await sleep(delayMs);
85
- }
62
+ const maxRetries = opts.maxRetries ?? 3;
63
+ const baseDelayMs = opts.baseDelayMs ?? 2000;
64
+ const maxDelayMs = opts.maxDelayMs ?? 30000;
65
+ const label = opts.label ?? "api";
66
+ let lastError;
67
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
68
+ try {
69
+ return await fn();
70
+ } catch (err) {
71
+ lastError = err;
72
+ if (attempt >= maxRetries) break;
73
+ const {
74
+ retriable,
75
+ statusCode,
76
+ retryAfterMs
77
+ } = isRetriable(err);
78
+ if (!retriable) throw err;
79
+
80
+ // Exponential backoff: 2s 8s 30s
81
+ let delayMs = Math.min(baseDelayMs * Math.pow(2, attempt), maxDelayMs);
82
+
83
+ // 429 gets 4x multiplier — the server is rate-limiting us
84
+ if (statusCode === 429) {
85
+ delayMs = retryAfterMs ? Math.min(retryAfterMs, maxDelayMs) : Math.min(delayMs * 4, maxDelayMs);
86
+ }
87
+ console.warn(`[${label}] Attempt ${attempt + 1}/${maxRetries + 1} failed` + (statusCode ? ` (HTTP ${statusCode})` : "") + ` — retrying in ${(delayMs / 1000).toFixed(1)}s: ${err.message?.slice(0, 100)}`);
88
+ await sleep(delayMs);
86
89
  }
87
- throw lastError;
90
+ }
91
+ throw lastError;
88
92
  }
89
93
  function sleep(ms) {
90
- return new Promise(resolve => setTimeout(resolve, ms));
94
+ return new Promise(resolve => setTimeout(resolve, ms));
91
95
  }
96
+ //# sourceMappingURL=api-retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-retry.js","names":["RETRIABLE_STATUS_CODES","Set","RETRIABLE_ERROR_PATTERNS","isRetriable","err","retriable","e","status","statusCode","has","retryAfterMs","headers","retryAfterSec","parseFloat","isNaN","message","toLowerCase","code","some","p","includes","callWithRetry","fn","opts","maxRetries","baseDelayMs","maxDelayMs","label","lastError","attempt","delayMs","Math","min","pow","console","warn","toFixed","slice","sleep","ms","Promise","resolve","setTimeout"],"sources":["../../../src/cli/services/api-retry.ts"],"sourcesContent":["/**\n * API Retry Utility — shared exponential backoff for Anthropic API calls.\n *\n * Retries on: 429 (rate limit), 5xx (server error), 529 (overloaded),\n * timeout errors, and network errors.\n *\n * Respects `retry-after` header on 429 responses.\n * 429 gets a 4x delay multiplier since the server is actively rate-limiting.\n */\n\nexport interface RetryOptions {\n maxRetries?: number; // default 3\n baseDelayMs?: number; // default 2000\n maxDelayMs?: number; // default 30000\n label?: string; // for log messages\n}\n\nconst RETRIABLE_STATUS_CODES = new Set([429, 500, 502, 503, 504, 529]);\nconst RETRIABLE_ERROR_PATTERNS = [\n \"ECONNRESET\",\n \"ECONNREFUSED\",\n \"ETIMEDOUT\",\n \"ENOTFOUND\",\n \"fetch failed\",\n \"network\",\n \"socket hang up\",\n \"aborted\",\n];\n\nfunction isRetriable(err: unknown): { retriable: boolean; statusCode?: number; retryAfterMs?: number } {\n if (!err || typeof err !== \"object\") return { retriable: false };\n\n const e = err as Record<string, unknown>;\n\n // Anthropic SDK errors expose `.status` for HTTP status codes\n const status = (e.status as number) ?? (e.statusCode as number);\n if (status && RETRIABLE_STATUS_CODES.has(status)) {\n let retryAfterMs: number | undefined;\n\n // Check for retry-after header (Anthropic SDK surfaces headers on error)\n const headers = e.headers as Record<string, string> | undefined;\n if (headers?.[\"retry-after\"]) {\n const retryAfterSec = parseFloat(headers[\"retry-after\"]);\n if (!isNaN(retryAfterSec)) {\n retryAfterMs = retryAfterSec * 1000;\n }\n }\n\n return { retriable: true, statusCode: status, retryAfterMs };\n }\n\n // Check error message for network-level failures\n const message = ((e.message as string) ?? \"\").toLowerCase();\n const code = (e.code as string) ?? \"\";\n if (RETRIABLE_ERROR_PATTERNS.some(p => message.includes(p.toLowerCase()) || code === p)) {\n return { retriable: true };\n }\n\n return { retriable: false };\n}\n\n/**\n * Call an async function with automatic retry and exponential backoff.\n *\n * Usage:\n * const response = await callWithRetry(\n * () => client.messages.create({ ... }),\n * { label: \"decomposer\" }\n * );\n */\nexport async function callWithRetry<T>(\n fn: () => Promise<T>,\n opts: RetryOptions = {},\n): Promise<T> {\n const maxRetries = opts.maxRetries ?? 3;\n const baseDelayMs = opts.baseDelayMs ?? 2000;\n const maxDelayMs = opts.maxDelayMs ?? 30000;\n const label = opts.label ?? \"api\";\n\n let lastError: unknown;\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n try {\n return await fn();\n } catch (err) {\n lastError = err;\n\n if (attempt >= maxRetries) break;\n\n const { retriable, statusCode, retryAfterMs } = isRetriable(err);\n if (!retriable) throw err;\n\n // Exponential backoff: 2s → 8s → 30s\n let delayMs = Math.min(baseDelayMs * Math.pow(2, attempt), maxDelayMs);\n\n // 429 gets 4x multiplier — the server is rate-limiting us\n if (statusCode === 429) {\n delayMs = retryAfterMs\n ? Math.min(retryAfterMs, maxDelayMs)\n : Math.min(delayMs * 4, maxDelayMs);\n }\n\n console.warn(\n `[${label}] Attempt ${attempt + 1}/${maxRetries + 1} failed` +\n (statusCode ? ` (HTTP ${statusCode})` : \"\") +\n ` — retrying in ${(delayMs / 1000).toFixed(1)}s: ${(err as Error).message?.slice(0, 100)}`\n );\n\n await sleep(delayMs);\n }\n }\n\n throw lastError;\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA,MAAMA,sBAAsB,GAAG,IAAIC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACtE,MAAMC,wBAAwB,GAAG,CAC/B,YAAY,EACZ,cAAc,EACd,WAAW,EACX,WAAW,EACX,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,SAAS,CACV;AAED,SAASC,WAAWA,CAACC,GAAY,EAAsE;EACrG,IAAI,CAACA,GAAG,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE,OAAO;IAAEC,SAAS,EAAE;EAAM,CAAC;EAEhE,MAAMC,CAAC,GAAGF,GAA8B;;EAExC;EACA,MAAMG,MAAM,GAAID,CAAC,CAACC,MAAM,IAAgBD,CAAC,CAACE,UAAqB;EAC/D,IAAID,MAAM,IAAIP,sBAAsB,CAACS,GAAG,CAACF,MAAM,CAAC,EAAE;IAChD,IAAIG,YAAgC;;IAEpC;IACA,MAAMC,OAAO,GAAGL,CAAC,CAACK,OAA6C;IAC/D,IAAIA,OAAO,GAAG,aAAa,CAAC,EAAE;MAC5B,MAAMC,aAAa,GAAGC,UAAU,CAACF,OAAO,CAAC,aAAa,CAAC,CAAC;MACxD,IAAI,CAACG,KAAK,CAACF,aAAa,CAAC,EAAE;QACzBF,YAAY,GAAGE,aAAa,GAAG,IAAI;MACrC;IACF;IAEA,OAAO;MAAEP,SAAS,EAAE,IAAI;MAAEG,UAAU,EAAED,MAAM;MAAEG;IAAa,CAAC;EAC9D;;EAEA;EACA,MAAMK,OAAO,GAAG,CAAET,CAAC,CAACS,OAAO,IAAe,EAAE,EAAEC,WAAW,CAAC,CAAC;EAC3D,MAAMC,IAAI,GAAIX,CAAC,CAACW,IAAI,IAAe,EAAE;EACrC,IAAIf,wBAAwB,CAACgB,IAAI,CAACC,CAAC,IAAIJ,OAAO,CAACK,QAAQ,CAACD,CAAC,CAACH,WAAW,CAAC,CAAC,CAAC,IAAIC,IAAI,KAAKE,CAAC,CAAC,EAAE;IACvF,OAAO;MAAEd,SAAS,EAAE;IAAK,CAAC;EAC5B;EAEA,OAAO;IAAEA,SAAS,EAAE;EAAM,CAAC;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAegB,aAAaA,CACjCC,EAAoB,EACpBC,IAAkB,GAAG,CAAC,CAAC,EACX;EACZ,MAAMC,UAAU,GAAGD,IAAI,CAACC,UAAU,IAAI,CAAC;EACvC,MAAMC,WAAW,GAAGF,IAAI,CAACE,WAAW,IAAI,IAAI;EAC5C,MAAMC,UAAU,GAAGH,IAAI,CAACG,UAAU,IAAI,KAAK;EAC3C,MAAMC,KAAK,GAAGJ,IAAI,CAACI,KAAK,IAAI,KAAK;EAEjC,IAAIC,SAAkB;EAEtB,KAAK,IAAIC,OAAO,GAAG,CAAC,EAAEA,OAAO,IAAIL,UAAU,EAAEK,OAAO,EAAE,EAAE;IACtD,IAAI;MACF,OAAO,MAAMP,EAAE,CAAC,CAAC;IACnB,CAAC,CAAC,OAAOlB,GAAG,EAAE;MACZwB,SAAS,GAAGxB,GAAG;MAEf,IAAIyB,OAAO,IAAIL,UAAU,EAAE;MAE3B,MAAM;QAAEnB,SAAS;QAAEG,UAAU;QAAEE;MAAa,CAAC,GAAGP,WAAW,CAACC,GAAG,CAAC;MAChE,IAAI,CAACC,SAAS,EAAE,MAAMD,GAAG;;MAEzB;MACA,IAAI0B,OAAO,GAAGC,IAAI,CAACC,GAAG,CAACP,WAAW,GAAGM,IAAI,CAACE,GAAG,CAAC,CAAC,EAAEJ,OAAO,CAAC,EAAEH,UAAU,CAAC;;MAEtE;MACA,IAAIlB,UAAU,KAAK,GAAG,EAAE;QACtBsB,OAAO,GAAGpB,YAAY,GAClBqB,IAAI,CAACC,GAAG,CAACtB,YAAY,EAAEgB,UAAU,CAAC,GAClCK,IAAI,CAACC,GAAG,CAACF,OAAO,GAAG,CAAC,EAAEJ,UAAU,CAAC;MACvC;MAEAQ,OAAO,CAACC,IAAI,CACV,IAAIR,KAAK,aAAaE,OAAO,GAAG,CAAC,IAAIL,UAAU,GAAG,CAAC,SAAS,IAC3DhB,UAAU,GAAG,UAAUA,UAAU,GAAG,GAAG,EAAE,CAAC,GAC3C,kBAAkB,CAACsB,OAAO,GAAG,IAAI,EAAEM,OAAO,CAAC,CAAC,CAAC,MAAOhC,GAAG,CAAWW,OAAO,EAAEsB,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAC1F,CAAC;MAED,MAAMC,KAAK,CAACR,OAAO,CAAC;IACtB;EACF;EAEA,MAAMF,SAAS;AACjB;AAEA,SAASU,KAAKA,CAACC,EAAU,EAAiB;EACxC,OAAO,IAAIC,OAAO,CAACC,OAAO,IAAIC,UAAU,CAACD,OAAO,EAAEF,EAAE,CAAC,CAAC;AACxD","ignoreList":[]}
@@ -2,10 +2,10 @@
2
2
  * Auth Service — Supabase email/password auth with token management
3
3
  *
4
4
  * Same Supabase project as the macOS app. Users login with their
5
- * SwagManager credentials; the CLI stores JWT tokens locally.
5
+ * Whale credentials; the CLI stores JWT tokens locally.
6
6
  */
7
7
  import { type SupabaseClient } from "@supabase/supabase-js";
8
- import { type SwagManagerConfig } from "./config-store.js";
8
+ import { type WhaleConfig } from "./config-store.js";
9
9
  declare const SUPABASE_URL = "https://uaednwpxursknmwdeejn.supabase.co";
10
10
  declare const SUPABASE_ANON_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InVhZWRud3B4dXJza25td2RlZWpuIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NjA5OTcyMzMsImV4cCI6MjA3NjU3MzIzM30.N8jPwlyCBB5KJB5I-XaK6m-mq88rSR445AWFJJmwRCg";
11
11
  export { SUPABASE_URL, SUPABASE_ANON_KEY };
@@ -13,7 +13,7 @@ export declare function createAuthenticatedClient(accessToken: string): Supabase
13
13
  export interface AuthResult {
14
14
  success: boolean;
15
15
  error?: string;
16
- config?: SwagManagerConfig;
16
+ config?: WhaleConfig;
17
17
  }
18
18
  export interface StoreInfo {
19
19
  id: string;
@@ -2,180 +2,257 @@
2
2
  * Auth Service — Supabase email/password auth with token management
3
3
  *
4
4
  * Same Supabase project as the macOS app. Users login with their
5
- * SwagManager credentials; the CLI stores JWT tokens locally.
5
+ * Whale credentials; the CLI stores JWT tokens locally.
6
6
  */
7
+
7
8
  import { createClient } from "@supabase/supabase-js";
8
9
  import { loadConfig, saveConfig, clearConfig, updateConfig } from "./config-store.js";
10
+
9
11
  // Public credentials (same as SupabaseConfig.swift)
10
12
  const SUPABASE_URL = "https://uaednwpxursknmwdeejn.supabase.co";
11
13
  const SUPABASE_ANON_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InVhZWRud3B4dXJza25td2RlZWpuIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NjA5OTcyMzMsImV4cCI6MjA3NjU3MzIzM30.N8jPwlyCBB5KJB5I-XaK6m-mq88rSR445AWFJJmwRCg";
12
14
  export { SUPABASE_URL, SUPABASE_ANON_KEY };
15
+
13
16
  // Create a bare Supabase client (no stored session)
14
17
  function createAnonClient() {
15
- return createClient(SUPABASE_URL, SUPABASE_ANON_KEY, {
16
- auth: { persistSession: false, autoRefreshToken: false },
17
- });
18
+ return createClient(SUPABASE_URL, SUPABASE_ANON_KEY, {
19
+ auth: {
20
+ persistSession: false,
21
+ autoRefreshToken: false
22
+ }
23
+ });
18
24
  }
25
+
19
26
  // Create a Supabase client authenticated with a user's JWT
20
27
  export function createAuthenticatedClient(accessToken) {
21
- return createClient(SUPABASE_URL, SUPABASE_ANON_KEY, {
22
- auth: { persistSession: false, autoRefreshToken: false },
23
- global: { headers: { Authorization: `Bearer ${accessToken}` } },
24
- });
28
+ return createClient(SUPABASE_URL, SUPABASE_ANON_KEY, {
29
+ auth: {
30
+ persistSession: false,
31
+ autoRefreshToken: false
32
+ },
33
+ global: {
34
+ headers: {
35
+ Authorization: `Bearer ${accessToken}`
36
+ }
37
+ }
38
+ });
25
39
  }
26
40
  // Sign in with email/password
27
41
  export async function signIn(email, password) {
28
- const client = createAnonClient();
29
- const { data, error } = await client.auth.signInWithPassword({ email, password });
30
- if (error)
31
- return { success: false, error: error.message };
32
- if (!data.session)
33
- return { success: false, error: "No session returned" };
34
- const config = {
35
- access_token: data.session.access_token,
36
- refresh_token: data.session.refresh_token,
37
- user_id: data.user.id,
38
- email: data.user.email || email,
39
- expires_at: data.session.expires_at,
40
- };
41
- // Try to extract store from JWT user_metadata first (most reliable)
42
- const meta = data.user.user_metadata;
43
- if (meta?.vendor_id) {
44
- config.store_id = meta.vendor_id;
45
- config.store_name = meta.store_name || undefined;
46
- }
47
- // If no store from metadata, try querying
48
- if (!config.store_id) {
49
- const stores = await getStoresForUser(config.access_token, data.user.id);
50
- if (stores.length === 1) {
51
- config.store_id = stores[0].id;
52
- config.store_name = stores[0].name;
53
- }
42
+ const client = createAnonClient();
43
+ const {
44
+ data,
45
+ error
46
+ } = await client.auth.signInWithPassword({
47
+ email,
48
+ password
49
+ });
50
+ if (error) return {
51
+ success: false,
52
+ error: error.message
53
+ };
54
+ if (!data.session) return {
55
+ success: false,
56
+ error: "No session returned"
57
+ };
58
+ const config = {
59
+ access_token: data.session.access_token,
60
+ refresh_token: data.session.refresh_token,
61
+ user_id: data.user.id,
62
+ email: data.user.email || email,
63
+ expires_at: data.session.expires_at
64
+ };
65
+
66
+ // Try to extract store from JWT user_metadata first (most reliable)
67
+ const meta = data.user.user_metadata;
68
+ if (meta?.vendor_id) {
69
+ config.store_id = meta.vendor_id;
70
+ config.store_name = meta.store_name || undefined;
71
+ }
72
+
73
+ // If no store from metadata, try querying
74
+ if (!config.store_id) {
75
+ const stores = await getStoresForUser(config.access_token, data.user.id);
76
+ if (stores.length === 1) {
77
+ config.store_id = stores[0].id;
78
+ config.store_name = stores[0].name;
54
79
  }
55
- saveConfig(config);
56
- return { success: true, config };
80
+ }
81
+ saveConfig(config);
82
+ return {
83
+ success: true,
84
+ config
85
+ };
57
86
  }
87
+
58
88
  // Sign up with email/password
59
89
  export async function signUp(email, password) {
60
- const client = createAnonClient();
61
- const { data, error } = await client.auth.signUp({ email, password });
62
- if (error)
63
- return { success: false, error: error.message };
64
- if (!data.session) {
65
- return { success: true, error: "Check your email to confirm your account" };
66
- }
67
- const config = {
68
- access_token: data.session.access_token,
69
- refresh_token: data.session.refresh_token,
70
- user_id: data.user.id,
71
- email: data.user.email || email,
72
- expires_at: data.session.expires_at,
90
+ const client = createAnonClient();
91
+ const {
92
+ data,
93
+ error
94
+ } = await client.auth.signUp({
95
+ email,
96
+ password
97
+ });
98
+ if (error) return {
99
+ success: false,
100
+ error: error.message
101
+ };
102
+ if (!data.session) {
103
+ return {
104
+ success: true,
105
+ error: "Check your email to confirm your account"
73
106
  };
74
- saveConfig(config);
75
- return { success: true, config };
107
+ }
108
+ const config = {
109
+ access_token: data.session.access_token,
110
+ refresh_token: data.session.refresh_token,
111
+ user_id: data.user.id,
112
+ email: data.user.email || email,
113
+ expires_at: data.session.expires_at
114
+ };
115
+ saveConfig(config);
116
+ return {
117
+ success: true,
118
+ config
119
+ };
76
120
  }
121
+
77
122
  // Refresh an expired session
78
123
  export async function refreshSession() {
79
- const config = loadConfig();
80
- if (!config.refresh_token)
81
- return { success: false, error: "Not logged in" };
82
- const client = createAnonClient();
83
- const { data, error } = await client.auth.refreshSession({
84
- refresh_token: config.refresh_token,
85
- });
86
- if (error) {
87
- clearConfig();
88
- return { success: false, error: `Session expired: ${error.message}` };
89
- }
90
- if (!data.session) {
91
- clearConfig();
92
- return { success: false, error: "Could not refresh session" };
93
- }
94
- const updated = {
95
- ...config,
96
- access_token: data.session.access_token,
97
- refresh_token: data.session.refresh_token,
98
- expires_at: data.session.expires_at,
124
+ const config = loadConfig();
125
+ if (!config.refresh_token) return {
126
+ success: false,
127
+ error: "Not logged in"
128
+ };
129
+ const client = createAnonClient();
130
+ const {
131
+ data,
132
+ error
133
+ } = await client.auth.refreshSession({
134
+ refresh_token: config.refresh_token
135
+ });
136
+ if (error) {
137
+ clearConfig();
138
+ return {
139
+ success: false,
140
+ error: `Session expired: ${error.message}`
141
+ };
142
+ }
143
+ if (!data.session) {
144
+ clearConfig();
145
+ return {
146
+ success: false,
147
+ error: "Could not refresh session"
99
148
  };
100
- saveConfig(updated);
101
- return { success: true, config: updated };
149
+ }
150
+ const updated = {
151
+ ...config,
152
+ access_token: data.session.access_token,
153
+ refresh_token: data.session.refresh_token,
154
+ expires_at: data.session.expires_at
155
+ };
156
+ saveConfig(updated);
157
+ return {
158
+ success: true,
159
+ config: updated
160
+ };
102
161
  }
162
+
103
163
  // Get a valid access token, auto-refreshing if needed
104
164
  export async function getValidToken() {
105
- const config = loadConfig();
106
- if (!config.access_token)
107
- return null;
108
- // Check if token is expired (with 5-min buffer)
109
- // If expires_at is missing, force a refresh to be safe
110
- const now = Math.floor(Date.now() / 1000);
111
- if (!config.expires_at || config.expires_at - 300 < now) {
112
- const result = await refreshSession();
113
- if (!result.success)
114
- return null;
115
- return result.config.access_token;
116
- }
117
- return config.access_token;
165
+ const config = loadConfig();
166
+ if (!config.access_token) return null;
167
+
168
+ // Check if token is expired (with 5-min buffer)
169
+ // If expires_at is missing, force a refresh to be safe
170
+ const now = Math.floor(Date.now() / 1000);
171
+ if (!config.expires_at || config.expires_at - 300 < now) {
172
+ const result = await refreshSession();
173
+ if (!result.success) return null;
174
+ return result.config.access_token;
175
+ }
176
+ return config.access_token;
118
177
  }
178
+
119
179
  // Sign out — clear stored tokens
120
180
  export function signOut() {
121
- clearConfig();
181
+ clearConfig();
122
182
  }
183
+
123
184
  // Get stores for the authenticated user
124
185
  // With a user JWT, RLS on the stores table handles access control directly —
125
186
  // same approach the platform exchange endpoint uses. For service role keys,
126
187
  // we fall back to store_members to prevent cross-tenant leakage.
127
188
  export async function getStoresForUser(accessToken, userId) {
128
- if (!userId)
129
- return [];
130
- const client = createAuthenticatedClient(accessToken);
131
- // Primary: query stores directly — RLS filters to user's stores
132
- const { data: stores, error: storeError } = await client
133
- .from("stores")
134
- .select("id, store_name, slug")
135
- .limit(20);
136
- if (!storeError && stores && stores.length > 0) {
137
- return stores.map((s) => ({ id: s.id, name: s.store_name, slug: s.slug }));
138
- }
139
- // Fallback 1: try via users table (auth_user_id → store_id)
140
- const { data: userData } = await client
141
- .from("users")
142
- .select("store_id")
143
- .eq("auth_user_id", userId);
144
- if (userData && userData.length > 0) {
145
- const storeIds = userData.map((u) => u.store_id).filter(Boolean);
146
- if (storeIds.length > 0) {
147
- const { data: userStores } = await client
148
- .from("stores")
149
- .select("id, store_name, slug")
150
- .in("id", storeIds);
151
- if (userStores && userStores.length > 0) {
152
- return userStores.map((s) => ({ id: s.id, name: s.store_name, slug: s.slug }));
153
- }
154
- }
189
+ if (!userId) return [];
190
+ const client = createAuthenticatedClient(accessToken);
191
+
192
+ // Primary: query stores directly — RLS filters to user's stores
193
+ const {
194
+ data: stores,
195
+ error: storeError
196
+ } = await client.from("stores").select("id, store_name, slug").limit(20);
197
+ if (!storeError && stores && stores.length > 0) {
198
+ return stores.map(s => ({
199
+ id: s.id,
200
+ name: s.store_name,
201
+ slug: s.slug
202
+ }));
203
+ }
204
+
205
+ // Fallback 1: try via users table (auth_user_id → store_id)
206
+ const {
207
+ data: userData
208
+ } = await client.from("users").select("store_id").eq("auth_user_id", userId);
209
+ if (userData && userData.length > 0) {
210
+ const storeIds = userData.map(u => u.store_id).filter(Boolean);
211
+ if (storeIds.length > 0) {
212
+ const {
213
+ data: userStores
214
+ } = await client.from("stores").select("id, store_name, slug").in("id", storeIds);
215
+ if (userStores && userStores.length > 0) {
216
+ return userStores.map(s => ({
217
+ id: s.id,
218
+ name: s.store_name,
219
+ slug: s.slug
220
+ }));
221
+ }
155
222
  }
156
- // Fallback 2: store_members table
157
- const { data: memberships } = await client
158
- .from("store_members")
159
- .select("store_id")
160
- .eq("user_id", userId);
161
- if (memberships && memberships.length > 0) {
162
- const storeIds = memberships.map((m) => m.store_id);
163
- const { data: memberStores } = await client
164
- .from("stores")
165
- .select("id, store_name, slug")
166
- .in("id", storeIds);
167
- if (memberStores && memberStores.length > 0) {
168
- return memberStores.map((s) => ({ id: s.id, name: s.store_name, slug: s.slug }));
169
- }
223
+ }
224
+
225
+ // Fallback 2: store_members table
226
+ const {
227
+ data: memberships
228
+ } = await client.from("store_members").select("store_id").eq("user_id", userId);
229
+ if (memberships && memberships.length > 0) {
230
+ const storeIds = memberships.map(m => m.store_id);
231
+ const {
232
+ data: memberStores
233
+ } = await client.from("stores").select("id, store_name, slug").in("id", storeIds);
234
+ if (memberStores && memberStores.length > 0) {
235
+ return memberStores.map(s => ({
236
+ id: s.id,
237
+ name: s.store_name,
238
+ slug: s.slug
239
+ }));
170
240
  }
171
- return [];
241
+ }
242
+ return [];
172
243
  }
244
+
173
245
  // Select a store and save to config
174
246
  export function selectStore(storeId, storeName) {
175
- updateConfig({ store_id: storeId, store_name: storeName });
247
+ updateConfig({
248
+ store_id: storeId,
249
+ store_name: storeName
250
+ });
176
251
  }
252
+
177
253
  // Check if logged in (has auth tokens)
178
254
  export function isLoggedIn() {
179
- const config = loadConfig();
180
- return !!(config.access_token && config.refresh_token);
255
+ const config = loadConfig();
256
+ return !!(config.access_token && config.refresh_token);
181
257
  }
258
+ //# sourceMappingURL=auth-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-service.js","names":["createClient","loadConfig","saveConfig","clearConfig","updateConfig","SUPABASE_URL","SUPABASE_ANON_KEY","createAnonClient","auth","persistSession","autoRefreshToken","createAuthenticatedClient","accessToken","global","headers","Authorization","signIn","email","password","client","data","error","signInWithPassword","success","message","session","config","access_token","refresh_token","user_id","user","id","expires_at","meta","user_metadata","vendor_id","store_id","store_name","undefined","stores","getStoresForUser","length","name","signUp","refreshSession","updated","getValidToken","now","Math","floor","Date","result","signOut","userId","storeError","from","select","limit","map","s","slug","userData","eq","storeIds","u","filter","Boolean","userStores","in","memberships","m","memberStores","selectStore","storeId","storeName","isLoggedIn"],"sources":["../../../src/cli/services/auth-service.ts"],"sourcesContent":["/**\n * Auth Service — Supabase email/password auth with token management\n *\n * Same Supabase project as the macOS app. Users login with their\n * Whale credentials; the CLI stores JWT tokens locally.\n */\n\nimport { createClient, type SupabaseClient } from \"@supabase/supabase-js\";\nimport { loadConfig, saveConfig, clearConfig, updateConfig, type WhaleConfig } from \"./config-store.js\";\n\n// Public credentials (same as SupabaseConfig.swift)\nconst SUPABASE_URL = \"https://uaednwpxursknmwdeejn.supabase.co\";\nconst SUPABASE_ANON_KEY =\n \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InVhZWRud3B4dXJza25td2RlZWpuIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NjA5OTcyMzMsImV4cCI6MjA3NjU3MzIzM30.N8jPwlyCBB5KJB5I-XaK6m-mq88rSR445AWFJJmwRCg\";\n\nexport { SUPABASE_URL, SUPABASE_ANON_KEY };\n\n// Create a bare Supabase client (no stored session)\nfunction createAnonClient(): SupabaseClient {\n return createClient(SUPABASE_URL, SUPABASE_ANON_KEY, {\n auth: { persistSession: false, autoRefreshToken: false },\n });\n}\n\n// Create a Supabase client authenticated with a user's JWT\nexport function createAuthenticatedClient(accessToken: string): SupabaseClient {\n return createClient(SUPABASE_URL, SUPABASE_ANON_KEY, {\n auth: { persistSession: false, autoRefreshToken: false },\n global: { headers: { Authorization: `Bearer ${accessToken}` } },\n });\n}\n\nexport interface AuthResult {\n success: boolean;\n error?: string;\n config?: WhaleConfig;\n}\n\nexport interface StoreInfo {\n id: string;\n name: string;\n slug?: string;\n}\n\n// Sign in with email/password\nexport async function signIn(email: string, password: string): Promise<AuthResult> {\n const client = createAnonClient();\n const { data, error } = await client.auth.signInWithPassword({ email, password });\n\n if (error) return { success: false, error: error.message };\n if (!data.session) return { success: false, error: \"No session returned\" };\n\n const config: WhaleConfig = {\n access_token: data.session.access_token,\n refresh_token: data.session.refresh_token,\n user_id: data.user.id,\n email: data.user.email || email,\n expires_at: data.session.expires_at,\n };\n\n // Try to extract store from JWT user_metadata first (most reliable)\n const meta = data.user.user_metadata;\n if (meta?.vendor_id) {\n config.store_id = meta.vendor_id;\n config.store_name = meta.store_name || undefined;\n }\n\n // If no store from metadata, try querying\n if (!config.store_id) {\n const stores = await getStoresForUser(config.access_token!, data.user.id);\n if (stores.length === 1) {\n config.store_id = stores[0].id;\n config.store_name = stores[0].name;\n }\n }\n\n saveConfig(config);\n return { success: true, config };\n}\n\n// Sign up with email/password\nexport async function signUp(email: string, password: string): Promise<AuthResult> {\n const client = createAnonClient();\n const { data, error } = await client.auth.signUp({ email, password });\n\n if (error) return { success: false, error: error.message };\n if (!data.session) {\n return { success: true, error: \"Check your email to confirm your account\" };\n }\n\n const config: WhaleConfig = {\n access_token: data.session.access_token,\n refresh_token: data.session.refresh_token,\n user_id: data.user!.id,\n email: data.user!.email || email,\n expires_at: data.session.expires_at,\n };\n\n saveConfig(config);\n return { success: true, config };\n}\n\n// Refresh an expired session\nexport async function refreshSession(): Promise<AuthResult> {\n const config = loadConfig();\n if (!config.refresh_token) return { success: false, error: \"Not logged in\" };\n\n const client = createAnonClient();\n const { data, error } = await client.auth.refreshSession({\n refresh_token: config.refresh_token,\n });\n\n if (error) {\n clearConfig();\n return { success: false, error: `Session expired: ${error.message}` };\n }\n if (!data.session) {\n clearConfig();\n return { success: false, error: \"Could not refresh session\" };\n }\n\n const updated: WhaleConfig = {\n ...config,\n access_token: data.session.access_token,\n refresh_token: data.session.refresh_token,\n expires_at: data.session.expires_at,\n };\n saveConfig(updated);\n return { success: true, config: updated };\n}\n\n// Get a valid access token, auto-refreshing if needed\nexport async function getValidToken(): Promise<string | null> {\n const config = loadConfig();\n if (!config.access_token) return null;\n\n // Check if token is expired (with 5-min buffer)\n // If expires_at is missing, force a refresh to be safe\n const now = Math.floor(Date.now() / 1000);\n if (!config.expires_at || config.expires_at - 300 < now) {\n const result = await refreshSession();\n if (!result.success) return null;\n return result.config!.access_token!;\n }\n\n return config.access_token;\n}\n\n// Sign out — clear stored tokens\nexport function signOut(): void {\n clearConfig();\n}\n\n// Get stores for the authenticated user\n// With a user JWT, RLS on the stores table handles access control directly —\n// same approach the platform exchange endpoint uses. For service role keys,\n// we fall back to store_members to prevent cross-tenant leakage.\nexport async function getStoresForUser(\n accessToken: string,\n userId: string\n): Promise<StoreInfo[]> {\n if (!userId) return [];\n\n const client = createAuthenticatedClient(accessToken);\n\n // Primary: query stores directly — RLS filters to user's stores\n const { data: stores, error: storeError } = await client\n .from(\"stores\")\n .select(\"id, store_name, slug\")\n .limit(20);\n\n if (!storeError && stores && stores.length > 0) {\n return stores.map((s: any) => ({ id: s.id, name: s.store_name, slug: s.slug }));\n }\n\n // Fallback 1: try via users table (auth_user_id → store_id)\n const { data: userData } = await client\n .from(\"users\")\n .select(\"store_id\")\n .eq(\"auth_user_id\", userId);\n\n if (userData && userData.length > 0) {\n const storeIds = userData.map((u: any) => u.store_id).filter(Boolean);\n if (storeIds.length > 0) {\n const { data: userStores } = await client\n .from(\"stores\")\n .select(\"id, store_name, slug\")\n .in(\"id\", storeIds);\n if (userStores && userStores.length > 0) {\n return userStores.map((s: any) => ({ id: s.id, name: s.store_name, slug: s.slug }));\n }\n }\n }\n\n // Fallback 2: store_members table\n const { data: memberships } = await client\n .from(\"store_members\")\n .select(\"store_id\")\n .eq(\"user_id\", userId);\n\n if (memberships && memberships.length > 0) {\n const storeIds = memberships.map((m: any) => m.store_id);\n const { data: memberStores } = await client\n .from(\"stores\")\n .select(\"id, store_name, slug\")\n .in(\"id\", storeIds);\n if (memberStores && memberStores.length > 0) {\n return memberStores.map((s: any) => ({ id: s.id, name: s.store_name, slug: s.slug }));\n }\n }\n\n return [];\n}\n\n// Select a store and save to config\nexport function selectStore(storeId: string, storeName: string): void {\n updateConfig({ store_id: storeId, store_name: storeName });\n}\n\n// Check if logged in (has auth tokens)\nexport function isLoggedIn(): boolean {\n const config = loadConfig();\n return !!(config.access_token && config.refresh_token);\n}\n"],"mappings":"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","ignoreList":[]}