@compilr-dev/cli 0.4.0 → 0.5.1

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 (634) hide show
  1. package/README.md +254 -68
  2. package/dist/.tsbuildinfo.app +1 -0
  3. package/dist/.tsbuildinfo.data +1 -0
  4. package/dist/.tsbuildinfo.domain +1 -0
  5. package/dist/.tsbuildinfo.foundation +1 -0
  6. package/dist/agent.d.ts +134 -4
  7. package/dist/agent.js +345 -166
  8. package/dist/anchors/index.d.ts +9 -0
  9. package/dist/anchors/index.js +9 -0
  10. package/dist/anchors/project-anchors.d.ts +79 -0
  11. package/dist/anchors/project-anchors.js +202 -0
  12. package/dist/auth/api-client.d.ts +124 -0
  13. package/dist/auth/api-client.js +261 -0
  14. package/dist/auth/index.d.ts +172 -0
  15. package/dist/auth/index.js +545 -0
  16. package/dist/auth/storage.d.ts +52 -0
  17. package/dist/auth/storage.js +118 -0
  18. package/dist/changelog/index.d.ts +16 -0
  19. package/dist/changelog/index.js +24 -0
  20. package/dist/changelog/releases.d.ts +17 -0
  21. package/dist/changelog/releases.js +63 -0
  22. package/dist/commands/index.d.ts +2 -1
  23. package/dist/commands-v2/handlers/auth.d.ts +10 -0
  24. package/dist/commands-v2/handlers/auth.js +118 -0
  25. package/dist/commands-v2/handlers/background.d.ts +14 -0
  26. package/dist/commands-v2/handlers/background.js +276 -0
  27. package/dist/commands-v2/handlers/context.d.ts +13 -0
  28. package/dist/commands-v2/handlers/context.js +533 -0
  29. package/dist/commands-v2/handlers/core.d.ts +14 -0
  30. package/dist/commands-v2/handlers/core.js +290 -0
  31. package/dist/commands-v2/handlers/debug.d.ts +11 -0
  32. package/dist/commands-v2/handlers/debug.js +177 -0
  33. package/dist/commands-v2/handlers/delegations.d.ts +8 -0
  34. package/dist/commands-v2/handlers/delegations.js +29 -0
  35. package/dist/commands-v2/handlers/files.d.ts +8 -0
  36. package/dist/commands-v2/handlers/files.js +162 -0
  37. package/dist/commands-v2/handlers/filter.d.ts +9 -0
  38. package/dist/commands-v2/handlers/filter.js +130 -0
  39. package/dist/commands-v2/handlers/games.d.ts +7 -0
  40. package/dist/commands-v2/handlers/games.js +57 -0
  41. package/dist/commands-v2/handlers/index.d.ts +25 -0
  42. package/dist/commands-v2/handlers/index.js +63 -0
  43. package/dist/commands-v2/handlers/mcp.d.ts +8 -0
  44. package/dist/commands-v2/handlers/mcp.js +39 -0
  45. package/dist/commands-v2/handlers/notifications.d.ts +9 -0
  46. package/dist/commands-v2/handlers/notifications.js +34 -0
  47. package/dist/commands-v2/handlers/project.d.ts +22 -0
  48. package/dist/commands-v2/handlers/project.js +1035 -0
  49. package/dist/commands-v2/handlers/reset.d.ts +11 -0
  50. package/dist/commands-v2/handlers/reset.js +118 -0
  51. package/dist/commands-v2/handlers/session.d.ts +161 -0
  52. package/dist/commands-v2/handlers/session.js +805 -0
  53. package/dist/commands-v2/handlers/settings.d.ts +17 -0
  54. package/dist/commands-v2/handlers/settings.js +417 -0
  55. package/dist/commands-v2/handlers/tasks.d.ts +5 -0
  56. package/dist/commands-v2/handlers/tasks.js +36 -0
  57. package/dist/commands-v2/handlers/team.d.ts +9 -0
  58. package/dist/commands-v2/handlers/team.js +549 -0
  59. package/dist/commands-v2/handlers/terminals.d.ts +9 -0
  60. package/dist/commands-v2/handlers/terminals.js +34 -0
  61. package/dist/commands-v2/index.d.ts +14 -0
  62. package/dist/commands-v2/index.js +18 -0
  63. package/dist/commands-v2/registry.d.ts +52 -0
  64. package/dist/commands-v2/registry.js +114 -0
  65. package/dist/commands-v2/types.d.ts +153 -0
  66. package/dist/commands-v2/types.js +7 -0
  67. package/dist/commands.js +123 -7
  68. package/dist/compilr-diff-companion.vsix +0 -0
  69. package/dist/db/index.js +98 -4
  70. package/dist/db/repositories/document-repository.d.ts +2 -0
  71. package/dist/db/repositories/document-repository.js +5 -1
  72. package/dist/db/repositories/index.d.ts +2 -0
  73. package/dist/db/repositories/index.js +1 -0
  74. package/dist/db/repositories/plan-repository.d.ts +101 -0
  75. package/dist/db/repositories/plan-repository.js +275 -0
  76. package/dist/db/repositories/project-repository.d.ts +6 -0
  77. package/dist/db/repositories/project-repository.js +41 -0
  78. package/dist/db/repositories/work-item-repository.d.ts +15 -0
  79. package/dist/db/repositories/work-item-repository.js +69 -4
  80. package/dist/db/schema.d.ts +40 -3
  81. package/dist/db/schema.js +66 -3
  82. package/dist/episodes/index.d.ts +20 -0
  83. package/dist/episodes/index.js +27 -0
  84. package/dist/episodes/recorder.d.ts +51 -0
  85. package/dist/episodes/recorder.js +195 -0
  86. package/dist/episodes/significant-work.d.ts +21 -0
  87. package/dist/episodes/significant-work.js +56 -0
  88. package/dist/episodes/store.d.ts +38 -0
  89. package/dist/episodes/store.js +199 -0
  90. package/dist/episodes/types.d.ts +35 -0
  91. package/dist/episodes/types.js +6 -0
  92. package/dist/episodes/work-at-risk.d.ts +12 -0
  93. package/dist/episodes/work-at-risk.js +38 -0
  94. package/dist/episodes/work-summary-anchor.d.ts +23 -0
  95. package/dist/episodes/work-summary-anchor.js +73 -0
  96. package/dist/games/coins.d.ts +66 -0
  97. package/dist/games/coins.js +165 -0
  98. package/dist/games/game-base.d.ts +84 -0
  99. package/dist/games/game-base.js +204 -0
  100. package/dist/games/index.d.ts +16 -0
  101. package/dist/games/index.js +49 -0
  102. package/dist/games/scores.d.ts +69 -0
  103. package/dist/games/scores.js +191 -0
  104. package/dist/games/tetris/board.d.ts +59 -0
  105. package/dist/games/tetris/board.js +170 -0
  106. package/dist/games/tetris/index.d.ts +109 -0
  107. package/dist/games/tetris/index.js +610 -0
  108. package/dist/games/tetris/pieces.d.ts +44 -0
  109. package/dist/games/tetris/pieces.js +271 -0
  110. package/dist/games/tetris/renderer.d.ts +26 -0
  111. package/dist/games/tetris/renderer.js +77 -0
  112. package/dist/guide/guide-content.d.ts +23 -0
  113. package/dist/guide/guide-content.js +196 -0
  114. package/dist/guide/index.d.ts +8 -0
  115. package/dist/guide/index.js +7 -0
  116. package/dist/guide/shared-content.d.ts +37 -0
  117. package/dist/guide/shared-content.js +1272 -0
  118. package/dist/guide/tutorial-helpers.d.ts +57 -0
  119. package/dist/guide/tutorial-helpers.js +147 -0
  120. package/dist/handlers/ask-user-handlers.d.ts +32 -0
  121. package/dist/handlers/ask-user-handlers.js +104 -0
  122. package/dist/handlers/delegation-handlers.d.ts +34 -0
  123. package/dist/handlers/delegation-handlers.js +291 -0
  124. package/dist/handlers/permission-handler.d.ts +30 -0
  125. package/dist/handlers/permission-handler.js +205 -0
  126. package/dist/index.d.ts +11 -1
  127. package/dist/index.js +615 -179
  128. package/dist/input-handlers/index.d.ts +7 -0
  129. package/dist/input-handlers/index.js +7 -0
  130. package/dist/input-handlers/memory-handler.d.ts +26 -0
  131. package/dist/input-handlers/memory-handler.js +69 -0
  132. package/dist/models/index.d.ts +10 -0
  133. package/dist/models/index.js +12 -0
  134. package/dist/models/model-registry.d.ts +38 -0
  135. package/dist/models/model-registry.js +69 -0
  136. package/dist/models/model-tiers.d.ts +28 -0
  137. package/dist/models/model-tiers.js +71 -0
  138. package/dist/models/model-validation.d.ts +25 -0
  139. package/dist/models/model-validation.js +291 -0
  140. package/dist/models/ollama-models.d.ts +73 -0
  141. package/dist/models/ollama-models.js +178 -0
  142. package/dist/models/provider-types.d.ts +6 -0
  143. package/dist/models/provider-types.js +1 -0
  144. package/dist/models/providers.d.ts +35 -0
  145. package/dist/models/providers.js +58 -0
  146. package/dist/models/types.d.ts +4 -0
  147. package/dist/models/types.js +4 -0
  148. package/dist/multi-agent/activity.d.ts +21 -0
  149. package/dist/multi-agent/activity.js +34 -0
  150. package/dist/multi-agent/agent-selection.d.ts +55 -0
  151. package/dist/multi-agent/agent-selection.js +90 -0
  152. package/dist/multi-agent/artifacts.d.ts +197 -0
  153. package/dist/multi-agent/artifacts.js +379 -0
  154. package/dist/multi-agent/checkpointer.d.ts +138 -0
  155. package/dist/multi-agent/checkpointer.js +471 -0
  156. package/dist/multi-agent/collision-utils.d.ts +16 -0
  157. package/dist/multi-agent/collision-utils.js +28 -0
  158. package/dist/multi-agent/context-resolver.d.ts +97 -0
  159. package/dist/multi-agent/context-resolver.js +316 -0
  160. package/dist/multi-agent/custom-agents.d.ts +83 -0
  161. package/dist/multi-agent/custom-agents.js +227 -0
  162. package/dist/multi-agent/delegation-tracker.d.ts +157 -0
  163. package/dist/multi-agent/delegation-tracker.js +243 -0
  164. package/dist/multi-agent/file-lock-hook.d.ts +29 -0
  165. package/dist/multi-agent/file-lock-hook.js +97 -0
  166. package/dist/multi-agent/file-locks.d.ts +58 -0
  167. package/dist/multi-agent/file-locks.js +194 -0
  168. package/dist/multi-agent/index.d.ts +24 -0
  169. package/dist/multi-agent/index.js +30 -0
  170. package/dist/multi-agent/mention-parser.d.ts +64 -0
  171. package/dist/multi-agent/mention-parser.js +146 -0
  172. package/dist/multi-agent/notification-manager.d.ts +84 -0
  173. package/dist/multi-agent/notification-manager.js +224 -0
  174. package/dist/multi-agent/pending-requests.d.ts +122 -0
  175. package/dist/multi-agent/pending-requests.js +155 -0
  176. package/dist/multi-agent/session-registry.d.ts +139 -0
  177. package/dist/multi-agent/session-registry.js +514 -0
  178. package/dist/multi-agent/shared-context.d.ts +293 -0
  179. package/dist/multi-agent/shared-context.js +671 -0
  180. package/dist/multi-agent/skill-requirements.d.ts +66 -0
  181. package/dist/multi-agent/skill-requirements.js +178 -0
  182. package/dist/multi-agent/task-assignment.d.ts +69 -0
  183. package/dist/multi-agent/task-assignment.js +123 -0
  184. package/dist/multi-agent/task-suggestion.d.ts +31 -0
  185. package/dist/multi-agent/task-suggestion.js +72 -0
  186. package/dist/multi-agent/team-agent.d.ts +201 -0
  187. package/dist/multi-agent/team-agent.js +488 -0
  188. package/dist/multi-agent/team.d.ts +286 -0
  189. package/dist/multi-agent/team.js +610 -0
  190. package/dist/multi-agent/tool-config.d.ts +110 -0
  191. package/dist/multi-agent/tool-config.js +661 -0
  192. package/dist/multi-agent/types.d.ts +211 -0
  193. package/dist/multi-agent/types.js +617 -0
  194. package/dist/prompts/plan-mode-prompt.d.ts +11 -0
  195. package/dist/prompts/plan-mode-prompt.js +95 -0
  196. package/dist/repl-helpers.d.ts +63 -0
  197. package/dist/repl-helpers.js +319 -0
  198. package/dist/repl-v2.d.ts +554 -0
  199. package/dist/repl-v2.js +3286 -0
  200. package/dist/session/index.d.ts +6 -0
  201. package/dist/session/index.js +6 -0
  202. package/dist/session/project-session-manager.d.ts +158 -0
  203. package/dist/session/project-session-manager.js +650 -0
  204. package/dist/settings/index.d.ts +156 -13
  205. package/dist/settings/index.js +377 -24
  206. package/dist/settings/mcp-config.d.ts +76 -0
  207. package/dist/settings/mcp-config.js +143 -0
  208. package/dist/settings/paths.d.ts +114 -0
  209. package/dist/settings/paths.js +270 -0
  210. package/dist/shared-handlers.d.ts +62 -0
  211. package/dist/shared-handlers.js +48 -0
  212. package/dist/system-prompt/builder.d.ts +5 -0
  213. package/dist/system-prompt/builder.js +4 -0
  214. package/dist/system-prompt/index.d.ts +18 -0
  215. package/dist/system-prompt/index.js +18 -0
  216. package/dist/system-prompt/modules.d.ts +5 -0
  217. package/dist/system-prompt/modules.js +4 -0
  218. package/dist/tabbed-menu.js +2 -1
  219. package/dist/templates/compilr-md-import.d.ts +16 -0
  220. package/dist/templates/compilr-md-import.js +241 -0
  221. package/dist/templates/compilr-md.js +10 -58
  222. package/dist/templates/config-json.d.ts +1 -25
  223. package/dist/templates/index.d.ts +2 -0
  224. package/dist/templates/index.js +35 -75
  225. package/dist/themes/colors.js +3 -1
  226. package/dist/themes/registry.d.ts +5 -36
  227. package/dist/themes/registry.js +11 -95
  228. package/dist/themes/types.d.ts +3 -38
  229. package/dist/themes/types.js +2 -2
  230. package/dist/tool-names.d.ts +108 -0
  231. package/dist/tool-names.js +227 -0
  232. package/dist/tools/anchor-tools.d.ts +31 -0
  233. package/dist/tools/anchor-tools.js +255 -0
  234. package/dist/tools/artifact-tools.d.ts +42 -0
  235. package/dist/tools/artifact-tools.js +328 -0
  236. package/dist/tools/ask-user-simple.d.ts +1 -1
  237. package/dist/tools/ask-user-simple.js +2 -1
  238. package/dist/tools/ask-user.d.ts +1 -1
  239. package/dist/tools/ask-user.js +2 -1
  240. package/dist/tools/backlog-wrappers.d.ts +56 -0
  241. package/dist/tools/backlog-wrappers.js +353 -0
  242. package/dist/tools/backlog.d.ts +2 -2
  243. package/dist/tools/backlog.js +2 -2
  244. package/dist/tools/db-tools.d.ts +12 -0
  245. package/dist/tools/db-tools.js +14 -0
  246. package/dist/tools/delegate-background.d.ts +27 -0
  247. package/dist/tools/delegate-background.js +115 -0
  248. package/dist/tools/delegate.d.ts +22 -0
  249. package/dist/tools/delegate.js +97 -0
  250. package/dist/tools/delegation-status.d.ts +16 -0
  251. package/dist/tools/delegation-status.js +128 -0
  252. package/dist/tools/document-db.d.ts +43 -0
  253. package/dist/tools/document-db.js +220 -0
  254. package/dist/tools/guide-tool.d.ts +12 -0
  255. package/dist/tools/guide-tool.js +59 -0
  256. package/dist/tools/handoff.d.ts +25 -0
  257. package/dist/tools/handoff.js +99 -0
  258. package/dist/tools/meta-tools.d.ts +26 -0
  259. package/dist/tools/meta-tools.js +47 -0
  260. package/dist/tools/plan-tools.d.ts +54 -0
  261. package/dist/tools/plan-tools.js +338 -0
  262. package/dist/tools/platform-adapter.d.ts +29 -0
  263. package/dist/tools/platform-adapter.js +394 -0
  264. package/dist/tools/project-db.d.ts +34 -0
  265. package/dist/tools/project-db.js +39 -0
  266. package/dist/tools/recall-work-tool.d.ts +18 -0
  267. package/dist/tools/recall-work-tool.js +82 -0
  268. package/dist/tools/workitem-db.d.ts +135 -0
  269. package/dist/tools/workitem-db.js +730 -0
  270. package/dist/tools.d.ts +67 -2
  271. package/dist/tools.js +238 -38
  272. package/dist/ui/ask-user-overlay.d.ts +2 -2
  273. package/dist/ui/ask-user-overlay.js +443 -535
  274. package/dist/ui/ask-user-simple-overlay.d.ts +2 -2
  275. package/dist/ui/ask-user-simple-overlay.js +182 -209
  276. package/dist/ui/autocomplete-controller.d.ts +42 -0
  277. package/dist/ui/autocomplete-controller.js +384 -0
  278. package/dist/ui/base/index.d.ts +26 -0
  279. package/dist/ui/base/index.js +33 -0
  280. package/dist/ui/base/inline-overlay-utils.d.ts +217 -0
  281. package/dist/ui/base/inline-overlay-utils.js +320 -0
  282. package/dist/ui/base/inline-overlay.d.ts +159 -0
  283. package/dist/ui/base/inline-overlay.js +257 -0
  284. package/dist/ui/base/key-utils.d.ts +15 -0
  285. package/dist/ui/base/key-utils.js +30 -0
  286. package/dist/ui/base/overlay-base-v2.d.ts +203 -0
  287. package/dist/ui/base/overlay-base-v2.js +260 -0
  288. package/dist/ui/base/overlay-base.d.ts +156 -0
  289. package/dist/ui/base/overlay-base.js +238 -0
  290. package/dist/ui/base/overlay-lifecycle.d.ts +65 -0
  291. package/dist/ui/base/overlay-lifecycle.js +159 -0
  292. package/dist/ui/base/overlay-types.d.ts +185 -0
  293. package/dist/ui/base/overlay-types.js +7 -0
  294. package/dist/ui/base/render-utils.d.ts +27 -0
  295. package/dist/ui/base/render-utils.js +36 -0
  296. package/dist/ui/base/screen-stack.d.ts +148 -0
  297. package/dist/ui/base/screen-stack.js +184 -0
  298. package/dist/ui/base/tabbed-list-overlay-v2.d.ts +118 -0
  299. package/dist/ui/base/tabbed-list-overlay-v2.js +335 -0
  300. package/dist/ui/base/tabbed-list-overlay.d.ts +153 -0
  301. package/dist/ui/base/tabbed-list-overlay.js +369 -0
  302. package/dist/ui/constants/labels.d.ts +14 -0
  303. package/dist/ui/constants/labels.js +51 -0
  304. package/dist/ui/conversation-store.d.ts +55 -0
  305. package/dist/ui/conversation-store.js +107 -0
  306. package/dist/ui/conversation.d.ts +75 -4
  307. package/dist/ui/conversation.js +376 -165
  308. package/dist/ui/diff.d.ts +7 -1
  309. package/dist/ui/diff.js +85 -48
  310. package/dist/ui/ephemeral.d.ts +1 -1
  311. package/dist/ui/ephemeral.js +4 -10
  312. package/dist/ui/features/index.d.ts +34 -0
  313. package/dist/ui/features/index.js +34 -0
  314. package/dist/ui/features/input-feature.d.ts +85 -0
  315. package/dist/ui/features/input-feature.js +238 -0
  316. package/dist/ui/features/list-feature.d.ts +155 -0
  317. package/dist/ui/features/list-feature.js +244 -0
  318. package/dist/ui/features/pagination-feature.d.ts +154 -0
  319. package/dist/ui/features/pagination-feature.js +238 -0
  320. package/dist/ui/features/search-feature.d.ts +148 -0
  321. package/dist/ui/features/search-feature.js +185 -0
  322. package/dist/ui/features/tab-feature.d.ts +194 -0
  323. package/dist/ui/features/tab-feature.js +307 -0
  324. package/dist/ui/file-autocomplete.d.ts +24 -0
  325. package/dist/ui/file-autocomplete.js +56 -0
  326. package/dist/ui/footer-renderer.d.ts +69 -0
  327. package/dist/ui/footer-renderer.js +431 -0
  328. package/dist/ui/footer.d.ts +181 -7
  329. package/dist/ui/footer.js +523 -74
  330. package/dist/ui/guardrail-overlay.d.ts +29 -0
  331. package/dist/ui/guardrail-overlay.js +145 -0
  332. package/dist/ui/index.d.ts +1 -1
  333. package/dist/ui/index.js +1 -3
  334. package/dist/ui/input-controller.d.ts +51 -0
  335. package/dist/ui/input-controller.js +176 -0
  336. package/dist/ui/input-prompt.d.ts +135 -33
  337. package/dist/ui/input-prompt.js +728 -337
  338. package/dist/ui/iteration-limit-overlay.d.ts +2 -2
  339. package/dist/ui/iteration-limit-overlay.js +92 -128
  340. package/dist/ui/keyboard-handler.d.ts +57 -0
  341. package/dist/ui/keyboard-handler.js +557 -0
  342. package/dist/ui/keys-overlay.d.ts +1 -0
  343. package/dist/ui/keys-overlay.js +203 -141
  344. package/dist/ui/line-utils.d.ts +88 -0
  345. package/dist/ui/line-utils.js +150 -0
  346. package/dist/ui/live-region-facade.d.ts +42 -0
  347. package/dist/ui/live-region-facade.js +205 -0
  348. package/dist/ui/live-region.d.ts +157 -0
  349. package/dist/ui/live-region.js +379 -0
  350. package/dist/ui/mascot/expressions.d.ts +32 -0
  351. package/dist/ui/mascot/expressions.js +213 -0
  352. package/dist/ui/mascot/index.d.ts +8 -0
  353. package/dist/ui/mascot/index.js +8 -0
  354. package/dist/ui/mascot/renderer.d.ts +19 -0
  355. package/dist/ui/mascot/renderer.js +132 -0
  356. package/dist/ui/overlay/data/tutorial-content.d.ts +9 -0
  357. package/dist/ui/overlay/data/tutorial-content.js +9 -0
  358. package/dist/ui/overlay/data/tutorial-registry.d.ts +12 -0
  359. package/dist/ui/overlay/data/tutorial-registry.js +116 -0
  360. package/dist/ui/overlay/data/tutorial-types.d.ts +35 -0
  361. package/dist/ui/overlay/data/tutorial-types.js +6 -0
  362. package/dist/ui/overlay/data/tutorials/basics/first-conversation.d.ts +7 -0
  363. package/dist/ui/overlay/data/tutorials/basics/first-conversation.js +220 -0
  364. package/dist/ui/overlay/data/tutorials/basics/first-project.d.ts +7 -0
  365. package/dist/ui/overlay/data/tutorials/basics/first-project.js +284 -0
  366. package/dist/ui/overlay/data/tutorials/basics/navigation.d.ts +8 -0
  367. package/dist/ui/overlay/data/tutorials/basics/navigation.js +22 -0
  368. package/dist/ui/overlay/data/tutorials/basics/welcome.d.ts +7 -0
  369. package/dist/ui/overlay/data/tutorials/basics/welcome.js +174 -0
  370. package/dist/ui/overlay/data/tutorials/config/context-management.d.ts +7 -0
  371. package/dist/ui/overlay/data/tutorials/config/context-management.js +158 -0
  372. package/dist/ui/overlay/data/tutorials/config/mcp-servers.d.ts +8 -0
  373. package/dist/ui/overlay/data/tutorials/config/mcp-servers.js +155 -0
  374. package/dist/ui/overlay/data/tutorials/config/model-selection.d.ts +7 -0
  375. package/dist/ui/overlay/data/tutorials/config/model-selection.js +162 -0
  376. package/dist/ui/overlay/data/tutorials/config/permissions-safety.d.ts +7 -0
  377. package/dist/ui/overlay/data/tutorials/config/permissions-safety.js +163 -0
  378. package/dist/ui/overlay/data/tutorials/config/settings-config.d.ts +7 -0
  379. package/dist/ui/overlay/data/tutorials/config/settings-config.js +166 -0
  380. package/dist/ui/overlay/data/tutorials/planning/arch.d.ts +7 -0
  381. package/dist/ui/overlay/data/tutorials/planning/arch.js +168 -0
  382. package/dist/ui/overlay/data/tutorials/planning/backlog.d.ts +7 -0
  383. package/dist/ui/overlay/data/tutorials/planning/backlog.js +103 -0
  384. package/dist/ui/overlay/data/tutorials/planning/build.d.ts +7 -0
  385. package/dist/ui/overlay/data/tutorials/planning/build.js +173 -0
  386. package/dist/ui/overlay/data/tutorials/planning/design.d.ts +7 -0
  387. package/dist/ui/overlay/data/tutorials/planning/design.js +205 -0
  388. package/dist/ui/overlay/data/tutorials/planning/docs.d.ts +7 -0
  389. package/dist/ui/overlay/data/tutorials/planning/docs.js +143 -0
  390. package/dist/ui/overlay/data/tutorials/planning/prd.d.ts +7 -0
  391. package/dist/ui/overlay/data/tutorials/planning/prd.js +173 -0
  392. package/dist/ui/overlay/data/tutorials/planning/scaffold.d.ts +7 -0
  393. package/dist/ui/overlay/data/tutorials/planning/scaffold.js +164 -0
  394. package/dist/ui/overlay/data/tutorials/planning/sketch.d.ts +7 -0
  395. package/dist/ui/overlay/data/tutorials/planning/sketch.js +58 -0
  396. package/dist/ui/overlay/data/tutorials/projects/anchors.d.ts +7 -0
  397. package/dist/ui/overlay/data/tutorials/projects/anchors.js +248 -0
  398. package/dist/ui/overlay/data/tutorials/projects/import-project.d.ts +7 -0
  399. package/dist/ui/overlay/data/tutorials/projects/import-project.js +172 -0
  400. package/dist/ui/overlay/data/tutorials/projects/managing-projects.d.ts +8 -0
  401. package/dist/ui/overlay/data/tutorials/projects/managing-projects.js +212 -0
  402. package/dist/ui/overlay/data/tutorials/projects/new-project.d.ts +7 -0
  403. package/dist/ui/overlay/data/tutorials/projects/new-project.js +251 -0
  404. package/dist/ui/overlay/data/tutorials/projects/session-management.d.ts +7 -0
  405. package/dist/ui/overlay/data/tutorials/projects/session-management.js +169 -0
  406. package/dist/ui/overlay/data/tutorials/teams/background-execution.d.ts +7 -0
  407. package/dist/ui/overlay/data/tutorials/teams/background-execution.js +171 -0
  408. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.d.ts +8 -0
  409. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.js +147 -0
  410. package/dist/ui/overlay/data/tutorials/teams/task-assignment.d.ts +7 -0
  411. package/dist/ui/overlay/data/tutorials/teams/task-assignment.js +204 -0
  412. package/dist/ui/overlay/data/tutorials/teams/team-overview.d.ts +7 -0
  413. package/dist/ui/overlay/data/tutorials/teams/team-overview.js +165 -0
  414. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.d.ts +7 -0
  415. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.js +172 -0
  416. package/dist/ui/overlay/impl/agents-overlay-v2.d.ts +45 -0
  417. package/dist/ui/overlay/impl/agents-overlay-v2.js +814 -0
  418. package/dist/ui/overlay/impl/anchors-overlay-v2.d.ts +47 -0
  419. package/dist/ui/overlay/impl/anchors-overlay-v2.js +749 -0
  420. package/dist/ui/overlay/impl/arch-type-overlay-v2.d.ts +37 -0
  421. package/dist/ui/overlay/impl/arch-type-overlay-v2.js +240 -0
  422. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.d.ts +43 -0
  423. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.js +232 -0
  424. package/dist/ui/overlay/impl/artifact-overlay-v2.d.ts +40 -0
  425. package/dist/ui/overlay/impl/artifact-overlay-v2.js +115 -0
  426. package/dist/ui/overlay/impl/ask-user-overlay-v2.d.ts +72 -0
  427. package/dist/ui/overlay/impl/ask-user-overlay-v2.js +581 -0
  428. package/dist/ui/overlay/impl/ask-user-simple-overlay-v2.d.ts +46 -0
  429. package/dist/ui/overlay/impl/ask-user-simple-overlay-v2.js +204 -0
  430. package/dist/ui/overlay/impl/background-overlay-v2.d.ts +40 -0
  431. package/dist/ui/overlay/impl/background-overlay-v2.js +147 -0
  432. package/dist/ui/overlay/impl/backlog-overlay-v2.d.ts +52 -0
  433. package/dist/ui/overlay/impl/backlog-overlay-v2.js +681 -0
  434. package/dist/ui/overlay/impl/changelog-overlay-v2.d.ts +44 -0
  435. package/dist/ui/overlay/impl/changelog-overlay-v2.js +165 -0
  436. package/dist/ui/overlay/impl/commands-overlay-v2.d.ts +33 -0
  437. package/dist/ui/overlay/impl/commands-overlay-v2.js +439 -0
  438. package/dist/ui/overlay/impl/config-overlay-v2.d.ts +111 -0
  439. package/dist/ui/overlay/impl/config-overlay-v2.js +718 -0
  440. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.d.ts +83 -0
  441. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.js +711 -0
  442. package/dist/ui/overlay/impl/dashboard-overlay-v2.d.ts +57 -0
  443. package/dist/ui/overlay/impl/dashboard-overlay-v2.js +382 -0
  444. package/dist/ui/overlay/impl/delegations-overlay-v2.d.ts +28 -0
  445. package/dist/ui/overlay/impl/delegations-overlay-v2.js +279 -0
  446. package/dist/ui/overlay/impl/docs-overlay-v2.d.ts +45 -0
  447. package/dist/ui/overlay/impl/docs-overlay-v2.js +117 -0
  448. package/dist/ui/overlay/impl/document-detail-overlay-v2.d.ts +84 -0
  449. package/dist/ui/overlay/impl/document-detail-overlay-v2.js +1112 -0
  450. package/dist/ui/overlay/impl/filter-overlay-v2.d.ts +41 -0
  451. package/dist/ui/overlay/impl/filter-overlay-v2.js +110 -0
  452. package/dist/ui/overlay/impl/games-overlay-v2.d.ts +31 -0
  453. package/dist/ui/overlay/impl/games-overlay-v2.js +135 -0
  454. package/dist/ui/overlay/impl/guardrail-overlay-v2.d.ts +43 -0
  455. package/dist/ui/overlay/impl/guardrail-overlay-v2.js +114 -0
  456. package/dist/ui/overlay/impl/help-overlay-v2.d.ts +57 -0
  457. package/dist/ui/overlay/impl/help-overlay-v2.js +287 -0
  458. package/dist/ui/overlay/impl/init-setup-overlay-v2.d.ts +25 -0
  459. package/dist/ui/overlay/impl/init-setup-overlay-v2.js +97 -0
  460. package/dist/ui/overlay/impl/iteration-limit-overlay-v2.d.ts +35 -0
  461. package/dist/ui/overlay/impl/iteration-limit-overlay-v2.js +105 -0
  462. package/dist/ui/overlay/impl/keys-overlay-v2.d.ts +41 -0
  463. package/dist/ui/overlay/impl/keys-overlay-v2.js +248 -0
  464. package/dist/ui/overlay/impl/login-overlay-v2.d.ts +49 -0
  465. package/dist/ui/overlay/impl/login-overlay-v2.js +277 -0
  466. package/dist/ui/overlay/impl/mascot-overlay-v2.d.ts +41 -0
  467. package/dist/ui/overlay/impl/mascot-overlay-v2.js +138 -0
  468. package/dist/ui/overlay/impl/mcp-overlay-v2.d.ts +63 -0
  469. package/dist/ui/overlay/impl/mcp-overlay-v2.js +907 -0
  470. package/dist/ui/overlay/impl/model-overlay-v2.d.ts +93 -0
  471. package/dist/ui/overlay/impl/model-overlay-v2.js +1143 -0
  472. package/dist/ui/overlay/impl/model-warning-overlay-v2.d.ts +46 -0
  473. package/dist/ui/overlay/impl/model-warning-overlay-v2.js +132 -0
  474. package/dist/ui/overlay/impl/new-overlay-v2.d.ts +108 -0
  475. package/dist/ui/overlay/impl/new-overlay-v2.js +1243 -0
  476. package/dist/ui/overlay/impl/notifications-overlay-v2.d.ts +20 -0
  477. package/dist/ui/overlay/impl/notifications-overlay-v2.js +116 -0
  478. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.d.ts +76 -0
  479. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.js +728 -0
  480. package/dist/ui/overlay/impl/pending-overlay-v2.d.ts +51 -0
  481. package/dist/ui/overlay/impl/pending-overlay-v2.js +445 -0
  482. package/dist/ui/overlay/impl/permission-overlay-v2.d.ts +36 -0
  483. package/dist/ui/overlay/impl/permission-overlay-v2.js +380 -0
  484. package/dist/ui/overlay/impl/permissions-overlay-v2.d.ts +85 -0
  485. package/dist/ui/overlay/impl/permissions-overlay-v2.js +820 -0
  486. package/dist/ui/overlay/impl/plan-approval-overlay-v2.d.ts +35 -0
  487. package/dist/ui/overlay/impl/plan-approval-overlay-v2.js +181 -0
  488. package/dist/ui/overlay/impl/project-edit-overlay-v2.d.ts +36 -0
  489. package/dist/ui/overlay/impl/project-edit-overlay-v2.js +195 -0
  490. package/dist/ui/overlay/impl/projects-overlay-v2.d.ts +37 -0
  491. package/dist/ui/overlay/impl/projects-overlay-v2.js +733 -0
  492. package/dist/ui/overlay/impl/reset-overlay-v2.d.ts +39 -0
  493. package/dist/ui/overlay/impl/reset-overlay-v2.js +107 -0
  494. package/dist/ui/overlay/impl/resume-overlay-v2.d.ts +60 -0
  495. package/dist/ui/overlay/impl/resume-overlay-v2.js +414 -0
  496. package/dist/ui/overlay/impl/session-mode-overlay-v2.d.ts +43 -0
  497. package/dist/ui/overlay/impl/session-mode-overlay-v2.js +124 -0
  498. package/dist/ui/overlay/impl/tasks-overlay-v2.d.ts +28 -0
  499. package/dist/ui/overlay/impl/tasks-overlay-v2.js +283 -0
  500. package/dist/ui/overlay/impl/team-overlay-v2.d.ts +86 -0
  501. package/dist/ui/overlay/impl/team-overlay-v2.js +692 -0
  502. package/dist/ui/overlay/impl/terminals-overlay-v2.d.ts +26 -0
  503. package/dist/ui/overlay/impl/terminals-overlay-v2.js +217 -0
  504. package/dist/ui/overlay/impl/theme-overlay-v2.d.ts +42 -0
  505. package/dist/ui/overlay/impl/theme-overlay-v2.js +135 -0
  506. package/dist/ui/overlay/impl/tools-overlay-v2.d.ts +47 -0
  507. package/dist/ui/overlay/impl/tools-overlay-v2.js +214 -0
  508. package/dist/ui/overlay/impl/tutorial-overlay-v2.d.ts +45 -0
  509. package/dist/ui/overlay/impl/tutorial-overlay-v2.js +212 -0
  510. package/dist/ui/overlay/impl/workflow-overlay-v2.d.ts +80 -0
  511. package/dist/ui/overlay/impl/workflow-overlay-v2.js +641 -0
  512. package/dist/ui/overlay/index.d.ts +52 -0
  513. package/dist/ui/overlay/index.js +54 -0
  514. package/dist/ui/overlay/key-utils.d.ts +6 -0
  515. package/dist/ui/overlay/key-utils.js +6 -0
  516. package/dist/ui/overlay/types.d.ts +140 -0
  517. package/dist/ui/overlay/types.js +22 -0
  518. package/dist/ui/overlay-manager.d.ts +43 -0
  519. package/dist/ui/overlay-manager.js +238 -0
  520. package/dist/ui/overlays.d.ts +0 -4
  521. package/dist/ui/overlays.js +4 -460
  522. package/dist/ui/permission-overlay.d.ts +1 -1
  523. package/dist/ui/permission-overlay.js +189 -300
  524. package/dist/ui/providers/types.d.ts +178 -0
  525. package/dist/ui/providers/types.js +9 -0
  526. package/dist/ui/render-modes.d.ts +36 -0
  527. package/dist/ui/render-modes.js +44 -0
  528. package/dist/ui/startup-menu.d.ts +36 -0
  529. package/dist/ui/startup-menu.js +236 -0
  530. package/dist/ui/status-bar-controller.d.ts +33 -0
  531. package/dist/ui/status-bar-controller.js +99 -0
  532. package/dist/ui/subagent-renderer.d.ts +117 -0
  533. package/dist/ui/subagent-renderer.js +318 -0
  534. package/dist/ui/terminal-autocomplete-utils.d.ts +23 -0
  535. package/dist/ui/terminal-autocomplete-utils.js +83 -0
  536. package/dist/ui/terminal-codes.d.ts +94 -0
  537. package/dist/ui/terminal-codes.js +124 -0
  538. package/dist/ui/terminal-line-builders.d.ts +17 -0
  539. package/dist/ui/terminal-line-builders.js +42 -0
  540. package/dist/ui/terminal-render-item.d.ts +16 -0
  541. package/dist/ui/terminal-render-item.js +267 -0
  542. package/dist/ui/terminal-renderer.d.ts +220 -0
  543. package/dist/ui/terminal-renderer.js +750 -0
  544. package/dist/ui/terminal-types.d.ts +179 -0
  545. package/dist/ui/terminal-types.js +34 -0
  546. package/dist/ui/terminal-ui.d.ts +331 -0
  547. package/dist/ui/terminal-ui.js +819 -0
  548. package/dist/ui/terminal.d.ts +20 -0
  549. package/dist/ui/terminal.js +72 -0
  550. package/dist/ui/todo-zone.d.ts +19 -1
  551. package/dist/ui/todo-zone.js +124 -38
  552. package/dist/ui/tool-formatters.d.ts +16 -0
  553. package/dist/ui/tool-formatters.js +1027 -0
  554. package/dist/ui/turn-metrics.d.ts +56 -0
  555. package/dist/ui/turn-metrics.js +75 -0
  556. package/dist/ui/types.d.ts +28 -0
  557. package/dist/ui/types.js +1 -0
  558. package/dist/ui/vscode-diff-ipc.d.ts +102 -0
  559. package/dist/ui/vscode-diff-ipc.js +385 -0
  560. package/dist/utils/credentials.d.ts +24 -5
  561. package/dist/utils/credentials.js +123 -9
  562. package/dist/utils/debug-log.d.ts +28 -0
  563. package/dist/utils/debug-log.js +57 -0
  564. package/dist/utils/format-tokens.d.ts +13 -0
  565. package/dist/utils/format-tokens.js +18 -0
  566. package/dist/utils/git-config.d.ts +26 -0
  567. package/dist/utils/git-config.js +54 -0
  568. package/dist/utils/message-utils.d.ts +61 -0
  569. package/dist/utils/message-utils.js +72 -0
  570. package/dist/utils/model-tiers.d.ts +8 -1
  571. package/dist/utils/model-tiers.js +39 -17
  572. package/dist/utils/open-browser.d.ts +5 -0
  573. package/dist/utils/open-browser.js +32 -0
  574. package/dist/utils/path-safety.d.ts +56 -0
  575. package/dist/utils/path-safety.js +240 -0
  576. package/dist/utils/project-detection.d.ts +58 -0
  577. package/dist/utils/project-detection.js +424 -0
  578. package/dist/utils/project-memory.js +2 -1
  579. package/dist/utils/project-status.d.ts +2 -2
  580. package/dist/utils/startup-perf.d.ts +18 -0
  581. package/dist/utils/startup-perf.js +60 -0
  582. package/dist/utils/token-tracker.d.ts +62 -0
  583. package/dist/utils/token-tracker.js +150 -0
  584. package/dist/utils/token-types.d.ts +23 -0
  585. package/dist/utils/token-types.js +18 -0
  586. package/dist/utils/types/config-types.d.ts +32 -0
  587. package/dist/utils/types/config-types.js +8 -0
  588. package/dist/utils/update-checker.d.ts +28 -0
  589. package/dist/utils/update-checker.js +106 -0
  590. package/dist/utils/version.d.ts +7 -0
  591. package/dist/utils/version.js +10 -0
  592. package/dist/utils/vscode-detect.d.ts +39 -0
  593. package/dist/utils/vscode-detect.js +137 -0
  594. package/dist/workflow/guided-mode-injector.d.ts +42 -0
  595. package/dist/workflow/guided-mode-injector.js +191 -0
  596. package/dist/workflow/index.d.ts +8 -0
  597. package/dist/workflow/index.js +8 -0
  598. package/dist/workflow/step-criteria.d.ts +62 -0
  599. package/dist/workflow/step-criteria.js +150 -0
  600. package/dist/workflow/step-tracker.d.ts +92 -0
  601. package/dist/workflow/step-tracker.js +141 -0
  602. package/package.json +32 -12
  603. package/dist/index.old.d.ts +0 -7
  604. package/dist/index.old.js +0 -1014
  605. package/dist/repl.d.ts +0 -121
  606. package/dist/repl.js +0 -1878
  607. package/dist/templates/claude-md.d.ts +0 -7
  608. package/dist/templates/claude-md.js +0 -189
  609. package/dist/test-autocomplete.d.ts +0 -7
  610. package/dist/test-autocomplete.js +0 -85
  611. package/dist/test-tabbed-menu.d.ts +0 -7
  612. package/dist/test-tabbed-menu.js +0 -25
  613. package/dist/tool-selector.d.ts +0 -71
  614. package/dist/tool-selector.js +0 -184
  615. package/dist/ui/agents-overlay.d.ts +0 -12
  616. package/dist/ui/agents-overlay.js +0 -501
  617. package/dist/ui/arch-type-overlay.d.ts +0 -20
  618. package/dist/ui/arch-type-overlay.js +0 -229
  619. package/dist/ui/backlog-overlay.d.ts +0 -17
  620. package/dist/ui/backlog-overlay.js +0 -786
  621. package/dist/ui/commands-overlay.d.ts +0 -11
  622. package/dist/ui/commands-overlay.js +0 -410
  623. package/dist/ui/config-overlay.d.ts +0 -34
  624. package/dist/ui/config-overlay.js +0 -977
  625. package/dist/ui/init-overlay.d.ts +0 -24
  626. package/dist/ui/init-overlay.js +0 -525
  627. package/dist/ui/input-prompt-v2.d.ts +0 -179
  628. package/dist/ui/input-prompt-v2.js +0 -991
  629. package/dist/ui/model-warning-overlay.d.ts +0 -30
  630. package/dist/ui/model-warning-overlay.js +0 -171
  631. package/dist/ui/tools-overlay.d.ts +0 -26
  632. package/dist/ui/tools-overlay.js +0 -278
  633. package/dist/ui/tutorial-overlay.d.ts +0 -10
  634. package/dist/ui/tutorial-overlay.js +0 -936
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Per-turn token and tool call tracking.
3
+ *
4
+ * Extracted from TerminalUI — a standalone data container with zero
5
+ * coupling to other subsystems.
6
+ */
7
+ export interface TurnMetricsSnapshot {
8
+ inputTokens: number;
9
+ outputTokens: number;
10
+ thinkingTokens: number;
11
+ cacheReadTokens: number;
12
+ durationMs: number;
13
+ toolCalls: number;
14
+ apiCalls: number;
15
+ debugPayload?: {
16
+ systemChars: number;
17
+ contentsChars: number;
18
+ toolsChars: number;
19
+ };
20
+ }
21
+ export declare class TurnMetrics {
22
+ inputTokens: number;
23
+ outputTokens: number;
24
+ thinkingTokens: number;
25
+ cacheReadTokens: number;
26
+ debugPayload?: {
27
+ systemChars: number;
28
+ contentsChars: number;
29
+ toolsChars: number;
30
+ };
31
+ startTime: number;
32
+ toolCalls: number;
33
+ apiCalls: number;
34
+ isThinking: boolean;
35
+ /**
36
+ * Add input/output tokens for live display.
37
+ * @param thinkingTokens - Optional thinking tokens (Gemini 2.5+ models)
38
+ * @param cacheReadTokens - Optional cache read tokens (Anthropic/Gemini)
39
+ * @param debugPayload - Optional debug payload sizes (char counts)
40
+ */
41
+ addTokens(inputTokens: number, outputTokens: number, thinkingTokens?: number, cacheReadTokens?: number, debugPayload?: {
42
+ systemChars: number;
43
+ contentsChars: number;
44
+ toolsChars: number;
45
+ }): void;
46
+ incrementToolCalls(): void;
47
+ incrementApiCalls(): void;
48
+ /**
49
+ * Reset all metrics (call when agent starts a new turn).
50
+ */
51
+ reset(): void;
52
+ /**
53
+ * Get a snapshot of current metrics.
54
+ */
55
+ getSnapshot(): TurnMetricsSnapshot;
56
+ }
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Per-turn token and tool call tracking.
3
+ *
4
+ * Extracted from TerminalUI — a standalone data container with zero
5
+ * coupling to other subsystems.
6
+ */
7
+ export class TurnMetrics {
8
+ inputTokens = 0;
9
+ outputTokens = 0;
10
+ thinkingTokens = 0;
11
+ cacheReadTokens = 0;
12
+ debugPayload;
13
+ startTime = 0;
14
+ toolCalls = 0;
15
+ apiCalls = 0;
16
+ isThinking = false;
17
+ /**
18
+ * Add input/output tokens for live display.
19
+ * @param thinkingTokens - Optional thinking tokens (Gemini 2.5+ models)
20
+ * @param cacheReadTokens - Optional cache read tokens (Anthropic/Gemini)
21
+ * @param debugPayload - Optional debug payload sizes (char counts)
22
+ */
23
+ addTokens(inputTokens, outputTokens, thinkingTokens, cacheReadTokens, debugPayload) {
24
+ this.inputTokens += inputTokens;
25
+ this.outputTokens += outputTokens;
26
+ if (thinkingTokens) {
27
+ this.thinkingTokens += thinkingTokens;
28
+ }
29
+ if (cacheReadTokens) {
30
+ this.cacheReadTokens += cacheReadTokens;
31
+ }
32
+ if (debugPayload) {
33
+ if (!this.debugPayload) {
34
+ this.debugPayload = { systemChars: 0, contentsChars: 0, toolsChars: 0 };
35
+ }
36
+ this.debugPayload.systemChars += debugPayload.systemChars;
37
+ this.debugPayload.contentsChars += debugPayload.contentsChars;
38
+ this.debugPayload.toolsChars += debugPayload.toolsChars;
39
+ }
40
+ }
41
+ incrementToolCalls() {
42
+ this.toolCalls++;
43
+ }
44
+ incrementApiCalls() {
45
+ this.apiCalls++;
46
+ }
47
+ /**
48
+ * Reset all metrics (call when agent starts a new turn).
49
+ */
50
+ reset() {
51
+ this.inputTokens = 0;
52
+ this.outputTokens = 0;
53
+ this.thinkingTokens = 0;
54
+ this.cacheReadTokens = 0;
55
+ this.debugPayload = undefined;
56
+ this.startTime = Date.now();
57
+ this.toolCalls = 0;
58
+ this.apiCalls = 0;
59
+ }
60
+ /**
61
+ * Get a snapshot of current metrics.
62
+ */
63
+ getSnapshot() {
64
+ return {
65
+ inputTokens: this.inputTokens,
66
+ outputTokens: this.outputTokens,
67
+ thinkingTokens: this.thinkingTokens,
68
+ cacheReadTokens: this.cacheReadTokens,
69
+ durationMs: this.startTime > 0 ? Date.now() - this.startTime : 0,
70
+ toolCalls: this.toolCalls,
71
+ apiCalls: this.apiCalls,
72
+ debugPayload: this.debugPayload,
73
+ };
74
+ }
75
+ }
@@ -25,12 +25,40 @@ export interface TodoItem {
25
25
  content: string;
26
26
  status: 'pending' | 'in_progress' | 'completed';
27
27
  activeForm?: string;
28
+ owner?: string;
29
+ blockedBy?: number[];
28
30
  }
31
+ import type { TokenBreakdown as _TokenBreakdown } from '../utils/token-types.js';
32
+ export type { TokenBreakdown } from '../utils/token-types.js';
33
+ export { emptyTokenBreakdown } from '../utils/token-types.js';
34
+ type TokenBreakdown = _TokenBreakdown;
29
35
  export interface SpinnerState {
30
36
  text: string;
31
37
  tool?: string;
32
38
  tokens: number;
39
+ inputTokens: number;
40
+ outputTokens: number;
33
41
  startTime: number;
42
+ breakdown?: TokenBreakdown;
43
+ }
44
+ export interface TurnMetrics {
45
+ turnNumber: number;
46
+ inputTokens: number;
47
+ outputTokens: number;
48
+ /** Thinking tokens (Gemini 2.5+ models) */
49
+ thinkingTokens: number;
50
+ /** Cache read tokens (Anthropic/Gemini) */
51
+ cacheReadTokens: number;
52
+ subagentInputTokens: number;
53
+ subagentOutputTokens: number;
54
+ toolCalls: number;
55
+ durationMs: number;
56
+ /** Debug payload info - char counts sent to provider (for debugging token discrepancies) */
57
+ debugPayload?: {
58
+ systemChars: number;
59
+ contentsChars: number;
60
+ toolsChars: number;
61
+ };
34
62
  }
35
63
  export interface CommandOption {
36
64
  command: string;
package/dist/ui/types.js CHANGED
@@ -3,6 +3,7 @@
3
3
  *
4
4
  * Shared types used across all UI modules.
5
5
  */
6
+ export { emptyTokenBreakdown } from '../utils/token-types.js';
6
7
  /**
7
8
  * Get display info for a mode
8
9
  */
@@ -0,0 +1,102 @@
1
+ /**
2
+ * VS Code Diff IPC
3
+ *
4
+ * File-based IPC protocol for communicating diff requests/responses between
5
+ * the CLI and the compilr-diff-companion VS Code extension.
6
+ *
7
+ * Directory structure:
8
+ * ~/.compilr-dev/diff-ipc/
9
+ * requests/ - CLI writes request JSON files
10
+ * responses/ - Extension writes response JSON files
11
+ *
12
+ * Temp files for original/modified content in os.tmpdir()/compilr-diff/
13
+ *
14
+ * Domain layer — imports from foundation layer only.
15
+ */
16
+ export interface VSDiffRequest {
17
+ id: string;
18
+ sessionId: string;
19
+ agentId: string;
20
+ sessionLabel: string;
21
+ originalPath: string;
22
+ modifiedPath: string;
23
+ targetPath: string;
24
+ toolName: string;
25
+ title: string;
26
+ timestamp: number;
27
+ }
28
+ export interface VSDiffResponse {
29
+ id: string;
30
+ accepted: boolean;
31
+ cancelled?: boolean;
32
+ timestamp: number;
33
+ }
34
+ /**
35
+ * Generate a unique diff request ID.
36
+ * Format: diff-{sessionPrefix}-{timestamp}
37
+ */
38
+ export declare function generateDiffRequestId(sessionPrefix: string): string;
39
+ /**
40
+ * Write original and modified content to temp files for VS Code's diff view.
41
+ * Returns { originalPath, modifiedPath }.
42
+ */
43
+ export declare function writeTempDiffFiles(requestId: string, originalContent: string, modifiedContent: string, targetPath: string): {
44
+ originalPath: string;
45
+ modifiedPath: string;
46
+ };
47
+ /**
48
+ * Send a diff request to the VS Code extension.
49
+ * Writes the request JSON to diff-ipc/requests/.
50
+ */
51
+ export declare function sendDiffRequest(request: VSDiffRequest): void;
52
+ /**
53
+ * Result of waitForDiffResponse — includes an abort function to stop the poll.
54
+ * Abort MUST be called when the terminal wins the Promise.race, BEFORE calling
55
+ * cancelDiffRequest, to prevent the CLI poll from eating the cancel response
56
+ * before the VS Code extension can read it.
57
+ */
58
+ export interface DiffResponseWaiter {
59
+ promise: Promise<VSDiffResponse | null>;
60
+ abort: () => void;
61
+ }
62
+ /**
63
+ * Poll for a diff response from the VS Code extension.
64
+ * Checks diff-ipc/responses/ at 200ms intervals for a matching response file.
65
+ * Returns { promise, abort } — call abort() to stop the poll early.
66
+ */
67
+ export declare function waitForDiffResponse(requestId: string, timeoutMs: number): DiffResponseWaiter;
68
+ /**
69
+ * Cancel a diff request.
70
+ * Writes a cancel response so the extension closes the diff tab.
71
+ * Temp file cleanup is deferred (2s) to give the extension time to
72
+ * read the cancel response and close the tab before the files disappear.
73
+ */
74
+ export declare function cancelDiffRequest(requestId: string): void;
75
+ /**
76
+ * Clean up all IPC files for a specific session prefix.
77
+ * Called when a terminal session unregisters.
78
+ */
79
+ export declare function cleanupSessionDiffs(sessionPrefix: string): void;
80
+ /**
81
+ * Clean up stale IPC files older than the given threshold.
82
+ * Called on CLI startup to prevent accumulation from crashed sessions.
83
+ */
84
+ export declare function cleanupStaleDiffs(maxAgeMs: number): void;
85
+ /**
86
+ * Open a VS Code diff tab for a tool permission request.
87
+ *
88
+ * Computes original/modified content from the tool input, writes temp files,
89
+ * and sends the IPC request for the compilr-diff-companion extension.
90
+ *
91
+ * Caller is responsible for checking isVSDiffAvailable() / vsDiffEnabled
92
+ * before calling this function.
93
+ *
94
+ * @returns The diff request ID (for use with waitForDiffResponse/cancelDiffRequest),
95
+ * or null if content could not be computed.
96
+ */
97
+ export declare function openVSCodeDiffForTool(options: {
98
+ toolName: string;
99
+ input: Record<string, unknown>;
100
+ agentId?: string;
101
+ sessionId?: string;
102
+ }): string | null;
@@ -0,0 +1,385 @@
1
+ /**
2
+ * VS Code Diff IPC
3
+ *
4
+ * File-based IPC protocol for communicating diff requests/responses between
5
+ * the CLI and the compilr-diff-companion VS Code extension.
6
+ *
7
+ * Directory structure:
8
+ * ~/.compilr-dev/diff-ipc/
9
+ * requests/ - CLI writes request JSON files
10
+ * responses/ - Extension writes response JSON files
11
+ *
12
+ * Temp files for original/modified content in os.tmpdir()/compilr-diff/
13
+ *
14
+ * Domain layer — imports from foundation layer only.
15
+ */
16
+ import * as fs from 'fs';
17
+ import * as path from 'path';
18
+ import * as os from 'os';
19
+ import { getDataPath } from '../settings/paths.js';
20
+ import { computeModifiedContent } from './diff.js';
21
+ // =============================================================================
22
+ // Paths
23
+ // =============================================================================
24
+ function getIpcBasePath() {
25
+ return path.join(getDataPath(), 'diff-ipc');
26
+ }
27
+ function getRequestsDir() {
28
+ return path.join(getIpcBasePath(), 'requests');
29
+ }
30
+ function getResponsesDir() {
31
+ return path.join(getIpcBasePath(), 'responses');
32
+ }
33
+ function getTempDir() {
34
+ return path.join(os.tmpdir(), 'compilr-diff');
35
+ }
36
+ function ensureDir(dir) {
37
+ if (!fs.existsSync(dir)) {
38
+ fs.mkdirSync(dir, { recursive: true });
39
+ }
40
+ }
41
+ // =============================================================================
42
+ // Request ID Generation
43
+ // =============================================================================
44
+ /**
45
+ * Generate a unique diff request ID.
46
+ * Format: diff-{sessionPrefix}-{timestamp}
47
+ */
48
+ export function generateDiffRequestId(sessionPrefix) {
49
+ return `diff-${sessionPrefix}-${String(Date.now())}`;
50
+ }
51
+ // =============================================================================
52
+ // Temp File Management
53
+ // =============================================================================
54
+ /**
55
+ * Write original and modified content to temp files for VS Code's diff view.
56
+ * Returns { originalPath, modifiedPath }.
57
+ */
58
+ export function writeTempDiffFiles(requestId, originalContent, modifiedContent, targetPath) {
59
+ const tmpDir = getTempDir();
60
+ ensureDir(tmpDir);
61
+ const ext = path.extname(targetPath) || '.txt';
62
+ const basename = path.basename(targetPath, ext);
63
+ const originalPath = path.join(tmpDir, `${basename}.original-${requestId}${ext}`);
64
+ const modifiedPath = path.join(tmpDir, `${basename}.modified-${requestId}${ext}`);
65
+ fs.writeFileSync(originalPath, originalContent, 'utf-8');
66
+ fs.writeFileSync(modifiedPath, modifiedContent, 'utf-8');
67
+ return { originalPath, modifiedPath };
68
+ }
69
+ /**
70
+ * Clean up temp files for a specific request.
71
+ */
72
+ function cleanupTempFiles(requestId) {
73
+ const tmpDir = getTempDir();
74
+ if (!fs.existsSync(tmpDir))
75
+ return;
76
+ try {
77
+ const files = fs.readdirSync(tmpDir);
78
+ for (const file of files) {
79
+ if (file.includes(requestId)) {
80
+ try {
81
+ fs.unlinkSync(path.join(tmpDir, file));
82
+ }
83
+ catch {
84
+ // Best effort
85
+ }
86
+ }
87
+ }
88
+ }
89
+ catch {
90
+ // Best effort
91
+ }
92
+ }
93
+ // =============================================================================
94
+ // IPC API
95
+ // =============================================================================
96
+ /**
97
+ * Send a diff request to the VS Code extension.
98
+ * Writes the request JSON to diff-ipc/requests/.
99
+ */
100
+ export function sendDiffRequest(request) {
101
+ const requestsDir = getRequestsDir();
102
+ ensureDir(requestsDir);
103
+ const filePath = path.join(requestsDir, `${request.id}.json`);
104
+ fs.writeFileSync(filePath, JSON.stringify(request, null, 2), 'utf-8');
105
+ }
106
+ /**
107
+ * Poll for a diff response from the VS Code extension.
108
+ * Checks diff-ipc/responses/ at 200ms intervals for a matching response file.
109
+ * Returns { promise, abort } — call abort() to stop the poll early.
110
+ */
111
+ export function waitForDiffResponse(requestId, timeoutMs) {
112
+ const responsesDir = getResponsesDir();
113
+ ensureDir(responsesDir);
114
+ const responsePath = path.join(responsesDir, `${requestId}.json`);
115
+ let aborted = false;
116
+ const promise = new Promise((resolve) => {
117
+ const startTime = Date.now();
118
+ const poll = setInterval(() => {
119
+ // If aborted (terminal won the race), stop immediately
120
+ if (aborted) {
121
+ clearInterval(poll);
122
+ resolve(null);
123
+ return;
124
+ }
125
+ // Check for timeout
126
+ if (Date.now() - startTime > timeoutMs) {
127
+ clearInterval(poll);
128
+ resolve(null);
129
+ return;
130
+ }
131
+ // Check for response file
132
+ try {
133
+ if (fs.existsSync(responsePath)) {
134
+ const content = fs.readFileSync(responsePath, 'utf-8');
135
+ const response = JSON.parse(content);
136
+ // Clean up response file (only if this is a real response from the extension,
137
+ // not a cancel response written by the CLI)
138
+ if (!response.cancelled) {
139
+ try {
140
+ fs.unlinkSync(responsePath);
141
+ }
142
+ catch {
143
+ // Best effort
144
+ }
145
+ }
146
+ clearInterval(poll);
147
+ resolve(response);
148
+ }
149
+ }
150
+ catch {
151
+ // File may be partially written, retry next tick
152
+ }
153
+ }, 200);
154
+ // Don't let the poll interval keep the process alive
155
+ poll.unref();
156
+ });
157
+ return {
158
+ promise,
159
+ abort: () => { aborted = true; },
160
+ };
161
+ }
162
+ /**
163
+ * Cancel a diff request.
164
+ * Writes a cancel response so the extension closes the diff tab.
165
+ * Temp file cleanup is deferred (2s) to give the extension time to
166
+ * read the cancel response and close the tab before the files disappear.
167
+ */
168
+ export function cancelDiffRequest(requestId) {
169
+ // Write a cancel response so the extension can close the tab
170
+ const responsesDir = getResponsesDir();
171
+ ensureDir(responsesDir);
172
+ const response = {
173
+ id: requestId,
174
+ accepted: false,
175
+ cancelled: true,
176
+ timestamp: Date.now(),
177
+ };
178
+ try {
179
+ fs.writeFileSync(path.join(responsesDir, `${requestId}.json`), JSON.stringify(response, null, 2), 'utf-8');
180
+ }
181
+ catch {
182
+ // Best effort
183
+ }
184
+ // Remove the request file (if it still exists)
185
+ try {
186
+ const requestPath = path.join(getRequestsDir(), `${requestId}.json`);
187
+ if (fs.existsSync(requestPath)) {
188
+ fs.unlinkSync(requestPath);
189
+ }
190
+ }
191
+ catch {
192
+ // Best effort
193
+ }
194
+ // Defer temp file cleanup — the extension needs the files to match/close the tab.
195
+ // The extension polls at 500ms; 2s gives it plenty of time.
196
+ const timer = setTimeout(() => { cleanupTempFiles(requestId); }, 2000);
197
+ timer.unref();
198
+ }
199
+ /**
200
+ * Clean up all IPC files for a specific session prefix.
201
+ * Called when a terminal session unregisters.
202
+ */
203
+ export function cleanupSessionDiffs(sessionPrefix) {
204
+ const pattern = `diff-${sessionPrefix}-`;
205
+ // Clean up request files
206
+ cleanupDirByPrefix(getRequestsDir(), pattern);
207
+ // Clean up response files
208
+ cleanupDirByPrefix(getResponsesDir(), pattern);
209
+ // Clean up temp files
210
+ const tmpDir = getTempDir();
211
+ if (fs.existsSync(tmpDir)) {
212
+ try {
213
+ const files = fs.readdirSync(tmpDir);
214
+ for (const file of files) {
215
+ if (file.includes(sessionPrefix)) {
216
+ try {
217
+ fs.unlinkSync(path.join(tmpDir, file));
218
+ }
219
+ catch {
220
+ // Best effort
221
+ }
222
+ }
223
+ }
224
+ }
225
+ catch {
226
+ // Best effort
227
+ }
228
+ }
229
+ }
230
+ /**
231
+ * Clean up stale IPC files older than the given threshold.
232
+ * Called on CLI startup to prevent accumulation from crashed sessions.
233
+ */
234
+ export function cleanupStaleDiffs(maxAgeMs) {
235
+ const now = Date.now();
236
+ cleanupStaleInDir(getRequestsDir(), now, maxAgeMs);
237
+ cleanupStaleInDir(getResponsesDir(), now, maxAgeMs);
238
+ // Also clean stale temp files
239
+ const tmpDir = getTempDir();
240
+ if (fs.existsSync(tmpDir)) {
241
+ try {
242
+ const files = fs.readdirSync(tmpDir);
243
+ for (const file of files) {
244
+ try {
245
+ const filePath = path.join(tmpDir, file);
246
+ const stat = fs.statSync(filePath);
247
+ if (now - stat.mtimeMs > maxAgeMs) {
248
+ fs.unlinkSync(filePath);
249
+ }
250
+ }
251
+ catch {
252
+ // Best effort
253
+ }
254
+ }
255
+ }
256
+ catch {
257
+ // Best effort
258
+ }
259
+ }
260
+ }
261
+ // =============================================================================
262
+ // Helpers
263
+ // =============================================================================
264
+ function cleanupDirByPrefix(dir, prefix) {
265
+ if (!fs.existsSync(dir))
266
+ return;
267
+ try {
268
+ const files = fs.readdirSync(dir);
269
+ for (const file of files) {
270
+ if (file.startsWith(prefix)) {
271
+ try {
272
+ fs.unlinkSync(path.join(dir, file));
273
+ }
274
+ catch {
275
+ // Best effort
276
+ }
277
+ }
278
+ }
279
+ }
280
+ catch {
281
+ // Best effort
282
+ }
283
+ }
284
+ function cleanupStaleInDir(dir, now, maxAgeMs) {
285
+ if (!fs.existsSync(dir))
286
+ return;
287
+ try {
288
+ const files = fs.readdirSync(dir);
289
+ for (const file of files) {
290
+ try {
291
+ const filePath = path.join(dir, file);
292
+ const stat = fs.statSync(filePath);
293
+ if (now - stat.mtimeMs > maxAgeMs) {
294
+ fs.unlinkSync(filePath);
295
+ }
296
+ }
297
+ catch {
298
+ // Best effort
299
+ }
300
+ }
301
+ }
302
+ catch {
303
+ // Best effort
304
+ }
305
+ }
306
+ function extractStringParam(input, ...keys) {
307
+ for (const key of keys) {
308
+ if (typeof input[key] === 'string')
309
+ return input[key];
310
+ }
311
+ return '';
312
+ }
313
+ // =============================================================================
314
+ // High-Level API
315
+ // =============================================================================
316
+ /**
317
+ * Open a VS Code diff tab for a tool permission request.
318
+ *
319
+ * Computes original/modified content from the tool input, writes temp files,
320
+ * and sends the IPC request for the compilr-diff-companion extension.
321
+ *
322
+ * Caller is responsible for checking isVSDiffAvailable() / vsDiffEnabled
323
+ * before calling this function.
324
+ *
325
+ * @returns The diff request ID (for use with waitForDiffResponse/cancelDiffRequest),
326
+ * or null if content could not be computed.
327
+ */
328
+ export function openVSCodeDiffForTool(options) {
329
+ const { toolName, input, agentId = 'default', sessionId = 'pending' } = options;
330
+ let originalContent = '';
331
+ let modifiedContent = '';
332
+ let targetPath = '';
333
+ if (toolName === 'edit') {
334
+ const filePath = extractStringParam(input, 'filePath', 'file_path', 'path');
335
+ const oldText = extractStringParam(input, 'oldString', 'old_string', 'old_text');
336
+ const newText = extractStringParam(input, 'newString', 'new_string', 'new_text');
337
+ const replaceAll = Boolean(input.replaceAll ?? input.replace_all);
338
+ if (!filePath || !oldText)
339
+ return null;
340
+ try {
341
+ originalContent = fs.readFileSync(filePath, 'utf-8');
342
+ }
343
+ catch {
344
+ originalContent = '';
345
+ }
346
+ modifiedContent = computeModifiedContent(filePath, oldText, newText, replaceAll) ?? originalContent;
347
+ targetPath = filePath;
348
+ }
349
+ else if (toolName === 'write_file' || toolName === 'write') {
350
+ const writePath = extractStringParam(input, 'path', 'file_path', 'filePath');
351
+ const writeContent = extractStringParam(input, 'content');
352
+ if (!writePath || !writeContent)
353
+ return null;
354
+ try {
355
+ originalContent = fs.readFileSync(writePath, 'utf-8');
356
+ }
357
+ catch {
358
+ originalContent = '';
359
+ }
360
+ modifiedContent = writeContent;
361
+ targetPath = writePath;
362
+ }
363
+ else {
364
+ return null;
365
+ }
366
+ if (!targetPath || !modifiedContent)
367
+ return null;
368
+ const requestId = generateDiffRequestId(sessionId);
369
+ const { originalPath, modifiedPath } = writeTempDiffFiles(requestId, originalContent, modifiedContent, targetPath);
370
+ const fileName = targetPath.split('/').pop() ?? 'unknown';
371
+ const vsDiffReq = {
372
+ id: requestId,
373
+ sessionId,
374
+ agentId,
375
+ sessionLabel: '',
376
+ originalPath,
377
+ modifiedPath,
378
+ targetPath,
379
+ toolName,
380
+ title: `Review: ${fileName}`,
381
+ timestamp: Date.now(),
382
+ };
383
+ sendDiffRequest(vsDiffReq);
384
+ return requestId;
385
+ }