@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,222 @@
1
+ /**
2
+ * CLI Argument Parsing
3
+ * Shared between CLI and TUI modes
4
+ */
5
+
6
+ import type { PermissionMode, ClaudeModel, EffortLevel } from "../../../../types/index.js";
7
+ import { VERSION } from "./status-line.js";
8
+ import { DEFAULT_MODEL, resolveModelAlias } from "../../../../core/models.js";
9
+
10
+ // ============================================
11
+ // CLI ARGUMENTS INTERFACE
12
+ // ============================================
13
+
14
+ export interface CLIArgs {
15
+ model: ClaudeModel;
16
+ permissionMode: PermissionMode;
17
+ maxTokens: number;
18
+ systemPrompt?: string;
19
+ appendSystemPrompt?: string;
20
+ configFile?: string;
21
+ mcpConfig?: string;
22
+ resumeSession?: string;
23
+ listSessions?: boolean;
24
+ teammateMode?: boolean;
25
+ agentId?: string;
26
+ agentName?: string;
27
+ teamName?: string;
28
+ agentColor?: string;
29
+ /** Enable extended thinking with effort level */
30
+ extendedThinking?: boolean;
31
+ /** Effort level: low, medium, high, max */
32
+ effort?: EffortLevel;
33
+ /** Enable interleaved thinking (default: true) */
34
+ interleaved?: boolean;
35
+ query?: string;
36
+ /** Disable progress indicators */
37
+ noProgress?: boolean;
38
+ /** Show version and exit */
39
+ showVersion?: boolean;
40
+ /** Enable debug output */
41
+ debug?: boolean;
42
+ }
43
+
44
+ // ============================================
45
+ // ARGUMENT PARSING
46
+ // ============================================
47
+
48
+ export function parseArgs(): CLIArgs {
49
+ const args = process.argv.slice(2);
50
+ const result: CLIArgs = {
51
+ // Read from environment variables (can be configured via Doppler)
52
+ model: process.env.ANTHROPIC_MODEL || process.env.ANTHROPIC_DEFAULT_SONNET_MODEL || DEFAULT_MODEL,
53
+ permissionMode: (process.env.CODER_PERMISSION_MODE || "default") as PermissionMode,
54
+ maxTokens: parseInt(process.env.ANTHROPIC_MAX_TOKENS || process.env.CODER_MAX_TOKENS || "4096"),
55
+ };
56
+
57
+ for (let i = 0; i < args.length; i++) {
58
+ const arg = args[i];
59
+
60
+ switch (arg) {
61
+ case "--model":
62
+ case "-m":
63
+ result.model = resolveModelAlias(args[++i] ?? DEFAULT_MODEL) as ClaudeModel;
64
+ break;
65
+ case "--permission-mode":
66
+ case "-p":
67
+ result.permissionMode = (args[++i] ?? "default") as PermissionMode;
68
+ break;
69
+ case "--max-tokens":
70
+ result.maxTokens = parseInt(args[++i] ?? "4096", 10);
71
+ break;
72
+ case "--system-prompt":
73
+ result.systemPrompt = args[++i];
74
+ break;
75
+ case "--append-system-prompt":
76
+ result.appendSystemPrompt = args[++i];
77
+ break;
78
+ case "--config":
79
+ result.configFile = args[++i];
80
+ break;
81
+ case "--mcp-config":
82
+ result.mcpConfig = args[++i];
83
+ break;
84
+ case "--resume":
85
+ result.resumeSession = args[++i];
86
+ break;
87
+ case "--sessions":
88
+ result.listSessions = true;
89
+ break;
90
+ case "--teammate-mode":
91
+ result.teammateMode = true;
92
+ break;
93
+ case "--agent-id":
94
+ result.agentId = args[++i];
95
+ break;
96
+ case "--agent-name":
97
+ result.agentName = args[++i];
98
+ break;
99
+ case "--team-name":
100
+ result.teamName = args[++i];
101
+ break;
102
+ case "--agent-color":
103
+ result.agentColor = args[++i];
104
+ break;
105
+ case "--interleaved":
106
+ result.interleaved = true;
107
+ break;
108
+ case "--no-interleaved":
109
+ result.interleaved = false;
110
+ break;
111
+ case "--extended-thinking":
112
+ case "-e":
113
+ result.extendedThinking = true;
114
+ break;
115
+ case "--effort":
116
+ result.effort = (args[++i] as EffortLevel) ?? "medium";
117
+ break;
118
+ case "--query":
119
+ case "-q":
120
+ result.query = args[++i];
121
+ break;
122
+ case "--no-progress":
123
+ result.noProgress = true;
124
+ break;
125
+ case "--version":
126
+ case "-v":
127
+ result.showVersion = true;
128
+ break;
129
+ case "--debug":
130
+ case "-d":
131
+ result.debug = true;
132
+ break;
133
+ case "--help":
134
+ case "-h":
135
+ printHelp();
136
+ process.exit(0);
137
+ }
138
+ }
139
+
140
+ return result;
141
+ }
142
+
143
+ // ============================================
144
+ // HELP TEXT
145
+ // ============================================
146
+
147
+ export function printHelp(): void {
148
+ console.log(`
149
+ Coder v${VERSION}
150
+ AI-powered terminal coding assistant
151
+
152
+ USAGE:
153
+ coder [OPTIONS] [QUERY]
154
+
155
+ With Doppler (recommended):
156
+ doppler run -- coder [OPTIONS] [QUERY]
157
+
158
+ OPTIONS:
159
+ -m, --model <model> Model to use (default: ${DEFAULT_MODEL})
160
+ -p, --permission-mode <mode> Permission mode (default, acceptEdits, bypassPermissions)
161
+ --max-tokens <tokens> Maximum output tokens (default: 4096)
162
+ -v, --version Show version and exit
163
+ -d, --debug Enable debug output
164
+
165
+ Extended Thinking:
166
+ -e, --extended-thinking Enable extended thinking mode
167
+ --effort <level> Thinking effort: low, medium, high, max
168
+ --interleaved Enable interleaved thinking (default: true)
169
+ --no-interleaved Disable interleaved thinking
170
+ --system-prompt <prompt> Override system prompt
171
+ --append-system-prompt <p> Append to system prompt
172
+ --config <file> Configuration file path
173
+ --mcp-config <file> MCP server configuration file
174
+ --resume <session-id> Resume a previous session
175
+ --sessions List recent sessions
176
+ --teammate-mode Run as teammate agent
177
+ --agent-id <id> Agent identifier
178
+ --agent-name <name> Agent display name
179
+ --team-name <name> Team name
180
+ --agent-color <color> Agent color for UI
181
+ -q, --query <query> Single query to execute
182
+ --no-progress Disable progress indicators
183
+ -h, --help Show this help message
184
+
185
+ EXAMPLES:
186
+ # Interactive mode (with Doppler for secrets)
187
+ doppler run -- coder
188
+
189
+ # Single query
190
+ doppler run -- coder -q "What files are in this directory?"
191
+
192
+ # Use a specific model
193
+ doppler run -- coder -m claude-opus-4-6 "Explain this codebase"
194
+
195
+ # Resume a session
196
+ doppler run -- coder --resume abc123-def456
197
+
198
+ # Show version
199
+ coder --version
200
+ `);
201
+ }
202
+
203
+ // ============================================
204
+ // API KEY RESOLUTION
205
+ // ============================================
206
+
207
+ export function getApiKey(): string | null {
208
+ return process.env.ANTHROPIC_API_KEY ||
209
+ process.env.CLAUDE_API_KEY ||
210
+ process.env.ANTHROPIC_AUTH_TOKEN ||
211
+ process.env.Z_AI_API_KEY ||
212
+ null;
213
+ }
214
+
215
+ export function requireApiKey(): string {
216
+ const apiKey = getApiKey();
217
+ if (!apiKey) {
218
+ console.error("Error: ANTHROPIC_API_KEY, CLAUDE_API_KEY, ANTHROPIC_AUTH_TOKEN, or Z_AI_API_KEY environment variable required");
219
+ process.exit(1);
220
+ }
221
+ return apiKey;
222
+ }
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Shared Terminal Utilities
3
+ * Common code shared between CLI and TUI modes
4
+ */
5
+
6
+ // Argument parsing
7
+ export {
8
+ parseArgs,
9
+ printHelp,
10
+ getApiKey,
11
+ requireApiKey,
12
+ type CLIArgs,
13
+ } from "./args.js";
14
+
15
+ // Session setup
16
+ export {
17
+ setupSession,
18
+ loadMCPConfig,
19
+ mcpToolsToToolDefinitions,
20
+ type SessionSetup,
21
+ type SetupOptions,
22
+ } from "./setup.js";
23
+
24
+ // System prompt building
25
+ export {
26
+ buildDefaultSystemPrompt,
27
+ buildCompleteSystemPrompt,
28
+ fetchGitStatus,
29
+ type GitStatusInfo,
30
+ } from "./system-prompt.js";
31
+
32
+ // Single query execution
33
+ export {
34
+ runSingleQuery,
35
+ type QueryOptions,
36
+ } from "./query.js";
37
+
38
+ // Loading State
39
+ export {
40
+ LoadingState,
41
+ getLoadingState,
42
+ setLoading,
43
+ stopLoading,
44
+ updateLoading,
45
+ startTool,
46
+ endTool,
47
+ type LoadingPhase,
48
+ type LoadingStateData,
49
+ type LoadingStateEvents,
50
+ } from "./loading-state.js";
51
+
52
+ // Status Line
53
+ export {
54
+ VERSION,
55
+ BUILD_TIME,
56
+ renderStatusLine,
57
+ renderCompactStatusLine,
58
+ renderMinimalStatusLine,
59
+ renderFooterStatus,
60
+ renderAutoCompactWarning,
61
+ calculateContextInfo,
62
+ formatPermissionMode,
63
+ formatTokenCount,
64
+ formatContextPercent,
65
+ getContextWindow,
66
+ shouldShowAutoCompactWarning,
67
+ getModelDisplayName,
68
+ getPermissionModeDisplay,
69
+ type StatusLineOptions,
70
+ type ContextInfo,
71
+ } from "./status-line.js";
@@ -0,0 +1,322 @@
1
+ /**
2
+ * Loading State Manager for Coder CLI
3
+ * Tracks global loading state across the application
4
+ */
5
+
6
+ import { EventEmitter } from "events";
7
+
8
+ // ============================================
9
+ // TYPES
10
+ // ============================================
11
+
12
+ export type LoadingPhase =
13
+ | "idle"
14
+ | "initializing"
15
+ | "loading-config"
16
+ | "connecting-mcp"
17
+ | "api-request"
18
+ | "streaming"
19
+ | "tool-execution"
20
+ | "processing"
21
+ | "checkpointing";
22
+
23
+ export interface LoadingStateData {
24
+ isLoading: boolean;
25
+ phase: LoadingPhase;
26
+ message: string;
27
+ startTime: number;
28
+ activeTools: Set<string>;
29
+ activeToolCount: number;
30
+ hasActiveTools: boolean;
31
+ responseLength: number;
32
+ paused: boolean;
33
+ pausedTime: number;
34
+ }
35
+
36
+ export interface LoadingStateEvents {
37
+ "state-change": (state: LoadingStateData) => void;
38
+ "tool-start": (toolName: string) => void;
39
+ "tool-end": (toolName: string) => void;
40
+ "phase-change": (phase: LoadingPhase, previousPhase: LoadingPhase) => void;
41
+ "progress": (message: string) => void;
42
+ }
43
+
44
+ // ============================================
45
+ // LOADING STATE CLASS
46
+ // ============================================
47
+
48
+ export class LoadingState extends EventEmitter {
49
+ private state: LoadingStateData;
50
+ private static instance: LoadingState | null = null;
51
+
52
+ private constructor() {
53
+ super();
54
+ this.state = {
55
+ isLoading: false,
56
+ phase: "idle",
57
+ message: "",
58
+ startTime: 0,
59
+ activeTools: new Set(),
60
+ activeToolCount: 0,
61
+ hasActiveTools: false,
62
+ responseLength: 0,
63
+ paused: false,
64
+ pausedTime: 0,
65
+ };
66
+ }
67
+
68
+ /**
69
+ * Get singleton instance
70
+ */
71
+ static getInstance(): LoadingState {
72
+ if (!LoadingState.instance) {
73
+ LoadingState.instance = new LoadingState();
74
+ }
75
+ return LoadingState.instance;
76
+ }
77
+
78
+ /**
79
+ * Reset singleton (for testing)
80
+ */
81
+ static reset(): void {
82
+ if (LoadingState.instance) {
83
+ LoadingState.instance.removeAllListeners();
84
+ LoadingState.instance = null;
85
+ }
86
+ }
87
+
88
+ /**
89
+ * Start loading
90
+ */
91
+ start(phase: LoadingPhase = "processing", message = ""): void {
92
+ const previousPhase = this.state.phase;
93
+
94
+ this.state.isLoading = true;
95
+ this.state.phase = phase;
96
+ this.state.message = message;
97
+ this.state.startTime = Date.now();
98
+
99
+ this.emit("state-change", this.getState());
100
+ if (previousPhase !== phase) {
101
+ this.emit("phase-change", phase, previousPhase);
102
+ }
103
+ }
104
+
105
+ /**
106
+ * Stop loading
107
+ */
108
+ stop(): void {
109
+ const previousPhase = this.state.phase;
110
+
111
+ this.state.isLoading = false;
112
+ this.state.phase = "idle";
113
+ this.state.message = "";
114
+ this.state.activeTools.clear();
115
+ this.state.activeToolCount = 0;
116
+ this.state.responseLength = 0;
117
+
118
+ this.emit("state-change", this.getState());
119
+ this.emit("phase-change", "idle", previousPhase);
120
+ }
121
+
122
+ /**
123
+ * Update phase
124
+ */
125
+ setPhase(phase: LoadingPhase): void {
126
+ const previousPhase = this.state.phase;
127
+ this.state.phase = phase;
128
+ this.emit("phase-change", phase, previousPhase);
129
+ this.emit("state-change", this.getState());
130
+ }
131
+
132
+ /**
133
+ * Update message
134
+ */
135
+ setMessage(message: string): void {
136
+ this.state.message = message;
137
+ this.emit("state-change", this.getState());
138
+ }
139
+
140
+ /**
141
+ * Update both phase and message
142
+ */
143
+ update(phase: LoadingPhase, message: string): void {
144
+ const previousPhase = this.state.phase;
145
+ this.state.phase = phase;
146
+ this.state.message = message;
147
+ this.emit("phase-change", phase, previousPhase);
148
+ this.emit("state-change", this.getState());
149
+ }
150
+
151
+ /**
152
+ * Report progress
153
+ */
154
+ progress(message: string): void {
155
+ this.state.message = message;
156
+ this.emit("progress", message);
157
+ this.emit("state-change", this.getState());
158
+ }
159
+
160
+ /**
161
+ * Mark tool as started
162
+ */
163
+ toolStart(toolName: string): void {
164
+ this.state.activeTools.add(toolName);
165
+ this.state.activeToolCount = this.state.activeTools.size;
166
+ this.state.hasActiveTools = true;
167
+ this.emit("tool-start", toolName);
168
+ this.emit("state-change", this.getState());
169
+ }
170
+
171
+ /**
172
+ * Mark tool as completed
173
+ */
174
+ toolEnd(toolName: string): void {
175
+ this.state.activeTools.delete(toolName);
176
+ this.state.activeToolCount = this.state.activeTools.size;
177
+ if (this.state.activeTools.size === 0) {
178
+ this.state.hasActiveTools = false;
179
+ }
180
+ this.emit("tool-end", toolName);
181
+ this.emit("state-change", this.getState());
182
+ }
183
+
184
+ /**
185
+ * Update response length (for streaming)
186
+ */
187
+ setResponseLength(length: number): void {
188
+ this.state.responseLength = length;
189
+ this.emit("state-change", this.getState());
190
+ }
191
+
192
+ /**
193
+ * Pause loading state
194
+ */
195
+ pause(): void {
196
+ if (!this.state.paused) {
197
+ this.state.paused = true;
198
+ this.state.pausedTime = Date.now();
199
+ this.emit("state-change", this.getState());
200
+ }
201
+ }
202
+
203
+ /**
204
+ * Resume loading state
205
+ */
206
+ resume(): void {
207
+ if (this.state.paused) {
208
+ this.state.paused = false;
209
+ this.state.pausedTime = 0;
210
+ this.emit("state-change", this.getState());
211
+ }
212
+ }
213
+
214
+ /**
215
+ * Get current state (copy)
216
+ */
217
+ getState(): LoadingStateData {
218
+ return {
219
+ ...this.state,
220
+ activeTools: new Set(this.state.activeTools),
221
+ };
222
+ }
223
+
224
+ /**
225
+ * Check if loading
226
+ */
227
+ isLoading(): boolean {
228
+ return this.state.isLoading;
229
+ }
230
+
231
+ /**
232
+ * Get current phase
233
+ */
234
+ getPhase(): LoadingPhase {
235
+ return this.state.phase;
236
+ }
237
+
238
+ /**
239
+ * Get elapsed time in ms
240
+ */
241
+ getElapsedMs(): number {
242
+ if (this.state.startTime === 0) {
243
+ return 0;
244
+ }
245
+ return Date.now() - this.state.startTime;
246
+ }
247
+
248
+ /**
249
+ * Get active tool names
250
+ */
251
+ getActiveTools(): string[] {
252
+ return Array.from(this.state.activeTools);
253
+ }
254
+
255
+ /**
256
+ * Check if specific tool is active
257
+ */
258
+ isToolActive(toolName: string): boolean {
259
+ return this.state.activeTools.has(toolName);
260
+ }
261
+
262
+ /**
263
+ * Get formatted state for display
264
+ */
265
+ getFormattedState(): string {
266
+ if (!this.state.isLoading) {
267
+ return "Ready";
268
+ }
269
+
270
+ const parts: string[] = [];
271
+
272
+ if (this.state.message) {
273
+ parts.push(this.state.message);
274
+ }
275
+
276
+ if (this.state.activeToolCount > 0) {
277
+ parts.push(`(${this.state.activeToolCount} tool${this.state.activeToolCount > 1 ? "s" : ""} active)`);
278
+ }
279
+
280
+ const elapsed = Math.floor(this.getElapsedMs() / 1000);
281
+ if (elapsed > 0) {
282
+ parts.push(`[${elapsed}s]`);
283
+ }
284
+
285
+ return parts.join(" ") || this.state.phase;
286
+ }
287
+ }
288
+
289
+ // ============================================
290
+ // CONVENIENCE EXPORTS
291
+ // ============================================
292
+
293
+ /**
294
+ * Get the global loading state instance
295
+ */
296
+ export function getLoadingState(): LoadingState {
297
+ return LoadingState.getInstance();
298
+ }
299
+
300
+ /**
301
+ * Quick access to loading state methods
302
+ * These call getInstance() each time to handle reset() properly
303
+ */
304
+ export const setLoading = (phase: LoadingPhase, message?: string) => {
305
+ LoadingState.getInstance().start(phase, message);
306
+ };
307
+
308
+ export const stopLoading = () => {
309
+ LoadingState.getInstance().stop();
310
+ };
311
+
312
+ export const updateLoading = (message: string) => {
313
+ LoadingState.getInstance().progress(message);
314
+ };
315
+
316
+ export const startTool = (toolName: string) => {
317
+ LoadingState.getInstance().toolStart(toolName);
318
+ };
319
+
320
+ export const endTool = (toolName: string) => {
321
+ LoadingState.getInstance().toolEnd(toolName);
322
+ };