@ebowwa/coder 0.7.63 → 0.7.65

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 (364) 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 +33688 -49712
  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 +32012 -50526
  151. package/dist/interfaces/ui/terminal/native/README.md +53 -0
  152. package/dist/interfaces/ui/terminal/native/claude_code_native.darwin-x64.node +0 -0
  153. package/dist/interfaces/ui/terminal/native/claude_code_native.dylib +0 -0
  154. package/dist/interfaces/ui/terminal/native/index.d.ts +0 -0
  155. package/dist/interfaces/ui/terminal/native/index.darwin-arm64.node +0 -0
  156. package/dist/interfaces/ui/terminal/native/index.js +43 -0
  157. package/dist/interfaces/ui/terminal/native/index.node +0 -0
  158. package/dist/interfaces/ui/terminal/native/package.json +34 -0
  159. package/dist/interfaces/ui/terminal/shared/args.d.ts +39 -0
  160. package/dist/interfaces/ui/terminal/shared/args.d.ts.map +1 -0
  161. package/dist/interfaces/ui/terminal/shared/args.js +176 -0
  162. package/dist/interfaces/ui/terminal/shared/index.d.ts +11 -0
  163. package/dist/interfaces/ui/terminal/shared/index.d.ts.map +1 -0
  164. package/dist/interfaces/ui/terminal/shared/index.js +16 -0
  165. package/dist/interfaces/ui/terminal/shared/loading-state.d.ts +124 -0
  166. package/dist/interfaces/ui/terminal/shared/loading-state.d.ts.map +1 -0
  167. package/dist/interfaces/ui/terminal/shared/loading-state.js +246 -0
  168. package/dist/interfaces/ui/terminal/shared/query.d.ts +22 -0
  169. package/dist/interfaces/ui/terminal/shared/query.d.ts.map +1 -0
  170. package/dist/interfaces/ui/terminal/shared/query.js +100 -0
  171. package/dist/interfaces/ui/terminal/shared/setup.d.ts +33 -0
  172. package/dist/interfaces/ui/terminal/shared/setup.d.ts.map +1 -0
  173. package/dist/interfaces/ui/terminal/shared/setup.js +226 -0
  174. package/dist/interfaces/ui/terminal/shared/status-line.d.ts +117 -0
  175. package/dist/interfaces/ui/terminal/shared/status-line.d.ts.map +1 -0
  176. package/dist/interfaces/ui/terminal/shared/status-line.js +267 -0
  177. package/dist/interfaces/ui/terminal/shared/system-prompt.d.ts +38 -0
  178. package/dist/interfaces/ui/terminal/shared/system-prompt.d.ts.map +1 -0
  179. package/dist/interfaces/ui/terminal/shared/system-prompt.js +102 -0
  180. package/dist/interfaces/ui/terminal/tui/HelpPanel.d.ts +39 -0
  181. package/dist/interfaces/ui/terminal/tui/HelpPanel.d.ts.map +1 -0
  182. package/dist/interfaces/ui/terminal/tui/HelpPanel.js +215 -0
  183. package/dist/interfaces/ui/terminal/tui/InputContext.d.ts +91 -0
  184. package/dist/interfaces/ui/terminal/tui/InputContext.d.ts.map +1 -0
  185. package/dist/interfaces/ui/terminal/tui/InputContext.js +154 -0
  186. package/dist/interfaces/ui/terminal/tui/InputField.d.ts +18 -0
  187. package/dist/interfaces/ui/terminal/tui/InputField.d.ts.map +1 -0
  188. package/dist/interfaces/ui/terminal/tui/InputField.js +41 -0
  189. package/dist/interfaces/ui/terminal/tui/InteractiveTUI.d.ts +16 -0
  190. package/dist/interfaces/ui/terminal/tui/InteractiveTUI.d.ts.map +1 -0
  191. package/dist/interfaces/ui/terminal/tui/InteractiveTUI.js +451 -0
  192. package/dist/interfaces/ui/terminal/tui/MessageArea.d.ts +10 -0
  193. package/dist/interfaces/ui/terminal/tui/MessageArea.d.ts.map +1 -0
  194. package/dist/interfaces/ui/terminal/tui/MessageArea.js +91 -0
  195. package/dist/interfaces/ui/terminal/tui/MessageStore.d.ts +48 -0
  196. package/dist/interfaces/ui/terminal/tui/MessageStore.d.ts.map +1 -0
  197. package/dist/interfaces/ui/terminal/tui/MessageStore.js +151 -0
  198. package/dist/interfaces/ui/terminal/tui/StatusBar.d.ts +9 -0
  199. package/dist/interfaces/ui/terminal/tui/StatusBar.d.ts.map +1 -0
  200. package/dist/interfaces/ui/terminal/tui/StatusBar.js +36 -0
  201. package/dist/interfaces/ui/terminal/tui/commands.d.ts +21 -0
  202. package/dist/interfaces/ui/terminal/tui/commands.d.ts.map +1 -0
  203. package/dist/interfaces/ui/terminal/tui/commands.js +359 -0
  204. package/dist/interfaces/ui/terminal/tui/components/InteractiveElements.d.ts +115 -0
  205. package/dist/interfaces/ui/terminal/tui/components/InteractiveElements.d.ts.map +1 -0
  206. package/dist/interfaces/ui/terminal/tui/components/InteractiveElements.js +306 -0
  207. package/dist/interfaces/ui/terminal/tui/components/MultilineInput.d.ts +92 -0
  208. package/dist/interfaces/ui/terminal/tui/components/MultilineInput.d.ts.map +1 -0
  209. package/dist/interfaces/ui/terminal/tui/components/MultilineInput.js +399 -0
  210. package/dist/interfaces/ui/terminal/tui/components/PaneManager.d.ts +59 -0
  211. package/dist/interfaces/ui/terminal/tui/components/PaneManager.d.ts.map +1 -0
  212. package/dist/interfaces/ui/terminal/tui/components/PaneManager.js +139 -0
  213. package/dist/interfaces/ui/terminal/tui/components/Sidebar.d.ts +68 -0
  214. package/dist/interfaces/ui/terminal/tui/components/Sidebar.d.ts.map +1 -0
  215. package/dist/interfaces/ui/terminal/tui/components/Sidebar.js +340 -0
  216. package/dist/interfaces/ui/terminal/tui/components/index.d.ts +23 -0
  217. package/dist/interfaces/ui/terminal/tui/components/index.d.ts.map +1 -0
  218. package/dist/interfaces/ui/terminal/tui/components/index.js +51 -0
  219. package/dist/interfaces/ui/terminal/tui/console.d.ts +20 -0
  220. package/dist/interfaces/ui/terminal/tui/console.d.ts.map +1 -0
  221. package/dist/interfaces/ui/terminal/tui/console.js +46 -0
  222. package/dist/interfaces/ui/terminal/tui/index.d.ts +20 -0
  223. package/dist/interfaces/ui/terminal/tui/index.d.ts.map +1 -0
  224. package/dist/interfaces/ui/terminal/tui/index.js +28 -0
  225. package/dist/interfaces/ui/terminal/tui/run.d.ts +13 -0
  226. package/dist/interfaces/ui/terminal/tui/run.d.ts.map +1 -0
  227. package/dist/interfaces/ui/terminal/tui/run.js +31 -0
  228. package/dist/interfaces/ui/terminal/tui/spinner.d.ts +44 -0
  229. package/dist/interfaces/ui/terminal/tui/spinner.d.ts.map +1 -0
  230. package/dist/interfaces/ui/terminal/tui/spinner.js +59 -0
  231. package/dist/interfaces/ui/terminal/tui/tui-app.d.ts +39 -0
  232. package/dist/interfaces/ui/terminal/tui/tui-app.d.ts.map +1 -0
  233. package/dist/interfaces/ui/terminal/tui/tui-app.js +198 -0
  234. package/dist/interfaces/ui/terminal/tui/tui-footer.d.ts +167 -0
  235. package/dist/interfaces/ui/terminal/tui/tui-footer.d.ts.map +1 -0
  236. package/dist/interfaces/ui/terminal/tui/tui-footer.js +330 -0
  237. package/dist/interfaces/ui/terminal/tui/types.d.ts +165 -0
  238. package/dist/interfaces/ui/terminal/tui/types.d.ts.map +1 -0
  239. package/dist/interfaces/ui/terminal/tui/types.js +5 -0
  240. package/dist/interfaces/ui/terminal/tui/useInputHandler.d.ts +23 -0
  241. package/dist/interfaces/ui/terminal/tui/useInputHandler.d.ts.map +1 -0
  242. package/dist/interfaces/ui/terminal/tui/useInputHandler.js +72 -0
  243. package/dist/interfaces/ui/terminal/tui/useNativeInput.d.ts +90 -0
  244. package/dist/interfaces/ui/terminal/tui/useNativeInput.d.ts.map +1 -0
  245. package/dist/interfaces/ui/terminal/tui/useNativeInput.js +188 -0
  246. package/dist/native/README.md +53 -0
  247. package/dist/native/claude_code_native.darwin-x64.node +0 -0
  248. package/dist/native/claude_code_native.dylib +0 -0
  249. package/dist/native/index.d.ts +0 -0
  250. package/dist/native/index.d.ts.map +1 -0
  251. package/dist/native/index.darwin-arm64.node +0 -0
  252. package/dist/native/index.js +43 -0
  253. package/dist/native/index.node +0 -0
  254. package/dist/native/package.json +34 -0
  255. package/dist/teammates/index.d.ts +161 -0
  256. package/dist/teammates/index.d.ts.map +1 -0
  257. package/dist/teammates/index.js +827 -0
  258. package/dist/types/index.d.ts +482 -0
  259. package/dist/types/index.d.ts.map +1 -0
  260. package/dist/types/index.js +52 -0
  261. package/native/index.darwin-arm64.node +0 -0
  262. package/native/index.js +33 -19
  263. package/package.json +6 -3
  264. package/packages/src/core/__tests__/permissions.test.ts +1091 -0
  265. package/packages/src/core/agent-loop/__tests__/compaction.test.ts +283 -0
  266. package/packages/src/core/agent-loop/__tests__/formatters.test.ts +234 -0
  267. package/packages/src/core/agent-loop/__tests__/index.test.ts +162 -0
  268. package/packages/src/core/agent-loop/__tests__/loop-state.test.ts +413 -0
  269. package/packages/src/core/agent-loop/__tests__/message-builder.test.ts +229 -0
  270. package/packages/src/core/agent-loop/__tests__/tool-executor.test.ts +457 -0
  271. package/packages/src/core/agent-loop/compaction.ts +92 -0
  272. package/packages/src/core/agent-loop/formatters.ts +50 -0
  273. package/packages/src/core/agent-loop/index.ts +137 -0
  274. package/packages/src/core/agent-loop/loop-state.ts +187 -0
  275. package/packages/src/core/agent-loop/message-builder.ts +62 -0
  276. package/packages/src/core/agent-loop/tool-executor.ts +211 -0
  277. package/packages/src/core/agent-loop/turn-executor.ts +226 -0
  278. package/packages/src/core/agent-loop/types.ts +152 -0
  279. package/packages/src/core/agent-loop.ts +18 -0
  280. package/packages/src/core/api-client-impl.ts +729 -0
  281. package/packages/src/core/api-client.ts +6 -0
  282. package/packages/src/core/checkpoints.ts +606 -0
  283. package/packages/src/core/claude-md.ts +272 -0
  284. package/packages/src/core/cognitive-security/hooks.ts +591 -0
  285. package/packages/src/core/cognitive-security/index.ts +2041 -0
  286. package/packages/src/core/cognitive-security/middleware.ts +536 -0
  287. package/packages/src/core/config/todo +7 -0
  288. package/packages/src/core/config-loader.ts +324 -0
  289. package/packages/src/core/context/__tests__/integration.test.ts +334 -0
  290. package/packages/src/core/context/compaction.ts +170 -0
  291. package/packages/src/core/context/constants.ts +58 -0
  292. package/packages/src/core/context/extraction.ts +85 -0
  293. package/packages/src/core/context/index.ts +66 -0
  294. package/packages/src/core/context/summarization.ts +251 -0
  295. package/packages/src/core/context/token-estimation.ts +98 -0
  296. package/packages/src/core/context/types.ts +59 -0
  297. package/packages/src/core/git-status.ts +262 -0
  298. package/packages/src/core/image.test.ts +180 -0
  299. package/packages/src/core/image.ts +350 -0
  300. package/packages/src/core/lmdb.db +0 -0
  301. package/packages/src/core/lmdb.db-lock +0 -0
  302. package/packages/src/core/models.ts +507 -0
  303. package/packages/src/core/normalizers/todo +8 -0
  304. package/packages/src/core/permissions.ts +431 -0
  305. package/packages/src/core/providers/README.md +230 -0
  306. package/packages/src/core/providers/__tests__/providers.test.ts +135 -0
  307. package/packages/src/core/providers/index.ts +419 -0
  308. package/packages/src/core/providers/types.ts +132 -0
  309. package/packages/src/core/retry.ts +180 -0
  310. package/packages/src/core/session-store.ts +36 -0
  311. package/packages/src/core/sessions/export.ts +329 -0
  312. package/packages/src/core/sessions/index.ts +587 -0
  313. package/packages/src/core/sessions/metadata.ts +309 -0
  314. package/packages/src/core/sessions/persistence.ts +244 -0
  315. package/packages/src/core/sessions/types.ts +169 -0
  316. package/packages/src/core/stream-highlighter.ts +1123 -0
  317. package/packages/src/core/system-reminders.ts +402 -0
  318. package/packages/src/core/todo +8 -0
  319. package/packages/src/ecosystem/hooks/__tests__/index.test.ts +561 -0
  320. package/packages/src/ecosystem/hooks/index.ts +341 -0
  321. package/packages/src/ecosystem/hooks/prompt-evaluator.ts +300 -0
  322. package/packages/src/ecosystem/skills/index.ts +295 -0
  323. package/packages/src/ecosystem/tools/__tests__/index.test.ts +1335 -0
  324. package/packages/src/ecosystem/tools/index.ts +2051 -0
  325. package/packages/src/index.ts +141 -0
  326. package/packages/src/interfaces/mcp/client.ts +389 -0
  327. package/packages/src/interfaces/ui/index.ts +158 -0
  328. package/packages/src/interfaces/ui/lmdb.db +0 -0
  329. package/packages/src/interfaces/ui/lmdb.db-lock +0 -0
  330. package/packages/src/interfaces/ui/spinner.ts +451 -0
  331. package/packages/src/interfaces/ui/terminal/bridge/index.ts +370 -0
  332. package/packages/src/interfaces/ui/terminal/bridge/ipc.ts +829 -0
  333. package/packages/src/interfaces/ui/terminal/bridge/screen-export.ts +968 -0
  334. package/packages/src/interfaces/ui/terminal/bridge/types.ts +226 -0
  335. package/packages/src/interfaces/ui/terminal/bridge/useBridge.ts +210 -0
  336. package/packages/src/interfaces/ui/terminal/cli/bootstrap.ts +132 -0
  337. package/packages/src/interfaces/ui/terminal/cli/index.ts +415 -0
  338. package/packages/src/interfaces/ui/terminal/cli/interactive/index.ts +110 -0
  339. package/packages/src/interfaces/ui/terminal/cli/interactive/input-handler.ts +393 -0
  340. package/packages/src/interfaces/ui/terminal/cli/interactive/interactive-runner.ts +820 -0
  341. package/packages/src/interfaces/ui/terminal/cli/interactive/message-store.ts +299 -0
  342. package/packages/src/interfaces/ui/terminal/cli/interactive/types.ts +274 -0
  343. package/packages/src/interfaces/ui/terminal/lmdb.db +0 -0
  344. package/packages/src/interfaces/ui/terminal/lmdb.db-lock +0 -0
  345. package/packages/src/interfaces/ui/terminal/shared/args.ts +222 -0
  346. package/packages/src/interfaces/ui/terminal/shared/index.ts +84 -0
  347. package/packages/src/interfaces/ui/terminal/shared/loading-state.ts +322 -0
  348. package/packages/src/interfaces/ui/terminal/shared/query.ts +152 -0
  349. package/packages/src/interfaces/ui/terminal/shared/setup.ts +299 -0
  350. package/packages/src/interfaces/ui/terminal/shared/spinner-frames.ts +73 -0
  351. package/packages/src/interfaces/ui/terminal/shared/status-line.ts +366 -0
  352. package/packages/src/interfaces/ui/terminal/shared/system-prompt.ts +146 -0
  353. package/packages/src/lmdb.db +0 -0
  354. package/packages/src/lmdb.db-lock +0 -0
  355. package/packages/src/native/index.ts +2722 -0
  356. package/packages/src/native/tui_v2_types.ts +39 -0
  357. package/packages/src/teammates/coordination.test.ts +279 -0
  358. package/packages/src/teammates/coordination.ts +646 -0
  359. package/packages/src/teammates/index.ts +1052 -0
  360. package/packages/src/teammates/integration.test.ts +272 -0
  361. package/packages/src/teammates/runner.test.ts +235 -0
  362. package/packages/src/teammates/runner.ts +750 -0
  363. package/packages/src/teammates/schemas.ts +673 -0
  364. package/packages/src/types/index.ts +723 -0
@@ -0,0 +1,299 @@
1
+ /**
2
+ * Message Store - Non-React Implementation
3
+ *
4
+ * Centralized message state management extracted from v1 TUI patterns.
5
+ * This is a pure TypeScript class without React dependency.
6
+ *
7
+ * Features:
8
+ * - Single source of truth for messages
9
+ * - Separate UI and API message tracking
10
+ * - Token count management
11
+ * - Change notification system
12
+ */
13
+
14
+ import type { Message as ApiMessage } from "../../../../../types/index.js";
15
+ import type { MessageStore, UIMessage, MessageSubType } from "./types.js";
16
+
17
+ // ============================================
18
+ // UTILITIES
19
+ // ============================================
20
+
21
+ let globalMessageId = 0;
22
+
23
+ function generateId(): string {
24
+ globalMessageId += 1;
25
+ return `msg-${globalMessageId}-${Date.now()}`;
26
+ }
27
+
28
+ /**
29
+ * Extract text content from API message content blocks
30
+ */
31
+ function extractTextContent(content: ApiMessage["content"]): string {
32
+ if (typeof content === "string") {
33
+ return content;
34
+ }
35
+
36
+ return content.map((block) => {
37
+ switch (block.type) {
38
+ case "text":
39
+ return block.text;
40
+ case "tool_use":
41
+ return `[Tool: ${block.name}]\n${JSON.stringify(block.input, null, 2)}`;
42
+ case "tool_result": {
43
+ const resultContent = typeof block.content === "string"
44
+ ? block.content
45
+ : extractTextContent(block.content);
46
+ const prefix = block.is_error ? "[Tool Error]" : "[Tool Result]";
47
+ const truncated = resultContent.length > 500
48
+ ? resultContent.slice(0, 500) + "..."
49
+ : resultContent;
50
+ return `${prefix}\n${truncated}`;
51
+ }
52
+ case "thinking":
53
+ return `[Thinking]\n${block.thinking}`;
54
+ case "redacted_thinking":
55
+ return "[Redacted Thinking]";
56
+ case "image":
57
+ return "[Image]";
58
+ default:
59
+ return "";
60
+ }
61
+ }).join("\n\n");
62
+ }
63
+
64
+ /**
65
+ * Convert API message to UI message
66
+ */
67
+ function apiToUi(msg: ApiMessage): UIMessage | null {
68
+ const content = extractTextContent(msg.content);
69
+ if (!content) return null;
70
+
71
+ return {
72
+ id: generateId(),
73
+ role: msg.role,
74
+ content,
75
+ timestamp: Date.now(),
76
+ };
77
+ }
78
+
79
+ /**
80
+ * Estimate token count from text (rough: ~4 chars per token)
81
+ */
82
+ function estimateTokens(text: string): number {
83
+ if (!text) return 0;
84
+ return Math.ceil(text.length / 4);
85
+ }
86
+
87
+ /**
88
+ * Estimate total tokens from messages
89
+ */
90
+ function estimateMessagesTokens(messages: ApiMessage[]): number {
91
+ let total = 0;
92
+ for (const msg of messages) {
93
+ if (typeof msg.content === "string") {
94
+ total += estimateTokens(msg.content);
95
+ } else if (Array.isArray(msg.content)) {
96
+ for (const block of msg.content) {
97
+ if (block.type === "text") {
98
+ total += estimateTokens(block.text);
99
+ } else if (block.type === "tool_use") {
100
+ total += estimateTokens(JSON.stringify(block.input));
101
+ } else if (block.type === "tool_result") {
102
+ if (typeof block.content === "string") {
103
+ total += estimateTokens(block.content);
104
+ }
105
+ }
106
+ }
107
+ }
108
+ }
109
+ return total;
110
+ }
111
+
112
+ // ============================================
113
+ // MESSAGE STORE CLASS
114
+ // ============================================
115
+
116
+ /**
117
+ * Non-React message store implementation
118
+ *
119
+ * Usage:
120
+ * ```ts
121
+ * const store = new MessageStoreImpl();
122
+ * store.addMessage({ role: "user", content: "Hello" });
123
+ * console.log(store.messages);
124
+ * ```
125
+ */
126
+ export class MessageStoreImpl implements MessageStore {
127
+ private _messages: UIMessage[] = [];
128
+ private _apiMessages: ApiMessage[] = [];
129
+ private _tokenCount = 0;
130
+ private _listeners: Set<() => void> = new Set();
131
+ private _pendingUserMessages: Set<string> = new Set();
132
+
133
+ /** UI messages for display */
134
+ get messages(): UIMessage[] {
135
+ return [...this._messages];
136
+ }
137
+
138
+ /** API messages for context */
139
+ get apiMessages(): ApiMessage[] {
140
+ return [...this._apiMessages];
141
+ }
142
+
143
+ /** Current token count */
144
+ get tokenCount(): number {
145
+ return this._tokenCount;
146
+ }
147
+
148
+ /** Update token count */
149
+ setTokenCount(count: number): void {
150
+ this._tokenCount = count;
151
+ this._notify();
152
+ }
153
+
154
+ /**
155
+ * Add a UI message
156
+ * Returns the message ID
157
+ */
158
+ addMessage(msg: Omit<UIMessage, "id" | "timestamp">): string {
159
+ const id = generateId();
160
+ const fullMsg: UIMessage = {
161
+ ...msg,
162
+ id,
163
+ timestamp: Date.now(),
164
+ };
165
+ this._messages = [...this._messages, fullMsg];
166
+
167
+ // Track user messages added manually (to skip in addApiMessages)
168
+ if (msg.role === "user") {
169
+ this._pendingUserMessages.add(msg.content);
170
+ }
171
+
172
+ this._notify();
173
+ return id;
174
+ }
175
+
176
+ /**
177
+ * Add multiple messages from API response
178
+ */
179
+ addApiMessages(msgs: ApiMessage[]): void {
180
+ if (msgs.length === 0) return;
181
+
182
+ // Update API messages
183
+ this._apiMessages = [...this._apiMessages, ...msgs];
184
+
185
+ // Convert to UI messages, skipping user messages already added manually
186
+ const newUiMsgs = msgs
187
+ .map(apiToUi)
188
+ .filter((m): m is UIMessage => m !== null)
189
+ .filter((m) => {
190
+ if (m.role === "user" && this._pendingUserMessages.has(m.content)) {
191
+ this._pendingUserMessages.delete(m.content);
192
+ return false;
193
+ }
194
+ return true;
195
+ });
196
+
197
+ if (newUiMsgs.length > 0) {
198
+ this._messages = [...this._messages, ...newUiMsgs];
199
+ }
200
+
201
+ // Update token estimate
202
+ this._tokenCount = estimateMessagesTokens(this._apiMessages);
203
+
204
+ this._notify();
205
+ }
206
+
207
+ /**
208
+ * Add system message (convenience method)
209
+ */
210
+ addSystem(
211
+ content: string,
212
+ subType?: MessageSubType,
213
+ toolName?: string,
214
+ isError?: boolean
215
+ ): string {
216
+ return this.addMessage({
217
+ role: "system",
218
+ content,
219
+ subType,
220
+ toolName,
221
+ isError,
222
+ });
223
+ }
224
+
225
+ /**
226
+ * Clear all messages
227
+ */
228
+ clear(): void {
229
+ this._messages = [];
230
+ this._apiMessages = [];
231
+ this._pendingUserMessages.clear();
232
+ this._tokenCount = 0;
233
+ this._notify();
234
+ }
235
+
236
+ /**
237
+ * Replace all messages (for undo/redo)
238
+ */
239
+ replace(ui: UIMessage[], api: ApiMessage[]): void {
240
+ this._messages = [...ui];
241
+ this._apiMessages = [...api];
242
+ this._pendingUserMessages.clear();
243
+ this._tokenCount = estimateMessagesTokens(this._apiMessages);
244
+ this._notify();
245
+ }
246
+
247
+ /**
248
+ * Subscribe to store changes
249
+ * Returns unsubscribe function
250
+ */
251
+ subscribe(listener: () => void): () => void {
252
+ this._listeners.add(listener);
253
+ return () => {
254
+ this._listeners.delete(listener);
255
+ };
256
+ }
257
+
258
+ /**
259
+ * Notify all listeners of a change
260
+ */
261
+ private _notify(): void {
262
+ for (const listener of this._listeners) {
263
+ try {
264
+ listener();
265
+ } catch (err) {
266
+ console.error("MessageStore listener error:", err);
267
+ }
268
+ }
269
+ }
270
+ }
271
+
272
+ // ============================================
273
+ // SINGLETON (optional convenience)
274
+ // ============================================
275
+
276
+ let globalStore: MessageStoreImpl | null = null;
277
+
278
+ /**
279
+ * Get or create the global message store
280
+ */
281
+ export function getMessageStore(): MessageStoreImpl {
282
+ if (!globalStore) {
283
+ globalStore = new MessageStoreImpl();
284
+ }
285
+ return globalStore;
286
+ }
287
+
288
+ /**
289
+ * Reset the global message store (for testing)
290
+ */
291
+ export function resetMessageStore(): void {
292
+ globalStore = null;
293
+ }
294
+
295
+ // ============================================
296
+ // EXPORTS
297
+ // ============================================
298
+
299
+ export type { MessageStore, UIMessage, MessageSubType } from "./types.js";
@@ -0,0 +1,274 @@
1
+ /**
2
+ * CLI Interactive Types
3
+ * Type definitions for the non-React interactive mode
4
+ *
5
+ * Extracted from v1 TUI patterns without Ink dependency
6
+ */
7
+
8
+ import type { PermissionMode, ClaudeModel, Message as ApiMessage, ToolDefinition } from "../../../../../types/index.js";
9
+ import type { HookManager } from "../../../../../ecosystem/hooks/index.js";
10
+ import type { LoadedSession, SessionSummary } from "../../../../../core/sessions/types.js";
11
+ import type { TeammateModeRunner } from "../../../../../teammates/runner.js";
12
+
13
+ // ============================================
14
+ // MESSAGE TYPES
15
+ // ============================================
16
+
17
+ /**
18
+ * Message sub-type for granular categorization
19
+ */
20
+ export type MessageSubType =
21
+ | "tool_call"
22
+ | "tool_result"
23
+ | "hook"
24
+ | "info"
25
+ | "error"
26
+ | "thinking";
27
+
28
+ /**
29
+ * UI-specific message representation
30
+ */
31
+ export interface UIMessage {
32
+ id: string;
33
+ role: "user" | "assistant" | "system";
34
+ content: string;
35
+ timestamp: number;
36
+ subType?: MessageSubType;
37
+ toolName?: string;
38
+ isError?: boolean;
39
+ }
40
+
41
+ // ============================================
42
+ // MESSAGE STORE TYPES
43
+ // ============================================
44
+
45
+ /**
46
+ * Message store interface for non-React usage
47
+ */
48
+ export interface MessageStore {
49
+ /** UI messages for display */
50
+ messages: UIMessage[];
51
+ /** API messages for context */
52
+ apiMessages: ApiMessage[];
53
+ /** Add a UI message */
54
+ addMessage(msg: Omit<UIMessage, "id" | "timestamp">): string;
55
+ /** Add multiple messages from API response */
56
+ addApiMessages(msgs: ApiMessage[]): void;
57
+ /** Add system message (convenience) */
58
+ addSystem(content: string, subType?: MessageSubType, toolName?: string, isError?: boolean): string;
59
+ /** Clear all messages */
60
+ clear(): void;
61
+ /** Replace messages (for undo/redo) */
62
+ replace(ui: UIMessage[], api: ApiMessage[]): void;
63
+ /** Total token count */
64
+ tokenCount: number;
65
+ /** Update token count */
66
+ setTokenCount(count: number): void;
67
+ /** Subscribe to store changes */
68
+ subscribe(listener: () => void): () => void;
69
+ }
70
+
71
+ // ============================================
72
+ // INPUT HANDLER TYPES
73
+ // ============================================
74
+
75
+ /**
76
+ * Native key event representation for input handling
77
+ *
78
+ * This is the TypeScript interface used by input handlers.
79
+ * It's converted from the native module's InputEvent format.
80
+ */
81
+ export interface NativeKeyEvent {
82
+ /** Key code or character */
83
+ code: string;
84
+ /** Whether this is a special/control key */
85
+ is_special: boolean;
86
+ /** Ctrl modifier state */
87
+ ctrl: boolean;
88
+ /** Alt modifier state */
89
+ alt: boolean;
90
+ /** Shift modifier state */
91
+ shift: boolean;
92
+ /** Key event kind */
93
+ kind: "press" | "release" | "repeat";
94
+ }
95
+
96
+ /**
97
+ * Input handler function type
98
+ */
99
+ export type InputHandler = (event: NativeKeyEvent) => boolean;
100
+
101
+ /**
102
+ * Input handler registration options
103
+ */
104
+ export interface InputHandlerOptions {
105
+ /** Unique ID for this handler */
106
+ id: string;
107
+ /** Priority (higher = receives input first) */
108
+ priority?: number;
109
+ /** Handler function - return true to consume, false to pass through */
110
+ handler: InputHandler;
111
+ /** Whether this handler is currently active */
112
+ isActive?: boolean;
113
+ }
114
+
115
+ /**
116
+ * Input manager interface for non-React usage
117
+ */
118
+ export interface InputManager {
119
+ /** Register an input handler */
120
+ register(options: InputHandlerOptions): () => void;
121
+ /** Set focus to a specific handler */
122
+ focus(handlerId: string): void;
123
+ /** Get currently focused handler ID */
124
+ focusedId: string | null;
125
+ /** Dispatch a key event to handlers */
126
+ dispatch(event: NativeKeyEvent): boolean;
127
+ /** Whether input is currently blocked */
128
+ isBlocked: boolean;
129
+ /** Block/unblock input (for loading states) */
130
+ setBlocked(blocked: boolean): void;
131
+ }
132
+
133
+ // ============================================
134
+ // INTERACTIVE RUNNER TYPES
135
+ // ============================================
136
+
137
+ /**
138
+ * Props for the interactive runner
139
+ */
140
+ export interface InteractiveRunnerProps {
141
+ apiKey: string;
142
+ model: ClaudeModel;
143
+ permissionMode: PermissionMode;
144
+ maxTokens: number;
145
+ systemPrompt: string;
146
+ tools: ToolDefinition[];
147
+ hookManager: HookManager;
148
+ sessionStore: SessionStore;
149
+ sessionId: string;
150
+ setSessionId: (id: string) => void;
151
+ initialMessages: ApiMessage[];
152
+ workingDirectory: string;
153
+ teammateRunner?: TeammateModeRunner | null;
154
+ onExit?: () => Promise<void> | void;
155
+ }
156
+
157
+ /**
158
+ * Session store interface (subset used by interactive mode)
159
+ */
160
+ export interface SessionStore {
161
+ saveMessage(message: ApiMessage): Promise<void>;
162
+ saveMetrics(metrics: unknown): Promise<void>;
163
+ exportSession(sessionId: string, format: "jsonl" | "json" | "markdown"): Promise<string>;
164
+ listSessions(limit?: number): Promise<SessionSummary[]>;
165
+ resumeSession(sessionId: string): Promise<LoadedSession | null>;
166
+ createSession(options: {
167
+ model: string;
168
+ workingDirectory: string;
169
+ agentName?: string;
170
+ agentColor?: string;
171
+ teamName?: string;
172
+ }): Promise<string>;
173
+ }
174
+
175
+ /**
176
+ * Session info for listing
177
+ */
178
+ export interface SessionInfo {
179
+ id: string;
180
+ messageCount: number;
181
+ lastActivity?: number;
182
+ metadata?: Record<string, unknown>;
183
+ }
184
+
185
+ /**
186
+ * Interactive runner state
187
+ */
188
+ export interface InteractiveState {
189
+ isLoading: boolean;
190
+ inputValue: string;
191
+ cursorPos: number;
192
+ scrollOffset: number;
193
+ totalCost: number;
194
+ spinnerFrame: string;
195
+ streamingText: string;
196
+ inputHistory: string[];
197
+ historyIndex: number;
198
+ sessionSelectMode: boolean;
199
+ selectableSessions: SessionInfo[];
200
+ helpMode: boolean;
201
+ helpSection: number;
202
+ }
203
+
204
+ // ============================================
205
+ // COMMAND TYPES
206
+ // ============================================
207
+
208
+ /**
209
+ * Command handler context
210
+ */
211
+ export interface CommandContext {
212
+ sessionId: string;
213
+ setSessionId: (id: string) => void;
214
+ model: ClaudeModel;
215
+ setModel: (model: ClaudeModel) => void;
216
+ messageStore: MessageStore;
217
+ totalCost: number;
218
+ setTotalCost: (cost: number) => void;
219
+ permissionMode: PermissionMode;
220
+ tools: ToolDefinition[];
221
+ workingDirectory: string;
222
+ sessionStore: SessionStore;
223
+ messagesLength: number;
224
+ onExit: () => void;
225
+ exit: () => void;
226
+ state: InteractiveState;
227
+ setState: (state: Partial<InteractiveState>) => void;
228
+ }
229
+
230
+ // ============================================
231
+ // CONTEXT INFO TYPES
232
+ // ============================================
233
+
234
+ /**
235
+ * Context info from status-line calculations
236
+ */
237
+ export interface ContextInfo {
238
+ percentRemaining: number;
239
+ isLow: boolean;
240
+ isCritical: boolean;
241
+ }
242
+
243
+ // ============================================
244
+ // PRIORITY CONSTANTS
245
+ // ============================================
246
+
247
+ /**
248
+ * Input priority levels
249
+ */
250
+ export const InputPriority = {
251
+ /** Normal components */
252
+ DEFAULT: 0,
253
+ /** Focused input fields */
254
+ INPUT: 10,
255
+ /** Selectable lists */
256
+ LIST: 20,
257
+ /** Modal dialogs */
258
+ MODAL: 100,
259
+ /** System-level (Ctrl+C, etc.) */
260
+ SYSTEM: 1000,
261
+ } as const;
262
+
263
+ // ============================================
264
+ // RE-EXPORTS
265
+ // ============================================
266
+
267
+ export type {
268
+ PermissionMode,
269
+ ClaudeModel,
270
+ Message as ApiMessage,
271
+ ToolDefinition,
272
+ } from "../../../../../types/index.js";
273
+ export type { HookManager } from "../../../../../ecosystem/hooks/index.js";
274
+ export type { SkillManager } from "../../../../../ecosystem/skills/index.js";