@ebowwa/coder 0.2.1 → 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 (401) hide show
  1. package/README.md +31 -32
  2. package/dist/core/__tests__/permissions.test.d.ts +12 -0
  3. package/dist/core/__tests__/permissions.test.d.ts.map +1 -0
  4. package/dist/core/__tests__/permissions.test.js +851 -0
  5. package/dist/core/agent-loop/__tests__/compaction.test.d.ts +5 -0
  6. package/dist/core/agent-loop/__tests__/compaction.test.d.ts.map +1 -0
  7. package/dist/core/agent-loop/__tests__/compaction.test.js +209 -0
  8. package/dist/core/agent-loop/__tests__/formatters.test.d.ts +5 -0
  9. package/dist/core/agent-loop/__tests__/formatters.test.d.ts.map +1 -0
  10. package/dist/core/agent-loop/__tests__/formatters.test.js +195 -0
  11. package/dist/core/agent-loop/__tests__/index.test.d.ts +5 -0
  12. package/dist/core/agent-loop/__tests__/index.test.d.ts.map +1 -0
  13. package/dist/core/agent-loop/__tests__/index.test.js +121 -0
  14. package/dist/core/agent-loop/__tests__/loop-state.test.d.ts +5 -0
  15. package/dist/core/agent-loop/__tests__/loop-state.test.d.ts.map +1 -0
  16. package/dist/core/agent-loop/__tests__/loop-state.test.js +340 -0
  17. package/dist/core/agent-loop/__tests__/message-builder.test.d.ts +5 -0
  18. package/dist/core/agent-loop/__tests__/message-builder.test.d.ts.map +1 -0
  19. package/dist/core/agent-loop/__tests__/message-builder.test.js +178 -0
  20. package/dist/core/agent-loop/__tests__/tool-executor.test.d.ts +5 -0
  21. package/dist/core/agent-loop/__tests__/tool-executor.test.d.ts.map +1 -0
  22. package/dist/core/agent-loop/__tests__/tool-executor.test.js +331 -0
  23. package/dist/core/agent-loop/compaction.d.ts +39 -0
  24. package/dist/core/agent-loop/compaction.d.ts.map +1 -0
  25. package/dist/core/agent-loop/compaction.js +51 -0
  26. package/dist/core/agent-loop/formatters.d.ts +21 -0
  27. package/dist/core/agent-loop/formatters.d.ts.map +1 -0
  28. package/dist/core/agent-loop/formatters.js +42 -0
  29. package/dist/core/agent-loop/index.d.ts +25 -0
  30. package/dist/core/agent-loop/index.d.ts.map +1 -0
  31. package/dist/core/agent-loop/index.js +83 -0
  32. package/dist/core/agent-loop/loop-state.d.ts +74 -0
  33. package/dist/core/agent-loop/loop-state.d.ts.map +1 -0
  34. package/dist/core/agent-loop/loop-state.js +147 -0
  35. package/dist/core/agent-loop/message-builder.d.ts +13 -0
  36. package/dist/core/agent-loop/message-builder.d.ts.map +1 -0
  37. package/dist/core/agent-loop/message-builder.js +49 -0
  38. package/dist/core/agent-loop/tool-executor.d.ts +23 -0
  39. package/dist/core/agent-loop/tool-executor.d.ts.map +1 -0
  40. package/dist/core/agent-loop/tool-executor.js +152 -0
  41. package/dist/core/agent-loop/turn-executor.d.ts +57 -0
  42. package/dist/core/agent-loop/turn-executor.d.ts.map +1 -0
  43. package/dist/core/agent-loop/turn-executor.js +124 -0
  44. package/dist/core/agent-loop/types.d.ts +141 -0
  45. package/dist/core/agent-loop/types.d.ts.map +1 -0
  46. package/dist/core/agent-loop/types.js +4 -0
  47. package/dist/core/agent-loop.d.ts +17 -0
  48. package/dist/core/agent-loop.d.ts.map +1 -0
  49. package/dist/core/agent-loop.js +16 -0
  50. package/dist/core/api-client-impl.d.ts +62 -0
  51. package/dist/core/api-client-impl.d.ts.map +1 -0
  52. package/dist/core/api-client-impl.js +479 -0
  53. package/dist/core/api-client.d.ts +6 -0
  54. package/dist/core/api-client.d.ts.map +1 -0
  55. package/dist/core/api-client.js +5 -0
  56. package/dist/core/checkpoints.d.ts +128 -0
  57. package/dist/core/checkpoints.d.ts.map +1 -0
  58. package/dist/core/checkpoints.js +438 -0
  59. package/dist/core/claude-md.d.ts +71 -0
  60. package/dist/core/claude-md.d.ts.map +1 -0
  61. package/dist/core/claude-md.js +198 -0
  62. package/dist/core/cognitive-security/hooks.d.ts +138 -0
  63. package/dist/core/cognitive-security/hooks.d.ts.map +1 -0
  64. package/dist/core/cognitive-security/hooks.js +389 -0
  65. package/dist/core/cognitive-security/index.d.ts +751 -0
  66. package/dist/core/cognitive-security/index.d.ts.map +1 -0
  67. package/dist/core/cognitive-security/index.js +1123 -0
  68. package/dist/core/cognitive-security/middleware.d.ts +136 -0
  69. package/dist/core/cognitive-security/middleware.d.ts.map +1 -0
  70. package/dist/core/cognitive-security/middleware.js +376 -0
  71. package/dist/core/config-loader.d.ts +127 -0
  72. package/dist/core/config-loader.d.ts.map +1 -0
  73. package/dist/core/config-loader.js +219 -0
  74. package/dist/core/context-compaction.d.ts +87 -0
  75. package/dist/core/context-compaction.d.ts.map +1 -0
  76. package/dist/core/context-compaction.js +428 -0
  77. package/dist/core/git-status.d.ts +25 -0
  78. package/dist/core/git-status.d.ts.map +1 -0
  79. package/dist/core/git-status.js +204 -0
  80. package/dist/core/image.d.ts +69 -0
  81. package/dist/core/image.d.ts.map +1 -0
  82. package/dist/core/image.js +290 -0
  83. package/dist/core/image.test.d.ts +2 -0
  84. package/dist/core/image.test.d.ts.map +1 -0
  85. package/dist/core/image.test.js +149 -0
  86. package/dist/core/models.d.ts +123 -0
  87. package/dist/core/models.d.ts.map +1 -0
  88. package/dist/core/models.js +325 -0
  89. package/dist/core/permissions.d.ts +81 -0
  90. package/dist/core/permissions.d.ts.map +1 -0
  91. package/dist/core/permissions.js +327 -0
  92. package/dist/core/retry.d.ts +25 -0
  93. package/dist/core/retry.d.ts.map +1 -0
  94. package/dist/core/retry.js +121 -0
  95. package/dist/core/session-store.d.ts +9 -0
  96. package/dist/core/session-store.d.ts.map +1 -0
  97. package/dist/core/session-store.js +10 -0
  98. package/dist/core/sessions/export.d.ts +47 -0
  99. package/dist/core/sessions/export.d.ts.map +1 -0
  100. package/dist/core/sessions/export.js +256 -0
  101. package/dist/core/sessions/index.d.ts +132 -0
  102. package/dist/core/sessions/index.d.ts.map +1 -0
  103. package/dist/core/sessions/index.js +442 -0
  104. package/dist/core/sessions/metadata.d.ts +77 -0
  105. package/dist/core/sessions/metadata.d.ts.map +1 -0
  106. package/dist/core/sessions/metadata.js +233 -0
  107. package/dist/core/sessions/persistence.d.ts +72 -0
  108. package/dist/core/sessions/persistence.d.ts.map +1 -0
  109. package/dist/core/sessions/persistence.js +201 -0
  110. package/dist/core/sessions/types.d.ts +110 -0
  111. package/dist/core/sessions/types.d.ts.map +1 -0
  112. package/dist/core/sessions/types.js +4 -0
  113. package/dist/core/stream-highlighter.d.ts +18 -0
  114. package/dist/core/stream-highlighter.d.ts.map +1 -0
  115. package/dist/core/stream-highlighter.js +916 -0
  116. package/dist/core/system-reminders.d.ts +89 -0
  117. package/dist/core/system-reminders.d.ts.map +1 -0
  118. package/dist/core/system-reminders.js +285 -0
  119. package/dist/ecosystem/hooks/__tests__/index.test.d.ts +5 -0
  120. package/dist/ecosystem/hooks/__tests__/index.test.d.ts.map +1 -0
  121. package/dist/ecosystem/hooks/__tests__/index.test.js +458 -0
  122. package/dist/ecosystem/hooks/index.d.ts +59 -0
  123. package/dist/ecosystem/hooks/index.d.ts.map +1 -0
  124. package/dist/ecosystem/hooks/index.js +294 -0
  125. package/dist/ecosystem/hooks/prompt-evaluator.d.ts +32 -0
  126. package/dist/ecosystem/hooks/prompt-evaluator.d.ts.map +1 -0
  127. package/dist/ecosystem/hooks/prompt-evaluator.js +229 -0
  128. package/dist/ecosystem/skills/index.d.ts +55 -0
  129. package/dist/ecosystem/skills/index.d.ts.map +1 -0
  130. package/dist/ecosystem/skills/index.js +258 -0
  131. package/dist/ecosystem/tools/__tests__/index.test.d.ts +7 -0
  132. package/dist/ecosystem/tools/__tests__/index.test.d.ts.map +1 -0
  133. package/dist/ecosystem/tools/__tests__/index.test.js +856 -0
  134. package/dist/ecosystem/tools/index.d.ts +24 -0
  135. package/dist/ecosystem/tools/index.d.ts.map +1 -0
  136. package/dist/ecosystem/tools/index.js +1709 -0
  137. package/dist/index.d.ts +24 -0
  138. package/dist/index.d.ts.map +1 -0
  139. package/dist/index.js +32 -2
  140. package/dist/interfaces/mcp/client.d.ts +40 -0
  141. package/dist/interfaces/mcp/client.d.ts.map +1 -0
  142. package/dist/interfaces/mcp/client.js +309 -0
  143. package/dist/interfaces/ui/index.d.ts +36 -0
  144. package/dist/interfaces/ui/index.d.ts.map +1 -0
  145. package/dist/interfaces/ui/index.js +61 -0
  146. package/dist/interfaces/ui/spinner.d.ts +140 -0
  147. package/dist/interfaces/ui/spinner.d.ts.map +1 -0
  148. package/dist/interfaces/ui/spinner.js +342 -0
  149. package/dist/interfaces/ui/terminal/cli/index.d.ts +12 -0
  150. package/dist/interfaces/ui/terminal/cli/index.d.ts.map +1 -0
  151. package/dist/interfaces/ui/terminal/cli/index.js +167 -0
  152. package/dist/interfaces/ui/terminal/shared/args.d.ts +39 -0
  153. package/dist/interfaces/ui/terminal/shared/args.d.ts.map +1 -0
  154. package/dist/interfaces/ui/terminal/shared/args.js +176 -0
  155. package/dist/interfaces/ui/terminal/shared/index.d.ts +11 -0
  156. package/dist/interfaces/ui/terminal/shared/index.d.ts.map +1 -0
  157. package/dist/interfaces/ui/terminal/shared/index.js +16 -0
  158. package/dist/interfaces/ui/terminal/shared/loading-state.d.ts +124 -0
  159. package/dist/interfaces/ui/terminal/shared/loading-state.d.ts.map +1 -0
  160. package/dist/interfaces/ui/terminal/shared/loading-state.js +246 -0
  161. package/dist/interfaces/ui/terminal/shared/query.d.ts +22 -0
  162. package/dist/interfaces/ui/terminal/shared/query.d.ts.map +1 -0
  163. package/dist/interfaces/ui/terminal/shared/query.js +100 -0
  164. package/dist/interfaces/ui/terminal/shared/setup.d.ts +33 -0
  165. package/dist/interfaces/ui/terminal/shared/setup.d.ts.map +1 -0
  166. package/dist/interfaces/ui/terminal/shared/setup.js +226 -0
  167. package/dist/interfaces/ui/terminal/shared/status-line.d.ts +117 -0
  168. package/dist/interfaces/ui/terminal/shared/status-line.d.ts.map +1 -0
  169. package/dist/interfaces/ui/terminal/shared/status-line.js +267 -0
  170. package/dist/interfaces/ui/terminal/shared/system-prompt.d.ts +38 -0
  171. package/dist/interfaces/ui/terminal/shared/system-prompt.d.ts.map +1 -0
  172. package/dist/interfaces/ui/terminal/shared/system-prompt.js +102 -0
  173. package/dist/interfaces/ui/terminal/tui/HelpPanel.d.ts +39 -0
  174. package/dist/interfaces/ui/terminal/tui/HelpPanel.d.ts.map +1 -0
  175. package/dist/interfaces/ui/terminal/tui/HelpPanel.js +215 -0
  176. package/dist/interfaces/ui/terminal/tui/InputContext.d.ts +91 -0
  177. package/dist/interfaces/ui/terminal/tui/InputContext.d.ts.map +1 -0
  178. package/dist/interfaces/ui/terminal/tui/InputContext.js +154 -0
  179. package/dist/interfaces/ui/terminal/tui/InputField.d.ts +18 -0
  180. package/dist/interfaces/ui/terminal/tui/InputField.d.ts.map +1 -0
  181. package/dist/interfaces/ui/terminal/tui/InputField.js +41 -0
  182. package/dist/interfaces/ui/terminal/tui/InteractiveTUI.d.ts +16 -0
  183. package/dist/interfaces/ui/terminal/tui/InteractiveTUI.d.ts.map +1 -0
  184. package/dist/interfaces/ui/terminal/tui/InteractiveTUI.js +451 -0
  185. package/dist/interfaces/ui/terminal/tui/MessageArea.d.ts +10 -0
  186. package/dist/interfaces/ui/terminal/tui/MessageArea.d.ts.map +1 -0
  187. package/dist/interfaces/ui/terminal/tui/MessageArea.js +91 -0
  188. package/dist/interfaces/ui/terminal/tui/MessageStore.d.ts +48 -0
  189. package/dist/interfaces/ui/terminal/tui/MessageStore.d.ts.map +1 -0
  190. package/dist/interfaces/ui/terminal/tui/MessageStore.js +151 -0
  191. package/dist/interfaces/ui/terminal/tui/StatusBar.d.ts +9 -0
  192. package/dist/interfaces/ui/terminal/tui/StatusBar.d.ts.map +1 -0
  193. package/dist/interfaces/ui/terminal/tui/StatusBar.js +36 -0
  194. package/dist/interfaces/ui/terminal/tui/commands.d.ts +21 -0
  195. package/dist/interfaces/ui/terminal/tui/commands.d.ts.map +1 -0
  196. package/dist/interfaces/ui/terminal/tui/commands.js +359 -0
  197. package/dist/interfaces/ui/terminal/tui/components/InteractiveElements.d.ts +115 -0
  198. package/dist/interfaces/ui/terminal/tui/components/InteractiveElements.d.ts.map +1 -0
  199. package/dist/interfaces/ui/terminal/tui/components/InteractiveElements.js +306 -0
  200. package/dist/interfaces/ui/terminal/tui/components/MultilineInput.d.ts +92 -0
  201. package/dist/interfaces/ui/terminal/tui/components/MultilineInput.d.ts.map +1 -0
  202. package/dist/interfaces/ui/terminal/tui/components/MultilineInput.js +399 -0
  203. package/dist/interfaces/ui/terminal/tui/components/PaneManager.d.ts +59 -0
  204. package/dist/interfaces/ui/terminal/tui/components/PaneManager.d.ts.map +1 -0
  205. package/dist/interfaces/ui/terminal/tui/components/PaneManager.js +139 -0
  206. package/dist/interfaces/ui/terminal/tui/components/Sidebar.d.ts +68 -0
  207. package/dist/interfaces/ui/terminal/tui/components/Sidebar.d.ts.map +1 -0
  208. package/dist/interfaces/ui/terminal/tui/components/Sidebar.js +340 -0
  209. package/dist/interfaces/ui/terminal/tui/components/index.d.ts +23 -0
  210. package/dist/interfaces/ui/terminal/tui/components/index.d.ts.map +1 -0
  211. package/dist/interfaces/ui/terminal/tui/components/index.js +51 -0
  212. package/dist/interfaces/ui/terminal/tui/console.d.ts +20 -0
  213. package/dist/interfaces/ui/terminal/tui/console.d.ts.map +1 -0
  214. package/dist/interfaces/ui/terminal/tui/console.js +46 -0
  215. package/dist/interfaces/ui/terminal/tui/index.d.ts +20 -0
  216. package/dist/interfaces/ui/terminal/tui/index.d.ts.map +1 -0
  217. package/dist/interfaces/ui/terminal/tui/index.js +28 -0
  218. package/dist/interfaces/ui/terminal/tui/run.d.ts +13 -0
  219. package/dist/interfaces/ui/terminal/tui/run.d.ts.map +1 -0
  220. package/dist/interfaces/ui/terminal/tui/run.js +31 -0
  221. package/dist/interfaces/ui/terminal/tui/spinner.d.ts +44 -0
  222. package/dist/interfaces/ui/terminal/tui/spinner.d.ts.map +1 -0
  223. package/dist/interfaces/ui/terminal/tui/spinner.js +59 -0
  224. package/dist/interfaces/ui/terminal/tui/tui-app.d.ts +39 -0
  225. package/dist/interfaces/ui/terminal/tui/tui-app.d.ts.map +1 -0
  226. package/dist/interfaces/ui/terminal/tui/tui-app.js +198 -0
  227. package/dist/interfaces/ui/terminal/tui/tui-footer.d.ts +167 -0
  228. package/dist/interfaces/ui/terminal/tui/tui-footer.d.ts.map +1 -0
  229. package/dist/interfaces/ui/terminal/tui/tui-footer.js +330 -0
  230. package/dist/interfaces/ui/terminal/tui/types.d.ts +165 -0
  231. package/dist/interfaces/ui/terminal/tui/types.d.ts.map +1 -0
  232. package/dist/interfaces/ui/terminal/tui/types.js +5 -0
  233. package/dist/interfaces/ui/terminal/tui/useInputHandler.d.ts +23 -0
  234. package/dist/interfaces/ui/terminal/tui/useInputHandler.d.ts.map +1 -0
  235. package/dist/interfaces/ui/terminal/tui/useInputHandler.js +72 -0
  236. package/dist/interfaces/ui/terminal/tui/useNativeInput.d.ts +90 -0
  237. package/dist/interfaces/ui/terminal/tui/useNativeInput.d.ts.map +1 -0
  238. package/dist/interfaces/ui/terminal/tui/useNativeInput.js +188 -0
  239. package/dist/native/index.d.ts +480 -0
  240. package/dist/native/index.d.ts.map +1 -0
  241. package/dist/native/index.js +1625 -0
  242. package/dist/teammates/index.d.ts +161 -0
  243. package/dist/teammates/index.d.ts.map +1 -0
  244. package/dist/teammates/index.js +827 -0
  245. package/dist/types/index.d.ts +482 -0
  246. package/dist/types/index.d.ts.map +1 -0
  247. package/dist/types/index.js +52 -0
  248. package/native/README.md +5 -5
  249. package/native/index.darwin-arm64.node +0 -0
  250. package/native/index.node +0 -0
  251. package/native/package.json +4 -4
  252. package/package.json +33 -16
  253. package/packages/src/core/__tests__/permissions.test.ts +1091 -0
  254. package/packages/src/core/agent-loop/__tests__/compaction.test.ts +280 -0
  255. package/packages/src/core/agent-loop/__tests__/formatters.test.ts +234 -0
  256. package/packages/src/core/agent-loop/__tests__/index.test.ts +162 -0
  257. package/packages/src/core/agent-loop/__tests__/loop-state.test.ts +413 -0
  258. package/packages/src/core/agent-loop/__tests__/message-builder.test.ts +229 -0
  259. package/packages/src/core/agent-loop/__tests__/tool-executor.test.ts +457 -0
  260. package/packages/src/core/agent-loop/compaction.ts +88 -0
  261. package/packages/src/core/agent-loop/formatters.ts +50 -0
  262. package/packages/src/core/agent-loop/index.ts +135 -0
  263. package/packages/src/core/agent-loop/loop-state.ts +187 -0
  264. package/packages/src/core/agent-loop/message-builder.ts +62 -0
  265. package/packages/src/core/agent-loop/tool-executor.ts +211 -0
  266. package/packages/src/core/agent-loop/turn-executor.ts +222 -0
  267. package/packages/src/core/agent-loop/types.ts +148 -0
  268. package/packages/src/core/agent-loop.ts +18 -0
  269. package/packages/src/core/api-client-impl.ts +619 -0
  270. package/packages/src/core/api-client.ts +6 -0
  271. package/packages/src/core/checkpoints.ts +606 -0
  272. package/packages/src/core/claude-md.ts +272 -0
  273. package/packages/src/core/cognitive-security/hooks.ts +590 -0
  274. package/packages/src/core/cognitive-security/index.ts +2041 -0
  275. package/packages/src/core/cognitive-security/middleware.ts +536 -0
  276. package/packages/src/core/config-loader.ts +324 -0
  277. package/packages/src/core/context-compaction.ts +578 -0
  278. package/packages/src/core/git-status.ts +262 -0
  279. package/packages/src/core/image.test.ts +180 -0
  280. package/packages/src/core/image.ts +350 -0
  281. package/packages/src/core/lmdb.db +0 -0
  282. package/packages/src/core/lmdb.db-lock +0 -0
  283. package/packages/src/core/models.ts +430 -0
  284. package/packages/src/core/normalizers/todo +4 -0
  285. package/packages/src/core/permissions.ts +431 -0
  286. package/packages/src/core/retry.ts +170 -0
  287. package/packages/src/core/session-store.ts +36 -0
  288. package/packages/src/core/sessions/export.ts +329 -0
  289. package/packages/src/core/sessions/index.ts +587 -0
  290. package/packages/src/core/sessions/metadata.ts +309 -0
  291. package/packages/src/core/sessions/persistence.ts +244 -0
  292. package/packages/src/core/sessions/types.ts +169 -0
  293. package/packages/src/core/stream-highlighter.ts +1123 -0
  294. package/packages/src/core/system-reminders.ts +402 -0
  295. package/packages/src/core/todo +8 -0
  296. package/packages/src/ecosystem/hooks/__tests__/index.test.ts +561 -0
  297. package/packages/src/ecosystem/hooks/index.ts +341 -0
  298. package/packages/src/ecosystem/hooks/prompt-evaluator.ts +300 -0
  299. package/packages/src/ecosystem/skills/index.ts +295 -0
  300. package/packages/src/ecosystem/tools/__tests__/index.test.ts +1335 -0
  301. package/packages/src/ecosystem/tools/index.ts +1877 -0
  302. package/packages/src/index.ts +120 -0
  303. package/packages/src/interfaces/mcp/client.ts +389 -0
  304. package/packages/src/interfaces/ui/Screenshot 2026-03-02 at 9.23.10/342/200/257PM.png +0 -0
  305. package/packages/src/interfaces/ui/Screenshot 2026-03-03 at 10.55.11/342/200/257AM.png +0 -0
  306. package/packages/src/interfaces/ui/index.ts +161 -0
  307. package/packages/src/interfaces/ui/lmdb.db +0 -0
  308. package/packages/src/interfaces/ui/lmdb.db-lock +0 -0
  309. package/packages/src/interfaces/ui/spinner.ts +451 -0
  310. package/packages/src/interfaces/ui/terminal/cli/index.ts +228 -0
  311. package/packages/src/interfaces/ui/terminal/lmdb.db +0 -0
  312. package/packages/src/interfaces/ui/terminal/lmdb.db-lock +0 -0
  313. package/packages/src/interfaces/ui/terminal/shared/args.ts +222 -0
  314. package/packages/src/interfaces/ui/terminal/shared/index.ts +71 -0
  315. package/packages/src/interfaces/ui/terminal/shared/loading-state.ts +322 -0
  316. package/packages/src/interfaces/ui/terminal/shared/query.ts +146 -0
  317. package/packages/src/interfaces/ui/terminal/shared/setup.ts +295 -0
  318. package/packages/src/interfaces/ui/terminal/shared/status-line.ts +358 -0
  319. package/packages/src/interfaces/ui/terminal/shared/system-prompt.ts +146 -0
  320. package/packages/src/interfaces/ui/terminal/tui/HelpPanel.tsx +262 -0
  321. package/packages/src/interfaces/ui/terminal/tui/InputContext.tsx +232 -0
  322. package/packages/src/interfaces/ui/terminal/tui/InputField.tsx +62 -0
  323. package/packages/src/interfaces/ui/terminal/tui/InteractiveTUI.tsx +537 -0
  324. package/packages/src/interfaces/ui/terminal/tui/MessageArea.tsx +107 -0
  325. package/packages/src/interfaces/ui/terminal/tui/MessageStore.tsx +240 -0
  326. package/packages/src/interfaces/ui/terminal/tui/StatusBar.tsx +54 -0
  327. package/packages/src/interfaces/ui/terminal/tui/commands.ts +438 -0
  328. package/packages/src/interfaces/ui/terminal/tui/components/InteractiveElements.tsx +584 -0
  329. package/packages/src/interfaces/ui/terminal/tui/components/MultilineInput.tsx +614 -0
  330. package/packages/src/interfaces/ui/terminal/tui/components/PaneManager.tsx +333 -0
  331. package/packages/src/interfaces/ui/terminal/tui/components/Sidebar.tsx +604 -0
  332. package/packages/src/interfaces/ui/terminal/tui/components/index.ts +118 -0
  333. package/packages/src/interfaces/ui/terminal/tui/console.ts +49 -0
  334. package/packages/src/interfaces/ui/terminal/tui/index.ts +90 -0
  335. package/packages/src/interfaces/ui/terminal/tui/run.tsx +42 -0
  336. package/packages/src/interfaces/ui/terminal/tui/spinner.ts +69 -0
  337. package/packages/src/interfaces/ui/terminal/tui/tui-app.tsx +390 -0
  338. package/packages/src/interfaces/ui/terminal/tui/tui-footer.ts +422 -0
  339. package/packages/src/interfaces/ui/terminal/tui/types.ts +186 -0
  340. package/packages/src/interfaces/ui/terminal/tui/useInputHandler.ts +104 -0
  341. package/packages/src/interfaces/ui/terminal/tui/useNativeInput.ts +239 -0
  342. package/packages/src/lmdb.db +0 -0
  343. package/packages/src/lmdb.db-lock +0 -0
  344. package/packages/src/native/index.ts +2345 -0
  345. package/packages/src/teammates/index.ts +982 -0
  346. package/packages/src/types/index.ts +722 -0
  347. package/dist/cli.js +0 -148
  348. package/dist/index-0pkak453.js +0 -136
  349. package/dist/index-0qd0x8b4.js +0 -110
  350. package/dist/index-0x3kprq6.js +0 -240
  351. package/dist/index-1eawy937.js +0 -308
  352. package/dist/index-24m2aygy.js +0 -240
  353. package/dist/index-29xcjnne.js +0 -280
  354. package/dist/index-2avyytn5.js +0 -349
  355. package/dist/index-4ms367ey.js +0 -136
  356. package/dist/index-4w2t3b0m.js +0 -240
  357. package/dist/index-4xfgd8nz.js +0 -261
  358. package/dist/index-5acjp9gc.js +0 -157
  359. package/dist/index-5s15hr56.js +0 -136
  360. package/dist/index-6e4wf341.js +0 -349
  361. package/dist/index-6fvnkedw.js +0 -240
  362. package/dist/index-6rqpmd4g.js +0 -128
  363. package/dist/index-77ckwnbm.js +0 -280
  364. package/dist/index-9knxy49k.js +0 -128
  365. package/dist/index-9zrnw4zx.js +0 -128
  366. package/dist/index-bk21w99v.js +0 -280
  367. package/dist/index-c41n76fv.js +0 -240
  368. package/dist/index-cb4ppjdt.js +0 -255
  369. package/dist/index-cfb2edt6.js +0 -240
  370. package/dist/index-cmfa38hh.js +0 -308
  371. package/dist/index-datjz8q1.js +0 -257
  372. package/dist/index-eadf4wvn.js +0 -240
  373. package/dist/index-em5k0m3z.js +0 -345
  374. package/dist/index-gh8r333a.js +0 -110
  375. package/dist/index-gkx6k2tr.js +0 -261
  376. package/dist/index-h5cabfks.js +0 -155
  377. package/dist/index-hcrpwyy3.js +0 -261
  378. package/dist/index-hk7fwwa8.js +0 -257
  379. package/dist/index-jb8cw7f8.js +0 -136
  380. package/dist/index-kbyw4th1.js +0 -347
  381. package/dist/index-kgj5gqnm.js +0 -345
  382. package/dist/index-mdf6xp1z.js +0 -255
  383. package/dist/index-mrhv8kvc.js +0 -280
  384. package/dist/index-mt4743dd.js +0 -161
  385. package/dist/index-qnwsg97q.js +0 -240
  386. package/dist/index-qwdy6x44.js +0 -261
  387. package/dist/index-rmj77261.js +0 -157
  388. package/dist/index-sbbw1a61.js +0 -349
  389. package/dist/index-svy5bcpn.js +0 -345
  390. package/dist/index-tvmy7tm9.js +0 -261
  391. package/dist/index-tzz4vzkj.js +0 -312
  392. package/dist/index-vz80zmhe.js +0 -110
  393. package/dist/index-wed2fk67.js +0 -240
  394. package/dist/index-wksgzz8e.js +0 -280
  395. package/dist/index-wn2m4wma.js +0 -240
  396. package/dist/index-xha05vjc.js +0 -257
  397. package/dist/index-yc6eh8p8.js +0 -136
  398. package/dist/index-ycjxx9ft.js +0 -240
  399. package/dist/index-z0gzd0fc.js +0 -110
  400. package/dist/index-z8cwtf8j.js +0 -240
  401. package/dist/index-zy5mtt00.js +0 -128
@@ -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"}