whale-code 6.5.5 → 6.5.7

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 (2089) hide show
  1. package/README.md +39 -31
  2. package/bin/{swagmanager-mcp.js → whale-code.js} +40 -2
  3. package/dist/cli/__tests__/print-mode-streaming.test.js +270 -0
  4. package/dist/cli/__tests__/print-mode.basic-output.test.js +230 -0
  5. package/dist/cli/__tests__/print-mode.session-errors.test.js +252 -0
  6. package/dist/cli/__tests__/print-mode.test.js +273 -0
  7. package/dist/cli/__tests__/serve-mode-messages.test.js +338 -0
  8. package/dist/cli/__tests__/serve-mode.messages.part2.test.js +266 -0
  9. package/dist/cli/__tests__/serve-mode.messages.test.js +277 -0
  10. package/dist/cli/__tests__/serve-mode.startup-http.test.js +279 -0
  11. package/dist/cli/__tests__/serve-mode.test.js +345 -0
  12. package/dist/cli/app.d.ts +1 -0
  13. package/dist/cli/app.js +154 -72
  14. package/dist/cli/app.js.map +1 -0
  15. package/dist/cli/chat/AgentSelector.js +105 -10
  16. package/dist/cli/chat/AgentSelector.js.map +1 -0
  17. package/dist/cli/chat/ChatApp.d.ts +8 -5
  18. package/dist/cli/chat/ChatApp.js +253 -315
  19. package/dist/cli/chat/ChatApp.js.map +1 -0
  20. package/dist/cli/chat/ChatInput.d.ts +3 -2
  21. package/dist/cli/chat/ChatInput.js +1111 -770
  22. package/dist/cli/chat/ChatInput.js.map +1 -0
  23. package/dist/cli/chat/ImsgManager.d.ts +20 -0
  24. package/dist/cli/chat/ImsgManager.js +341 -0
  25. package/dist/cli/chat/ImsgManager.js.map +1 -0
  26. package/dist/cli/chat/MarkdownText.d.ts +2 -1
  27. package/dist/cli/chat/MarkdownText.js +44 -15
  28. package/dist/cli/chat/MarkdownText.js.map +1 -0
  29. package/dist/cli/chat/MemoryManager.js +182 -46
  30. package/dist/cli/chat/MemoryManager.js.map +1 -0
  31. package/dist/cli/chat/MessageList.d.ts +3 -4
  32. package/dist/cli/chat/MessageList.js +195 -49
  33. package/dist/cli/chat/MessageList.js.map +1 -0
  34. package/dist/cli/chat/ModelSelector.js +282 -63
  35. package/dist/cli/chat/ModelSelector.js.map +1 -0
  36. package/dist/cli/chat/NodeManager.js +61 -84
  37. package/dist/cli/chat/NodeManager.js.map +1 -0
  38. package/dist/cli/chat/NodeSelector.js +171 -30
  39. package/dist/cli/chat/NodeSelector.js.map +1 -0
  40. package/dist/cli/chat/OverlayContext.d.ts +27 -0
  41. package/dist/cli/chat/OverlayContext.js +2 -0
  42. package/dist/cli/chat/OverlayContext.js.map +1 -0
  43. package/dist/cli/chat/PlanApproval.js +282 -57
  44. package/dist/cli/chat/PlanApproval.js.map +1 -0
  45. package/dist/cli/chat/RewindConfirmation.d.ts +12 -0
  46. package/dist/cli/chat/RewindConfirmation.js +243 -0
  47. package/dist/cli/chat/RewindConfirmation.js.map +1 -0
  48. package/dist/cli/chat/RewindViewer.js +560 -144
  49. package/dist/cli/chat/RewindViewer.js.map +1 -0
  50. package/dist/cli/chat/SessionManager.js +138 -30
  51. package/dist/cli/chat/SessionManager.js.map +1 -0
  52. package/dist/cli/chat/SlashMenu.d.ts +7 -24
  53. package/dist/cli/chat/SlashMenu.js +150 -190
  54. package/dist/cli/chat/SlashMenu.js.map +1 -0
  55. package/dist/cli/chat/StatusBar.d.ts +5 -2
  56. package/dist/cli/chat/StatusBar.js +188 -10
  57. package/dist/cli/chat/StatusBar.js.map +1 -0
  58. package/dist/cli/chat/StoreSelector.js +147 -18
  59. package/dist/cli/chat/StoreSelector.js.map +1 -0
  60. package/dist/cli/chat/StreamingText.d.ts +0 -3
  61. package/dist/cli/chat/StreamingText.js +21 -6
  62. package/dist/cli/chat/StreamingText.js.map +1 -0
  63. package/dist/cli/chat/SubagentPanel.d.ts +6 -7
  64. package/dist/cli/chat/SubagentPanel.js +253 -91
  65. package/dist/cli/chat/SubagentPanel.js.map +1 -0
  66. package/dist/cli/chat/TeamPanel.d.ts +1 -0
  67. package/dist/cli/chat/TeamPanel.js +201 -29
  68. package/dist/cli/chat/TeamPanel.js.map +1 -0
  69. package/dist/cli/chat/ThemeSelector.js +84 -24
  70. package/dist/cli/chat/ThemeSelector.js.map +1 -0
  71. package/dist/cli/chat/ToolIndicator.d.ts +7 -23
  72. package/dist/cli/chat/ToolIndicator.js +635 -430
  73. package/dist/cli/chat/ToolIndicator.js.map +1 -0
  74. package/dist/cli/chat/chat-input-menu-handler.d.ts +32 -0
  75. package/dist/cli/chat/components/LiveArea.d.ts +12 -0
  76. package/dist/cli/chat/components/LiveArea.js +252 -0
  77. package/dist/cli/chat/components/LiveArea.js.map +1 -0
  78. package/dist/cli/chat/components/OverlayRouter.d.ts +13 -0
  79. package/dist/cli/chat/components/OverlayRouter.js +257 -0
  80. package/dist/cli/chat/components/OverlayRouter.js.map +1 -0
  81. package/dist/cli/chat/components/StaticMessages.d.ts +9 -0
  82. package/dist/cli/chat/components/StaticMessages.js +132 -0
  83. package/dist/cli/chat/components/StaticMessages.js.map +1 -0
  84. package/dist/cli/chat/hooks/agent-loop-events.d.ts +77 -0
  85. package/dist/cli/chat/hooks/agent-loop-events.js +171 -0
  86. package/dist/cli/chat/hooks/agent-loop-events.js.map +1 -0
  87. package/dist/cli/chat/hooks/slash-command-config-system.d.ts +11 -0
  88. package/dist/cli/chat/hooks/slash-command-config-system.js +177 -0
  89. package/dist/cli/chat/hooks/slash-command-config-system.js.map +1 -0
  90. package/dist/cli/chat/hooks/slash-command-handlers-system.d.ts +12 -0
  91. package/dist/cli/chat/hooks/slash-command-handlers-system.js +127 -0
  92. package/dist/cli/chat/hooks/slash-command-handlers-system.js.map +1 -0
  93. package/dist/cli/chat/hooks/slash-command-handlers.d.ts +21 -0
  94. package/dist/cli/chat/hooks/slash-command-handlers.js +222 -0
  95. package/dist/cli/chat/hooks/slash-command-handlers.js.map +1 -0
  96. package/dist/cli/chat/hooks/slash-imsg-handlers.js +148 -0
  97. package/dist/cli/chat/hooks/slash-imsg-handlers.js.map +1 -0
  98. package/dist/cli/chat/hooks/slash-node-handlers.d.ts +26 -0
  99. package/dist/cli/chat/hooks/slash-node-handlers.js +226 -0
  100. package/dist/cli/chat/hooks/slash-node-handlers.js.map +1 -0
  101. package/dist/cli/chat/hooks/useAgentLoop.d.ts +2 -20
  102. package/dist/cli/chat/hooks/useAgentLoop.js +344 -373
  103. package/dist/cli/chat/hooks/useAgentLoop.js.map +1 -0
  104. package/dist/cli/chat/hooks/useElapsedClock.d.ts +19 -0
  105. package/dist/cli/chat/hooks/useElapsedClock.js +80 -0
  106. package/dist/cli/chat/hooks/useElapsedClock.js.map +1 -0
  107. package/dist/cli/chat/hooks/useOverlayHandlers.d.ts +23 -0
  108. package/dist/cli/chat/hooks/useOverlayHandlers.js +125 -0
  109. package/dist/cli/chat/hooks/useOverlayHandlers.js.map +1 -0
  110. package/dist/cli/chat/hooks/useSlashCommands.d.ts +14 -33
  111. package/dist/cli/chat/hooks/useSlashCommands.js +167 -616
  112. package/dist/cli/chat/hooks/useSlashCommands.js.map +1 -0
  113. package/dist/cli/chat/hooks/useStreamingReducer.d.ts +66 -0
  114. package/dist/cli/chat/imsg-manager-render.d.ts +29 -0
  115. package/dist/cli/chat/imsg-manager-render.js +294 -0
  116. package/dist/cli/chat/imsg-manager-render.js.map +1 -0
  117. package/dist/cli/chat/slash-commands.d.ts +37 -0
  118. package/dist/cli/chat/slash-commands.js +194 -0
  119. package/dist/cli/chat/slash-commands.js.map +1 -0
  120. package/dist/cli/chat/store.d.ts +115 -0
  121. package/dist/cli/chat/store.js +177 -0
  122. package/dist/cli/chat/store.js.map +1 -0
  123. package/dist/cli/chat/tool-indicator-helpers.d.ts +14 -0
  124. package/dist/cli/chat/tool-indicator-helpers.js +167 -0
  125. package/dist/cli/chat/tool-indicator-helpers.js.map +1 -0
  126. package/dist/cli/chat/tool-indicator-summary.d.ts +6 -0
  127. package/dist/cli/chat/tool-indicator-summary.js +103 -0
  128. package/dist/cli/chat/tool-indicator-summary.js.map +1 -0
  129. package/dist/cli/chat/tool-indicator-types.d.ts +66 -0
  130. package/dist/cli/chat/tool-indicator-types.js +177 -0
  131. package/dist/cli/chat/tool-indicator-types.js.map +1 -0
  132. package/dist/cli/commands/__tests__/config-cmd.test.js +270 -0
  133. package/dist/cli/commands/__tests__/doctor.test.js +257 -0
  134. package/dist/cli/commands/__tests__/imsg-node-bridge.test.js +99 -0
  135. package/dist/cli/commands/__tests__/imsg-utils.test.js +73 -0
  136. package/dist/cli/commands/__tests__/init.test.js +214 -0
  137. package/dist/cli/commands/__tests__/mcp.test.js +287 -0
  138. package/dist/cli/commands/config-cmd.js +56 -57
  139. package/dist/cli/commands/config-cmd.js.map +1 -0
  140. package/dist/cli/commands/db.js +184 -169
  141. package/dist/cli/commands/db.js.map +1 -0
  142. package/dist/cli/commands/doctor.js +212 -122
  143. package/dist/cli/commands/doctor.js.map +1 -0
  144. package/dist/cli/commands/imsg-config.d.ts +31 -0
  145. package/dist/cli/commands/imsg-config.js +104 -0
  146. package/dist/cli/commands/imsg-config.js.map +1 -0
  147. package/dist/cli/commands/imsg-node-bridge.d.ts +25 -0
  148. package/dist/cli/commands/imsg-node-bridge.js +229 -0
  149. package/dist/cli/commands/imsg-node-bridge.js.map +1 -0
  150. package/dist/cli/commands/imsg-utils.d.ts +14 -0
  151. package/dist/cli/commands/imsg-utils.js +42 -0
  152. package/dist/cli/commands/imsg-utils.js.map +1 -0
  153. package/dist/cli/commands/imsg-watcher-helpers.d.ts +40 -0
  154. package/dist/cli/commands/imsg-watcher-helpers.js +184 -0
  155. package/dist/cli/commands/imsg-watcher-helpers.js.map +1 -0
  156. package/dist/cli/commands/imsg-watcher.d.ts +11 -0
  157. package/dist/cli/commands/imsg-watcher.js +230 -0
  158. package/dist/cli/commands/imsg-watcher.js.map +1 -0
  159. package/dist/cli/commands/imsg.d.ts +14 -0
  160. package/dist/cli/commands/imsg.js +181 -0
  161. package/dist/cli/commands/imsg.js.map +1 -0
  162. package/dist/cli/commands/init.js +211 -244
  163. package/dist/cli/commands/init.js.map +1 -0
  164. package/dist/cli/commands/mcp.js +127 -122
  165. package/dist/cli/commands/mcp.js.map +1 -0
  166. package/dist/cli/commands/sessions.d.ts +9 -0
  167. package/dist/cli/commands/sessions.js +93 -0
  168. package/dist/cli/commands/sessions.js.map +1 -0
  169. package/dist/cli/login/LoginApp.js +358 -141
  170. package/dist/cli/login/LoginApp.js.map +1 -0
  171. package/dist/cli/print-mode.js +196 -177
  172. package/dist/cli/print-mode.js.map +1 -0
  173. package/dist/cli/serve-mode-persistence.d.ts +18 -0
  174. package/dist/cli/serve-mode-persistence.js +157 -0
  175. package/dist/cli/serve-mode-persistence.js.map +1 -0
  176. package/dist/cli/serve-mode-query.d.ts +9 -0
  177. package/dist/cli/serve-mode-query.js +247 -0
  178. package/dist/cli/serve-mode-query.js.map +1 -0
  179. package/dist/cli/serve-mode-types.d.ts +29 -0
  180. package/dist/cli/serve-mode-types.js +56 -0
  181. package/dist/cli/serve-mode-types.js.map +1 -0
  182. package/dist/cli/serve-mode.js +615 -530
  183. package/dist/cli/serve-mode.js.map +1 -0
  184. package/dist/cli/services/__tests__/agent-definitions.test.js +153 -0
  185. package/dist/cli/services/__tests__/agent-events-global.test.js +39 -0
  186. package/dist/cli/services/__tests__/agent-events.part2.test.js +113 -0
  187. package/dist/cli/services/__tests__/agent-events.test.js +157 -0
  188. package/dist/cli/services/__tests__/agent-loop-auth.test.js +392 -0
  189. package/dist/cli/services/__tests__/agent-loop-budget.test.js +389 -0
  190. package/dist/cli/services/__tests__/agent-loop-tools-lifecycle.test.js +430 -0
  191. package/dist/cli/services/__tests__/agent-loop-tools-maxturns.test.js +486 -0
  192. package/dist/cli/services/__tests__/agent-loop-utils-execution.test.js +528 -0
  193. package/dist/cli/services/__tests__/agent-loop-utils-helpers.test.js +466 -0
  194. package/dist/cli/services/__tests__/agent-worker-base-execute.test.js +257 -0
  195. package/dist/cli/services/__tests__/agent-worker-base-helpers.test.js +198 -0
  196. package/dist/cli/services/__tests__/agent-worker-base.test.js +278 -0
  197. package/dist/cli/services/__tests__/auth-service-exports.test.js +41 -0
  198. package/dist/cli/services/__tests__/auth-service.part2.test.js +169 -0
  199. package/dist/cli/services/__tests__/auth-service.test.js +242 -0
  200. package/dist/cli/services/__tests__/background-processes.test.js +282 -0
  201. package/dist/cli/services/__tests__/claude-md-loader.test.js +134 -0
  202. package/dist/cli/services/__tests__/config-store.test.js +247 -0
  203. package/dist/cli/services/__tests__/debug-log.test.js +199 -0
  204. package/dist/cli/services/__tests__/edge-cases-caching.test.js +174 -0
  205. package/dist/cli/services/__tests__/edge-cases-compaction-core.test.js +226 -0
  206. package/dist/cli/services/__tests__/edge-cases-compaction-openai.test.js +152 -0
  207. package/dist/cli/services/__tests__/edge-cases-compaction-shapes.test.js +53 -0
  208. package/dist/cli/services/__tests__/edge-cases-compaction-thinking.test.js +226 -0
  209. package/dist/cli/services/__tests__/edge-cases-compaction.test.js +131 -0
  210. package/dist/cli/services/__tests__/edge-cases-paths.test.js +86 -0
  211. package/dist/cli/services/__tests__/error-logger-messages.test.js +81 -0
  212. package/dist/cli/services/__tests__/error-logger-transport.test.js +119 -0
  213. package/dist/cli/services/__tests__/error-logger.test.js +264 -0
  214. package/dist/cli/services/__tests__/file-history.test.js +136 -0
  215. package/dist/cli/services/__tests__/git-context-cache-reset.test.js +223 -0
  216. package/dist/cli/services/__tests__/git-context.test.js +241 -0
  217. package/dist/cli/services/__tests__/interactive-tools-execute.test.js +166 -0
  218. package/dist/cli/services/__tests__/interactive-tools-plan.test.js +197 -0
  219. package/dist/cli/services/__tests__/interactive-tools.part2.test.js +168 -0
  220. package/dist/cli/services/__tests__/interactive-tools.test.js +179 -0
  221. package/dist/cli/services/__tests__/keybinding-manager.test.js +205 -0
  222. package/dist/cli/services/__tests__/local-tools-dispatch.test.js +404 -0
  223. package/dist/cli/services/__tests__/local-tools.test.js +238 -0
  224. package/dist/cli/services/__tests__/lsp-manager.test.js +364 -0
  225. package/dist/cli/services/__tests__/mcp-client-connect-disconnect.test.js +310 -0
  226. package/dist/cli/services/__tests__/mcp-client.test.js +93 -0
  227. package/dist/cli/services/__tests__/memory-manager.test.js +154 -0
  228. package/dist/cli/services/__tests__/model-manager-utils.test.js +154 -0
  229. package/dist/cli/services/__tests__/model-manager.test.js +175 -0
  230. package/dist/cli/services/__tests__/permission-modes.test.js +222 -0
  231. package/dist/cli/services/__tests__/ripgrep.test.js +328 -0
  232. package/dist/cli/services/__tests__/server-tools-execute.test.js +317 -0
  233. package/dist/cli/services/__tests__/server-tools.test.js +272 -0
  234. package/dist/cli/services/__tests__/session-persistence.test.js +245 -0
  235. package/dist/cli/services/__tests__/subagent-basic.test.js +489 -0
  236. package/dist/cli/services/__tests__/subagent-edge.test.js +545 -0
  237. package/dist/cli/services/__tests__/subagent-prompts.test.js +558 -0
  238. package/dist/cli/services/__tests__/subagent-worker-errors.test.js +255 -0
  239. package/dist/cli/services/__tests__/subagent-worker.test.js +242 -0
  240. package/dist/cli/services/__tests__/system-prompt.test.js +210 -0
  241. package/dist/cli/services/__tests__/team-lead-comms-messaging.test.js +250 -0
  242. package/dist/cli/services/__tests__/team-lead-comms-result.test.js +232 -0
  243. package/dist/cli/services/__tests__/team-lead-comms-stop.test.js +344 -0
  244. package/dist/cli/services/__tests__/team-lead-comms.test.js +285 -0
  245. package/dist/cli/services/__tests__/team-lead-create.test.js +327 -0
  246. package/dist/cli/services/__tests__/team-lead-run.test.js +318 -0
  247. package/dist/cli/services/__tests__/team-lead-stop.test.js +199 -0
  248. package/dist/cli/services/__tests__/team-state-comms.test.js +240 -0
  249. package/dist/cli/services/__tests__/team-state-core.test.js +230 -0
  250. package/dist/cli/services/__tests__/team-state-tasks-complete-fail-available.test.js +224 -0
  251. package/dist/cli/services/__tests__/team-state-tasks.test.js +184 -0
  252. package/dist/cli/services/__tests__/telemetry-ai-metadata.test.js +116 -0
  253. package/dist/cli/services/__tests__/telemetry.part2.test.js +195 -0
  254. package/dist/cli/services/__tests__/telemetry.test.js +176 -0
  255. package/dist/cli/services/agent-config.d.ts +5 -1
  256. package/dist/cli/services/agent-config.js +66 -36
  257. package/dist/cli/services/agent-config.js.map +1 -0
  258. package/dist/cli/services/agent-definitions.d.ts +4 -1
  259. package/dist/cli/services/agent-definitions.js +97 -56
  260. package/dist/cli/services/agent-definitions.js.map +1 -0
  261. package/dist/cli/services/agent-event-types.d.ts +148 -0
  262. package/dist/cli/services/agent-event-types.js +2 -0
  263. package/dist/cli/services/agent-event-types.js.map +1 -0
  264. package/dist/cli/services/agent-events.js +225 -162
  265. package/dist/cli/services/agent-events.js.map +1 -0
  266. package/dist/cli/services/agent-loop-iteration.d.ts +13 -0
  267. package/dist/cli/services/agent-loop-setup.d.ts +32 -0
  268. package/dist/cli/services/agent-loop-shell-summarize.d.ts +11 -0
  269. package/dist/cli/services/agent-loop-shell-summarize.js +94 -0
  270. package/dist/cli/services/agent-loop-shell-summarize.js.map +1 -0
  271. package/dist/cli/services/agent-loop-tools.d.ts +37 -0
  272. package/dist/cli/services/agent-loop-tools.js +243 -0
  273. package/dist/cli/services/agent-loop-tools.js.map +1 -0
  274. package/dist/cli/services/agent-loop-types.d.ts +52 -0
  275. package/dist/cli/services/agent-loop-types.js +25 -0
  276. package/dist/cli/services/agent-loop-types.js.map +1 -0
  277. package/dist/cli/services/agent-loop.d.ts +2 -2
  278. package/dist/cli/services/agent-loop.js +1135 -702
  279. package/dist/cli/services/agent-loop.js.map +1 -0
  280. package/dist/cli/services/agent-worker-base-api.d.ts +19 -0
  281. package/dist/cli/services/agent-worker-base-helpers.d.ts +27 -0
  282. package/dist/cli/services/agent-worker-base-tools.d.ts +16 -0
  283. package/dist/cli/services/agent-worker-base-types.d.ts +81 -0
  284. package/dist/cli/services/agent-worker-base.d.ts +35 -5
  285. package/dist/cli/services/agent-worker-base.js +337 -153
  286. package/dist/cli/services/agent-worker-base.js.map +1 -0
  287. package/dist/cli/services/api-retry.js +69 -64
  288. package/dist/cli/services/api-retry.js.map +1 -0
  289. package/dist/cli/services/auth-service.d.ts +3 -3
  290. package/dist/cli/services/auth-service.js +213 -136
  291. package/dist/cli/services/auth-service.js.map +1 -0
  292. package/dist/cli/services/background-agents.d.ts +26 -0
  293. package/dist/cli/services/background-processes-ops.d.ts +24 -0
  294. package/dist/cli/services/background-processes.d.ts +2 -1
  295. package/dist/cli/services/background-processes.js +347 -267
  296. package/dist/cli/services/background-processes.js.map +1 -0
  297. package/dist/cli/services/background-tool-defs.d.ts +50 -0
  298. package/dist/cli/services/browser-auth.d.ts +2 -2
  299. package/dist/cli/services/browser-auth.js +159 -118
  300. package/dist/cli/services/browser-auth.js.map +1 -0
  301. package/dist/cli/services/claude-md-loader.js +40 -36
  302. package/dist/cli/services/claude-md-loader.js.map +1 -0
  303. package/dist/cli/services/cli-agent-loop.d.ts +41 -0
  304. package/dist/cli/services/cli-agent-loop.js +104 -0
  305. package/dist/cli/services/cli-agent-loop.js.map +1 -0
  306. package/dist/cli/services/config-modules-model.test.js +133 -0
  307. package/dist/cli/services/config-modules-permission.test.js +85 -0
  308. package/dist/cli/services/config-modules-permissions.test.js +85 -0
  309. package/dist/cli/services/config-modules-session.test.js +297 -0
  310. package/dist/cli/services/config-store.d.ts +14 -4
  311. package/dist/cli/services/config-store.js +249 -117
  312. package/dist/cli/services/config-store.js.map +1 -0
  313. package/dist/cli/services/debug-log.d.ts +1 -1
  314. package/dist/cli/services/debug-log.js +34 -35
  315. package/dist/cli/services/debug-log.js.map +1 -0
  316. package/dist/cli/services/env-detect.d.ts +7 -0
  317. package/dist/cli/services/env-detect.js +9 -0
  318. package/dist/cli/services/env-detect.js.map +1 -0
  319. package/dist/cli/services/error-logger-internals.d.ts +25 -0
  320. package/dist/cli/services/error-logger-internals.js +111 -0
  321. package/dist/cli/services/error-logger-internals.js.map +1 -0
  322. package/dist/cli/services/error-logger.js +187 -169
  323. package/dist/cli/services/error-logger.js.map +1 -0
  324. package/dist/cli/services/file-history.d.ts +1 -1
  325. package/dist/cli/services/file-history.js +50 -54
  326. package/dist/cli/services/file-history.js.map +1 -0
  327. package/dist/cli/services/format-server-response-columns.test.js +265 -0
  328. package/dist/cli/services/format-server-response-fallback.test.js +65 -0
  329. package/dist/cli/services/format-server-response-formatters.d.ts +18 -0
  330. package/dist/cli/services/format-server-response-formatters.js +195 -0
  331. package/dist/cli/services/format-server-response-formatters.js.map +1 -0
  332. package/dist/cli/services/format-server-response-primitives-basic.test.js +261 -0
  333. package/dist/cli/services/format-server-response-primitives-nested.test.js +188 -0
  334. package/dist/cli/services/format-server-response-primitives.test.js +300 -0
  335. package/dist/cli/services/format-server-response-realworld.test.js +248 -0
  336. package/dist/cli/services/format-server-response-values.test.js +247 -0
  337. package/dist/cli/services/format-server-response.js +334 -372
  338. package/dist/cli/services/format-server-response.js.map +1 -0
  339. package/dist/cli/services/git-context.js +61 -45
  340. package/dist/cli/services/git-context.js.map +1 -0
  341. package/dist/cli/services/hooks-execute.d.ts +47 -0
  342. package/dist/cli/services/hooks-execute.js +181 -0
  343. package/dist/cli/services/hooks-execute.js.map +1 -0
  344. package/dist/cli/services/hooks-runners.test.js +184 -0
  345. package/dist/cli/services/hooks.d.ts +2 -2
  346. package/dist/cli/services/hooks.glob-load.test.js +233 -0
  347. package/dist/cli/services/hooks.js +195 -180
  348. package/dist/cli/services/hooks.js.map +1 -0
  349. package/dist/cli/services/hooks.run-hooks.test.js +184 -0
  350. package/dist/cli/services/hooks.test.js +233 -0
  351. package/dist/cli/services/ink-incremental.d.ts +19 -0
  352. package/dist/cli/services/ink-incremental.js +59 -0
  353. package/dist/cli/services/ink-incremental.js.map +1 -0
  354. package/dist/cli/services/ink-resize-fix.js +54 -44
  355. package/dist/cli/services/ink-resize-fix.js.map +1 -0
  356. package/dist/cli/services/ink-sync-output.d.ts +12 -0
  357. package/dist/cli/services/ink-sync-output.js +16 -0
  358. package/dist/cli/services/ink-sync-output.js.map +1 -0
  359. package/dist/cli/services/interactive-tool-defs.d.ts +80 -0
  360. package/dist/cli/services/interactive-tools.d.ts +5 -2
  361. package/dist/cli/services/interactive-tools.js +283 -213
  362. package/dist/cli/services/interactive-tools.js.map +1 -0
  363. package/dist/cli/services/keybinding-manager.d.ts +13 -1
  364. package/dist/cli/services/keybinding-manager.js +131 -63
  365. package/dist/cli/services/keybinding-manager.js.map +1 -0
  366. package/dist/cli/services/local-tools-agent-defs-tasks.d.ts +6 -0
  367. package/dist/cli/services/local-tools-agent-defs-tasks.js +245 -0
  368. package/dist/cli/services/local-tools-agent-defs-tasks.js.map +1 -0
  369. package/dist/cli/services/local-tools-agent-defs-utils.d.ts +6 -0
  370. package/dist/cli/services/local-tools-agent-defs-utils.js +198 -0
  371. package/dist/cli/services/local-tools-agent-defs-utils.js.map +1 -0
  372. package/dist/cli/services/local-tools-agent-defs.d.ts +10 -0
  373. package/dist/cli/services/local-tools-agent-defs.js +13 -0
  374. package/dist/cli/services/local-tools-agent-defs.js.map +1 -0
  375. package/dist/cli/services/local-tools-definitions.d.ts +6 -0
  376. package/dist/cli/services/local-tools-files.test.js +256 -0
  377. package/dist/cli/services/local-tools-read-many.d.ts +6 -0
  378. package/dist/cli/services/local-tools.d.ts +1 -1
  379. package/dist/cli/services/local-tools.js +938 -657
  380. package/dist/cli/services/local-tools.js.map +1 -0
  381. package/dist/cli/services/lsp-config.d.ts +13 -0
  382. package/dist/cli/services/lsp-config.js +72 -0
  383. package/dist/cli/services/lsp-config.js.map +1 -0
  384. package/dist/cli/services/lsp-formatters.d.ts +11 -0
  385. package/dist/cli/services/lsp-formatters.js +209 -0
  386. package/dist/cli/services/lsp-formatters.js.map +1 -0
  387. package/dist/cli/services/lsp-manager.js +757 -594
  388. package/dist/cli/services/lsp-manager.js.map +1 -0
  389. package/dist/cli/services/lsp-protocol.d.ts +9 -0
  390. package/dist/cli/services/lsp-protocol.js +40 -0
  391. package/dist/cli/services/lsp-protocol.js.map +1 -0
  392. package/dist/cli/services/lsp-server-docs.d.ts +8 -0
  393. package/dist/cli/services/lsp-server-docs.js +132 -0
  394. package/dist/cli/services/lsp-server-docs.js.map +1 -0
  395. package/dist/cli/services/lsp-server-documents.d.ts +8 -0
  396. package/dist/cli/services/lsp-server-documents.js +132 -0
  397. package/dist/cli/services/lsp-server-documents.js.map +1 -0
  398. package/dist/cli/services/lsp-server.d.ts +40 -0
  399. package/dist/cli/services/lsp-server.js +270 -0
  400. package/dist/cli/services/lsp-server.js.map +1 -0
  401. package/dist/cli/services/mcp-client.d.ts +1 -1
  402. package/dist/cli/services/mcp-client.js +173 -134
  403. package/dist/cli/services/mcp-client.js.map +1 -0
  404. package/dist/cli/services/memory-manager.js +53 -40
  405. package/dist/cli/services/memory-manager.js.map +1 -0
  406. package/dist/cli/services/model-manager.js +55 -40
  407. package/dist/cli/services/model-manager.js.map +1 -0
  408. package/dist/cli/services/model-router.js +115 -85
  409. package/dist/cli/services/model-router.js.map +1 -0
  410. package/dist/cli/services/model-router.test.js +245 -0
  411. package/dist/cli/services/paths.d.ts +30 -0
  412. package/dist/cli/services/paths.js +81 -0
  413. package/dist/cli/services/paths.js.map +1 -0
  414. package/dist/cli/services/permission-modes.js +45 -25
  415. package/dist/cli/services/permission-modes.js.map +1 -0
  416. package/dist/cli/services/project-index.d.ts +41 -0
  417. package/dist/cli/services/project-index.js +286 -0
  418. package/dist/cli/services/project-index.js.map +1 -0
  419. package/dist/cli/services/rewind-rewindTo.test.js +202 -0
  420. package/dist/cli/services/rewind.js +182 -168
  421. package/dist/cli/services/rewind.js.map +1 -0
  422. package/dist/cli/services/rewind.test.js +175 -0
  423. package/dist/cli/services/ripgrep.js +115 -115
  424. package/dist/cli/services/ripgrep.js.map +1 -0
  425. package/dist/cli/services/sandbox.d.ts +1 -1
  426. package/dist/cli/services/sandbox.js +58 -37
  427. package/dist/cli/services/sandbox.js.map +1 -0
  428. package/dist/cli/services/sandbox.test.js +198 -0
  429. package/dist/cli/services/server-tools-client.d.ts +46 -0
  430. package/dist/cli/services/server-tools-client.js +211 -0
  431. package/dist/cli/services/server-tools-client.js.map +1 -0
  432. package/dist/cli/services/server-tools-media.d.ts +21 -0
  433. package/dist/cli/services/server-tools-media.js +163 -0
  434. package/dist/cli/services/server-tools-media.js.map +1 -0
  435. package/dist/cli/services/server-tools-preprocess.d.ts +23 -0
  436. package/dist/cli/services/server-tools-preprocess.js +386 -0
  437. package/dist/cli/services/server-tools-preprocess.js.map +1 -0
  438. package/dist/cli/services/server-tools.d.ts +2 -0
  439. package/dist/cli/services/server-tools.js +763 -565
  440. package/dist/cli/services/server-tools.js.map +1 -0
  441. package/dist/cli/services/session-client.d.ts +78 -0
  442. package/dist/cli/services/session-client.js +197 -0
  443. package/dist/cli/services/session-client.js.map +1 -0
  444. package/dist/cli/services/session-persistence.d.ts +3 -0
  445. package/dist/cli/services/session-persistence.js +81 -74
  446. package/dist/cli/services/session-persistence.js.map +1 -0
  447. package/dist/cli/services/subagent-execution.d.ts +12 -0
  448. package/dist/cli/services/subagent-loop-v2.d.ts +36 -0
  449. package/dist/cli/services/subagent-loop-v2.js +238 -0
  450. package/dist/cli/services/subagent-loop-v2.js.map +1 -0
  451. package/dist/cli/services/subagent-tools.d.ts +10 -0
  452. package/dist/cli/services/subagent-tools.js +96 -0
  453. package/dist/cli/services/subagent-tools.js.map +1 -0
  454. package/dist/cli/services/subagent-types.d.ts +57 -0
  455. package/dist/cli/services/subagent-types.js +218 -0
  456. package/dist/cli/services/subagent-types.js.map +1 -0
  457. package/dist/cli/services/subagent-worker.js +42 -27
  458. package/dist/cli/services/subagent-worker.js.map +1 -0
  459. package/dist/cli/services/subagent.d.ts +2 -0
  460. package/dist/cli/services/subagent.js +606 -433
  461. package/dist/cli/services/subagent.js.map +1 -0
  462. package/dist/cli/services/system-prompt.js +111 -80
  463. package/dist/cli/services/system-prompt.js.map +1 -0
  464. package/dist/cli/services/task-decomposer.d.ts +1 -1
  465. package/dist/cli/services/task-decomposer.js +172 -139
  466. package/dist/cli/services/task-decomposer.js.map +1 -0
  467. package/dist/cli/services/team-lead-auto.d.ts +11 -0
  468. package/dist/cli/services/team-lead-execution.d.ts +28 -0
  469. package/dist/cli/services/team-lead-types.d.ts +37 -0
  470. package/dist/cli/services/team-lead-types.js +2 -0
  471. package/dist/cli/services/team-lead-types.js.map +1 -0
  472. package/dist/cli/services/team-lead.d.ts +62 -2
  473. package/dist/cli/services/team-lead.js +863 -528
  474. package/dist/cli/services/team-lead.js.map +1 -0
  475. package/dist/cli/services/team-state-members.d.ts +11 -0
  476. package/dist/cli/services/team-state-members.js +185 -0
  477. package/dist/cli/services/team-state-members.js.map +1 -0
  478. package/dist/cli/services/team-state-messaging.d.ts +16 -0
  479. package/dist/cli/services/team-state-messaging.js +90 -0
  480. package/dist/cli/services/team-state-messaging.js.map +1 -0
  481. package/dist/cli/services/team-state-tasks.d.ts +12 -0
  482. package/dist/cli/services/team-state-tasks.js +23 -0
  483. package/dist/cli/services/team-state-tasks.js.map +1 -0
  484. package/dist/cli/services/team-state-types.d.ts +54 -0
  485. package/dist/cli/services/team-state-types.js +129 -0
  486. package/dist/cli/services/team-state-types.js.map +1 -0
  487. package/dist/cli/services/team-state.d.ts +5 -0
  488. package/dist/cli/services/team-state.js +348 -319
  489. package/dist/cli/services/team-state.js.map +1 -0
  490. package/dist/cli/services/teammate-loop.js +557 -0
  491. package/dist/cli/services/teammate-loop.js.map +1 -0
  492. package/dist/cli/services/teammate-prompt.d.ts +2 -0
  493. package/dist/cli/services/teammate-prompt.js +68 -0
  494. package/dist/cli/services/teammate-prompt.js.map +1 -0
  495. package/dist/cli/services/teammate-tools.d.ts +6 -0
  496. package/dist/cli/services/teammate-tools.js +158 -0
  497. package/dist/cli/services/teammate-tools.js.map +1 -0
  498. package/dist/cli/services/teammate-types.d.ts +36 -0
  499. package/dist/cli/services/teammate-types.js +43 -0
  500. package/dist/cli/services/teammate-types.js.map +1 -0
  501. package/dist/cli/services/teammate-worker-helpers.d.ts +71 -0
  502. package/dist/cli/services/teammate-worker-helpers.js +183 -0
  503. package/dist/cli/services/teammate-worker-helpers.js.map +1 -0
  504. package/dist/cli/services/teammate-worker-task-cleanup.d.ts +27 -0
  505. package/dist/cli/services/teammate-worker-task-cleanup.js +91 -0
  506. package/dist/cli/services/teammate-worker-task-cleanup.js.map +1 -0
  507. package/dist/cli/services/teammate-worker-task-loop.d.ts +35 -0
  508. package/dist/cli/services/teammate-worker-task-loop.js +273 -0
  509. package/dist/cli/services/teammate-worker-task-loop.js.map +1 -0
  510. package/dist/cli/services/teammate-worker.d.ts +13 -0
  511. package/dist/cli/services/teammate-worker.js +294 -0
  512. package/dist/cli/services/teammate-worker.js.map +1 -0
  513. package/dist/cli/services/teammate.d.ts +8 -2
  514. package/dist/cli/services/teammate.js +857 -569
  515. package/dist/cli/services/teammate.js.map +1 -0
  516. package/dist/cli/services/telemetry-spans.d.ts +17 -0
  517. package/dist/cli/services/telemetry-spans.js +172 -0
  518. package/dist/cli/services/telemetry-spans.js.map +1 -0
  519. package/dist/cli/services/telemetry.d.ts +6 -1
  520. package/dist/cli/services/telemetry.js +180 -157
  521. package/dist/cli/services/telemetry.js.map +1 -0
  522. package/dist/cli/services/tools/__tests__/agent-tools-tasks-teams.test.js +250 -0
  523. package/dist/cli/services/tools/__tests__/agent-tools-teams.test.js +200 -0
  524. package/dist/cli/services/tools/__tests__/agent-tools.test.js +340 -0
  525. package/dist/cli/services/tools/__tests__/file-ops-cache.test.js +152 -0
  526. package/dist/cli/services/tools/__tests__/file-ops-notebook.test.js +249 -0
  527. package/dist/cli/services/tools/__tests__/file-ops-read.test.js +261 -0
  528. package/dist/cli/services/tools/__tests__/file-ops-write.test.js +292 -0
  529. package/dist/cli/services/tools/__tests__/search-tools-rg.test.js +92 -0
  530. package/dist/cli/services/tools/__tests__/search-tools.part2.test.js +174 -0
  531. package/dist/cli/services/tools/__tests__/search-tools.test.js +227 -0
  532. package/dist/cli/services/tools/__tests__/shell-exec-allowed-core.test.js +163 -0
  533. package/dist/cli/services/tools/__tests__/shell-exec-allowed-extended.test.js +220 -0
  534. package/dist/cli/services/tools/__tests__/shell-exec-allowed.part2.test.js +215 -0
  535. package/dist/cli/services/tools/__tests__/shell-exec-allowed.test.js +154 -0
  536. package/dist/cli/services/tools/__tests__/shell-exec-blocked.test.js +132 -0
  537. package/dist/cli/services/tools/__tests__/shell-exec-execution.test.js +245 -0
  538. package/dist/cli/services/tools/__tests__/task-manager-create.test.js +110 -0
  539. package/dist/cli/services/tools/__tests__/task-manager-crud.test.js +339 -0
  540. package/dist/cli/services/tools/__tests__/task-manager-list-get.test.js +343 -0
  541. package/dist/cli/services/tools/__tests__/task-manager-query.test.js +346 -0
  542. package/dist/cli/services/tools/__tests__/task-manager-routing.test.js +58 -0
  543. package/dist/cli/services/tools/__tests__/task-manager-update.test.js +224 -0
  544. package/dist/cli/services/tools/__tests__/task-manager.test.js +159 -0
  545. package/dist/cli/services/tools/__tests__/web-tools-html-search.test.js +227 -0
  546. package/dist/cli/services/tools/__tests__/web-tools.test.js +285 -0
  547. package/dist/cli/services/tools/agent-tools-tasks.d.ts +10 -0
  548. package/dist/cli/services/tools/agent-tools-tasks.js +216 -0
  549. package/dist/cli/services/tools/agent-tools-tasks.js.map +1 -0
  550. package/dist/cli/services/tools/agent-tools-team.d.ts +8 -0
  551. package/dist/cli/services/tools/agent-tools-team.js +101 -0
  552. package/dist/cli/services/tools/agent-tools-team.js.map +1 -0
  553. package/dist/cli/services/tools/agent-tools.d.ts +3 -3
  554. package/dist/cli/services/tools/agent-tools.js +555 -324
  555. package/dist/cli/services/tools/agent-tools.js.map +1 -0
  556. package/dist/cli/services/tools/file-ops-notebook.d.ts +9 -0
  557. package/dist/cli/services/tools/file-ops-notebook.js +186 -0
  558. package/dist/cli/services/tools/file-ops-notebook.js.map +1 -0
  559. package/dist/cli/services/tools/file-ops-read.d.ts +11 -0
  560. package/dist/cli/services/tools/file-ops-read.js +237 -0
  561. package/dist/cli/services/tools/file-ops-read.js.map +1 -0
  562. package/dist/cli/services/tools/file-ops-write.d.ts +8 -0
  563. package/dist/cli/services/tools/file-ops-write.js +260 -0
  564. package/dist/cli/services/tools/file-ops-write.js.map +1 -0
  565. package/dist/cli/services/tools/file-ops.d.ts +1 -0
  566. package/dist/cli/services/tools/file-ops.js +727 -447
  567. package/dist/cli/services/tools/file-ops.js.map +1 -0
  568. package/dist/cli/services/tools/html-to-text.d.ts +6 -0
  569. package/dist/cli/services/tools/html-to-text.js +118 -0
  570. package/dist/cli/services/tools/html-to-text.js.map +1 -0
  571. package/dist/cli/services/tools/search-tools.js +231 -162
  572. package/dist/cli/services/tools/search-tools.js.map +1 -0
  573. package/dist/cli/services/tools/shell-exec.js +197 -151
  574. package/dist/cli/services/tools/shell-exec.js.map +1 -0
  575. package/dist/cli/services/tools/shell-exec.test.js +148 -0
  576. package/dist/cli/services/tools/ssrf-guard.d.ts +6 -0
  577. package/dist/cli/services/tools/ssrf-guard.js +80 -0
  578. package/dist/cli/services/tools/ssrf-guard.js.map +1 -0
  579. package/dist/cli/services/tools/task-manager.js +206 -173
  580. package/dist/cli/services/tools/task-manager.js.map +1 -0
  581. package/dist/cli/services/tools/web-tools.js +388 -341
  582. package/dist/cli/services/tools/web-tools.js.map +1 -0
  583. package/dist/cli/setup/SetupApp.d.ts +2 -2
  584. package/dist/cli/setup/SetupApp.js +608 -160
  585. package/dist/cli/setup/SetupApp.js.map +1 -0
  586. package/dist/cli/setup/SetupComponents.d.ts +10 -0
  587. package/dist/cli/setup/SetupComponents.js +144 -0
  588. package/dist/cli/setup/SetupComponents.js.map +1 -0
  589. package/dist/cli/setup/setup-cli-targets.d.ts +9 -0
  590. package/dist/cli/setup/setup-cli-targets.js +49 -0
  591. package/dist/cli/setup/setup-cli-targets.js.map +1 -0
  592. package/dist/cli/shared/ErrorBoundary.d.ts +22 -0
  593. package/dist/cli/shared/ErrorBoundary.js +73 -0
  594. package/dist/cli/shared/ErrorBoundary.js.map +1 -0
  595. package/dist/cli/shared/InlineErrorBoundary.d.ts +22 -0
  596. package/dist/cli/shared/InlineErrorBoundary.js +35 -0
  597. package/dist/cli/shared/InlineErrorBoundary.js.map +1 -0
  598. package/dist/cli/shared/MatrixIntro.js +67 -69
  599. package/dist/cli/shared/MatrixIntro.js.map +1 -0
  600. package/dist/cli/shared/SharedTick.d.ts +10 -0
  601. package/dist/cli/shared/SpinnerSlot.d.ts +22 -0
  602. package/dist/cli/shared/SpinnerSlot.js +156 -0
  603. package/dist/cli/shared/SpinnerSlot.js.map +1 -0
  604. package/dist/cli/shared/Theme.d.ts +1 -1
  605. package/dist/cli/shared/Theme.js +136 -92
  606. package/dist/cli/shared/Theme.js.map +1 -0
  607. package/dist/cli/shared/WhaleBanner.js +100 -11
  608. package/dist/cli/shared/WhaleBanner.js.map +1 -0
  609. package/dist/cli/shared/__tests__/markdown.test.js +188 -0
  610. package/dist/cli/shared/format-utils.d.ts +16 -0
  611. package/dist/cli/shared/format-utils.js +121 -0
  612. package/dist/cli/shared/format-utils.js.map +1 -0
  613. package/dist/cli/shared/markdown-chart.d.ts +8 -0
  614. package/dist/cli/shared/markdown-chart.js +92 -0
  615. package/dist/cli/shared/markdown-chart.js.map +1 -0
  616. package/dist/cli/shared/markdown-diff.d.ts +15 -0
  617. package/dist/cli/shared/markdown-diff.js +205 -0
  618. package/dist/cli/shared/markdown-diff.js.map +1 -0
  619. package/dist/cli/shared/markdown-helpers.d.ts +33 -0
  620. package/dist/cli/shared/markdown-helpers.js +129 -0
  621. package/dist/cli/shared/markdown-helpers.js.map +1 -0
  622. package/dist/cli/shared/markdown-table.d.ts +10 -0
  623. package/dist/cli/shared/markdown-table.js +227 -0
  624. package/dist/cli/shared/markdown-table.js.map +1 -0
  625. package/dist/cli/shared/markdown.d.ts +2 -4
  626. package/dist/cli/shared/markdown.js +658 -703
  627. package/dist/cli/shared/markdown.js.map +1 -0
  628. package/dist/cli/shared/marked-terminal.d.js +2 -0
  629. package/dist/cli/shared/marked-terminal.d.js.map +1 -0
  630. package/dist/cli/shared/theme-manager.js +99 -90
  631. package/dist/cli/shared/theme-manager.js.map +1 -0
  632. package/dist/cli/shared/theme-presets.js +256 -254
  633. package/dist/cli/shared/theme-presets.js.map +1 -0
  634. package/dist/cli/shared/useLatestRef.d.ts +11 -0
  635. package/dist/cli/shared/useLatestRef.js +34 -0
  636. package/dist/cli/shared/useLatestRef.js.map +1 -0
  637. package/dist/cli/shared/useSyncState.d.ts +11 -0
  638. package/dist/cli/shared/useSyncState.js +39 -0
  639. package/dist/cli/shared/useSyncState.js.map +1 -0
  640. package/dist/cli/status/StatusApp.js +235 -86
  641. package/dist/cli/status/StatusApp.js.map +1 -0
  642. package/dist/cli/stores/StoreApp.js +278 -66
  643. package/dist/cli/stores/StoreApp.js.map +1 -0
  644. package/dist/index-agent.d.ts +11 -0
  645. package/dist/index-agent.js +83 -0
  646. package/dist/index-agent.js.map +1 -0
  647. package/dist/index-auth.d.ts +22 -0
  648. package/dist/index-auth.js +114 -0
  649. package/dist/index-auth.js.map +1 -0
  650. package/dist/index-handlers.d.ts +25 -0
  651. package/dist/index-handlers.js +164 -0
  652. package/dist/index-handlers.js.map +1 -0
  653. package/dist/index-tools.d.ts +22 -0
  654. package/dist/index-tools.js +115 -0
  655. package/dist/index-tools.js.map +1 -0
  656. package/dist/index.d.ts +2 -2
  657. package/dist/index.js +509 -396
  658. package/dist/index.js.map +1 -0
  659. package/dist/local-agent/__tests__/connection-disconnect.test.js +201 -0
  660. package/dist/local-agent/__tests__/connection-lifecycle.test.js +289 -0
  661. package/dist/local-agent/__tests__/connection-msghandling.test.js +311 -0
  662. package/dist/local-agent/__tests__/connection-reconnect.test.js +230 -0
  663. package/dist/local-agent/__tests__/connection-toolexec.test.js +253 -0
  664. package/dist/local-agent/__tests__/discovery.test.js +328 -0
  665. package/dist/local-agent/__tests__/executor-background.test.js +219 -0
  666. package/dist/local-agent/__tests__/executor-exec.test.js +221 -0
  667. package/dist/local-agent/__tests__/executor-jobs-sessions.test.js +220 -0
  668. package/dist/local-agent/__tests__/executor-system-info.test.js +133 -0
  669. package/dist/local-agent/__tests__/executor-systeminfo.test.js +109 -0
  670. package/dist/local-agent/__tests__/executor.test.js +235 -0
  671. package/dist/local-agent/__tests__/index.test.js +139 -0
  672. package/dist/local-agent/connection-handlers.d.ts +8 -0
  673. package/dist/local-agent/connection-handlers.js +112 -0
  674. package/dist/local-agent/connection-handlers.js.map +1 -0
  675. package/dist/local-agent/connection-tools.d.ts +8 -0
  676. package/dist/local-agent/connection-tools.js +111 -0
  677. package/dist/local-agent/connection-tools.js.map +1 -0
  678. package/dist/local-agent/connection.d.ts +2 -2
  679. package/dist/local-agent/connection.js +352 -293
  680. package/dist/local-agent/connection.js.map +1 -0
  681. package/dist/local-agent/discovery.js +259 -122
  682. package/dist/local-agent/discovery.js.map +1 -0
  683. package/dist/local-agent/executor-jobs.d.ts +12 -0
  684. package/dist/local-agent/executor-jobs.js +143 -0
  685. package/dist/local-agent/executor-jobs.js.map +1 -0
  686. package/dist/local-agent/executor.d.ts +3 -0
  687. package/dist/local-agent/executor.js +218 -195
  688. package/dist/local-agent/executor.js.map +1 -0
  689. package/dist/local-agent/index.d.ts +2 -2
  690. package/dist/local-agent/index.js +156 -156
  691. package/dist/local-agent/index.js.map +1 -0
  692. package/dist/node/__tests__/cli-channels.test.js +293 -0
  693. package/dist/node/__tests__/cli-config-edge.test.js +154 -0
  694. package/dist/node/__tests__/cli-config.test.js +215 -0
  695. package/dist/node/__tests__/config.test.js +292 -0
  696. package/dist/node/__tests__/runtime-heartbeat.test.js +153 -0
  697. package/dist/node/__tests__/runtime-lifecycle-init.test.js +263 -0
  698. package/dist/node/__tests__/runtime-lifecycle-stats.test.js +180 -0
  699. package/dist/node/__tests__/runtime-lifecycle.test.js +305 -0
  700. package/dist/node/__tests__/runtime-relay.test.js +341 -0
  701. package/dist/node/adapters/__tests__/base.test.js +286 -0
  702. package/dist/node/adapters/__tests__/discord.test.js +284 -0
  703. package/dist/node/adapters/__tests__/email-send.test.js +295 -0
  704. package/dist/node/adapters/__tests__/email.inbound-send.test.js +217 -0
  705. package/dist/node/adapters/__tests__/email.lifecycle.test.js +211 -0
  706. package/dist/node/adapters/__tests__/email.test.js +290 -0
  707. package/dist/node/adapters/__tests__/email.webhook-send.test.js +251 -0
  708. package/dist/node/adapters/__tests__/imessage-filter.test.js +183 -0
  709. package/dist/node/adapters/__tests__/imessage-lifecycle.test.js +215 -0
  710. package/dist/node/adapters/__tests__/imessage-send-restart.test.js +227 -0
  711. package/dist/node/adapters/__tests__/slack.part2.test.js +135 -0
  712. package/dist/node/adapters/__tests__/slack.test.js +241 -0
  713. package/dist/node/adapters/__tests__/sms-extras.test.js +108 -0
  714. package/dist/node/adapters/__tests__/sms-lifecycle.test.js +203 -0
  715. package/dist/node/adapters/__tests__/sms-messaging.test.js +266 -0
  716. package/dist/node/adapters/__tests__/sms.part2.test.js +174 -0
  717. package/dist/node/adapters/__tests__/sms.test.js +253 -0
  718. package/dist/node/adapters/__tests__/telegram-polling.test.js +256 -0
  719. package/dist/node/adapters/__tests__/telegram-send.test.js +166 -0
  720. package/dist/node/adapters/__tests__/webchat-inbound.test.js +188 -0
  721. package/dist/node/adapters/__tests__/webchat-outbound.test.js +178 -0
  722. package/dist/node/adapters/__tests__/whatsapp-inbound.test.js +200 -0
  723. package/dist/node/adapters/__tests__/whatsapp-send.test.js +212 -0
  724. package/dist/node/adapters/__tests__/whatsapp.test.js +280 -0
  725. package/dist/node/adapters/base.js +18 -8
  726. package/dist/node/adapters/base.js.map +1 -0
  727. package/dist/node/adapters/discord-gateway.d.ts +42 -0
  728. package/dist/node/adapters/discord-gateway.js +169 -0
  729. package/dist/node/adapters/discord-gateway.js.map +1 -0
  730. package/dist/node/adapters/discord.js +286 -275
  731. package/dist/node/adapters/discord.js.map +1 -0
  732. package/dist/node/adapters/email.js +189 -202
  733. package/dist/node/adapters/email.js.map +1 -0
  734. package/dist/node/adapters/imessage.d.ts +11 -0
  735. package/dist/node/adapters/imessage.js +165 -145
  736. package/dist/node/adapters/imessage.js.map +1 -0
  737. package/dist/node/adapters/slack.js +237 -236
  738. package/dist/node/adapters/slack.js.map +1 -0
  739. package/dist/node/adapters/sms.js +149 -151
  740. package/dist/node/adapters/sms.js.map +1 -0
  741. package/dist/node/adapters/telegram.js +88 -92
  742. package/dist/node/adapters/telegram.js.map +1 -0
  743. package/dist/node/adapters/webchat.js +160 -136
  744. package/dist/node/adapters/webchat.js.map +1 -0
  745. package/dist/node/adapters/whatsapp.js +212 -215
  746. package/dist/node/adapters/whatsapp.js.map +1 -0
  747. package/dist/node/cli-channels.d.ts +6 -0
  748. package/dist/node/cli-channels.js +229 -0
  749. package/dist/node/cli-channels.js.map +1 -0
  750. package/dist/node/cli-node.d.ts +9 -0
  751. package/dist/node/cli-node.js +186 -0
  752. package/dist/node/cli-node.js.map +1 -0
  753. package/dist/node/cli-portal.d.ts +11 -0
  754. package/dist/node/cli-portal.js +503 -0
  755. package/dist/node/cli-portal.js.map +1 -0
  756. package/dist/node/cli.js +884 -653
  757. package/dist/node/cli.js.map +1 -0
  758. package/dist/node/config.js +20 -18
  759. package/dist/node/config.js.map +1 -0
  760. package/dist/node/gateway-client.js +191 -181
  761. package/dist/node/gateway-client.js.map +1 -0
  762. package/dist/node/portal/clipboard.js +161 -130
  763. package/dist/node/portal/clipboard.js.map +1 -0
  764. package/dist/node/portal/discovery.js +51 -45
  765. package/dist/node/portal/discovery.js.map +1 -0
  766. package/dist/node/portal/forward.js +64 -58
  767. package/dist/node/portal/forward.js.map +1 -0
  768. package/dist/node/portal/index.js +246 -221
  769. package/dist/node/portal/index.js.map +1 -0
  770. package/dist/node/portal/multiplexer.js +192 -182
  771. package/dist/node/portal/multiplexer.js.map +1 -0
  772. package/dist/node/portal/permissions.js +102 -70
  773. package/dist/node/portal/permissions.js.map +1 -0
  774. package/dist/node/portal/portal-target.d.ts +16 -0
  775. package/dist/node/portal/portal-target.js +102 -0
  776. package/dist/node/portal/portal-target.js.map +1 -0
  777. package/dist/node/portal/protocol-frames.d.ts +33 -0
  778. package/dist/node/portal/protocol-frames.js +170 -0
  779. package/dist/node/portal/protocol-frames.js.map +1 -0
  780. package/dist/node/portal/protocol.js +153 -116
  781. package/dist/node/portal/protocol.js.map +1 -0
  782. package/dist/node/portal/screen.js +80 -69
  783. package/dist/node/portal/screen.js.map +1 -0
  784. package/dist/node/portal/session.js +124 -117
  785. package/dist/node/portal/session.js.map +1 -0
  786. package/dist/node/portal/shell.js +140 -113
  787. package/dist/node/portal/shell.js.map +1 -0
  788. package/dist/node/portal/stream.js +77 -75
  789. package/dist/node/portal/stream.js.map +1 -0
  790. package/dist/node/portal/transfer.js +190 -167
  791. package/dist/node/portal/transfer.js.map +1 -0
  792. package/dist/node/portal/ui.js +124 -99
  793. package/dist/node/portal/ui.js.map +1 -0
  794. package/dist/node/remote-desktop/compile-helper.js +50 -45
  795. package/dist/node/remote-desktop/compile-helper.js.map +1 -0
  796. package/dist/node/remote-desktop/index.js +215 -187
  797. package/dist/node/remote-desktop/index.js.map +1 -0
  798. package/dist/node/remote-desktop/protocol.js +45 -29
  799. package/dist/node/remote-desktop/protocol.js.map +1 -0
  800. package/dist/node/runtime-network.d.ts +25 -0
  801. package/dist/node/runtime-network.js +226 -0
  802. package/dist/node/runtime-network.js.map +1 -0
  803. package/dist/node/runtime-utils.d.ts +27 -0
  804. package/dist/node/runtime-utils.js +99 -0
  805. package/dist/node/runtime-utils.js.map +1 -0
  806. package/dist/node/runtime.d.ts +1 -0
  807. package/dist/node/runtime.js +562 -409
  808. package/dist/node/runtime.js.map +1 -0
  809. package/dist/node/task-runner.d.ts +33 -0
  810. package/dist/node/task-runner.js +276 -0
  811. package/dist/node/task-runner.js.map +1 -0
  812. package/dist/server/__tests__/gateway-fast-fail.test.js +160 -0
  813. package/dist/server/__tests__/local-agent-gateway.test.js +186 -0
  814. package/dist/server/__tests__/proxy-handlers-delegation.test.js +240 -0
  815. package/dist/server/__tests__/proxy-handlers-validation.test.js +211 -0
  816. package/dist/server/__tests__/proxy-handlers.part2.test.js +240 -0
  817. package/dist/server/__tests__/proxy-handlers.test.js +213 -0
  818. package/dist/server/__tests__/strip-base64-e2e.test.js +303 -0
  819. package/dist/server/__tests__/strip-base64.test.js +256 -0
  820. package/dist/server/__tests__/tool-router-agent-tools.test.js +324 -0
  821. package/dist/server/__tests__/tool-router-execute-core.test.js +357 -0
  822. package/dist/server/__tests__/tool-router-execute-permissions.test.js +332 -0
  823. package/dist/server/__tests__/tool-router-execute.test.js +348 -0
  824. package/dist/server/__tests__/tool-router-load.test.js +432 -0
  825. package/dist/server/__tests__/tool-router-permissions.test.js +359 -0
  826. package/dist/server/__tests__/tool-router-registry-cache.test.js +383 -0
  827. package/dist/server/__tests__/tool-router-registry-handlers.test.js +272 -0
  828. package/dist/server/__tests__/tool-router-registry.test.js +331 -0
  829. package/dist/server/__tests__/validation-inventory.test.js +250 -0
  830. package/dist/server/__tests__/validation-misc.test.js +243 -0
  831. package/dist/server/__tests__/validation-supply-chain.test.js +188 -0
  832. package/dist/server/__tests__/worker.test.js +265 -0
  833. package/dist/server/handlers/__test-utils__/test-db.d.ts +2 -0
  834. package/dist/server/handlers/__test-utils__/test-db.js +52 -89
  835. package/dist/server/handlers/__test-utils__/test-db.js.map +1 -0
  836. package/dist/server/handlers/__tests__/conversation-lock.test.js +117 -0
  837. package/dist/server/handlers/__tests__/e2e/auth-cross-platform-login.e2e.test.js +268 -0
  838. package/dist/server/handlers/__tests__/e2e/auth-cross-platform-tokens.e2e.test.js +264 -0
  839. package/dist/server/handlers/__tests__/e2e/email-pipeline-send.e2e.test.js +214 -0
  840. package/dist/server/handlers/__tests__/e2e/email-pipeline-threads.e2e.test.js +168 -0
  841. package/dist/server/handlers/__tests__/e2e/error-logging-pipeline-dedup.e2e.test.js +229 -0
  842. package/dist/server/handlers/__tests__/e2e/error-logging-pipeline.e2e.test.js +239 -0
  843. package/dist/server/handlers/__tests__/e2e/error-logging-rate-limit.e2e.test.js +150 -0
  844. package/dist/server/handlers/__tests__/e2e/inventory-sync-guards.e2e.test.js +177 -0
  845. package/dist/server/handlers/__tests__/e2e/inventory-sync.e2e.test.js +228 -0
  846. package/dist/server/handlers/__tests__/e2e/inventory-sync.part2.e2e.test.js +188 -0
  847. package/dist/server/handlers/__tests__/e2e/order-lifecycle-fulfillment.e2e.test.js +295 -0
  848. package/dist/server/handlers/__tests__/e2e/order-lifecycle.e2e.test.js +277 -0
  849. package/dist/server/handlers/__tests__/e2e/order-lifecycle.fulfillment.e2e.test.js +307 -0
  850. package/dist/server/handlers/__tests__/e2e/order-lifecycle.setup.e2e.test.js +177 -0
  851. package/dist/server/handlers/__tests__/e2e/storefront-checkout-cart.e2e.test.js +255 -0
  852. package/dist/server/handlers/__tests__/e2e/storefront-checkout-webhook.e2e.test.js +231 -0
  853. package/dist/server/handlers/__tests__/e2e/workflow-execution-failures.e2e.test.js +235 -0
  854. package/dist/server/handlers/__tests__/e2e/workflow-execution.e2e.test.js +294 -0
  855. package/dist/server/handlers/__tests__/e2e/workflow-security.e2e.test.js +311 -0
  856. package/dist/server/handlers/__tests__/e2e/workflow-security.part2.e2e.test.js +267 -0
  857. package/dist/server/handlers/__tests__/workflow-cache.test.js +237 -0
  858. package/dist/server/handlers/analytics-errors-edge.test.js +173 -0
  859. package/dist/server/handlers/analytics.js +553 -260
  860. package/dist/server/handlers/analytics.js.map +1 -0
  861. package/dist/server/handlers/analytics.test.js +280 -0
  862. package/dist/server/handlers/api-docs-examples-ext.d.ts +9 -0
  863. package/dist/server/handlers/api-docs-examples-ext.js +278 -0
  864. package/dist/server/handlers/api-docs-examples-ext.js.map +1 -0
  865. package/dist/server/handlers/api-docs-examples.d.ts +8 -0
  866. package/dist/server/handlers/api-docs-examples.js +221 -0
  867. package/dist/server/handlers/api-docs-examples.js.map +1 -0
  868. package/dist/server/handlers/api-docs-sections-ext.d.ts +2 -0
  869. package/dist/server/handlers/api-docs-sections-ext.js +497 -0
  870. package/dist/server/handlers/api-docs-sections-ext.js.map +1 -0
  871. package/dist/server/handlers/api-docs-sections.d.ts +21 -0
  872. package/dist/server/handlers/api-docs-sections.js +293 -0
  873. package/dist/server/handlers/api-docs-sections.js.map +1 -0
  874. package/dist/server/handlers/api-docs.d.ts +2 -0
  875. package/dist/server/handlers/api-docs.js +1205 -893
  876. package/dist/server/handlers/api-docs.js.map +1 -0
  877. package/dist/server/handlers/api-keys.js +291 -242
  878. package/dist/server/handlers/api-keys.js.map +1 -0
  879. package/dist/server/handlers/api-keys.part2.test.js +157 -0
  880. package/dist/server/handlers/api-keys.test.js +161 -0
  881. package/dist/server/handlers/billing-core.d.ts +28 -0
  882. package/dist/server/handlers/billing-core.js +126 -0
  883. package/dist/server/handlers/billing-core.js.map +1 -0
  884. package/dist/server/handlers/billing-routes.d.ts +9 -0
  885. package/dist/server/handlers/billing-routes.js +243 -0
  886. package/dist/server/handlers/billing-routes.js.map +1 -0
  887. package/dist/server/handlers/billing-routes.test.js +123 -0
  888. package/dist/server/handlers/billing.js +330 -239
  889. package/dist/server/handlers/billing.js.map +1 -0
  890. package/dist/server/handlers/billing.test.js +215 -0
  891. package/dist/server/handlers/browser-actions-errors.test.js +94 -0
  892. package/dist/server/handlers/browser-actions.d.ts +35 -0
  893. package/dist/server/handlers/browser-actions.js +171 -0
  894. package/dist/server/handlers/browser-actions.js.map +1 -0
  895. package/dist/server/handlers/browser-actions.part2.test.js +190 -0
  896. package/dist/server/handlers/browser-actions.test.js +190 -0
  897. package/dist/server/handlers/browser-captcha.d.ts +6 -0
  898. package/dist/server/handlers/browser-captcha.js +172 -0
  899. package/dist/server/handlers/browser-captcha.js.map +1 -0
  900. package/dist/server/handlers/browser-lifecycle.d.ts +9 -0
  901. package/dist/server/handlers/browser-lifecycle.js +142 -0
  902. package/dist/server/handlers/browser-lifecycle.js.map +1 -0
  903. package/dist/server/handlers/browser-validation.test.js +257 -0
  904. package/dist/server/handlers/browser.js +468 -395
  905. package/dist/server/handlers/browser.js.map +1 -0
  906. package/dist/server/handlers/catalog-advanced.d.ts +9 -0
  907. package/dist/server/handlers/catalog-advanced.js +352 -0
  908. package/dist/server/handlers/catalog-advanced.js.map +1 -0
  909. package/dist/server/handlers/catalog-categories.d.ts +5 -0
  910. package/dist/server/handlers/catalog-categories.js +181 -0
  911. package/dist/server/handlers/catalog-categories.js.map +1 -0
  912. package/dist/server/handlers/catalog-products.d.ts +5 -0
  913. package/dist/server/handlers/catalog-products.js +404 -0
  914. package/dist/server/handlers/catalog-products.js.map +1 -0
  915. package/dist/server/handlers/catalog-schemas.d.ts +5 -0
  916. package/dist/server/handlers/catalog-schemas.js +426 -0
  917. package/dist/server/handlers/catalog-schemas.js.map +1 -0
  918. package/dist/server/handlers/catalog.js +1377 -978
  919. package/dist/server/handlers/catalog.js.map +1 -0
  920. package/dist/server/handlers/catalog.test.js +297 -0
  921. package/dist/server/handlers/clickhouse.js +157 -109
  922. package/dist/server/handlers/clickhouse.js.map +1 -0
  923. package/dist/server/handlers/comms-documents-advanced.d.ts +8 -0
  924. package/dist/server/handlers/comms-documents-advanced.js +159 -0
  925. package/dist/server/handlers/comms-documents-advanced.js.map +1 -0
  926. package/dist/server/handlers/comms-documents.d.ts +10 -0
  927. package/dist/server/handlers/comms-documents.js +445 -0
  928. package/dist/server/handlers/comms-documents.js.map +1 -0
  929. package/dist/server/handlers/comms-email.d.ts +10 -0
  930. package/dist/server/handlers/comms-email.js +492 -0
  931. package/dist/server/handlers/comms-email.js.map +1 -0
  932. package/dist/server/handlers/comms-pdf-generation.d.ts +8 -0
  933. package/dist/server/handlers/comms-pdf-generation.js +327 -0
  934. package/dist/server/handlers/comms-pdf-generation.js.map +1 -0
  935. package/dist/server/handlers/comms-pdf-helpers.d.ts +9 -0
  936. package/dist/server/handlers/comms-pdf-helpers.js +126 -0
  937. package/dist/server/handlers/comms-pdf-helpers.js.map +1 -0
  938. package/dist/server/handlers/comms-shared.d.ts +3 -0
  939. package/dist/server/handlers/comms-shared.js +28 -0
  940. package/dist/server/handlers/comms-shared.js.map +1 -0
  941. package/dist/server/handlers/comms.js +1439 -984
  942. package/dist/server/handlers/comms.js.map +1 -0
  943. package/dist/server/handlers/comms.test.js +289 -0
  944. package/dist/server/handlers/creations-actions.d.ts +21 -0
  945. package/dist/server/handlers/creations-actions.js +250 -0
  946. package/dist/server/handlers/creations-actions.js.map +1 -0
  947. package/dist/server/handlers/creations-advanced-collections.test.js +214 -0
  948. package/dist/server/handlers/creations-advanced-generate.test.js +142 -0
  949. package/dist/server/handlers/creations-advanced.test.js +171 -0
  950. package/dist/server/handlers/creations-collections-preview.test.js +214 -0
  951. package/dist/server/handlers/creations-crud.d.ts +35 -0
  952. package/dist/server/handlers/creations-crud.js +248 -0
  953. package/dist/server/handlers/creations-crud.js.map +1 -0
  954. package/dist/server/handlers/creations-crud.test.js +260 -0
  955. package/dist/server/handlers/creations-generate.d.ts +21 -0
  956. package/dist/server/handlers/creations-generate.js +256 -0
  957. package/dist/server/handlers/creations-generate.js.map +1 -0
  958. package/dist/server/handlers/creations-mutations.test.js +197 -0
  959. package/dist/server/handlers/creations.js +461 -394
  960. package/dist/server/handlers/creations.js.map +1 -0
  961. package/dist/server/handlers/crm-customers-read.d.ts +58 -0
  962. package/dist/server/handlers/crm-customers-read.js +208 -0
  963. package/dist/server/handlers/crm-customers-read.js.map +1 -0
  964. package/dist/server/handlers/crm-customers-write.d.ts +54 -0
  965. package/dist/server/handlers/crm-customers-write.js +414 -0
  966. package/dist/server/handlers/crm-customers-write.js.map +1 -0
  967. package/dist/server/handlers/crm-utils.d.ts +6 -0
  968. package/dist/server/handlers/crm-utils.js +19 -0
  969. package/dist/server/handlers/crm-utils.js.map +1 -0
  970. package/dist/server/handlers/crm.js +1082 -791
  971. package/dist/server/handlers/crm.js.map +1 -0
  972. package/dist/server/handlers/crm.test.js +179 -0
  973. package/dist/server/handlers/discovery-advertise.d.ts +18 -0
  974. package/dist/server/handlers/discovery-advertise.js +101 -0
  975. package/dist/server/handlers/discovery-advertise.js.map +1 -0
  976. package/dist/server/handlers/discovery-advertise.test.js +185 -0
  977. package/dist/server/handlers/discovery-scan.d.ts +19 -0
  978. package/dist/server/handlers/discovery-scan.js +107 -0
  979. package/dist/server/handlers/discovery-scan.js.map +1 -0
  980. package/dist/server/handlers/discovery-scan.test.js +233 -0
  981. package/dist/server/handlers/discovery.js +251 -232
  982. package/dist/server/handlers/discovery.js.map +1 -0
  983. package/dist/server/handlers/embeddings-embed-search.test.js +196 -0
  984. package/dist/server/handlers/embeddings-index-delete-stats.test.js +140 -0
  985. package/dist/server/handlers/embeddings-search.test.js +221 -0
  986. package/dist/server/handlers/embeddings.js +241 -164
  987. package/dist/server/handlers/embeddings.js.map +1 -0
  988. package/dist/server/handlers/embeddings.test.js +137 -0
  989. package/dist/server/handlers/enrichment-breach.d.ts +8 -0
  990. package/dist/server/handlers/enrichment-breach.js +266 -0
  991. package/dist/server/handlers/enrichment-breach.js.map +1 -0
  992. package/dist/server/handlers/enrichment-data.d.ts +13 -0
  993. package/dist/server/handlers/enrichment-data.js +145 -0
  994. package/dist/server/handlers/enrichment-data.js.map +1 -0
  995. package/dist/server/handlers/enrichment-enrich.d.ts +6 -0
  996. package/dist/server/handlers/enrichment-enrich.js +235 -0
  997. package/dist/server/handlers/enrichment-enrich.js.map +1 -0
  998. package/dist/server/handlers/enrichment-helpers.d.ts +10 -0
  999. package/dist/server/handlers/enrichment-helpers.js +17 -0
  1000. package/dist/server/handlers/enrichment-helpers.js.map +1 -0
  1001. package/dist/server/handlers/enrichment-mutations.test.js +240 -0
  1002. package/dist/server/handlers/enrichment-queries.test.js +181 -0
  1003. package/dist/server/handlers/enrichment-validation.test.js +177 -0
  1004. package/dist/server/handlers/enrichment-writes.d.ts +16 -0
  1005. package/dist/server/handlers/enrichment-writes.js +226 -0
  1006. package/dist/server/handlers/enrichment-writes.js.map +1 -0
  1007. package/dist/server/handlers/enrichment.js +887 -718
  1008. package/dist/server/handlers/enrichment.js.map +1 -0
  1009. package/dist/server/handlers/image-gen-actions.d.ts +18 -0
  1010. package/dist/server/handlers/image-gen-actions.js +183 -0
  1011. package/dist/server/handlers/image-gen-actions.js.map +1 -0
  1012. package/dist/server/handlers/image-gen-providers.d.ts +29 -0
  1013. package/dist/server/handlers/image-gen-providers.js +161 -0
  1014. package/dist/server/handlers/image-gen-providers.js.map +1 -0
  1015. package/dist/server/handlers/image-gen.js +467 -376
  1016. package/dist/server/handlers/image-gen.js.map +1 -0
  1017. package/dist/server/handlers/image-gen.test.js +205 -0
  1018. package/dist/server/handlers/inventory-audit.d.ts +10 -0
  1019. package/dist/server/handlers/inventory-audit.js +90 -0
  1020. package/dist/server/handlers/inventory-audit.js.map +1 -0
  1021. package/dist/server/handlers/inventory-helpers.d.ts +8 -0
  1022. package/dist/server/handlers/inventory-helpers.js +19 -0
  1023. package/dist/server/handlers/inventory-helpers.js.map +1 -0
  1024. package/dist/server/handlers/inventory-query.d.ts +67 -0
  1025. package/dist/server/handlers/inventory-query.js +299 -0
  1026. package/dist/server/handlers/inventory-query.js.map +1 -0
  1027. package/dist/server/handlers/inventory.js +797 -424
  1028. package/dist/server/handlers/inventory.js.map +1 -0
  1029. package/dist/server/handlers/inventory.test.js +380 -0
  1030. package/dist/server/handlers/kali-background.test.js +222 -0
  1031. package/dist/server/handlers/kali-errors.test.js +92 -0
  1032. package/dist/server/handlers/kali-validation.test.js +234 -0
  1033. package/dist/server/handlers/kali.js +272 -230
  1034. package/dist/server/handlers/kali.js.map +1 -0
  1035. package/dist/server/handlers/llm-providers-actions.test.js +220 -0
  1036. package/dist/server/handlers/llm-providers-anthropic.test.js +239 -0
  1037. package/dist/server/handlers/llm-providers-clients.d.ts +6 -0
  1038. package/dist/server/handlers/llm-providers-clients.js +296 -0
  1039. package/dist/server/handlers/llm-providers-clients.js.map +1 -0
  1040. package/dist/server/handlers/llm-providers-credentials.d.ts +3 -0
  1041. package/dist/server/handlers/llm-providers-credentials.js +109 -0
  1042. package/dist/server/handlers/llm-providers-credentials.js.map +1 -0
  1043. package/dist/server/handlers/llm-providers-failover.test.js +232 -0
  1044. package/dist/server/handlers/llm-providers-models.d.ts +67 -0
  1045. package/dist/server/handlers/llm-providers-models.js +213 -0
  1046. package/dist/server/handlers/llm-providers-models.js.map +1 -0
  1047. package/dist/server/handlers/llm-providers-providers.test.js +300 -0
  1048. package/dist/server/handlers/llm-providers-validation.test.js +239 -0
  1049. package/dist/server/handlers/llm-providers.js +803 -580
  1050. package/dist/server/handlers/llm-providers.js.map +1 -0
  1051. package/dist/server/handlers/local-agent-tools.test.js +224 -0
  1052. package/dist/server/handlers/local-agent.js +133 -105
  1053. package/dist/server/handlers/local-agent.js.map +1 -0
  1054. package/dist/server/handlers/local-agent.test.js +198 -0
  1055. package/dist/server/handlers/local-agent.tools-status.test.js +204 -0
  1056. package/dist/server/handlers/local-agent.validation-exec.test.js +182 -0
  1057. package/dist/server/handlers/media-actions.d.ts +14 -0
  1058. package/dist/server/handlers/media-actions.js +398 -0
  1059. package/dist/server/handlers/media-actions.js.map +1 -0
  1060. package/dist/server/handlers/media-crud.d.ts +9 -0
  1061. package/dist/server/handlers/media-crud.js +365 -0
  1062. package/dist/server/handlers/media-crud.js.map +1 -0
  1063. package/dist/server/handlers/media-upload.d.ts +4 -0
  1064. package/dist/server/handlers/media-upload.js +179 -0
  1065. package/dist/server/handlers/media-upload.js.map +1 -0
  1066. package/dist/server/handlers/media-utils.d.ts +14 -0
  1067. package/dist/server/handlers/media-utils.js +33 -0
  1068. package/dist/server/handlers/media-utils.js.map +1 -0
  1069. package/dist/server/handlers/media.js +1179 -857
  1070. package/dist/server/handlers/media.js.map +1 -0
  1071. package/dist/server/handlers/meta-ads-advanced.d.ts +46 -0
  1072. package/dist/server/handlers/meta-ads-advanced.js +222 -0
  1073. package/dist/server/handlers/meta-ads-advanced.js.map +1 -0
  1074. package/dist/server/handlers/meta-ads-audience-rules.test.js +243 -0
  1075. package/dist/server/handlers/meta-ads-audience-targeting.test.js +205 -0
  1076. package/dist/server/handlers/meta-ads-audiences-targeting.test.js +383 -0
  1077. package/dist/server/handlers/meta-ads-audiences.d.ts +48 -0
  1078. package/dist/server/handlers/meta-ads-audiences.js +214 -0
  1079. package/dist/server/handlers/meta-ads-audiences.js.map +1 -0
  1080. package/dist/server/handlers/meta-ads-crud-ads.test.js +136 -0
  1081. package/dist/server/handlers/meta-ads-crud-campaigns.test.js +189 -0
  1082. package/dist/server/handlers/meta-ads-crud-create.test.js +303 -0
  1083. package/dist/server/handlers/meta-ads-crud-list-update.test.js +259 -0
  1084. package/dist/server/handlers/meta-ads-crud-read.d.ts +78 -0
  1085. package/dist/server/handlers/meta-ads-crud-read.js +204 -0
  1086. package/dist/server/handlers/meta-ads-crud-read.js.map +1 -0
  1087. package/dist/server/handlers/meta-ads-crud-write.d.ts +105 -0
  1088. package/dist/server/handlers/meta-ads-crud-write.js +390 -0
  1089. package/dist/server/handlers/meta-ads-crud-write.js.map +1 -0
  1090. package/dist/server/handlers/meta-ads-crud.d.ts +9 -0
  1091. package/dist/server/handlers/meta-ads-crud.js +12 -0
  1092. package/dist/server/handlers/meta-ads-crud.js.map +1 -0
  1093. package/dist/server/handlers/meta-ads-delete-publish-sync.test.js +282 -0
  1094. package/dist/server/handlers/meta-ads-graph-api.d.ts +25 -0
  1095. package/dist/server/handlers/meta-ads-graph-api.js +155 -0
  1096. package/dist/server/handlers/meta-ads-graph-api.js.map +1 -0
  1097. package/dist/server/handlers/meta-ads-insights.test.js +80 -0
  1098. package/dist/server/handlers/meta-ads-list-get.test.js +237 -0
  1099. package/dist/server/handlers/meta-ads-media.d.ts +16 -0
  1100. package/dist/server/handlers/meta-ads-media.js +205 -0
  1101. package/dist/server/handlers/meta-ads-media.js.map +1 -0
  1102. package/dist/server/handlers/meta-ads-pixels-rules.d.ts +127 -0
  1103. package/dist/server/handlers/meta-ads-pixels-rules.js +463 -0
  1104. package/dist/server/handlers/meta-ads-pixels-rules.js.map +1 -0
  1105. package/dist/server/handlers/meta-ads-publish-ad.d.ts +11 -0
  1106. package/dist/server/handlers/meta-ads-publish-ad.js +229 -0
  1107. package/dist/server/handlers/meta-ads-publish-ad.js.map +1 -0
  1108. package/dist/server/handlers/meta-ads-publish-delete.test.js +254 -0
  1109. package/dist/server/handlers/meta-ads-publish-helpers.js +117 -0
  1110. package/dist/server/handlers/meta-ads-publish-helpers.js.map +1 -0
  1111. package/dist/server/handlers/meta-ads-publish-sync.test.js +205 -0
  1112. package/dist/server/handlers/meta-ads-publish.d.ts +14 -0
  1113. package/dist/server/handlers/meta-ads-publish.js +194 -0
  1114. package/dist/server/handlers/meta-ads-publish.js.map +1 -0
  1115. package/dist/server/handlers/meta-ads-publish.test.js +254 -0
  1116. package/dist/server/handlers/meta-ads-sync-insights.test.js +184 -0
  1117. package/dist/server/handlers/meta-ads-targeting.d.ts +27 -0
  1118. package/dist/server/handlers/meta-ads-targeting.js +323 -0
  1119. package/dist/server/handlers/meta-ads-targeting.js.map +1 -0
  1120. package/dist/server/handlers/meta-ads-types.d.ts +49 -0
  1121. package/dist/server/handlers/meta-ads-types.js +59 -0
  1122. package/dist/server/handlers/meta-ads-types.js.map +1 -0
  1123. package/dist/server/handlers/meta-ads-update.test.js +117 -0
  1124. package/dist/server/handlers/meta-ads.d.ts +25 -0
  1125. package/dist/server/handlers/meta-ads.js +3049 -2084
  1126. package/dist/server/handlers/meta-ads.js.map +1 -0
  1127. package/dist/server/handlers/nodes-channels.test.js +413 -0
  1128. package/dist/server/handlers/nodes-events.test.js +131 -0
  1129. package/dist/server/handlers/nodes-handlers-channels-messages.d.ts +20 -0
  1130. package/dist/server/handlers/nodes-handlers-channels-messages.js +314 -0
  1131. package/dist/server/handlers/nodes-handlers-channels-messages.js.map +1 -0
  1132. package/dist/server/handlers/nodes-handlers-channels.d.ts +19 -0
  1133. package/dist/server/handlers/nodes-handlers-channels.js +225 -0
  1134. package/dist/server/handlers/nodes-handlers-channels.js.map +1 -0
  1135. package/dist/server/handlers/nodes-handlers-mgmt.d.ts +33 -0
  1136. package/dist/server/handlers/nodes-handlers-mgmt.js +418 -0
  1137. package/dist/server/handlers/nodes-handlers-mgmt.js.map +1 -0
  1138. package/dist/server/handlers/nodes-list-delete.test.js +171 -0
  1139. package/dist/server/handlers/nodes-messages-delivery.test.js +208 -0
  1140. package/dist/server/handlers/nodes-messages.test.js +211 -0
  1141. package/dist/server/handlers/nodes-register.test.js +277 -0
  1142. package/dist/server/handlers/nodes-routes-channels.d.ts +9 -0
  1143. package/dist/server/handlers/nodes-routes-channels.js +217 -0
  1144. package/dist/server/handlers/nodes-routes-channels.js.map +1 -0
  1145. package/dist/server/handlers/nodes-routes-crud.d.ts +9 -0
  1146. package/dist/server/handlers/nodes-routes-crud.js +290 -0
  1147. package/dist/server/handlers/nodes-routes-crud.js.map +1 -0
  1148. package/dist/server/handlers/nodes-routes-delivery.d.ts +9 -0
  1149. package/dist/server/handlers/nodes-routes-delivery.js +226 -0
  1150. package/dist/server/handlers/nodes-routes-delivery.js.map +1 -0
  1151. package/dist/server/handlers/nodes-routes-messages.d.ts +9 -0
  1152. package/dist/server/handlers/nodes-routes-messages.js +218 -0
  1153. package/dist/server/handlers/nodes-routes-messages.js.map +1 -0
  1154. package/dist/server/handlers/nodes-routes-register.d.ts +9 -0
  1155. package/dist/server/handlers/nodes-routes-register.js +239 -0
  1156. package/dist/server/handlers/nodes-routes-register.js.map +1 -0
  1157. package/dist/server/handlers/nodes-types.d.ts +82 -0
  1158. package/dist/server/handlers/nodes-types.js +220 -0
  1159. package/dist/server/handlers/nodes-types.js.map +1 -0
  1160. package/dist/server/handlers/nodes-utils.d.ts +70 -0
  1161. package/dist/server/handlers/nodes-utils.js +214 -0
  1162. package/dist/server/handlers/nodes-utils.js.map +1 -0
  1163. package/dist/server/handlers/nodes.js +1321 -913
  1164. package/dist/server/handlers/nodes.js.map +1 -0
  1165. package/dist/server/handlers/nodes.test.js +353 -0
  1166. package/dist/server/handlers/operations.js +183 -157
  1167. package/dist/server/handlers/operations.js.map +1 -0
  1168. package/dist/server/handlers/operations.test.js +136 -0
  1169. package/dist/server/handlers/platform-telemetry.d.ts +10 -0
  1170. package/dist/server/handlers/platform-telemetry.js +372 -0
  1171. package/dist/server/handlers/platform-telemetry.js.map +1 -0
  1172. package/dist/server/handlers/platform-telemetry.test.js +200 -0
  1173. package/dist/server/handlers/platform-websearch.test.js +160 -0
  1174. package/dist/server/handlers/platform.js +346 -210
  1175. package/dist/server/handlers/platform.js.map +1 -0
  1176. package/dist/server/handlers/remove-bg.js +118 -86
  1177. package/dist/server/handlers/remove-bg.js.map +1 -0
  1178. package/dist/server/handlers/sessions-handlers.d.ts +23 -0
  1179. package/dist/server/handlers/sessions-handlers.js +374 -0
  1180. package/dist/server/handlers/sessions-handlers.js.map +1 -0
  1181. package/dist/server/handlers/storefront-cart.d.ts +31 -0
  1182. package/dist/server/handlers/storefront-cart.js +381 -0
  1183. package/dist/server/handlers/storefront-cart.js.map +1 -0
  1184. package/dist/server/handlers/storefront.js +586 -446
  1185. package/dist/server/handlers/storefront.js.map +1 -0
  1186. package/dist/server/handlers/storefront.test.js +329 -0
  1187. package/dist/server/handlers/supply-chain-transfers.d.ts +10 -0
  1188. package/dist/server/handlers/supply-chain-transfers.js +214 -0
  1189. package/dist/server/handlers/supply-chain-transfers.js.map +1 -0
  1190. package/dist/server/handlers/supply-chain-utils.d.ts +2 -0
  1191. package/dist/server/handlers/supply-chain-utils.js +21 -0
  1192. package/dist/server/handlers/supply-chain-utils.js.map +1 -0
  1193. package/dist/server/handlers/supply-chain.js +546 -326
  1194. package/dist/server/handlers/supply-chain.js.map +1 -0
  1195. package/dist/server/handlers/supply-chain.test.js +347 -0
  1196. package/dist/server/handlers/transcription.js +106 -97
  1197. package/dist/server/handlers/transcription.js.map +1 -0
  1198. package/dist/server/handlers/transcription.test.js +118 -0
  1199. package/dist/server/handlers/video-gen-providers.d.ts +30 -0
  1200. package/dist/server/handlers/video-gen-providers.js +205 -0
  1201. package/dist/server/handlers/video-gen-providers.js.map +1 -0
  1202. package/dist/server/handlers/video-gen-sora.d.ts +5 -0
  1203. package/dist/server/handlers/video-gen-sora.js +87 -0
  1204. package/dist/server/handlers/video-gen-sora.js.map +1 -0
  1205. package/dist/server/handlers/video-gen-veo.js +114 -0
  1206. package/dist/server/handlers/video-gen-veo.js.map +1 -0
  1207. package/dist/server/handlers/video-gen.js +593 -424
  1208. package/dist/server/handlers/video-gen.js.map +1 -0
  1209. package/dist/server/handlers/video-gen.test.js +146 -0
  1210. package/dist/server/handlers/voice-handlers-audio.d.ts +9 -0
  1211. package/dist/server/handlers/voice-handlers-audio.js +229 -0
  1212. package/dist/server/handlers/voice-handlers-audio.js.map +1 -0
  1213. package/dist/server/handlers/voice-handlers-music.d.ts +5 -0
  1214. package/dist/server/handlers/voice-handlers-music.js +124 -0
  1215. package/dist/server/handlers/voice-handlers-music.js.map +1 -0
  1216. package/dist/server/handlers/voice-handlers-pvc.d.ts +8 -0
  1217. package/dist/server/handlers/voice-handlers-pvc.js +345 -0
  1218. package/dist/server/handlers/voice-handlers-pvc.js.map +1 -0
  1219. package/dist/server/handlers/voice-handlers-tts.d.ts +5 -0
  1220. package/dist/server/handlers/voice-handlers-tts.js +142 -0
  1221. package/dist/server/handlers/voice-handlers-tts.js.map +1 -0
  1222. package/dist/server/handlers/voice-handlers-voices.d.ts +8 -0
  1223. package/dist/server/handlers/voice-handlers-voices.js +321 -0
  1224. package/dist/server/handlers/voice-handlers-voices.js.map +1 -0
  1225. package/dist/server/handlers/voice-utils.d.ts +32 -0
  1226. package/dist/server/handlers/voice-utils.js +281 -0
  1227. package/dist/server/handlers/voice-utils.js.map +1 -0
  1228. package/dist/server/handlers/voice.js +1458 -1039
  1229. package/dist/server/handlers/voice.js.map +1 -0
  1230. package/dist/server/handlers/voice.test.js +153 -0
  1231. package/dist/server/handlers/workflow-crud-advanced.d.ts +8 -0
  1232. package/dist/server/handlers/workflow-crud-advanced.js +275 -0
  1233. package/dist/server/handlers/workflow-crud-advanced.js.map +1 -0
  1234. package/dist/server/handlers/workflow-crud-core.d.ts +8 -0
  1235. package/dist/server/handlers/workflow-crud-core.js +286 -0
  1236. package/dist/server/handlers/workflow-crud-core.js.map +1 -0
  1237. package/dist/server/handlers/workflow-crud-events.d.ts +8 -0
  1238. package/dist/server/handlers/workflow-crud-events.js +483 -0
  1239. package/dist/server/handlers/workflow-crud-events.js.map +1 -0
  1240. package/dist/server/handlers/workflow-crud-runs-lifecycle.d.ts +8 -0
  1241. package/dist/server/handlers/workflow-crud-runs-lifecycle.js +231 -0
  1242. package/dist/server/handlers/workflow-crud-runs-lifecycle.js.map +1 -0
  1243. package/dist/server/handlers/workflow-crud-runs-versioning.d.ts +8 -0
  1244. package/dist/server/handlers/workflow-crud-runs-versioning.js +319 -0
  1245. package/dist/server/handlers/workflow-crud-runs-versioning.js.map +1 -0
  1246. package/dist/server/handlers/workflow-crud-runs.d.ts +8 -0
  1247. package/dist/server/handlers/workflow-crud-runs.js +18 -0
  1248. package/dist/server/handlers/workflow-crud-runs.js.map +1 -0
  1249. package/dist/server/handlers/workflow-steps-advancement.d.ts +13 -0
  1250. package/dist/server/handlers/workflow-steps-advancement.js +197 -0
  1251. package/dist/server/handlers/workflow-steps-advancement.js.map +1 -0
  1252. package/dist/server/handlers/workflow-steps-circuit-breaker.d.ts +7 -0
  1253. package/dist/server/handlers/workflow-steps-circuit-breaker.js +131 -0
  1254. package/dist/server/handlers/workflow-steps-circuit-breaker.js.map +1 -0
  1255. package/dist/server/handlers/workflow-steps-completion.d.ts +5 -0
  1256. package/dist/server/handlers/workflow-steps-completion.js +254 -0
  1257. package/dist/server/handlers/workflow-steps-completion.js.map +1 -0
  1258. package/dist/server/handlers/workflow-steps-cron.d.ts +4 -0
  1259. package/dist/server/handlers/workflow-steps-cron.js +259 -0
  1260. package/dist/server/handlers/workflow-steps-cron.js.map +1 -0
  1261. package/dist/server/handlers/workflow-steps-engine-execute.d.ts +3 -0
  1262. package/dist/server/handlers/workflow-steps-engine-execute.js +388 -0
  1263. package/dist/server/handlers/workflow-steps-engine-execute.js.map +1 -0
  1264. package/dist/server/handlers/workflow-steps-engine-inline.d.ts +2 -0
  1265. package/dist/server/handlers/workflow-steps-engine-inline.js +91 -0
  1266. package/dist/server/handlers/workflow-steps-engine-inline.js.map +1 -0
  1267. package/dist/server/handlers/workflow-steps-engine-persist.d.ts +5 -0
  1268. package/dist/server/handlers/workflow-steps-engine-persist.js +192 -0
  1269. package/dist/server/handlers/workflow-steps-engine-persist.js.map +1 -0
  1270. package/dist/server/handlers/workflow-steps-engine-process.d.ts +7 -0
  1271. package/dist/server/handlers/workflow-steps-engine-process.js +290 -0
  1272. package/dist/server/handlers/workflow-steps-engine-process.js.map +1 -0
  1273. package/dist/server/handlers/workflow-steps-engine.d.ts +3 -0
  1274. package/dist/server/handlers/workflow-steps-engine.js +10 -0
  1275. package/dist/server/handlers/workflow-steps-engine.js.map +1 -0
  1276. package/dist/server/handlers/workflow-steps-executors-llm.d.ts +7 -0
  1277. package/dist/server/handlers/workflow-steps-executors-llm.js +265 -0
  1278. package/dist/server/handlers/workflow-steps-executors-llm.js.map +1 -0
  1279. package/dist/server/handlers/workflow-steps-executors.d.ts +9 -0
  1280. package/dist/server/handlers/workflow-steps-executors.js +188 -0
  1281. package/dist/server/handlers/workflow-steps-executors.js.map +1 -0
  1282. package/dist/server/handlers/workflow-steps-maintenance.d.ts +4 -0
  1283. package/dist/server/handlers/workflow-steps-maintenance.js +256 -0
  1284. package/dist/server/handlers/workflow-steps-maintenance.js.map +1 -0
  1285. package/dist/server/handlers/workflow-steps-types.d.ts +84 -0
  1286. package/dist/server/handlers/workflow-steps-types.js +179 -0
  1287. package/dist/server/handlers/workflow-steps-types.js.map +1 -0
  1288. package/dist/server/handlers/workflow-steps-webhook.d.ts +5 -0
  1289. package/dist/server/handlers/workflow-steps-webhook.js +179 -0
  1290. package/dist/server/handlers/workflow-steps-webhook.js.map +1 -0
  1291. package/dist/server/handlers/workflow-steps.js +2837 -2116
  1292. package/dist/server/handlers/workflow-steps.js.map +1 -0
  1293. package/dist/server/handlers/workflow-steps.test.js +330 -0
  1294. package/dist/server/handlers/workflows-extras.test.js +65 -0
  1295. package/dist/server/handlers/workflows.js +1630 -933
  1296. package/dist/server/handlers/workflows.js.map +1 -0
  1297. package/dist/server/handlers/workflows.part2.test.js +170 -0
  1298. package/dist/server/handlers/workflows.test.js +281 -0
  1299. package/dist/server/index.js +1702 -2596
  1300. package/dist/server/index.js.map +1 -0
  1301. package/dist/server/lib/__tests__/batch-client-conversion-jsonl.test.js +171 -0
  1302. package/dist/server/lib/__tests__/batch-client-polling.test.js +292 -0
  1303. package/dist/server/lib/__tests__/batch-client-queue.test.js +270 -0
  1304. package/dist/server/lib/__tests__/clickhouse-buffer.test.js +236 -0
  1305. package/dist/server/lib/__tests__/code-worker-edge-cases.test.js +118 -0
  1306. package/dist/server/lib/__tests__/code-worker-pool-execute.test.js +193 -0
  1307. package/dist/server/lib/__tests__/code-worker-pool-execution.test.js +165 -0
  1308. package/dist/server/lib/__tests__/code-worker-pool-init.test.js +131 -0
  1309. package/dist/server/lib/__tests__/code-worker-pool.test.js +194 -0
  1310. package/dist/server/lib/__tests__/code-worker-sandbox-ops.test.js +123 -0
  1311. package/dist/server/lib/__tests__/code-worker-sandbox.test.js +217 -0
  1312. package/dist/server/lib/__tests__/code-worker.test.js +179 -0
  1313. package/dist/server/lib/__tests__/compaction-service-generate.test.js +229 -0
  1314. package/dist/server/lib/__tests__/compaction-service.test.js +319 -0
  1315. package/dist/server/lib/__tests__/otel.test.js +146 -0
  1316. package/dist/server/lib/__tests__/prompt-sanitizer-validation.test.js +165 -0
  1317. package/dist/server/lib/__tests__/prompt-sanitizer.sanitize.test.js +343 -0
  1318. package/dist/server/lib/__tests__/prompt-sanitizer.test.js +328 -0
  1319. package/dist/server/lib/__tests__/prompt-sanitizer.validate-tool.test.js +145 -0
  1320. package/dist/server/lib/__tests__/provider-capabilities.test.js +263 -0
  1321. package/dist/server/lib/__tests__/provider-failover-routing.test.js +145 -0
  1322. package/dist/server/lib/__tests__/provider-failover-state.test.js +131 -0
  1323. package/dist/server/lib/__tests__/rate-limiter-budgets.test.js +216 -0
  1324. package/dist/server/lib/__tests__/rate-limiter.budgets-tools.test.js +113 -0
  1325. package/dist/server/lib/__tests__/rate-limiter.check-request.test.js +141 -0
  1326. package/dist/server/lib/__tests__/rate-limiter.stats-lifecycle.test.js +135 -0
  1327. package/dist/server/lib/__tests__/rate-limiter.test.js +207 -0
  1328. package/dist/server/lib/__tests__/server-agent-loop-abort-conditions.test.js +544 -0
  1329. package/dist/server/lib/__tests__/server-agent-loop-abort.part2.test.js +504 -0
  1330. package/dist/server/lib/__tests__/server-agent-loop-abort.test.js +396 -0
  1331. package/dist/server/lib/__tests__/server-agent-loop-compaction.test.js +397 -0
  1332. package/dist/server/lib/__tests__/server-agent-loop-failover.test.js +356 -0
  1333. package/dist/server/lib/__tests__/server-agent-loop-features-caching.test.js +519 -0
  1334. package/dist/server/lib/__tests__/server-agent-loop-features-edges.test.js +512 -0
  1335. package/dist/server/lib/__tests__/server-subagent-bailout.test.js +194 -0
  1336. package/dist/server/lib/__tests__/server-subagent-basics.test.js +348 -0
  1337. package/dist/server/lib/__tests__/server-subagent-errors-abort.test.js +319 -0
  1338. package/dist/server/lib/__tests__/server-subagent-errors-progress.test.js +253 -0
  1339. package/dist/server/lib/__tests__/server-subagent-errors.part2.test.js +253 -0
  1340. package/dist/server/lib/__tests__/server-subagent-errors.test.js +319 -0
  1341. package/dist/server/lib/__tests__/session-checkpoint-load.test.js +275 -0
  1342. package/dist/server/lib/__tests__/session-checkpoint-save.test.js +159 -0
  1343. package/dist/server/lib/__tests__/ssrf-guard.test.js +93 -0
  1344. package/dist/server/lib/__tests__/supabase-client.test.js +111 -0
  1345. package/dist/server/lib/__tests__/template-resolver.test.js +317 -0
  1346. package/dist/server/lib/__tests__/utils-timeout.test.js +49 -0
  1347. package/dist/server/lib/__tests__/utils.test.js +322 -0
  1348. package/dist/server/lib/agent-loop-executor.d.ts +7 -0
  1349. package/dist/server/lib/agent-loop-executor.js +224 -0
  1350. package/dist/server/lib/agent-loop-executor.js.map +1 -0
  1351. package/dist/server/lib/agent-loop-turn.d.ts +53 -0
  1352. package/dist/server/lib/agent-loop-turn.js +166 -0
  1353. package/dist/server/lib/agent-loop-turn.js.map +1 -0
  1354. package/dist/server/lib/agent-loop-types.d.ts +118 -0
  1355. package/dist/server/lib/agent-loop-types.js +53 -0
  1356. package/dist/server/lib/agent-loop-types.js.map +1 -0
  1357. package/dist/server/lib/batch-client-anthropic.d.ts +10 -0
  1358. package/dist/server/lib/batch-client-anthropic.js +144 -0
  1359. package/dist/server/lib/batch-client-anthropic.js.map +1 -0
  1360. package/dist/server/lib/batch-client-openai.d.ts +10 -0
  1361. package/dist/server/lib/batch-client-openai.js +172 -0
  1362. package/dist/server/lib/batch-client-openai.js.map +1 -0
  1363. package/dist/server/lib/batch-client-types.d.ts +54 -0
  1364. package/dist/server/lib/batch-client-types.js +27 -0
  1365. package/dist/server/lib/batch-client-types.js.map +1 -0
  1366. package/dist/server/lib/batch-client.js +471 -409
  1367. package/dist/server/lib/batch-client.js.map +1 -0
  1368. package/dist/server/lib/clickhouse-buffer.js +118 -104
  1369. package/dist/server/lib/clickhouse-buffer.js.map +1 -0
  1370. package/dist/server/lib/clickhouse-client.js +107 -107
  1371. package/dist/server/lib/clickhouse-client.js.map +1 -0
  1372. package/dist/server/lib/coa-renderer-components.d.ts +15 -0
  1373. package/dist/server/lib/coa-renderer-components.js +361 -0
  1374. package/dist/server/lib/coa-renderer-components.js.map +1 -0
  1375. package/dist/server/lib/coa-renderer-pages.d.ts +15 -0
  1376. package/dist/server/lib/coa-renderer-pages.js +467 -0
  1377. package/dist/server/lib/coa-renderer-pages.js.map +1 -0
  1378. package/dist/server/lib/coa-renderer-styles.d.ts +525 -0
  1379. package/dist/server/lib/coa-renderer-styles.js +540 -0
  1380. package/dist/server/lib/coa-renderer-styles.js.map +1 -0
  1381. package/dist/server/lib/coa-renderer-tokens.d.ts +107 -0
  1382. package/dist/server/lib/coa-renderer-tokens.js +46 -0
  1383. package/dist/server/lib/coa-renderer-tokens.js.map +1 -0
  1384. package/dist/server/lib/coa-renderer.js +1786 -356
  1385. package/dist/server/lib/coa-renderer.js.map +1 -0
  1386. package/dist/server/lib/code-worker-pool.js +227 -177
  1387. package/dist/server/lib/code-worker-pool.js.map +1 -0
  1388. package/dist/server/lib/code-worker.js +174 -164
  1389. package/dist/server/lib/code-worker.js.map +1 -0
  1390. package/dist/server/lib/compaction-service.d.ts +2 -12
  1391. package/dist/server/lib/compaction-service.js +74 -184
  1392. package/dist/server/lib/compaction-service.js.map +1 -0
  1393. package/dist/server/lib/logger.js +36 -24
  1394. package/dist/server/lib/logger.js.map +1 -0
  1395. package/dist/server/lib/otel.js +101 -80
  1396. package/dist/server/lib/otel.js.map +1 -0
  1397. package/dist/server/lib/pdf-renderer-calc.d.ts +7 -0
  1398. package/dist/server/lib/pdf-renderer-calc.js +272 -0
  1399. package/dist/server/lib/pdf-renderer-calc.js.map +1 -0
  1400. package/dist/server/lib/pdf-renderer-generation.d.ts +73 -0
  1401. package/dist/server/lib/pdf-renderer-generation.js +298 -0
  1402. package/dist/server/lib/pdf-renderer-generation.js.map +1 -0
  1403. package/dist/server/lib/pdf-renderer-layout.d.ts +2 -0
  1404. package/dist/server/lib/pdf-renderer-layout.js +144 -0
  1405. package/dist/server/lib/pdf-renderer-layout.js.map +1 -0
  1406. package/dist/server/lib/pdf-renderer-validation.d.ts +14 -0
  1407. package/dist/server/lib/pdf-renderer-validation.js +220 -0
  1408. package/dist/server/lib/pdf-renderer-validation.js.map +1 -0
  1409. package/dist/server/lib/pdf-renderer.js +952 -788
  1410. package/dist/server/lib/pdf-renderer.js.map +1 -0
  1411. package/dist/server/lib/prompt-sanitizer.js +188 -108
  1412. package/dist/server/lib/prompt-sanitizer.js.map +1 -0
  1413. package/dist/server/lib/provider-capabilities.js +136 -138
  1414. package/dist/server/lib/provider-capabilities.js.map +1 -0
  1415. package/dist/server/lib/provider-failover.js +190 -168
  1416. package/dist/server/lib/provider-failover.js.map +1 -0
  1417. package/dist/server/lib/rate-limiter.js +186 -117
  1418. package/dist/server/lib/rate-limiter.js.map +1 -0
  1419. package/dist/server/lib/react-pdf-layout-elements.d.ts +8 -0
  1420. package/dist/server/lib/react-pdf-layout-elements.js +366 -0
  1421. package/dist/server/lib/react-pdf-layout-elements.js.map +1 -0
  1422. package/dist/server/lib/react-pdf-layout-labels.d.ts +38 -0
  1423. package/dist/server/lib/react-pdf-layout-labels.js +217 -0
  1424. package/dist/server/lib/react-pdf-layout-labels.js.map +1 -0
  1425. package/dist/server/lib/react-pdf-layout.js +551 -382
  1426. package/dist/server/lib/react-pdf-layout.js.map +1 -0
  1427. package/dist/server/lib/server-agent-loop-init.d.ts +28 -0
  1428. package/dist/server/lib/server-agent-loop-init.js +138 -0
  1429. package/dist/server/lib/server-agent-loop-init.js.map +1 -0
  1430. package/dist/server/lib/server-agent-loop-v2.d.ts +110 -0
  1431. package/dist/server/lib/server-agent-loop-v2.js +340 -0
  1432. package/dist/server/lib/server-agent-loop-v2.js.map +1 -0
  1433. package/dist/server/lib/server-agent-loop.d.ts +4 -1
  1434. package/dist/server/lib/server-agent-loop.js +907 -634
  1435. package/dist/server/lib/server-agent-loop.js.map +1 -0
  1436. package/dist/server/lib/server-subagent-loop.d.ts +3 -0
  1437. package/dist/server/lib/server-subagent-loop.js +267 -0
  1438. package/dist/server/lib/server-subagent-loop.js.map +1 -0
  1439. package/dist/server/lib/server-subagent.js +260 -164
  1440. package/dist/server/lib/server-subagent.js.map +1 -0
  1441. package/dist/server/lib/session-checkpoint.js +105 -96
  1442. package/dist/server/lib/session-checkpoint.js.map +1 -0
  1443. package/dist/server/lib/session-types.d.ts +106 -0
  1444. package/dist/server/lib/session-types.js +2 -0
  1445. package/dist/server/lib/session-types.js.map +1 -0
  1446. package/dist/server/lib/ssrf-guard.js +193 -184
  1447. package/dist/server/lib/ssrf-guard.js.map +1 -0
  1448. package/dist/server/lib/supabase-client.js +94 -82
  1449. package/dist/server/lib/supabase-client.js.map +1 -0
  1450. package/dist/server/lib/template-resolver.js +154 -176
  1451. package/dist/server/lib/template-resolver.js.map +1 -0
  1452. package/dist/server/lib/utils.js +242 -133
  1453. package/dist/server/lib/utils.js.map +1 -0
  1454. package/dist/server/local-agent-gateway-api.d.ts +34 -0
  1455. package/dist/server/local-agent-gateway-api.js +156 -0
  1456. package/dist/server/local-agent-gateway-api.js.map +1 -0
  1457. package/dist/server/local-agent-gateway-handler.d.ts +3 -0
  1458. package/dist/server/local-agent-gateway-handler.js +292 -0
  1459. package/dist/server/local-agent-gateway-handler.js.map +1 -0
  1460. package/dist/server/local-agent-gateway-init.d.ts +21 -0
  1461. package/dist/server/local-agent-gateway-init.js +143 -0
  1462. package/dist/server/local-agent-gateway-init.js.map +1 -0
  1463. package/dist/server/local-agent-gateway-messages.d.ts +12 -0
  1464. package/dist/server/local-agent-gateway-messages.js +108 -0
  1465. package/dist/server/local-agent-gateway-messages.js.map +1 -0
  1466. package/dist/server/local-agent-gateway-stats.d.ts +53 -0
  1467. package/dist/server/local-agent-gateway-stats.js +129 -0
  1468. package/dist/server/local-agent-gateway-stats.js.map +1 -0
  1469. package/dist/server/local-agent-gateway-types.d.ts +94 -0
  1470. package/dist/server/local-agent-gateway-types.js +78 -0
  1471. package/dist/server/local-agent-gateway-types.js.map +1 -0
  1472. package/dist/server/local-agent-gateway.d.ts +8 -2
  1473. package/dist/server/local-agent-gateway.js +825 -627
  1474. package/dist/server/local-agent-gateway.js.map +1 -0
  1475. package/dist/server/providers/__tests__/anthropic-adapter.test.js +228 -0
  1476. package/dist/server/providers/__tests__/anthropic-betas-toolchoice.test.js +257 -0
  1477. package/dist/server/providers/__tests__/anthropic-errors.test.js +262 -0
  1478. package/dist/server/providers/__tests__/anthropic-stream-core.test.js +275 -0
  1479. package/dist/server/providers/__tests__/anthropic-streaming-betas.test.js +247 -0
  1480. package/dist/server/providers/__tests__/anthropic-streaming-core.test.js +275 -0
  1481. package/dist/server/providers/__tests__/bedrock-config.test.js +177 -0
  1482. package/dist/server/providers/__tests__/bedrock-stream-behavior-streaming.test.js +272 -0
  1483. package/dist/server/providers/__tests__/bedrock-stream-behavior-toolchoice.test.js +214 -0
  1484. package/dist/server/providers/__tests__/bedrock-stream-behavior.part2.test.js +165 -0
  1485. package/dist/server/providers/__tests__/bedrock-stream-behavior.test.js +309 -0
  1486. package/dist/server/providers/__tests__/bedrock-stream-body-credentials.test.js +170 -0
  1487. package/dist/server/providers/__tests__/bedrock-stream-body-extras.test.js +183 -0
  1488. package/dist/server/providers/__tests__/bedrock-stream-body-request.test.js +305 -0
  1489. package/dist/server/providers/__tests__/bedrock-stream-body.part2.test.js +305 -0
  1490. package/dist/server/providers/__tests__/bedrock-stream-body.test.js +175 -0
  1491. package/dist/server/providers/__tests__/bedrock-stream-errors.test.js +165 -0
  1492. package/dist/server/providers/__tests__/gemini-config-methods.test.js +182 -0
  1493. package/dist/server/providers/__tests__/gemini-config-streaming.test.js +257 -0
  1494. package/dist/server/providers/__tests__/gemini-conversion-messages.test.js +247 -0
  1495. package/dist/server/providers/__tests__/gemini-conversion-schema.test.js +365 -0
  1496. package/dist/server/providers/__tests__/gemini-tools-choice.test.js +221 -0
  1497. package/dist/server/providers/__tests__/gemini-tools-fn.test.js +252 -0
  1498. package/dist/server/providers/__tests__/openai-config.test.js +194 -0
  1499. package/dist/server/providers/__tests__/openai-conversion.test.js +276 -0
  1500. package/dist/server/providers/__tests__/openai-messages.test.js +261 -0
  1501. package/dist/server/providers/__tests__/openai-streaming.test.js +394 -0
  1502. package/dist/server/providers/__tests__/openai-tools-cache.test.js +227 -0
  1503. package/dist/server/providers/__tests__/registry.test.js +183 -0
  1504. package/dist/server/providers/__tests__/shared.test.js +297 -0
  1505. package/dist/server/providers/anthropic.js +250 -172
  1506. package/dist/server/providers/anthropic.js.map +1 -0
  1507. package/dist/server/providers/bedrock.js +217 -158
  1508. package/dist/server/providers/bedrock.js.map +1 -0
  1509. package/dist/server/providers/gemini-conversion.d.ts +17 -0
  1510. package/dist/server/providers/gemini-conversion.js +185 -0
  1511. package/dist/server/providers/gemini-conversion.js.map +1 -0
  1512. package/dist/server/providers/gemini-streaming.d.ts +18 -0
  1513. package/dist/server/providers/gemini-streaming.js +187 -0
  1514. package/dist/server/providers/gemini-streaming.js.map +1 -0
  1515. package/dist/server/providers/gemini.js +548 -418
  1516. package/dist/server/providers/gemini.js.map +1 -0
  1517. package/dist/server/providers/openai-adapter.d.ts +15 -0
  1518. package/dist/server/providers/openai-adapter.js +423 -0
  1519. package/dist/server/providers/openai-adapter.js.map +1 -0
  1520. package/dist/server/providers/openai-conversion.d.ts +21 -0
  1521. package/dist/server/providers/openai-conversion.js +191 -0
  1522. package/dist/server/providers/openai-conversion.js.map +1 -0
  1523. package/dist/server/providers/openai.js +571 -437
  1524. package/dist/server/providers/openai.js.map +1 -0
  1525. package/dist/server/providers/registry.js +23 -18
  1526. package/dist/server/providers/registry.js.map +1 -0
  1527. package/dist/server/providers/shared.js +123 -95
  1528. package/dist/server/providers/shared.js.map +1 -0
  1529. package/dist/server/providers/types.js +1 -11
  1530. package/dist/server/providers/types.js.map +1 -0
  1531. package/dist/server/proxy-handlers.js +209 -165
  1532. package/dist/server/proxy-handlers.js.map +1 -0
  1533. package/dist/server/server-agent.d.ts +21 -0
  1534. package/dist/server/server-agent.js +162 -0
  1535. package/dist/server/server-agent.js.map +1 -0
  1536. package/dist/server/server-chat.d.ts +6 -0
  1537. package/dist/server/server-chat.js +210 -0
  1538. package/dist/server/server-chat.js.map +1 -0
  1539. package/dist/server/server-cost-guard.d.ts +16 -0
  1540. package/dist/server/server-cost-guard.js +141 -0
  1541. package/dist/server/server-cost-guard.js.map +1 -0
  1542. package/dist/server/server-executors.d.ts +10 -0
  1543. package/dist/server/server-executors.js +110 -0
  1544. package/dist/server/server-executors.js.map +1 -0
  1545. package/dist/server/server-helpers.d.ts +49 -0
  1546. package/dist/server/server-helpers.js +210 -0
  1547. package/dist/server/server-helpers.js.map +1 -0
  1548. package/dist/server/server-persist.d.ts +43 -0
  1549. package/dist/server/server-persist.js +249 -0
  1550. package/dist/server/server-persist.js.map +1 -0
  1551. package/dist/server/server-rate-limit.d.ts +9 -0
  1552. package/dist/server/server-rate-limit.js +77 -0
  1553. package/dist/server/server-rate-limit.js.map +1 -0
  1554. package/dist/server/server-routes-approvals.d.ts +4 -0
  1555. package/dist/server/server-routes-approvals.js +238 -0
  1556. package/dist/server/server-routes-approvals.js.map +1 -0
  1557. package/dist/server/server-routes-auth.d.ts +7 -0
  1558. package/dist/server/server-routes-auth.js +532 -0
  1559. package/dist/server/server-routes-auth.js.map +1 -0
  1560. package/dist/server/server-routes-events.d.ts +4 -0
  1561. package/dist/server/server-routes-events.js +167 -0
  1562. package/dist/server/server-routes-events.js.map +1 -0
  1563. package/dist/server/server-routes-public.d.ts +24 -0
  1564. package/dist/server/server-routes-public.js +453 -0
  1565. package/dist/server/server-routes-public.js.map +1 -0
  1566. package/dist/server/server-routes-waitpoints.d.ts +4 -0
  1567. package/dist/server/server-routes-waitpoints.js +190 -0
  1568. package/dist/server/server-routes-waitpoints.js.map +1 -0
  1569. package/dist/server/server-routes-webchat.d.ts +14 -0
  1570. package/dist/server/server-routes-webchat.js +307 -0
  1571. package/dist/server/server-routes-webchat.js.map +1 -0
  1572. package/dist/server/server-routes-workflows.d.ts +5 -0
  1573. package/dist/server/server-routes-workflows.js +289 -0
  1574. package/dist/server/server-routes-workflows.js.map +1 -0
  1575. package/dist/server/server-sse.d.ts +13 -0
  1576. package/dist/server/server-sse.js +197 -0
  1577. package/dist/server/server-sse.js.map +1 -0
  1578. package/dist/server/server-store-circuit-breaker.d.ts +32 -0
  1579. package/dist/server/server-store-circuit-breaker.js +211 -0
  1580. package/dist/server/server-store-circuit-breaker.js.map +1 -0
  1581. package/dist/server/server-store.d.ts +5 -0
  1582. package/dist/server/server-store.js +71 -0
  1583. package/dist/server/server-store.js.map +1 -0
  1584. package/dist/server/server-trace.d.ts +41 -0
  1585. package/dist/server/server-trace.js +133 -0
  1586. package/dist/server/server-trace.js.map +1 -0
  1587. package/dist/server/server-worker.d.ts +4 -0
  1588. package/dist/server/server-worker.js +127 -0
  1589. package/dist/server/server-worker.js.map +1 -0
  1590. package/dist/server/session-events.d.ts +27 -0
  1591. package/dist/server/session-events.js +69 -0
  1592. package/dist/server/session-events.js.map +1 -0
  1593. package/dist/server/session-manager.d.ts +52 -0
  1594. package/dist/server/session-manager.js +502 -0
  1595. package/dist/server/session-manager.js.map +1 -0
  1596. package/dist/server/tool-router-discovery.d.ts +33 -0
  1597. package/dist/server/tool-router-discovery.js +218 -0
  1598. package/dist/server/tool-router-discovery.js.map +1 -0
  1599. package/dist/server/tool-router-types.d.ts +91 -0
  1600. package/dist/server/tool-router-types.js +336 -0
  1601. package/dist/server/tool-router-types.js.map +1 -0
  1602. package/dist/server/tool-router-user-tools.d.ts +16 -0
  1603. package/dist/server/tool-router-user-tools.js +269 -0
  1604. package/dist/server/tool-router-user-tools.js.map +1 -0
  1605. package/dist/server/tool-router.js +959 -599
  1606. package/dist/server/tool-router.js.map +1 -0
  1607. package/dist/server/validation-schemas.d.ts +12 -0
  1608. package/dist/server/validation-schemas.js +251 -0
  1609. package/dist/server/validation-schemas.js.map +1 -0
  1610. package/dist/server/validation.js +248 -188
  1611. package/dist/server/validation.js.map +1 -0
  1612. package/dist/server/worker.js +202 -133
  1613. package/dist/server/worker.js.map +1 -0
  1614. package/dist/setup.d.ts +2 -2
  1615. package/dist/setup.js +151 -147
  1616. package/dist/setup.js.map +1 -0
  1617. package/dist/shared/agent-core-config.d.ts +12 -0
  1618. package/dist/shared/agent-core-config.js +77 -0
  1619. package/dist/shared/agent-core-config.js.map +1 -0
  1620. package/dist/shared/agent-core-config.test.js +132 -0
  1621. package/dist/shared/agent-core-context-thinking.test.js +293 -0
  1622. package/dist/shared/agent-core-loop-calls.test.js +174 -0
  1623. package/dist/shared/agent-core-loop-detector-bail.test.js +201 -0
  1624. package/dist/shared/agent-core-loop-detector.test.js +195 -0
  1625. package/dist/shared/agent-core-loop-errors.test.js +258 -0
  1626. package/dist/shared/agent-core-loop.d.ts +53 -0
  1627. package/dist/shared/agent-core-loop.js +251 -0
  1628. package/dist/shared/agent-core-loop.js.map +1 -0
  1629. package/dist/shared/agent-core-pricing.test.js +191 -0
  1630. package/dist/shared/agent-core-sanitize-retry.test.js +129 -0
  1631. package/dist/shared/agent-core-tools.d.ts +32 -0
  1632. package/dist/shared/agent-core-tools.js +323 -0
  1633. package/dist/shared/agent-core-tools.js.map +1 -0
  1634. package/dist/shared/agent-core-types.d.ts +182 -0
  1635. package/dist/shared/agent-core-types.js +265 -0
  1636. package/dist/shared/agent-core-types.js.map +1 -0
  1637. package/dist/shared/agent-core.d.ts +115 -26
  1638. package/dist/shared/agent-core.js +956 -522
  1639. package/dist/shared/agent-core.js.map +1 -0
  1640. package/dist/shared/agent-loop-base.d.ts +130 -0
  1641. package/dist/shared/agent-loop-base.js +347 -0
  1642. package/dist/shared/agent-loop-base.js.map +1 -0
  1643. package/dist/shared/anthropic-types.js +1 -6
  1644. package/dist/shared/anthropic-types.js.map +1 -0
  1645. package/dist/shared/api-client-build-request.test.js +228 -0
  1646. package/dist/shared/api-client-build-system-caching.test.js +107 -0
  1647. package/dist/shared/api-client-build.test.js +223 -0
  1648. package/dist/shared/api-client-config.d.ts +21 -0
  1649. package/dist/shared/api-client-helpers.d.ts +57 -0
  1650. package/dist/shared/api-client-helpers.test.js +261 -0
  1651. package/dist/shared/api-client-proxy-happy.test.js +255 -0
  1652. package/dist/shared/api-client-proxy-retry.test.js +307 -0
  1653. package/dist/shared/api-client-proxy.d.ts +26 -0
  1654. package/dist/shared/api-client-proxy.test.js +255 -0
  1655. package/dist/shared/api-client-retry.test.js +307 -0
  1656. package/dist/shared/api-client-system-trimming.test.js +261 -0
  1657. package/dist/shared/api-client-trimming.d.ts +36 -0
  1658. package/dist/shared/api-client.d.ts +16 -9
  1659. package/dist/shared/api-client.js +419 -327
  1660. package/dist/shared/api-client.js.map +1 -0
  1661. package/dist/shared/api-client.test.js +228 -0
  1662. package/dist/shared/compaction-thinking.test.js +315 -0
  1663. package/dist/shared/compaction-trimming.test.js +223 -0
  1664. package/dist/shared/compaction.d.ts +36 -0
  1665. package/dist/shared/compaction.js +138 -0
  1666. package/dist/shared/compaction.js.map +1 -0
  1667. package/dist/shared/constants.js +67 -64
  1668. package/dist/shared/constants.js.map +1 -0
  1669. package/dist/shared/exec-validator.d.ts +29 -0
  1670. package/dist/shared/exec-validator.js +106 -0
  1671. package/dist/shared/exec-validator.js.map +1 -0
  1672. package/dist/shared/imsg-constants.d.ts +8 -0
  1673. package/dist/shared/imsg-constants.js +13 -0
  1674. package/dist/shared/imsg-constants.js.map +1 -0
  1675. package/dist/shared/sse-parser-callbacks.test.js +422 -0
  1676. package/dist/shared/sse-parser-collect.test.js +252 -0
  1677. package/dist/shared/sse-parser-e2e.test.js +558 -0
  1678. package/dist/shared/sse-parser-parse.test.js +253 -0
  1679. package/dist/shared/sse-parser.js +221 -219
  1680. package/dist/shared/sse-parser.js.map +1 -0
  1681. package/dist/shared/tool-dispatch-advanced-batch-build.test.js +405 -0
  1682. package/dist/shared/tool-dispatch-advanced.test.js +320 -0
  1683. package/dist/shared/tool-dispatch-basic.test.js +278 -0
  1684. package/dist/shared/tool-dispatch-content.d.ts +14 -0
  1685. package/dist/shared/tool-dispatch-parallel.test.js +378 -0
  1686. package/dist/shared/tool-dispatch.d.ts +4 -0
  1687. package/dist/shared/tool-dispatch.js +226 -165
  1688. package/dist/shared/tool-dispatch.js.map +1 -0
  1689. package/dist/shared/types.js +1 -6
  1690. package/dist/shared/types.js.map +1 -0
  1691. package/dist/types/cli-highlight.d.js +2 -0
  1692. package/dist/types/cli-highlight.d.js.map +1 -0
  1693. package/dist/types/diff.d.js +2 -0
  1694. package/dist/types/diff.d.js.map +1 -0
  1695. package/dist/types/pdf-parse.d.js +2 -0
  1696. package/dist/types/pdf-parse.d.js.map +1 -0
  1697. package/dist/updater.d.ts +1 -1
  1698. package/dist/updater.js +118 -92
  1699. package/dist/updater.js.map +1 -0
  1700. package/dist/webchat/__tests__/widget-messaging.test.js +323 -0
  1701. package/dist/webchat/__tests__/widget.test.js +273 -0
  1702. package/dist/webchat/widget-styles.d.ts +7 -0
  1703. package/dist/webchat/widget-styles.js +11 -0
  1704. package/dist/webchat/widget-styles.js.map +1 -0
  1705. package/dist/webchat/widget.js +227 -380
  1706. package/dist/webchat/widget.js.map +1 -0
  1707. package/package.json +24 -11
  1708. package/src/cli/services/builtin-skills/verify.md +72 -0
  1709. package/vendor/ink/build/ansi-tokenizer.d.ts +38 -0
  1710. package/vendor/ink/build/ansi-tokenizer.js +316 -0
  1711. package/vendor/ink/build/ansi-tokenizer.js.map +1 -0
  1712. package/vendor/ink/build/apply-styles.js +175 -0
  1713. package/vendor/ink/build/build-layout.js +77 -0
  1714. package/vendor/ink/build/calculate-wrapped-text.js +53 -0
  1715. package/vendor/ink/build/colorize.d.ts +3 -0
  1716. package/vendor/ink/build/colorize.js +48 -0
  1717. package/vendor/ink/build/colorize.js.map +1 -0
  1718. package/vendor/ink/build/components/AccessibilityContext.d.ts +3 -0
  1719. package/vendor/ink/build/components/AccessibilityContext.js +5 -0
  1720. package/vendor/ink/build/components/AccessibilityContext.js.map +1 -0
  1721. package/vendor/ink/build/components/App.d.ts +18 -0
  1722. package/vendor/ink/build/components/App.js +351 -0
  1723. package/vendor/ink/build/components/App.js.map +1 -0
  1724. package/vendor/ink/build/components/AppContext.d.ts +15 -0
  1725. package/vendor/ink/build/components/AppContext.js +11 -0
  1726. package/vendor/ink/build/components/AppContext.js.map +1 -0
  1727. package/vendor/ink/build/components/BackgroundContext.d.ts +4 -0
  1728. package/vendor/ink/build/components/BackgroundContext.js +3 -0
  1729. package/vendor/ink/build/components/BackgroundContext.js.map +1 -0
  1730. package/vendor/ink/build/components/Box.d.ts +117 -0
  1731. package/vendor/ink/build/components/Box.js +34 -0
  1732. package/vendor/ink/build/components/Box.js.map +1 -0
  1733. package/vendor/ink/build/components/Color.js +62 -0
  1734. package/vendor/ink/build/components/Cursor.d.ts +83 -0
  1735. package/vendor/ink/build/components/Cursor.js +53 -0
  1736. package/vendor/ink/build/components/Cursor.js.map +1 -0
  1737. package/vendor/ink/build/components/CursorContext.d.ts +11 -0
  1738. package/vendor/ink/build/components/CursorContext.js +8 -0
  1739. package/vendor/ink/build/components/CursorContext.js.map +1 -0
  1740. package/vendor/ink/build/components/ErrorBoundary.d.ts +18 -0
  1741. package/vendor/ink/build/components/ErrorBoundary.js +23 -0
  1742. package/vendor/ink/build/components/ErrorBoundary.js.map +1 -0
  1743. package/vendor/ink/build/components/ErrorOverview.d.ts +6 -0
  1744. package/vendor/ink/build/components/ErrorOverview.js +84 -0
  1745. package/vendor/ink/build/components/ErrorOverview.js.map +1 -0
  1746. package/vendor/ink/build/components/FocusContext.d.ts +16 -0
  1747. package/vendor/ink/build/components/FocusContext.js +17 -0
  1748. package/vendor/ink/build/components/FocusContext.js.map +1 -0
  1749. package/vendor/ink/build/components/Newline.d.ts +13 -0
  1750. package/vendor/ink/build/components/Newline.js +8 -0
  1751. package/vendor/ink/build/components/Newline.js.map +1 -0
  1752. package/vendor/ink/build/components/Spacer.d.ts +7 -0
  1753. package/vendor/ink/build/components/Spacer.js +11 -0
  1754. package/vendor/ink/build/components/Spacer.js.map +1 -0
  1755. package/vendor/ink/build/components/Static.d.ts +24 -0
  1756. package/vendor/ink/build/components/Static.js +28 -0
  1757. package/vendor/ink/build/components/Static.js.map +1 -0
  1758. package/vendor/ink/build/components/StderrContext.d.ts +15 -0
  1759. package/vendor/ink/build/components/StderrContext.js +13 -0
  1760. package/vendor/ink/build/components/StderrContext.js.map +1 -0
  1761. package/vendor/ink/build/components/StdinContext.d.ts +22 -0
  1762. package/vendor/ink/build/components/StdinContext.js +19 -0
  1763. package/vendor/ink/build/components/StdinContext.js.map +1 -0
  1764. package/vendor/ink/build/components/StdoutContext.d.ts +15 -0
  1765. package/vendor/ink/build/components/StdoutContext.js +13 -0
  1766. package/vendor/ink/build/components/StdoutContext.js.map +1 -0
  1767. package/vendor/ink/build/components/Text.d.ts +55 -0
  1768. package/vendor/ink/build/components/Text.js +50 -0
  1769. package/vendor/ink/build/components/Text.js.map +1 -0
  1770. package/vendor/ink/build/components/Transform.d.ts +16 -0
  1771. package/vendor/ink/build/components/Transform.js +15 -0
  1772. package/vendor/ink/build/components/Transform.js.map +1 -0
  1773. package/vendor/ink/build/cursor-helpers.d.ts +38 -0
  1774. package/vendor/ink/build/cursor-helpers.js +56 -0
  1775. package/vendor/ink/build/cursor-helpers.js.map +1 -0
  1776. package/vendor/ink/build/devtools-window-polyfill.d.ts +1 -0
  1777. package/vendor/ink/build/devtools-window-polyfill.js +65 -0
  1778. package/vendor/ink/build/devtools-window-polyfill.js.map +1 -0
  1779. package/vendor/ink/build/devtools.d.ts +1 -0
  1780. package/vendor/ink/build/devtools.js +11 -0
  1781. package/vendor/ink/build/devtools.js.map +1 -0
  1782. package/vendor/ink/build/dom.d.ts +56 -0
  1783. package/vendor/ink/build/dom.js +124 -0
  1784. package/vendor/ink/build/dom.js.map +1 -0
  1785. package/vendor/ink/build/experimental/apply-style.js +140 -0
  1786. package/vendor/ink/build/experimental/dom.js +123 -0
  1787. package/vendor/ink/build/experimental/output.js +91 -0
  1788. package/vendor/ink/build/experimental/reconciler.js +141 -0
  1789. package/vendor/ink/build/experimental/renderer.js +81 -0
  1790. package/vendor/ink/build/get-max-width.d.ts +3 -0
  1791. package/vendor/ink/build/get-max-width.js +10 -0
  1792. package/vendor/ink/build/get-max-width.js.map +1 -0
  1793. package/vendor/ink/build/hooks/use-app.d.ts +5 -0
  1794. package/vendor/ink/build/hooks/use-app.js +8 -0
  1795. package/vendor/ink/build/hooks/use-app.js.map +1 -0
  1796. package/vendor/ink/build/hooks/use-cursor.d.ts +12 -0
  1797. package/vendor/ink/build/hooks/use-cursor.js +29 -0
  1798. package/vendor/ink/build/hooks/use-cursor.js.map +1 -0
  1799. package/vendor/ink/build/hooks/use-focus-manager.d.ts +28 -0
  1800. package/vendor/ink/build/hooks/use-focus-manager.js +17 -0
  1801. package/vendor/ink/build/hooks/use-focus-manager.js.map +1 -0
  1802. package/vendor/ink/build/hooks/use-focus.d.ts +29 -0
  1803. package/vendor/ink/build/hooks/use-focus.js +42 -0
  1804. package/vendor/ink/build/hooks/use-focus.js.map +1 -0
  1805. package/vendor/ink/build/hooks/use-input.d.ts +131 -0
  1806. package/vendor/ink/build/hooks/use-input.js +124 -0
  1807. package/vendor/ink/build/hooks/use-input.js.map +1 -0
  1808. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.d.ts +5 -0
  1809. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.js +11 -0
  1810. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.js.map +1 -0
  1811. package/vendor/ink/build/hooks/use-stderr.d.ts +5 -0
  1812. package/vendor/ink/build/hooks/use-stderr.js +8 -0
  1813. package/vendor/ink/build/hooks/use-stderr.js.map +1 -0
  1814. package/vendor/ink/build/hooks/use-stdin.d.ts +5 -0
  1815. package/vendor/ink/build/hooks/use-stdin.js +8 -0
  1816. package/vendor/ink/build/hooks/use-stdin.js.map +1 -0
  1817. package/vendor/ink/build/hooks/use-stdout.d.ts +5 -0
  1818. package/vendor/ink/build/hooks/use-stdout.js +8 -0
  1819. package/vendor/ink/build/hooks/use-stdout.js.map +1 -0
  1820. package/vendor/ink/build/hooks/useInput.js +38 -0
  1821. package/vendor/ink/build/index.d.ts +34 -0
  1822. package/vendor/ink/build/index.js +20 -0
  1823. package/vendor/ink/build/index.js.map +1 -0
  1824. package/vendor/ink/build/ink.d.ts +90 -0
  1825. package/vendor/ink/build/ink.js +677 -0
  1826. package/vendor/ink/build/ink.js.map +1 -0
  1827. package/vendor/ink/build/input-parser.d.ts +7 -0
  1828. package/vendor/ink/build/input-parser.js +154 -0
  1829. package/vendor/ink/build/input-parser.js.map +1 -0
  1830. package/vendor/ink/build/instance.js +205 -0
  1831. package/vendor/ink/build/instances.d.ts +3 -0
  1832. package/vendor/ink/build/instances.js +8 -0
  1833. package/vendor/ink/build/instances.js.map +1 -0
  1834. package/vendor/ink/build/kitty-keyboard.d.ts +23 -0
  1835. package/vendor/ink/build/kitty-keyboard.js +32 -0
  1836. package/vendor/ink/build/kitty-keyboard.js.map +1 -0
  1837. package/vendor/ink/build/layout.d.ts +7 -0
  1838. package/vendor/ink/build/layout.js +33 -0
  1839. package/vendor/ink/build/layout.js.map +1 -0
  1840. package/vendor/ink/build/log-update.d.ts +19 -0
  1841. package/vendor/ink/build/log-update.js +250 -0
  1842. package/vendor/ink/build/log-update.js.map +1 -0
  1843. package/vendor/ink/build/measure-element.d.ts +16 -0
  1844. package/vendor/ink/build/measure-element.js +9 -0
  1845. package/vendor/ink/build/measure-element.js.map +1 -0
  1846. package/vendor/ink/build/measure-text.d.ts +6 -0
  1847. package/vendor/ink/build/measure-text.js +21 -0
  1848. package/vendor/ink/build/measure-text.js.map +1 -0
  1849. package/vendor/ink/build/options.d.ts +52 -0
  1850. package/vendor/ink/build/options.js +2 -0
  1851. package/vendor/ink/build/options.js.map +1 -0
  1852. package/vendor/ink/build/output.d.ts +35 -0
  1853. package/vendor/ink/build/output.js +183 -0
  1854. package/vendor/ink/build/output.js.map +1 -0
  1855. package/vendor/ink/build/parse-keypress.d.ts +22 -0
  1856. package/vendor/ink/build/parse-keypress.js +493 -0
  1857. package/vendor/ink/build/parse-keypress.js.map +1 -0
  1858. package/vendor/ink/build/reconciler.d.ts +4 -0
  1859. package/vendor/ink/build/reconciler.js +274 -0
  1860. package/vendor/ink/build/reconciler.js.map +1 -0
  1861. package/vendor/ink/build/render-background.d.ts +4 -0
  1862. package/vendor/ink/build/render-background.js +25 -0
  1863. package/vendor/ink/build/render-background.js.map +1 -0
  1864. package/vendor/ink/build/render-border.d.ts +4 -0
  1865. package/vendor/ink/build/render-border.js +73 -0
  1866. package/vendor/ink/build/render-border.js.map +1 -0
  1867. package/vendor/ink/build/render-node-to-output.d.ts +14 -0
  1868. package/vendor/ink/build/render-node-to-output.js +147 -0
  1869. package/vendor/ink/build/render-node-to-output.js.map +1 -0
  1870. package/vendor/ink/build/render-to-string.d.ts +38 -0
  1871. package/vendor/ink/build/render-to-string.js +115 -0
  1872. package/vendor/ink/build/render-to-string.js.map +1 -0
  1873. package/vendor/ink/build/render.d.ts +121 -0
  1874. package/vendor/ink/build/render.js +55 -0
  1875. package/vendor/ink/build/render.js.map +1 -0
  1876. package/vendor/ink/build/renderer.d.ts +8 -0
  1877. package/vendor/ink/build/renderer.js +55 -0
  1878. package/vendor/ink/build/renderer.js.map +1 -0
  1879. package/vendor/ink/build/sanitize-ansi.d.ts +2 -0
  1880. package/vendor/ink/build/sanitize-ansi.js +27 -0
  1881. package/vendor/ink/build/sanitize-ansi.js.map +1 -0
  1882. package/vendor/ink/build/screen-reader-update.d.ts +13 -0
  1883. package/vendor/ink/build/screen-reader-update.js +38 -0
  1884. package/vendor/ink/build/screen-reader-update.js.map +1 -0
  1885. package/vendor/ink/build/squash-text-nodes.d.ts +3 -0
  1886. package/vendor/ink/build/squash-text-nodes.js +36 -0
  1887. package/vendor/ink/build/squash-text-nodes.js.map +1 -0
  1888. package/vendor/ink/build/styles.d.ts +240 -0
  1889. package/vendor/ink/build/styles.js +232 -0
  1890. package/vendor/ink/build/styles.js.map +1 -0
  1891. package/vendor/ink/build/utils.d.ts +2 -0
  1892. package/vendor/ink/build/utils.js +4 -0
  1893. package/vendor/ink/build/utils.js.map +1 -0
  1894. package/vendor/ink/build/wrap-text.d.ts +3 -0
  1895. package/vendor/ink/build/wrap-text.js +31 -0
  1896. package/vendor/ink/build/wrap-text.js.map +1 -0
  1897. package/vendor/ink/build/write-synchronized.d.ts +4 -0
  1898. package/vendor/ink/build/write-synchronized.js +7 -0
  1899. package/vendor/ink/build/write-synchronized.js.map +1 -0
  1900. package/vendor/ink/license +10 -0
  1901. package/vendor/ink/node_modules/@types/node/LICENSE +21 -0
  1902. package/vendor/ink/node_modules/@types/node/README.md +15 -0
  1903. package/vendor/ink/node_modules/@types/node/assert/strict.d.ts +105 -0
  1904. package/vendor/ink/node_modules/@types/node/assert.d.ts +955 -0
  1905. package/vendor/ink/node_modules/@types/node/async_hooks.d.ts +623 -0
  1906. package/vendor/ink/node_modules/@types/node/buffer.buffer.d.ts +466 -0
  1907. package/vendor/ink/node_modules/@types/node/buffer.d.ts +1810 -0
  1908. package/vendor/ink/node_modules/@types/node/child_process.d.ts +1428 -0
  1909. package/vendor/ink/node_modules/@types/node/cluster.d.ts +486 -0
  1910. package/vendor/ink/node_modules/@types/node/compatibility/iterators.d.ts +21 -0
  1911. package/vendor/ink/node_modules/@types/node/console.d.ts +151 -0
  1912. package/vendor/ink/node_modules/@types/node/constants.d.ts +20 -0
  1913. package/vendor/ink/node_modules/@types/node/crypto.d.ts +4065 -0
  1914. package/vendor/ink/node_modules/@types/node/dgram.d.ts +564 -0
  1915. package/vendor/ink/node_modules/@types/node/diagnostics_channel.d.ts +576 -0
  1916. package/vendor/ink/node_modules/@types/node/dns/promises.d.ts +503 -0
  1917. package/vendor/ink/node_modules/@types/node/dns.d.ts +922 -0
  1918. package/vendor/ink/node_modules/@types/node/domain.d.ts +166 -0
  1919. package/vendor/ink/node_modules/@types/node/events.d.ts +1054 -0
  1920. package/vendor/ink/node_modules/@types/node/fs/promises.d.ts +1329 -0
  1921. package/vendor/ink/node_modules/@types/node/fs.d.ts +4676 -0
  1922. package/vendor/ink/node_modules/@types/node/globals.d.ts +150 -0
  1923. package/vendor/ink/node_modules/@types/node/globals.typedarray.d.ts +101 -0
  1924. package/vendor/ink/node_modules/@types/node/http.d.ts +2167 -0
  1925. package/vendor/ink/node_modules/@types/node/http2.d.ts +2480 -0
  1926. package/vendor/ink/node_modules/@types/node/https.d.ts +405 -0
  1927. package/vendor/ink/node_modules/@types/node/index.d.ts +115 -0
  1928. package/vendor/ink/node_modules/@types/node/inspector/promises.d.ts +41 -0
  1929. package/vendor/ink/node_modules/@types/node/inspector.d.ts +224 -0
  1930. package/vendor/ink/node_modules/@types/node/inspector.generated.d.ts +4226 -0
  1931. package/vendor/ink/node_modules/@types/node/module.d.ts +819 -0
  1932. package/vendor/ink/node_modules/@types/node/net.d.ts +933 -0
  1933. package/vendor/ink/node_modules/@types/node/os.d.ts +507 -0
  1934. package/vendor/ink/node_modules/@types/node/package.json +155 -0
  1935. package/vendor/ink/node_modules/@types/node/path/posix.d.ts +8 -0
  1936. package/vendor/ink/node_modules/@types/node/path/win32.d.ts +8 -0
  1937. package/vendor/ink/node_modules/@types/node/path.d.ts +187 -0
  1938. package/vendor/ink/node_modules/@types/node/perf_hooks.d.ts +643 -0
  1939. package/vendor/ink/node_modules/@types/node/process.d.ts +2156 -0
  1940. package/vendor/ink/node_modules/@types/node/punycode.d.ts +117 -0
  1941. package/vendor/ink/node_modules/@types/node/querystring.d.ts +152 -0
  1942. package/vendor/ink/node_modules/@types/node/quic.d.ts +910 -0
  1943. package/vendor/ink/node_modules/@types/node/readline/promises.d.ts +161 -0
  1944. package/vendor/ink/node_modules/@types/node/readline.d.ts +541 -0
  1945. package/vendor/ink/node_modules/@types/node/repl.d.ts +415 -0
  1946. package/vendor/ink/node_modules/@types/node/sea.d.ts +162 -0
  1947. package/vendor/ink/node_modules/@types/node/sqlite.d.ts +955 -0
  1948. package/vendor/ink/node_modules/@types/node/stream/consumers.d.ts +38 -0
  1949. package/vendor/ink/node_modules/@types/node/stream/promises.d.ts +211 -0
  1950. package/vendor/ink/node_modules/@types/node/stream/web.d.ts +296 -0
  1951. package/vendor/ink/node_modules/@types/node/stream.d.ts +1760 -0
  1952. package/vendor/ink/node_modules/@types/node/string_decoder.d.ts +67 -0
  1953. package/vendor/ink/node_modules/@types/node/test/reporters.d.ts +96 -0
  1954. package/vendor/ink/node_modules/@types/node/test.d.ts +2240 -0
  1955. package/vendor/ink/node_modules/@types/node/timers/promises.d.ts +108 -0
  1956. package/vendor/ink/node_modules/@types/node/timers.d.ts +159 -0
  1957. package/vendor/ink/node_modules/@types/node/tls.d.ts +1198 -0
  1958. package/vendor/ink/node_modules/@types/node/trace_events.d.ts +197 -0
  1959. package/vendor/ink/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +462 -0
  1960. package/vendor/ink/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +71 -0
  1961. package/vendor/ink/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +36 -0
  1962. package/vendor/ink/node_modules/@types/node/ts5.6/index.d.ts +117 -0
  1963. package/vendor/ink/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +72 -0
  1964. package/vendor/ink/node_modules/@types/node/ts5.7/index.d.ts +117 -0
  1965. package/vendor/ink/node_modules/@types/node/tty.d.ts +250 -0
  1966. package/vendor/ink/node_modules/@types/node/url.d.ts +519 -0
  1967. package/vendor/ink/node_modules/@types/node/util/types.d.ts +558 -0
  1968. package/vendor/ink/node_modules/@types/node/util.d.ts +1662 -0
  1969. package/vendor/ink/node_modules/@types/node/v8.d.ts +983 -0
  1970. package/vendor/ink/node_modules/@types/node/vm.d.ts +1208 -0
  1971. package/vendor/ink/node_modules/@types/node/wasi.d.ts +202 -0
  1972. package/vendor/ink/node_modules/@types/node/web-globals/abortcontroller.d.ts +59 -0
  1973. package/vendor/ink/node_modules/@types/node/web-globals/blob.d.ts +23 -0
  1974. package/vendor/ink/node_modules/@types/node/web-globals/console.d.ts +9 -0
  1975. package/vendor/ink/node_modules/@types/node/web-globals/crypto.d.ts +39 -0
  1976. package/vendor/ink/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
  1977. package/vendor/ink/node_modules/@types/node/web-globals/encoding.d.ts +11 -0
  1978. package/vendor/ink/node_modules/@types/node/web-globals/events.d.ts +106 -0
  1979. package/vendor/ink/node_modules/@types/node/web-globals/fetch.d.ts +69 -0
  1980. package/vendor/ink/node_modules/@types/node/web-globals/importmeta.d.ts +13 -0
  1981. package/vendor/ink/node_modules/@types/node/web-globals/messaging.d.ts +23 -0
  1982. package/vendor/ink/node_modules/@types/node/web-globals/navigator.d.ts +25 -0
  1983. package/vendor/ink/node_modules/@types/node/web-globals/performance.d.ts +45 -0
  1984. package/vendor/ink/node_modules/@types/node/web-globals/storage.d.ts +24 -0
  1985. package/vendor/ink/node_modules/@types/node/web-globals/streams.d.ts +115 -0
  1986. package/vendor/ink/node_modules/@types/node/web-globals/timers.d.ts +44 -0
  1987. package/vendor/ink/node_modules/@types/node/web-globals/url.d.ts +24 -0
  1988. package/vendor/ink/node_modules/@types/node/worker_threads.d.ts +717 -0
  1989. package/vendor/ink/node_modules/@types/node/zlib.d.ts +618 -0
  1990. package/vendor/ink/node_modules/node-pty/LICENSE +69 -0
  1991. package/vendor/ink/node_modules/node-pty/README.md +164 -0
  1992. package/vendor/ink/node_modules/node-pty/binding.gyp +150 -0
  1993. package/vendor/ink/node_modules/node-pty/lib/conpty_console_list_agent.js +25 -0
  1994. package/vendor/ink/node_modules/node-pty/lib/eventEmitter2.js +47 -0
  1995. package/vendor/ink/node_modules/node-pty/lib/index.js +52 -0
  1996. package/vendor/ink/node_modules/node-pty/lib/interfaces.js +7 -0
  1997. package/vendor/ink/node_modules/node-pty/lib/shared/conout.js +11 -0
  1998. package/vendor/ink/node_modules/node-pty/lib/terminal.js +190 -0
  1999. package/vendor/ink/node_modules/node-pty/lib/types.js +7 -0
  2000. package/vendor/ink/node_modules/node-pty/lib/unixTerminal.js +349 -0
  2001. package/vendor/ink/node_modules/node-pty/lib/utils.js +39 -0
  2002. package/vendor/ink/node_modules/node-pty/lib/windowsConoutConnection.js +125 -0
  2003. package/vendor/ink/node_modules/node-pty/lib/windowsPtyAgent.js +287 -0
  2004. package/vendor/ink/node_modules/node-pty/lib/windowsTerminal.js +201 -0
  2005. package/vendor/ink/node_modules/node-pty/lib/worker/conoutSocketWorker.js +22 -0
  2006. package/vendor/ink/node_modules/node-pty/package.json +65 -0
  2007. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-arm64/pty.node +0 -0
  2008. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-arm64/spawn-helper +0 -0
  2009. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-x64/pty.node +0 -0
  2010. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-x64/spawn-helper +0 -0
  2011. package/vendor/ink/node_modules/node-pty/prebuilds/linux-arm64/pty.node +0 -0
  2012. package/vendor/ink/node_modules/node-pty/prebuilds/linux-x64/pty.node +0 -0
  2013. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty/OpenConsole.exe +0 -0
  2014. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty/conpty.dll +0 -0
  2015. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty.node +0 -0
  2016. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty.pdb +0 -0
  2017. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.node +0 -0
  2018. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.pdb +0 -0
  2019. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty/OpenConsole.exe +0 -0
  2020. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty/conpty.dll +0 -0
  2021. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty.node +0 -0
  2022. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty.pdb +0 -0
  2023. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.node +0 -0
  2024. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.pdb +0 -0
  2025. package/vendor/ink/node_modules/node-pty/scripts/post-install.js +76 -0
  2026. package/vendor/ink/node_modules/node-pty/scripts/prebuild.js +34 -0
  2027. package/vendor/ink/node_modules/node-pty/src/unix/pty.cc +875 -0
  2028. package/vendor/ink/node_modules/node-pty/src/unix/spawn-helper.cc +23 -0
  2029. package/vendor/ink/node_modules/node-pty/src/win/conpty.cc +582 -0
  2030. package/vendor/ink/node_modules/node-pty/src/win/conpty.h +41 -0
  2031. package/vendor/ink/node_modules/node-pty/src/win/conpty_console_list.cc +44 -0
  2032. package/vendor/ink/node_modules/node-pty/src/win/path_util.cc +95 -0
  2033. package/vendor/ink/node_modules/node-pty/src/win/path_util.h +26 -0
  2034. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-arm64/OpenConsole.exe +0 -0
  2035. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-arm64/conpty.dll +0 -0
  2036. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/OpenConsole.exe +0 -0
  2037. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/conpty.dll +0 -0
  2038. package/vendor/ink/node_modules/node-pty/typings/node-pty.d.ts +215 -0
  2039. package/vendor/ink/node_modules/undici-types/LICENSE +21 -0
  2040. package/vendor/ink/node_modules/undici-types/README.md +6 -0
  2041. package/vendor/ink/node_modules/undici-types/agent.d.ts +32 -0
  2042. package/vendor/ink/node_modules/undici-types/api.d.ts +43 -0
  2043. package/vendor/ink/node_modules/undici-types/balanced-pool.d.ts +30 -0
  2044. package/vendor/ink/node_modules/undici-types/cache-interceptor.d.ts +173 -0
  2045. package/vendor/ink/node_modules/undici-types/cache.d.ts +36 -0
  2046. package/vendor/ink/node_modules/undici-types/client-stats.d.ts +15 -0
  2047. package/vendor/ink/node_modules/undici-types/client.d.ts +108 -0
  2048. package/vendor/ink/node_modules/undici-types/connector.d.ts +34 -0
  2049. package/vendor/ink/node_modules/undici-types/content-type.d.ts +21 -0
  2050. package/vendor/ink/node_modules/undici-types/cookies.d.ts +30 -0
  2051. package/vendor/ink/node_modules/undici-types/diagnostics-channel.d.ts +74 -0
  2052. package/vendor/ink/node_modules/undici-types/dispatcher.d.ts +276 -0
  2053. package/vendor/ink/node_modules/undici-types/env-http-proxy-agent.d.ts +22 -0
  2054. package/vendor/ink/node_modules/undici-types/errors.d.ts +161 -0
  2055. package/vendor/ink/node_modules/undici-types/eventsource.d.ts +66 -0
  2056. package/vendor/ink/node_modules/undici-types/fetch.d.ts +211 -0
  2057. package/vendor/ink/node_modules/undici-types/formdata.d.ts +108 -0
  2058. package/vendor/ink/node_modules/undici-types/global-dispatcher.d.ts +9 -0
  2059. package/vendor/ink/node_modules/undici-types/global-origin.d.ts +7 -0
  2060. package/vendor/ink/node_modules/undici-types/h2c-client.d.ts +73 -0
  2061. package/vendor/ink/node_modules/undici-types/handlers.d.ts +15 -0
  2062. package/vendor/ink/node_modules/undici-types/header.d.ts +160 -0
  2063. package/vendor/ink/node_modules/undici-types/index.d.ts +88 -0
  2064. package/vendor/ink/node_modules/undici-types/interceptors.d.ts +73 -0
  2065. package/vendor/ink/node_modules/undici-types/mock-agent.d.ts +68 -0
  2066. package/vendor/ink/node_modules/undici-types/mock-call-history.d.ts +111 -0
  2067. package/vendor/ink/node_modules/undici-types/mock-client.d.ts +27 -0
  2068. package/vendor/ink/node_modules/undici-types/mock-errors.d.ts +12 -0
  2069. package/vendor/ink/node_modules/undici-types/mock-interceptor.d.ts +94 -0
  2070. package/vendor/ink/node_modules/undici-types/mock-pool.d.ts +27 -0
  2071. package/vendor/ink/node_modules/undici-types/package.json +55 -0
  2072. package/vendor/ink/node_modules/undici-types/patch.d.ts +29 -0
  2073. package/vendor/ink/node_modules/undici-types/pool-stats.d.ts +19 -0
  2074. package/vendor/ink/node_modules/undici-types/pool.d.ts +41 -0
  2075. package/vendor/ink/node_modules/undici-types/proxy-agent.d.ts +29 -0
  2076. package/vendor/ink/node_modules/undici-types/readable.d.ts +68 -0
  2077. package/vendor/ink/node_modules/undici-types/retry-agent.d.ts +8 -0
  2078. package/vendor/ink/node_modules/undici-types/retry-handler.d.ts +125 -0
  2079. package/vendor/ink/node_modules/undici-types/round-robin-pool.d.ts +41 -0
  2080. package/vendor/ink/node_modules/undici-types/snapshot-agent.d.ts +109 -0
  2081. package/vendor/ink/node_modules/undici-types/util.d.ts +18 -0
  2082. package/vendor/ink/node_modules/undici-types/utility.d.ts +7 -0
  2083. package/vendor/ink/node_modules/undici-types/webidl.d.ts +341 -0
  2084. package/vendor/ink/node_modules/undici-types/websocket.d.ts +186 -0
  2085. package/vendor/ink/package.json +201 -0
  2086. package/vendor/ink/readme.md +2636 -0
  2087. package/bin/swag-agent.js +0 -9
  2088. package/dist/server/lib/pg-rate-limiter.d.ts +0 -21
  2089. package/dist/server/lib/pg-rate-limiter.js +0 -86
@@ -1,4 +1,3 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
1
  /**
3
2
  * ChatInput — Custom input with bracketed paste + image attachments
4
3
  *
@@ -15,6 +14,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
14
  * - Slash command menu preserved
16
15
  * - Multi-line input with ⎸ continuation markers
17
16
  */
17
+
18
18
  import { useState, useEffect, useRef } from "react";
19
19
  import { Box, Text, useStdin } from "ink";
20
20
  import { readFileSync, existsSync, statSync } from "fs";
@@ -22,832 +22,1173 @@ import { basename, extname } from "path";
22
22
  import { colors } from "../shared/Theme.js";
23
23
  import { loadKeybindings, bindingToControlChar } from "../services/keybinding-manager.js";
24
24
  import { SlashMenu, SLASH_COMMANDS as _SLASH_COMMANDS, getFilteredSelectableCount, getCommandAtIndex, getCategoryCount, getCategoryCommandCount, getCategoryCommand, getCategoryLabel, getCategoryColor } from "./SlashMenu.js";
25
+
26
+ // ── Types ──
27
+
28
+ // Re-export for consumers (e.g. useSlashCommands)
29
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
25
30
  export const SLASH_COMMANDS = _SLASH_COMMANDS;
31
+
26
32
  // ── Constants ──
33
+
27
34
  const IMAGE_EXTENSIONS = {
28
- ".png": "image/png",
29
- ".jpg": "image/jpeg",
30
- ".jpeg": "image/jpeg",
31
- ".gif": "image/gif",
32
- ".webp": "image/webp",
35
+ ".png": "image/png",
36
+ ".jpg": "image/jpeg",
37
+ ".jpeg": "image/jpeg",
38
+ ".gif": "image/gif",
39
+ ".webp": "image/webp"
33
40
  };
34
41
  const MAX_IMAGE_SIZE = 20 * 1024 * 1024; // 20MB
35
42
  const MAX_DISPLAY_LINES = 8;
43
+
36
44
  // ── Helpers ──
45
+
37
46
  const CONTEXT_TYPES = ["product", "customer", "order", "inventory", "media", "document", "location"];
38
47
  const CONTEXT_COLORS = {
39
- product: "blue", customer: "#a855f7", order: "green",
40
- inventory: "#f97316", media: "#ec4899", document: "cyan", location: "yellow",
48
+ product: colors.brand,
49
+ customer: colors.purple,
50
+ order: colors.success,
51
+ inventory: colors.warning,
52
+ media: colors.pink,
53
+ document: colors.info,
54
+ location: "yellow"
41
55
  };
56
+
42
57
  /** Detect if pasted text is a valid WhaleContextItem JSON object */
43
58
  function parseWhaleContext(text) {
44
- const trimmed = text.trim();
45
- if (!trimmed.startsWith("{") || !trimmed.endsWith("}"))
46
- return null;
47
- try {
48
- const obj = JSON.parse(trimmed);
49
- if (obj && typeof obj.id === "string" && typeof obj.type === "string" &&
50
- CONTEXT_TYPES.includes(obj.type) && typeof obj.title === "string" &&
51
- typeof obj.sourceApp === "string") {
52
- return obj;
53
- }
59
+ const trimmed = text.trim();
60
+ if (!trimmed.startsWith("{") || !trimmed.endsWith("}")) return null;
61
+ try {
62
+ const obj = JSON.parse(trimmed);
63
+ if (obj && typeof obj.id === "string" && typeof obj.type === "string" && CONTEXT_TYPES.includes(obj.type) && typeof obj.title === "string" && typeof obj.sourceApp === "string") {
64
+ return obj;
54
65
  }
55
- catch { /* not JSON */ }
56
- return null;
66
+ } catch {/* not JSON */}
67
+ return null;
57
68
  }
69
+
58
70
  /** Format a context attachment into an XML context block for AI prompt */
59
71
  function contextToBlock(ctx) {
60
- const lines = [];
61
- lines.push(`<context type="${ctx.type}" source="${ctx.sourceApp}">`);
62
- lines.push(` ${ctx.title}`);
63
- if (ctx.subtitle)
64
- lines.push(` ${ctx.subtitle}`);
65
- if (ctx.data) {
66
- for (const [key, value] of Object.entries(ctx.data).sort(([a], [b]) => a.localeCompare(b))) {
67
- lines.push(` ${key}: ${value}`);
68
- }
72
+ const lines = [];
73
+ lines.push(`<context type="${ctx.type}" source="${ctx.sourceApp}">`);
74
+ lines.push(` ${ctx.title}`);
75
+ if (ctx.subtitle) lines.push(` ${ctx.subtitle}`);
76
+ if (ctx.data) {
77
+ for (const [key, value] of Object.entries(ctx.data).sort(([a], [b]) => a.localeCompare(b))) {
78
+ lines.push(` ${key}: ${value}`);
69
79
  }
70
- lines.push("</context>");
71
- return lines.join("\n");
80
+ }
81
+ lines.push("</context>");
82
+ return lines.join("\n");
72
83
  }
73
84
  function isImagePath(text) {
74
- const p = normalizePath(text);
75
- if (!p || p.includes("\n"))
76
- return false;
77
- const ext = extname(p).toLowerCase();
78
- return ext in IMAGE_EXTENSIONS && existsSync(p);
85
+ const p = normalizePath(text);
86
+ if (!p || p.includes("\n")) return false;
87
+ const ext = extname(p).toLowerCase();
88
+ return ext in IMAGE_EXTENSIONS && existsSync(p);
79
89
  }
90
+
80
91
  /** Normalize a terminal-pasted path (handles escapes, file:// URLs, quotes) */
81
92
  function normalizePath(raw) {
82
- let p = raw.trim();
83
- // Strip file:// URL prefix + percent-decode
84
- if (p.startsWith("file://")) {
85
- p = decodeURIComponent(p.replace(/^file:\/\//, ""));
86
- }
87
- // Strip surrounding quotes
88
- p = p.replace(/^['"]|['"]$/g, "");
89
- // Unescape backslash-escaped characters (spaces, parens, etc.)
90
- p = p.replace(/\\(.)/g, "$1");
91
- return p;
93
+ let p = raw.trim();
94
+ // Strip file:// URL prefix + percent-decode
95
+ if (p.startsWith("file://")) {
96
+ p = decodeURIComponent(p.replace(/^file:\/\//, ""));
97
+ }
98
+ // Strip surrounding quotes
99
+ p = p.replace(/^['"]|['"]$/g, "");
100
+ // Unescape backslash-escaped characters (spaces, parens, etc.)
101
+ p = p.replace(/\\(.)/g, "$1");
102
+ return p;
92
103
  }
93
104
  function isFilePath(text) {
94
- const p = normalizePath(text);
95
- if (!p || p.includes("\n"))
96
- return false;
97
- // Skip image paths — handled separately
98
- const ext = extname(p).toLowerCase();
99
- if (ext in IMAGE_EXTENSIONS)
100
- return false;
101
- try {
102
- return existsSync(p) && statSync(p).isFile();
103
- }
104
- catch {
105
- return false;
106
- }
105
+ const p = normalizePath(text);
106
+ if (!p || p.includes("\n")) return false;
107
+ // Skip image paths — handled separately
108
+ const ext = extname(p).toLowerCase();
109
+ if (ext in IMAGE_EXTENSIONS) return false;
110
+ try {
111
+ return existsSync(p) && statSync(p).isFile();
112
+ } catch {
113
+ return false;
114
+ }
107
115
  }
108
116
  function loadImage(filePath) {
109
- try {
110
- const p = normalizePath(filePath);
111
- const ext = extname(p).toLowerCase();
112
- const mediaType = IMAGE_EXTENSIONS[ext];
113
- if (!mediaType)
114
- return null;
115
- const stat = statSync(p);
116
- if (stat.size > MAX_IMAGE_SIZE)
117
- return null;
118
- const data = readFileSync(p);
119
- return { path: p, name: basename(p), base64: data.toString("base64"), mediaType };
120
- }
121
- catch {
122
- return null;
123
- }
117
+ try {
118
+ const p = normalizePath(filePath);
119
+ const ext = extname(p).toLowerCase();
120
+ const mediaType = IMAGE_EXTENSIONS[ext];
121
+ if (!mediaType) return null;
122
+ const stat = statSync(p);
123
+ if (stat.size > MAX_IMAGE_SIZE) return null;
124
+ const data = readFileSync(p);
125
+ return {
126
+ path: p,
127
+ name: basename(p),
128
+ base64: data.toString("base64"),
129
+ mediaType
130
+ };
131
+ } catch {
132
+ return null;
133
+ }
124
134
  }
125
135
  function getCursorLineCol(text, cursor) {
126
- let pos = 0;
127
- const lines = text.split("\n");
128
- for (let i = 0; i < lines.length; i++) {
129
- if (cursor <= pos + lines[i].length) {
130
- return { line: i, col: cursor - pos };
131
- }
132
- pos += lines[i].length + 1;
136
+ let pos = 0;
137
+ const lines = text.split("\n");
138
+ for (let i = 0; i < lines.length; i++) {
139
+ if (cursor <= pos + lines[i].length) {
140
+ return {
141
+ line: i,
142
+ col: cursor - pos
143
+ };
133
144
  }
134
- return { line: lines.length - 1, col: lines[lines.length - 1].length };
145
+ pos += lines[i].length + 1;
146
+ }
147
+ return {
148
+ line: lines.length - 1,
149
+ col: lines[lines.length - 1].length
150
+ };
135
151
  }
152
+
153
+ // ── Props ──
154
+
136
155
  // ── Component ──
137
- export function ChatInput({ onSubmit, onCommand, disabled, agentName, onInterrupt }) {
138
- const { stdin } = useStdin();
139
- // Input state — ref for synchronous handler access, state for render
140
- const inputRef = useRef({ value: "", cursor: 0 });
141
- const [displayValue, setDisplayValue] = useState("");
142
- const [displayCursor, setDisplayCursor] = useState(0);
143
- // Stable refs for callbacks — prevents stale closures in stdin handler
144
- const onSubmitRef = useRef(onSubmit);
145
- const onCommandRef = useRef(onCommand);
146
- const onInterruptRef = useRef(onInterrupt);
147
- const disabledRef = useRef(disabled);
148
- useEffect(() => { onSubmitRef.current = onSubmit; }, [onSubmit]);
149
- useEffect(() => { onCommandRef.current = onCommand; }, [onCommand]);
150
- useEffect(() => { onInterruptRef.current = onInterrupt; }, [onInterrupt]);
151
- useEffect(() => { disabledRef.current = disabled; }, [disabled]);
152
- // Queued message — typed during streaming, auto-submitted when streaming ends
153
- const [queued, setQueued] = useState(false);
154
- const queuedRef = useRef(false);
155
- // Auto-submit queued input when streaming ends (disabled goes from true → false)
156
- const prevDisabledRef = useRef(disabled);
157
- useEffect(() => {
158
- if (prevDisabledRef.current && !disabled && queuedRef.current) {
159
- // Streaming just ended and we have queued input — submit it
160
- queuedRef.current = false;
161
- setQueued(false);
162
- handleSubmit();
163
- }
164
- prevDisabledRef.current = disabled;
165
- }, [disabled]);
166
- // Mode & attachments
167
- const [menuMode, setMenuMode] = useState(false);
168
- const menuModeRef = useRef(false);
169
- const [menuFilter, setMenuFilter] = useState("");
170
- const menuFilterRef = useRef("");
171
- const [menuIndex, setMenuIndex] = useState(0);
172
- const menuIndexRef = useRef(0);
173
- const [images, setImages] = useState([]);
174
- const imagesRef = useRef([]);
175
- const [files, setFiles] = useState([]);
176
- const filesRef = useRef([]);
177
- const [contextItems, setContextItems] = useState([]);
178
- const contextItemsRef = useRef([]);
179
- // Two-level menu: null = Level 1 (categories), number = Level 2 (drilled into that category)
180
- const [selectedCategory, setSelectedCategory] = useState(null);
181
- const selectedCategoryRef = useRef(null);
182
- function setSelectedCategorySync(val) {
183
- selectedCategoryRef.current = val;
184
- setSelectedCategory(val);
156
+
157
+ export function ChatInput({
158
+ onSubmit,
159
+ onCommand,
160
+ disabled,
161
+ overlayActive,
162
+ agentName,
163
+ onInterrupt
164
+ }) {
165
+ const {
166
+ stdin
167
+ } = useStdin();
168
+
169
+ // Input state ref for synchronous handler access, state for render
170
+ const inputRef = useRef({
171
+ value: "",
172
+ cursor: 0
173
+ });
174
+ const [displayValue, setDisplayValue] = useState("");
175
+ const [displayCursor, setDisplayCursor] = useState(0);
176
+
177
+ // Stable refs for callbacks prevents stale closures in stdin handler
178
+ const onSubmitRef = useRef(onSubmit);
179
+ const onCommandRef = useRef(onCommand);
180
+ const onInterruptRef = useRef(onInterrupt);
181
+ const disabledRef = useRef(disabled);
182
+ useEffect(() => {
183
+ onSubmitRef.current = onSubmit;
184
+ }, [onSubmit]);
185
+ useEffect(() => {
186
+ onCommandRef.current = onCommand;
187
+ }, [onCommand]);
188
+ useEffect(() => {
189
+ onInterruptRef.current = onInterrupt;
190
+ }, [onInterrupt]);
191
+ useEffect(() => {
192
+ disabledRef.current = disabled;
193
+ }, [disabled]);
194
+
195
+ // Queued message — typed during streaming, auto-submitted when streaming ends
196
+ const [queued, setQueued] = useState(false);
197
+ const queuedRef = useRef(false);
198
+
199
+ // Guard against double-submission (BUG-1 fix)
200
+ const submittingRef = useRef(false);
201
+
202
+ // Auto-submit queued input when streaming ends (disabled goes from true → false)
203
+ const prevDisabledRef = useRef(disabled);
204
+ useEffect(() => {
205
+ if (prevDisabledRef.current && !disabled && queuedRef.current) {
206
+ // Streaming just ended and we have queued input — submit it
207
+ queuedRef.current = false;
208
+ setQueued(false);
209
+ handleSubmit();
185
210
  }
186
- // Input history (up/down arrow recall)
187
- const historyRef = useRef([]);
188
- const historyIndexRef = useRef(-1);
189
- const savedInputRef = useRef("");
190
- const MAX_HISTORY = 50;
191
- // Paste tracking
192
- const isPasting = useRef(false);
193
- const pasteBuffer = useRef("");
194
- // Multi-line paste — stored separately, displayed as chip
195
- const [pastedText, setPastedText] = useState(null);
196
- const pastedTextRef = useRef(null);
197
- // Sync refs
198
- useEffect(() => { imagesRef.current = images; }, [images]);
199
- useEffect(() => { filesRef.current = files; }, [files]);
200
- useEffect(() => { contextItemsRef.current = contextItems; }, [contextItems]);
201
- useEffect(() => { pastedTextRef.current = pastedText; }, [pastedText]);
202
- // ── Sync helpers: update ref THEN state (fixes race conditions) ──
203
- function setMenuModeSync(val) {
204
- menuModeRef.current = val;
205
- setMenuMode(val);
211
+ prevDisabledRef.current = disabled;
212
+ }, [disabled]);
213
+
214
+ // Mode & attachments
215
+ const [menuMode, setMenuMode] = useState(false);
216
+ const menuModeRef = useRef(false);
217
+ const [menuFilter, setMenuFilter] = useState("");
218
+ const menuFilterRef = useRef("");
219
+ const [menuIndex, setMenuIndex] = useState(0);
220
+ const menuIndexRef = useRef(0);
221
+ const [images, setImages] = useState([]);
222
+ const imagesRef = useRef([]);
223
+ const [files, setFiles] = useState([]);
224
+ const filesRef = useRef([]);
225
+ const [contextItems, setContextItems] = useState([]);
226
+ const contextItemsRef = useRef([]);
227
+
228
+ // Two-level menu: null = Level 1 (categories), number = Level 2 (drilled into that category)
229
+ const [selectedCategory, setSelectedCategory] = useState(null);
230
+ const selectedCategoryRef = useRef(null);
231
+ function setSelectedCategorySync(val) {
232
+ selectedCategoryRef.current = val;
233
+ setSelectedCategory(val);
234
+ }
235
+
236
+ // Input history (up/down arrow recall)
237
+ const historyRef = useRef([]);
238
+ const historyIndexRef = useRef(-1);
239
+ const savedInputRef = useRef("");
240
+ const MAX_HISTORY = 50;
241
+
242
+ // Paste tracking
243
+ const isPasting = useRef(false);
244
+ const pasteBuffer = useRef("");
245
+
246
+ // Multi-line paste — stored separately, displayed as chip
247
+ const [pastedText, setPastedText] = useState(null);
248
+ const pastedTextRef = useRef(null);
249
+
250
+ // Sync refs
251
+ useEffect(() => {
252
+ imagesRef.current = images;
253
+ }, [images]);
254
+ useEffect(() => {
255
+ filesRef.current = files;
256
+ }, [files]);
257
+ useEffect(() => {
258
+ contextItemsRef.current = contextItems;
259
+ }, [contextItems]);
260
+ useEffect(() => {
261
+ pastedTextRef.current = pastedText;
262
+ }, [pastedText]);
263
+ // ── Sync helpers: update ref THEN state (fixes race conditions) ──
264
+ function setMenuModeSync(val_0) {
265
+ menuModeRef.current = val_0;
266
+ setMenuMode(val_0);
267
+ }
268
+ function setMenuFilterSync(val_1) {
269
+ menuFilterRef.current = val_1;
270
+ setMenuFilter(val_1);
271
+ }
272
+ function setMenuIndexSync(val_2) {
273
+ menuIndexRef.current = val_2;
274
+ setMenuIndex(val_2);
275
+ }
276
+
277
+ // ── Enable bracketed paste mode ──
278
+ useEffect(() => {
279
+ process.stdout.write("\x1b[?2004h");
280
+ return () => {
281
+ process.stdout.write("\x1b[?2004l");
282
+ };
283
+ }, []);
284
+
285
+ // ── Update helper ──
286
+ function update(value, cursor) {
287
+ inputRef.current = {
288
+ value,
289
+ cursor
290
+ };
291
+ setDisplayValue(value);
292
+ setDisplayCursor(cursor);
293
+ }
294
+
295
+ // ── Process paste content ──
296
+ function processPaste(text) {
297
+ const clean = text.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
298
+
299
+ // Check for WhaleContext JSON → attach as context chip
300
+ const ctx = parseWhaleContext(clean);
301
+ if (ctx) {
302
+ // Avoid duplicates
303
+ if (!contextItemsRef.current.some(c => c.id === ctx.id)) {
304
+ setContextItems(prev => [...prev, ctx]);
305
+ }
306
+ return;
206
307
  }
207
- function setMenuFilterSync(val) {
208
- menuFilterRef.current = val;
209
- setMenuFilter(val);
308
+
309
+ // Check if ALL non-empty lines are image paths → attach them
310
+ const lines = clean.split("\n").map(l => l.trim()).filter(Boolean);
311
+ if (lines.length > 0 && lines.every(l_0 => isImagePath(l_0))) {
312
+ const newImages = [];
313
+ for (const line of lines) {
314
+ const img = loadImage(line);
315
+ if (img) newImages.push(img);
316
+ }
317
+ if (newImages.length > 0) {
318
+ setImages(prev_0 => [...prev_0, ...newImages]);
319
+ return;
320
+ }
210
321
  }
211
- function setMenuIndexSync(val) {
212
- menuIndexRef.current = val;
213
- setMenuIndex(val);
322
+
323
+ // Check for non-image file paths → attach as file chips
324
+ if (lines.length > 0 && lines.length <= 4 && lines.every(l_2 => isFilePath(l_2))) {
325
+ const newFiles = lines.map(l_1 => {
326
+ const p = normalizePath(l_1);
327
+ return {
328
+ path: p,
329
+ name: basename(p)
330
+ };
331
+ });
332
+ setFiles(prev_1 => [...prev_1, ...newFiles]);
333
+ return;
214
334
  }
215
- // ── Enable bracketed paste mode ──
216
- useEffect(() => {
217
- process.stdout.write("\x1b[?2004h");
218
- return () => { process.stdout.write("\x1b[?2004l"); };
219
- }, []);
220
- // ── Update helper ──
221
- function update(value, cursor) {
222
- inputRef.current = { value, cursor };
223
- setDisplayValue(value);
224
- setDisplayCursor(cursor);
335
+
336
+ // Slash command pasted directly (must look like /word, not an absolute path)
337
+ if (clean.startsWith("/") && !clean.includes("\n") && !clean.includes("/", 1) && inputRef.current.value === "") {
338
+ onCommandRef.current(clean.trim());
339
+ update("", 0);
340
+ return;
225
341
  }
226
- // ── Process paste content ──
227
- function processPaste(text) {
228
- const clean = text.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
229
- // Check for WhaleContext JSON → attach as context chip
230
- const ctx = parseWhaleContext(clean);
231
- if (ctx) {
232
- // Avoid duplicates
233
- if (!contextItemsRef.current.some(c => c.id === ctx.id)) {
234
- setContextItems(prev => [...prev, ctx]);
235
- }
236
- return;
342
+
343
+ // Multi-line paste → store as chip, don't spam input
344
+ const pasteLines = clean.split("\n");
345
+ if (pasteLines.length >= 4) {
346
+ setPastedText(clean);
347
+ return;
348
+ }
349
+
350
+ // Short paste — insert inline as before
351
+ const {
352
+ value: val_3,
353
+ cursor: cur
354
+ } = inputRef.current;
355
+ const newValue = val_3.slice(0, cur) + clean + val_3.slice(cur);
356
+ update(newValue, cur + clean.length);
357
+ }
358
+
359
+ // ── Handle submit ──
360
+ function handleSubmit() {
361
+ // Prevent double-submission from queued auto-submit racing with manual submit
362
+ if (submittingRef.current) {
363
+ return;
364
+ }
365
+ submittingRef.current = true;
366
+ const typed = inputRef.current.value.trim();
367
+ const paste = pastedTextRef.current;
368
+ const imgs = imagesRef.current;
369
+ const fls = filesRef.current;
370
+ const ctxs = contextItemsRef.current;
371
+ if (!typed && !paste && imgs.length === 0 && fls.length === 0 && ctxs.length === 0) {
372
+ submittingRef.current = false;
373
+ return;
374
+ }
375
+
376
+ // Slash command — must start with / and NOT contain a second /
377
+ // (prevents file paths like /Users/whale/file.txt from being misidentified)
378
+ if (typed.startsWith("/") && !typed.includes("/", 1) && !paste && imgs.length === 0 && fls.length === 0 && ctxs.length === 0) {
379
+ update("", 0);
380
+ submittingRef.current = false;
381
+ onCommandRef.current(typed);
382
+ return;
383
+ }
384
+
385
+ // Build context blocks prefix
386
+ const contextPrefix = ctxs.length > 0 ? ctxs.map(c_0 => contextToBlock(c_0)).join("\n\n") + "\n\n" : "";
387
+
388
+ // Build file context prefix
389
+ const filePrefix = fls.length > 0 ? fls.map(f => f.path).join("\n") + "\n\n" : "";
390
+
391
+ // Combine context + file prefix + typed text + pasted content
392
+ const body = paste ? typed ? `${typed}\n\n${paste}` : paste : typed || (ctxs.length > 0 ? "Tell me about this" : "");
393
+ const fullText = contextPrefix + filePrefix + body;
394
+
395
+ // Record in history
396
+ if (fullText.trim()) {
397
+ historyRef.current.push(fullText.trim());
398
+ if (historyRef.current.length > MAX_HISTORY) historyRef.current.shift();
399
+ }
400
+ historyIndexRef.current = -1;
401
+ onSubmitRef.current(fullText, imgs.length > 0 ? imgs : undefined);
402
+ update("", 0);
403
+ setImages([]);
404
+ setFiles([]);
405
+ setContextItems([]);
406
+ setPastedText(null);
407
+
408
+ // Release guard after state is cleared (next tick ensures no re-entry)
409
+ setTimeout(() => {
410
+ submittingRef.current = false;
411
+ }, 0);
412
+ }
413
+
414
+ // ── Raw stdin handler (handles both normal input and menu mode) ──
415
+ useEffect(() => {
416
+ if (!stdin) return;
417
+
418
+ // When an overlay with its own useInput is active (PlanApproval, etc.),
419
+ // detach our data listener entirely so Ink's readable handler can deliver
420
+ // keystrokes to the overlay's useInput hooks.
421
+ if (overlayActive) return;
422
+ const onData = data => {
423
+ const str = data.toString("utf-8");
424
+
425
+ // ══════════════════════════════════════════════
426
+ // DISABLED MODE — accept typing, block commands, handle Esc
427
+ // ══════════════════════════════════════════════
428
+ if (disabledRef.current) {
429
+ // Escape → interrupt streaming
430
+ if (str === "\x1b") {
431
+ onInterruptRef.current?.();
432
+ return;
237
433
  }
238
- // Check if ALL non-empty lines are image paths → attach them
239
- const lines = clean.split("\n").map(l => l.trim()).filter(Boolean);
240
- if (lines.length > 0 && lines.every(l => isImagePath(l))) {
241
- const newImages = [];
242
- for (const line of lines) {
243
- const img = loadImage(line);
244
- if (img)
245
- newImages.push(img);
434
+
435
+ // Control chars handled by ChatApp (exit, expand, thinking toggle)
436
+ const _kb = loadKeybindings();
437
+ const exitChar = bindingToControlChar(_kb.exit);
438
+ const expandChar = bindingToControlChar(_kb.toggle_expand);
439
+ const thinkingChar = bindingToControlChar(_kb.toggle_thinking);
440
+ if (str === exitChar || str === expandChar || str === thinkingChar) return;
441
+
442
+ // Arrow keys — cursor movement within buffer while disabled
443
+ if (str.startsWith("\x1b[")) {
444
+ const {
445
+ value: val_4,
446
+ cursor: cur_0
447
+ } = inputRef.current;
448
+ if (str === "\x1b[C") {
449
+ // Right
450
+ update(val_4, Math.min(cur_0 + 1, val_4.length));
451
+ } else if (str === "\x1b[D") {
452
+ // Left
453
+ update(val_4, Math.max(cur_0 - 1, 0));
454
+ } else if (str === "\x1b[A" || str === "\x1b[B") {
455
+ // Up/Down
456
+ const lines_0 = val_4.split("\n");
457
+ if (lines_0.length > 1) {
458
+ const {
459
+ line: curLine,
460
+ col: curCol
461
+ } = getCursorLineCol(val_4, cur_0);
462
+ const targetLine = str === "\x1b[A" ? Math.max(0, curLine - 1) : Math.min(lines_0.length - 1, curLine + 1);
463
+ if (targetLine !== curLine) {
464
+ const targetCol = Math.min(curCol, lines_0[targetLine].length);
465
+ let newCursor = 0;
466
+ for (let i = 0; i < targetLine; i++) newCursor += lines_0[i].length + 1;
467
+ newCursor += targetCol;
468
+ update(val_4, newCursor);
469
+ }
246
470
  }
247
- if (newImages.length > 0) {
248
- setImages(prev => [...prev, ...newImages]);
249
- return;
471
+ } else if (str === "\x1b[H" || str === "\x1b[1~") {
472
+ // Home
473
+ update(val_4, 0);
474
+ } else if (str === "\x1b[F" || str === "\x1b[4~") {
475
+ // End
476
+ update(val_4, val_4.length);
477
+ }
478
+ return;
479
+ }
480
+
481
+ // Bracketed paste while disabled — accept into buffer
482
+ if (str.includes("\x1b[200~")) {
483
+ isPasting.current = true;
484
+ let text_0 = str.replace(/\x1b\[200~/g, "").replace(/\x1b\[201~/g, "");
485
+ pasteBuffer.current += text_0;
486
+ if (str.includes("\x1b[201~")) {
487
+ isPasting.current = false;
488
+ const paste_0 = pasteBuffer.current;
489
+ pasteBuffer.current = "";
490
+ processPaste(paste_0);
491
+ }
492
+ return;
493
+ }
494
+ if (isPasting.current) {
495
+ if (str.includes("\x1b[201~")) {
496
+ isPasting.current = false;
497
+ pasteBuffer.current += str.replace(/\x1b\[201~/g, "");
498
+ const paste_1 = pasteBuffer.current;
499
+ pasteBuffer.current = "";
500
+ processPaste(paste_1);
501
+ } else {
502
+ pasteBuffer.current += str;
503
+ }
504
+ return;
505
+ }
506
+
507
+ // Enter → queue the current input for auto-submit
508
+ if (str === "\r" || str === "\n") {
509
+ const typed_0 = inputRef.current.value.trim();
510
+ if (typed_0) {
511
+ queuedRef.current = true;
512
+ setQueued(true);
513
+ }
514
+ return;
515
+ }
516
+
517
+ // Backspace
518
+ if (str === "\x7f" || str === "\b") {
519
+ const {
520
+ value: val_5,
521
+ cursor: cur_1
522
+ } = inputRef.current;
523
+ if (cur_1 > 0) {
524
+ update(val_5.slice(0, cur_1 - 1) + val_5.slice(cur_1), cur_1 - 1);
525
+ // Un-queue if editing
526
+ if (queuedRef.current) {
527
+ queuedRef.current = false;
528
+ setQueued(false);
250
529
  }
530
+ }
531
+ return;
251
532
  }
252
- // Check for non-image file paths → attach as file chips
253
- if (lines.length > 0 && lines.length <= 4 && lines.every(l => isFilePath(l))) {
254
- const newFiles = lines.map(l => {
255
- const p = normalizePath(l);
256
- return { path: p, name: basename(p) };
257
- });
258
- setFiles(prev => [...prev, ...newFiles]);
259
- return;
533
+
534
+ // Slash block menu mode while streaming
535
+ if (str === "/" && inputRef.current.value === "") return;
536
+
537
+ // Printable char type into buffer
538
+ if (str.length === 1 && str.charCodeAt(0) >= 0x20) {
539
+ const {
540
+ value: val_6,
541
+ cursor: cur_2
542
+ } = inputRef.current;
543
+ update(val_6.slice(0, cur_2) + str + val_6.slice(cur_2), cur_2 + 1);
544
+ // Un-queue if editing after queuing
545
+ if (queuedRef.current) {
546
+ queuedRef.current = false;
547
+ setQueued(false);
548
+ }
549
+ return;
260
550
  }
261
- // Slash command pasted directly (must look like /word, not an absolute path)
262
- if (clean.startsWith("/") && !clean.includes("\n") && !clean.includes("/", 1) && inputRef.current.value === "") {
263
- onCommandRef.current(clean.trim());
264
- update("", 0);
265
- return;
551
+
552
+ // Multi-character non-escape (unbracketted paste)
553
+ if (str.length > 1 && !str.startsWith("\x1b")) {
554
+ const codePoints = [...str];
555
+ if (codePoints.length === 1) {
556
+ const {
557
+ value: val_7,
558
+ cursor: cur_3
559
+ } = inputRef.current;
560
+ update(val_7.slice(0, cur_3) + str + val_7.slice(cur_3), cur_3 + str.length);
561
+ } else {
562
+ processPaste(str);
563
+ }
564
+ if (queuedRef.current) {
565
+ queuedRef.current = false;
566
+ setQueued(false);
567
+ }
568
+ return;
569
+ }
570
+ return;
571
+ }
572
+
573
+ // ══════════════════════════════════════════════
574
+ // MENU MODE — two-level navigation
575
+ // ══════════════════════════════════════════════
576
+ if (menuModeRef.current) {
577
+ const hasFilter = menuFilterRef.current.length > 0;
578
+ const inCategory = selectedCategoryRef.current !== null;
579
+
580
+ // Escape or Ctrl+C → dismiss menu entirely
581
+ if (str === "\x1b" || str === "\x03") {
582
+ setMenuModeSync(false);
583
+ setMenuFilterSync("");
584
+ setMenuIndexSync(0);
585
+ setSelectedCategorySync(null);
586
+ update("", 0);
587
+ return;
266
588
  }
267
- // Multi-line paste → store as chip, don't spam input
268
- const pasteLines = clean.split("\n");
269
- if (pasteLines.length >= 4) {
270
- setPastedText(clean);
589
+
590
+ // Tab no-op
591
+ if (str === "\t") return;
592
+
593
+ // ── Filter mode (has filter text) ──
594
+ if (hasFilter) {
595
+ if (str === "\r" || str === "\n") {
596
+ const cmd = getCommandAtIndex(menuFilterRef.current, menuIndexRef.current);
597
+ if (cmd) {
598
+ setMenuModeSync(false);
599
+ setMenuFilterSync("");
600
+ setMenuIndexSync(0);
601
+ setSelectedCategorySync(null);
602
+ update("", 0);
603
+ onCommandRef.current(cmd.name);
604
+ }
605
+ return;
606
+ }
607
+ if (str === "\x1b[A") {
608
+ setMenuIndexSync(Math.max(0, menuIndexRef.current - 1));
609
+ return;
610
+ }
611
+ if (str === "\x1b[B") {
612
+ const count = getFilteredSelectableCount(menuFilterRef.current);
613
+ setMenuIndexSync(Math.min(count - 1, menuIndexRef.current + 1));
614
+ return;
615
+ }
616
+ if (str === "\x7f" || str === "\b") {
617
+ const f_0 = menuFilterRef.current;
618
+ if (f_0.length > 1) {
619
+ setMenuFilterSync(f_0.slice(0, -1));
620
+ setMenuIndexSync(0);
621
+ } else {
622
+ // Clearing filter → back to Level 1
623
+ setMenuFilterSync("");
624
+ setMenuIndexSync(0);
625
+ setSelectedCategorySync(null);
626
+ }
271
627
  return;
628
+ }
629
+ if (str.startsWith("\x1b")) return;
630
+ if (str.length === 1 && str.charCodeAt(0) >= 0x20) {
631
+ setMenuFilterSync(menuFilterRef.current + str);
632
+ setMenuIndexSync(0);
633
+ return;
634
+ }
635
+ return;
272
636
  }
273
- // Short paste — insert inline as before
274
- const { value: val, cursor: cur } = inputRef.current;
275
- const newValue = val.slice(0, cur) + clean + val.slice(cur);
276
- update(newValue, cur + clean.length);
277
- }
278
- // ── Handle submit ──
279
- function handleSubmit() {
280
- const typed = inputRef.current.value.trim();
281
- const paste = pastedTextRef.current;
282
- const imgs = imagesRef.current;
283
- const fls = filesRef.current;
284
- const ctxs = contextItemsRef.current;
285
- if (!typed && !paste && imgs.length === 0 && fls.length === 0 && ctxs.length === 0)
637
+
638
+ // ── Level 2: inside a category ──
639
+ if (inCategory) {
640
+ const catIdx = selectedCategoryRef.current;
641
+ if (str === "\r" || str === "\n") {
642
+ const cmd_0 = getCategoryCommand(catIdx, menuIndexRef.current);
643
+ if (cmd_0) {
644
+ setMenuModeSync(false);
645
+ setMenuFilterSync("");
646
+ setMenuIndexSync(0);
647
+ setSelectedCategorySync(null);
648
+ update("", 0);
649
+ onCommandRef.current(cmd_0.name);
650
+ }
651
+ return;
652
+ }
653
+ if (str === "\x1b[A") {
654
+ setMenuIndexSync(Math.max(0, menuIndexRef.current - 1));
286
655
  return;
287
- // Slash command — must start with / and NOT contain a second /
288
- // (prevents file paths like /Users/whale/file.txt from being misidentified)
289
- if (typed.startsWith("/") && !typed.includes("/", 1) && !paste && imgs.length === 0 && fls.length === 0 && ctxs.length === 0) {
290
- update("", 0);
291
- onCommandRef.current(typed);
656
+ }
657
+ if (str === "\x1b[B") {
658
+ const count_0 = getCategoryCommandCount(catIdx);
659
+ setMenuIndexSync(Math.min(count_0 - 1, menuIndexRef.current + 1));
292
660
  return;
661
+ }
662
+ // Left arrow or Backspace → back to Level 1
663
+ if (str === "\x1b[D" || str === "\x7f" || str === "\b") {
664
+ setMenuIndexSync(catIdx); // restore highlight to the category we were in
665
+ setSelectedCategorySync(null);
666
+ return;
667
+ }
668
+ if (str.startsWith("\x1b")) return;
669
+ // Printable → switch to filter mode
670
+ if (str.length === 1 && str.charCodeAt(0) >= 0x20) {
671
+ setSelectedCategorySync(null);
672
+ setMenuFilterSync(str);
673
+ setMenuIndexSync(0);
674
+ return;
675
+ }
676
+ return;
677
+ }
678
+
679
+ // ── Level 1: category list ──
680
+ if (str === "\r" || str === "\n" || str === "\x1b[C") {
681
+ // Enter or Right → drill into selected category
682
+ const catIdx_0 = menuIndexRef.current;
683
+ if (catIdx_0 >= 0 && catIdx_0 < getCategoryCount()) {
684
+ setSelectedCategorySync(catIdx_0);
685
+ setMenuIndexSync(0);
686
+ }
687
+ return;
688
+ }
689
+ if (str === "\x1b[A") {
690
+ setMenuIndexSync(Math.max(0, menuIndexRef.current - 1));
691
+ return;
692
+ }
693
+ if (str === "\x1b[B") {
694
+ setMenuIndexSync(Math.min(getCategoryCount() - 1, menuIndexRef.current + 1));
695
+ return;
696
+ }
697
+ if (str === "\x7f" || str === "\b") {
698
+ // Backspace on Level 1 → dismiss menu
699
+ setMenuModeSync(false);
700
+ setMenuFilterSync("");
701
+ setMenuIndexSync(0);
702
+ setSelectedCategorySync(null);
703
+ update("", 0);
704
+ return;
705
+ }
706
+ if (str.startsWith("\x1b")) return;
707
+ // Printable → switch to filter mode
708
+ if (str.length === 1 && str.charCodeAt(0) >= 0x20) {
709
+ setMenuFilterSync(str);
710
+ setMenuIndexSync(0);
711
+ return;
712
+ }
713
+ return;
714
+ }
715
+
716
+ // ══════════════════════════════════════════════
717
+ // NORMAL INPUT MODE
718
+ // ══════════════════════════════════════════════
719
+
720
+ // ── Bracketed paste detection ──
721
+ if (str.includes("\x1b[200~")) {
722
+ isPasting.current = true;
723
+ let text_1 = str.replace(/\x1b\[200~/g, "").replace(/\x1b\[201~/g, "");
724
+ pasteBuffer.current += text_1;
725
+ if (str.includes("\x1b[201~")) {
726
+ isPasting.current = false;
727
+ const paste_2 = pasteBuffer.current;
728
+ pasteBuffer.current = "";
729
+ processPaste(paste_2);
293
730
  }
294
- // Build context blocks prefix
295
- const contextPrefix = ctxs.length > 0
296
- ? ctxs.map(c => contextToBlock(c)).join("\n\n") + "\n\n"
297
- : "";
298
- // Build file context prefix
299
- const filePrefix = fls.length > 0
300
- ? fls.map(f => f.path).join("\n") + "\n\n"
301
- : "";
302
- // Combine context + file prefix + typed text + pasted content
303
- const body = paste
304
- ? (typed ? `${typed}\n\n${paste}` : paste)
305
- : (typed || (ctxs.length > 0 ? "Tell me about this" : ""));
306
- const fullText = contextPrefix + filePrefix + body;
307
- // Record in history
308
- if (fullText.trim()) {
309
- historyRef.current.push(fullText.trim());
310
- if (historyRef.current.length > MAX_HISTORY)
311
- historyRef.current.shift();
731
+ return;
732
+ }
733
+ if (isPasting.current) {
734
+ if (str.includes("\x1b[201~")) {
735
+ isPasting.current = false;
736
+ pasteBuffer.current += str.replace(/\x1b\[201~/g, "");
737
+ const paste_3 = pasteBuffer.current;
738
+ pasteBuffer.current = "";
739
+ processPaste(paste_3);
740
+ } else {
741
+ pasteBuffer.current += str;
312
742
  }
313
- historyIndexRef.current = -1;
314
- onSubmitRef.current(fullText, imgs.length > 0 ? imgs : undefined);
743
+ return;
744
+ }
745
+
746
+ // ── Control chars handled by ChatApp (keybinding-aware) ──
747
+ const _kb_0 = loadKeybindings();
748
+ const exitChar_0 = bindingToControlChar(_kb_0.exit);
749
+ const expandChar_0 = bindingToControlChar(_kb_0.toggle_expand);
750
+ const thinkingChar_0 = bindingToControlChar(_kb_0.toggle_thinking);
751
+ if (str === exitChar_0 || str === expandChar_0 || str === thinkingChar_0) return;
752
+
753
+ // ── Enter ──
754
+ if (str === "\r" || str === "\n") {
755
+ handleSubmit();
756
+ return;
757
+ }
758
+
759
+ // ── Tab ── (no-op in input)
760
+ if (str === "\t") return;
761
+
762
+ // ── Backspace ──
763
+ if (str === "\x7f" || str === "\b") {
764
+ const {
765
+ value: val_8,
766
+ cursor: cur_4
767
+ } = inputRef.current;
768
+ if (cur_4 > 0) {
769
+ update(val_8.slice(0, cur_4 - 1) + val_8.slice(cur_4), cur_4 - 1);
770
+ } else if (val_8 === "") {
771
+ // Empty input + backspace → remove paste chip, then context, then files, then images
772
+ if (pastedTextRef.current) {
773
+ setPastedText(null);
774
+ } else if (contextItemsRef.current.length > 0) {
775
+ setContextItems(prev_2 => prev_2.slice(0, -1));
776
+ } else if (filesRef.current.length > 0) {
777
+ setFiles(prev_3 => prev_3.slice(0, -1));
778
+ } else if (imagesRef.current.length > 0) {
779
+ setImages(prev_4 => prev_4.slice(0, -1));
780
+ }
781
+ }
782
+ return;
783
+ }
784
+
785
+ // ── Clear line (default: Ctrl+U) ──
786
+ if (str === bindingToControlChar(_kb_0.clear_line)) {
315
787
  update("", 0);
316
788
  setImages([]);
317
789
  setFiles([]);
318
- setContextItems([]);
319
790
  setPastedText(null);
320
- }
321
- // ── Raw stdin handler (handles both normal input and menu mode) ──
322
- useEffect(() => {
323
- if (!stdin)
324
- return;
325
- const onData = (data) => {
326
- const str = data.toString("utf-8");
327
- // ══════════════════════════════════════════════
328
- // DISABLED MODE — accept typing, block commands, handle Esc
329
- // ══════════════════════════════════════════════
330
- if (disabledRef.current) {
331
- // Escape → interrupt streaming
332
- if (str === "\x1b") {
333
- onInterruptRef.current?.();
334
- return;
335
- }
336
- // Control chars handled by ChatApp (exit, expand, thinking toggle)
337
- const _kb = loadKeybindings();
338
- const exitChar = bindingToControlChar(_kb.exit);
339
- const expandChar = bindingToControlChar(_kb.toggle_expand);
340
- const thinkingChar = bindingToControlChar(_kb.toggle_thinking);
341
- if (str === exitChar || str === expandChar || str === thinkingChar)
342
- return;
343
- // Arrow keys — cursor movement within buffer while disabled
344
- if (str.startsWith("\x1b[")) {
345
- const { value: val, cursor: cur } = inputRef.current;
346
- if (str === "\x1b[C") { // Right
347
- update(val, Math.min(cur + 1, val.length));
348
- }
349
- else if (str === "\x1b[D") { // Left
350
- update(val, Math.max(cur - 1, 0));
351
- }
352
- else if (str === "\x1b[A" || str === "\x1b[B") { // Up/Down
353
- const lines = val.split("\n");
354
- if (lines.length > 1) {
355
- const { line: curLine, col: curCol } = getCursorLineCol(val, cur);
356
- const targetLine = str === "\x1b[A"
357
- ? Math.max(0, curLine - 1)
358
- : Math.min(lines.length - 1, curLine + 1);
359
- if (targetLine !== curLine) {
360
- const targetCol = Math.min(curCol, lines[targetLine].length);
361
- let newCursor = 0;
362
- for (let i = 0; i < targetLine; i++)
363
- newCursor += lines[i].length + 1;
364
- newCursor += targetCol;
365
- update(val, newCursor);
366
- }
367
- }
368
- }
369
- else if (str === "\x1b[H" || str === "\x1b[1~") { // Home
370
- update(val, 0);
371
- }
372
- else if (str === "\x1b[F" || str === "\x1b[4~") { // End
373
- update(val, val.length);
374
- }
375
- return;
376
- }
377
- // Bracketed paste while disabled — accept into buffer
378
- if (str.includes("\x1b[200~")) {
379
- isPasting.current = true;
380
- let text = str.replace(/\x1b\[200~/g, "").replace(/\x1b\[201~/g, "");
381
- pasteBuffer.current += text;
382
- if (str.includes("\x1b[201~")) {
383
- isPasting.current = false;
384
- const paste = pasteBuffer.current;
385
- pasteBuffer.current = "";
386
- processPaste(paste);
387
- }
388
- return;
389
- }
390
- if (isPasting.current) {
391
- if (str.includes("\x1b[201~")) {
392
- isPasting.current = false;
393
- pasteBuffer.current += str.replace(/\x1b\[201~/g, "");
394
- const paste = pasteBuffer.current;
395
- pasteBuffer.current = "";
396
- processPaste(paste);
397
- }
398
- else {
399
- pasteBuffer.current += str;
400
- }
401
- return;
402
- }
403
- // Enter → queue the current input for auto-submit
404
- if (str === "\r" || str === "\n") {
405
- const typed = inputRef.current.value.trim();
406
- if (typed) {
407
- queuedRef.current = true;
408
- setQueued(true);
409
- }
410
- return;
411
- }
412
- // Backspace
413
- if (str === "\x7f" || str === "\b") {
414
- const { value: val, cursor: cur } = inputRef.current;
415
- if (cur > 0) {
416
- update(val.slice(0, cur - 1) + val.slice(cur), cur - 1);
417
- // Un-queue if editing
418
- if (queuedRef.current) {
419
- queuedRef.current = false;
420
- setQueued(false);
421
- }
422
- }
423
- return;
424
- }
425
- // Slash — block menu mode while streaming
426
- if (str === "/" && inputRef.current.value === "")
427
- return;
428
- // Printable char — type into buffer
429
- if (str.length === 1 && str.charCodeAt(0) >= 0x20) {
430
- const { value: val, cursor: cur } = inputRef.current;
431
- update(val.slice(0, cur) + str + val.slice(cur), cur + 1);
432
- // Un-queue if editing after queuing
433
- if (queuedRef.current) {
434
- queuedRef.current = false;
435
- setQueued(false);
436
- }
437
- return;
438
- }
439
- // Multi-character non-escape (unbracketted paste)
440
- if (str.length > 1 && !str.startsWith("\x1b")) {
441
- const codePoints = [...str];
442
- if (codePoints.length === 1) {
443
- const { value: val, cursor: cur } = inputRef.current;
444
- update(val.slice(0, cur) + str + val.slice(cur), cur + str.length);
445
- }
446
- else {
447
- processPaste(str);
448
- }
449
- if (queuedRef.current) {
450
- queuedRef.current = false;
451
- setQueued(false);
452
- }
453
- return;
454
- }
455
- return;
456
- }
457
- // ══════════════════════════════════════════════
458
- // MENU MODE — two-level navigation
459
- // ══════════════════════════════════════════════
460
- if (menuModeRef.current) {
461
- const hasFilter = menuFilterRef.current.length > 0;
462
- const inCategory = selectedCategoryRef.current !== null;
463
- // Escape or Ctrl+C → dismiss menu entirely
464
- if (str === "\x1b" || str === "\x03") {
465
- setMenuModeSync(false);
466
- setMenuFilterSync("");
467
- setMenuIndexSync(0);
468
- setSelectedCategorySync(null);
469
- update("", 0);
470
- return;
471
- }
472
- // Tab → no-op
473
- if (str === "\t")
474
- return;
475
- // ── Filter mode (has filter text) ──
476
- if (hasFilter) {
477
- if (str === "\r" || str === "\n") {
478
- const cmd = getCommandAtIndex(menuFilterRef.current, menuIndexRef.current);
479
- if (cmd) {
480
- setMenuModeSync(false);
481
- setMenuFilterSync("");
482
- setMenuIndexSync(0);
483
- setSelectedCategorySync(null);
484
- update("", 0);
485
- onCommandRef.current(cmd.name);
486
- }
487
- return;
488
- }
489
- if (str === "\x1b[A") {
490
- setMenuIndexSync(Math.max(0, menuIndexRef.current - 1));
491
- return;
492
- }
493
- if (str === "\x1b[B") {
494
- const count = getFilteredSelectableCount(menuFilterRef.current);
495
- setMenuIndexSync(Math.min(count - 1, menuIndexRef.current + 1));
496
- return;
497
- }
498
- if (str === "\x7f" || str === "\b") {
499
- const f = menuFilterRef.current;
500
- if (f.length > 1) {
501
- setMenuFilterSync(f.slice(0, -1));
502
- setMenuIndexSync(0);
503
- }
504
- else {
505
- // Clearing filter → back to Level 1
506
- setMenuFilterSync("");
507
- setMenuIndexSync(0);
508
- setSelectedCategorySync(null);
509
- }
510
- return;
511
- }
512
- if (str.startsWith("\x1b"))
513
- return;
514
- if (str.length === 1 && str.charCodeAt(0) >= 0x20) {
515
- setMenuFilterSync(menuFilterRef.current + str);
516
- setMenuIndexSync(0);
517
- return;
518
- }
519
- return;
520
- }
521
- // ── Level 2: inside a category ──
522
- if (inCategory) {
523
- const catIdx = selectedCategoryRef.current;
524
- if (str === "\r" || str === "\n") {
525
- const cmd = getCategoryCommand(catIdx, menuIndexRef.current);
526
- if (cmd) {
527
- setMenuModeSync(false);
528
- setMenuFilterSync("");
529
- setMenuIndexSync(0);
530
- setSelectedCategorySync(null);
531
- update("", 0);
532
- onCommandRef.current(cmd.name);
533
- }
534
- return;
535
- }
536
- if (str === "\x1b[A") {
537
- setMenuIndexSync(Math.max(0, menuIndexRef.current - 1));
538
- return;
539
- }
540
- if (str === "\x1b[B") {
541
- const count = getCategoryCommandCount(catIdx);
542
- setMenuIndexSync(Math.min(count - 1, menuIndexRef.current + 1));
543
- return;
544
- }
545
- // Left arrow or Backspace → back to Level 1
546
- if (str === "\x1b[D" || str === "\x7f" || str === "\b") {
547
- setMenuIndexSync(catIdx); // restore highlight to the category we were in
548
- setSelectedCategorySync(null);
549
- return;
550
- }
551
- if (str.startsWith("\x1b"))
552
- return;
553
- // Printable → switch to filter mode
554
- if (str.length === 1 && str.charCodeAt(0) >= 0x20) {
555
- setSelectedCategorySync(null);
556
- setMenuFilterSync(str);
557
- setMenuIndexSync(0);
558
- return;
559
- }
560
- return;
561
- }
562
- // ── Level 1: category list ──
563
- if (str === "\r" || str === "\n" || str === "\x1b[C") {
564
- // Enter or Right → drill into selected category
565
- const catIdx = menuIndexRef.current;
566
- if (catIdx >= 0 && catIdx < getCategoryCount()) {
567
- setSelectedCategorySync(catIdx);
568
- setMenuIndexSync(0);
569
- }
570
- return;
571
- }
572
- if (str === "\x1b[A") {
573
- setMenuIndexSync(Math.max(0, menuIndexRef.current - 1));
574
- return;
575
- }
576
- if (str === "\x1b[B") {
577
- setMenuIndexSync(Math.min(getCategoryCount() - 1, menuIndexRef.current + 1));
578
- return;
579
- }
580
- if (str === "\x7f" || str === "\b") {
581
- // Backspace on Level 1 → dismiss menu
582
- setMenuModeSync(false);
583
- setMenuFilterSync("");
584
- setMenuIndexSync(0);
585
- setSelectedCategorySync(null);
586
- update("", 0);
587
- return;
588
- }
589
- if (str.startsWith("\x1b"))
590
- return;
591
- // Printable → switch to filter mode
592
- if (str.length === 1 && str.charCodeAt(0) >= 0x20) {
593
- setMenuFilterSync(str);
594
- setMenuIndexSync(0);
595
- return;
596
- }
597
- return;
598
- }
599
- // ══════════════════════════════════════════════
600
- // NORMAL INPUT MODE
601
- // ══════════════════════════════════════════════
602
- // ── Bracketed paste detection ──
603
- if (str.includes("\x1b[200~")) {
604
- isPasting.current = true;
605
- let text = str.replace(/\x1b\[200~/g, "").replace(/\x1b\[201~/g, "");
606
- pasteBuffer.current += text;
607
- if (str.includes("\x1b[201~")) {
608
- isPasting.current = false;
609
- const paste = pasteBuffer.current;
610
- pasteBuffer.current = "";
611
- processPaste(paste);
612
- }
613
- return;
614
- }
615
- if (isPasting.current) {
616
- if (str.includes("\x1b[201~")) {
617
- isPasting.current = false;
618
- pasteBuffer.current += str.replace(/\x1b\[201~/g, "");
619
- const paste = pasteBuffer.current;
620
- pasteBuffer.current = "";
621
- processPaste(paste);
622
- }
623
- else {
624
- pasteBuffer.current += str;
625
- }
626
- return;
627
- }
628
- // ── Control chars handled by ChatApp (keybinding-aware) ──
629
- const _kb = loadKeybindings();
630
- const exitChar = bindingToControlChar(_kb.exit);
631
- const expandChar = bindingToControlChar(_kb.toggle_expand);
632
- const thinkingChar = bindingToControlChar(_kb.toggle_thinking);
633
- if (str === exitChar || str === expandChar || str === thinkingChar)
634
- return;
635
- // ── Enter ──
636
- if (str === "\r" || str === "\n") {
637
- handleSubmit();
638
- return;
639
- }
640
- // ── Tab ── (no-op in input)
641
- if (str === "\t")
642
- return;
643
- // ── Backspace ──
644
- if (str === "\x7f" || str === "\b") {
645
- const { value: val, cursor: cur } = inputRef.current;
646
- if (cur > 0) {
647
- update(val.slice(0, cur - 1) + val.slice(cur), cur - 1);
648
- }
649
- else if (val === "") {
650
- // Empty input + backspace → remove paste chip, then context, then files, then images
651
- if (pastedTextRef.current) {
652
- setPastedText(null);
653
- }
654
- else if (contextItemsRef.current.length > 0) {
655
- setContextItems(prev => prev.slice(0, -1));
656
- }
657
- else if (filesRef.current.length > 0) {
658
- setFiles(prev => prev.slice(0, -1));
659
- }
660
- else if (imagesRef.current.length > 0) {
661
- setImages(prev => prev.slice(0, -1));
662
- }
663
- }
664
- return;
665
- }
666
- // ── Clear line (default: Ctrl+U) ──
667
- if (str === bindingToControlChar(_kb.clear_line)) {
668
- update("", 0);
669
- setImages([]);
670
- setFiles([]);
671
- setPastedText(null);
672
- return;
673
- }
674
- // ── Delete word (default: Ctrl+W) ──
675
- if (str === bindingToControlChar(_kb.delete_word)) {
676
- const { value: val, cursor: cur } = inputRef.current;
677
- const before = val.slice(0, cur);
678
- const match = before.match(/\S+\s*$/);
679
- if (match) {
680
- const len = match[0].length;
681
- update(val.slice(0, cur - len) + val.slice(cur), cur - len);
682
- }
683
- return;
684
- }
685
- // ── Home (default: Ctrl+A) ──
686
- if (str === bindingToControlChar(_kb.home)) {
687
- update(inputRef.current.value, 0);
688
- return;
689
- }
690
- // ── Escape sequences ──
691
- if (str.startsWith("\x1b[")) {
692
- const { value: val, cursor: cur } = inputRef.current;
693
- if (str === "\x1b[C") { // Right
694
- update(val, Math.min(cur + 1, val.length));
695
- }
696
- else if (str === "\x1b[D") { // Left
697
- update(val, Math.max(cur - 1, 0));
698
- }
699
- else if (str === "\x1b[H" || str === "\x1b[1~") { // Home
700
- update(val, 0);
701
- }
702
- else if (str === "\x1b[F" || str === "\x1b[4~") { // End
703
- update(val, val.length);
704
- }
705
- else if (str === "\x1b[3~") { // Delete
706
- if (cur < val.length) {
707
- update(val.slice(0, cur) + val.slice(cur + 1), cur);
708
- }
709
- }
710
- else if (str === "\x1b[A" || str === "\x1b[B") { // Up/Down
711
- const lines = val.split("\n");
712
- if (lines.length > 1) {
713
- // Multi-line: navigate lines
714
- const { line: curLine, col: curCol } = getCursorLineCol(val, cur);
715
- const targetLine = str === "\x1b[A"
716
- ? Math.max(0, curLine - 1)
717
- : Math.min(lines.length - 1, curLine + 1);
718
- if (targetLine !== curLine) {
719
- const targetCol = Math.min(curCol, lines[targetLine].length);
720
- let newCursor = 0;
721
- for (let i = 0; i < targetLine; i++)
722
- newCursor += lines[i].length + 1;
723
- newCursor += targetCol;
724
- update(val, newCursor);
725
- }
726
- }
727
- else if (str === "\x1b[A") {
728
- // Up arrow — history recall
729
- if (historyRef.current.length === 0) { /* no history */ }
730
- else {
731
- if (historyIndexRef.current === -1)
732
- savedInputRef.current = val;
733
- const newIdx = Math.min(historyIndexRef.current + 1, historyRef.current.length - 1);
734
- historyIndexRef.current = newIdx;
735
- const hist = historyRef.current[historyRef.current.length - 1 - newIdx];
736
- update(hist, hist.length);
737
- }
738
- }
739
- else {
740
- // Down arrow — forward in history
741
- if (historyIndexRef.current <= -1) { /* already at current */ }
742
- else {
743
- const newIdx = historyIndexRef.current - 1;
744
- historyIndexRef.current = newIdx;
745
- if (newIdx < 0) {
746
- update(savedInputRef.current, savedInputRef.current.length);
747
- }
748
- else {
749
- const hist = historyRef.current[historyRef.current.length - 1 - newIdx];
750
- update(hist, hist.length);
751
- }
752
- }
753
- }
754
- }
755
- // Ignore unrecognized escape sequences
756
- return;
757
- }
758
- // ── Standalone escape — clear input if non-empty ──
759
- if (str === "\x1b") {
760
- const { value } = inputRef.current;
761
- if (value || filesRef.current.length > 0) {
762
- update("", 0);
763
- setImages([]);
764
- setFiles([]);
765
- setPastedText(null);
766
- }
767
- return;
791
+ return;
792
+ }
793
+
794
+ // ── Delete word (default: Ctrl+W) ──
795
+ if (str === bindingToControlChar(_kb_0.delete_word)) {
796
+ const {
797
+ value: val_9,
798
+ cursor: cur_5
799
+ } = inputRef.current;
800
+ const before = val_9.slice(0, cur_5);
801
+ const match = before.match(/\S+\s*$/);
802
+ if (match) {
803
+ const len = match[0].length;
804
+ update(val_9.slice(0, cur_5 - len) + val_9.slice(cur_5), cur_5 - len);
805
+ }
806
+ return;
807
+ }
808
+
809
+ // ── Home (default: Ctrl+A) ──
810
+ if (str === bindingToControlChar(_kb_0.home)) {
811
+ update(inputRef.current.value, 0);
812
+ return;
813
+ }
814
+
815
+ // ── Escape sequences ──
816
+ if (str.startsWith("\x1b[")) {
817
+ const {
818
+ value: val_10,
819
+ cursor: cur_6
820
+ } = inputRef.current;
821
+ if (str === "\x1b[C") {
822
+ // Right
823
+ update(val_10, Math.min(cur_6 + 1, val_10.length));
824
+ } else if (str === "\x1b[D") {
825
+ // Left
826
+ update(val_10, Math.max(cur_6 - 1, 0));
827
+ } else if (str === "\x1b[H" || str === "\x1b[1~") {
828
+ // Home
829
+ update(val_10, 0);
830
+ } else if (str === "\x1b[F" || str === "\x1b[4~") {
831
+ // End
832
+ update(val_10, val_10.length);
833
+ } else if (str === "\x1b[3~") {
834
+ // Delete
835
+ if (cur_6 < val_10.length) {
836
+ update(val_10.slice(0, cur_6) + val_10.slice(cur_6 + 1), cur_6);
837
+ }
838
+ } else if (str === "\x1b[A" || str === "\x1b[B") {
839
+ // Up/Down
840
+ const lines_1 = val_10.split("\n");
841
+ if (lines_1.length > 1) {
842
+ // Multi-line: navigate lines
843
+ const {
844
+ line: curLine_0,
845
+ col: curCol_0
846
+ } = getCursorLineCol(val_10, cur_6);
847
+ const targetLine_0 = str === "\x1b[A" ? Math.max(0, curLine_0 - 1) : Math.min(lines_1.length - 1, curLine_0 + 1);
848
+ if (targetLine_0 !== curLine_0) {
849
+ const targetCol_0 = Math.min(curCol_0, lines_1[targetLine_0].length);
850
+ let newCursor_0 = 0;
851
+ for (let i_0 = 0; i_0 < targetLine_0; i_0++) newCursor_0 += lines_1[i_0].length + 1;
852
+ newCursor_0 += targetCol_0;
853
+ update(val_10, newCursor_0);
768
854
  }
769
- // ── Multi-character non-escape = paste without brackets ──
770
- if (str.length > 1 && !str.startsWith("\x1b")) {
771
- const codePoints = [...str];
772
- if (codePoints.length === 1) {
773
- // Single code point (emoji etc.)
774
- const { value: val, cursor: cur } = inputRef.current;
775
- update(val.slice(0, cur) + str + val.slice(cur), cur + str.length);
776
- }
777
- else {
778
- processPaste(str);
779
- }
780
- return;
855
+ } else if (str === "\x1b[A") {
856
+ // Up arrow history recall
857
+ if (historyRef.current.length === 0) {/* no history */} else {
858
+ if (historyIndexRef.current === -1) savedInputRef.current = val_10;
859
+ const newIdx = Math.min(historyIndexRef.current + 1, historyRef.current.length - 1);
860
+ historyIndexRef.current = newIdx;
861
+ const hist = historyRef.current[historyRef.current.length - 1 - newIdx];
862
+ update(hist, hist.length);
781
863
  }
782
- // ── Single printable character ──
783
- if (str.length === 1 && str.charCodeAt(0) >= 0x20) {
784
- const { value: val, cursor: cur } = inputRef.current;
785
- // Slash menu trigger
786
- if (str === "/" && val === "") {
787
- setMenuModeSync(true);
788
- setMenuFilterSync("");
789
- setMenuIndexSync(0);
790
- return;
791
- }
792
- update(val.slice(0, cur) + str + val.slice(cur), cur + 1);
864
+ } else {
865
+ // Down arrow forward in history
866
+ if (historyIndexRef.current <= -1) {/* already at current */} else {
867
+ const newIdx_0 = historyIndexRef.current - 1;
868
+ historyIndexRef.current = newIdx_0;
869
+ if (newIdx_0 < 0) {
870
+ update(savedInputRef.current, savedInputRef.current.length);
871
+ } else {
872
+ const hist_0 = historyRef.current[historyRef.current.length - 1 - newIdx_0];
873
+ update(hist_0, hist_0.length);
874
+ }
793
875
  }
794
- };
795
- stdin.on("data", onData);
796
- return () => { stdin.off("data", onData); };
797
- }, [stdin]); // eslint-disable-line react-hooks/exhaustive-deps
798
- // ── Render ──
799
- // Disabled — dimmed but visible input (accept typing to queue)
800
- if (disabled) {
801
- const disabledLines = displayValue.split("\n");
802
- const { line: dCursorLine, col: dCursorCol } = displayValue
803
- ? getCursorLineCol(displayValue, displayCursor)
804
- : { line: 0, col: 0 };
805
- return (_jsx(Box, { flexDirection: "column", children: disabledLines.length <= 1 ? (_jsxs(Box, { children: [_jsx(Text, { color: colors.quaternary, bold: true, children: "❯ " }), !displayValue ? (_jsx(Text, { color: colors.quaternary, wrap: "truncate", children: queued ? "queued — will send when done" : "type to queue a message..." })) : (_jsxs(Box, { children: [_jsxs(Text, { color: colors.dim, children: [displayValue.slice(0, displayCursor), _jsx(Text, { inverse: true, children: displayCursor < displayValue.length ? displayValue[displayCursor] : " " }), displayCursor < displayValue.length ? displayValue.slice(displayCursor + 1) : ""] }), queued && _jsx(Text, { color: colors.warning, children: " [queued]" })] }))] })) : (
806
- /* Multi-line disabled */
807
- _jsxs(Box, { flexDirection: "column", children: [disabledLines.map((line, i) => {
808
- const isCursorOnLine = i === dCursorLine;
809
- return (_jsxs(Box, { children: [_jsx(Text, { color: colors.quaternary, bold: true, children: i === 0 ? "❯ " : "⎸ " }), isCursorOnLine ? (_jsxs(Text, { color: colors.dim, children: [line.slice(0, dCursorCol), _jsx(Text, { inverse: true, children: dCursorCol < line.length ? line[dCursorCol] : " " }), dCursorCol < line.length ? line.slice(dCursorCol + 1) : ""] })) : (_jsx(Text, { color: colors.dim, children: line }))] }, i));
810
- }), queued && (_jsx(Box, { marginLeft: 2, children: _jsx(Text, { color: colors.warning, children: "[queued]" }) }))] })) }));
811
- }
812
- // Slash command menu — two-level categorized via SlashMenu component
813
- if (menuMode) {
814
- // Prompt line varies by level
815
- let promptLine;
816
- if (menuFilter) {
817
- // Filter mode
818
- promptLine = (_jsxs(Box, { children: [_jsx(Text, { color: colors.brand, bold: true, children: "/ " }), _jsxs(Text, { children: [menuFilter, _jsx(Text, { inverse: true, children: " " })] })] }));
876
+ }
877
+ }
878
+ // Ignore unrecognized escape sequences
879
+ return;
880
+ }
881
+
882
+ // ── Standalone escape — clear input if non-empty ──
883
+ if (str === "\x1b") {
884
+ const {
885
+ value: value_0
886
+ } = inputRef.current;
887
+ if (value_0 || filesRef.current.length > 0) {
888
+ update("", 0);
889
+ setImages([]);
890
+ setFiles([]);
891
+ setPastedText(null);
819
892
  }
820
- else if (selectedCategory !== null) {
821
- // Level 2: show category name
822
- const catLabel = getCategoryLabel(selectedCategory);
823
- const catColor = getCategoryColor(selectedCategory);
824
- promptLine = (_jsxs(Box, { children: [_jsx(Text, { color: colors.brand, bold: true, children: "/ " }), _jsx(Text, { color: catColor, bold: true, children: catLabel }), _jsx(Text, { color: colors.tertiary, children: " > " }), _jsx(Text, { inverse: true, children: " " })] }));
893
+ return;
894
+ }
895
+
896
+ // ── Multi-character non-escape = paste without brackets ──
897
+ if (str.length > 1 && !str.startsWith("\x1b")) {
898
+ const codePoints_0 = [...str];
899
+ if (codePoints_0.length === 1) {
900
+ // Single code point (emoji etc.)
901
+ const {
902
+ value: val_11,
903
+ cursor: cur_7
904
+ } = inputRef.current;
905
+ update(val_11.slice(0, cur_7) + str + val_11.slice(cur_7), cur_7 + str.length);
906
+ } else {
907
+ processPaste(str);
825
908
  }
826
- else {
827
- // Level 1
828
- promptLine = (_jsxs(Box, { children: [_jsx(Text, { color: colors.brand, bold: true, children: "/ " }), _jsxs(Text, { children: [_jsx(Text, { inverse: true, children: " " }), _jsx(Text, { color: colors.dim, children: " type to filter" })] })] }));
909
+ return;
910
+ }
911
+
912
+ // ── Single printable character ──
913
+ if (str.length === 1 && str.charCodeAt(0) >= 0x20) {
914
+ const {
915
+ value: val_12,
916
+ cursor: cur_8
917
+ } = inputRef.current;
918
+
919
+ // Slash menu trigger
920
+ if (str === "/" && val_12 === "") {
921
+ setMenuModeSync(true);
922
+ setMenuFilterSync("");
923
+ setMenuIndexSync(0);
924
+ return;
829
925
  }
830
- // Hint line varies by level
831
- const hint = selectedCategory !== null && !menuFilter
832
- ? " \u2190 back esc dismiss"
833
- : " esc to dismiss";
834
- return (_jsxs(Box, { flexDirection: "column", children: [promptLine, _jsx(SlashMenu, { filter: menuFilter, selectedIndex: menuIndex, selectedCategory: selectedCategory }), _jsx(Text, { color: colors.quaternary, children: hint })] }));
926
+ update(val_12.slice(0, cur_8) + str + val_12.slice(cur_8), cur_8 + 1);
927
+ }
928
+ };
929
+ stdin.on("data", onData);
930
+ return () => {
931
+ stdin.off("data", onData);
932
+ };
933
+ }, [stdin, overlayActive]); // eslint-disable-line react-hooks/exhaustive-deps
934
+
935
+ // ── Render ──
936
+
937
+ // Disabled — dimmed but visible input (accept typing to queue)
938
+ if (disabled) {
939
+ // No input and not queued — render empty (eliminates dot line but keeps component mounted)
940
+ if (!displayValue.trim() && !queued) return /*#__PURE__*/_jsx(_Fragment, {});
941
+ const disabledLines = displayValue.split("\n");
942
+ const {
943
+ line: dCursorLine,
944
+ col: dCursorCol
945
+ } = displayValue ? getCursorLineCol(displayValue, displayCursor) : {
946
+ line: 0,
947
+ col: 0
948
+ };
949
+ return /*#__PURE__*/_jsx(Box, {
950
+ flexDirection: "column",
951
+ children: disabledLines.length <= 1 ? /*#__PURE__*/_jsxs(Box, {
952
+ children: [/*#__PURE__*/_jsx(Text, {
953
+ color: colors.quaternary,
954
+ children: "· "
955
+ }), !displayValue ? /*#__PURE__*/_jsx(Text, {
956
+ color: colors.quaternary,
957
+ wrap: "truncate",
958
+ children: queued ? "queued — will send when done" : " "
959
+ }) : /*#__PURE__*/_jsxs(Box, {
960
+ children: [/*#__PURE__*/_jsxs(Text, {
961
+ color: colors.dim,
962
+ children: [displayValue.slice(0, displayCursor), /*#__PURE__*/_jsx(Text, {
963
+ inverse: true,
964
+ children: displayCursor < displayValue.length ? displayValue[displayCursor] : " "
965
+ }), displayCursor < displayValue.length ? displayValue.slice(displayCursor + 1) : ""]
966
+ }), queued && /*#__PURE__*/_jsx(Text, {
967
+ color: colors.warning,
968
+ children: " [queued]"
969
+ })]
970
+ })]
971
+ }) :
972
+ /*#__PURE__*/
973
+ /* Multi-line disabled */
974
+ _jsxs(Box, {
975
+ flexDirection: "column",
976
+ children: [disabledLines.map((line_0, i_1) => {
977
+ const isCursorOnLine = i_1 === dCursorLine;
978
+ return /*#__PURE__*/_jsxs(Box, {
979
+ children: [/*#__PURE__*/_jsx(Text, {
980
+ color: colors.quaternary,
981
+ children: i_1 === 0 ? "· " : "⎸ "
982
+ }), isCursorOnLine ? /*#__PURE__*/_jsxs(Text, {
983
+ color: colors.dim,
984
+ children: [line_0.slice(0, dCursorCol), /*#__PURE__*/_jsx(Text, {
985
+ inverse: true,
986
+ children: dCursorCol < line_0.length ? line_0[dCursorCol] : " "
987
+ }), dCursorCol < line_0.length ? line_0.slice(dCursorCol + 1) : ""]
988
+ }) : /*#__PURE__*/_jsx(Text, {
989
+ color: colors.dim,
990
+ children: line_0
991
+ })]
992
+ }, i_1);
993
+ }), queued && /*#__PURE__*/_jsx(Box, {
994
+ marginLeft: 2,
995
+ children: /*#__PURE__*/_jsx(Text, {
996
+ color: colors.warning,
997
+ children: "[queued]"
998
+ })
999
+ })]
1000
+ })
1001
+ });
1002
+ }
1003
+
1004
+ // Slash command menu — two-level categorized via SlashMenu component
1005
+ if (menuMode) {
1006
+ // Prompt line varies by level
1007
+ let promptLine;
1008
+ if (menuFilter) {
1009
+ // Filter mode
1010
+ promptLine = /*#__PURE__*/_jsxs(Box, {
1011
+ children: [/*#__PURE__*/_jsx(Text, {
1012
+ color: colors.brand,
1013
+ bold: true,
1014
+ children: "/ "
1015
+ }), /*#__PURE__*/_jsxs(Text, {
1016
+ children: [menuFilter, /*#__PURE__*/_jsx(Text, {
1017
+ inverse: true,
1018
+ children: " "
1019
+ })]
1020
+ })]
1021
+ });
1022
+ } else if (selectedCategory !== null) {
1023
+ // Level 2: show category name
1024
+ const catLabel = getCategoryLabel(selectedCategory);
1025
+ const catColor = getCategoryColor(selectedCategory);
1026
+ promptLine = /*#__PURE__*/_jsxs(Box, {
1027
+ children: [/*#__PURE__*/_jsx(Text, {
1028
+ color: colors.brand,
1029
+ bold: true,
1030
+ children: "/ "
1031
+ }), /*#__PURE__*/_jsx(Text, {
1032
+ color: catColor,
1033
+ bold: true,
1034
+ children: catLabel
1035
+ }), /*#__PURE__*/_jsx(Text, {
1036
+ color: colors.tertiary,
1037
+ children: " > "
1038
+ }), /*#__PURE__*/_jsx(Text, {
1039
+ inverse: true,
1040
+ children: " "
1041
+ })]
1042
+ });
1043
+ } else {
1044
+ // Level 1
1045
+ promptLine = /*#__PURE__*/_jsxs(Box, {
1046
+ children: [/*#__PURE__*/_jsx(Text, {
1047
+ color: colors.brand,
1048
+ bold: true,
1049
+ children: "/ "
1050
+ }), /*#__PURE__*/_jsxs(Text, {
1051
+ children: [/*#__PURE__*/_jsx(Text, {
1052
+ inverse: true,
1053
+ children: " "
1054
+ }), /*#__PURE__*/_jsx(Text, {
1055
+ color: colors.dim,
1056
+ children: " type to filter"
1057
+ })]
1058
+ })]
1059
+ });
835
1060
  }
836
- // ── Normal input rendering ──
837
- const lines = displayValue.split("\n");
838
- const { line: cursorLine, col: cursorCol } = displayValue
839
- ? getCursorLineCol(displayValue, displayCursor)
840
- : { line: 0, col: 0 };
841
- // Truncate display for very long pastes
842
- const isTruncated = lines.length > MAX_DISPLAY_LINES;
843
- const visibleLines = isTruncated
844
- ? [...lines.slice(0, MAX_DISPLAY_LINES - 1), `… ${lines.length - MAX_DISPLAY_LINES + 1} more lines`]
845
- : lines;
846
- return (_jsxs(Box, { flexDirection: "column", children: [(images.length > 0 || files.length > 0 || contextItems.length > 0 || pastedText) && (_jsxs(Box, { children: [_jsx(Text, { children: " " }), contextItems.map((ctx, i) => (_jsxs(Text, { children: [_jsx(Text, { color: CONTEXT_COLORS[ctx.type] || "cyan", children: "[" }), _jsxs(Text, { color: colors.secondary, children: [ctx.type, ": ", ctx.title] }), _jsx(Text, { color: CONTEXT_COLORS[ctx.type] || "cyan", children: "]" }), _jsx(Text, { children: " " })] }, `ctx-${i}`))), images.map((img, i) => (_jsxs(Text, { children: [_jsx(Text, { color: colors.indigo, children: "[" }), _jsx(Text, { color: colors.secondary, children: img.name }), _jsx(Text, { color: colors.indigo, children: "]" }), _jsx(Text, { children: " " })] }, `img-${i}`))), files.map((f, i) => (_jsxs(Text, { children: [_jsx(Text, { color: colors.purple, children: "[" }), _jsx(Text, { color: colors.secondary, children: f.name }), _jsx(Text, { color: colors.purple, children: "]" }), _jsx(Text, { children: " " })] }, `file-${i}`))), pastedText && (_jsxs(Text, { children: [_jsx(Text, { color: colors.indigo, children: "[" }), _jsxs(Text, { color: colors.secondary, children: ["pasted ", pastedText.split("\n").length, " lines"] }), _jsx(Text, { color: colors.indigo, children: "]" })] }))] })), lines.length <= 1 ? (_jsxs(Box, { children: [_jsx(Text, { color: colors.brand, bold: true, children: "❯ " }), !displayValue ? (_jsxs(Text, { wrap: "truncate", children: [_jsx(Text, { inverse: true, children: " " }), _jsx(Text, { color: colors.dim, children: `Message ${agentName || "whale"}, or type / for commands` })] })) : (_jsxs(Text, { children: [displayValue.slice(0, displayCursor), _jsx(Text, { inverse: true, children: displayCursor < displayValue.length ? displayValue[displayCursor] : " " }), displayCursor < displayValue.length ? displayValue.slice(displayCursor + 1) : ""] }))] })) : (
847
- /* Multi-line input */
848
- _jsx(Box, { flexDirection: "column", children: visibleLines.map((line, i) => {
849
- const isRealLine = !isTruncated || i < MAX_DISPLAY_LINES - 1;
850
- const isCursorOnLine = isRealLine && i === cursorLine;
851
- return (_jsxs(Box, { children: [_jsx(Text, { color: colors.brand, bold: true, children: i === 0 ? "❯ " : "⎸ " }), isCursorOnLine ? (_jsxs(Text, { children: [line.slice(0, cursorCol), _jsx(Text, { inverse: true, children: cursorCol < line.length ? line[cursorCol] : " " }), cursorCol < line.length ? line.slice(cursorCol + 1) : ""] })) : (_jsx(Text, { color: isRealLine ? undefined : colors.tertiary, children: line }))] }, i));
852
- }) }))] }));
1061
+
1062
+ // Hint line varies by level
1063
+ const hint = selectedCategory !== null && !menuFilter ? " \u2190 back esc dismiss" : " esc to dismiss";
1064
+ return /*#__PURE__*/_jsxs(Box, {
1065
+ flexDirection: "column",
1066
+ children: [promptLine, /*#__PURE__*/_jsx(SlashMenu, {
1067
+ filter: menuFilter,
1068
+ selectedIndex: menuIndex,
1069
+ selectedCategory: selectedCategory
1070
+ }), /*#__PURE__*/_jsx(Text, {
1071
+ color: colors.quaternary,
1072
+ children: hint
1073
+ })]
1074
+ });
1075
+ }
1076
+
1077
+ // ── Normal input rendering ──
1078
+
1079
+ const lines_2 = displayValue.split("\n");
1080
+ const {
1081
+ line: cursorLine,
1082
+ col: cursorCol
1083
+ } = displayValue ? getCursorLineCol(displayValue, displayCursor) : {
1084
+ line: 0,
1085
+ col: 0
1086
+ };
1087
+
1088
+ // Truncate display for very long pastes
1089
+ const isTruncated = lines_2.length > MAX_DISPLAY_LINES;
1090
+ const visibleLines = isTruncated ? [...lines_2.slice(0, MAX_DISPLAY_LINES - 1), `… ${lines_2.length - MAX_DISPLAY_LINES + 1} more lines`] : lines_2;
1091
+ return /*#__PURE__*/_jsxs(Box, {
1092
+ flexDirection: "column",
1093
+ children: [(images.length > 0 || files.length > 0 || contextItems.length > 0 || pastedText) && /*#__PURE__*/_jsxs(Box, {
1094
+ children: [/*#__PURE__*/_jsx(Text, {
1095
+ children: " "
1096
+ }), contextItems.map((ctx_0, i_2) => /*#__PURE__*/_jsxs(Text, {
1097
+ children: [/*#__PURE__*/_jsx(Text, {
1098
+ color: CONTEXT_COLORS[ctx_0.type] || "cyan",
1099
+ children: "["
1100
+ }), /*#__PURE__*/_jsxs(Text, {
1101
+ color: colors.secondary,
1102
+ children: [ctx_0.type, ": ", ctx_0.title]
1103
+ }), /*#__PURE__*/_jsx(Text, {
1104
+ color: CONTEXT_COLORS[ctx_0.type] || "cyan",
1105
+ children: "]"
1106
+ }), /*#__PURE__*/_jsx(Text, {
1107
+ children: " "
1108
+ })]
1109
+ }, `ctx-${i_2}`)), images.map((img_0, i_3) => /*#__PURE__*/_jsxs(Text, {
1110
+ children: [/*#__PURE__*/_jsx(Text, {
1111
+ color: colors.indigo,
1112
+ children: "["
1113
+ }), /*#__PURE__*/_jsx(Text, {
1114
+ color: colors.secondary,
1115
+ children: img_0.name
1116
+ }), /*#__PURE__*/_jsx(Text, {
1117
+ color: colors.indigo,
1118
+ children: "]"
1119
+ }), /*#__PURE__*/_jsx(Text, {
1120
+ children: " "
1121
+ })]
1122
+ }, `img-${i_3}`)), files.map((f_1, i_4) => /*#__PURE__*/_jsxs(Text, {
1123
+ children: [/*#__PURE__*/_jsx(Text, {
1124
+ color: colors.purple,
1125
+ children: "["
1126
+ }), /*#__PURE__*/_jsx(Text, {
1127
+ color: colors.secondary,
1128
+ children: f_1.name
1129
+ }), /*#__PURE__*/_jsx(Text, {
1130
+ color: colors.purple,
1131
+ children: "]"
1132
+ }), /*#__PURE__*/_jsx(Text, {
1133
+ children: " "
1134
+ })]
1135
+ }, `file-${i_4}`)), pastedText && /*#__PURE__*/_jsxs(Text, {
1136
+ children: [/*#__PURE__*/_jsx(Text, {
1137
+ color: colors.indigo,
1138
+ children: "["
1139
+ }), /*#__PURE__*/_jsxs(Text, {
1140
+ color: colors.secondary,
1141
+ children: ["pasted ", pastedText.split("\n").length, " lines"]
1142
+ }), /*#__PURE__*/_jsx(Text, {
1143
+ color: colors.indigo,
1144
+ children: "]"
1145
+ })]
1146
+ })]
1147
+ }), lines_2.length <= 1 ? /*#__PURE__*/_jsxs(Box, {
1148
+ children: [/*#__PURE__*/_jsx(Text, {
1149
+ color: colors.brand,
1150
+ bold: true,
1151
+ children: "❯ "
1152
+ }), !displayValue ? /*#__PURE__*/_jsxs(Text, {
1153
+ wrap: "truncate",
1154
+ children: [/*#__PURE__*/_jsx(Text, {
1155
+ inverse: true,
1156
+ children: " "
1157
+ }), /*#__PURE__*/_jsx(Text, {
1158
+ color: colors.dim,
1159
+ children: `Message ${agentName || "whale"}, or type / for commands`
1160
+ })]
1161
+ }) : /*#__PURE__*/_jsxs(Text, {
1162
+ children: [displayValue.slice(0, displayCursor), /*#__PURE__*/_jsx(Text, {
1163
+ inverse: true,
1164
+ children: displayCursor < displayValue.length ? displayValue[displayCursor] : " "
1165
+ }), displayCursor < displayValue.length ? displayValue.slice(displayCursor + 1) : ""]
1166
+ })]
1167
+ }) :
1168
+ /*#__PURE__*/
1169
+ /* Multi-line input */
1170
+ _jsx(Box, {
1171
+ flexDirection: "column",
1172
+ children: visibleLines.map((line_1, i_5) => {
1173
+ const isRealLine = !isTruncated || i_5 < MAX_DISPLAY_LINES - 1;
1174
+ const isCursorOnLine_0 = isRealLine && i_5 === cursorLine;
1175
+ return /*#__PURE__*/_jsxs(Box, {
1176
+ children: [/*#__PURE__*/_jsx(Text, {
1177
+ color: colors.brand,
1178
+ bold: true,
1179
+ children: i_5 === 0 ? "❯ " : "⎸ "
1180
+ }), isCursorOnLine_0 ? /*#__PURE__*/_jsxs(Text, {
1181
+ children: [line_1.slice(0, cursorCol), /*#__PURE__*/_jsx(Text, {
1182
+ inverse: true,
1183
+ children: cursorCol < line_1.length ? line_1[cursorCol] : " "
1184
+ }), cursorCol < line_1.length ? line_1.slice(cursorCol + 1) : ""]
1185
+ }) : /*#__PURE__*/_jsx(Text, {
1186
+ color: isRealLine ? undefined : colors.tertiary,
1187
+ children: line_1
1188
+ })]
1189
+ }, i_5);
1190
+ })
1191
+ })]
1192
+ });
853
1193
  }
1194
+ //# sourceMappingURL=ChatInput.js.map