@ebowwa/coder 0.7.63 → 0.7.64

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 (341) hide show
  1. package/dist/core/__tests__/permissions.test.d.ts +12 -0
  2. package/dist/core/__tests__/permissions.test.d.ts.map +1 -0
  3. package/dist/core/__tests__/permissions.test.js +851 -0
  4. package/dist/core/agent-loop/__tests__/compaction.test.d.ts +5 -0
  5. package/dist/core/agent-loop/__tests__/compaction.test.d.ts.map +1 -0
  6. package/dist/core/agent-loop/__tests__/compaction.test.js +209 -0
  7. package/dist/core/agent-loop/__tests__/formatters.test.d.ts +5 -0
  8. package/dist/core/agent-loop/__tests__/formatters.test.d.ts.map +1 -0
  9. package/dist/core/agent-loop/__tests__/formatters.test.js +195 -0
  10. package/dist/core/agent-loop/__tests__/index.test.d.ts +5 -0
  11. package/dist/core/agent-loop/__tests__/index.test.d.ts.map +1 -0
  12. package/dist/core/agent-loop/__tests__/index.test.js +121 -0
  13. package/dist/core/agent-loop/__tests__/loop-state.test.d.ts +5 -0
  14. package/dist/core/agent-loop/__tests__/loop-state.test.d.ts.map +1 -0
  15. package/dist/core/agent-loop/__tests__/loop-state.test.js +340 -0
  16. package/dist/core/agent-loop/__tests__/message-builder.test.d.ts +5 -0
  17. package/dist/core/agent-loop/__tests__/message-builder.test.d.ts.map +1 -0
  18. package/dist/core/agent-loop/__tests__/message-builder.test.js +178 -0
  19. package/dist/core/agent-loop/__tests__/tool-executor.test.d.ts +5 -0
  20. package/dist/core/agent-loop/__tests__/tool-executor.test.d.ts.map +1 -0
  21. package/dist/core/agent-loop/__tests__/tool-executor.test.js +331 -0
  22. package/dist/core/agent-loop/compaction.d.ts +39 -0
  23. package/dist/core/agent-loop/compaction.d.ts.map +1 -0
  24. package/dist/core/agent-loop/compaction.js +51 -0
  25. package/dist/core/agent-loop/formatters.d.ts +21 -0
  26. package/dist/core/agent-loop/formatters.d.ts.map +1 -0
  27. package/dist/core/agent-loop/formatters.js +42 -0
  28. package/dist/core/agent-loop/index.d.ts +25 -0
  29. package/dist/core/agent-loop/index.d.ts.map +1 -0
  30. package/dist/core/agent-loop/index.js +83 -0
  31. package/dist/core/agent-loop/loop-state.d.ts +74 -0
  32. package/dist/core/agent-loop/loop-state.d.ts.map +1 -0
  33. package/dist/core/agent-loop/loop-state.js +147 -0
  34. package/dist/core/agent-loop/message-builder.d.ts +13 -0
  35. package/dist/core/agent-loop/message-builder.d.ts.map +1 -0
  36. package/dist/core/agent-loop/message-builder.js +49 -0
  37. package/dist/core/agent-loop/tool-executor.d.ts +23 -0
  38. package/dist/core/agent-loop/tool-executor.d.ts.map +1 -0
  39. package/dist/core/agent-loop/tool-executor.js +152 -0
  40. package/dist/core/agent-loop/turn-executor.d.ts +57 -0
  41. package/dist/core/agent-loop/turn-executor.d.ts.map +1 -0
  42. package/dist/core/agent-loop/turn-executor.js +124 -0
  43. package/dist/core/agent-loop/types.d.ts +141 -0
  44. package/dist/core/agent-loop/types.d.ts.map +1 -0
  45. package/dist/core/agent-loop/types.js +4 -0
  46. package/dist/core/agent-loop.d.ts +17 -0
  47. package/dist/core/agent-loop.d.ts.map +1 -0
  48. package/dist/core/agent-loop.js +16 -0
  49. package/dist/core/api-client-impl.d.ts +62 -0
  50. package/dist/core/api-client-impl.d.ts.map +1 -0
  51. package/dist/core/api-client-impl.js +479 -0
  52. package/dist/core/api-client.d.ts +6 -0
  53. package/dist/core/api-client.d.ts.map +1 -0
  54. package/dist/core/api-client.js +5 -0
  55. package/dist/core/checkpoints.d.ts +128 -0
  56. package/dist/core/checkpoints.d.ts.map +1 -0
  57. package/dist/core/checkpoints.js +438 -0
  58. package/dist/core/claude-md.d.ts +71 -0
  59. package/dist/core/claude-md.d.ts.map +1 -0
  60. package/dist/core/claude-md.js +198 -0
  61. package/dist/core/cognitive-security/hooks.d.ts +138 -0
  62. package/dist/core/cognitive-security/hooks.d.ts.map +1 -0
  63. package/dist/core/cognitive-security/hooks.js +389 -0
  64. package/dist/core/cognitive-security/index.d.ts +751 -0
  65. package/dist/core/cognitive-security/index.d.ts.map +1 -0
  66. package/dist/core/cognitive-security/index.js +1123 -0
  67. package/dist/core/cognitive-security/middleware.d.ts +136 -0
  68. package/dist/core/cognitive-security/middleware.d.ts.map +1 -0
  69. package/dist/core/cognitive-security/middleware.js +376 -0
  70. package/dist/core/config-loader.d.ts +127 -0
  71. package/dist/core/config-loader.d.ts.map +1 -0
  72. package/dist/core/config-loader.js +219 -0
  73. package/dist/core/context-compaction.d.ts +87 -0
  74. package/dist/core/context-compaction.d.ts.map +1 -0
  75. package/dist/core/context-compaction.js +428 -0
  76. package/dist/core/git-status.d.ts +25 -0
  77. package/dist/core/git-status.d.ts.map +1 -0
  78. package/dist/core/git-status.js +204 -0
  79. package/dist/core/image.d.ts +69 -0
  80. package/dist/core/image.d.ts.map +1 -0
  81. package/dist/core/image.js +290 -0
  82. package/dist/core/image.test.d.ts +2 -0
  83. package/dist/core/image.test.d.ts.map +1 -0
  84. package/dist/core/image.test.js +149 -0
  85. package/dist/core/models.d.ts +123 -0
  86. package/dist/core/models.d.ts.map +1 -0
  87. package/dist/core/models.js +325 -0
  88. package/dist/core/permissions.d.ts +81 -0
  89. package/dist/core/permissions.d.ts.map +1 -0
  90. package/dist/core/permissions.js +327 -0
  91. package/dist/core/retry.d.ts +25 -0
  92. package/dist/core/retry.d.ts.map +1 -0
  93. package/dist/core/retry.js +121 -0
  94. package/dist/core/session-store.d.ts +9 -0
  95. package/dist/core/session-store.d.ts.map +1 -0
  96. package/dist/core/session-store.js +10 -0
  97. package/dist/core/sessions/export.d.ts +47 -0
  98. package/dist/core/sessions/export.d.ts.map +1 -0
  99. package/dist/core/sessions/export.js +256 -0
  100. package/dist/core/sessions/index.d.ts +132 -0
  101. package/dist/core/sessions/index.d.ts.map +1 -0
  102. package/dist/core/sessions/index.js +442 -0
  103. package/dist/core/sessions/metadata.d.ts +77 -0
  104. package/dist/core/sessions/metadata.d.ts.map +1 -0
  105. package/dist/core/sessions/metadata.js +233 -0
  106. package/dist/core/sessions/persistence.d.ts +72 -0
  107. package/dist/core/sessions/persistence.d.ts.map +1 -0
  108. package/dist/core/sessions/persistence.js +201 -0
  109. package/dist/core/sessions/types.d.ts +110 -0
  110. package/dist/core/sessions/types.d.ts.map +1 -0
  111. package/dist/core/sessions/types.js +4 -0
  112. package/dist/core/stream-highlighter.d.ts +18 -0
  113. package/dist/core/stream-highlighter.d.ts.map +1 -0
  114. package/dist/core/stream-highlighter.js +916 -0
  115. package/dist/core/system-reminders.d.ts +89 -0
  116. package/dist/core/system-reminders.d.ts.map +1 -0
  117. package/dist/core/system-reminders.js +285 -0
  118. package/dist/ecosystem/hooks/__tests__/index.test.d.ts +5 -0
  119. package/dist/ecosystem/hooks/__tests__/index.test.d.ts.map +1 -0
  120. package/dist/ecosystem/hooks/__tests__/index.test.js +458 -0
  121. package/dist/ecosystem/hooks/index.d.ts +59 -0
  122. package/dist/ecosystem/hooks/index.d.ts.map +1 -0
  123. package/dist/ecosystem/hooks/index.js +294 -0
  124. package/dist/ecosystem/hooks/prompt-evaluator.d.ts +32 -0
  125. package/dist/ecosystem/hooks/prompt-evaluator.d.ts.map +1 -0
  126. package/dist/ecosystem/hooks/prompt-evaluator.js +229 -0
  127. package/dist/ecosystem/skills/index.d.ts +55 -0
  128. package/dist/ecosystem/skills/index.d.ts.map +1 -0
  129. package/dist/ecosystem/skills/index.js +258 -0
  130. package/dist/ecosystem/tools/__tests__/index.test.d.ts +7 -0
  131. package/dist/ecosystem/tools/__tests__/index.test.d.ts.map +1 -0
  132. package/dist/ecosystem/tools/__tests__/index.test.js +856 -0
  133. package/dist/ecosystem/tools/index.d.ts +24 -0
  134. package/dist/ecosystem/tools/index.d.ts.map +1 -0
  135. package/dist/ecosystem/tools/index.js +1709 -0
  136. package/dist/index.d.ts +24 -0
  137. package/dist/index.d.ts.map +1 -0
  138. package/dist/index.js +32 -52192
  139. package/dist/interfaces/mcp/client.d.ts +40 -0
  140. package/dist/interfaces/mcp/client.d.ts.map +1 -0
  141. package/dist/interfaces/mcp/client.js +309 -0
  142. package/dist/interfaces/ui/index.d.ts +36 -0
  143. package/dist/interfaces/ui/index.d.ts.map +1 -0
  144. package/dist/interfaces/ui/index.js +61 -0
  145. package/dist/interfaces/ui/spinner.d.ts +140 -0
  146. package/dist/interfaces/ui/spinner.d.ts.map +1 -0
  147. package/dist/interfaces/ui/spinner.js +342 -0
  148. package/dist/interfaces/ui/terminal/cli/index.d.ts +12 -0
  149. package/dist/interfaces/ui/terminal/cli/index.d.ts.map +1 -0
  150. package/dist/interfaces/ui/terminal/cli/index.js +159 -52768
  151. package/dist/interfaces/ui/terminal/shared/args.d.ts +39 -0
  152. package/dist/interfaces/ui/terminal/shared/args.d.ts.map +1 -0
  153. package/dist/interfaces/ui/terminal/shared/args.js +176 -0
  154. package/dist/interfaces/ui/terminal/shared/index.d.ts +11 -0
  155. package/dist/interfaces/ui/terminal/shared/index.d.ts.map +1 -0
  156. package/dist/interfaces/ui/terminal/shared/index.js +16 -0
  157. package/dist/interfaces/ui/terminal/shared/loading-state.d.ts +124 -0
  158. package/dist/interfaces/ui/terminal/shared/loading-state.d.ts.map +1 -0
  159. package/dist/interfaces/ui/terminal/shared/loading-state.js +246 -0
  160. package/dist/interfaces/ui/terminal/shared/query.d.ts +22 -0
  161. package/dist/interfaces/ui/terminal/shared/query.d.ts.map +1 -0
  162. package/dist/interfaces/ui/terminal/shared/query.js +100 -0
  163. package/dist/interfaces/ui/terminal/shared/setup.d.ts +33 -0
  164. package/dist/interfaces/ui/terminal/shared/setup.d.ts.map +1 -0
  165. package/dist/interfaces/ui/terminal/shared/setup.js +226 -0
  166. package/dist/interfaces/ui/terminal/shared/status-line.d.ts +117 -0
  167. package/dist/interfaces/ui/terminal/shared/status-line.d.ts.map +1 -0
  168. package/dist/interfaces/ui/terminal/shared/status-line.js +267 -0
  169. package/dist/interfaces/ui/terminal/shared/system-prompt.d.ts +38 -0
  170. package/dist/interfaces/ui/terminal/shared/system-prompt.d.ts.map +1 -0
  171. package/dist/interfaces/ui/terminal/shared/system-prompt.js +102 -0
  172. package/dist/interfaces/ui/terminal/tui/HelpPanel.d.ts +39 -0
  173. package/dist/interfaces/ui/terminal/tui/HelpPanel.d.ts.map +1 -0
  174. package/dist/interfaces/ui/terminal/tui/HelpPanel.js +215 -0
  175. package/dist/interfaces/ui/terminal/tui/InputContext.d.ts +91 -0
  176. package/dist/interfaces/ui/terminal/tui/InputContext.d.ts.map +1 -0
  177. package/dist/interfaces/ui/terminal/tui/InputContext.js +154 -0
  178. package/dist/interfaces/ui/terminal/tui/InputField.d.ts +18 -0
  179. package/dist/interfaces/ui/terminal/tui/InputField.d.ts.map +1 -0
  180. package/dist/interfaces/ui/terminal/tui/InputField.js +41 -0
  181. package/dist/interfaces/ui/terminal/tui/InteractiveTUI.d.ts +16 -0
  182. package/dist/interfaces/ui/terminal/tui/InteractiveTUI.d.ts.map +1 -0
  183. package/dist/interfaces/ui/terminal/tui/InteractiveTUI.js +451 -0
  184. package/dist/interfaces/ui/terminal/tui/MessageArea.d.ts +10 -0
  185. package/dist/interfaces/ui/terminal/tui/MessageArea.d.ts.map +1 -0
  186. package/dist/interfaces/ui/terminal/tui/MessageArea.js +91 -0
  187. package/dist/interfaces/ui/terminal/tui/MessageStore.d.ts +48 -0
  188. package/dist/interfaces/ui/terminal/tui/MessageStore.d.ts.map +1 -0
  189. package/dist/interfaces/ui/terminal/tui/MessageStore.js +151 -0
  190. package/dist/interfaces/ui/terminal/tui/StatusBar.d.ts +9 -0
  191. package/dist/interfaces/ui/terminal/tui/StatusBar.d.ts.map +1 -0
  192. package/dist/interfaces/ui/terminal/tui/StatusBar.js +36 -0
  193. package/dist/interfaces/ui/terminal/tui/commands.d.ts +21 -0
  194. package/dist/interfaces/ui/terminal/tui/commands.d.ts.map +1 -0
  195. package/dist/interfaces/ui/terminal/tui/commands.js +359 -0
  196. package/dist/interfaces/ui/terminal/tui/components/InteractiveElements.d.ts +115 -0
  197. package/dist/interfaces/ui/terminal/tui/components/InteractiveElements.d.ts.map +1 -0
  198. package/dist/interfaces/ui/terminal/tui/components/InteractiveElements.js +306 -0
  199. package/dist/interfaces/ui/terminal/tui/components/MultilineInput.d.ts +92 -0
  200. package/dist/interfaces/ui/terminal/tui/components/MultilineInput.d.ts.map +1 -0
  201. package/dist/interfaces/ui/terminal/tui/components/MultilineInput.js +399 -0
  202. package/dist/interfaces/ui/terminal/tui/components/PaneManager.d.ts +59 -0
  203. package/dist/interfaces/ui/terminal/tui/components/PaneManager.d.ts.map +1 -0
  204. package/dist/interfaces/ui/terminal/tui/components/PaneManager.js +139 -0
  205. package/dist/interfaces/ui/terminal/tui/components/Sidebar.d.ts +68 -0
  206. package/dist/interfaces/ui/terminal/tui/components/Sidebar.d.ts.map +1 -0
  207. package/dist/interfaces/ui/terminal/tui/components/Sidebar.js +340 -0
  208. package/dist/interfaces/ui/terminal/tui/components/index.d.ts +23 -0
  209. package/dist/interfaces/ui/terminal/tui/components/index.d.ts.map +1 -0
  210. package/dist/interfaces/ui/terminal/tui/components/index.js +51 -0
  211. package/dist/interfaces/ui/terminal/tui/console.d.ts +20 -0
  212. package/dist/interfaces/ui/terminal/tui/console.d.ts.map +1 -0
  213. package/dist/interfaces/ui/terminal/tui/console.js +46 -0
  214. package/dist/interfaces/ui/terminal/tui/index.d.ts +20 -0
  215. package/dist/interfaces/ui/terminal/tui/index.d.ts.map +1 -0
  216. package/dist/interfaces/ui/terminal/tui/index.js +28 -0
  217. package/dist/interfaces/ui/terminal/tui/run.d.ts +13 -0
  218. package/dist/interfaces/ui/terminal/tui/run.d.ts.map +1 -0
  219. package/dist/interfaces/ui/terminal/tui/run.js +31 -0
  220. package/dist/interfaces/ui/terminal/tui/spinner.d.ts +44 -0
  221. package/dist/interfaces/ui/terminal/tui/spinner.d.ts.map +1 -0
  222. package/dist/interfaces/ui/terminal/tui/spinner.js +59 -0
  223. package/dist/interfaces/ui/terminal/tui/tui-app.d.ts +39 -0
  224. package/dist/interfaces/ui/terminal/tui/tui-app.d.ts.map +1 -0
  225. package/dist/interfaces/ui/terminal/tui/tui-app.js +198 -0
  226. package/dist/interfaces/ui/terminal/tui/tui-footer.d.ts +167 -0
  227. package/dist/interfaces/ui/terminal/tui/tui-footer.d.ts.map +1 -0
  228. package/dist/interfaces/ui/terminal/tui/tui-footer.js +330 -0
  229. package/dist/interfaces/ui/terminal/tui/types.d.ts +165 -0
  230. package/dist/interfaces/ui/terminal/tui/types.d.ts.map +1 -0
  231. package/dist/interfaces/ui/terminal/tui/types.js +5 -0
  232. package/dist/interfaces/ui/terminal/tui/useInputHandler.d.ts +23 -0
  233. package/dist/interfaces/ui/terminal/tui/useInputHandler.d.ts.map +1 -0
  234. package/dist/interfaces/ui/terminal/tui/useInputHandler.js +72 -0
  235. package/dist/interfaces/ui/terminal/tui/useNativeInput.d.ts +90 -0
  236. package/dist/interfaces/ui/terminal/tui/useNativeInput.d.ts.map +1 -0
  237. package/dist/interfaces/ui/terminal/tui/useNativeInput.js +188 -0
  238. package/dist/native/index.d.ts +480 -0
  239. package/dist/native/index.d.ts.map +1 -0
  240. package/dist/native/index.js +1625 -0
  241. package/dist/teammates/index.d.ts +161 -0
  242. package/dist/teammates/index.d.ts.map +1 -0
  243. package/dist/teammates/index.js +827 -0
  244. package/dist/types/index.d.ts +482 -0
  245. package/dist/types/index.d.ts.map +1 -0
  246. package/dist/types/index.js +52 -0
  247. package/package.json +4 -2
  248. package/packages/src/core/__tests__/permissions.test.ts +1091 -0
  249. package/packages/src/core/agent-loop/__tests__/compaction.test.ts +280 -0
  250. package/packages/src/core/agent-loop/__tests__/formatters.test.ts +234 -0
  251. package/packages/src/core/agent-loop/__tests__/index.test.ts +162 -0
  252. package/packages/src/core/agent-loop/__tests__/loop-state.test.ts +413 -0
  253. package/packages/src/core/agent-loop/__tests__/message-builder.test.ts +229 -0
  254. package/packages/src/core/agent-loop/__tests__/tool-executor.test.ts +457 -0
  255. package/packages/src/core/agent-loop/compaction.ts +88 -0
  256. package/packages/src/core/agent-loop/formatters.ts +50 -0
  257. package/packages/src/core/agent-loop/index.ts +135 -0
  258. package/packages/src/core/agent-loop/loop-state.ts +187 -0
  259. package/packages/src/core/agent-loop/message-builder.ts +62 -0
  260. package/packages/src/core/agent-loop/tool-executor.ts +211 -0
  261. package/packages/src/core/agent-loop/turn-executor.ts +222 -0
  262. package/packages/src/core/agent-loop/types.ts +148 -0
  263. package/packages/src/core/agent-loop.ts +18 -0
  264. package/packages/src/core/api-client-impl.ts +619 -0
  265. package/packages/src/core/api-client.ts +6 -0
  266. package/packages/src/core/checkpoints.ts +606 -0
  267. package/packages/src/core/claude-md.ts +272 -0
  268. package/packages/src/core/cognitive-security/hooks.ts +590 -0
  269. package/packages/src/core/cognitive-security/index.ts +2041 -0
  270. package/packages/src/core/cognitive-security/middleware.ts +536 -0
  271. package/packages/src/core/config-loader.ts +324 -0
  272. package/packages/src/core/context-compaction.ts +578 -0
  273. package/packages/src/core/git-status.ts +262 -0
  274. package/packages/src/core/image.test.ts +180 -0
  275. package/packages/src/core/image.ts +350 -0
  276. package/packages/src/core/lmdb.db +0 -0
  277. package/packages/src/core/lmdb.db-lock +0 -0
  278. package/packages/src/core/models.ts +430 -0
  279. package/packages/src/core/normalizers/todo +4 -0
  280. package/packages/src/core/permissions.ts +431 -0
  281. package/packages/src/core/retry.ts +170 -0
  282. package/packages/src/core/session-store.ts +36 -0
  283. package/packages/src/core/sessions/export.ts +329 -0
  284. package/packages/src/core/sessions/index.ts +587 -0
  285. package/packages/src/core/sessions/metadata.ts +309 -0
  286. package/packages/src/core/sessions/persistence.ts +244 -0
  287. package/packages/src/core/sessions/types.ts +169 -0
  288. package/packages/src/core/stream-highlighter.ts +1123 -0
  289. package/packages/src/core/system-reminders.ts +402 -0
  290. package/packages/src/core/todo +8 -0
  291. package/packages/src/ecosystem/hooks/__tests__/index.test.ts +561 -0
  292. package/packages/src/ecosystem/hooks/index.ts +341 -0
  293. package/packages/src/ecosystem/hooks/prompt-evaluator.ts +300 -0
  294. package/packages/src/ecosystem/skills/index.ts +295 -0
  295. package/packages/src/ecosystem/tools/__tests__/index.test.ts +1335 -0
  296. package/packages/src/ecosystem/tools/index.ts +1877 -0
  297. package/packages/src/index.ts +120 -0
  298. package/packages/src/interfaces/mcp/client.ts +389 -0
  299. package/packages/src/interfaces/ui/Screenshot 2026-03-02 at 9.23.10/342/200/257PM.png +0 -0
  300. package/packages/src/interfaces/ui/Screenshot 2026-03-03 at 10.55.11/342/200/257AM.png +0 -0
  301. package/packages/src/interfaces/ui/index.ts +161 -0
  302. package/packages/src/interfaces/ui/lmdb.db +0 -0
  303. package/packages/src/interfaces/ui/lmdb.db-lock +0 -0
  304. package/packages/src/interfaces/ui/spinner.ts +451 -0
  305. package/packages/src/interfaces/ui/terminal/cli/index.ts +228 -0
  306. package/packages/src/interfaces/ui/terminal/lmdb.db +0 -0
  307. package/packages/src/interfaces/ui/terminal/lmdb.db-lock +0 -0
  308. package/packages/src/interfaces/ui/terminal/shared/args.ts +222 -0
  309. package/packages/src/interfaces/ui/terminal/shared/index.ts +71 -0
  310. package/packages/src/interfaces/ui/terminal/shared/loading-state.ts +322 -0
  311. package/packages/src/interfaces/ui/terminal/shared/query.ts +146 -0
  312. package/packages/src/interfaces/ui/terminal/shared/setup.ts +295 -0
  313. package/packages/src/interfaces/ui/terminal/shared/status-line.ts +358 -0
  314. package/packages/src/interfaces/ui/terminal/shared/system-prompt.ts +146 -0
  315. package/packages/src/interfaces/ui/terminal/tui/HelpPanel.tsx +262 -0
  316. package/packages/src/interfaces/ui/terminal/tui/InputContext.tsx +232 -0
  317. package/packages/src/interfaces/ui/terminal/tui/InputField.tsx +62 -0
  318. package/packages/src/interfaces/ui/terminal/tui/InteractiveTUI.tsx +537 -0
  319. package/packages/src/interfaces/ui/terminal/tui/MessageArea.tsx +107 -0
  320. package/packages/src/interfaces/ui/terminal/tui/MessageStore.tsx +240 -0
  321. package/packages/src/interfaces/ui/terminal/tui/StatusBar.tsx +54 -0
  322. package/packages/src/interfaces/ui/terminal/tui/commands.ts +438 -0
  323. package/packages/src/interfaces/ui/terminal/tui/components/InteractiveElements.tsx +584 -0
  324. package/packages/src/interfaces/ui/terminal/tui/components/MultilineInput.tsx +614 -0
  325. package/packages/src/interfaces/ui/terminal/tui/components/PaneManager.tsx +333 -0
  326. package/packages/src/interfaces/ui/terminal/tui/components/Sidebar.tsx +604 -0
  327. package/packages/src/interfaces/ui/terminal/tui/components/index.ts +118 -0
  328. package/packages/src/interfaces/ui/terminal/tui/console.ts +49 -0
  329. package/packages/src/interfaces/ui/terminal/tui/index.ts +90 -0
  330. package/packages/src/interfaces/ui/terminal/tui/run.tsx +42 -0
  331. package/packages/src/interfaces/ui/terminal/tui/spinner.ts +69 -0
  332. package/packages/src/interfaces/ui/terminal/tui/tui-app.tsx +390 -0
  333. package/packages/src/interfaces/ui/terminal/tui/tui-footer.ts +422 -0
  334. package/packages/src/interfaces/ui/terminal/tui/types.ts +186 -0
  335. package/packages/src/interfaces/ui/terminal/tui/useInputHandler.ts +104 -0
  336. package/packages/src/interfaces/ui/terminal/tui/useNativeInput.ts +239 -0
  337. package/packages/src/lmdb.db +0 -0
  338. package/packages/src/lmdb.db-lock +0 -0
  339. package/packages/src/native/index.ts +2345 -0
  340. package/packages/src/teammates/index.ts +982 -0
  341. package/packages/src/types/index.ts +722 -0
@@ -0,0 +1,39 @@
1
+ /**
2
+ * CLI Argument Parsing
3
+ * Shared between CLI and TUI modes
4
+ */
5
+ import type { PermissionMode, ClaudeModel, EffortLevel } from "../../../../types/index.js";
6
+ export interface CLIArgs {
7
+ model: ClaudeModel;
8
+ permissionMode: PermissionMode;
9
+ maxTokens: number;
10
+ systemPrompt?: string;
11
+ appendSystemPrompt?: string;
12
+ configFile?: string;
13
+ mcpConfig?: string;
14
+ resumeSession?: string;
15
+ listSessions?: boolean;
16
+ teammateMode?: boolean;
17
+ agentId?: string;
18
+ agentName?: string;
19
+ teamName?: string;
20
+ agentColor?: string;
21
+ /** Enable extended thinking with effort level */
22
+ extendedThinking?: boolean;
23
+ /** Effort level: low, medium, high, max */
24
+ effort?: EffortLevel;
25
+ /** Enable interleaved thinking (default: true) */
26
+ interleaved?: boolean;
27
+ query?: string;
28
+ /** Disable progress indicators */
29
+ noProgress?: boolean;
30
+ /** Show version and exit */
31
+ showVersion?: boolean;
32
+ /** Enable debug output */
33
+ debug?: boolean;
34
+ }
35
+ export declare function parseArgs(): CLIArgs;
36
+ export declare function printHelp(): void;
37
+ export declare function getApiKey(): string | null;
38
+ export declare function requireApiKey(): string;
39
+ //# sourceMappingURL=args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../../../../packages/src/interfaces/ui/terminal/shared/args.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAQ3F,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,WAAW,CAAC;IACnB,cAAc,EAAE,cAAc,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,2CAA2C;IAC3C,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,kDAAkD;IAClD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,0BAA0B;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAMD,wBAAgB,SAAS,IAAI,OAAO,CA6FnC;AAMD,wBAAgB,SAAS,IAAI,IAAI,CAsDhC;AAMD,wBAAgB,SAAS,IAAI,MAAM,GAAG,IAAI,CAMzC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAOtC"}
@@ -0,0 +1,176 @@
1
+ /**
2
+ * CLI Argument Parsing
3
+ * Shared between CLI and TUI modes
4
+ */
5
+ import { VERSION } from "./status-line.js";
6
+ import { DEFAULT_MODEL, resolveModelAlias } from "../../../../core/models.js";
7
+ // ============================================
8
+ // ARGUMENT PARSING
9
+ // ============================================
10
+ export function parseArgs() {
11
+ const args = process.argv.slice(2);
12
+ const result = {
13
+ // Read from environment variables (can be configured via Doppler)
14
+ model: process.env.ANTHROPIC_MODEL || process.env.ANTHROPIC_DEFAULT_SONNET_MODEL || DEFAULT_MODEL,
15
+ permissionMode: (process.env.CODER_PERMISSION_MODE || "default"),
16
+ maxTokens: parseInt(process.env.ANTHROPIC_MAX_TOKENS || process.env.CODER_MAX_TOKENS || "4096"),
17
+ };
18
+ for (let i = 0; i < args.length; i++) {
19
+ const arg = args[i];
20
+ switch (arg) {
21
+ case "--model":
22
+ case "-m":
23
+ result.model = resolveModelAlias(args[++i] ?? DEFAULT_MODEL);
24
+ break;
25
+ case "--permission-mode":
26
+ case "-p":
27
+ result.permissionMode = (args[++i] ?? "default");
28
+ break;
29
+ case "--max-tokens":
30
+ result.maxTokens = parseInt(args[++i] ?? "4096", 10);
31
+ break;
32
+ case "--system-prompt":
33
+ result.systemPrompt = args[++i];
34
+ break;
35
+ case "--append-system-prompt":
36
+ result.appendSystemPrompt = args[++i];
37
+ break;
38
+ case "--config":
39
+ result.configFile = args[++i];
40
+ break;
41
+ case "--mcp-config":
42
+ result.mcpConfig = args[++i];
43
+ break;
44
+ case "--resume":
45
+ result.resumeSession = args[++i];
46
+ break;
47
+ case "--sessions":
48
+ result.listSessions = true;
49
+ break;
50
+ case "--teammate-mode":
51
+ result.teammateMode = true;
52
+ break;
53
+ case "--agent-id":
54
+ result.agentId = args[++i];
55
+ break;
56
+ case "--agent-name":
57
+ result.agentName = args[++i];
58
+ break;
59
+ case "--team-name":
60
+ result.teamName = args[++i];
61
+ break;
62
+ case "--agent-color":
63
+ result.agentColor = args[++i];
64
+ break;
65
+ case "--interleaved":
66
+ result.interleaved = true;
67
+ break;
68
+ case "--no-interleaved":
69
+ result.interleaved = false;
70
+ break;
71
+ case "--extended-thinking":
72
+ case "-e":
73
+ result.extendedThinking = true;
74
+ break;
75
+ case "--effort":
76
+ result.effort = args[++i] ?? "medium";
77
+ break;
78
+ case "--query":
79
+ case "-q":
80
+ result.query = args[++i];
81
+ break;
82
+ case "--no-progress":
83
+ result.noProgress = true;
84
+ break;
85
+ case "--version":
86
+ case "-v":
87
+ result.showVersion = true;
88
+ break;
89
+ case "--debug":
90
+ case "-d":
91
+ result.debug = true;
92
+ break;
93
+ case "--help":
94
+ case "-h":
95
+ printHelp();
96
+ process.exit(0);
97
+ }
98
+ }
99
+ return result;
100
+ }
101
+ // ============================================
102
+ // HELP TEXT
103
+ // ============================================
104
+ export function printHelp() {
105
+ console.log(`
106
+ Coder v${VERSION}
107
+ AI-powered terminal coding assistant
108
+
109
+ USAGE:
110
+ coder [OPTIONS] [QUERY]
111
+
112
+ With Doppler (recommended):
113
+ doppler run -- coder [OPTIONS] [QUERY]
114
+
115
+ OPTIONS:
116
+ -m, --model <model> Model to use (default: ${DEFAULT_MODEL})
117
+ -p, --permission-mode <mode> Permission mode (default, acceptEdits, bypassPermissions)
118
+ --max-tokens <tokens> Maximum output tokens (default: 4096)
119
+ -v, --version Show version and exit
120
+ -d, --debug Enable debug output
121
+
122
+ Extended Thinking:
123
+ -e, --extended-thinking Enable extended thinking mode
124
+ --effort <level> Thinking effort: low, medium, high, max
125
+ --interleaved Enable interleaved thinking (default: true)
126
+ --no-interleaved Disable interleaved thinking
127
+ --system-prompt <prompt> Override system prompt
128
+ --append-system-prompt <p> Append to system prompt
129
+ --config <file> Configuration file path
130
+ --mcp-config <file> MCP server configuration file
131
+ --resume <session-id> Resume a previous session
132
+ --sessions List recent sessions
133
+ --teammate-mode Run as teammate agent
134
+ --agent-id <id> Agent identifier
135
+ --agent-name <name> Agent display name
136
+ --team-name <name> Team name
137
+ --agent-color <color> Agent color for UI
138
+ -q, --query <query> Single query to execute
139
+ --no-progress Disable progress indicators
140
+ -h, --help Show this help message
141
+
142
+ EXAMPLES:
143
+ # Interactive mode (with Doppler for secrets)
144
+ doppler run -- coder
145
+
146
+ # Single query
147
+ doppler run -- coder -q "What files are in this directory?"
148
+
149
+ # Use a specific model
150
+ doppler run -- coder -m claude-opus-4-6 "Explain this codebase"
151
+
152
+ # Resume a session
153
+ doppler run -- coder --resume abc123-def456
154
+
155
+ # Show version
156
+ coder --version
157
+ `);
158
+ }
159
+ // ============================================
160
+ // API KEY RESOLUTION
161
+ // ============================================
162
+ export function getApiKey() {
163
+ return process.env.ANTHROPIC_API_KEY ||
164
+ process.env.CLAUDE_API_KEY ||
165
+ process.env.ANTHROPIC_AUTH_TOKEN ||
166
+ process.env.Z_AI_API_KEY ||
167
+ null;
168
+ }
169
+ export function requireApiKey() {
170
+ const apiKey = getApiKey();
171
+ if (!apiKey) {
172
+ console.error("Error: ANTHROPIC_API_KEY, CLAUDE_API_KEY, ANTHROPIC_AUTH_TOKEN, or Z_AI_API_KEY environment variable required");
173
+ process.exit(1);
174
+ }
175
+ return apiKey;
176
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Shared Terminal Utilities
3
+ * Common code shared between CLI and TUI modes
4
+ */
5
+ export { parseArgs, printHelp, getApiKey, requireApiKey, type CLIArgs, } from "./args.js";
6
+ export { setupSession, loadMCPConfig, mcpToolsToToolDefinitions, type SessionSetup, type SetupOptions, } from "./setup.js";
7
+ export { buildDefaultSystemPrompt, buildCompleteSystemPrompt, fetchGitStatus, type GitStatusInfo, } from "./system-prompt.js";
8
+ export { runSingleQuery, type QueryOptions, } from "./query.js";
9
+ export { LoadingState, getLoadingState, setLoading, stopLoading, updateLoading, startTool, endTool, type LoadingPhase, type LoadingStateData, type LoadingStateEvents, } from "./loading-state.js";
10
+ export { VERSION, BUILD_TIME, renderStatusLine, renderCompactStatusLine, renderMinimalStatusLine, renderFooterStatus, renderAutoCompactWarning, calculateContextInfo, formatPermissionMode, formatTokenCount, formatContextPercent, getContextWindow, shouldShowAutoCompactWarning, getModelDisplayName, getPermissionModeDisplay, type StatusLineOptions, type ContextInfo, } from "./status-line.js";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/src/interfaces/ui/terminal/shared/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,aAAa,EACb,KAAK,OAAO,GACb,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,yBAAyB,EACzB,KAAK,YAAY,EACjB,KAAK,YAAY,GAClB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,cAAc,EACd,KAAK,aAAa,GACnB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,cAAc,EACd,KAAK,YAAY,GAClB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,UAAU,EACV,WAAW,EACX,aAAa,EACb,SAAS,EACT,OAAO,EACP,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,OAAO,EACP,UAAU,EACV,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,EACvB,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,4BAA4B,EAC5B,mBAAmB,EACnB,wBAAwB,EACxB,KAAK,iBAAiB,EACtB,KAAK,WAAW,GACjB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Shared Terminal Utilities
3
+ * Common code shared between CLI and TUI modes
4
+ */
5
+ // Argument parsing
6
+ export { parseArgs, printHelp, getApiKey, requireApiKey, } from "./args.js";
7
+ // Session setup
8
+ export { setupSession, loadMCPConfig, mcpToolsToToolDefinitions, } from "./setup.js";
9
+ // System prompt building
10
+ export { buildDefaultSystemPrompt, buildCompleteSystemPrompt, fetchGitStatus, } from "./system-prompt.js";
11
+ // Single query execution
12
+ export { runSingleQuery, } from "./query.js";
13
+ // Loading State
14
+ export { LoadingState, getLoadingState, setLoading, stopLoading, updateLoading, startTool, endTool, } from "./loading-state.js";
15
+ // Status Line
16
+ export { VERSION, BUILD_TIME, renderStatusLine, renderCompactStatusLine, renderMinimalStatusLine, renderFooterStatus, renderAutoCompactWarning, calculateContextInfo, formatPermissionMode, formatTokenCount, formatContextPercent, getContextWindow, shouldShowAutoCompactWarning, getModelDisplayName, getPermissionModeDisplay, } from "./status-line.js";
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Loading State Manager for Coder CLI
3
+ * Tracks global loading state across the application
4
+ */
5
+ import { EventEmitter } from "events";
6
+ export type LoadingPhase = "idle" | "initializing" | "loading-config" | "connecting-mcp" | "api-request" | "streaming" | "tool-execution" | "processing" | "checkpointing";
7
+ export interface LoadingStateData {
8
+ isLoading: boolean;
9
+ phase: LoadingPhase;
10
+ message: string;
11
+ startTime: number;
12
+ activeTools: Set<string>;
13
+ activeToolCount: number;
14
+ hasActiveTools: boolean;
15
+ responseLength: number;
16
+ paused: boolean;
17
+ pausedTime: number;
18
+ }
19
+ export interface LoadingStateEvents {
20
+ "state-change": (state: LoadingStateData) => void;
21
+ "tool-start": (toolName: string) => void;
22
+ "tool-end": (toolName: string) => void;
23
+ "phase-change": (phase: LoadingPhase, previousPhase: LoadingPhase) => void;
24
+ "progress": (message: string) => void;
25
+ }
26
+ export declare class LoadingState extends EventEmitter {
27
+ private state;
28
+ private static instance;
29
+ private constructor();
30
+ /**
31
+ * Get singleton instance
32
+ */
33
+ static getInstance(): LoadingState;
34
+ /**
35
+ * Reset singleton (for testing)
36
+ */
37
+ static reset(): void;
38
+ /**
39
+ * Start loading
40
+ */
41
+ start(phase?: LoadingPhase, message?: string): void;
42
+ /**
43
+ * Stop loading
44
+ */
45
+ stop(): void;
46
+ /**
47
+ * Update phase
48
+ */
49
+ setPhase(phase: LoadingPhase): void;
50
+ /**
51
+ * Update message
52
+ */
53
+ setMessage(message: string): void;
54
+ /**
55
+ * Update both phase and message
56
+ */
57
+ update(phase: LoadingPhase, message: string): void;
58
+ /**
59
+ * Report progress
60
+ */
61
+ progress(message: string): void;
62
+ /**
63
+ * Mark tool as started
64
+ */
65
+ toolStart(toolName: string): void;
66
+ /**
67
+ * Mark tool as completed
68
+ */
69
+ toolEnd(toolName: string): void;
70
+ /**
71
+ * Update response length (for streaming)
72
+ */
73
+ setResponseLength(length: number): void;
74
+ /**
75
+ * Pause loading state
76
+ */
77
+ pause(): void;
78
+ /**
79
+ * Resume loading state
80
+ */
81
+ resume(): void;
82
+ /**
83
+ * Get current state (copy)
84
+ */
85
+ getState(): LoadingStateData;
86
+ /**
87
+ * Check if loading
88
+ */
89
+ isLoading(): boolean;
90
+ /**
91
+ * Get current phase
92
+ */
93
+ getPhase(): LoadingPhase;
94
+ /**
95
+ * Get elapsed time in ms
96
+ */
97
+ getElapsedMs(): number;
98
+ /**
99
+ * Get active tool names
100
+ */
101
+ getActiveTools(): string[];
102
+ /**
103
+ * Check if specific tool is active
104
+ */
105
+ isToolActive(toolName: string): boolean;
106
+ /**
107
+ * Get formatted state for display
108
+ */
109
+ getFormattedState(): string;
110
+ }
111
+ /**
112
+ * Get the global loading state instance
113
+ */
114
+ export declare function getLoadingState(): LoadingState;
115
+ /**
116
+ * Quick access to loading state methods
117
+ * These call getInstance() each time to handle reset() properly
118
+ */
119
+ export declare const setLoading: (phase: LoadingPhase, message?: string) => void;
120
+ export declare const stopLoading: () => void;
121
+ export declare const updateLoading: (message: string) => void;
122
+ export declare const startTool: (toolName: string) => void;
123
+ export declare const endTool: (toolName: string) => void;
124
+ //# sourceMappingURL=loading-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loading-state.d.ts","sourceRoot":"","sources":["../../../../../packages/src/interfaces/ui/terminal/shared/loading-state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,246 @@
1
+ /**
2
+ * Loading State Manager for Coder CLI
3
+ * Tracks global loading state across the application
4
+ */
5
+ import { EventEmitter } from "events";
6
+ // ============================================
7
+ // LOADING STATE CLASS
8
+ // ============================================
9
+ export class LoadingState extends EventEmitter {
10
+ state;
11
+ static instance = null;
12
+ constructor() {
13
+ super();
14
+ this.state = {
15
+ isLoading: false,
16
+ phase: "idle",
17
+ message: "",
18
+ startTime: 0,
19
+ activeTools: new Set(),
20
+ activeToolCount: 0,
21
+ hasActiveTools: false,
22
+ responseLength: 0,
23
+ paused: false,
24
+ pausedTime: 0,
25
+ };
26
+ }
27
+ /**
28
+ * Get singleton instance
29
+ */
30
+ static getInstance() {
31
+ if (!LoadingState.instance) {
32
+ LoadingState.instance = new LoadingState();
33
+ }
34
+ return LoadingState.instance;
35
+ }
36
+ /**
37
+ * Reset singleton (for testing)
38
+ */
39
+ static reset() {
40
+ if (LoadingState.instance) {
41
+ LoadingState.instance.removeAllListeners();
42
+ LoadingState.instance = null;
43
+ }
44
+ }
45
+ /**
46
+ * Start loading
47
+ */
48
+ start(phase = "processing", message = "") {
49
+ const previousPhase = this.state.phase;
50
+ this.state.isLoading = true;
51
+ this.state.phase = phase;
52
+ this.state.message = message;
53
+ this.state.startTime = Date.now();
54
+ this.emit("state-change", this.getState());
55
+ if (previousPhase !== phase) {
56
+ this.emit("phase-change", phase, previousPhase);
57
+ }
58
+ }
59
+ /**
60
+ * Stop loading
61
+ */
62
+ stop() {
63
+ const previousPhase = this.state.phase;
64
+ this.state.isLoading = false;
65
+ this.state.phase = "idle";
66
+ this.state.message = "";
67
+ this.state.activeTools.clear();
68
+ this.state.activeToolCount = 0;
69
+ this.state.responseLength = 0;
70
+ this.emit("state-change", this.getState());
71
+ this.emit("phase-change", "idle", previousPhase);
72
+ }
73
+ /**
74
+ * Update phase
75
+ */
76
+ setPhase(phase) {
77
+ const previousPhase = this.state.phase;
78
+ this.state.phase = phase;
79
+ this.emit("phase-change", phase, previousPhase);
80
+ this.emit("state-change", this.getState());
81
+ }
82
+ /**
83
+ * Update message
84
+ */
85
+ setMessage(message) {
86
+ this.state.message = message;
87
+ this.emit("state-change", this.getState());
88
+ }
89
+ /**
90
+ * Update both phase and message
91
+ */
92
+ update(phase, message) {
93
+ const previousPhase = this.state.phase;
94
+ this.state.phase = phase;
95
+ this.state.message = message;
96
+ this.emit("phase-change", phase, previousPhase);
97
+ this.emit("state-change", this.getState());
98
+ }
99
+ /**
100
+ * Report progress
101
+ */
102
+ progress(message) {
103
+ this.state.message = message;
104
+ this.emit("progress", message);
105
+ this.emit("state-change", this.getState());
106
+ }
107
+ /**
108
+ * Mark tool as started
109
+ */
110
+ toolStart(toolName) {
111
+ this.state.activeTools.add(toolName);
112
+ this.state.activeToolCount = this.state.activeTools.size;
113
+ this.state.hasActiveTools = true;
114
+ this.emit("tool-start", toolName);
115
+ this.emit("state-change", this.getState());
116
+ }
117
+ /**
118
+ * Mark tool as completed
119
+ */
120
+ toolEnd(toolName) {
121
+ this.state.activeTools.delete(toolName);
122
+ this.state.activeToolCount = this.state.activeTools.size;
123
+ if (this.state.activeTools.size === 0) {
124
+ this.state.hasActiveTools = false;
125
+ }
126
+ this.emit("tool-end", toolName);
127
+ this.emit("state-change", this.getState());
128
+ }
129
+ /**
130
+ * Update response length (for streaming)
131
+ */
132
+ setResponseLength(length) {
133
+ this.state.responseLength = length;
134
+ this.emit("state-change", this.getState());
135
+ }
136
+ /**
137
+ * Pause loading state
138
+ */
139
+ pause() {
140
+ if (!this.state.paused) {
141
+ this.state.paused = true;
142
+ this.state.pausedTime = Date.now();
143
+ this.emit("state-change", this.getState());
144
+ }
145
+ }
146
+ /**
147
+ * Resume loading state
148
+ */
149
+ resume() {
150
+ if (this.state.paused) {
151
+ this.state.paused = false;
152
+ this.state.pausedTime = 0;
153
+ this.emit("state-change", this.getState());
154
+ }
155
+ }
156
+ /**
157
+ * Get current state (copy)
158
+ */
159
+ getState() {
160
+ return {
161
+ ...this.state,
162
+ activeTools: new Set(this.state.activeTools),
163
+ };
164
+ }
165
+ /**
166
+ * Check if loading
167
+ */
168
+ isLoading() {
169
+ return this.state.isLoading;
170
+ }
171
+ /**
172
+ * Get current phase
173
+ */
174
+ getPhase() {
175
+ return this.state.phase;
176
+ }
177
+ /**
178
+ * Get elapsed time in ms
179
+ */
180
+ getElapsedMs() {
181
+ if (this.state.startTime === 0) {
182
+ return 0;
183
+ }
184
+ return Date.now() - this.state.startTime;
185
+ }
186
+ /**
187
+ * Get active tool names
188
+ */
189
+ getActiveTools() {
190
+ return Array.from(this.state.activeTools);
191
+ }
192
+ /**
193
+ * Check if specific tool is active
194
+ */
195
+ isToolActive(toolName) {
196
+ return this.state.activeTools.has(toolName);
197
+ }
198
+ /**
199
+ * Get formatted state for display
200
+ */
201
+ getFormattedState() {
202
+ if (!this.state.isLoading) {
203
+ return "Ready";
204
+ }
205
+ const parts = [];
206
+ if (this.state.message) {
207
+ parts.push(this.state.message);
208
+ }
209
+ if (this.state.activeToolCount > 0) {
210
+ parts.push(`(${this.state.activeToolCount} tool${this.state.activeToolCount > 1 ? "s" : ""} active)`);
211
+ }
212
+ const elapsed = Math.floor(this.getElapsedMs() / 1000);
213
+ if (elapsed > 0) {
214
+ parts.push(`[${elapsed}s]`);
215
+ }
216
+ return parts.join(" ") || this.state.phase;
217
+ }
218
+ }
219
+ // ============================================
220
+ // CONVENIENCE EXPORTS
221
+ // ============================================
222
+ /**
223
+ * Get the global loading state instance
224
+ */
225
+ export function getLoadingState() {
226
+ return LoadingState.getInstance();
227
+ }
228
+ /**
229
+ * Quick access to loading state methods
230
+ * These call getInstance() each time to handle reset() properly
231
+ */
232
+ export const setLoading = (phase, message) => {
233
+ LoadingState.getInstance().start(phase, message);
234
+ };
235
+ export const stopLoading = () => {
236
+ LoadingState.getInstance().stop();
237
+ };
238
+ export const updateLoading = (message) => {
239
+ LoadingState.getInstance().progress(message);
240
+ };
241
+ export const startTool = (toolName) => {
242
+ LoadingState.getInstance().toolStart(toolName);
243
+ };
244
+ export const endTool = (toolName) => {
245
+ LoadingState.getInstance().toolEnd(toolName);
246
+ };
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Single Query Execution
3
+ * Shared query runner for CLI -q mode
4
+ */
5
+ import type { ToolDefinition, GitStatus } from "../../../../types/index.js";
6
+ import { HookManager } from "../../../../ecosystem/hooks/index.js";
7
+ import { SessionStore } from "../../../../core/session-store.js";
8
+ import type { CLIArgs } from "./args.js";
9
+ export interface QueryOptions {
10
+ apiKey: string;
11
+ args: CLIArgs;
12
+ systemPrompt: string;
13
+ tools: ToolDefinition[];
14
+ query: string;
15
+ sessionStore: SessionStore;
16
+ sessionId: string;
17
+ hookManager: HookManager;
18
+ workingDirectory: string;
19
+ gitStatus?: GitStatus | null;
20
+ }
21
+ export declare function runSingleQuery(options: QueryOptions): Promise<void>;
22
+ //# sourceMappingURL=query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../../../packages/src/interfaces/ui/terminal/shared/query.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAW,cAAc,EAA0B,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE7G,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAOjE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;CAC9B;AAMD,wBAAsB,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA2GzE"}