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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-manager.js","names":["readFileSync","writeFileSync","existsSync","mkdirSync","MEMORY_DIR","MEMORY_FILE","ensureDataDir","ensureMemoryDir","recursive","loadMemory","trim","addMemory","fact","existing","entry","includes","success","message","updated","removeMemory","pattern","content","lines","split","lower","toLowerCase","filtered","filter","line","length","removed","join","listMemories","l","startsWith","map","replace"],"sources":["../../../src/cli/services/memory-manager.ts"],"sourcesContent":["/**\n * Memory Manager — persistent /remember and /forget across sessions\n *\n * Extracted from agent-loop.ts for single-responsibility.\n * All consumers should import from agent-loop.ts (re-export facade).\n */\n\nimport { readFileSync, writeFileSync, existsSync, mkdirSync } from \"fs\";\nimport { MEMORY_DIR, MEMORY_FILE, ensureDataDir } from \"./paths.js\";\n\nfunction ensureMemoryDir(): void {\n ensureDataDir();\n if (!existsSync(MEMORY_DIR)) mkdirSync(MEMORY_DIR, { recursive: true });\n}\n\nexport function loadMemory(): string {\n if (!existsSync(MEMORY_FILE)) return \"\";\n try {\n return readFileSync(MEMORY_FILE, \"utf-8\").trim();\n } catch { return \"\"; }\n}\n\nexport function addMemory(fact: string): { success: boolean; message: string } {\n ensureMemoryDir();\n const existing = loadMemory();\n const entry = `- ${fact}`;\n\n // Check for duplicate\n if (existing.includes(fact)) {\n return { success: false, message: \"Already remembered.\" };\n }\n\n const updated = existing ? existing + \"\\n\" + entry : entry;\n writeFileSync(MEMORY_FILE, updated + \"\\n\", \"utf-8\");\n return { success: true, message: `Remembered: ${fact}` };\n}\n\nexport function removeMemory(pattern: string): { success: boolean; message: string } {\n if (!existsSync(MEMORY_FILE)) return { success: false, message: \"No memories stored.\" };\n\n const content = readFileSync(MEMORY_FILE, \"utf-8\");\n const lines = content.split(\"\\n\");\n const lower = pattern.toLowerCase();\n const filtered = lines.filter(line => !line.toLowerCase().includes(lower));\n\n if (filtered.length === lines.length) {\n return { success: false, message: `No memory matching \"${pattern}\" found.` };\n }\n\n const removed = lines.length - filtered.length;\n writeFileSync(MEMORY_FILE, filtered.join(\"\\n\"), \"utf-8\");\n return { success: true, message: `Forgot ${removed} memor${removed === 1 ? \"y\" : \"ies\"} matching \"${pattern}\".` };\n}\n\nexport function listMemories(): string[] {\n const content = loadMemory();\n if (!content) return [];\n return content.split(\"\\n\").filter(l => l.trim().startsWith(\"- \")).map(l => l.replace(/^- /, \"\").trim());\n}\n"],"mappings":"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","ignoreList":[]}
@@ -4,68 +4,83 @@
4
4
  * Extracted from agent-loop.ts for single-responsibility.
5
5
  * All consumers should import from agent-loop.ts (re-export facade).
6
6
  */
7
+
7
8
  import { MODEL_MAP } from "../../shared/constants.js";
8
9
  import { estimateCostUsd as coreEstimateCostUsd } from "../../shared/agent-core.js";
9
10
  import { loadConfig, updateConfig } from "./config-store.js";
11
+
10
12
  /** CLI-only: current model ID for the active session */
11
13
  let activeModel = "claude-opus-4-6";
14
+
12
15
  // Load persisted default model on import
13
16
  try {
14
- const cfg = loadConfig();
15
- if (cfg.default_model) {
16
- const id = MODEL_MAP[cfg.default_model.toLowerCase()];
17
- if (id)
18
- activeModel = id;
19
- }
20
- }
21
- catch { /* use default */ }
17
+ const cfg = loadConfig();
18
+ if (cfg.default_model) {
19
+ const id = MODEL_MAP[cfg.default_model.toLowerCase()];
20
+ if (id) activeModel = id;
21
+ }
22
+ } catch {/* use default */}
23
+
22
24
  /** Reverse map: full model ID → short key */
23
25
  const REVERSE_MAP = {};
24
26
  for (const [key, id] of Object.entries(MODEL_MAP)) {
25
- REVERSE_MAP[id] = key;
27
+ REVERSE_MAP[id] = key;
26
28
  }
27
29
  export function setModel(name, persist = true) {
28
- // Try direct key match first (e.g. "opus", "bedrock-sonnet", "gemini-pro")
29
- const directId = MODEL_MAP[name.toLowerCase()];
30
- if (directId) {
31
- activeModel = directId;
32
- if (persist)
33
- try {
34
- updateConfig({ default_model: name.toLowerCase() });
35
- }
36
- catch { /* best effort */ }
37
- return { success: true, model: activeModel };
38
- }
39
- // Legacy: strip "claude-" prefix for backward compat (e.g. "claude-opus" → "opus")
40
- const legacy = name.toLowerCase().replace(/^claude-?/, "").replace(/-.*/, "");
41
- const legacyId = MODEL_MAP[legacy];
42
- if (legacyId) {
43
- activeModel = legacyId;
44
- if (persist)
45
- try {
46
- updateConfig({ default_model: legacy });
47
- }
48
- catch { /* best effort */ }
49
- return { success: true, model: activeModel };
50
- }
51
- return { success: false, model: activeModel, error: `Unknown model: "${name}". Valid: ${Object.keys(MODEL_MAP).join(", ")}` };
30
+ // Try direct key match first (e.g. "opus", "bedrock-sonnet", "gemini-pro")
31
+ const directId = MODEL_MAP[name.toLowerCase()];
32
+ if (directId) {
33
+ activeModel = directId;
34
+ if (persist) try {
35
+ updateConfig({
36
+ default_model: name.toLowerCase()
37
+ });
38
+ } catch {/* best effort */}
39
+ return {
40
+ success: true,
41
+ model: activeModel
42
+ };
43
+ }
44
+
45
+ // Legacy: strip "claude-" prefix for backward compat (e.g. "claude-opus" → "opus")
46
+ const legacy = name.toLowerCase().replace(/^claude-?/, "").replace(/-.*/, "");
47
+ const legacyId = MODEL_MAP[legacy];
48
+ if (legacyId) {
49
+ activeModel = legacyId;
50
+ if (persist) try {
51
+ updateConfig({
52
+ default_model: legacy
53
+ });
54
+ } catch {/* best effort */}
55
+ return {
56
+ success: true,
57
+ model: activeModel
58
+ };
59
+ }
60
+ return {
61
+ success: false,
62
+ model: activeModel,
63
+ error: `Unknown model: "${name}". Valid: ${Object.keys(MODEL_MAP).join(", ")}`
64
+ };
52
65
  }
66
+
53
67
  /** Internal: set model by full ID (used for restoring after fallback) */
54
68
  export function setModelById(modelId) {
55
- activeModel = modelId;
69
+ activeModel = modelId;
56
70
  }
57
71
  export function getModel() {
58
- return activeModel;
72
+ return activeModel;
59
73
  }
60
74
  export function getModelShortName() {
61
- if (activeModel === "auto")
62
- return "auto";
63
- return REVERSE_MAP[activeModel] || "sonnet";
75
+ if (activeModel === "auto") return "auto";
76
+ return REVERSE_MAP[activeModel] || "sonnet";
64
77
  }
78
+
65
79
  /** Check if the current model is set to auto-routing */
66
80
  export function isAutoRouting() {
67
- return activeModel === "auto";
81
+ return activeModel === "auto";
68
82
  }
69
83
  export function estimateCostUsd(inputTokens, outputTokens, model, thinkingTokens = 0, cacheReadTokens = 0, cacheCreationTokens = 0) {
70
- return coreEstimateCostUsd(inputTokens, outputTokens, model || activeModel, thinkingTokens, cacheReadTokens, cacheCreationTokens);
84
+ return coreEstimateCostUsd(inputTokens, outputTokens, model || activeModel, thinkingTokens, cacheReadTokens, cacheCreationTokens);
71
85
  }
86
+ //# sourceMappingURL=model-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-manager.js","names":["MODEL_MAP","estimateCostUsd","coreEstimateCostUsd","loadConfig","updateConfig","activeModel","cfg","default_model","id","toLowerCase","REVERSE_MAP","key","Object","entries","setModel","name","persist","directId","success","model","legacy","replace","legacyId","error","keys","join","setModelById","modelId","getModel","getModelShortName","isAutoRouting","inputTokens","outputTokens","thinkingTokens","cacheReadTokens","cacheCreationTokens"],"sources":["../../../src/cli/services/model-manager.ts"],"sourcesContent":["/**\n * Model Manager — CLI model selection and cost tracking\n *\n * Extracted from agent-loop.ts for single-responsibility.\n * All consumers should import from agent-loop.ts (re-export facade).\n */\n\nimport { MODEL_MAP } from \"../../shared/constants.js\";\nimport { estimateCostUsd as coreEstimateCostUsd } from \"../../shared/agent-core.js\";\nimport { loadConfig, updateConfig } from \"./config-store.js\";\n\n/** CLI-only: current model ID for the active session */\nlet activeModel = \"claude-opus-4-6\";\n\n// Load persisted default model on import\ntry {\n const cfg = loadConfig();\n if (cfg.default_model) {\n const id = MODEL_MAP[cfg.default_model.toLowerCase()];\n if (id) activeModel = id;\n }\n} catch { /* use default */ }\n\n/** Reverse map: full model ID → short key */\nconst REVERSE_MAP: Record<string, string> = {};\nfor (const [key, id] of Object.entries(MODEL_MAP)) {\n REVERSE_MAP[id] = key;\n}\n\nexport function setModel(name: string, persist = true): { success: boolean; model: string; error?: string } {\n // Try direct key match first (e.g. \"opus\", \"bedrock-sonnet\", \"gemini-pro\")\n const directId = MODEL_MAP[name.toLowerCase()];\n if (directId) {\n activeModel = directId;\n if (persist) try { updateConfig({ default_model: name.toLowerCase() }); } catch { /* best effort */ }\n return { success: true, model: activeModel };\n }\n\n // Legacy: strip \"claude-\" prefix for backward compat (e.g. \"claude-opus\" → \"opus\")\n const legacy = name.toLowerCase().replace(/^claude-?/, \"\").replace(/-.*/, \"\");\n const legacyId = MODEL_MAP[legacy];\n if (legacyId) {\n activeModel = legacyId;\n if (persist) try { updateConfig({ default_model: legacy }); } catch { /* best effort */ }\n return { success: true, model: activeModel };\n }\n\n return { success: false, model: activeModel, error: `Unknown model: \"${name}\". Valid: ${Object.keys(MODEL_MAP).join(\", \")}` };\n}\n\n/** Internal: set model by full ID (used for restoring after fallback) */\nexport function setModelById(modelId: string): void {\n activeModel = modelId;\n}\n\nexport function getModel(): string {\n return activeModel;\n}\n\nexport function getModelShortName(): string {\n if (activeModel === \"auto\") return \"auto\";\n return REVERSE_MAP[activeModel] || \"sonnet\";\n}\n\n/** Check if the current model is set to auto-routing */\nexport function isAutoRouting(): boolean {\n return activeModel === \"auto\";\n}\n\nexport function estimateCostUsd(inputTokens: number, outputTokens: number, model?: string, thinkingTokens = 0, cacheReadTokens = 0, cacheCreationTokens = 0): number {\n return coreEstimateCostUsd(inputTokens, outputTokens, model || activeModel, thinkingTokens, cacheReadTokens, cacheCreationTokens);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -5,11 +5,18 @@
5
5
  * by Haiku to determine the optimal model (haiku/sonnet/opus) based on task
6
6
  * complexity. Matches Gemini CLI's auto-routing feature.
7
7
  */
8
+
8
9
  import { MODELS } from "../../shared/constants.js";
9
10
  import { callServerProxy } from "../../shared/api-client.js";
11
+
12
+ // ============================================================================
13
+ // TYPES
14
+ // ============================================================================
15
+
10
16
  // ============================================================================
11
17
  // CONSTANTS
12
18
  // ============================================================================
19
+
13
20
  const CLASSIFIER_MODEL = MODELS.HAIKU;
14
21
  const CLASSIFIER_PROMPT = `Classify this user request by complexity. Respond with ONLY a JSON object.
15
22
 
@@ -22,128 +29,151 @@ User request: {message}
22
29
 
23
30
  Respond: {"model": "haiku"|"sonnet"|"opus", "reasoning": "brief reason", "confidence": 0.0-1.0}`;
24
31
  const MODEL_ID_MAP = {
25
- haiku: MODELS.HAIKU,
26
- sonnet: MODELS.SONNET,
27
- opus: MODELS.OPUS,
32
+ haiku: MODELS.HAIKU,
33
+ sonnet: MODELS.SONNET,
34
+ opus: MODELS.OPUS
28
35
  };
29
36
  const DEFAULT_ROUTE = {
30
- model: "sonnet",
31
- reasoning: "default fallback",
32
- confidence: 0.5,
37
+ model: "sonnet",
38
+ reasoning: "default fallback",
39
+ confidence: 0.5
33
40
  };
41
+
34
42
  // ============================================================================
35
43
  // CLASSIFIER
36
44
  // ============================================================================
45
+
37
46
  /**
38
47
  * Classify a user message to determine the best model.
39
48
  * Uses Haiku via server proxy for fast, cheap classification.
40
49
  */
41
50
  export async function classifyAndRoute(userMessage, serverUrl, authToken) {
42
- try {
43
- const prompt = CLASSIFIER_PROMPT.replace("{message}", userMessage);
44
- const apiConfig = {
45
- betas: [],
46
- contextManagement: { edits: [] },
47
- maxTokens: 256,
48
- };
49
- const stream = await callServerProxy({
50
- proxyUrl: `${serverUrl}/proxy`,
51
- token: authToken,
52
- model: CLASSIFIER_MODEL,
53
- system: [{ type: "text", text: "You are a task complexity classifier. Respond with only valid JSON." }],
54
- messages: [{ role: "user", content: prompt }],
55
- tools: [],
56
- apiConfig,
57
- timeoutMs: 5000,
58
- });
59
- // Collect the full text response from the SSE stream
60
- const text = await collectText(stream);
61
- return parseClassifierResponse(text);
62
- }
63
- catch {
64
- // On any error (network, timeout, parse), fall back to sonnet
65
- return DEFAULT_ROUTE;
66
- }
51
+ try {
52
+ const prompt = CLASSIFIER_PROMPT.replace("{message}", userMessage);
53
+ const apiConfig = {
54
+ betas: [],
55
+ contextManagement: {
56
+ edits: []
57
+ },
58
+ maxTokens: 256
59
+ };
60
+ const stream = await callServerProxy({
61
+ proxyUrl: `${serverUrl}/proxy`,
62
+ token: authToken,
63
+ model: CLASSIFIER_MODEL,
64
+ system: [{
65
+ type: "text",
66
+ text: "You are a task complexity classifier. Respond with only valid JSON."
67
+ }],
68
+ messages: [{
69
+ role: "user",
70
+ content: prompt
71
+ }],
72
+ tools: [],
73
+ apiConfig,
74
+ timeoutMs: 5000
75
+ });
76
+
77
+ // Collect the full text response from the SSE stream
78
+ const text = await collectText(stream);
79
+ return parseClassifierResponse(text);
80
+ } catch {
81
+ // On any error (network, timeout, parse), fall back to sonnet
82
+ return DEFAULT_ROUTE;
83
+ }
67
84
  }
85
+
68
86
  /**
69
87
  * Check if auto-routing is enabled for this model string.
70
88
  */
71
89
  export function isAutoModel(model) {
72
- return model === "auto";
90
+ return model === "auto";
73
91
  }
92
+
74
93
  /**
75
94
  * Resolve "auto" to an actual model ID based on classification.
76
95
  */
77
96
  export async function resolveAutoModel(userMessage, serverUrl, authToken) {
78
- const result = await classifyAndRoute(userMessage, serverUrl, authToken);
79
- return MODEL_ID_MAP[result.model];
97
+ const result = await classifyAndRoute(userMessage, serverUrl, authToken);
98
+ return MODEL_ID_MAP[result.model];
80
99
  }
100
+
81
101
  // ============================================================================
82
102
  // INTERNAL HELPERS
83
103
  // ============================================================================
104
+
84
105
  /**
85
106
  * Collect all text from an SSE stream body.
86
107
  * Lightweight extraction — only reads text_delta events.
87
108
  */
88
109
  async function collectText(body) {
89
- const reader = body.getReader();
90
- const decoder = new TextDecoder();
91
- let buffer = "";
92
- let text = "";
93
- try {
94
- while (true) {
95
- const { done, value } = await reader.read();
96
- if (done)
97
- break;
98
- buffer += decoder.decode(value, { stream: true });
99
- const lines = buffer.split("\n");
100
- buffer = lines.pop() || "";
101
- for (const line of lines) {
102
- const trimmed = line.trim();
103
- if (!trimmed || !trimmed.startsWith("data: "))
104
- continue;
105
- const payload = trimmed.slice(6);
106
- if (payload === "[DONE]")
107
- return text;
108
- try {
109
- const event = JSON.parse(payload);
110
- if (event.type === "content_block_delta" && event.delta?.type === "text_delta") {
111
- text += event.delta.text;
112
- }
113
- }
114
- catch { /* skip malformed JSON */ }
115
- }
116
- }
117
- }
118
- finally {
119
- reader.releaseLock();
110
+ const reader = body.getReader();
111
+ const decoder = new TextDecoder();
112
+ let buffer = "";
113
+ let text = "";
114
+ try {
115
+ while (true) {
116
+ const {
117
+ done,
118
+ value
119
+ } = await reader.read();
120
+ if (done) break;
121
+ buffer += decoder.decode(value, {
122
+ stream: true
123
+ });
124
+ const lines = buffer.split("\n");
125
+ buffer = lines.pop() || "";
126
+ for (const line of lines) {
127
+ const trimmed = line.trim();
128
+ if (!trimmed || !trimmed.startsWith("data: ")) continue;
129
+ const payload = trimmed.slice(6);
130
+ if (payload === "[DONE]") return text;
131
+ try {
132
+ const event = JSON.parse(payload);
133
+ if (event.type === "content_block_delta" && event.delta?.type === "text_delta") {
134
+ text += event.delta.text;
135
+ }
136
+ } catch {/* skip malformed JSON */}
137
+ }
120
138
  }
121
- return text;
139
+ } finally {
140
+ reader.releaseLock();
141
+ }
142
+ return text;
122
143
  }
144
+
123
145
  /**
124
146
  * Parse the classifier's JSON response into a RouteResult.
125
147
  * Falls back to sonnet on any parse failure or low confidence.
126
148
  */
127
149
  function parseClassifierResponse(text) {
128
- try {
129
- // Extract JSON from response (handle markdown fences or extra text)
130
- const jsonMatch = text.match(/\{[\s\S]*\}/);
131
- if (!jsonMatch)
132
- return DEFAULT_ROUTE;
133
- const parsed = JSON.parse(jsonMatch[0]);
134
- const model = parsed.model;
135
- if (model !== "haiku" && model !== "sonnet" && model !== "opus") {
136
- return DEFAULT_ROUTE;
137
- }
138
- const confidence = typeof parsed.confidence === "number" ? parsed.confidence : 0;
139
- const reasoning = typeof parsed.reasoning === "string" ? parsed.reasoning : "";
140
- // Low confidence defaults to sonnet (safe middle ground)
141
- if (confidence < 0.3) {
142
- return { model: "sonnet", reasoning: reasoning || "low confidence fallback", confidence };
143
- }
144
- return { model: model, reasoning, confidence };
150
+ try {
151
+ // Extract JSON from response (handle markdown fences or extra text)
152
+ const jsonMatch = text.match(/\{[\s\S]*\}/);
153
+ if (!jsonMatch) return DEFAULT_ROUTE;
154
+ const parsed = JSON.parse(jsonMatch[0]);
155
+ const model = parsed.model;
156
+ if (model !== "haiku" && model !== "sonnet" && model !== "opus") {
157
+ return DEFAULT_ROUTE;
145
158
  }
146
- catch {
147
- return DEFAULT_ROUTE;
159
+ const confidence = typeof parsed.confidence === "number" ? parsed.confidence : 0;
160
+ const reasoning = typeof parsed.reasoning === "string" ? parsed.reasoning : "";
161
+
162
+ // Low confidence defaults to sonnet (safe middle ground)
163
+ if (confidence < 0.3) {
164
+ return {
165
+ model: "sonnet",
166
+ reasoning: reasoning || "low confidence fallback",
167
+ confidence
168
+ };
148
169
  }
170
+ return {
171
+ model: model,
172
+ reasoning,
173
+ confidence
174
+ };
175
+ } catch {
176
+ return DEFAULT_ROUTE;
177
+ }
149
178
  }
179
+ //# sourceMappingURL=model-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-router.js","names":["MODELS","callServerProxy","CLASSIFIER_MODEL","HAIKU","CLASSIFIER_PROMPT","MODEL_ID_MAP","haiku","sonnet","SONNET","opus","OPUS","DEFAULT_ROUTE","model","reasoning","confidence","classifyAndRoute","userMessage","serverUrl","authToken","prompt","replace","apiConfig","betas","contextManagement","edits","maxTokens","stream","proxyUrl","token","system","type","text","messages","role","content","tools","timeoutMs","collectText","parseClassifierResponse","isAutoModel","resolveAutoModel","result","body","reader","getReader","decoder","TextDecoder","buffer","done","value","read","decode","lines","split","pop","line","trimmed","trim","startsWith","payload","slice","event","JSON","parse","delta","releaseLock","jsonMatch","match","parsed"],"sources":["../../../src/cli/services/model-router.ts"],"sourcesContent":["/**\n * Model Router — auto-routing via Haiku classifier.\n *\n * When the user selects \"auto\" as their model, each user message is classified\n * by Haiku to determine the optimal model (haiku/sonnet/opus) based on task\n * complexity. Matches Gemini CLI's auto-routing feature.\n */\n\nimport { MODELS } from \"../../shared/constants.js\";\nimport { callServerProxy } from \"../../shared/api-client.js\";\nimport type { APIRequestConfig } from \"../../shared/types.js\";\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport type RoutedModel = \"haiku\" | \"sonnet\" | \"opus\";\n\nexport interface RouteResult {\n model: RoutedModel;\n reasoning: string;\n confidence: number; // 0-1\n}\n\n// ============================================================================\n// CONSTANTS\n// ============================================================================\n\nconst CLASSIFIER_MODEL = MODELS.HAIKU;\n\nconst CLASSIFIER_PROMPT = `Classify this user request by complexity. Respond with ONLY a JSON object.\n\nCategories:\n- \"haiku\": Simple lookups, single-step tasks, quick questions, status checks, simple edits (1-2 files)\n- \"sonnet\": Multi-step tasks, code refactoring, moderate analysis, 3-5 file changes, debugging\n- \"opus\": Complex architecture, large refactors, planning, creative problem solving, 5+ files, ambiguous requirements\n\nUser request: {message}\n\nRespond: {\"model\": \"haiku\"|\"sonnet\"|\"opus\", \"reasoning\": \"brief reason\", \"confidence\": 0.0-1.0}`;\n\nconst MODEL_ID_MAP: Record<RoutedModel, string> = {\n haiku: MODELS.HAIKU,\n sonnet: MODELS.SONNET,\n opus: MODELS.OPUS,\n};\n\nconst DEFAULT_ROUTE: RouteResult = {\n model: \"sonnet\",\n reasoning: \"default fallback\",\n confidence: 0.5,\n};\n\n// ============================================================================\n// CLASSIFIER\n// ============================================================================\n\n/**\n * Classify a user message to determine the best model.\n * Uses Haiku via server proxy for fast, cheap classification.\n */\nexport async function classifyAndRoute(\n userMessage: string,\n serverUrl: string,\n authToken: string,\n): Promise<RouteResult> {\n try {\n const prompt = CLASSIFIER_PROMPT.replace(\"{message}\", userMessage);\n\n const apiConfig: APIRequestConfig = {\n betas: [],\n contextManagement: { edits: [] },\n maxTokens: 256,\n };\n\n const stream = await callServerProxy({\n proxyUrl: `${serverUrl}/proxy`,\n token: authToken,\n model: CLASSIFIER_MODEL,\n system: [{ type: \"text\", text: \"You are a task complexity classifier. Respond with only valid JSON.\" }],\n messages: [{ role: \"user\", content: prompt }],\n tools: [],\n apiConfig,\n timeoutMs: 5000,\n });\n\n // Collect the full text response from the SSE stream\n const text = await collectText(stream);\n\n return parseClassifierResponse(text);\n } catch {\n // On any error (network, timeout, parse), fall back to sonnet\n return DEFAULT_ROUTE;\n }\n}\n\n/**\n * Check if auto-routing is enabled for this model string.\n */\nexport function isAutoModel(model: string): boolean {\n return model === \"auto\";\n}\n\n/**\n * Resolve \"auto\" to an actual model ID based on classification.\n */\nexport async function resolveAutoModel(\n userMessage: string,\n serverUrl: string,\n authToken: string,\n): Promise<string> {\n const result = await classifyAndRoute(userMessage, serverUrl, authToken);\n return MODEL_ID_MAP[result.model];\n}\n\n// ============================================================================\n// INTERNAL HELPERS\n// ============================================================================\n\n/**\n * Collect all text from an SSE stream body.\n * Lightweight extraction — only reads text_delta events.\n */\nasync function collectText(body: ReadableStream<Uint8Array>): Promise<string> {\n const reader = body.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n let text = \"\";\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() || \"\";\n\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed || !trimmed.startsWith(\"data: \")) continue;\n const payload = trimmed.slice(6);\n if (payload === \"[DONE]\") return text;\n try {\n const event = JSON.parse(payload);\n if (event.type === \"content_block_delta\" && event.delta?.type === \"text_delta\") {\n text += event.delta.text;\n }\n } catch { /* skip malformed JSON */ }\n }\n }\n } finally {\n reader.releaseLock();\n }\n\n return text;\n}\n\n/**\n * Parse the classifier's JSON response into a RouteResult.\n * Falls back to sonnet on any parse failure or low confidence.\n */\nfunction parseClassifierResponse(text: string): RouteResult {\n try {\n // Extract JSON from response (handle markdown fences or extra text)\n const jsonMatch = text.match(/\\{[\\s\\S]*\\}/);\n if (!jsonMatch) return DEFAULT_ROUTE;\n\n const parsed = JSON.parse(jsonMatch[0]);\n\n const model = parsed.model as string;\n if (model !== \"haiku\" && model !== \"sonnet\" && model !== \"opus\") {\n return DEFAULT_ROUTE;\n }\n\n const confidence = typeof parsed.confidence === \"number\" ? parsed.confidence : 0;\n const reasoning = typeof parsed.reasoning === \"string\" ? parsed.reasoning : \"\";\n\n // Low confidence defaults to sonnet (safe middle ground)\n if (confidence < 0.3) {\n return { model: \"sonnet\", reasoning: reasoning || \"low confidence fallback\", confidence };\n }\n\n return { model: model as RoutedModel, reasoning, confidence };\n } catch {\n return DEFAULT_ROUTE;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Centralized path constants for the Whale Code CLI.
3
+ *
4
+ * Single source of truth for all filesystem paths. Every module that needs
5
+ * a path under the user's home directory imports from here instead of
6
+ * constructing join(homedir(), ".whale", ...) locally.
7
+ *
8
+ * Migration: The legacy directory was ~/.swagmanager. On first access,
9
+ * migrateDataDir() copies the old directory to ~/.whale if needed.
10
+ */
11
+ /** Primary data directory — all CLI state lives here */
12
+ export declare const APP_DATA_DIR: string;
13
+ export declare const AGENTS_DIR: string;
14
+ export declare const COMMANDS_DIR: string;
15
+ export declare const DEBUG_DIR: string;
16
+ export declare const FILE_HISTORY_DIR: string;
17
+ export declare const HOOKS_PATH: string;
18
+ export declare const KEYBINDINGS_PATH: string;
19
+ export declare const MEMORY_DIR: string;
20
+ export declare const MEMORY_FILE: string;
21
+ export declare const SANDBOX_DIR: string;
22
+ export declare const SESSIONS_DIR: string;
23
+ export declare const TEAMS_DIR: string;
24
+ export declare const THEME_PATH: string;
25
+ export declare const TODOS_DIR: string;
26
+ /**
27
+ * Ensure data directory exists and migrate from legacy path if needed.
28
+ * Safe to call multiple times — migration runs at most once per process.
29
+ */
30
+ export declare function ensureDataDir(): void;
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Centralized path constants for the Whale Code CLI.
3
+ *
4
+ * Single source of truth for all filesystem paths. Every module that needs
5
+ * a path under the user's home directory imports from here instead of
6
+ * constructing join(homedir(), ".whale", ...) locally.
7
+ *
8
+ * Migration: The legacy directory was ~/.swagmanager. On first access,
9
+ * migrateDataDir() copies the old directory to ~/.whale if needed.
10
+ */
11
+
12
+ import { existsSync, mkdirSync, cpSync } from "fs";
13
+ import { join } from "path";
14
+ import { homedir } from "os";
15
+
16
+ // ============================================================================
17
+ // BASE DIRECTORIES
18
+ // ============================================================================
19
+
20
+ /** Primary data directory — all CLI state lives here */
21
+ export const APP_DATA_DIR = join(homedir(), ".whale");
22
+
23
+ /** Legacy directory — checked for migration only */
24
+ const LEGACY_DATA_DIR = join(homedir(), ".swagmanager");
25
+
26
+ // ============================================================================
27
+ // SUB-PATHS (alphabetical)
28
+ // ============================================================================
29
+
30
+ export const AGENTS_DIR = join(APP_DATA_DIR, "agents");
31
+ export const COMMANDS_DIR = join(APP_DATA_DIR, "commands");
32
+ export const DEBUG_DIR = join(APP_DATA_DIR, "debug");
33
+ export const FILE_HISTORY_DIR = join(APP_DATA_DIR, "file-history");
34
+ export const HOOKS_PATH = join(APP_DATA_DIR, "hooks.json");
35
+ export const KEYBINDINGS_PATH = join(APP_DATA_DIR, "keybindings.json");
36
+ export const MEMORY_DIR = join(APP_DATA_DIR, "memory");
37
+ export const MEMORY_FILE = join(MEMORY_DIR, "MEMORY.md");
38
+ export const SANDBOX_DIR = join(APP_DATA_DIR, "sandbox");
39
+ export const SESSIONS_DIR = join(APP_DATA_DIR, "sessions");
40
+ export const TEAMS_DIR = join(APP_DATA_DIR, "teams");
41
+ export const THEME_PATH = join(APP_DATA_DIR, "theme.json");
42
+ export const TODOS_DIR = join(APP_DATA_DIR, "todos");
43
+
44
+ // ============================================================================
45
+ // MIGRATION — ~/.swagmanager → ~/.whale (one-time, idempotent)
46
+ // ============================================================================
47
+
48
+ let migrationDone = false;
49
+
50
+ /**
51
+ * Ensure data directory exists and migrate from legacy path if needed.
52
+ * Safe to call multiple times — migration runs at most once per process.
53
+ */
54
+ export function ensureDataDir() {
55
+ if (migrationDone) return;
56
+ migrationDone = true;
57
+
58
+ // Already exists — nothing to do
59
+ if (existsSync(APP_DATA_DIR)) return;
60
+
61
+ // Migrate from legacy directory
62
+ if (existsSync(LEGACY_DATA_DIR)) {
63
+ try {
64
+ cpSync(LEGACY_DATA_DIR, APP_DATA_DIR, {
65
+ recursive: true
66
+ });
67
+ } catch {
68
+ // If copy fails (permissions, etc.), create fresh
69
+ mkdirSync(APP_DATA_DIR, {
70
+ recursive: true
71
+ });
72
+ }
73
+ return;
74
+ }
75
+
76
+ // Fresh install
77
+ mkdirSync(APP_DATA_DIR, {
78
+ recursive: true
79
+ });
80
+ }
81
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","names":["existsSync","mkdirSync","cpSync","join","homedir","APP_DATA_DIR","LEGACY_DATA_DIR","AGENTS_DIR","COMMANDS_DIR","DEBUG_DIR","FILE_HISTORY_DIR","HOOKS_PATH","KEYBINDINGS_PATH","MEMORY_DIR","MEMORY_FILE","SANDBOX_DIR","SESSIONS_DIR","TEAMS_DIR","THEME_PATH","TODOS_DIR","migrationDone","ensureDataDir","recursive"],"sources":["../../../src/cli/services/paths.ts"],"sourcesContent":["/**\n * Centralized path constants for the Whale Code CLI.\n *\n * Single source of truth for all filesystem paths. Every module that needs\n * a path under the user's home directory imports from here instead of\n * constructing join(homedir(), \".whale\", ...) locally.\n *\n * Migration: The legacy directory was ~/.swagmanager. On first access,\n * migrateDataDir() copies the old directory to ~/.whale if needed.\n */\n\nimport { existsSync, mkdirSync, cpSync } from \"fs\";\nimport { join } from \"path\";\nimport { homedir } from \"os\";\n\n// ============================================================================\n// BASE DIRECTORIES\n// ============================================================================\n\n/** Primary data directory — all CLI state lives here */\nexport const APP_DATA_DIR = join(homedir(), \".whale\");\n\n/** Legacy directory — checked for migration only */\nconst LEGACY_DATA_DIR = join(homedir(), \".swagmanager\");\n\n// ============================================================================\n// SUB-PATHS (alphabetical)\n// ============================================================================\n\nexport const AGENTS_DIR = join(APP_DATA_DIR, \"agents\");\nexport const COMMANDS_DIR = join(APP_DATA_DIR, \"commands\");\nexport const DEBUG_DIR = join(APP_DATA_DIR, \"debug\");\nexport const FILE_HISTORY_DIR = join(APP_DATA_DIR, \"file-history\");\nexport const HOOKS_PATH = join(APP_DATA_DIR, \"hooks.json\");\nexport const KEYBINDINGS_PATH = join(APP_DATA_DIR, \"keybindings.json\");\nexport const MEMORY_DIR = join(APP_DATA_DIR, \"memory\");\nexport const MEMORY_FILE = join(MEMORY_DIR, \"MEMORY.md\");\nexport const SANDBOX_DIR = join(APP_DATA_DIR, \"sandbox\");\nexport const SESSIONS_DIR = join(APP_DATA_DIR, \"sessions\");\nexport const TEAMS_DIR = join(APP_DATA_DIR, \"teams\");\nexport const THEME_PATH = join(APP_DATA_DIR, \"theme.json\");\nexport const TODOS_DIR = join(APP_DATA_DIR, \"todos\");\n\n// ============================================================================\n// MIGRATION — ~/.swagmanager → ~/.whale (one-time, idempotent)\n// ============================================================================\n\nlet migrationDone = false;\n\n/**\n * Ensure data directory exists and migrate from legacy path if needed.\n * Safe to call multiple times — migration runs at most once per process.\n */\nexport function ensureDataDir(): void {\n if (migrationDone) return;\n migrationDone = true;\n\n // Already exists — nothing to do\n if (existsSync(APP_DATA_DIR)) return;\n\n // Migrate from legacy directory\n if (existsSync(LEGACY_DATA_DIR)) {\n try {\n cpSync(LEGACY_DATA_DIR, APP_DATA_DIR, { recursive: true });\n } catch {\n // If copy fails (permissions, etc.), create fresh\n mkdirSync(APP_DATA_DIR, { recursive: true });\n }\n return;\n }\n\n // Fresh install\n mkdirSync(APP_DATA_DIR, { recursive: true });\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,UAAU,EAAEC,SAAS,EAAEC,MAAM,QAAQ,IAAI;AAClD,SAASC,IAAI,QAAQ,MAAM;AAC3B,SAASC,OAAO,QAAQ,IAAI;;AAE5B;AACA;AACA;;AAEA;AACA,OAAO,MAAMC,YAAY,GAAGF,IAAI,CAACC,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC;;AAErD;AACA,MAAME,eAAe,GAAGH,IAAI,CAACC,OAAO,CAAC,CAAC,EAAE,cAAc,CAAC;;AAEvD;AACA;AACA;;AAEA,OAAO,MAAMG,UAAU,GAAQJ,IAAI,CAACE,YAAY,EAAE,QAAQ,CAAC;AAC3D,OAAO,MAAMG,YAAY,GAAML,IAAI,CAACE,YAAY,EAAE,UAAU,CAAC;AAC7D,OAAO,MAAMI,SAAS,GAASN,IAAI,CAACE,YAAY,EAAE,OAAO,CAAC;AAC1D,OAAO,MAAMK,gBAAgB,GAAGP,IAAI,CAACE,YAAY,EAAE,cAAc,CAAC;AAClE,OAAO,MAAMM,UAAU,GAAQR,IAAI,CAACE,YAAY,EAAE,YAAY,CAAC;AAC/D,OAAO,MAAMO,gBAAgB,GAAGT,IAAI,CAACE,YAAY,EAAE,kBAAkB,CAAC;AACtE,OAAO,MAAMQ,UAAU,GAAQV,IAAI,CAACE,YAAY,EAAE,QAAQ,CAAC;AAC3D,OAAO,MAAMS,WAAW,GAAOX,IAAI,CAACU,UAAU,EAAE,WAAW,CAAC;AAC5D,OAAO,MAAME,WAAW,GAAOZ,IAAI,CAACE,YAAY,EAAE,SAAS,CAAC;AAC5D,OAAO,MAAMW,YAAY,GAAMb,IAAI,CAACE,YAAY,EAAE,UAAU,CAAC;AAC7D,OAAO,MAAMY,SAAS,GAASd,IAAI,CAACE,YAAY,EAAE,OAAO,CAAC;AAC1D,OAAO,MAAMa,UAAU,GAAQf,IAAI,CAACE,YAAY,EAAE,YAAY,CAAC;AAC/D,OAAO,MAAMc,SAAS,GAAShB,IAAI,CAACE,YAAY,EAAE,OAAO,CAAC;;AAE1D;AACA;AACA;;AAEA,IAAIe,aAAa,GAAG,KAAK;;AAEzB;AACA;AACA;AACA;AACA,OAAO,SAASC,aAAaA,CAAA,EAAS;EACpC,IAAID,aAAa,EAAE;EACnBA,aAAa,GAAG,IAAI;;EAEpB;EACA,IAAIpB,UAAU,CAACK,YAAY,CAAC,EAAE;;EAE9B;EACA,IAAIL,UAAU,CAACM,eAAe,CAAC,EAAE;IAC/B,IAAI;MACFJ,MAAM,CAACI,eAAe,EAAED,YAAY,EAAE;QAAEiB,SAAS,EAAE;MAAK,CAAC,CAAC;IAC5D,CAAC,CAAC,MAAM;MACN;MACArB,SAAS,CAACI,YAAY,EAAE;QAAEiB,SAAS,EAAE;MAAK,CAAC,CAAC;IAC9C;IACA;EACF;;EAEA;EACArB,SAAS,CAACI,YAAY,EAAE;IAAEiB,SAAS,EAAE;EAAK,CAAC,CAAC;AAC9C","ignoreList":[]}
@@ -4,40 +4,47 @@
4
4
  * Extracted from agent-loop.ts for single-responsibility.
5
5
  * All consumers should import from agent-loop.ts (re-export facade).
6
6
  */
7
+
7
8
  import { loadConfig, updateConfig } from "./config-store.js";
8
9
  /** CLI-only: current permission mode */
9
10
  let activePermissionMode = "default";
11
+
10
12
  // Load persisted permission mode on import
11
13
  try {
12
- const cfg = loadConfig();
13
- if (cfg.permission_mode && ["default", "plan", "yolo"].includes(cfg.permission_mode)) {
14
- activePermissionMode = cfg.permission_mode;
15
- }
16
- }
17
- catch { /* use default */ }
14
+ const cfg = loadConfig();
15
+ if (cfg.permission_mode && ["default", "plan", "yolo"].includes(cfg.permission_mode)) {
16
+ activePermissionMode = cfg.permission_mode;
17
+ }
18
+ } catch {/* use default */}
19
+
18
20
  // Tools allowed in plan mode
19
- const PLAN_MODE_TOOLS = new Set([
20
- "read_file", "list_directory", "search_files", "search_content",
21
- "glob", "grep", "web_fetch", "web_search", "task", "task_output",
22
- "bash_output", "list_shells", "tasks", "config", "ask_user",
23
- // Interactive tools (read-only by nature)
24
- "ask_user_question", "enter_plan_mode", "exit_plan_mode",
25
- ]);
21
+ const PLAN_MODE_TOOLS = new Set(["read_file", "list_directory", "search_files", "search_content", "glob", "grep", "web_fetch", "web_search", "task", "task_output", "bash_output", "list_shells", "tasks", "config", "ask_user",
22
+ // Interactive tools (read-only by nature)
23
+ "ask_user_question", "enter_plan_mode", "exit_plan_mode"]);
26
24
  export function setPermissionMode(mode) {
27
- activePermissionMode = mode;
28
- try {
29
- updateConfig({ permission_mode: mode });
30
- }
31
- catch { /* best effort */ }
32
- return { success: true, message: `Permission mode: ${mode}` };
25
+ activePermissionMode = mode;
26
+ try {
27
+ updateConfig({
28
+ permission_mode: mode
29
+ });
30
+ } catch {/* best effort */}
31
+ return {
32
+ success: true,
33
+ message: `Permission mode: ${mode}`
34
+ };
33
35
  }
34
36
  export function getPermissionMode() {
35
- return activePermissionMode;
37
+ return activePermissionMode;
36
38
  }
37
39
  export function isToolAllowedByPermission(toolName) {
38
- switch (activePermissionMode) {
39
- case "yolo": return true;
40
- case "plan": return PLAN_MODE_TOOLS.has(toolName);
41
- case "default": return true; // Default allows all — UI can prompt for confirmation
42
- }
40
+ switch (activePermissionMode) {
41
+ case "yolo":
42
+ return true;
43
+ case "plan":
44
+ return PLAN_MODE_TOOLS.has(toolName);
45
+ case "default":
46
+ return true;
47
+ // Default allows all — UI can prompt for confirmation
48
+ }
43
49
  }
50
+ //# sourceMappingURL=permission-modes.js.map