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":"ChatInput.js","names":["useState","useEffect","useRef","Box","Text","useStdin","readFileSync","existsSync","statSync","basename","extname","colors","loadKeybindings","bindingToControlChar","SlashMenu","SLASH_COMMANDS","_SLASH_COMMANDS","getFilteredSelectableCount","getCommandAtIndex","getCategoryCount","getCategoryCommandCount","getCategoryCommand","getCategoryLabel","getCategoryColor","jsx","_jsx","jsxs","_jsxs","IMAGE_EXTENSIONS","MAX_IMAGE_SIZE","MAX_DISPLAY_LINES","CONTEXT_TYPES","CONTEXT_COLORS","product","customer","order","inventory","media","document","location","parseWhaleContext","text","trimmed","trim","startsWith","endsWith","obj","JSON","parse","id","type","includes","title","sourceApp","contextToBlock","ctx","lines","push","subtitle","data","key","value","Object","entries","sort","a","b","localeCompare","join","isImagePath","p","normalizePath","ext","toLowerCase","raw","decodeURIComponent","replace","isFilePath","isFile","loadImage","filePath","mediaType","stat","size","path","name","base64","toString","getCursorLineCol","cursor","pos","split","i","length","line","col","ChatInput","onSubmit","onCommand","disabled","agentName","onInterrupt","stdin","inputRef","displayValue","setDisplayValue","displayCursor","setDisplayCursor","onSubmitRef","onCommandRef","onInterruptRef","disabledRef","current","queued","setQueued","queuedRef","prevDisabledRef","handleSubmit","menuMode","setMenuMode","menuModeRef","menuFilter","setMenuFilter","menuFilterRef","menuIndex","setMenuIndex","menuIndexRef","images","setImages","imagesRef","files","setFiles","filesRef","contextItems","setContextItems","contextItemsRef","selectedCategory","setSelectedCategory","selectedCategoryRef","setSelectedCategorySync","val","historyRef","historyIndexRef","savedInputRef","MAX_HISTORY","isPasting","pasteBuffer","pastedText","setPastedText","pastedTextRef","setMenuModeSync","setMenuFilterSync","setMenuIndexSync","process","stdout","write","update","processPaste","clean","some","c","prev","map","l","filter","Boolean","every","newImages","img","newFiles","pasteLines","cur","newValue","slice","typed","paste","imgs","fls","ctxs","contextPrefix","filePrefix","f","body","fullText","shift","undefined","onData","str","_kb","exitChar","exit","expandChar","toggle_expand","thinkingChar","toggle_thinking","Math","min","max","curLine","curCol","targetLine","targetCol","newCursor","charCodeAt","codePoints","hasFilter","inCategory","cmd","count","catIdx","clear_line","delete_word","before","match","len","home","newIdx","hist","on","off","disabledLines","dCursorLine","dCursorCol","flexDirection","children","color","quaternary","bold","wrap","dim","inverse","warning","isCursorOnLine","marginLeft","promptLine","brand","catLabel","catColor","tertiary","hint","selectedIndex","cursorLine","cursorCol","isTruncated","visibleLines","secondary","indigo","purple","isRealLine"],"sources":["../../../src/cli/chat/ChatInput.tsx"],"sourcesContent":["/**\n * ChatInput — Custom input with bracketed paste + image attachments\n *\n * Replaces ink-text-input with raw stdin handling to fix:\n * - Paste losing content on enter (newlines in paste triggered submit)\n * - Multi-line paste mangled/unformatted\n * - No drag-drop image support\n *\n * Features:\n * - Bracketed paste mode — clean multi-line paste\n * - Drag-drop images — detects image file paths, attaches as chips\n * - Image chips above input like Claude Code: [image1.png] [image2.jpg]\n * - Backspace on empty input removes last image\n * - Slash command menu preserved\n * - Multi-line input with ⎸ continuation markers\n */\n\nimport { useState, useEffect, useRef } from \"react\";\nimport { Box, Text, useStdin } from \"ink\";\nimport { readFileSync, existsSync, statSync } from \"fs\";\nimport { basename, extname } from \"path\";\nimport { colors } from \"../shared/Theme.js\";\nimport { loadKeybindings, bindingToControlChar } from \"../services/keybinding-manager.js\";\nimport { SlashMenu, SLASH_COMMANDS as _SLASH_COMMANDS, getFilteredSelectableCount, getCommandAtIndex, getCategoryCount, getCategoryCommandCount, getCategoryCommand, getCategoryLabel, getCategoryColor } from \"./SlashMenu.js\";\n\n// ── Types ──\n\nexport interface ImageAttachment {\n path: string;\n name: string;\n base64: string;\n mediaType: string;\n}\n\nexport interface FileAttachment {\n path: string;\n name: string;\n}\n\nexport interface ContextAttachment {\n id: string;\n type: string;\n title: string;\n subtitle?: string;\n icon: string;\n sourceApp: string;\n data: Record<string, unknown>;\n timestamp: string;\n}\n\n// Re-export for consumers (e.g. useSlashCommands)\nexport type { SlashCommand } from \"./SlashMenu.js\";\nexport const SLASH_COMMANDS = _SLASH_COMMANDS;\n\n// ── Constants ──\n\nconst IMAGE_EXTENSIONS: Record<string, string> = {\n \".png\": \"image/png\",\n \".jpg\": \"image/jpeg\",\n \".jpeg\": \"image/jpeg\",\n \".gif\": \"image/gif\",\n \".webp\": \"image/webp\",\n};\n\nconst MAX_IMAGE_SIZE = 20 * 1024 * 1024; // 20MB\nconst MAX_DISPLAY_LINES = 8;\n\n// ── Helpers ──\n\nconst CONTEXT_TYPES = [\"product\", \"customer\", \"order\", \"inventory\", \"media\", \"document\", \"location\"];\nconst CONTEXT_COLORS: Record<string, string> = {\n product: \"blue\", customer: \"#a855f7\", order: \"green\",\n inventory: \"#f97316\", media: \"#ec4899\", document: \"cyan\", location: \"yellow\",\n};\n\n/** Detect if pasted text is a valid WhaleContextItem JSON object */\nfunction parseWhaleContext(text: string): ContextAttachment | null {\n const trimmed = text.trim();\n if (!trimmed.startsWith(\"{\") || !trimmed.endsWith(\"}\")) return null;\n try {\n const obj = JSON.parse(trimmed);\n if (obj && typeof obj.id === \"string\" && typeof obj.type === \"string\" &&\n CONTEXT_TYPES.includes(obj.type) && typeof obj.title === \"string\" &&\n typeof obj.sourceApp === \"string\") {\n return obj as ContextAttachment;\n }\n } catch { /* not JSON */ }\n return null;\n}\n\n/** Format a context attachment into an XML context block for AI prompt */\nfunction contextToBlock(ctx: ContextAttachment): string {\n const lines: string[] = [];\n lines.push(`<context type=\"${ctx.type}\" source=\"${ctx.sourceApp}\">`);\n lines.push(` ${ctx.title}`);\n if (ctx.subtitle) lines.push(` ${ctx.subtitle}`);\n if (ctx.data) {\n for (const [key, value] of Object.entries(ctx.data).sort(([a], [b]) => a.localeCompare(b))) {\n lines.push(` ${key}: ${value}`);\n }\n }\n lines.push(\"</context>\");\n return lines.join(\"\\n\");\n}\n\nfunction isImagePath(text: string): boolean {\n const p = normalizePath(text);\n if (!p || p.includes(\"\\n\")) return false;\n const ext = extname(p).toLowerCase();\n return ext in IMAGE_EXTENSIONS && existsSync(p);\n}\n\n/** Normalize a terminal-pasted path (handles escapes, file:// URLs, quotes) */\nfunction normalizePath(raw: string): string {\n let p = raw.trim();\n // Strip file:// URL prefix + percent-decode\n if (p.startsWith(\"file://\")) {\n p = decodeURIComponent(p.replace(/^file:\\/\\//, \"\"));\n }\n // Strip surrounding quotes\n p = p.replace(/^['\"]|['\"]$/g, \"\");\n // Unescape backslash-escaped characters (spaces, parens, etc.)\n p = p.replace(/\\\\(.)/g, \"$1\");\n return p;\n}\n\nfunction isFilePath(text: string): boolean {\n const p = normalizePath(text);\n if (!p || p.includes(\"\\n\")) return false;\n // Skip image paths — handled separately\n const ext = extname(p).toLowerCase();\n if (ext in IMAGE_EXTENSIONS) return false;\n try { return existsSync(p) && statSync(p).isFile(); } catch { return false; }\n}\n\nfunction loadImage(filePath: string): ImageAttachment | null {\n try {\n const p = normalizePath(filePath);\n const ext = extname(p).toLowerCase();\n const mediaType = IMAGE_EXTENSIONS[ext];\n if (!mediaType) return null;\n const stat = statSync(p);\n if (stat.size > MAX_IMAGE_SIZE) return null;\n const data = readFileSync(p);\n return { path: p, name: basename(p), base64: data.toString(\"base64\"), mediaType };\n } catch {\n return null;\n }\n}\n\nfunction getCursorLineCol(text: string, cursor: number): { line: number; col: number } {\n let pos = 0;\n const lines = text.split(\"\\n\");\n for (let i = 0; i < lines.length; i++) {\n if (cursor <= pos + lines[i].length) {\n return { line: i, col: cursor - pos };\n }\n pos += lines[i].length + 1;\n }\n return { line: lines.length - 1, col: lines[lines.length - 1].length };\n}\n\n// ── Props ──\n\ninterface ChatInputProps {\n onSubmit: (message: string, images?: ImageAttachment[]) => void;\n onCommand: (command: string) => void;\n disabled: boolean;\n agentName?: string;\n onInterrupt?: () => void;\n}\n\n// ── Component ──\n\nexport function ChatInput({ onSubmit, onCommand, disabled, agentName, onInterrupt }: ChatInputProps) {\n const { stdin } = useStdin();\n\n // Input state — ref for synchronous handler access, state for render\n const inputRef = useRef({ value: \"\", cursor: 0 });\n const [displayValue, setDisplayValue] = useState(\"\");\n const [displayCursor, setDisplayCursor] = useState(0);\n\n // Stable refs for callbacks — prevents stale closures in stdin handler\n const onSubmitRef = useRef(onSubmit);\n const onCommandRef = useRef(onCommand);\n const onInterruptRef = useRef(onInterrupt);\n const disabledRef = useRef(disabled);\n useEffect(() => { onSubmitRef.current = onSubmit; }, [onSubmit]);\n useEffect(() => { onCommandRef.current = onCommand; }, [onCommand]);\n useEffect(() => { onInterruptRef.current = onInterrupt; }, [onInterrupt]);\n useEffect(() => { disabledRef.current = disabled; }, [disabled]);\n\n // Queued message — typed during streaming, auto-submitted when streaming ends\n const [queued, setQueued] = useState(false);\n const queuedRef = useRef(false);\n\n // Auto-submit queued input when streaming ends (disabled goes from true → false)\n const prevDisabledRef = useRef(disabled);\n useEffect(() => {\n if (prevDisabledRef.current && !disabled && queuedRef.current) {\n // Streaming just ended and we have queued input — submit it\n queuedRef.current = false;\n setQueued(false);\n handleSubmit();\n }\n prevDisabledRef.current = disabled;\n }, [disabled]);\n\n // Mode & attachments\n const [menuMode, setMenuMode] = useState(false);\n const menuModeRef = useRef(false);\n const [menuFilter, setMenuFilter] = useState(\"\");\n const menuFilterRef = useRef(\"\");\n const [menuIndex, setMenuIndex] = useState(0);\n const menuIndexRef = useRef(0);\n const [images, setImages] = useState<ImageAttachment[]>([]);\n const imagesRef = useRef<ImageAttachment[]>([]);\n const [files, setFiles] = useState<FileAttachment[]>([]);\n const filesRef = useRef<FileAttachment[]>([]);\n const [contextItems, setContextItems] = useState<ContextAttachment[]>([]);\n const contextItemsRef = useRef<ContextAttachment[]>([]);\n\n // Two-level menu: null = Level 1 (categories), number = Level 2 (drilled into that category)\n const [selectedCategory, setSelectedCategory] = useState<number | null>(null);\n const selectedCategoryRef = useRef<number | null>(null);\n function setSelectedCategorySync(val: number | null) {\n selectedCategoryRef.current = val;\n setSelectedCategory(val);\n }\n\n // Input history (up/down arrow recall)\n const historyRef = useRef<string[]>([]);\n const historyIndexRef = useRef(-1);\n const savedInputRef = useRef(\"\");\n const MAX_HISTORY = 50;\n\n // Paste tracking\n const isPasting = useRef(false);\n const pasteBuffer = useRef(\"\");\n\n // Multi-line paste — stored separately, displayed as chip\n const [pastedText, setPastedText] = useState<string | null>(null);\n const pastedTextRef = useRef<string | null>(null);\n\n // Sync refs\n useEffect(() => { imagesRef.current = images; }, [images]);\n useEffect(() => { filesRef.current = files; }, [files]);\n useEffect(() => { contextItemsRef.current = contextItems; }, [contextItems]);\n useEffect(() => { pastedTextRef.current = pastedText; }, [pastedText]);\n // ── Sync helpers: update ref THEN state (fixes race conditions) ──\n function setMenuModeSync(val: boolean) {\n menuModeRef.current = val;\n setMenuMode(val);\n }\n function setMenuFilterSync(val: string) {\n menuFilterRef.current = val;\n setMenuFilter(val);\n }\n function setMenuIndexSync(val: number) {\n menuIndexRef.current = val;\n setMenuIndex(val);\n }\n\n // ── Enable bracketed paste mode ──\n useEffect(() => {\n process.stdout.write(\"\\x1b[?2004h\");\n return () => { process.stdout.write(\"\\x1b[?2004l\"); };\n }, []);\n\n // ── Update helper ──\n function update(value: string, cursor: number) {\n inputRef.current = { value, cursor };\n setDisplayValue(value);\n setDisplayCursor(cursor);\n }\n\n // ── Process paste content ──\n function processPaste(text: string) {\n const clean = text.replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\");\n\n // Check for WhaleContext JSON → attach as context chip\n const ctx = parseWhaleContext(clean);\n if (ctx) {\n // Avoid duplicates\n if (!contextItemsRef.current.some(c => c.id === ctx.id)) {\n setContextItems(prev => [...prev, ctx]);\n }\n return;\n }\n\n // Check if ALL non-empty lines are image paths → attach them\n const lines = clean.split(\"\\n\").map(l => l.trim()).filter(Boolean);\n if (lines.length > 0 && lines.every(l => isImagePath(l))) {\n const newImages: ImageAttachment[] = [];\n for (const line of lines) {\n const img = loadImage(line);\n if (img) newImages.push(img);\n }\n if (newImages.length > 0) {\n setImages(prev => [...prev, ...newImages]);\n return;\n }\n }\n\n // Check for non-image file paths → attach as file chips\n if (lines.length > 0 && lines.length <= 4 && lines.every(l => isFilePath(l))) {\n const newFiles: FileAttachment[] = lines.map(l => {\n const p = normalizePath(l);\n return { path: p, name: basename(p) };\n });\n setFiles(prev => [...prev, ...newFiles]);\n return;\n }\n\n // Slash command pasted directly (must look like /word, not an absolute path)\n if (clean.startsWith(\"/\") && !clean.includes(\"\\n\") && !clean.includes(\"/\", 1) && inputRef.current.value === \"\") {\n onCommandRef.current(clean.trim());\n update(\"\", 0);\n return;\n }\n\n // Multi-line paste → store as chip, don't spam input\n const pasteLines = clean.split(\"\\n\");\n if (pasteLines.length >= 4) {\n setPastedText(clean);\n return;\n }\n\n // Short paste — insert inline as before\n const { value: val, cursor: cur } = inputRef.current;\n const newValue = val.slice(0, cur) + clean + val.slice(cur);\n update(newValue, cur + clean.length);\n }\n\n // ── Handle submit ──\n function handleSubmit() {\n const typed = inputRef.current.value.trim();\n const paste = pastedTextRef.current;\n const imgs = imagesRef.current;\n const fls = filesRef.current;\n const ctxs = contextItemsRef.current;\n\n if (!typed && !paste && imgs.length === 0 && fls.length === 0 && ctxs.length === 0) return;\n\n // Slash command — must start with / and NOT contain a second /\n // (prevents file paths like /Users/whale/file.txt from being misidentified)\n if (typed.startsWith(\"/\") && !typed.includes(\"/\", 1) && !paste && imgs.length === 0 && fls.length === 0 && ctxs.length === 0) {\n update(\"\", 0);\n onCommandRef.current(typed);\n return;\n }\n\n // Build context blocks prefix\n const contextPrefix = ctxs.length > 0\n ? ctxs.map(c => contextToBlock(c)).join(\"\\n\\n\") + \"\\n\\n\"\n : \"\";\n\n // Build file context prefix\n const filePrefix = fls.length > 0\n ? fls.map(f => f.path).join(\"\\n\") + \"\\n\\n\"\n : \"\";\n\n // Combine context + file prefix + typed text + pasted content\n const body = paste\n ? (typed ? `${typed}\\n\\n${paste}` : paste)\n : (typed || (ctxs.length > 0 ? \"Tell me about this\" : \"\"));\n const fullText = contextPrefix + filePrefix + body;\n\n // Record in history\n if (fullText.trim()) {\n historyRef.current.push(fullText.trim());\n if (historyRef.current.length > MAX_HISTORY) historyRef.current.shift();\n }\n historyIndexRef.current = -1;\n\n onSubmitRef.current(fullText, imgs.length > 0 ? imgs : undefined);\n update(\"\", 0);\n setImages([]);\n setFiles([]);\n setContextItems([]);\n setPastedText(null);\n }\n\n // ── Raw stdin handler (handles both normal input and menu mode) ──\n useEffect(() => {\n if (!stdin) return;\n\n const onData = (data: Buffer) => {\n const str = data.toString(\"utf-8\");\n\n // ══════════════════════════════════════════════\n // DISABLED MODE — accept typing, block commands, handle Esc\n // ══════════════════════════════════════════════\n if (disabledRef.current) {\n // Escape → interrupt streaming\n if (str === \"\\x1b\") {\n onInterruptRef.current?.();\n return;\n }\n\n // Control chars handled by ChatApp (exit, expand, thinking toggle)\n const _kb = loadKeybindings();\n const exitChar = bindingToControlChar(_kb.exit);\n const expandChar = bindingToControlChar(_kb.toggle_expand);\n const thinkingChar = bindingToControlChar(_kb.toggle_thinking);\n if (str === exitChar || str === expandChar || str === thinkingChar) return;\n\n // Arrow keys — cursor movement within buffer while disabled\n if (str.startsWith(\"\\x1b[\")) {\n const { value: val, cursor: cur } = inputRef.current;\n if (str === \"\\x1b[C\") { // Right\n update(val, Math.min(cur + 1, val.length));\n } else if (str === \"\\x1b[D\") { // Left\n update(val, Math.max(cur - 1, 0));\n } else if (str === \"\\x1b[A\" || str === \"\\x1b[B\") { // Up/Down\n const lines = val.split(\"\\n\");\n if (lines.length > 1) {\n const { line: curLine, col: curCol } = getCursorLineCol(val, cur);\n const targetLine = str === \"\\x1b[A\"\n ? Math.max(0, curLine - 1)\n : Math.min(lines.length - 1, curLine + 1);\n if (targetLine !== curLine) {\n const targetCol = Math.min(curCol, lines[targetLine].length);\n let newCursor = 0;\n for (let i = 0; i < targetLine; i++) newCursor += lines[i].length + 1;\n newCursor += targetCol;\n update(val, newCursor);\n }\n }\n } else if (str === \"\\x1b[H\" || str === \"\\x1b[1~\") { // Home\n update(val, 0);\n } else if (str === \"\\x1b[F\" || str === \"\\x1b[4~\") { // End\n update(val, val.length);\n }\n return;\n }\n\n // Bracketed paste while disabled — accept into buffer\n if (str.includes(\"\\x1b[200~\")) {\n isPasting.current = true;\n let text = str.replace(/\\x1b\\[200~/g, \"\").replace(/\\x1b\\[201~/g, \"\");\n pasteBuffer.current += text;\n if (str.includes(\"\\x1b[201~\")) {\n isPasting.current = false;\n const paste = pasteBuffer.current;\n pasteBuffer.current = \"\";\n processPaste(paste);\n }\n return;\n }\n if (isPasting.current) {\n if (str.includes(\"\\x1b[201~\")) {\n isPasting.current = false;\n pasteBuffer.current += str.replace(/\\x1b\\[201~/g, \"\");\n const paste = pasteBuffer.current;\n pasteBuffer.current = \"\";\n processPaste(paste);\n } else {\n pasteBuffer.current += str;\n }\n return;\n }\n\n // Enter → queue the current input for auto-submit\n if (str === \"\\r\" || str === \"\\n\") {\n const typed = inputRef.current.value.trim();\n if (typed) {\n queuedRef.current = true;\n setQueued(true);\n }\n return;\n }\n\n // Backspace\n if (str === \"\\x7f\" || str === \"\\b\") {\n const { value: val, cursor: cur } = inputRef.current;\n if (cur > 0) {\n update(val.slice(0, cur - 1) + val.slice(cur), cur - 1);\n // Un-queue if editing\n if (queuedRef.current) { queuedRef.current = false; setQueued(false); }\n }\n return;\n }\n\n // Slash — block menu mode while streaming\n if (str === \"/\" && inputRef.current.value === \"\") return;\n\n // Printable char — type into buffer\n if (str.length === 1 && str.charCodeAt(0) >= 0x20) {\n const { value: val, cursor: cur } = inputRef.current;\n update(val.slice(0, cur) + str + val.slice(cur), cur + 1);\n // Un-queue if editing after queuing\n if (queuedRef.current) { queuedRef.current = false; setQueued(false); }\n return;\n }\n\n // Multi-character non-escape (unbracketted paste)\n if (str.length > 1 && !str.startsWith(\"\\x1b\")) {\n const codePoints = [...str];\n if (codePoints.length === 1) {\n const { value: val, cursor: cur } = inputRef.current;\n update(val.slice(0, cur) + str + val.slice(cur), cur + str.length);\n } else {\n processPaste(str);\n }\n if (queuedRef.current) { queuedRef.current = false; setQueued(false); }\n return;\n }\n\n return;\n }\n\n // ══════════════════════════════════════════════\n // MENU MODE — two-level navigation\n // ══════════════════════════════════════════════\n if (menuModeRef.current) {\n const hasFilter = menuFilterRef.current.length > 0;\n const inCategory = selectedCategoryRef.current !== null;\n\n // Escape or Ctrl+C → dismiss menu entirely\n if (str === \"\\x1b\" || str === \"\\x03\") {\n setMenuModeSync(false);\n setMenuFilterSync(\"\");\n setMenuIndexSync(0);\n setSelectedCategorySync(null);\n update(\"\", 0);\n return;\n }\n\n // Tab → no-op\n if (str === \"\\t\") return;\n\n // ── Filter mode (has filter text) ──\n if (hasFilter) {\n if (str === \"\\r\" || str === \"\\n\") {\n const cmd = getCommandAtIndex(menuFilterRef.current, menuIndexRef.current);\n if (cmd) {\n setMenuModeSync(false);\n setMenuFilterSync(\"\");\n setMenuIndexSync(0);\n setSelectedCategorySync(null);\n update(\"\", 0);\n onCommandRef.current(cmd.name);\n }\n return;\n }\n if (str === \"\\x1b[A\") {\n setMenuIndexSync(Math.max(0, menuIndexRef.current - 1));\n return;\n }\n if (str === \"\\x1b[B\") {\n const count = getFilteredSelectableCount(menuFilterRef.current);\n setMenuIndexSync(Math.min(count - 1, menuIndexRef.current + 1));\n return;\n }\n if (str === \"\\x7f\" || str === \"\\b\") {\n const f = menuFilterRef.current;\n if (f.length > 1) {\n setMenuFilterSync(f.slice(0, -1));\n setMenuIndexSync(0);\n } else {\n // Clearing filter → back to Level 1\n setMenuFilterSync(\"\");\n setMenuIndexSync(0);\n setSelectedCategorySync(null);\n }\n return;\n }\n if (str.startsWith(\"\\x1b\")) return;\n if (str.length === 1 && str.charCodeAt(0) >= 0x20) {\n setMenuFilterSync(menuFilterRef.current + str);\n setMenuIndexSync(0);\n return;\n }\n return;\n }\n\n // ── Level 2: inside a category ──\n if (inCategory) {\n const catIdx = selectedCategoryRef.current!;\n if (str === \"\\r\" || str === \"\\n\") {\n const cmd = getCategoryCommand(catIdx, menuIndexRef.current);\n if (cmd) {\n setMenuModeSync(false);\n setMenuFilterSync(\"\");\n setMenuIndexSync(0);\n setSelectedCategorySync(null);\n update(\"\", 0);\n onCommandRef.current(cmd.name);\n }\n return;\n }\n if (str === \"\\x1b[A\") {\n setMenuIndexSync(Math.max(0, menuIndexRef.current - 1));\n return;\n }\n if (str === \"\\x1b[B\") {\n const count = getCategoryCommandCount(catIdx);\n setMenuIndexSync(Math.min(count - 1, menuIndexRef.current + 1));\n return;\n }\n // Left arrow or Backspace → back to Level 1\n if (str === \"\\x1b[D\" || str === \"\\x7f\" || str === \"\\b\") {\n setMenuIndexSync(catIdx); // restore highlight to the category we were in\n setSelectedCategorySync(null);\n return;\n }\n if (str.startsWith(\"\\x1b\")) return;\n // Printable → switch to filter mode\n if (str.length === 1 && str.charCodeAt(0) >= 0x20) {\n setSelectedCategorySync(null);\n setMenuFilterSync(str);\n setMenuIndexSync(0);\n return;\n }\n return;\n }\n\n // ── Level 1: category list ──\n if (str === \"\\r\" || str === \"\\n\" || str === \"\\x1b[C\") {\n // Enter or Right → drill into selected category\n const catIdx = menuIndexRef.current;\n if (catIdx >= 0 && catIdx < getCategoryCount()) {\n setSelectedCategorySync(catIdx);\n setMenuIndexSync(0);\n }\n return;\n }\n if (str === \"\\x1b[A\") {\n setMenuIndexSync(Math.max(0, menuIndexRef.current - 1));\n return;\n }\n if (str === \"\\x1b[B\") {\n setMenuIndexSync(Math.min(getCategoryCount() - 1, menuIndexRef.current + 1));\n return;\n }\n if (str === \"\\x7f\" || str === \"\\b\") {\n // Backspace on Level 1 → dismiss menu\n setMenuModeSync(false);\n setMenuFilterSync(\"\");\n setMenuIndexSync(0);\n setSelectedCategorySync(null);\n update(\"\", 0);\n return;\n }\n if (str.startsWith(\"\\x1b\")) return;\n // Printable → switch to filter mode\n if (str.length === 1 && str.charCodeAt(0) >= 0x20) {\n setMenuFilterSync(str);\n setMenuIndexSync(0);\n return;\n }\n\n return;\n }\n\n // ══════════════════════════════════════════════\n // NORMAL INPUT MODE\n // ══════════════════════════════════════════════\n\n // ── Bracketed paste detection ──\n if (str.includes(\"\\x1b[200~\")) {\n isPasting.current = true;\n let text = str.replace(/\\x1b\\[200~/g, \"\").replace(/\\x1b\\[201~/g, \"\");\n pasteBuffer.current += text;\n if (str.includes(\"\\x1b[201~\")) {\n isPasting.current = false;\n const paste = pasteBuffer.current;\n pasteBuffer.current = \"\";\n processPaste(paste);\n }\n return;\n }\n\n if (isPasting.current) {\n if (str.includes(\"\\x1b[201~\")) {\n isPasting.current = false;\n pasteBuffer.current += str.replace(/\\x1b\\[201~/g, \"\");\n const paste = pasteBuffer.current;\n pasteBuffer.current = \"\";\n processPaste(paste);\n } else {\n pasteBuffer.current += str;\n }\n return;\n }\n\n // ── Control chars handled by ChatApp (keybinding-aware) ──\n const _kb = loadKeybindings();\n const exitChar = bindingToControlChar(_kb.exit);\n const expandChar = bindingToControlChar(_kb.toggle_expand);\n const thinkingChar = bindingToControlChar(_kb.toggle_thinking);\n if (str === exitChar || str === expandChar || str === thinkingChar) return;\n\n // ── Enter ──\n if (str === \"\\r\" || str === \"\\n\") {\n handleSubmit();\n return;\n }\n\n // ── Tab ── (no-op in input)\n if (str === \"\\t\") return;\n\n // ── Backspace ──\n if (str === \"\\x7f\" || str === \"\\b\") {\n const { value: val, cursor: cur } = inputRef.current;\n if (cur > 0) {\n update(val.slice(0, cur - 1) + val.slice(cur), cur - 1);\n } else if (val === \"\") {\n // Empty input + backspace → remove paste chip, then context, then files, then images\n if (pastedTextRef.current) {\n setPastedText(null);\n } else if (contextItemsRef.current.length > 0) {\n setContextItems(prev => prev.slice(0, -1));\n } else if (filesRef.current.length > 0) {\n setFiles(prev => prev.slice(0, -1));\n } else if (imagesRef.current.length > 0) {\n setImages(prev => prev.slice(0, -1));\n }\n }\n return;\n }\n\n // ── Clear line (default: Ctrl+U) ──\n if (str === bindingToControlChar(_kb.clear_line)) {\n update(\"\", 0);\n setImages([]);\n setFiles([]);\n setPastedText(null);\n return;\n }\n\n // ── Delete word (default: Ctrl+W) ──\n if (str === bindingToControlChar(_kb.delete_word)) {\n const { value: val, cursor: cur } = inputRef.current;\n const before = val.slice(0, cur);\n const match = before.match(/\\S+\\s*$/);\n if (match) {\n const len = match[0].length;\n update(val.slice(0, cur - len) + val.slice(cur), cur - len);\n }\n return;\n }\n\n // ── Home (default: Ctrl+A) ──\n if (str === bindingToControlChar(_kb.home)) {\n update(inputRef.current.value, 0);\n return;\n }\n\n // ── Escape sequences ──\n if (str.startsWith(\"\\x1b[\")) {\n const { value: val, cursor: cur } = inputRef.current;\n\n if (str === \"\\x1b[C\") { // Right\n update(val, Math.min(cur + 1, val.length));\n } else if (str === \"\\x1b[D\") { // Left\n update(val, Math.max(cur - 1, 0));\n } else if (str === \"\\x1b[H\" || str === \"\\x1b[1~\") { // Home\n update(val, 0);\n } else if (str === \"\\x1b[F\" || str === \"\\x1b[4~\") { // End\n update(val, val.length);\n } else if (str === \"\\x1b[3~\") { // Delete\n if (cur < val.length) {\n update(val.slice(0, cur) + val.slice(cur + 1), cur);\n }\n } else if (str === \"\\x1b[A\" || str === \"\\x1b[B\") { // Up/Down\n const lines = val.split(\"\\n\");\n if (lines.length > 1) {\n // Multi-line: navigate lines\n const { line: curLine, col: curCol } = getCursorLineCol(val, cur);\n const targetLine = str === \"\\x1b[A\"\n ? Math.max(0, curLine - 1)\n : Math.min(lines.length - 1, curLine + 1);\n if (targetLine !== curLine) {\n const targetCol = Math.min(curCol, lines[targetLine].length);\n let newCursor = 0;\n for (let i = 0; i < targetLine; i++) newCursor += lines[i].length + 1;\n newCursor += targetCol;\n update(val, newCursor);\n }\n } else if (str === \"\\x1b[A\") {\n // Up arrow — history recall\n if (historyRef.current.length === 0) { /* no history */ }\n else {\n if (historyIndexRef.current === -1) savedInputRef.current = val;\n const newIdx = Math.min(historyIndexRef.current + 1, historyRef.current.length - 1);\n historyIndexRef.current = newIdx;\n const hist = historyRef.current[historyRef.current.length - 1 - newIdx];\n update(hist, hist.length);\n }\n } else {\n // Down arrow — forward in history\n if (historyIndexRef.current <= -1) { /* already at current */ }\n else {\n const newIdx = historyIndexRef.current - 1;\n historyIndexRef.current = newIdx;\n if (newIdx < 0) {\n update(savedInputRef.current, savedInputRef.current.length);\n } else {\n const hist = historyRef.current[historyRef.current.length - 1 - newIdx];\n update(hist, hist.length);\n }\n }\n }\n }\n // Ignore unrecognized escape sequences\n return;\n }\n\n // ── Standalone escape — clear input if non-empty ──\n if (str === \"\\x1b\") {\n const { value } = inputRef.current;\n if (value || filesRef.current.length > 0) {\n update(\"\", 0);\n setImages([]);\n setFiles([]);\n setPastedText(null);\n }\n return;\n }\n\n // ── Multi-character non-escape = paste without brackets ──\n if (str.length > 1 && !str.startsWith(\"\\x1b\")) {\n const codePoints = [...str];\n if (codePoints.length === 1) {\n // Single code point (emoji etc.)\n const { value: val, cursor: cur } = inputRef.current;\n update(val.slice(0, cur) + str + val.slice(cur), cur + str.length);\n } else {\n processPaste(str);\n }\n return;\n }\n\n // ── Single printable character ──\n if (str.length === 1 && str.charCodeAt(0) >= 0x20) {\n const { value: val, cursor: cur } = inputRef.current;\n\n // Slash menu trigger\n if (str === \"/\" && val === \"\") {\n setMenuModeSync(true);\n setMenuFilterSync(\"\");\n setMenuIndexSync(0);\n return;\n }\n\n update(val.slice(0, cur) + str + val.slice(cur), cur + 1);\n }\n };\n\n stdin.on(\"data\", onData);\n return () => { stdin.off(\"data\", onData); };\n }, [stdin]); // eslint-disable-line react-hooks/exhaustive-deps\n\n // ── Render ──\n\n // Disabled — dimmed but visible input (accept typing to queue)\n if (disabled) {\n const disabledLines = displayValue.split(\"\\n\");\n const { line: dCursorLine, col: dCursorCol } = displayValue\n ? getCursorLineCol(displayValue, displayCursor)\n : { line: 0, col: 0 };\n\n return (\n <Box flexDirection=\"column\">\n\n {/* Single-line disabled */}\n {disabledLines.length <= 1 ? (\n <Box>\n <Text color={colors.quaternary} bold>{\"❯ \"}</Text>\n {!displayValue ? (\n <Text color={colors.quaternary} wrap=\"truncate\">\n {queued ? \"queued — will send when done\" : \"type to queue a message...\"}\n </Text>\n ) : (\n <Box>\n <Text color={colors.dim}>\n {displayValue.slice(0, displayCursor)}\n <Text inverse>{displayCursor < displayValue.length ? displayValue[displayCursor] : \" \"}</Text>\n {displayCursor < displayValue.length ? displayValue.slice(displayCursor + 1) : \"\"}\n </Text>\n {queued && <Text color={colors.warning}> [queued]</Text>}\n </Box>\n )}\n </Box>\n ) : (\n /* Multi-line disabled */\n <Box flexDirection=\"column\">\n {disabledLines.map((line, i) => {\n const isCursorOnLine = i === dCursorLine;\n return (\n <Box key={i}>\n <Text color={colors.quaternary} bold>{i === 0 ? \"❯ \" : \"⎸ \"}</Text>\n {isCursorOnLine ? (\n <Text color={colors.dim}>\n {line.slice(0, dCursorCol)}\n <Text inverse>{dCursorCol < line.length ? line[dCursorCol] : \" \"}</Text>\n {dCursorCol < line.length ? line.slice(dCursorCol + 1) : \"\"}\n </Text>\n ) : (\n <Text color={colors.dim}>{line}</Text>\n )}\n </Box>\n );\n })}\n {queued && (\n <Box marginLeft={2}>\n <Text color={colors.warning}>[queued]</Text>\n </Box>\n )}\n </Box>\n )}\n </Box>\n );\n }\n\n // Slash command menu — two-level categorized via SlashMenu component\n if (menuMode) {\n // Prompt line varies by level\n let promptLine: React.ReactNode;\n if (menuFilter) {\n // Filter mode\n promptLine = (\n <Box>\n <Text color={colors.brand} bold>{\"/ \"}</Text>\n <Text>\n {menuFilter}\n <Text inverse>{\" \"}</Text>\n </Text>\n </Box>\n );\n } else if (selectedCategory !== null) {\n // Level 2: show category name\n const catLabel = getCategoryLabel(selectedCategory);\n const catColor = getCategoryColor(selectedCategory);\n promptLine = (\n <Box>\n <Text color={colors.brand} bold>{\"/ \"}</Text>\n <Text color={catColor} bold>{catLabel}</Text>\n <Text color={colors.tertiary}>{\" > \"}</Text>\n <Text inverse>{\" \"}</Text>\n </Box>\n );\n } else {\n // Level 1\n promptLine = (\n <Box>\n <Text color={colors.brand} bold>{\"/ \"}</Text>\n <Text>\n <Text inverse>{\" \"}</Text>\n <Text color={colors.dim}> type to filter</Text>\n </Text>\n </Box>\n );\n }\n\n // Hint line varies by level\n const hint = selectedCategory !== null && !menuFilter\n ? \" \\u2190 back esc dismiss\"\n : \" esc to dismiss\";\n\n return (\n <Box flexDirection=\"column\">\n\n {promptLine}\n <SlashMenu filter={menuFilter} selectedIndex={menuIndex} selectedCategory={selectedCategory} />\n <Text color={colors.quaternary}>{hint}</Text>\n </Box>\n );\n }\n\n // ── Normal input rendering ──\n\n const lines = displayValue.split(\"\\n\");\n const { line: cursorLine, col: cursorCol } = displayValue\n ? getCursorLineCol(displayValue, displayCursor)\n : { line: 0, col: 0 };\n\n // Truncate display for very long pastes\n const isTruncated = lines.length > MAX_DISPLAY_LINES;\n const visibleLines = isTruncated\n ? [...lines.slice(0, MAX_DISPLAY_LINES - 1), `… ${lines.length - MAX_DISPLAY_LINES + 1} more lines`]\n : lines;\n\n return (\n <Box flexDirection=\"column\">\n {/* Attachment chips — context + images + files + pasted text */}\n {(images.length > 0 || files.length > 0 || contextItems.length > 0 || pastedText) && (\n <Box>\n <Text> </Text>\n {contextItems.map((ctx, i) => (\n <Text key={`ctx-${i}`}>\n <Text color={CONTEXT_COLORS[ctx.type] || \"cyan\"}>[</Text>\n <Text color={colors.secondary}>{ctx.type}: {ctx.title}</Text>\n <Text color={CONTEXT_COLORS[ctx.type] || \"cyan\"}>]</Text>\n <Text> </Text>\n </Text>\n ))}\n {images.map((img, i) => (\n <Text key={`img-${i}`}>\n <Text color={colors.indigo}>[</Text>\n <Text color={colors.secondary}>{img.name}</Text>\n <Text color={colors.indigo}>]</Text>\n <Text> </Text>\n </Text>\n ))}\n {files.map((f, i) => (\n <Text key={`file-${i}`}>\n <Text color={colors.purple}>[</Text>\n <Text color={colors.secondary}>{f.name}</Text>\n <Text color={colors.purple}>]</Text>\n <Text> </Text>\n </Text>\n ))}\n {pastedText && (\n <Text>\n <Text color={colors.indigo}>[</Text>\n <Text color={colors.secondary}>pasted {pastedText.split(\"\\n\").length} lines</Text>\n <Text color={colors.indigo}>]</Text>\n </Text>\n )}\n </Box>\n )}\n\n {/* Single-line input */}\n {lines.length <= 1 ? (\n <Box>\n <Text color={colors.brand} bold>{\"❯ \"}</Text>\n {!displayValue ? (\n <Text wrap=\"truncate\">\n <Text inverse> </Text>\n <Text color={colors.dim}>{`Message ${agentName || \"whale\"}, or type / for commands`}</Text>\n </Text>\n ) : (\n <Text>\n {displayValue.slice(0, displayCursor)}\n <Text inverse>{displayCursor < displayValue.length ? displayValue[displayCursor] : \" \"}</Text>\n {displayCursor < displayValue.length ? displayValue.slice(displayCursor + 1) : \"\"}\n </Text>\n )}\n </Box>\n ) : (\n /* Multi-line input */\n <Box flexDirection=\"column\">\n {visibleLines.map((line, i) => {\n const isRealLine = !isTruncated || i < MAX_DISPLAY_LINES - 1;\n const isCursorOnLine = isRealLine && i === cursorLine;\n\n return (\n <Box key={i}>\n <Text color={colors.brand} bold>{i === 0 ? \"❯ \" : \"⎸ \"}</Text>\n {isCursorOnLine ? (\n <Text>\n {line.slice(0, cursorCol)}\n <Text inverse>{cursorCol < line.length ? line[cursorCol] : \" \"}</Text>\n {cursorCol < line.length ? line.slice(cursorCol + 1) : \"\"}\n </Text>\n ) : (\n <Text color={isRealLine ? undefined : colors.tertiary}>{line}</Text>\n )}\n </Box>\n );\n })}\n </Box>\n )}\n </Box>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,20 +1,45 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
1
+ import { c as _c } from "react/compiler-runtime";
2
2
  /**
3
3
  * MarkdownText — renders markdown as ANSI-styled terminal output
4
4
  */
5
- import { useMemo } from "react";
5
+
6
6
  import { Text } from "ink";
7
7
  import { renderMarkdown } from "../shared/markdown.js";
8
- export function MarkdownText({ text, streaming = false }) {
9
- const rendered = useMemo(() => {
10
- if (!text)
11
- return "";
12
- try {
13
- return renderMarkdown(text, streaming);
14
- }
15
- catch {
16
- return text;
17
- }
18
- }, [text, streaming]);
19
- return _jsx(Text, { children: rendered });
8
+ import { jsx as _jsx } from "react/jsx-runtime";
9
+ export function MarkdownText(t0) {
10
+ const $ = _c(5);
11
+ const {
12
+ text,
13
+ streaming: t1
14
+ } = t0;
15
+ const streaming = t1 === undefined ? false : t1;
16
+ let rendered = "";
17
+ if (text) {
18
+ try {
19
+ let t2;
20
+ if ($[0] !== streaming || $[1] !== text) {
21
+ t2 = renderMarkdown(text, streaming);
22
+ $[0] = streaming;
23
+ $[1] = text;
24
+ $[2] = t2;
25
+ } else {
26
+ t2 = $[2];
27
+ }
28
+ rendered = t2;
29
+ } catch {
30
+ rendered = text;
31
+ }
32
+ }
33
+ let t2;
34
+ if ($[3] !== rendered) {
35
+ t2 = /*#__PURE__*/_jsx(Text, {
36
+ children: rendered
37
+ });
38
+ $[3] = rendered;
39
+ $[4] = t2;
40
+ } else {
41
+ t2 = $[4];
42
+ }
43
+ return t2;
20
44
  }
45
+ //# sourceMappingURL=MarkdownText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkdownText.js","names":["Text","renderMarkdown","jsx","_jsx","MarkdownText","t0","$","_c","text","streaming","t1","undefined","rendered","t2","children"],"sources":["../../../src/cli/chat/MarkdownText.tsx"],"sourcesContent":["/**\n * MarkdownText — renders markdown as ANSI-styled terminal output\n */\n\nimport { Text } from \"ink\";\nimport { renderMarkdown } from \"../shared/markdown.js\";\n\ninterface MarkdownTextProps {\n text: string;\n /** When true, closes incomplete fences for safe mid-stream display. Default: false. */\n streaming?: boolean;\n}\n\nexport function MarkdownText({ text, streaming = false }: MarkdownTextProps) {\n let rendered = \"\";\n if (text) {\n try {\n rendered = renderMarkdown(text, streaming);\n } catch {\n rendered = text;\n }\n }\n\n return <Text>{rendered}</Text>;\n}\n"],"mappings":";AAAA;AACA;AACA;;AAEA,SAASA,IAAI,QAAQ,KAAK;AAC1B,SAASC,cAAc,QAAQ,uBAAuB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQvD,OAAO,SAAAC,aAAAC,EAAA;EAAA,MAAAC,CAAA,GAAAC,EAAA;EAAsB;IAAAC,IAAA;IAAAC,SAAA,EAAAC;EAAA,IAAAL,EAA8C;EAAtC,MAAAI,SAAA,GAAAC,EAAiB,KAAjBC,SAAiB,GAAjB,KAAiB,GAAjBD,EAAiB;EACpD,IAAAE,QAAA,GAAe,EAAE;EACjB,IAAIJ,IAAI;IACN;MAAA,IAAAK,EAAA;MAAA,IAAAP,CAAA,QAAAG,SAAA,IAAAH,CAAA,QAAAE,IAAA;QACaK,EAAA,GAAAZ,cAAc,CAACO,IAAI,EAAEC,SAAS,CAAC;QAAAH,CAAA,MAAAG,SAAA;QAAAH,CAAA,MAAAE,IAAA;QAAAF,CAAA,MAAAO,EAAA;MAAA;QAAAA,EAAA,GAAAP,CAAA;MAAA;MAA1CM,QAAA,CAAAA,CAAA,CAAWA,EAA+B;IAAlC;MAERA,QAAA,CAAAA,CAAA,CAAWJ,IAAI;IAAP;EACT;EACF,IAAAK,EAAA;EAAA,IAAAP,CAAA,QAAAM,QAAA;IAEMC,EAAA,gBAAAV,IAAA,CAACH,IAAI;MAAAc,QAAA,EAAEF;IAAQ,CAAO,CAAC;IAAAN,CAAA,MAAAM,QAAA;IAAAN,CAAA,MAAAO,EAAA;EAAA;IAAAA,EAAA,GAAAP,CAAA;EAAA;EAAA,OAAvBO,EAAuB;AAAA","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { c as _c } from "react/compiler-runtime";
2
2
  /**
3
3
  * MemoryManager — interactive memory list with delete
4
4
  *
@@ -7,55 +7,190 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
7
  *
8
8
  * Follows StoreSelector pattern (useInput + manual index).
9
9
  */
10
+
10
11
  import { useState } from "react";
11
12
  import { Box, Text, useInput } from "ink";
12
13
  import { colors, symbols } from "../shared/Theme.js";
13
- export function MemoryManager({ memories, onDelete, onCancel }) {
14
- const [selectedIndex, setSelectedIndex] = useState(0);
15
- const [confirmDelete, setConfirmDelete] = useState(false);
16
- useInput((input, key) => {
17
- // Delete confirmation
18
- if (confirmDelete) {
19
- if (input === "y" || input === "Y") {
20
- setConfirmDelete(false);
21
- onDelete(selectedIndex);
22
- // Adjust selection if we deleted the last item
23
- if (selectedIndex >= memories.length - 1 && selectedIndex > 0) {
24
- setSelectedIndex(selectedIndex - 1);
25
- }
26
- return;
27
- }
28
- // Any other key cancels the confirmation
29
- setConfirmDelete(false);
30
- return;
31
- }
32
- if (key.escape) {
33
- onCancel();
34
- return;
35
- }
36
- if (key.upArrow) {
37
- setSelectedIndex((prev) => Math.max(0, prev - 1));
38
- return;
39
- }
40
- if (key.downArrow) {
41
- setSelectedIndex((prev) => Math.min(memories.length - 1, prev + 1));
42
- return;
43
- }
44
- if (input === "d" || input === "D") {
45
- setConfirmDelete(true);
46
- return;
14
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
+ export function MemoryManager(t0) {
16
+ const $ = _c(22);
17
+ const {
18
+ memories,
19
+ onDelete,
20
+ onCancel
21
+ } = t0;
22
+ const [selectedIndex, setSelectedIndex] = useState(0);
23
+ const [confirmDelete, setConfirmDelete] = useState(false);
24
+ let t1;
25
+ if ($[0] !== confirmDelete || $[1] !== memories.length || $[2] !== onCancel || $[3] !== onDelete || $[4] !== selectedIndex) {
26
+ t1 = (input, key) => {
27
+ if (confirmDelete) {
28
+ if (input === "y" || input === "Y") {
29
+ setConfirmDelete(false);
30
+ onDelete(selectedIndex);
31
+ if (selectedIndex >= memories.length - 1 && selectedIndex > 0) {
32
+ setSelectedIndex(selectedIndex - 1);
33
+ }
34
+ return;
47
35
  }
36
+ setConfirmDelete(false);
37
+ return;
38
+ }
39
+ if (key.escape) {
40
+ onCancel();
41
+ return;
42
+ }
43
+ if (key.upArrow) {
44
+ setSelectedIndex(_temp);
45
+ return;
46
+ }
47
+ if (key.downArrow) {
48
+ setSelectedIndex(prev_0 => Math.min(memories.length - 1, prev_0 + 1));
49
+ return;
50
+ }
51
+ if (input === "d" || input === "D") {
52
+ setConfirmDelete(true);
53
+ return;
54
+ }
55
+ };
56
+ $[0] = confirmDelete;
57
+ $[1] = memories.length;
58
+ $[2] = onCancel;
59
+ $[3] = onDelete;
60
+ $[4] = selectedIndex;
61
+ $[5] = t1;
62
+ } else {
63
+ t1 = $[5];
64
+ }
65
+ useInput(t1);
66
+ const termWidth = process.stdout.columns || 80;
67
+ const boxWidth = Math.min(termWidth - 2, 64);
68
+ if (memories.length === 0) {
69
+ let t2;
70
+ if ($[6] === Symbol.for("react.memo_cache_sentinel")) {
71
+ t2 = /*#__PURE__*/_jsxs(Box, {
72
+ flexDirection: "column",
73
+ borderStyle: "round",
74
+ borderColor: colors.border,
75
+ paddingX: 1,
76
+ paddingY: 1,
77
+ width: boxWidth,
78
+ children: [/*#__PURE__*/_jsx(Text, {
79
+ bold: true,
80
+ color: colors.brand,
81
+ children: "Memories"
82
+ }), /*#__PURE__*/_jsx(Box, {
83
+ height: 1
84
+ }), /*#__PURE__*/_jsx(Text, {
85
+ dimColor: true,
86
+ children: "No memories left."
87
+ }), /*#__PURE__*/_jsx(Box, {
88
+ height: 1
89
+ }), /*#__PURE__*/_jsx(Text, {
90
+ dimColor: true,
91
+ children: "esc to close"
92
+ })]
93
+ });
94
+ $[6] = t2;
95
+ } else {
96
+ t2 = $[6];
97
+ }
98
+ return t2;
99
+ }
100
+ let t2;
101
+ if ($[7] === Symbol.for("react.memo_cache_sentinel")) {
102
+ t2 = /*#__PURE__*/_jsx(Box, {
103
+ marginBottom: 1,
104
+ children: /*#__PURE__*/_jsx(Text, {
105
+ bold: true,
106
+ color: colors.brand,
107
+ children: "Memories"
108
+ })
48
109
  });
49
- const termWidth = process.stdout.columns || 80;
50
- const boxWidth = Math.min(termWidth - 2, 64);
51
- if (memories.length === 0) {
52
- return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: colors.border, paddingX: 1, paddingY: 1, width: boxWidth, children: [_jsx(Text, { bold: true, color: colors.brand, children: "Memories" }), _jsx(Box, { height: 1 }), _jsx(Text, { dimColor: true, children: "No memories left." }), _jsx(Box, { height: 1 }), _jsx(Text, { dimColor: true, children: "esc to close" })] }));
110
+ $[7] = t2;
111
+ } else {
112
+ t2 = $[7];
113
+ }
114
+ let t3;
115
+ if ($[8] !== memories || $[9] !== selectedIndex) {
116
+ let t4;
117
+ if ($[11] !== selectedIndex) {
118
+ t4 = (memory, i) => {
119
+ const isSelected = i === selectedIndex;
120
+ const display = memory.length > 50 ? memory.slice(0, 49) + "\u2026" : memory;
121
+ return /*#__PURE__*/_jsxs(Box, {
122
+ children: [/*#__PURE__*/_jsxs(Text, {
123
+ color: isSelected ? colors.brand : colors.quaternary,
124
+ children: [isSelected ? symbols.arrowRight : " ", " "]
125
+ }), /*#__PURE__*/_jsx(Text, {
126
+ color: isSelected ? colors.text : colors.secondary,
127
+ bold: isSelected,
128
+ children: display
129
+ })]
130
+ }, `${i}-${memory.slice(0, 20)}`);
131
+ };
132
+ $[11] = selectedIndex;
133
+ $[12] = t4;
134
+ } else {
135
+ t4 = $[12];
53
136
  }
54
- return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: colors.border, paddingX: 1, paddingY: 1, width: boxWidth, children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, color: colors.brand, children: "Memories" }) }), _jsx(Box, { flexDirection: "column", children: memories.map((memory, i) => {
55
- const isSelected = i === selectedIndex;
56
- const display = memory.length > 50
57
- ? memory.slice(0, 49) + "…"
58
- : memory;
59
- return (_jsxs(Box, { children: [_jsxs(Text, { color: isSelected ? colors.brand : colors.quaternary, children: [isSelected ? symbols.arrowRight : " ", " "] }), _jsx(Text, { color: isSelected ? colors.text : colors.secondary, bold: isSelected, children: display })] }, `${i}-${memory.slice(0, 20)}`));
60
- }) }), _jsx(Box, { marginTop: 1, children: confirmDelete ? (_jsxs(Text, { color: colors.warning, children: ["Delete \"", memories[selectedIndex]?.slice(0, 30), "\u2026\"? y/n"] })) : (_jsxs(Text, { dimColor: true, children: [symbols.arrowRight, " d delete esc cancel"] })) })] }));
137
+ t3 = memories.map(t4);
138
+ $[8] = memories;
139
+ $[9] = selectedIndex;
140
+ $[10] = t3;
141
+ } else {
142
+ t3 = $[10];
143
+ }
144
+ let t4;
145
+ if ($[13] !== t3) {
146
+ t4 = /*#__PURE__*/_jsx(Box, {
147
+ flexDirection: "column",
148
+ children: t3
149
+ });
150
+ $[13] = t3;
151
+ $[14] = t4;
152
+ } else {
153
+ t4 = $[14];
154
+ }
155
+ let t5;
156
+ if ($[15] !== confirmDelete || $[16] !== memories || $[17] !== selectedIndex) {
157
+ t5 = /*#__PURE__*/_jsx(Box, {
158
+ marginTop: 1,
159
+ children: confirmDelete ? /*#__PURE__*/_jsxs(Text, {
160
+ color: colors.warning,
161
+ children: ["Delete \"", memories[selectedIndex]?.slice(0, 30), "\u2026\"? y/n"]
162
+ }) : /*#__PURE__*/_jsxs(Text, {
163
+ dimColor: true,
164
+ children: [symbols.arrowRight, " d delete esc cancel"]
165
+ })
166
+ });
167
+ $[15] = confirmDelete;
168
+ $[16] = memories;
169
+ $[17] = selectedIndex;
170
+ $[18] = t5;
171
+ } else {
172
+ t5 = $[18];
173
+ }
174
+ let t6;
175
+ if ($[19] !== t4 || $[20] !== t5) {
176
+ t6 = /*#__PURE__*/_jsxs(Box, {
177
+ flexDirection: "column",
178
+ borderStyle: "round",
179
+ borderColor: colors.border,
180
+ paddingX: 1,
181
+ paddingY: 1,
182
+ width: boxWidth,
183
+ children: [t2, t4, t5]
184
+ });
185
+ $[19] = t4;
186
+ $[20] = t5;
187
+ $[21] = t6;
188
+ } else {
189
+ t6 = $[21];
190
+ }
191
+ return t6;
192
+ }
193
+ function _temp(prev) {
194
+ return Math.max(0, prev - 1);
61
195
  }
196
+ //# sourceMappingURL=MemoryManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryManager.js","names":["useState","Box","Text","useInput","colors","symbols","jsx","_jsx","jsxs","_jsxs","MemoryManager","t0","$","_c","memories","onDelete","onCancel","selectedIndex","setSelectedIndex","confirmDelete","setConfirmDelete","t1","length","input","key","escape","upArrow","_temp","downArrow","prev_0","Math","min","prev","termWidth","process","stdout","columns","boxWidth","t2","Symbol","for","flexDirection","borderStyle","borderColor","border","paddingX","paddingY","children","bold","color","brand","height","dimColor","marginBottom","t3","t4","memory","i","isSelected","display","slice","quaternary","arrowRight","text","secondary","map","t5","marginTop","warning","t6","max"],"sources":["../../../src/cli/chat/MemoryManager.tsx"],"sourcesContent":["/**\n * MemoryManager — interactive memory list with delete\n *\n * Renders a navigable list of remembered facts.\n * Press `d` to delete the selected memory, Esc to cancel.\n *\n * Follows StoreSelector pattern (useInput + manual index).\n */\n\nimport { useState } from \"react\";\nimport { Box, Text, useInput } from \"ink\";\nimport { colors, symbols } from \"../shared/Theme.js\";\n\ninterface MemoryManagerProps {\n memories: string[];\n onDelete: (index: number) => void;\n onCancel: () => void;\n}\n\nexport function MemoryManager({ memories, onDelete, onCancel }: MemoryManagerProps) {\n const [selectedIndex, setSelectedIndex] = useState(0);\n const [confirmDelete, setConfirmDelete] = useState(false);\n\n useInput((input, key) => {\n // Delete confirmation\n if (confirmDelete) {\n if (input === \"y\" || input === \"Y\") {\n setConfirmDelete(false);\n onDelete(selectedIndex);\n // Adjust selection if we deleted the last item\n if (selectedIndex >= memories.length - 1 && selectedIndex > 0) {\n setSelectedIndex(selectedIndex - 1);\n }\n return;\n }\n // Any other key cancels the confirmation\n setConfirmDelete(false);\n return;\n }\n\n if (key.escape) {\n onCancel();\n return;\n }\n if (key.upArrow) {\n setSelectedIndex((prev) => Math.max(0, prev - 1));\n return;\n }\n if (key.downArrow) {\n setSelectedIndex((prev) => Math.min(memories.length - 1, prev + 1));\n return;\n }\n if (input === \"d\" || input === \"D\") {\n setConfirmDelete(true);\n return;\n }\n });\n\n const termWidth = process.stdout.columns || 80;\n const boxWidth = Math.min(termWidth - 2, 64);\n\n if (memories.length === 0) {\n return (\n <Box\n flexDirection=\"column\"\n borderStyle=\"round\"\n borderColor={colors.border}\n paddingX={1}\n paddingY={1}\n width={boxWidth}\n >\n <Text bold color={colors.brand}>Memories</Text>\n <Box height={1} />\n <Text dimColor>No memories left.</Text>\n <Box height={1} />\n <Text dimColor>esc to close</Text>\n </Box>\n );\n }\n\n return (\n <Box\n flexDirection=\"column\"\n borderStyle=\"round\"\n borderColor={colors.border}\n paddingX={1}\n paddingY={1}\n width={boxWidth}\n >\n <Box marginBottom={1}>\n <Text bold color={colors.brand}>Memories</Text>\n </Box>\n\n <Box flexDirection=\"column\">\n {memories.map((memory, i) => {\n const isSelected = i === selectedIndex;\n const display = memory.length > 50\n ? memory.slice(0, 49) + \"…\"\n : memory;\n\n return (\n <Box key={`${i}-${memory.slice(0, 20)}`}>\n <Text color={isSelected ? colors.brand : colors.quaternary}>\n {isSelected ? symbols.arrowRight : \" \"}{\" \"}\n </Text>\n <Text\n color={isSelected ? colors.text : colors.secondary}\n bold={isSelected}\n >\n {display}\n </Text>\n </Box>\n );\n })}\n </Box>\n\n <Box marginTop={1}>\n {confirmDelete ? (\n <Text color={colors.warning}>\n Delete \"{memories[selectedIndex]?.slice(0, 30)}…\"? y/n\n </Text>\n ) : (\n <Text dimColor>{symbols.arrowRight} d delete esc cancel</Text>\n )}\n </Box>\n </Box>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -5,7 +5,6 @@
5
5
  * Telemetry footer: tokens, cost estimate, tool count.
6
6
  * Minimal Box usage — Text-first for reliable rendering.
7
7
  */
8
- import React from "react";
9
8
  import { type CompletedSubagentInfo } from "./SubagentPanel.js";
10
9
  export interface ToolCall {
11
10
  name: string;
@@ -38,8 +37,8 @@ export interface ChatMessage {
38
37
  cache_creation_tokens?: number;
39
38
  };
40
39
  }
41
- export declare const CompletedMessage: React.NamedExoticComponent<{
40
+ export declare function CompletedMessage({ msg, index, toolsExpanded }: {
42
41
  msg: ChatMessage;
43
42
  index: number;
44
43
  toolsExpanded: boolean;
45
- }>;
44
+ }): import("react/jsx-runtime").JSX.Element;