@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,24 @@
1
+ /**
2
+ * Coder - AI-powered terminal coding assistant
3
+ * Main entry point
4
+ */
5
+ export * from "./types/index.js";
6
+ export { createMessageStream, calculateCost, buildSystemPrompt, buildCachedMessages, calculateCacheMetrics, } from "./core/api-client.js";
7
+ export type { StreamOptionsType as StreamOptions, StreamResultType as StreamResult } from "./core/api-client.js";
8
+ export { agentLoop, formatCost, formatMetrics, formatCostBrief, formatCacheMetrics, } from "./core/agent-loop.js";
9
+ export type { AgentLoopOptions, AgentLoopResult } from "./core/agent-loop.js";
10
+ export { PermissionManager, assessRiskLevel, generateDescription, isReadOnlyTool, isFileEditTool, isSystemTool, TOOL_CATEGORIES, } from "./core/permissions.js";
11
+ export { SessionStore, formatSessionSummary, printSessionsList, } from "./core/session-store.js";
12
+ export type { SessionMetadata, SessionMessage, SessionToolUse, SessionMetrics, SessionContext, SessionEntry, SessionSummary, LoadedSession, } from "./core/session-store.js";
13
+ export * from "./ecosystem/tools/index.js";
14
+ export { MCPClientImpl } from "./interfaces/mcp/client.js";
15
+ export { MCPClientImpl as MCPClient } from "./interfaces/mcp/client.js";
16
+ export * from "./ecosystem/hooks/index.js";
17
+ export * from "./ecosystem/skills/index.js";
18
+ export * from "./teammates/index.js";
19
+ export * from "./core/cognitive-security/index.js";
20
+ export { Spinner, getSpinner, resetSpinner, defaultFrames, dotFrames, arrowFrames, defaultTips, toolTips, streamingTips, type SpinnerOptions, type SpinnerColor, type SpinnerState, LoadingState, getLoadingState, setLoading, stopLoading, updateLoading, startTool, endTool, type LoadingStateEvents, type ProgressUpdate, type ProgressCallback, createProgressCallback, formatElapsedTime, formatLoadingMessage, } from "./interfaces/ui/index.js";
21
+ export * from "./native/index.js";
22
+ export { estimateTokens, estimateMessagesTokens, compactMessages, needsCompaction, summarizeMessages, summarizeWithLLM, getCompactionStats, } from "./core/context-compaction.js";
23
+ export type { CompactionOptions, CompactionResult, LLMSummarizationOptions, } from "./core/context-compaction.js";
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../packages/src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,iBAAiB,IAAI,aAAa,EAAE,gBAAgB,IAAI,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACjH,OAAO,EACL,SAAS,EACT,UAAU,EACV,aAAa,EACb,eAAe,EACf,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG9E,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,YAAY,EACZ,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,eAAe,EACf,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,YAAY,EACZ,cAAc,EACd,aAAa,GACd,MAAM,yBAAyB,CAAC;AAGjC,cAAc,4BAA4B,CAAC;AAG3C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,aAAa,IAAI,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAGxE,cAAc,4BAA4B,CAAC;AAG3C,cAAc,6BAA6B,CAAC;AAG5C,cAAc,sBAAsB,CAAC;AAGrC,cAAc,oCAAoC,CAAC;AAGnD,OAAO,EACL,OAAO,EACP,UAAU,EACV,YAAY,EACZ,aAAa,EACb,SAAS,EACT,WAAW,EACX,WAAW,EACX,QAAQ,EACR,aAAa,EACb,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,YAAY,EACZ,eAAe,EACf,UAAU,EACV,WAAW,EACX,aAAa,EACb,SAAS,EACT,OAAO,EACP,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAGlC,cAAc,mBAAmB,CAAC;AAGlC,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,8BAA8B,CAAC;AACtC,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,8BAA8B,CAAC"}
package/dist/index.js CHANGED
@@ -1,2 +1,32 @@
1
- // @bun
2
- import{$ as Lb,A as Z,Aa as Cb,B as p,Ba as kb,C as r,Ca as xb,D as d,Da as pb,E as m,Ea as rb,F as a,Fa as db,G as c,Ga as mb,H as j,I as l,J as n,K as t,L as o,M as i,N as e,O as s,P as bb,Q as qb,R as zb,S as Ab,T as Bb,U as Db,V as Eb,W as Fb,X as Gb,Y as Ib,Z as Jb,_ as Kb,aa as Ob,b as M,ba as Qb,c as P,ca as Ub,d as v,da as Vb,e as C,ea as Wb,f as k,fa as Xb,g as x,ga as Yb,h as q,ha as Zb,i as z,ia as _b,j as A,ja as $b,k as B,ka as fb,l as D,la as gb,m as E,ma as wb,n as F,na as Hb,o as G,oa as Nb,p as I,pa as Rb,q as J,qa as Sb,r as K,ra as b,s as L,t as O,ta as Tb,u as Q,ua as hb,v as U,va as ub,w as V,wa as yb,x as W,xa as Mb,y as X,ya as Pb,z as Y,za as vb}from"./index-6e4wf341.js";export{l as validate_multi_edits,rb as teammateTemplates,k as supportsExtendedThinking,i as quantVersion,Ib as quantVariance,Gb as quantStdDev,Fb as quantMean,Jb as quantCorrelation,o as quant,Z as printSessionsList,n as preview_multi_edits,Mb as parseSkillFile,d as native,p as loadNative,Ab as lmsrPrice,Bb as lmsrCost,L as isSystemTool,kb as isSkillInvocation,J as isReadOnlyTool,e as isQuantAvailable,r as isNativeAvailable,K as isFileEditTool,yb as hookExitCodes,ub as hookEventDocs,a as highlight_markdown,c as highlight_diff,m as highlight_code,Sb as getToolByName,xb as getSkillArgs,db as generateTeammateId,F as generateDescription,Y as formatSessionSummary,U as formatMetrics,V as formatCostBrief,Q as formatCost,W as formatCacheMetrics,Db as detectArbitrage,mb as createTeammate,s as createOHLCV,D as createMessageStream,bb as createAMM,Eb as convertOdds,j as calculate_diff,q as calculateCost,B as calculateCacheMetrics,C as calculateBudgetTokens,Rb as builtInTools,Cb as builtInSkills,hb as builtInHooks,z as buildSystemPrompt,vb as buildSkillPrompt,A as buildCachedMessages,E as assessRiskLevel,t as apply_multi_edits,zb as ammPriceImpact,qb as ammCalculateCost,O as agentLoop,Lb as WriteTool,Hb as TempGlmVisionTool,pb as TeammateManager,Wb as TaskTool,fb as TaskStopTool,Xb as TaskOutputTool,I as TOOL_CATEGORIES,$b as SkillTool,Pb as SkillManager,X as SessionStore,Kb as ReadTool,G as PermissionManager,wb as NotebookEditTool,gb as MultiEditTool,x as MODEL_PRICING,b as MCPClientImpl,b as MCPClient,Tb as HookManager,Vb as GrepTool,Ub as GlobTool,_b as ExitPlanModeTool,Zb as EnterPlanModeTool,Ob as EditTool,P as EFFORT_TO_BUDGET,v as DEFAULT_THINKING_CONFIG,M as DEFAULT_CACHE_CONFIG,Qb as BashTool,Yb as AskUserQuestionTool,Nb as AnalyzeImageTool};
1
+ /**
2
+ * Coder - AI-powered terminal coding assistant
3
+ * Main entry point
4
+ */
5
+ // Types
6
+ export * from "./types/index.js";
7
+ // Core
8
+ export { createMessageStream, calculateCost, buildSystemPrompt, buildCachedMessages, calculateCacheMetrics, } from "./core/api-client.js";
9
+ export { agentLoop, formatCost, formatMetrics, formatCostBrief, formatCacheMetrics, } from "./core/agent-loop.js";
10
+ // Permissions (types are re-exported via ./types/index.js)
11
+ export { PermissionManager, assessRiskLevel, generateDescription, isReadOnlyTool, isFileEditTool, isSystemTool, TOOL_CATEGORIES, } from "./core/permissions.js";
12
+ // Session Store
13
+ export { SessionStore, formatSessionSummary, printSessionsList, } from "./core/session-store.js";
14
+ // Tools
15
+ export * from "./ecosystem/tools/index.js";
16
+ // MCP (renamed to avoid conflict with MCPClient type)
17
+ export { MCPClientImpl } from "./interfaces/mcp/client.js";
18
+ export { MCPClientImpl as MCPClient } from "./interfaces/mcp/client.js";
19
+ // Hooks
20
+ export * from "./ecosystem/hooks/index.js";
21
+ // Skills
22
+ export * from "./ecosystem/skills/index.js";
23
+ // Teammates
24
+ export * from "./teammates/index.js";
25
+ // Cognitive Security
26
+ export * from "./core/cognitive-security/index.js";
27
+ // UI Components (exclude types that are already in types/index.js)
28
+ export { Spinner, getSpinner, resetSpinner, defaultFrames, dotFrames, arrowFrames, defaultTips, toolTips, streamingTips, LoadingState, getLoadingState, setLoading, stopLoading, updateLoading, startTool, endTool, createProgressCallback, formatElapsedTime, formatLoadingMessage, } from "./interfaces/ui/index.js";
29
+ // Native module (Rust)
30
+ export * from "./native/index.js";
31
+ // Context Compaction
32
+ export { estimateTokens, estimateMessagesTokens, compactMessages, needsCompaction, summarizeMessages, summarizeWithLLM, getCompactionStats, } from "./core/context-compaction.js";
@@ -0,0 +1,40 @@
1
+ /**
2
+ * MCP Client - Model Context Protocol implementation
3
+ */
4
+ import type { MCPServerConfig, MCPTool, ToolResult } from "../../types/index.js";
5
+ export interface MCPClientOptions {
6
+ name: string;
7
+ config: MCPServerConfig;
8
+ onLog?: (message: string) => void;
9
+ }
10
+ export declare class MCPClientImpl {
11
+ static readonly MCPClient: typeof MCPClientImpl;
12
+ name: string;
13
+ config: MCPServerConfig;
14
+ connected: boolean;
15
+ tools: MCPTool[];
16
+ private process;
17
+ private websocket;
18
+ private requestId;
19
+ private pendingRequests;
20
+ private buffer;
21
+ private onLog?;
22
+ constructor(options: MCPClientOptions);
23
+ connect(): Promise<void>;
24
+ private connectStdio;
25
+ private connectHttp;
26
+ private connectWebSocket;
27
+ private initialize;
28
+ private loadTools;
29
+ callTool(name: string, args: Record<string, unknown>): Promise<ToolResult>;
30
+ request(method: string, params: unknown): Promise<unknown>;
31
+ notify(method: string, params: unknown): void;
32
+ private handleData;
33
+ close(): Promise<void>;
34
+ private log;
35
+ }
36
+ /**
37
+ * Create MCP clients from config
38
+ */
39
+ export declare function createMCPClients(servers: Record<string, MCPServerConfig>, onLog?: (message: string) => void): Promise<Map<string, MCPClientImpl>>;
40
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../packages/src/interfaces/mcp/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,OAAO,EAKP,UAAU,EACX,MAAM,sBAAsB,CAAC;AAI9B,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,qBAAa,aAAa;IAExB,MAAM,CAAC,QAAQ,CAAC,SAAS,uBAAiB;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,UAAS;IAClB,KAAK,EAAE,OAAO,EAAE,CAAM;IAEtB,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,eAAe,CAMnB;IACJ,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,KAAK,CAAC,CAA4B;gBAE9B,OAAO,EAAE,gBAAgB;IAM/B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAUhB,YAAY;YAoCZ,WAAW;YA6CX,gBAAgB;YA+DhB,UAAU;YAwBV,SAAS;IAsBjB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAgB1E,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAoChE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAiB7C,OAAO,CAAC,UAAU;IA6BZ,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAY5B,OAAO,CAAC,GAAG;CAGZ;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EACxC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAChC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAkBrC"}
@@ -0,0 +1,309 @@
1
+ /**
2
+ * MCP Client - Model Context Protocol implementation
3
+ */
4
+ import { spawn } from "child_process";
5
+ import WebSocket from "ws";
6
+ export class MCPClientImpl {
7
+ // Alias for backwards compatibility
8
+ static MCPClient = MCPClientImpl;
9
+ name;
10
+ config;
11
+ connected = false;
12
+ tools = [];
13
+ process = null;
14
+ websocket = null;
15
+ requestId = 0;
16
+ pendingRequests = new Map();
17
+ buffer = "";
18
+ onLog;
19
+ constructor(options) {
20
+ this.name = options.name;
21
+ this.config = options.config;
22
+ this.onLog = options.onLog;
23
+ }
24
+ async connect() {
25
+ if (this.config.type === "stdio") {
26
+ await this.connectStdio();
27
+ }
28
+ else if (this.config.type === "http" || this.config.type === "sse") {
29
+ await this.connectHttp();
30
+ }
31
+ else if (this.config.type === "ws") {
32
+ await this.connectWebSocket();
33
+ }
34
+ }
35
+ async connectStdio() {
36
+ if (!this.config.command) {
37
+ throw new Error("No command specified for stdio transport");
38
+ }
39
+ this.log(`Starting stdio transport: ${this.config.command}`);
40
+ this.process = spawn(this.config.command, this.config.args || [], {
41
+ env: { ...process.env, ...this.config.env },
42
+ stdio: ["pipe", "pipe", "pipe"],
43
+ });
44
+ this.process.stdout?.on("data", (data) => {
45
+ this.handleData(data.toString());
46
+ });
47
+ this.process.stderr?.on("data", (data) => {
48
+ this.log(`stderr: ${data.toString()}`);
49
+ });
50
+ this.process.on("error", (error) => {
51
+ this.log(`Process error: ${error.message}`);
52
+ });
53
+ this.process.on("close", (code) => {
54
+ this.log(`Process closed with code ${code}`);
55
+ this.connected = false;
56
+ });
57
+ // Wait for process to start
58
+ await new Promise((resolve) => setTimeout(resolve, 100));
59
+ // Initialize connection
60
+ await this.initialize();
61
+ }
62
+ async connectHttp() {
63
+ if (!this.config.url) {
64
+ throw new Error("No URL specified for HTTP transport");
65
+ }
66
+ this.log(`Starting HTTP transport: ${this.config.url}`);
67
+ // For HTTP transport, we just validate the endpoint
68
+ try {
69
+ const response = await fetch(this.config.url, {
70
+ method: "POST",
71
+ headers: {
72
+ "Content-Type": "application/json",
73
+ ...this.config.headers,
74
+ },
75
+ body: JSON.stringify({
76
+ jsonrpc: "2.0",
77
+ id: 1,
78
+ method: "initialize",
79
+ params: {
80
+ protocolVersion: "2024-11-05",
81
+ capabilities: {},
82
+ clientInfo: {
83
+ name: "coder",
84
+ version: "0.1.0",
85
+ },
86
+ },
87
+ }),
88
+ });
89
+ if (!response.ok) {
90
+ throw new Error(`HTTP error: ${response.status}`);
91
+ }
92
+ const result = (await response.json());
93
+ this.connected = true;
94
+ // Get tools
95
+ await this.loadTools();
96
+ }
97
+ catch (error) {
98
+ const errorMessage = error instanceof Error ? error.message : String(error);
99
+ throw new Error(`Failed to connect to HTTP server: ${errorMessage}`);
100
+ }
101
+ }
102
+ async connectWebSocket() {
103
+ if (!this.config.url) {
104
+ throw new Error("No URL specified for WebSocket transport");
105
+ }
106
+ const url = this.config.url;
107
+ this.log(`Starting WebSocket transport: ${url}`);
108
+ return new Promise((resolve, reject) => {
109
+ const headers = {
110
+ ...this.config.headers,
111
+ };
112
+ const ws = new WebSocket(url, {
113
+ headers,
114
+ handshakeTimeout: this.config.timeout || 30000,
115
+ });
116
+ ws.on("open", () => {
117
+ this.log("WebSocket connection established");
118
+ this.websocket = ws;
119
+ this.connected = true;
120
+ // Initialize the MCP connection
121
+ this.initialize()
122
+ .then(() => resolve())
123
+ .catch((error) => {
124
+ const errorMessage = error instanceof Error ? error.message : String(error);
125
+ this.log(`Initialization failed: ${errorMessage}`);
126
+ reject(error);
127
+ });
128
+ });
129
+ ws.on("message", (data, isBinary) => {
130
+ const message = isBinary ? data.toString() : data.toString();
131
+ this.handleData(message);
132
+ });
133
+ ws.on("error", (error) => {
134
+ this.log(`WebSocket error: ${error.message}`);
135
+ if (!this.connected) {
136
+ reject(new Error(`WebSocket connection failed: ${error.message}`));
137
+ }
138
+ });
139
+ ws.on("close", (code, reason) => {
140
+ this.log(`WebSocket closed: code=${code}, reason=${reason.toString()}`);
141
+ this.connected = false;
142
+ this.websocket = null;
143
+ // Reject any pending requests
144
+ for (const [id, pending] of this.pendingRequests) {
145
+ this.pendingRequests.delete(id);
146
+ pending.reject(new Error(`WebSocket closed: ${reason.toString()}`));
147
+ }
148
+ });
149
+ ws.on("ping", () => {
150
+ ws.pong();
151
+ });
152
+ });
153
+ }
154
+ async initialize() {
155
+ const result = await this.request("initialize", {
156
+ protocolVersion: "2024-11-05",
157
+ capabilities: {
158
+ tools: {},
159
+ resources: {},
160
+ prompts: {},
161
+ },
162
+ clientInfo: {
163
+ name: "coder",
164
+ version: "0.1.0",
165
+ },
166
+ });
167
+ this.log(`Initialized with: ${JSON.stringify(result)}`);
168
+ this.connected = true;
169
+ // Send initialized notification
170
+ this.notify("notifications/initialized", {});
171
+ // Load tools
172
+ await this.loadTools();
173
+ }
174
+ async loadTools() {
175
+ try {
176
+ const result = (await this.request("tools/list", {}));
177
+ this.tools = result.tools.map((tool) => ({
178
+ name: tool.name,
179
+ description: tool.description,
180
+ inputSchema: tool.inputSchema,
181
+ }));
182
+ this.log(`Loaded ${this.tools.length} tools`);
183
+ }
184
+ catch (error) {
185
+ this.log(`Failed to load tools: ${error}`);
186
+ }
187
+ }
188
+ async callTool(name, args) {
189
+ const result = (await this.request("tools/call", {
190
+ name,
191
+ arguments: args,
192
+ }));
193
+ const text = result.content
194
+ .filter((c) => c.type === "text")
195
+ .map((c) => c.text || "")
196
+ .join("\n");
197
+ return {
198
+ content: text,
199
+ };
200
+ }
201
+ async request(method, params) {
202
+ const id = ++this.requestId;
203
+ const request = {
204
+ jsonrpc: "2.0",
205
+ id,
206
+ method,
207
+ params,
208
+ };
209
+ return new Promise((resolve, reject) => {
210
+ this.pendingRequests.set(id, { resolve, reject });
211
+ const message = JSON.stringify(request);
212
+ // Send via WebSocket or stdio depending on transport type
213
+ if (this.websocket && this.websocket.readyState === WebSocket.OPEN) {
214
+ this.websocket.send(message);
215
+ }
216
+ else if (this.process?.stdin?.writable) {
217
+ this.process.stdin.write(message + "\n");
218
+ }
219
+ else {
220
+ this.pendingRequests.delete(id);
221
+ reject(new Error("No active connection to send request"));
222
+ return;
223
+ }
224
+ // Timeout
225
+ setTimeout(() => {
226
+ if (this.pendingRequests.has(id)) {
227
+ this.pendingRequests.delete(id);
228
+ reject(new Error(`Request timeout for ${method}`));
229
+ }
230
+ }, this.config.timeout || 120000);
231
+ });
232
+ }
233
+ notify(method, params) {
234
+ const notification = {
235
+ jsonrpc: "2.0",
236
+ method,
237
+ params,
238
+ };
239
+ const message = JSON.stringify(notification);
240
+ // Send via WebSocket or stdio depending on transport type
241
+ if (this.websocket && this.websocket.readyState === WebSocket.OPEN) {
242
+ this.websocket.send(message);
243
+ }
244
+ else if (this.process?.stdin?.writable) {
245
+ this.process.stdin.write(message + "\n");
246
+ }
247
+ }
248
+ handleData(data) {
249
+ this.buffer += data;
250
+ const lines = this.buffer.split("\n");
251
+ this.buffer = lines.pop() || "";
252
+ for (const line of lines) {
253
+ if (!line.trim())
254
+ continue;
255
+ try {
256
+ const response = JSON.parse(line);
257
+ if (response.id !== undefined) {
258
+ const pending = this.pendingRequests.get(response.id);
259
+ if (pending) {
260
+ this.pendingRequests.delete(response.id);
261
+ if (response.error) {
262
+ pending.reject(new Error(response.error.message));
263
+ }
264
+ else {
265
+ pending.resolve(response.result);
266
+ }
267
+ }
268
+ }
269
+ }
270
+ catch (error) {
271
+ this.log(`Parse error: ${error}`);
272
+ }
273
+ }
274
+ }
275
+ async close() {
276
+ if (this.websocket) {
277
+ this.websocket.close();
278
+ this.websocket = null;
279
+ }
280
+ if (this.process) {
281
+ this.process.kill();
282
+ this.process = null;
283
+ }
284
+ this.connected = false;
285
+ }
286
+ log(message) {
287
+ this.onLog?.(`[MCP:${this.name}] ${message}`);
288
+ }
289
+ }
290
+ /**
291
+ * Create MCP clients from config
292
+ */
293
+ export async function createMCPClients(servers, onLog) {
294
+ const clients = new Map();
295
+ for (const [name, config] of Object.entries(servers)) {
296
+ if (config.disabled)
297
+ continue;
298
+ const client = new MCPClientImpl({ name, config, onLog });
299
+ try {
300
+ await client.connect();
301
+ clients.set(name, client);
302
+ }
303
+ catch (error) {
304
+ const errorMessage = error instanceof Error ? error.message : String(error);
305
+ onLog?.(`[MCP:${name}] Failed to connect: ${errorMessage}`);
306
+ }
307
+ }
308
+ return clients;
309
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * UI Components for Coder CLI
3
+ */
4
+ export { Spinner, getSpinner, resetSpinner, defaultFrames, dotFrames, arrowFrames, defaultTips, toolTips, streamingTips, type SpinnerOptions, type SpinnerColor, type SpinnerState, } from "./spinner.js";
5
+ export { LoadingState, getLoadingState, setLoading, stopLoading, updateLoading, startTool, endTool, type LoadingPhase, type LoadingStateData, type LoadingStateEvents, } from "./terminal/shared/loading-state.js";
6
+ export { VERSION, BUILD_TIME, renderStatusLine, renderCompactStatusLine, renderMinimalStatusLine, renderFooterStatus, renderAutoCompactWarning, calculateContextInfo, formatPermissionMode, formatTokenCount, formatContextPercent, getContextWindow, shouldShowAutoCompactWarning, getModelDisplayName, getPermissionModeDisplay, type StatusLineOptions, type ContextInfo, } from "./terminal/shared/status-line.js";
7
+ export { TUIFooter, getTUIFooter, enableTUIFooter, disableTUIFooter, renderTUIFooter, clearTUIFooter, ANSI, type TUIFooterOptions, type TUIFooterState, } from "./terminal/tui/tui-footer.js";
8
+ export { createTUIApp, type TUIAppProps, type TUIAppHandle, type Message as TUIMessage, } from "./terminal/tui/tui-app.js";
9
+ export { default as TUIApp } from "./terminal/tui/tui-app.js";
10
+ /**
11
+ * Progress update for tool execution
12
+ */
13
+ export interface ProgressUpdate {
14
+ toolName: string;
15
+ status: "pending" | "running" | "complete" | "error";
16
+ message?: string;
17
+ progress?: number;
18
+ timestamp: number;
19
+ }
20
+ /**
21
+ * Progress callback type for tool context
22
+ */
23
+ export type ProgressCallback = (update: ProgressUpdate) => void;
24
+ /**
25
+ * Create a progress callback for a specific tool
26
+ */
27
+ export declare function createProgressCallback(toolName: string, onProgress?: (message: string) => void): ProgressCallback;
28
+ /**
29
+ * Format elapsed time for display
30
+ */
31
+ export declare function formatElapsedTime(ms: number): string;
32
+ /**
33
+ * Format a loading message with optional phase
34
+ */
35
+ export declare function formatLoadingMessage(phase: string, message?: string, elapsedTime?: number): string;
36
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../packages/src/interfaces/ui/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,OAAO,EACP,UAAU,EACV,YAAY,EACZ,aAAa,EACb,SAAS,EACT,WAAW,EACX,WAAW,EACX,QAAQ,EACR,aAAa,EACb,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,YAAY,GAClB,MAAM,cAAc,CAAC;AAGtB,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,oCAAoC,CAAC;AAG5C,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,kCAAkC,CAAC;AAG1C,OAAO,EACL,SAAS,EACT,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,IAAI,EACJ,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EACL,YAAY,EACZ,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,OAAO,IAAI,UAAU,GAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAM9D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;AAEhE;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GACrC,gBAAgB,CAOlB;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAoBpD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAYR"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * UI Components for Coder CLI
3
+ */
4
+ // Spinner
5
+ export { Spinner, getSpinner, resetSpinner, defaultFrames, dotFrames, arrowFrames, defaultTips, toolTips, streamingTips, } from "./spinner.js";
6
+ // Loading State (from shared)
7
+ export { LoadingState, getLoadingState, setLoading, stopLoading, updateLoading, startTool, endTool, } from "./terminal/shared/loading-state.js";
8
+ // Status Line (from shared)
9
+ export { VERSION, BUILD_TIME, renderStatusLine, renderCompactStatusLine, renderMinimalStatusLine, renderFooterStatus, renderAutoCompactWarning, calculateContextInfo, formatPermissionMode, formatTokenCount, formatContextPercent, getContextWindow, shouldShowAutoCompactWarning, getModelDisplayName, getPermissionModeDisplay, } from "./terminal/shared/status-line.js";
10
+ // TUI Footer (from tui)
11
+ export { TUIFooter, getTUIFooter, enableTUIFooter, disableTUIFooter, renderTUIFooter, clearTUIFooter, ANSI, } from "./terminal/tui/tui-footer.js";
12
+ // TUI App (Ink-based, from tui)
13
+ export { createTUIApp, } from "./terminal/tui/tui-app.js";
14
+ export { default as TUIApp } from "./terminal/tui/tui-app.js";
15
+ /**
16
+ * Create a progress callback for a specific tool
17
+ */
18
+ export function createProgressCallback(toolName, onProgress) {
19
+ return (update) => {
20
+ if (onProgress) {
21
+ const message = update.message || `${update.toolName}: ${update.status}`;
22
+ onProgress(message);
23
+ }
24
+ };
25
+ }
26
+ // ============================================
27
+ // UTILITY FUNCTIONS
28
+ // ============================================
29
+ /**
30
+ * Format elapsed time for display
31
+ */
32
+ export function formatElapsedTime(ms) {
33
+ if (ms < 1000) {
34
+ return `${ms}ms`;
35
+ }
36
+ const seconds = Math.floor(ms / 1000);
37
+ if (seconds < 60) {
38
+ return `${seconds}s`;
39
+ }
40
+ const minutes = Math.floor(seconds / 60);
41
+ const remainingSeconds = seconds % 60;
42
+ if (minutes < 60) {
43
+ return `${minutes}m${remainingSeconds}s`;
44
+ }
45
+ const hours = Math.floor(minutes / 60);
46
+ const remainingMinutes = minutes % 60;
47
+ return `${hours}h${remainingMinutes}m`;
48
+ }
49
+ /**
50
+ * Format a loading message with optional phase
51
+ */
52
+ export function formatLoadingMessage(phase, message, elapsedTime) {
53
+ let result = phase;
54
+ if (message) {
55
+ result = `${result}: ${message}`;
56
+ }
57
+ if (elapsedTime !== undefined && elapsedTime > 0) {
58
+ result = `${result} [${formatElapsedTime(elapsedTime)}]`;
59
+ }
60
+ return result;
61
+ }
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Spinner Component for Coder CLI
3
+ *
4
+ * Re-exports spinner frames from tui/spinner.ts for backward compatibility.
5
+ */
6
+ import { spinnerFrames, dotSpinnerFrames, asciiSpinnerFrames, arrowSpinnerFrames, simpleDotFrames } from "./terminal/tui/spinner.js";
7
+ export { spinnerFrames, dotSpinnerFrames, asciiSpinnerFrames, arrowSpinnerFrames, simpleDotFrames, };
8
+ export declare const defaultFrames: readonly ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
9
+ export declare const dotFrames: readonly [". ", ".. ", "...", " "];
10
+ export declare const arrowFrames: readonly ["←", "↖", "↑", "↗", "→", "↘", "↓", "↙"];
11
+ export interface SpinnerOptions {
12
+ /** Tip text shown below spinner */
13
+ tip?: string;
14
+ /** Color override */
15
+ color?: SpinnerColor;
16
+ /** Show elapsed time */
17
+ showTime?: boolean;
18
+ /** Tool activity indicator */
19
+ hasActiveTools?: boolean;
20
+ /** Suffix text after spinner */
21
+ suffix?: string;
22
+ /** Verbose mode - show more details */
23
+ verbose?: boolean;
24
+ /** Spinner text prefix */
25
+ prefix?: string;
26
+ /** Disable spinner (for --no-progress) */
27
+ disabled?: boolean;
28
+ }
29
+ export type SpinnerColor = "cyan" | "green" | "yellow" | "blue" | "magenta" | "red" | "white" | "gray";
30
+ export interface SpinnerState {
31
+ isSpinning: boolean;
32
+ startTime: number;
33
+ totalPausedMs: number;
34
+ pauseStartTime: number | null;
35
+ currentTip: string;
36
+ responseLength: number;
37
+ }
38
+ /** Rotating tips shown during loading */
39
+ export declare const defaultTips: string[];
40
+ /** Tips shown during tool execution */
41
+ export declare const toolTips: string[];
42
+ /** Tips shown during API streaming */
43
+ export declare const streamingTips: string[];
44
+ export declare class Spinner {
45
+ private ora;
46
+ private state;
47
+ private options;
48
+ private tipInterval;
49
+ private tipIndex;
50
+ private customTips;
51
+ constructor(options?: SpinnerOptions);
52
+ /**
53
+ * Start the spinner
54
+ */
55
+ start(text?: string): this;
56
+ /**
57
+ * Stop the spinner
58
+ */
59
+ stop(options?: {
60
+ clear?: boolean;
61
+ text?: string;
62
+ symbol?: string;
63
+ }): this;
64
+ /**
65
+ * Stop with success message
66
+ */
67
+ succeed(text?: string): this;
68
+ /**
69
+ * Stop with failure message
70
+ */
71
+ fail(text?: string): this;
72
+ /**
73
+ * Stop with warning message
74
+ */
75
+ warn(text?: string): this;
76
+ /**
77
+ * Stop with info message
78
+ */
79
+ info(text?: string): this;
80
+ /**
81
+ * Update spinner text
82
+ */
83
+ update(text: string): this;
84
+ /**
85
+ * Update the tip text (shown below main text)
86
+ */
87
+ updateTip(tip: string): this;
88
+ /**
89
+ * Set custom tips for rotation
90
+ */
91
+ setTips(tips: string[]): this;
92
+ /**
93
+ * Update response length (for streaming progress)
94
+ */
95
+ updateResponseLength(length: number): this;
96
+ /**
97
+ * Set tool activity state
98
+ */
99
+ setToolActivity(active: boolean): this;
100
+ /**
101
+ * Pause spinner (for user input, etc.)
102
+ */
103
+ pause(): this;
104
+ /**
105
+ * Resume spinner after pause
106
+ */
107
+ resume(): this;
108
+ /**
109
+ * Get elapsed time in seconds (excluding pauses)
110
+ */
111
+ getElapsedSeconds(): number;
112
+ /**
113
+ * Get current state
114
+ */
115
+ getState(): SpinnerState;
116
+ /**
117
+ * Check if spinner is active
118
+ */
119
+ isActive(): boolean;
120
+ /**
121
+ * Clear the spinner line
122
+ */
123
+ clear(): this;
124
+ /**
125
+ * Render spinner frame manually (for non-TTY)
126
+ */
127
+ renderFrame(): string;
128
+ private buildText;
129
+ private startTipRotation;
130
+ private stopTipRotation;
131
+ }
132
+ /**
133
+ * Get or create global spinner instance
134
+ */
135
+ export declare function getSpinner(options?: SpinnerOptions): Spinner;
136
+ /**
137
+ * Reset global spinner (for testing)
138
+ */
139
+ export declare function resetSpinner(): void;
140
+ //# sourceMappingURL=spinner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../../packages/src/interfaces/ui/spinner.ts"],"names":[],"mappings":"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"}