@compilr-dev/cli 0.5.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 (591) hide show
  1. package/README.md +236 -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 +61 -4
  7. package/dist/agent.js +241 -245
  8. package/dist/anchors/index.d.ts +1 -1
  9. package/dist/anchors/index.js +1 -1
  10. package/dist/anchors/project-anchors.d.ts +2 -2
  11. package/dist/anchors/project-anchors.js +1 -1
  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-v2/handlers/auth.d.ts +10 -0
  23. package/dist/commands-v2/handlers/auth.js +118 -0
  24. package/dist/commands-v2/handlers/background.d.ts +14 -0
  25. package/dist/commands-v2/handlers/background.js +276 -0
  26. package/dist/commands-v2/handlers/context.js +266 -81
  27. package/dist/commands-v2/handlers/core.d.ts +1 -0
  28. package/dist/commands-v2/handlers/core.js +133 -8
  29. package/dist/commands-v2/handlers/debug.js +18 -0
  30. package/dist/commands-v2/handlers/delegations.d.ts +8 -0
  31. package/dist/commands-v2/handlers/delegations.js +29 -0
  32. package/dist/commands-v2/handlers/files.d.ts +8 -0
  33. package/dist/commands-v2/handlers/files.js +162 -0
  34. package/dist/commands-v2/handlers/filter.d.ts +9 -0
  35. package/dist/commands-v2/handlers/filter.js +130 -0
  36. package/dist/commands-v2/handlers/games.d.ts +7 -0
  37. package/dist/commands-v2/handlers/games.js +57 -0
  38. package/dist/commands-v2/handlers/index.d.ts +13 -0
  39. package/dist/commands-v2/handlers/index.js +39 -0
  40. package/dist/commands-v2/handlers/mcp.d.ts +8 -0
  41. package/dist/commands-v2/handlers/mcp.js +39 -0
  42. package/dist/commands-v2/handlers/notifications.d.ts +9 -0
  43. package/dist/commands-v2/handlers/notifications.js +34 -0
  44. package/dist/commands-v2/handlers/project.js +244 -23
  45. package/dist/commands-v2/handlers/reset.d.ts +11 -0
  46. package/dist/commands-v2/handlers/reset.js +118 -0
  47. package/dist/commands-v2/handlers/session.d.ts +161 -0
  48. package/dist/commands-v2/handlers/session.js +805 -0
  49. package/dist/commands-v2/handlers/settings.d.ts +2 -0
  50. package/dist/commands-v2/handlers/settings.js +217 -35
  51. package/dist/commands-v2/handlers/tasks.d.ts +5 -0
  52. package/dist/commands-v2/handlers/tasks.js +36 -0
  53. package/dist/commands-v2/handlers/team.d.ts +9 -0
  54. package/dist/commands-v2/handlers/team.js +549 -0
  55. package/dist/commands-v2/handlers/terminals.d.ts +9 -0
  56. package/dist/commands-v2/handlers/terminals.js +34 -0
  57. package/dist/commands-v2/index.d.ts +3 -2
  58. package/dist/commands-v2/index.js +4 -1
  59. package/dist/commands-v2/registry.d.ts +15 -0
  60. package/dist/commands-v2/registry.js +34 -0
  61. package/dist/commands-v2/types.d.ts +81 -3
  62. package/dist/commands.js +13 -0
  63. package/dist/compilr-diff-companion.vsix +0 -0
  64. package/dist/db/index.js +98 -4
  65. package/dist/db/repositories/document-repository.d.ts +2 -0
  66. package/dist/db/repositories/document-repository.js +5 -1
  67. package/dist/db/repositories/index.d.ts +2 -0
  68. package/dist/db/repositories/index.js +1 -0
  69. package/dist/db/repositories/plan-repository.d.ts +101 -0
  70. package/dist/db/repositories/plan-repository.js +275 -0
  71. package/dist/db/repositories/project-repository.d.ts +6 -0
  72. package/dist/db/repositories/project-repository.js +41 -0
  73. package/dist/db/repositories/work-item-repository.d.ts +15 -0
  74. package/dist/db/repositories/work-item-repository.js +69 -4
  75. package/dist/db/schema.d.ts +40 -3
  76. package/dist/db/schema.js +66 -3
  77. package/dist/episodes/index.d.ts +20 -0
  78. package/dist/episodes/index.js +27 -0
  79. package/dist/episodes/recorder.d.ts +51 -0
  80. package/dist/episodes/recorder.js +195 -0
  81. package/dist/episodes/significant-work.d.ts +21 -0
  82. package/dist/episodes/significant-work.js +56 -0
  83. package/dist/episodes/store.d.ts +38 -0
  84. package/dist/episodes/store.js +199 -0
  85. package/dist/episodes/types.d.ts +35 -0
  86. package/dist/episodes/types.js +6 -0
  87. package/dist/episodes/work-at-risk.d.ts +12 -0
  88. package/dist/episodes/work-at-risk.js +38 -0
  89. package/dist/episodes/work-summary-anchor.d.ts +23 -0
  90. package/dist/episodes/work-summary-anchor.js +73 -0
  91. package/dist/games/coins.d.ts +66 -0
  92. package/dist/games/coins.js +165 -0
  93. package/dist/games/game-base.d.ts +84 -0
  94. package/dist/games/game-base.js +204 -0
  95. package/dist/games/index.d.ts +16 -0
  96. package/dist/games/index.js +49 -0
  97. package/dist/games/scores.d.ts +69 -0
  98. package/dist/games/scores.js +191 -0
  99. package/dist/games/tetris/board.d.ts +59 -0
  100. package/dist/games/tetris/board.js +170 -0
  101. package/dist/games/tetris/index.d.ts +109 -0
  102. package/dist/games/tetris/index.js +610 -0
  103. package/dist/games/tetris/pieces.d.ts +44 -0
  104. package/dist/games/tetris/pieces.js +271 -0
  105. package/dist/games/tetris/renderer.d.ts +26 -0
  106. package/dist/games/tetris/renderer.js +77 -0
  107. package/dist/guide/guide-content.d.ts +23 -0
  108. package/dist/guide/guide-content.js +196 -0
  109. package/dist/guide/index.d.ts +8 -0
  110. package/dist/guide/index.js +7 -0
  111. package/dist/guide/shared-content.d.ts +37 -0
  112. package/dist/guide/shared-content.js +1272 -0
  113. package/dist/guide/tutorial-helpers.d.ts +57 -0
  114. package/dist/guide/tutorial-helpers.js +147 -0
  115. package/dist/handlers/ask-user-handlers.d.ts +32 -0
  116. package/dist/handlers/ask-user-handlers.js +104 -0
  117. package/dist/handlers/delegation-handlers.d.ts +34 -0
  118. package/dist/handlers/delegation-handlers.js +291 -0
  119. package/dist/handlers/permission-handler.d.ts +30 -0
  120. package/dist/handlers/permission-handler.js +205 -0
  121. package/dist/index.d.ts +11 -1
  122. package/dist/index.js +448 -271
  123. package/dist/input-handlers/memory-handler.d.ts +1 -1
  124. package/dist/input-handlers/memory-handler.js +2 -1
  125. package/dist/models/index.d.ts +10 -0
  126. package/dist/models/index.js +12 -0
  127. package/dist/models/model-registry.d.ts +38 -0
  128. package/dist/models/model-registry.js +69 -0
  129. package/dist/models/model-tiers.d.ts +28 -0
  130. package/dist/models/model-tiers.js +71 -0
  131. package/dist/models/model-validation.d.ts +25 -0
  132. package/dist/models/model-validation.js +291 -0
  133. package/dist/models/ollama-models.d.ts +73 -0
  134. package/dist/models/ollama-models.js +178 -0
  135. package/dist/models/provider-types.d.ts +6 -0
  136. package/dist/models/provider-types.js +1 -0
  137. package/dist/models/providers.d.ts +35 -0
  138. package/dist/models/providers.js +58 -0
  139. package/dist/models/types.d.ts +4 -0
  140. package/dist/models/types.js +4 -0
  141. package/dist/multi-agent/activity.d.ts +21 -0
  142. package/dist/multi-agent/activity.js +34 -0
  143. package/dist/multi-agent/agent-selection.d.ts +55 -0
  144. package/dist/multi-agent/agent-selection.js +90 -0
  145. package/dist/multi-agent/artifacts.d.ts +197 -0
  146. package/dist/multi-agent/artifacts.js +379 -0
  147. package/dist/multi-agent/checkpointer.d.ts +138 -0
  148. package/dist/multi-agent/checkpointer.js +471 -0
  149. package/dist/multi-agent/collision-utils.d.ts +16 -0
  150. package/dist/multi-agent/collision-utils.js +28 -0
  151. package/dist/multi-agent/context-resolver.d.ts +97 -0
  152. package/dist/multi-agent/context-resolver.js +316 -0
  153. package/dist/multi-agent/custom-agents.d.ts +83 -0
  154. package/dist/multi-agent/custom-agents.js +227 -0
  155. package/dist/multi-agent/delegation-tracker.d.ts +157 -0
  156. package/dist/multi-agent/delegation-tracker.js +243 -0
  157. package/dist/multi-agent/file-lock-hook.d.ts +29 -0
  158. package/dist/multi-agent/file-lock-hook.js +97 -0
  159. package/dist/multi-agent/file-locks.d.ts +58 -0
  160. package/dist/multi-agent/file-locks.js +194 -0
  161. package/dist/multi-agent/index.d.ts +24 -0
  162. package/dist/multi-agent/index.js +30 -0
  163. package/dist/multi-agent/mention-parser.d.ts +64 -0
  164. package/dist/multi-agent/mention-parser.js +146 -0
  165. package/dist/multi-agent/notification-manager.d.ts +84 -0
  166. package/dist/multi-agent/notification-manager.js +224 -0
  167. package/dist/multi-agent/pending-requests.d.ts +122 -0
  168. package/dist/multi-agent/pending-requests.js +155 -0
  169. package/dist/multi-agent/session-registry.d.ts +139 -0
  170. package/dist/multi-agent/session-registry.js +514 -0
  171. package/dist/multi-agent/shared-context.d.ts +293 -0
  172. package/dist/multi-agent/shared-context.js +671 -0
  173. package/dist/multi-agent/skill-requirements.d.ts +66 -0
  174. package/dist/multi-agent/skill-requirements.js +178 -0
  175. package/dist/multi-agent/task-assignment.d.ts +69 -0
  176. package/dist/multi-agent/task-assignment.js +123 -0
  177. package/dist/multi-agent/task-suggestion.d.ts +31 -0
  178. package/dist/multi-agent/task-suggestion.js +72 -0
  179. package/dist/multi-agent/team-agent.d.ts +201 -0
  180. package/dist/multi-agent/team-agent.js +488 -0
  181. package/dist/multi-agent/team.d.ts +286 -0
  182. package/dist/multi-agent/team.js +610 -0
  183. package/dist/multi-agent/tool-config.d.ts +110 -0
  184. package/dist/multi-agent/tool-config.js +661 -0
  185. package/dist/multi-agent/types.d.ts +211 -0
  186. package/dist/multi-agent/types.js +617 -0
  187. package/dist/prompts/plan-mode-prompt.d.ts +11 -0
  188. package/dist/prompts/plan-mode-prompt.js +95 -0
  189. package/dist/repl-helpers.js +3 -2
  190. package/dist/repl-v2.d.ts +401 -2
  191. package/dist/repl-v2.js +2577 -65
  192. package/dist/session/index.d.ts +6 -0
  193. package/dist/session/index.js +6 -0
  194. package/dist/session/project-session-manager.d.ts +158 -0
  195. package/dist/session/project-session-manager.js +650 -0
  196. package/dist/settings/index.d.ts +133 -13
  197. package/dist/settings/index.js +329 -24
  198. package/dist/settings/mcp-config.d.ts +76 -0
  199. package/dist/settings/mcp-config.js +143 -0
  200. package/dist/settings/paths.d.ts +4 -0
  201. package/dist/settings/paths.js +6 -0
  202. package/dist/shared-handlers.d.ts +62 -0
  203. package/dist/shared-handlers.js +48 -0
  204. package/dist/system-prompt/builder.d.ts +5 -0
  205. package/dist/system-prompt/builder.js +4 -0
  206. package/dist/system-prompt/index.d.ts +18 -0
  207. package/dist/system-prompt/index.js +18 -0
  208. package/dist/system-prompt/modules.d.ts +5 -0
  209. package/dist/system-prompt/modules.js +4 -0
  210. package/dist/tabbed-menu.js +2 -1
  211. package/dist/templates/compilr-md-import.d.ts +16 -0
  212. package/dist/templates/compilr-md-import.js +241 -0
  213. package/dist/templates/compilr-md.js +10 -61
  214. package/dist/templates/config-json.d.ts +1 -25
  215. package/dist/templates/index.d.ts +2 -0
  216. package/dist/templates/index.js +34 -73
  217. package/dist/tool-names.d.ts +108 -0
  218. package/dist/tool-names.js +227 -0
  219. package/dist/tools/anchor-tools.d.ts +4 -4
  220. package/dist/tools/anchor-tools.js +1 -1
  221. package/dist/tools/artifact-tools.d.ts +42 -0
  222. package/dist/tools/artifact-tools.js +328 -0
  223. package/dist/tools/ask-user-simple.d.ts +1 -1
  224. package/dist/tools/ask-user-simple.js +2 -1
  225. package/dist/tools/ask-user.d.ts +1 -1
  226. package/dist/tools/ask-user.js +2 -1
  227. package/dist/tools/backlog-wrappers.d.ts +5 -3
  228. package/dist/tools/backlog-wrappers.js +16 -1
  229. package/dist/tools/backlog.d.ts +2 -2
  230. package/dist/tools/backlog.js +1 -1
  231. package/dist/tools/db-tools.d.ts +8 -61
  232. package/dist/tools/db-tools.js +8 -13
  233. package/dist/tools/delegate-background.d.ts +27 -0
  234. package/dist/tools/delegate-background.js +115 -0
  235. package/dist/tools/delegate.d.ts +22 -0
  236. package/dist/tools/delegate.js +97 -0
  237. package/dist/tools/delegation-status.d.ts +16 -0
  238. package/dist/tools/delegation-status.js +128 -0
  239. package/dist/tools/document-db.d.ts +5 -5
  240. package/dist/tools/document-db.js +1 -1
  241. package/dist/tools/guide-tool.d.ts +12 -0
  242. package/dist/tools/guide-tool.js +59 -0
  243. package/dist/tools/handoff.d.ts +25 -0
  244. package/dist/tools/handoff.js +99 -0
  245. package/dist/tools/meta-tools.d.ts +26 -0
  246. package/dist/tools/meta-tools.js +47 -0
  247. package/dist/tools/plan-tools.d.ts +54 -0
  248. package/dist/tools/plan-tools.js +338 -0
  249. package/dist/tools/platform-adapter.d.ts +29 -0
  250. package/dist/tools/platform-adapter.js +394 -0
  251. package/dist/tools/project-db.d.ts +5 -73
  252. package/dist/tools/project-db.js +5 -336
  253. package/dist/tools/recall-work-tool.d.ts +18 -0
  254. package/dist/tools/recall-work-tool.js +82 -0
  255. package/dist/tools/workitem-db.d.ts +43 -11
  256. package/dist/tools/workitem-db.js +186 -5
  257. package/dist/tools.d.ts +67 -2
  258. package/dist/tools.js +237 -47
  259. package/dist/ui/autocomplete-controller.d.ts +42 -0
  260. package/dist/ui/autocomplete-controller.js +384 -0
  261. package/dist/ui/base/index.d.ts +1 -1
  262. package/dist/ui/base/index.js +1 -1
  263. package/dist/ui/base/overlay-base-v2.d.ts +10 -0
  264. package/dist/ui/base/overlay-base-v2.js +14 -0
  265. package/dist/ui/base/render-utils.d.ts +19 -0
  266. package/dist/ui/base/render-utils.js +25 -0
  267. package/dist/ui/base/tabbed-list-overlay-v2.d.ts +16 -1
  268. package/dist/ui/base/tabbed-list-overlay-v2.js +19 -1
  269. package/dist/ui/constants/labels.d.ts +14 -0
  270. package/dist/ui/constants/labels.js +51 -0
  271. package/dist/ui/conversation-store.d.ts +55 -0
  272. package/dist/ui/conversation-store.js +107 -0
  273. package/dist/ui/conversation.js +11 -13
  274. package/dist/ui/diff.d.ts +7 -1
  275. package/dist/ui/diff.js +85 -48
  276. package/dist/ui/ephemeral.js +3 -9
  277. package/dist/ui/file-autocomplete.d.ts +24 -0
  278. package/dist/ui/file-autocomplete.js +56 -0
  279. package/dist/ui/footer-renderer.d.ts +69 -0
  280. package/dist/ui/footer-renderer.js +431 -0
  281. package/dist/ui/footer.d.ts +74 -7
  282. package/dist/ui/footer.js +173 -16
  283. package/dist/ui/input-controller.d.ts +51 -0
  284. package/dist/ui/input-controller.js +176 -0
  285. package/dist/ui/input-prompt.d.ts +19 -0
  286. package/dist/ui/input-prompt.js +206 -14
  287. package/dist/ui/keyboard-handler.d.ts +57 -0
  288. package/dist/ui/keyboard-handler.js +557 -0
  289. package/dist/ui/live-region-facade.d.ts +42 -0
  290. package/dist/ui/live-region-facade.js +205 -0
  291. package/dist/ui/live-region.d.ts +0 -4
  292. package/dist/ui/live-region.js +6 -14
  293. package/dist/ui/mascot/renderer.d.ts +1 -1
  294. package/dist/ui/mascot/renderer.js +37 -2
  295. package/dist/ui/overlay/data/tutorial-content.d.ts +9 -0
  296. package/dist/ui/overlay/data/tutorial-content.js +9 -0
  297. package/dist/ui/overlay/data/tutorial-registry.d.ts +12 -0
  298. package/dist/ui/overlay/data/tutorial-registry.js +116 -0
  299. package/dist/ui/overlay/data/tutorial-types.d.ts +35 -0
  300. package/dist/ui/overlay/data/tutorial-types.js +6 -0
  301. package/dist/ui/overlay/data/tutorials/basics/first-conversation.d.ts +7 -0
  302. package/dist/ui/overlay/data/tutorials/basics/first-conversation.js +220 -0
  303. package/dist/ui/overlay/data/tutorials/basics/first-project.d.ts +7 -0
  304. package/dist/ui/overlay/data/tutorials/basics/first-project.js +284 -0
  305. package/dist/ui/overlay/data/tutorials/basics/navigation.d.ts +8 -0
  306. package/dist/ui/overlay/data/tutorials/basics/navigation.js +22 -0
  307. package/dist/ui/overlay/data/tutorials/basics/welcome.d.ts +7 -0
  308. package/dist/ui/overlay/data/tutorials/basics/welcome.js +174 -0
  309. package/dist/ui/overlay/data/tutorials/config/context-management.d.ts +7 -0
  310. package/dist/ui/overlay/data/tutorials/config/context-management.js +158 -0
  311. package/dist/ui/overlay/data/tutorials/config/mcp-servers.d.ts +8 -0
  312. package/dist/ui/overlay/data/tutorials/config/mcp-servers.js +155 -0
  313. package/dist/ui/overlay/data/tutorials/config/model-selection.d.ts +7 -0
  314. package/dist/ui/overlay/data/tutorials/config/model-selection.js +162 -0
  315. package/dist/ui/overlay/data/tutorials/config/permissions-safety.d.ts +7 -0
  316. package/dist/ui/overlay/data/tutorials/config/permissions-safety.js +163 -0
  317. package/dist/ui/overlay/data/tutorials/config/settings-config.d.ts +7 -0
  318. package/dist/ui/overlay/data/tutorials/config/settings-config.js +166 -0
  319. package/dist/ui/overlay/data/tutorials/planning/arch.d.ts +7 -0
  320. package/dist/ui/overlay/data/tutorials/planning/arch.js +168 -0
  321. package/dist/ui/overlay/data/tutorials/planning/backlog.d.ts +7 -0
  322. package/dist/ui/overlay/data/tutorials/planning/backlog.js +103 -0
  323. package/dist/ui/overlay/data/tutorials/planning/build.d.ts +7 -0
  324. package/dist/ui/overlay/data/tutorials/planning/build.js +173 -0
  325. package/dist/ui/overlay/data/tutorials/planning/design.d.ts +7 -0
  326. package/dist/ui/overlay/data/tutorials/planning/design.js +205 -0
  327. package/dist/ui/overlay/data/tutorials/planning/docs.d.ts +7 -0
  328. package/dist/ui/overlay/data/tutorials/planning/docs.js +143 -0
  329. package/dist/ui/overlay/data/tutorials/planning/prd.d.ts +7 -0
  330. package/dist/ui/overlay/data/tutorials/planning/prd.js +173 -0
  331. package/dist/ui/overlay/data/tutorials/planning/scaffold.d.ts +7 -0
  332. package/dist/ui/overlay/data/tutorials/planning/scaffold.js +164 -0
  333. package/dist/ui/overlay/data/tutorials/planning/sketch.d.ts +7 -0
  334. package/dist/ui/overlay/data/tutorials/planning/sketch.js +58 -0
  335. package/dist/ui/overlay/data/tutorials/projects/anchors.d.ts +7 -0
  336. package/dist/ui/overlay/data/tutorials/projects/anchors.js +248 -0
  337. package/dist/ui/overlay/data/tutorials/projects/import-project.d.ts +7 -0
  338. package/dist/ui/overlay/data/tutorials/projects/import-project.js +172 -0
  339. package/dist/ui/overlay/data/tutorials/projects/managing-projects.d.ts +8 -0
  340. package/dist/ui/overlay/data/tutorials/projects/managing-projects.js +212 -0
  341. package/dist/ui/overlay/data/tutorials/projects/new-project.d.ts +7 -0
  342. package/dist/ui/overlay/data/tutorials/projects/new-project.js +251 -0
  343. package/dist/ui/overlay/data/tutorials/projects/session-management.d.ts +7 -0
  344. package/dist/ui/overlay/data/tutorials/projects/session-management.js +169 -0
  345. package/dist/ui/overlay/data/tutorials/teams/background-execution.d.ts +7 -0
  346. package/dist/ui/overlay/data/tutorials/teams/background-execution.js +171 -0
  347. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.d.ts +8 -0
  348. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.js +147 -0
  349. package/dist/ui/overlay/data/tutorials/teams/task-assignment.d.ts +7 -0
  350. package/dist/ui/overlay/data/tutorials/teams/task-assignment.js +204 -0
  351. package/dist/ui/overlay/data/tutorials/teams/team-overview.d.ts +7 -0
  352. package/dist/ui/overlay/data/tutorials/teams/team-overview.js +165 -0
  353. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.d.ts +7 -0
  354. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.js +172 -0
  355. package/dist/ui/overlay/impl/agents-overlay-v2.js +6 -17
  356. package/dist/ui/overlay/impl/anchors-overlay-v2.js +30 -64
  357. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.d.ts +43 -0
  358. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.js +232 -0
  359. package/dist/ui/overlay/impl/artifact-overlay-v2.d.ts +40 -0
  360. package/dist/ui/overlay/impl/artifact-overlay-v2.js +115 -0
  361. package/dist/ui/overlay/impl/ask-user-overlay-v2.js +2 -5
  362. package/dist/ui/overlay/impl/background-overlay-v2.d.ts +40 -0
  363. package/dist/ui/overlay/impl/background-overlay-v2.js +147 -0
  364. package/dist/ui/overlay/impl/backlog-overlay-v2.d.ts +4 -1
  365. package/dist/ui/overlay/impl/backlog-overlay-v2.js +55 -16
  366. package/dist/ui/overlay/impl/changelog-overlay-v2.d.ts +44 -0
  367. package/dist/ui/overlay/impl/changelog-overlay-v2.js +165 -0
  368. package/dist/ui/overlay/impl/commands-overlay-v2.js +4 -6
  369. package/dist/ui/overlay/impl/config-overlay-v2.d.ts +12 -1
  370. package/dist/ui/overlay/impl/config-overlay-v2.js +164 -100
  371. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.d.ts +83 -0
  372. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.js +711 -0
  373. package/dist/ui/overlay/impl/dashboard-overlay-v2.d.ts +2 -0
  374. package/dist/ui/overlay/impl/dashboard-overlay-v2.js +26 -3
  375. package/dist/ui/overlay/impl/delegations-overlay-v2.d.ts +28 -0
  376. package/dist/ui/overlay/impl/delegations-overlay-v2.js +279 -0
  377. package/dist/ui/overlay/impl/docs-overlay-v2.js +12 -9
  378. package/dist/ui/overlay/impl/document-detail-overlay-v2.d.ts +7 -0
  379. package/dist/ui/overlay/impl/document-detail-overlay-v2.js +119 -78
  380. package/dist/ui/overlay/impl/filter-overlay-v2.d.ts +41 -0
  381. package/dist/ui/overlay/impl/filter-overlay-v2.js +110 -0
  382. package/dist/ui/overlay/impl/games-overlay-v2.d.ts +31 -0
  383. package/dist/ui/overlay/impl/games-overlay-v2.js +135 -0
  384. package/dist/ui/overlay/impl/help-overlay-v2.d.ts +26 -3
  385. package/dist/ui/overlay/impl/help-overlay-v2.js +20 -42
  386. package/dist/ui/overlay/impl/login-overlay-v2.d.ts +49 -0
  387. package/dist/ui/overlay/impl/login-overlay-v2.js +277 -0
  388. package/dist/ui/overlay/impl/mcp-overlay-v2.d.ts +63 -0
  389. package/dist/ui/overlay/impl/mcp-overlay-v2.js +907 -0
  390. package/dist/ui/overlay/impl/model-overlay-v2.d.ts +57 -13
  391. package/dist/ui/overlay/impl/model-overlay-v2.js +1086 -61
  392. package/dist/ui/overlay/impl/new-overlay-v2.d.ts +37 -6
  393. package/dist/ui/overlay/impl/new-overlay-v2.js +715 -65
  394. package/dist/ui/overlay/impl/notifications-overlay-v2.d.ts +20 -0
  395. package/dist/ui/overlay/impl/notifications-overlay-v2.js +116 -0
  396. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.d.ts +76 -0
  397. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.js +728 -0
  398. package/dist/ui/overlay/impl/pending-overlay-v2.d.ts +51 -0
  399. package/dist/ui/overlay/impl/pending-overlay-v2.js +445 -0
  400. package/dist/ui/overlay/impl/permission-overlay-v2.js +5 -5
  401. package/dist/ui/overlay/impl/permissions-overlay-v2.d.ts +85 -0
  402. package/dist/ui/overlay/impl/permissions-overlay-v2.js +820 -0
  403. package/dist/ui/overlay/impl/plan-approval-overlay-v2.d.ts +35 -0
  404. package/dist/ui/overlay/impl/plan-approval-overlay-v2.js +181 -0
  405. package/dist/ui/overlay/impl/project-edit-overlay-v2.d.ts +36 -0
  406. package/dist/ui/overlay/impl/project-edit-overlay-v2.js +195 -0
  407. package/dist/ui/overlay/impl/projects-overlay-v2.d.ts +1 -0
  408. package/dist/ui/overlay/impl/projects-overlay-v2.js +278 -44
  409. package/dist/ui/overlay/impl/reset-overlay-v2.d.ts +39 -0
  410. package/dist/ui/overlay/impl/reset-overlay-v2.js +107 -0
  411. package/dist/ui/overlay/impl/resume-overlay-v2.d.ts +60 -0
  412. package/dist/ui/overlay/impl/resume-overlay-v2.js +414 -0
  413. package/dist/ui/overlay/impl/session-mode-overlay-v2.d.ts +43 -0
  414. package/dist/ui/overlay/impl/session-mode-overlay-v2.js +124 -0
  415. package/dist/ui/overlay/impl/tasks-overlay-v2.d.ts +28 -0
  416. package/dist/ui/overlay/impl/tasks-overlay-v2.js +283 -0
  417. package/dist/ui/overlay/impl/team-overlay-v2.d.ts +86 -0
  418. package/dist/ui/overlay/impl/team-overlay-v2.js +692 -0
  419. package/dist/ui/overlay/impl/terminals-overlay-v2.d.ts +26 -0
  420. package/dist/ui/overlay/impl/terminals-overlay-v2.js +217 -0
  421. package/dist/ui/overlay/impl/tools-overlay-v2.js +3 -7
  422. package/dist/ui/overlay/impl/tutorial-overlay-v2.d.ts +30 -16
  423. package/dist/ui/overlay/impl/tutorial-overlay-v2.js +133 -956
  424. package/dist/ui/overlay/impl/workflow-overlay-v2.js +5 -1
  425. package/dist/ui/overlay/index.d.ts +20 -1
  426. package/dist/ui/overlay/index.js +19 -0
  427. package/dist/ui/overlay/types.d.ts +5 -0
  428. package/dist/ui/overlay-manager.d.ts +43 -0
  429. package/dist/ui/overlay-manager.js +238 -0
  430. package/dist/ui/overlays.js +4 -16
  431. package/dist/ui/permission-overlay.js +6 -5
  432. package/dist/ui/status-bar-controller.d.ts +33 -0
  433. package/dist/ui/status-bar-controller.js +99 -0
  434. package/dist/ui/subagent-renderer.js +3 -19
  435. package/dist/ui/terminal-autocomplete-utils.d.ts +23 -0
  436. package/dist/ui/terminal-autocomplete-utils.js +83 -0
  437. package/dist/ui/terminal-line-builders.d.ts +17 -0
  438. package/dist/ui/terminal-line-builders.js +42 -0
  439. package/dist/ui/terminal-render-item.d.ts +16 -0
  440. package/dist/ui/terminal-render-item.js +267 -0
  441. package/dist/ui/terminal-renderer.d.ts +7 -8
  442. package/dist/ui/terminal-renderer.js +7 -8
  443. package/dist/ui/terminal-types.d.ts +179 -0
  444. package/dist/ui/terminal-types.js +34 -0
  445. package/dist/ui/terminal-ui.d.ts +144 -276
  446. package/dist/ui/terminal-ui.js +384 -1861
  447. package/dist/ui/todo-zone.d.ts +19 -1
  448. package/dist/ui/todo-zone.js +71 -13
  449. package/dist/ui/tool-formatters.js +512 -1
  450. package/dist/ui/turn-metrics.d.ts +56 -0
  451. package/dist/ui/turn-metrics.js +75 -0
  452. package/dist/ui/types.d.ts +28 -0
  453. package/dist/ui/types.js +1 -0
  454. package/dist/ui/vscode-diff-ipc.d.ts +102 -0
  455. package/dist/ui/vscode-diff-ipc.js +385 -0
  456. package/dist/utils/credentials.d.ts +24 -5
  457. package/dist/utils/credentials.js +123 -9
  458. package/dist/utils/format-tokens.d.ts +13 -0
  459. package/dist/utils/format-tokens.js +18 -0
  460. package/dist/utils/git-config.d.ts +26 -0
  461. package/dist/utils/git-config.js +54 -0
  462. package/dist/utils/message-utils.d.ts +61 -0
  463. package/dist/utils/message-utils.js +72 -0
  464. package/dist/utils/model-tiers.d.ts +8 -1
  465. package/dist/utils/model-tiers.js +38 -16
  466. package/dist/utils/open-browser.d.ts +5 -0
  467. package/dist/utils/open-browser.js +32 -0
  468. package/dist/utils/path-safety.js +3 -2
  469. package/dist/utils/project-detection.d.ts +58 -0
  470. package/dist/utils/project-detection.js +424 -0
  471. package/dist/utils/project-memory.js +2 -1
  472. package/dist/utils/project-status.d.ts +2 -2
  473. package/dist/utils/startup-perf.d.ts +18 -0
  474. package/dist/utils/startup-perf.js +60 -0
  475. package/dist/utils/token-tracker.d.ts +62 -0
  476. package/dist/utils/token-tracker.js +150 -0
  477. package/dist/utils/token-types.d.ts +23 -0
  478. package/dist/utils/token-types.js +18 -0
  479. package/dist/utils/types/config-types.d.ts +32 -0
  480. package/dist/utils/types/config-types.js +8 -0
  481. package/dist/utils/update-checker.d.ts +28 -0
  482. package/dist/utils/update-checker.js +106 -0
  483. package/dist/utils/version.d.ts +7 -0
  484. package/dist/utils/version.js +10 -0
  485. package/dist/utils/vscode-detect.d.ts +39 -0
  486. package/dist/utils/vscode-detect.js +137 -0
  487. package/package.json +25 -12
  488. package/dist/commands/handler-types.d.ts +0 -68
  489. package/dist/commands/handler-types.js +0 -8
  490. package/dist/commands/handlers/agent-commands.d.ts +0 -13
  491. package/dist/commands/handlers/agent-commands.js +0 -305
  492. package/dist/commands/handlers/design-commands.d.ts +0 -15
  493. package/dist/commands/handlers/design-commands.js +0 -334
  494. package/dist/commands/handlers/index.d.ts +0 -20
  495. package/dist/commands/handlers/index.js +0 -43
  496. package/dist/commands/handlers/overlay-commands.d.ts +0 -21
  497. package/dist/commands/handlers/overlay-commands.js +0 -287
  498. package/dist/commands/handlers/project-commands.d.ts +0 -11
  499. package/dist/commands/handlers/project-commands.js +0 -167
  500. package/dist/commands/handlers/simple-commands.d.ts +0 -19
  501. package/dist/commands/handlers/simple-commands.js +0 -144
  502. package/dist/commands/registry.d.ts +0 -50
  503. package/dist/commands/registry.js +0 -75
  504. package/dist/index.old.d.ts +0 -7
  505. package/dist/index.old.js +0 -1014
  506. package/dist/repl.d.ts +0 -149
  507. package/dist/repl.js +0 -1151
  508. package/dist/templates/claude-md.d.ts +0 -7
  509. package/dist/templates/claude-md.js +0 -189
  510. package/dist/test-autocomplete.d.ts +0 -7
  511. package/dist/test-autocomplete.js +0 -85
  512. package/dist/test-tabbed-menu.d.ts +0 -7
  513. package/dist/test-tabbed-menu.js +0 -25
  514. package/dist/tool-selector.d.ts +0 -71
  515. package/dist/tool-selector.js +0 -184
  516. package/dist/ui/agents-overlay-v2.d.ts +0 -43
  517. package/dist/ui/agents-overlay-v2.js +0 -809
  518. package/dist/ui/agents-overlay.d.ts +0 -12
  519. package/dist/ui/agents-overlay.js +0 -863
  520. package/dist/ui/anchors-overlay.d.ts +0 -12
  521. package/dist/ui/anchors-overlay.js +0 -775
  522. package/dist/ui/arch-type-overlay.d.ts +0 -15
  523. package/dist/ui/arch-type-overlay.js +0 -201
  524. package/dist/ui/ask-user-overlay-v2.d.ts +0 -26
  525. package/dist/ui/ask-user-overlay-v2.js +0 -555
  526. package/dist/ui/ask-user-simple-overlay-v2.d.ts +0 -25
  527. package/dist/ui/ask-user-simple-overlay-v2.js +0 -215
  528. package/dist/ui/backlog-overlay.d.ts +0 -32
  529. package/dist/ui/backlog-overlay.js +0 -652
  530. package/dist/ui/commands-overlay-v2.d.ts +0 -33
  531. package/dist/ui/commands-overlay-v2.js +0 -441
  532. package/dist/ui/commands-overlay.d.ts +0 -16
  533. package/dist/ui/commands-overlay.js +0 -439
  534. package/dist/ui/config-overlay.d.ts +0 -35
  535. package/dist/ui/config-overlay.js +0 -707
  536. package/dist/ui/docs-overlay.d.ts +0 -17
  537. package/dist/ui/docs-overlay.js +0 -303
  538. package/dist/ui/footer-v2.d.ts +0 -222
  539. package/dist/ui/footer-v2.js +0 -1349
  540. package/dist/ui/help-overlay-v2.d.ts +0 -34
  541. package/dist/ui/help-overlay-v2.js +0 -309
  542. package/dist/ui/help-overlay.d.ts +0 -16
  543. package/dist/ui/help-overlay.js +0 -316
  544. package/dist/ui/init-overlay-v2.d.ts +0 -34
  545. package/dist/ui/init-overlay-v2.js +0 -600
  546. package/dist/ui/init-overlay.d.ts +0 -34
  547. package/dist/ui/init-overlay.js +0 -604
  548. package/dist/ui/input-prompt-v2.d.ts +0 -180
  549. package/dist/ui/input-prompt-v2.js +0 -999
  550. package/dist/ui/iteration-limit-overlay-v2.d.ts +0 -21
  551. package/dist/ui/iteration-limit-overlay-v2.js +0 -114
  552. package/dist/ui/keys-overlay-v2.d.ts +0 -41
  553. package/dist/ui/keys-overlay-v2.js +0 -248
  554. package/dist/ui/mascot-overlay-v2.d.ts +0 -41
  555. package/dist/ui/mascot-overlay-v2.js +0 -138
  556. package/dist/ui/mascot-overlay.d.ts +0 -21
  557. package/dist/ui/mascot-overlay.js +0 -146
  558. package/dist/ui/model-overlay-v2.d.ts +0 -49
  559. package/dist/ui/model-overlay-v2.js +0 -118
  560. package/dist/ui/model-overlay.d.ts +0 -27
  561. package/dist/ui/model-overlay.js +0 -221
  562. package/dist/ui/model-warning-overlay.d.ts +0 -30
  563. package/dist/ui/model-warning-overlay.js +0 -169
  564. package/dist/ui/new-overlay.d.ts +0 -34
  565. package/dist/ui/new-overlay.js +0 -604
  566. package/dist/ui/overlay/impl/init-overlay-v2.d.ts +0 -77
  567. package/dist/ui/overlay/impl/init-overlay-v2.js +0 -593
  568. package/dist/ui/overlay/overlay-types.d.ts +0 -128
  569. package/dist/ui/overlay/overlay-types.js +0 -22
  570. package/dist/ui/overlays/help-overlay-v2.d.ts +0 -28
  571. package/dist/ui/overlays/help-overlay-v2.js +0 -198
  572. package/dist/ui/overlays/index.d.ts +0 -11
  573. package/dist/ui/overlays/index.js +0 -11
  574. package/dist/ui/permission-overlay-v2.d.ts +0 -36
  575. package/dist/ui/permission-overlay-v2.js +0 -380
  576. package/dist/ui/projects-overlay.d.ts +0 -19
  577. package/dist/ui/projects-overlay.js +0 -484
  578. package/dist/ui/theme-overlay-v2.d.ts +0 -42
  579. package/dist/ui/theme-overlay-v2.js +0 -135
  580. package/dist/ui/theme-overlay.d.ts +0 -24
  581. package/dist/ui/theme-overlay.js +0 -127
  582. package/dist/ui/tools-overlay-v2.d.ts +0 -47
  583. package/dist/ui/tools-overlay-v2.js +0 -218
  584. package/dist/ui/tools-overlay.d.ts +0 -34
  585. package/dist/ui/tools-overlay.js +0 -230
  586. package/dist/ui/tutorial-overlay-v2.d.ts +0 -31
  587. package/dist/ui/tutorial-overlay-v2.js +0 -1035
  588. package/dist/ui/tutorial-overlay.d.ts +0 -11
  589. package/dist/ui/tutorial-overlay.js +0 -1034
  590. package/dist/ui/workflow-overlay.d.ts +0 -22
  591. package/dist/ui/workflow-overlay.js +0 -636
@@ -6,117 +6,245 @@
6
6
  import * as fs from 'fs';
7
7
  import * as path from 'path';
8
8
  import pc from 'picocolors';
9
- // =============================================================================
10
- // Helper: Progress Bar
11
- // =============================================================================
12
- function renderProgressBar(ratio, width) {
13
- const clamped = Math.max(0, Math.min(1, ratio));
14
- const filled = Math.round(clamped * width);
15
- const empty = width - filled;
16
- const color = clamped > 0.9 ? pc.red : clamped > 0.7 ? pc.yellow : pc.green;
17
- return color('█'.repeat(filled)) + pc.dim(''.repeat(empty));
9
+ import { getCompactMode } from '../../settings/index.js';
10
+ import { renderProgressBar, formatTokens, truncate } from '../../ui/base/index.js';
11
+ import { getStyles } from '../../themes/index.js';
12
+ /**
13
+ * Print compaction results for a single agent
14
+ */
15
+ function printCompactResult(ctx, result, beforeHistory, label) {
16
+ if (!result.success) {
17
+ const prefix = label ? `${label}: ` : '';
18
+ ctx.ui.print({ type: 'warning', message: `${prefix}Compaction not available` });
19
+ return;
20
+ }
21
+ const prefix = label ? `${label}: ` : '';
22
+ const statusParts = [];
23
+ // Token reduction
24
+ const originalTokens = result.originalTokens ?? 0;
25
+ const summaryTokens = result.summaryTokens ?? 0;
26
+ const reduction = originalTokens > 0 ? Math.round((1 - summaryTokens / originalTokens) * 100) : 0;
27
+ statusParts.push(`${prefix}Compacted: ${originalTokens.toLocaleString()} → ${summaryTokens.toLocaleString()} tokens (-${String(reduction)}%)`);
28
+ // Category actions
29
+ if (result.categoryStats) {
30
+ const actions = [];
31
+ if (result.categoryStats.toolResults.action === 'compacted') {
32
+ actions.push('tool results → files');
33
+ }
34
+ if (result.categoryStats.history.action === 'summarized') {
35
+ actions.push('history → summary');
36
+ }
37
+ if (actions.length > 0) {
38
+ statusParts.push(`${prefix}Actions: ${actions.join(', ')}`);
39
+ }
40
+ }
41
+ // Files created
42
+ if (result.filesCreated && result.filesCreated.length > 0) {
43
+ statusParts.push(`${prefix}Files created: ${String(result.filesCreated.length)}`);
44
+ }
45
+ // Restoration hints
46
+ if (result.restorationHintsInjected) {
47
+ statusParts.push(`${prefix}File tracking hints injected`);
48
+ }
49
+ // Tool results repaired
50
+ if (result.toolResultsRepaired && result.toolResultsRepaired > 0) {
51
+ statusParts.push(`${prefix}Orphaned tool results removed: ${String(result.toolResultsRepaired)}`);
52
+ }
53
+ for (const part of statusParts) {
54
+ ctx.ui.print({ type: 'success', message: part });
55
+ }
18
56
  }
19
- // =============================================================================
20
- // Compact Command
21
- // =============================================================================
22
57
  export const compactCommand = {
23
58
  name: 'compact',
24
59
  description: 'Summarize old messages to free context',
25
- async execute(_args, ctx) {
26
- // Check if agent is available
27
- if (!ctx.agent) {
28
- ctx.ui.print({ type: 'warning', message: 'Agent not available for compaction' });
29
- return true;
60
+ details: 'When context is running low, use this to summarize older messages. Supports: /compact (default mode), /compact all, /compact auto, /compact $agentId',
61
+ examples: [
62
+ { code: '/compact', description: 'Use default compact mode from settings' },
63
+ { code: '/compact all', description: 'Compact all initialized agents' },
64
+ { code: '/compact auto', description: 'Compact agents above 70% utilization' },
65
+ { code: '/compact $pm', description: 'Compact a specific agent' },
66
+ ],
67
+ async execute(args, ctx) {
68
+ const trimmed = args.trim();
69
+ if (!trimmed) {
70
+ // Use default from settings
71
+ const mode = getCompactMode();
72
+ return compactByMode(mode, ctx);
30
73
  }
31
- const contextManager = ctx.getContextManager?.();
32
- if (!contextManager) {
33
- ctx.ui.print({ type: 'warning', message: 'Context manager not available' });
34
- return true;
74
+ if (trimmed === 'all') {
75
+ return compactByMode('all', ctx);
35
76
  }
36
- const history = ctx.getHistory?.() ?? [];
37
- if (history.length === 0) {
38
- ctx.ui.print({ type: 'info', message: 'No conversation history to compact' });
39
- return true;
77
+ if (trimmed === 'auto') {
78
+ return compactByMode('auto', ctx);
40
79
  }
41
- // Show current stats
42
- const stats = contextManager.getStats(history.length);
43
- const pct = (stats.utilization * 100).toFixed(1);
44
- ctx.ui.print({
45
- type: 'info',
46
- message: `Current: ${stats.currentTokens.toLocaleString()} tokens (${pct}%), ${String(history.length)} messages`,
47
- });
48
- // Start compaction (user explicitly requested via /compact)
49
- ctx.ui.print({ type: 'info', message: 'Compacting context...' });
50
- try {
51
- // Use the agent's compact() method
52
- const result = (await ctx.agent.compact());
53
- if (!result.success) {
54
- ctx.ui.print({ type: 'warning', message: 'Compaction not available' });
55
- return true;
80
+ if (trimmed.startsWith('$')) {
81
+ const agentId = trimmed.slice(1);
82
+ return compactSpecificAgent(agentId, ctx);
83
+ }
84
+ ctx.ui.print({ type: 'error', message: 'Usage: /compact [all|auto|$agentId]' });
85
+ return true;
86
+ },
87
+ };
88
+ async function compactByMode(mode, ctx) {
89
+ const team = ctx.team;
90
+ switch (mode) {
91
+ case 'active':
92
+ return compactActiveAgent(ctx);
93
+ case 'all': {
94
+ if (!team || team.size <= 1) {
95
+ return compactActiveAgent(ctx);
56
96
  }
57
- // Build status message
58
- const newHistory = ctx.getHistory?.() ?? [];
59
- const statusParts = [];
60
- // Token reduction
61
- const originalTokens = result.originalTokens ?? 0;
62
- const summaryTokens = result.summaryTokens ?? 0;
63
- const reduction = originalTokens > 0 ? Math.round((1 - summaryTokens / originalTokens) * 100) : 0;
64
- statusParts.push(`Compacted: ${originalTokens.toLocaleString()} ${summaryTokens.toLocaleString()} tokens (-${String(reduction)}%)`);
65
- // Message count
66
- statusParts.push(`Messages: ${String(history.length)} → ${String(newHistory.length)} (${String(result.messagesPreserved ?? 0)} preserved)`);
67
- // Category actions
68
- if (result.categoryStats) {
69
- const actions = [];
70
- if (result.categoryStats.toolResults.action === 'compacted') {
71
- actions.push('tool results → files');
97
+ let compacted = 0;
98
+ for (const teamAgent of team.getAll()) {
99
+ if (!teamAgent.isInitialized)
100
+ continue;
101
+ const agent = teamAgent.agent;
102
+ if (!agent)
103
+ continue;
104
+ const state = agent.serialize();
105
+ if (state.messages.length === 0)
106
+ continue;
107
+ ctx.ui.print({ type: 'info', message: `Compacting $${teamAgent.id}...` });
108
+ try {
109
+ const result = (await agent.compact());
110
+ printCompactResult(ctx, result, state.messages, `$${teamAgent.id}`);
111
+ if (result.success)
112
+ compacted++;
72
113
  }
73
- if (result.categoryStats.history.action === 'summarized') {
74
- actions.push('history summary');
75
- }
76
- if (actions.length > 0) {
77
- statusParts.push(`Actions: ${actions.join(', ')}`);
114
+ catch (error) {
115
+ ctx.ui.print({ type: 'error', message: `$${teamAgent.id}: ${error.message}` });
78
116
  }
79
117
  }
80
- // Files created
81
- if (result.filesCreated && result.filesCreated.length > 0) {
82
- statusParts.push(`Files created: ${String(result.filesCreated.length)}`);
118
+ if (compacted === 0) {
119
+ ctx.ui.print({ type: 'info', message: 'No agents needed compaction' });
83
120
  }
84
- // Restoration hints
85
- if (result.restorationHintsInjected) {
86
- statusParts.push('File tracking hints injected');
121
+ return true;
122
+ }
123
+ case 'auto': {
124
+ if (!team || team.size <= 1) {
125
+ return compactActiveAgent(ctx);
87
126
  }
88
- // Tool results repaired
89
- if (result.toolResultsRepaired && result.toolResultsRepaired > 0) {
90
- statusParts.push(`Orphaned tool results removed: ${String(result.toolResultsRepaired)}`);
127
+ const provider = (ctx.provider ?? 'claude');
128
+ let compacted = 0;
129
+ for (const teamAgent of team.getAll()) {
130
+ if (!teamAgent.isInitialized)
131
+ continue;
132
+ const agent = teamAgent.agent;
133
+ if (!agent)
134
+ continue;
135
+ const stats = teamAgent.getContextStats(provider);
136
+ const utilization = stats.maxTokens > 0 ? stats.estimatedTokens / stats.maxTokens : 0;
137
+ if (utilization <= 0.7)
138
+ continue;
139
+ const pct = (utilization * 100).toFixed(1);
140
+ ctx.ui.print({ type: 'info', message: `Compacting $${teamAgent.id} (${pct}% utilized)...` });
141
+ try {
142
+ const state = agent.serialize();
143
+ const result = (await agent.compact());
144
+ printCompactResult(ctx, result, state.messages, `$${teamAgent.id}`);
145
+ if (result.success)
146
+ compacted++;
147
+ }
148
+ catch (error) {
149
+ ctx.ui.print({ type: 'error', message: `$${teamAgent.id}: ${error.message}` });
150
+ }
91
151
  }
92
- // Print results
93
- for (const part of statusParts) {
94
- ctx.ui.print({ type: 'success', message: part });
152
+ if (compacted === 0) {
153
+ ctx.ui.print({ type: 'info', message: 'No agents above 70% utilization' });
95
154
  }
155
+ return true;
96
156
  }
97
- catch (error) {
98
- ctx.ui.print({ type: 'error', message: `Compaction failed: ${error.message}` });
99
- }
157
+ }
158
+ }
159
+ async function compactActiveAgent(ctx) {
160
+ if (!ctx.agent) {
161
+ ctx.ui.print({ type: 'warning', message: 'Agent not available for compaction' });
100
162
  return true;
101
- },
102
- };
163
+ }
164
+ const contextManager = ctx.getContextManager?.();
165
+ if (!contextManager) {
166
+ ctx.ui.print({ type: 'warning', message: 'Context manager not available' });
167
+ return true;
168
+ }
169
+ const history = ctx.getHistory?.() ?? [];
170
+ if (history.length === 0) {
171
+ ctx.ui.print({ type: 'info', message: 'No conversation history to compact' });
172
+ return true;
173
+ }
174
+ // Show current stats
175
+ const stats = contextManager.getStats(history.length);
176
+ const pct = (stats.utilization * 100).toFixed(1);
177
+ ctx.ui.print({
178
+ type: 'info',
179
+ message: `Current: ${stats.currentTokens.toLocaleString()} tokens (${pct}%), ${String(history.length)} messages`,
180
+ });
181
+ ctx.ui.print({ type: 'info', message: 'Compacting context...' });
182
+ try {
183
+ const result = (await ctx.agent.compact());
184
+ printCompactResult(ctx, result, history);
185
+ }
186
+ catch (error) {
187
+ ctx.ui.print({ type: 'error', message: `Compaction failed: ${error.message}` });
188
+ }
189
+ return true;
190
+ }
191
+ async function compactSpecificAgent(agentId, ctx) {
192
+ const team = ctx.team;
193
+ if (!team) {
194
+ ctx.ui.print({ type: 'warning', message: 'No team available' });
195
+ return true;
196
+ }
197
+ const teamAgent = team.get(agentId);
198
+ if (!teamAgent) {
199
+ ctx.ui.print({ type: 'error', message: `Agent '$${agentId}' not found` });
200
+ return true;
201
+ }
202
+ if (!teamAgent.isInitialized || !teamAgent.agent) {
203
+ ctx.ui.print({ type: 'warning', message: `Agent '$${agentId}' is not initialized` });
204
+ return true;
205
+ }
206
+ const agent = teamAgent.agent;
207
+ const state = agent.serialize();
208
+ if (state.messages.length === 0) {
209
+ ctx.ui.print({ type: 'info', message: `Agent '$${agentId}' has no conversation history` });
210
+ return true;
211
+ }
212
+ ctx.ui.print({ type: 'info', message: `Compacting $${agentId}...` });
213
+ try {
214
+ const result = (await agent.compact());
215
+ printCompactResult(ctx, result, state.messages, `$${agentId}`);
216
+ }
217
+ catch (error) {
218
+ ctx.ui.print({ type: 'error', message: `$${agentId}: ${error.message}` });
219
+ }
220
+ return true;
221
+ }
103
222
  // =============================================================================
104
223
  // Context Command
105
224
  // =============================================================================
106
225
  export const contextCommand = {
107
226
  name: 'context',
108
227
  description: 'Show context window usage',
228
+ details: 'Displays current context window utilization including token count, percentage used, and number of messages. Shows breakdown by agent when team has multiple agents.',
229
+ examples: [{ code: '/context' }],
109
230
  execute(_args, ctx) {
110
231
  const lines = [];
111
232
  lines.push('');
233
+ const s = getStyles();
112
234
  lines.push(pc.bold('Context Usage'));
113
235
  lines.push(pc.dim('─'.repeat(40)));
236
+ const team = ctx.team;
114
237
  const contextManager = ctx.getContextManager?.();
115
238
  const history = ctx.getHistory?.() ?? [];
116
239
  if (contextManager) {
117
240
  const stats = contextManager.getStats(history.length);
118
241
  const pct = (stats.utilization * 100).toFixed(1);
119
- const bar = renderProgressBar(stats.utilization, 20);
242
+ const bar = renderProgressBar(stats.utilization, 20, s);
243
+ // Show which agent this is for (when team is active)
244
+ if (team) {
245
+ const active = team.getActive();
246
+ lines.push(` Agent: ${pc.cyan(`${active.mascot} $${active.id}`)}`);
247
+ }
120
248
  lines.push(` Usage: ${bar} ${pct}%`);
121
249
  lines.push(` Tokens: ${pc.cyan(stats.currentTokens.toLocaleString())} / ${pc.dim(stats.maxTokens.toLocaleString())}`);
122
250
  lines.push(` Messages: ${pc.cyan(String(stats.messageCount))}`);
@@ -130,13 +258,38 @@ export const contextCommand = {
130
258
  const maxTokens = 200000;
131
259
  const utilization = total / maxTokens;
132
260
  const pct = (utilization * 100).toFixed(1);
133
- const bar = renderProgressBar(utilization, 20);
261
+ const bar = renderProgressBar(utilization, 20, s);
134
262
  lines.push(` Usage: ${bar} ${pct}%`);
135
263
  lines.push(` Tokens: ${pc.cyan(total.toLocaleString())} / ${pc.dim(maxTokens.toLocaleString())}`);
136
264
  lines.push(` Input: ${pc.cyan(inputTokens.toLocaleString())}`);
137
265
  lines.push(` Output: ${pc.cyan(outputTokens.toLocaleString())}`);
138
266
  lines.push(` Messages: ${pc.cyan(String(history.length))}`);
139
267
  }
268
+ // Show breakdown by agent if team has multiple agents
269
+ if (team && team.size > 1) {
270
+ lines.push('');
271
+ lines.push(pc.bold('By Agent'));
272
+ lines.push(pc.dim('─'.repeat(40)));
273
+ const agents = team.getAll();
274
+ const provider = (ctx.provider ?? 'claude');
275
+ let totalTokens = 0;
276
+ for (const agent of agents) {
277
+ const stats = agent.getContextStats(provider);
278
+ const isActive = agent.id === team.activeAgentId;
279
+ const prefix = isActive ? pc.green('●') : pc.dim('○');
280
+ const label = `${agent.mascot} $${agent.id}`;
281
+ // Use per-agent maxTokens from model-specific context window
282
+ const utilization = stats.maxTokens > 0 ? stats.estimatedTokens / stats.maxTokens : 0;
283
+ const bar = renderProgressBar(utilization, 10, s);
284
+ const pct = (utilization * 100).toFixed(1);
285
+ const maxDisplay = formatTokens(stats.maxTokens);
286
+ lines.push(` ${prefix} ${label.padEnd(18)} ${bar} ${pct.padStart(5)}% ${pc.dim(maxDisplay)} (${String(stats.messageCount)} msgs)`);
287
+ totalTokens += stats.estimatedTokens;
288
+ }
289
+ // Total row
290
+ lines.push(pc.dim(' ' + '─'.repeat(38)));
291
+ lines.push(` Total: ${pc.cyan(totalTokens.toLocaleString())} tokens across ${pc.cyan(String(agents.length))} agents`);
292
+ }
140
293
  lines.push('');
141
294
  ctx.ui.print({ type: 'raw-lines', lines });
142
295
  return Promise.resolve(true);
@@ -148,6 +301,8 @@ export const contextCommand = {
148
301
  export const tokensCommand = {
149
302
  name: 'tokens',
150
303
  description: 'Show token usage',
304
+ details: 'Displays token usage statistics for the current session including input/output tokens. Shows breakdown by agent when team has multiple agents.',
305
+ examples: [{ code: '/tokens' }],
151
306
  execute(_args, ctx) {
152
307
  const lines = [];
153
308
  lines.push('');
@@ -160,6 +315,26 @@ export const tokensCommand = {
160
315
  lines.push(` Output: ${pc.cyan(outputTokens.toLocaleString())} tokens`);
161
316
  lines.push(pc.dim(' ─'.repeat(20)));
162
317
  lines.push(` Total: ${pc.bold(pc.cyan(total.toLocaleString()))} tokens`);
318
+ // Show breakdown by agent if team has multiple agents
319
+ const team = ctx.team;
320
+ if (team && team.size > 1) {
321
+ lines.push('');
322
+ lines.push(pc.bold('By Agent'));
323
+ lines.push(pc.dim('─'.repeat(40)));
324
+ const agents = team.getAll();
325
+ for (const agent of agents) {
326
+ const usage = agent.tokenUsage;
327
+ const agentTotal = usage.input + usage.output;
328
+ const isActive = agent.id === team.activeAgentId;
329
+ const prefix = isActive ? pc.green('●') : pc.dim('○');
330
+ const label = `${agent.mascot} $${agent.id}`;
331
+ // Show all agents, display 0 for unused ones
332
+ const tokenDisplay = agentTotal > 0
333
+ ? pc.cyan(agentTotal.toLocaleString().padStart(10))
334
+ : pc.dim('0'.padStart(10));
335
+ lines.push(` ${prefix} ${label.padEnd(20)} ${tokenDisplay} tokens`);
336
+ }
337
+ }
163
338
  lines.push('');
164
339
  ctx.ui.print({ type: 'raw-lines', lines });
165
340
  return Promise.resolve(true);
@@ -171,6 +346,8 @@ export const tokensCommand = {
171
346
  export const statusCommand = {
172
347
  name: 'status',
173
348
  description: 'Show session status',
349
+ details: 'Displays current session status including CLI version, active model, mode, and context usage.',
350
+ examples: [{ code: '/status' }],
174
351
  execute(_args, ctx) {
175
352
  const lines = [];
176
353
  lines.push('');
@@ -179,12 +356,13 @@ export const statusCommand = {
179
356
  lines.push(` Version: ${pc.cyan(ctx.version)}`);
180
357
  lines.push(` Model: ${pc.cyan(ctx.model ?? 'not set')}`);
181
358
  lines.push(` Provider: ${pc.cyan(ctx.provider ?? 'not set')}`);
359
+ const s = getStyles();
182
360
  const contextManager = ctx.getContextManager?.();
183
361
  const history = ctx.getHistory?.() ?? [];
184
362
  if (contextManager) {
185
363
  const stats = contextManager.getStats(history.length);
186
364
  const pct = (stats.utilization * 100).toFixed(1);
187
- const bar = renderProgressBar(stats.utilization, 20);
365
+ const bar = renderProgressBar(stats.utilization, 20, s);
188
366
  lines.push(` Context: ${bar} ${pct}%`);
189
367
  lines.push(` Messages: ${pc.cyan(String(stats.messageCount))}`);
190
368
  }
@@ -207,6 +385,8 @@ export const statusCommand = {
207
385
  export const todosCommand = {
208
386
  name: 'todos',
209
387
  description: 'Show current todo list',
388
+ details: 'Shows the current todo list that the agent uses to track work in progress.',
389
+ examples: [{ code: '/todos' }],
210
390
  execute(_args, ctx) {
211
391
  const todos = ctx.ui.getTodos();
212
392
  const lines = [];
@@ -248,6 +428,11 @@ export const todosCommand = {
248
428
  export const exportCommand = {
249
429
  name: 'export',
250
430
  description: 'Export conversation to file',
431
+ details: 'Export the current conversation to a markdown file for later reference. Optionally specify a filename.',
432
+ examples: [
433
+ { code: '/export', description: 'Auto-generated filename' },
434
+ { code: '/export notes.md', description: 'Custom filename' },
435
+ ],
251
436
  execute(args, ctx) {
252
437
  const history = ctx.getHistory?.() ?? [];
253
438
  if (history.length === 0) {
@@ -319,7 +504,7 @@ function formatConversationAsMarkdown(history, model) {
319
504
  lines.push(`**Tool Result:**`);
320
505
  if (typeof b.content === 'string') {
321
506
  lines.push('```');
322
- lines.push(b.content.slice(0, 500) + (b.content.length > 500 ? '...' : ''));
507
+ lines.push(truncate(b.content, 500));
323
508
  lines.push('```');
324
509
  }
325
510
  }
@@ -8,6 +8,7 @@ export declare const exitCommand: CommandHandlerV2;
8
8
  export declare const clearCommand: CommandHandlerV2;
9
9
  export declare const helpCommand: CommandHandlerV2;
10
10
  export declare const tutorialCommand: CommandHandlerV2;
11
+ export declare const changelogCommand: CommandHandlerV2;
11
12
  export declare const commandsCommand: CommandHandlerV2;
12
13
  export declare const menuCommand: CommandHandlerV2;
13
14
  export declare const coreCommands: CommandHandlerV2[];