@compilr-dev/cli 0.5.0 → 0.5.2

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