@ebowwa/coder 0.7.63 → 0.7.64

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (341) hide show
  1. package/dist/core/__tests__/permissions.test.d.ts +12 -0
  2. package/dist/core/__tests__/permissions.test.d.ts.map +1 -0
  3. package/dist/core/__tests__/permissions.test.js +851 -0
  4. package/dist/core/agent-loop/__tests__/compaction.test.d.ts +5 -0
  5. package/dist/core/agent-loop/__tests__/compaction.test.d.ts.map +1 -0
  6. package/dist/core/agent-loop/__tests__/compaction.test.js +209 -0
  7. package/dist/core/agent-loop/__tests__/formatters.test.d.ts +5 -0
  8. package/dist/core/agent-loop/__tests__/formatters.test.d.ts.map +1 -0
  9. package/dist/core/agent-loop/__tests__/formatters.test.js +195 -0
  10. package/dist/core/agent-loop/__tests__/index.test.d.ts +5 -0
  11. package/dist/core/agent-loop/__tests__/index.test.d.ts.map +1 -0
  12. package/dist/core/agent-loop/__tests__/index.test.js +121 -0
  13. package/dist/core/agent-loop/__tests__/loop-state.test.d.ts +5 -0
  14. package/dist/core/agent-loop/__tests__/loop-state.test.d.ts.map +1 -0
  15. package/dist/core/agent-loop/__tests__/loop-state.test.js +340 -0
  16. package/dist/core/agent-loop/__tests__/message-builder.test.d.ts +5 -0
  17. package/dist/core/agent-loop/__tests__/message-builder.test.d.ts.map +1 -0
  18. package/dist/core/agent-loop/__tests__/message-builder.test.js +178 -0
  19. package/dist/core/agent-loop/__tests__/tool-executor.test.d.ts +5 -0
  20. package/dist/core/agent-loop/__tests__/tool-executor.test.d.ts.map +1 -0
  21. package/dist/core/agent-loop/__tests__/tool-executor.test.js +331 -0
  22. package/dist/core/agent-loop/compaction.d.ts +39 -0
  23. package/dist/core/agent-loop/compaction.d.ts.map +1 -0
  24. package/dist/core/agent-loop/compaction.js +51 -0
  25. package/dist/core/agent-loop/formatters.d.ts +21 -0
  26. package/dist/core/agent-loop/formatters.d.ts.map +1 -0
  27. package/dist/core/agent-loop/formatters.js +42 -0
  28. package/dist/core/agent-loop/index.d.ts +25 -0
  29. package/dist/core/agent-loop/index.d.ts.map +1 -0
  30. package/dist/core/agent-loop/index.js +83 -0
  31. package/dist/core/agent-loop/loop-state.d.ts +74 -0
  32. package/dist/core/agent-loop/loop-state.d.ts.map +1 -0
  33. package/dist/core/agent-loop/loop-state.js +147 -0
  34. package/dist/core/agent-loop/message-builder.d.ts +13 -0
  35. package/dist/core/agent-loop/message-builder.d.ts.map +1 -0
  36. package/dist/core/agent-loop/message-builder.js +49 -0
  37. package/dist/core/agent-loop/tool-executor.d.ts +23 -0
  38. package/dist/core/agent-loop/tool-executor.d.ts.map +1 -0
  39. package/dist/core/agent-loop/tool-executor.js +152 -0
  40. package/dist/core/agent-loop/turn-executor.d.ts +57 -0
  41. package/dist/core/agent-loop/turn-executor.d.ts.map +1 -0
  42. package/dist/core/agent-loop/turn-executor.js +124 -0
  43. package/dist/core/agent-loop/types.d.ts +141 -0
  44. package/dist/core/agent-loop/types.d.ts.map +1 -0
  45. package/dist/core/agent-loop/types.js +4 -0
  46. package/dist/core/agent-loop.d.ts +17 -0
  47. package/dist/core/agent-loop.d.ts.map +1 -0
  48. package/dist/core/agent-loop.js +16 -0
  49. package/dist/core/api-client-impl.d.ts +62 -0
  50. package/dist/core/api-client-impl.d.ts.map +1 -0
  51. package/dist/core/api-client-impl.js +479 -0
  52. package/dist/core/api-client.d.ts +6 -0
  53. package/dist/core/api-client.d.ts.map +1 -0
  54. package/dist/core/api-client.js +5 -0
  55. package/dist/core/checkpoints.d.ts +128 -0
  56. package/dist/core/checkpoints.d.ts.map +1 -0
  57. package/dist/core/checkpoints.js +438 -0
  58. package/dist/core/claude-md.d.ts +71 -0
  59. package/dist/core/claude-md.d.ts.map +1 -0
  60. package/dist/core/claude-md.js +198 -0
  61. package/dist/core/cognitive-security/hooks.d.ts +138 -0
  62. package/dist/core/cognitive-security/hooks.d.ts.map +1 -0
  63. package/dist/core/cognitive-security/hooks.js +389 -0
  64. package/dist/core/cognitive-security/index.d.ts +751 -0
  65. package/dist/core/cognitive-security/index.d.ts.map +1 -0
  66. package/dist/core/cognitive-security/index.js +1123 -0
  67. package/dist/core/cognitive-security/middleware.d.ts +136 -0
  68. package/dist/core/cognitive-security/middleware.d.ts.map +1 -0
  69. package/dist/core/cognitive-security/middleware.js +376 -0
  70. package/dist/core/config-loader.d.ts +127 -0
  71. package/dist/core/config-loader.d.ts.map +1 -0
  72. package/dist/core/config-loader.js +219 -0
  73. package/dist/core/context-compaction.d.ts +87 -0
  74. package/dist/core/context-compaction.d.ts.map +1 -0
  75. package/dist/core/context-compaction.js +428 -0
  76. package/dist/core/git-status.d.ts +25 -0
  77. package/dist/core/git-status.d.ts.map +1 -0
  78. package/dist/core/git-status.js +204 -0
  79. package/dist/core/image.d.ts +69 -0
  80. package/dist/core/image.d.ts.map +1 -0
  81. package/dist/core/image.js +290 -0
  82. package/dist/core/image.test.d.ts +2 -0
  83. package/dist/core/image.test.d.ts.map +1 -0
  84. package/dist/core/image.test.js +149 -0
  85. package/dist/core/models.d.ts +123 -0
  86. package/dist/core/models.d.ts.map +1 -0
  87. package/dist/core/models.js +325 -0
  88. package/dist/core/permissions.d.ts +81 -0
  89. package/dist/core/permissions.d.ts.map +1 -0
  90. package/dist/core/permissions.js +327 -0
  91. package/dist/core/retry.d.ts +25 -0
  92. package/dist/core/retry.d.ts.map +1 -0
  93. package/dist/core/retry.js +121 -0
  94. package/dist/core/session-store.d.ts +9 -0
  95. package/dist/core/session-store.d.ts.map +1 -0
  96. package/dist/core/session-store.js +10 -0
  97. package/dist/core/sessions/export.d.ts +47 -0
  98. package/dist/core/sessions/export.d.ts.map +1 -0
  99. package/dist/core/sessions/export.js +256 -0
  100. package/dist/core/sessions/index.d.ts +132 -0
  101. package/dist/core/sessions/index.d.ts.map +1 -0
  102. package/dist/core/sessions/index.js +442 -0
  103. package/dist/core/sessions/metadata.d.ts +77 -0
  104. package/dist/core/sessions/metadata.d.ts.map +1 -0
  105. package/dist/core/sessions/metadata.js +233 -0
  106. package/dist/core/sessions/persistence.d.ts +72 -0
  107. package/dist/core/sessions/persistence.d.ts.map +1 -0
  108. package/dist/core/sessions/persistence.js +201 -0
  109. package/dist/core/sessions/types.d.ts +110 -0
  110. package/dist/core/sessions/types.d.ts.map +1 -0
  111. package/dist/core/sessions/types.js +4 -0
  112. package/dist/core/stream-highlighter.d.ts +18 -0
  113. package/dist/core/stream-highlighter.d.ts.map +1 -0
  114. package/dist/core/stream-highlighter.js +916 -0
  115. package/dist/core/system-reminders.d.ts +89 -0
  116. package/dist/core/system-reminders.d.ts.map +1 -0
  117. package/dist/core/system-reminders.js +285 -0
  118. package/dist/ecosystem/hooks/__tests__/index.test.d.ts +5 -0
  119. package/dist/ecosystem/hooks/__tests__/index.test.d.ts.map +1 -0
  120. package/dist/ecosystem/hooks/__tests__/index.test.js +458 -0
  121. package/dist/ecosystem/hooks/index.d.ts +59 -0
  122. package/dist/ecosystem/hooks/index.d.ts.map +1 -0
  123. package/dist/ecosystem/hooks/index.js +294 -0
  124. package/dist/ecosystem/hooks/prompt-evaluator.d.ts +32 -0
  125. package/dist/ecosystem/hooks/prompt-evaluator.d.ts.map +1 -0
  126. package/dist/ecosystem/hooks/prompt-evaluator.js +229 -0
  127. package/dist/ecosystem/skills/index.d.ts +55 -0
  128. package/dist/ecosystem/skills/index.d.ts.map +1 -0
  129. package/dist/ecosystem/skills/index.js +258 -0
  130. package/dist/ecosystem/tools/__tests__/index.test.d.ts +7 -0
  131. package/dist/ecosystem/tools/__tests__/index.test.d.ts.map +1 -0
  132. package/dist/ecosystem/tools/__tests__/index.test.js +856 -0
  133. package/dist/ecosystem/tools/index.d.ts +24 -0
  134. package/dist/ecosystem/tools/index.d.ts.map +1 -0
  135. package/dist/ecosystem/tools/index.js +1709 -0
  136. package/dist/index.d.ts +24 -0
  137. package/dist/index.d.ts.map +1 -0
  138. package/dist/index.js +32 -52192
  139. package/dist/interfaces/mcp/client.d.ts +40 -0
  140. package/dist/interfaces/mcp/client.d.ts.map +1 -0
  141. package/dist/interfaces/mcp/client.js +309 -0
  142. package/dist/interfaces/ui/index.d.ts +36 -0
  143. package/dist/interfaces/ui/index.d.ts.map +1 -0
  144. package/dist/interfaces/ui/index.js +61 -0
  145. package/dist/interfaces/ui/spinner.d.ts +140 -0
  146. package/dist/interfaces/ui/spinner.d.ts.map +1 -0
  147. package/dist/interfaces/ui/spinner.js +342 -0
  148. package/dist/interfaces/ui/terminal/cli/index.d.ts +12 -0
  149. package/dist/interfaces/ui/terminal/cli/index.d.ts.map +1 -0
  150. package/dist/interfaces/ui/terminal/cli/index.js +159 -52768
  151. package/dist/interfaces/ui/terminal/shared/args.d.ts +39 -0
  152. package/dist/interfaces/ui/terminal/shared/args.d.ts.map +1 -0
  153. package/dist/interfaces/ui/terminal/shared/args.js +176 -0
  154. package/dist/interfaces/ui/terminal/shared/index.d.ts +11 -0
  155. package/dist/interfaces/ui/terminal/shared/index.d.ts.map +1 -0
  156. package/dist/interfaces/ui/terminal/shared/index.js +16 -0
  157. package/dist/interfaces/ui/terminal/shared/loading-state.d.ts +124 -0
  158. package/dist/interfaces/ui/terminal/shared/loading-state.d.ts.map +1 -0
  159. package/dist/interfaces/ui/terminal/shared/loading-state.js +246 -0
  160. package/dist/interfaces/ui/terminal/shared/query.d.ts +22 -0
  161. package/dist/interfaces/ui/terminal/shared/query.d.ts.map +1 -0
  162. package/dist/interfaces/ui/terminal/shared/query.js +100 -0
  163. package/dist/interfaces/ui/terminal/shared/setup.d.ts +33 -0
  164. package/dist/interfaces/ui/terminal/shared/setup.d.ts.map +1 -0
  165. package/dist/interfaces/ui/terminal/shared/setup.js +226 -0
  166. package/dist/interfaces/ui/terminal/shared/status-line.d.ts +117 -0
  167. package/dist/interfaces/ui/terminal/shared/status-line.d.ts.map +1 -0
  168. package/dist/interfaces/ui/terminal/shared/status-line.js +267 -0
  169. package/dist/interfaces/ui/terminal/shared/system-prompt.d.ts +38 -0
  170. package/dist/interfaces/ui/terminal/shared/system-prompt.d.ts.map +1 -0
  171. package/dist/interfaces/ui/terminal/shared/system-prompt.js +102 -0
  172. package/dist/interfaces/ui/terminal/tui/HelpPanel.d.ts +39 -0
  173. package/dist/interfaces/ui/terminal/tui/HelpPanel.d.ts.map +1 -0
  174. package/dist/interfaces/ui/terminal/tui/HelpPanel.js +215 -0
  175. package/dist/interfaces/ui/terminal/tui/InputContext.d.ts +91 -0
  176. package/dist/interfaces/ui/terminal/tui/InputContext.d.ts.map +1 -0
  177. package/dist/interfaces/ui/terminal/tui/InputContext.js +154 -0
  178. package/dist/interfaces/ui/terminal/tui/InputField.d.ts +18 -0
  179. package/dist/interfaces/ui/terminal/tui/InputField.d.ts.map +1 -0
  180. package/dist/interfaces/ui/terminal/tui/InputField.js +41 -0
  181. package/dist/interfaces/ui/terminal/tui/InteractiveTUI.d.ts +16 -0
  182. package/dist/interfaces/ui/terminal/tui/InteractiveTUI.d.ts.map +1 -0
  183. package/dist/interfaces/ui/terminal/tui/InteractiveTUI.js +451 -0
  184. package/dist/interfaces/ui/terminal/tui/MessageArea.d.ts +10 -0
  185. package/dist/interfaces/ui/terminal/tui/MessageArea.d.ts.map +1 -0
  186. package/dist/interfaces/ui/terminal/tui/MessageArea.js +91 -0
  187. package/dist/interfaces/ui/terminal/tui/MessageStore.d.ts +48 -0
  188. package/dist/interfaces/ui/terminal/tui/MessageStore.d.ts.map +1 -0
  189. package/dist/interfaces/ui/terminal/tui/MessageStore.js +151 -0
  190. package/dist/interfaces/ui/terminal/tui/StatusBar.d.ts +9 -0
  191. package/dist/interfaces/ui/terminal/tui/StatusBar.d.ts.map +1 -0
  192. package/dist/interfaces/ui/terminal/tui/StatusBar.js +36 -0
  193. package/dist/interfaces/ui/terminal/tui/commands.d.ts +21 -0
  194. package/dist/interfaces/ui/terminal/tui/commands.d.ts.map +1 -0
  195. package/dist/interfaces/ui/terminal/tui/commands.js +359 -0
  196. package/dist/interfaces/ui/terminal/tui/components/InteractiveElements.d.ts +115 -0
  197. package/dist/interfaces/ui/terminal/tui/components/InteractiveElements.d.ts.map +1 -0
  198. package/dist/interfaces/ui/terminal/tui/components/InteractiveElements.js +306 -0
  199. package/dist/interfaces/ui/terminal/tui/components/MultilineInput.d.ts +92 -0
  200. package/dist/interfaces/ui/terminal/tui/components/MultilineInput.d.ts.map +1 -0
  201. package/dist/interfaces/ui/terminal/tui/components/MultilineInput.js +399 -0
  202. package/dist/interfaces/ui/terminal/tui/components/PaneManager.d.ts +59 -0
  203. package/dist/interfaces/ui/terminal/tui/components/PaneManager.d.ts.map +1 -0
  204. package/dist/interfaces/ui/terminal/tui/components/PaneManager.js +139 -0
  205. package/dist/interfaces/ui/terminal/tui/components/Sidebar.d.ts +68 -0
  206. package/dist/interfaces/ui/terminal/tui/components/Sidebar.d.ts.map +1 -0
  207. package/dist/interfaces/ui/terminal/tui/components/Sidebar.js +340 -0
  208. package/dist/interfaces/ui/terminal/tui/components/index.d.ts +23 -0
  209. package/dist/interfaces/ui/terminal/tui/components/index.d.ts.map +1 -0
  210. package/dist/interfaces/ui/terminal/tui/components/index.js +51 -0
  211. package/dist/interfaces/ui/terminal/tui/console.d.ts +20 -0
  212. package/dist/interfaces/ui/terminal/tui/console.d.ts.map +1 -0
  213. package/dist/interfaces/ui/terminal/tui/console.js +46 -0
  214. package/dist/interfaces/ui/terminal/tui/index.d.ts +20 -0
  215. package/dist/interfaces/ui/terminal/tui/index.d.ts.map +1 -0
  216. package/dist/interfaces/ui/terminal/tui/index.js +28 -0
  217. package/dist/interfaces/ui/terminal/tui/run.d.ts +13 -0
  218. package/dist/interfaces/ui/terminal/tui/run.d.ts.map +1 -0
  219. package/dist/interfaces/ui/terminal/tui/run.js +31 -0
  220. package/dist/interfaces/ui/terminal/tui/spinner.d.ts +44 -0
  221. package/dist/interfaces/ui/terminal/tui/spinner.d.ts.map +1 -0
  222. package/dist/interfaces/ui/terminal/tui/spinner.js +59 -0
  223. package/dist/interfaces/ui/terminal/tui/tui-app.d.ts +39 -0
  224. package/dist/interfaces/ui/terminal/tui/tui-app.d.ts.map +1 -0
  225. package/dist/interfaces/ui/terminal/tui/tui-app.js +198 -0
  226. package/dist/interfaces/ui/terminal/tui/tui-footer.d.ts +167 -0
  227. package/dist/interfaces/ui/terminal/tui/tui-footer.d.ts.map +1 -0
  228. package/dist/interfaces/ui/terminal/tui/tui-footer.js +330 -0
  229. package/dist/interfaces/ui/terminal/tui/types.d.ts +165 -0
  230. package/dist/interfaces/ui/terminal/tui/types.d.ts.map +1 -0
  231. package/dist/interfaces/ui/terminal/tui/types.js +5 -0
  232. package/dist/interfaces/ui/terminal/tui/useInputHandler.d.ts +23 -0
  233. package/dist/interfaces/ui/terminal/tui/useInputHandler.d.ts.map +1 -0
  234. package/dist/interfaces/ui/terminal/tui/useInputHandler.js +72 -0
  235. package/dist/interfaces/ui/terminal/tui/useNativeInput.d.ts +90 -0
  236. package/dist/interfaces/ui/terminal/tui/useNativeInput.d.ts.map +1 -0
  237. package/dist/interfaces/ui/terminal/tui/useNativeInput.js +188 -0
  238. package/dist/native/index.d.ts +480 -0
  239. package/dist/native/index.d.ts.map +1 -0
  240. package/dist/native/index.js +1625 -0
  241. package/dist/teammates/index.d.ts +161 -0
  242. package/dist/teammates/index.d.ts.map +1 -0
  243. package/dist/teammates/index.js +827 -0
  244. package/dist/types/index.d.ts +482 -0
  245. package/dist/types/index.d.ts.map +1 -0
  246. package/dist/types/index.js +52 -0
  247. package/package.json +4 -2
  248. package/packages/src/core/__tests__/permissions.test.ts +1091 -0
  249. package/packages/src/core/agent-loop/__tests__/compaction.test.ts +280 -0
  250. package/packages/src/core/agent-loop/__tests__/formatters.test.ts +234 -0
  251. package/packages/src/core/agent-loop/__tests__/index.test.ts +162 -0
  252. package/packages/src/core/agent-loop/__tests__/loop-state.test.ts +413 -0
  253. package/packages/src/core/agent-loop/__tests__/message-builder.test.ts +229 -0
  254. package/packages/src/core/agent-loop/__tests__/tool-executor.test.ts +457 -0
  255. package/packages/src/core/agent-loop/compaction.ts +88 -0
  256. package/packages/src/core/agent-loop/formatters.ts +50 -0
  257. package/packages/src/core/agent-loop/index.ts +135 -0
  258. package/packages/src/core/agent-loop/loop-state.ts +187 -0
  259. package/packages/src/core/agent-loop/message-builder.ts +62 -0
  260. package/packages/src/core/agent-loop/tool-executor.ts +211 -0
  261. package/packages/src/core/agent-loop/turn-executor.ts +222 -0
  262. package/packages/src/core/agent-loop/types.ts +148 -0
  263. package/packages/src/core/agent-loop.ts +18 -0
  264. package/packages/src/core/api-client-impl.ts +619 -0
  265. package/packages/src/core/api-client.ts +6 -0
  266. package/packages/src/core/checkpoints.ts +606 -0
  267. package/packages/src/core/claude-md.ts +272 -0
  268. package/packages/src/core/cognitive-security/hooks.ts +590 -0
  269. package/packages/src/core/cognitive-security/index.ts +2041 -0
  270. package/packages/src/core/cognitive-security/middleware.ts +536 -0
  271. package/packages/src/core/config-loader.ts +324 -0
  272. package/packages/src/core/context-compaction.ts +578 -0
  273. package/packages/src/core/git-status.ts +262 -0
  274. package/packages/src/core/image.test.ts +180 -0
  275. package/packages/src/core/image.ts +350 -0
  276. package/packages/src/core/lmdb.db +0 -0
  277. package/packages/src/core/lmdb.db-lock +0 -0
  278. package/packages/src/core/models.ts +430 -0
  279. package/packages/src/core/normalizers/todo +4 -0
  280. package/packages/src/core/permissions.ts +431 -0
  281. package/packages/src/core/retry.ts +170 -0
  282. package/packages/src/core/session-store.ts +36 -0
  283. package/packages/src/core/sessions/export.ts +329 -0
  284. package/packages/src/core/sessions/index.ts +587 -0
  285. package/packages/src/core/sessions/metadata.ts +309 -0
  286. package/packages/src/core/sessions/persistence.ts +244 -0
  287. package/packages/src/core/sessions/types.ts +169 -0
  288. package/packages/src/core/stream-highlighter.ts +1123 -0
  289. package/packages/src/core/system-reminders.ts +402 -0
  290. package/packages/src/core/todo +8 -0
  291. package/packages/src/ecosystem/hooks/__tests__/index.test.ts +561 -0
  292. package/packages/src/ecosystem/hooks/index.ts +341 -0
  293. package/packages/src/ecosystem/hooks/prompt-evaluator.ts +300 -0
  294. package/packages/src/ecosystem/skills/index.ts +295 -0
  295. package/packages/src/ecosystem/tools/__tests__/index.test.ts +1335 -0
  296. package/packages/src/ecosystem/tools/index.ts +1877 -0
  297. package/packages/src/index.ts +120 -0
  298. package/packages/src/interfaces/mcp/client.ts +389 -0
  299. package/packages/src/interfaces/ui/Screenshot 2026-03-02 at 9.23.10/342/200/257PM.png +0 -0
  300. package/packages/src/interfaces/ui/Screenshot 2026-03-03 at 10.55.11/342/200/257AM.png +0 -0
  301. package/packages/src/interfaces/ui/index.ts +161 -0
  302. package/packages/src/interfaces/ui/lmdb.db +0 -0
  303. package/packages/src/interfaces/ui/lmdb.db-lock +0 -0
  304. package/packages/src/interfaces/ui/spinner.ts +451 -0
  305. package/packages/src/interfaces/ui/terminal/cli/index.ts +228 -0
  306. package/packages/src/interfaces/ui/terminal/lmdb.db +0 -0
  307. package/packages/src/interfaces/ui/terminal/lmdb.db-lock +0 -0
  308. package/packages/src/interfaces/ui/terminal/shared/args.ts +222 -0
  309. package/packages/src/interfaces/ui/terminal/shared/index.ts +71 -0
  310. package/packages/src/interfaces/ui/terminal/shared/loading-state.ts +322 -0
  311. package/packages/src/interfaces/ui/terminal/shared/query.ts +146 -0
  312. package/packages/src/interfaces/ui/terminal/shared/setup.ts +295 -0
  313. package/packages/src/interfaces/ui/terminal/shared/status-line.ts +358 -0
  314. package/packages/src/interfaces/ui/terminal/shared/system-prompt.ts +146 -0
  315. package/packages/src/interfaces/ui/terminal/tui/HelpPanel.tsx +262 -0
  316. package/packages/src/interfaces/ui/terminal/tui/InputContext.tsx +232 -0
  317. package/packages/src/interfaces/ui/terminal/tui/InputField.tsx +62 -0
  318. package/packages/src/interfaces/ui/terminal/tui/InteractiveTUI.tsx +537 -0
  319. package/packages/src/interfaces/ui/terminal/tui/MessageArea.tsx +107 -0
  320. package/packages/src/interfaces/ui/terminal/tui/MessageStore.tsx +240 -0
  321. package/packages/src/interfaces/ui/terminal/tui/StatusBar.tsx +54 -0
  322. package/packages/src/interfaces/ui/terminal/tui/commands.ts +438 -0
  323. package/packages/src/interfaces/ui/terminal/tui/components/InteractiveElements.tsx +584 -0
  324. package/packages/src/interfaces/ui/terminal/tui/components/MultilineInput.tsx +614 -0
  325. package/packages/src/interfaces/ui/terminal/tui/components/PaneManager.tsx +333 -0
  326. package/packages/src/interfaces/ui/terminal/tui/components/Sidebar.tsx +604 -0
  327. package/packages/src/interfaces/ui/terminal/tui/components/index.ts +118 -0
  328. package/packages/src/interfaces/ui/terminal/tui/console.ts +49 -0
  329. package/packages/src/interfaces/ui/terminal/tui/index.ts +90 -0
  330. package/packages/src/interfaces/ui/terminal/tui/run.tsx +42 -0
  331. package/packages/src/interfaces/ui/terminal/tui/spinner.ts +69 -0
  332. package/packages/src/interfaces/ui/terminal/tui/tui-app.tsx +390 -0
  333. package/packages/src/interfaces/ui/terminal/tui/tui-footer.ts +422 -0
  334. package/packages/src/interfaces/ui/terminal/tui/types.ts +186 -0
  335. package/packages/src/interfaces/ui/terminal/tui/useInputHandler.ts +104 -0
  336. package/packages/src/interfaces/ui/terminal/tui/useNativeInput.ts +239 -0
  337. package/packages/src/lmdb.db +0 -0
  338. package/packages/src/lmdb.db-lock +0 -0
  339. package/packages/src/native/index.ts +2345 -0
  340. package/packages/src/teammates/index.ts +982 -0
  341. package/packages/src/types/index.ts +722 -0
@@ -0,0 +1,722 @@
1
+ /**
2
+ * Core Types for Coder
3
+ */
4
+
5
+ // Import types needed for forward references
6
+ import type { PermissionMode as PermissionModeType } from "../core/permissions.js";
7
+
8
+ // ============================================
9
+ // MESSAGE TYPES
10
+ // ============================================
11
+
12
+ export interface Message {
13
+ role: "user" | "assistant";
14
+ content: ContentBlock[];
15
+ }
16
+
17
+ export type ContentBlock =
18
+ | TextBlock
19
+ | ImageBlock
20
+ | ToolUseBlock
21
+ | ToolResultBlock
22
+ | ThinkingBlock
23
+ | RedactedThinkingBlock;
24
+
25
+ export interface TextBlock {
26
+ type: "text";
27
+ text: string;
28
+ cache_control?: CacheControl;
29
+ }
30
+
31
+ export interface ImageBlock {
32
+ type: "image";
33
+ source: {
34
+ type: "base64";
35
+ data: string;
36
+ media_type: MediaType;
37
+ };
38
+ }
39
+
40
+ export interface ToolUseBlock {
41
+ type: "tool_use";
42
+ id: string;
43
+ name: string;
44
+ input: Record<string, unknown>;
45
+ }
46
+
47
+ export interface ToolResultBlock {
48
+ type: "tool_result";
49
+ tool_use_id: string;
50
+ content: string | ContentBlock[];
51
+ is_error?: boolean;
52
+ }
53
+
54
+ export interface ThinkingBlock {
55
+ type: "thinking";
56
+ thinking: string;
57
+ }
58
+
59
+ export interface RedactedThinkingBlock {
60
+ type: "redacted_thinking";
61
+ data: string;
62
+ }
63
+
64
+ export interface CacheControl {
65
+ type: "ephemeral";
66
+ ttl?: CacheTTL;
67
+ }
68
+
69
+ export type CacheTTL = "1h" | "5m";
70
+
71
+ export interface CacheConfig {
72
+ enabled: boolean;
73
+ ttl: CacheTTL;
74
+ cacheSystemPrompt: boolean;
75
+ cacheTools: boolean;
76
+ minTokensForCache: number;
77
+ }
78
+
79
+ export const DEFAULT_CACHE_CONFIG: CacheConfig = {
80
+ enabled: true,
81
+ ttl: "1h",
82
+ cacheSystemPrompt: true,
83
+ cacheTools: true,
84
+ minTokensForCache: 1024,
85
+ };
86
+
87
+ export type MediaType = "image/jpeg" | "image/png" | "image/gif" | "image/webp";
88
+
89
+ // ============================================
90
+ // TOOL DEFINITIONS
91
+ // ============================================
92
+
93
+ export interface ToolDefinition {
94
+ name: string;
95
+ description: string;
96
+ input_schema: JSONSchema;
97
+ handler: ToolHandler;
98
+ }
99
+
100
+ export interface JSONSchema {
101
+ type: "object";
102
+ properties: Record<string, SchemaProperty>;
103
+ required?: string[];
104
+ additionalProperties?: boolean;
105
+ }
106
+
107
+ export interface SchemaProperty {
108
+ type: string;
109
+ description?: string;
110
+ enum?: string[];
111
+ default?: unknown;
112
+ items?: SchemaProperty;
113
+ properties?: Record<string, SchemaProperty>;
114
+ required?: string[];
115
+ minimum?: number;
116
+ maximum?: number;
117
+ minItems?: number;
118
+ maxItems?: number;
119
+ }
120
+
121
+ export type ToolHandler = (
122
+ args: Record<string, unknown>,
123
+ context: ToolContext
124
+ ) => Promise<ToolResult>;
125
+
126
+ export interface ToolContext {
127
+ workingDirectory: string;
128
+ permissionMode: PermissionModeType;
129
+ abortSignal?: AbortSignal;
130
+ onProgress?: (message: string) => void;
131
+ }
132
+
133
+ export interface ToolResult {
134
+ content: string | ContentBlock[];
135
+ is_error?: boolean;
136
+ }
137
+
138
+ // ============================================
139
+ // PERMISSION SYSTEM
140
+ // ============================================
141
+
142
+ // Re-export from the canonical permission system in permissions.ts
143
+ export type {
144
+ PermissionMode,
145
+ PermissionDecision,
146
+ PermissionRequest,
147
+ PermissionResult,
148
+ PermissionCache,
149
+ PermissionPromptCallback,
150
+ } from "../core/permissions.js";
151
+
152
+ // Keep RiskLevel here as it's used in other contexts
153
+ export type RiskLevel = "low" | "medium" | "high";
154
+
155
+ // ============================================
156
+ // CONFIGURATION
157
+ // ============================================
158
+
159
+ export interface ClaudeConfig {
160
+ model: ModelConfig;
161
+ mcp: MCPConfig;
162
+ permissions: PermissionConfig;
163
+ hooks?: HookConfig;
164
+ skills?: SkillConfig;
165
+ telemetry?: TelemetryConfig;
166
+ }
167
+
168
+ export interface ModelConfig {
169
+ model: ClaudeModel;
170
+ maxTokens?: number;
171
+ temperature?: number;
172
+ systemPrompt?: string;
173
+ appendSystemPrompt?: string;
174
+ thinking?: ThinkingConfig;
175
+ effort?: EffortLevel;
176
+ }
177
+
178
+ export type ClaudeModel =
179
+ | "claude-opus-4-6"
180
+ | "claude-sonnet-4-6"
181
+ | "claude-haiku-4-5"
182
+ | string;
183
+
184
+ export type ThinkingConfig =
185
+ | { type: "disabled" }
186
+ | { type: "enabled"; budget_tokens: number }
187
+ | { type: "adaptive" };
188
+
189
+ export type EffortLevel = "low" | "medium" | "high" | "max";
190
+
191
+ /**
192
+ * Extended Thinking configuration with effort levels
193
+ * Budget tokens control how many tokens the model can use for thinking
194
+ */
195
+ export interface ExtendedThinkingConfig {
196
+ /** Enable extended thinking */
197
+ enabled: boolean;
198
+ /** Budget in tokens (1024-100000), or use effort level */
199
+ budgetTokens?: number;
200
+ /** Effort level: low (1k), medium (4k), high (16k), max (100k) */
201
+ effort?: EffortLevel;
202
+ /** Allow interleaved thinking (thinking during tool use) */
203
+ interleaved?: boolean;
204
+ /** Model-specific budget multiplier */
205
+ modelMultiplier?: number;
206
+ }
207
+
208
+ /**
209
+ * Map effort levels to budget tokens
210
+ */
211
+ export const EFFORT_TO_BUDGET: Record<EffortLevel, number> = {
212
+ low: 1024, // ~1k tokens - quick thinking
213
+ medium: 4096, // ~4k tokens - standard thinking
214
+ high: 16384, // ~16k tokens - deep reasoning
215
+ max: 100000, // ~100k tokens - maximum reasoning
216
+ };
217
+
218
+ /**
219
+ * Default extended thinking config
220
+ */
221
+ export const DEFAULT_THINKING_CONFIG: ExtendedThinkingConfig = {
222
+ enabled: false,
223
+ effort: "medium",
224
+ interleaved: true,
225
+ };
226
+
227
+ /**
228
+ * Calculate budget tokens from config
229
+ */
230
+ export function calculateBudgetTokens(
231
+ config: ExtendedThinkingConfig,
232
+ model: string
233
+ ): number {
234
+ if (config.budgetTokens) {
235
+ return config.budgetTokens;
236
+ }
237
+
238
+ const effort = config.effort || "medium";
239
+ const baseBudget = EFFORT_TO_BUDGET[effort];
240
+
241
+ // Apply model multiplier (Opus gets more thinking budget by default)
242
+ const multiplier = config.modelMultiplier ?? (model.includes("opus") ? 2 : 1);
243
+
244
+ return Math.min(baseBudget * multiplier, 100000);
245
+ }
246
+
247
+ /**
248
+ * Check if model supports extended thinking
249
+ */
250
+ export function supportsExtendedThinking(model: string): boolean {
251
+ // Extended thinking is supported on Claude 4.x models
252
+ return model.includes("claude-opus-4") ||
253
+ model.includes("claude-sonnet-4") ||
254
+ model.includes("claude-haiku-4") ||
255
+ model.includes("claude-4");
256
+ }
257
+
258
+ export interface MCPConfig {
259
+ servers: Record<string, MCPServerConfig>;
260
+ }
261
+
262
+ export interface MCPServerConfig {
263
+ type: "stdio" | "http" | "sse" | "ws";
264
+ command?: string;
265
+ args?: string[];
266
+ url?: string;
267
+ env?: Record<string, string>;
268
+ headers?: Record<string, string>;
269
+ timeout?: number;
270
+ disabled?: boolean;
271
+ }
272
+
273
+ export interface PermissionConfig {
274
+ mode: PermissionModeType;
275
+ allowedTools?: string[];
276
+ disallowedTools?: string[];
277
+ }
278
+
279
+ export interface TelemetryConfig {
280
+ enabled: boolean;
281
+ endpoint?: string;
282
+ }
283
+
284
+ // ============================================
285
+ // HOOK SYSTEM
286
+ // ============================================
287
+
288
+ export type HookEvent =
289
+ | "PreToolUse"
290
+ | "PostToolUse"
291
+ | "PostToolUseFailure"
292
+ | "Stop"
293
+ | "UserPromptSubmit"
294
+ | "SessionStart"
295
+ | "SessionEnd"
296
+ | "Notification"
297
+ | "ConfigChange"
298
+ | "WorktreeCreate";
299
+
300
+ export interface HookDefinition {
301
+ event: HookEvent;
302
+ command: string;
303
+ /** Prompt template for LLM-based hooks (alternative to command) */
304
+ prompt?: string;
305
+ /** Timeout for LLM evaluation (default: 30000) */
306
+ timeout?: number;
307
+ enabled?: boolean;
308
+ /** Matcher pattern for filtering which tools this hook applies to */
309
+ matcher?: string;
310
+ }
311
+
312
+ export interface HookConfig {
313
+ hooks: Record<HookEvent, HookDefinition[]>;
314
+ }
315
+
316
+ export interface HookInput {
317
+ event: HookEvent;
318
+ tool_name?: string;
319
+ tool_input?: Record<string, unknown>;
320
+ tool_result?: ToolResult;
321
+ tool_result_is_error?: boolean;
322
+ error?: string;
323
+ session_id?: string;
324
+ prompt?: string;
325
+ timestamp: number;
326
+ }
327
+
328
+ export interface HookOutput {
329
+ decision?: "allow" | "block" | "deny";
330
+ reason?: string;
331
+ modified_input?: Record<string, unknown>;
332
+ errors?: string[];
333
+ }
334
+
335
+ // ============================================
336
+ // SKILL SYSTEM
337
+ // ============================================
338
+
339
+ export interface SkillDefinition {
340
+ name: string;
341
+ description: string;
342
+ prompt: string;
343
+ tools?: string[];
344
+ model?: ClaudeModel;
345
+ color?: string;
346
+ source: "built-in" | "project" | "user";
347
+ }
348
+
349
+ export interface SkillConfig {
350
+ skills: Record<string, SkillDefinition>;
351
+ }
352
+
353
+ // ============================================
354
+ // TEAMMATE SYSTEM
355
+ // ============================================
356
+
357
+ export interface Teammate {
358
+ teammateId: string;
359
+ name: string;
360
+ teamName: string;
361
+ color: string;
362
+ prompt: string;
363
+ planModeRequired: boolean;
364
+ paneId?: string;
365
+ status: TeammateStatus;
366
+ }
367
+
368
+ export type TeammateStatus =
369
+ | "pending"
370
+ | "in_progress"
371
+ | "idle"
372
+ | "completed"
373
+ | "failed";
374
+
375
+ export interface Team {
376
+ name: string;
377
+ description: string;
378
+ teammates: Teammate[];
379
+ taskListId: string;
380
+ status: "active" | "paused" | "completed" | "archived";
381
+ coordination: CoordinationSettings;
382
+ }
383
+
384
+ export interface CoordinationSettings {
385
+ dependencyOrder: string[];
386
+ communicationProtocol: "broadcast" | "direct" | "mixed";
387
+ taskAssignmentStrategy: "manual" | "auto" | "priority";
388
+ }
389
+
390
+ export interface TeammateMessage {
391
+ type: "broadcast" | "direct" | "notification";
392
+ from: string;
393
+ to?: string;
394
+ content: string;
395
+ timestamp: number;
396
+ }
397
+
398
+ // ============================================
399
+ // API TYPES
400
+ // ============================================
401
+
402
+ export interface APIRequest {
403
+ model: string;
404
+ max_tokens: number;
405
+ messages: Message[];
406
+ system?: string | SystemBlock[];
407
+ tools?: APITool[];
408
+ tool_choice?: ToolChoice;
409
+ thinking?: ThinkingConfig;
410
+ stream?: boolean;
411
+ }
412
+
413
+ export interface SystemBlock {
414
+ type: "text";
415
+ text: string;
416
+ cache_control?: CacheControl;
417
+ }
418
+
419
+ export interface APITool {
420
+ name: string;
421
+ description: string;
422
+ input_schema: JSONSchema;
423
+ }
424
+
425
+ export type ToolChoice =
426
+ | { type: "auto" }
427
+ | { type: "any" }
428
+ | { type: "tool"; name: string }
429
+ | undefined;
430
+
431
+ export interface APIResponse {
432
+ id: string;
433
+ type: "message";
434
+ role: "assistant";
435
+ content: ContentBlock[];
436
+ model: string;
437
+ stop_reason: StopReason;
438
+ stop_sequence: string | null;
439
+ usage: UsageMetrics;
440
+ }
441
+
442
+ export type StopReason =
443
+ | "end_turn"
444
+ | "max_tokens"
445
+ | "stop_sequence"
446
+ | "tool_use"
447
+ | null;
448
+
449
+ export interface UsageMetrics {
450
+ input_tokens: number;
451
+ output_tokens: number;
452
+ cache_creation_input_tokens?: number;
453
+ cache_read_input_tokens?: number;
454
+ cache_creation?: CacheCreation;
455
+ /** Extended thinking tokens used */
456
+ thinking_tokens?: number;
457
+ /** Redacted thinking tokens (counted but not exposed) */
458
+ redacted_thinking_tokens?: number;
459
+ }
460
+
461
+ export interface CacheCreation {
462
+ ephemeral_1h_input_tokens: number;
463
+ ephemeral_5m_input_tokens: number;
464
+ }
465
+
466
+ export interface CacheMetrics {
467
+ cacheHits: number;
468
+ cacheMisses: number;
469
+ totalCacheReadTokens: number;
470
+ totalCacheWriteTokens: number;
471
+ cacheHitRate: number;
472
+ estimatedSavingsUSD: number;
473
+ }
474
+
475
+ // ============================================
476
+ // STREAMING TYPES
477
+ // ============================================
478
+
479
+ export type SSEEvent =
480
+ | "message_start"
481
+ | "content_block_start"
482
+ | "content_block_delta"
483
+ | "content_block_stop"
484
+ | "message_delta"
485
+ | "message_stop"
486
+ | "error";
487
+
488
+ export interface SSEMessage {
489
+ event: SSEEvent;
490
+ data: string;
491
+ }
492
+
493
+ export interface MessageStartEvent {
494
+ type: "message_start";
495
+ message: APIResponse;
496
+ }
497
+
498
+ export interface ContentBlockStartEvent {
499
+ type: "content_block_start";
500
+ index: number;
501
+ content_block: ContentBlock;
502
+ }
503
+
504
+ export interface ContentBlockDeltaEvent {
505
+ type: "content_block_delta";
506
+ index: number;
507
+ delta: TextDelta | ToolUseDelta | ThinkingDelta;
508
+ }
509
+
510
+ export interface TextDelta {
511
+ type: "text_delta";
512
+ text: string;
513
+ }
514
+
515
+ export interface ToolUseDelta {
516
+ type: "input_json_delta";
517
+ partial_json: string;
518
+ }
519
+
520
+ export interface ThinkingDelta {
521
+ type: "thinking_delta";
522
+ thinking: string;
523
+ }
524
+
525
+ export interface RedactedThinkingDelta {
526
+ type: "redacted_thinking_delta";
527
+ data: string;
528
+ }
529
+
530
+ export type ContentDelta = TextDelta | ToolUseDelta | ThinkingDelta | RedactedThinkingDelta;
531
+
532
+ // ============================================
533
+ // AGENT LOOP TYPES
534
+ // ============================================
535
+
536
+ export interface AgentState {
537
+ messages: Message[];
538
+ tools: ToolDefinition[];
539
+ context: ContextSnapshot;
540
+ metrics: QueryMetrics;
541
+ abortController: AbortController;
542
+ }
543
+
544
+ export interface ContextSnapshot {
545
+ workingDirectory: string;
546
+ gitStatus?: GitStatus;
547
+ fileHistory: FileHistorySnapshot[];
548
+ systemPrompt: string;
549
+ systemReminders: string[];
550
+ }
551
+
552
+ export interface GitStatus {
553
+ branch: string;
554
+ ahead: number;
555
+ behind: number;
556
+ staged: string[];
557
+ unstaged: string[];
558
+ untracked: string[];
559
+ conflicted: string[];
560
+ }
561
+
562
+ export interface FileHistorySnapshot {
563
+ path: string;
564
+ content: string;
565
+ timestamp: number;
566
+ }
567
+
568
+ export interface QueryMetrics {
569
+ model: string;
570
+ messageCount: number;
571
+ messageTokens: number;
572
+ usage: UsageMetrics;
573
+ cacheMetrics?: CacheMetrics;
574
+ durationMs: number;
575
+ ttftMs: number;
576
+ costUSD: number;
577
+ stopReason: StopReason;
578
+ requestId: string;
579
+ }
580
+
581
+ // ============================================
582
+ // SESSION TYPES
583
+ // ============================================
584
+
585
+ export interface SessionState {
586
+ sessionId: string;
587
+ messages: Message[];
588
+ context: ContextSnapshot;
589
+ fileHistory: FileHistorySnapshot[];
590
+ agentName?: string;
591
+ agentColor?: string;
592
+ timestamp: number;
593
+ }
594
+
595
+ export interface SessionStorage {
596
+ path: string;
597
+ format: "jsonl" | "json";
598
+ compression: boolean;
599
+ }
600
+
601
+ // ============================================
602
+ // COST TRACKING
603
+ // ============================================
604
+
605
+ export interface ModelPricing {
606
+ input: number;
607
+ output: number;
608
+ cache_write: number;
609
+ cache_read: number;
610
+ }
611
+
612
+ // Re-export MODEL_PRICING from models.ts for backwards compatibility
613
+ export { MODEL_PRICING } from "../core/models.js";
614
+
615
+ // ============================================
616
+ // MCP TYPES
617
+ // ============================================
618
+
619
+ export interface JSONRPCRequest {
620
+ jsonrpc: "2.0";
621
+ id: string | number;
622
+ method: string;
623
+ params?: unknown;
624
+ }
625
+
626
+ export interface JSONRPCResponse {
627
+ jsonrpc: "2.0";
628
+ id: string | number;
629
+ result?: unknown;
630
+ error?: JSONRPCError;
631
+ }
632
+
633
+ export interface JSONRPCError {
634
+ code: number;
635
+ message: string;
636
+ data?: unknown;
637
+ }
638
+
639
+ export interface JSONRPCNotification {
640
+ jsonrpc: "2.0";
641
+ method: string;
642
+ params?: unknown;
643
+ }
644
+
645
+ export interface MCPTool {
646
+ name: string;
647
+ description: string;
648
+ inputSchema: JSONSchema;
649
+ }
650
+
651
+ export interface MCPClient {
652
+ name: string;
653
+ config: MCPServerConfig;
654
+ connected: boolean;
655
+ tools: MCPTool[];
656
+ }
657
+
658
+ // ============================================
659
+ // UI TYPES
660
+ // ============================================
661
+
662
+ export type SpinnerColor =
663
+ | "cyan"
664
+ | "green"
665
+ | "yellow"
666
+ | "blue"
667
+ | "magenta"
668
+ | "red"
669
+ | "white"
670
+ | "gray";
671
+
672
+ export interface SpinnerOptions {
673
+ /** Tip text shown below spinner */
674
+ tip?: string;
675
+ /** Color override */
676
+ color?: SpinnerColor;
677
+ /** Show elapsed time */
678
+ showTime?: boolean;
679
+ /** Tool activity indicator */
680
+ hasActiveTools?: boolean;
681
+ /** Suffix text after spinner */
682
+ suffix?: string;
683
+ /** Verbose mode - show more details */
684
+ verbose?: boolean;
685
+ /** Spinner text prefix */
686
+ prefix?: string;
687
+ /** Disable spinner (for --no-progress) */
688
+ disabled?: boolean;
689
+ }
690
+
691
+ export type LoadingPhase =
692
+ | "idle"
693
+ | "initializing"
694
+ | "loading-config"
695
+ | "connecting-mcp"
696
+ | "api-request"
697
+ | "streaming"
698
+ | "tool-execution"
699
+ | "processing"
700
+ | "checkpointing";
701
+
702
+ export interface LoadingStateData {
703
+ isLoading: boolean;
704
+ phase: LoadingPhase;
705
+ message: string;
706
+ startTime: number;
707
+ activeTools: Set<string>;
708
+ activeToolCount: number;
709
+ responseLength: number;
710
+ paused: boolean;
711
+ pausedTime: number;
712
+ }
713
+
714
+ export interface ProgressUpdate {
715
+ toolName: string;
716
+ status: "pending" | "running" | "complete" | "error";
717
+ message?: string;
718
+ progress?: number; // 0-100
719
+ timestamp: number;
720
+ }
721
+
722
+ export type ProgressCallback = (update: ProgressUpdate) => void;