@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
@@ -3,10 +3,12 @@
3
3
  *
4
4
  * Essential commands: exit, clear, help
5
5
  */
6
- import { HelpOverlayV2, TutorialOverlayV2, CommandsOverlayV2, DashboardOverlayV2, } from '../../ui/overlay/index.js';
7
- import { executeCommand } from '../registry.js';
6
+ import { HelpOverlayV2, TutorialOverlayV2, CommandsOverlayV2, DashboardOverlayV2, ChangelogOverlayV2, } from '../../ui/overlay/index.js';
7
+ import { executeCommand, getHelpCommands, getCommand } from '../registry.js';
8
8
  import { projectRepository } from '../../db/repositories/index.js';
9
9
  import { setCurrentProject } from '../../tools/project-db.js';
10
+ import { getStyles } from '../../themes/index.js';
11
+ import { getCurrentProjectIdForTracking, handleProjectSwitch, convertMessagesToItems } from './session.js';
10
12
  // =============================================================================
11
13
  // Exit Command
12
14
  // =============================================================================
@@ -14,6 +16,12 @@ export const exitCommand = {
14
16
  name: 'exit',
15
17
  aliases: ['quit', 'q'],
16
18
  description: 'Exit the REPL',
19
+ details: 'Exits the CLI. Your conversation is not saved unless you export it first.',
20
+ examples: [
21
+ { code: '/exit' },
22
+ { code: '/quit', description: 'Alias' },
23
+ { code: '/q', description: 'Short alias' },
24
+ ],
17
25
  execute(_args, ctx) {
18
26
  ctx.ui.stop();
19
27
  console.log('\nGoodbye!\n');
@@ -27,9 +35,15 @@ export const clearCommand = {
27
35
  name: 'clear',
28
36
  aliases: ['cls'],
29
37
  description: 'Clear the screen',
30
- execute(_args, ctx) {
31
- ctx.printWelcome();
32
- return Promise.resolve(true);
38
+ details: 'Clears the terminal screen. Does not affect conversation history or context.',
39
+ examples: [{ code: '/clear' }],
40
+ async execute(_args, ctx) {
41
+ // Pause footer render loop so console.log() in printWelcome doesn't
42
+ // race with footer positioning (causes hints to land below the footer)
43
+ ctx.ui.pauseAnimation();
44
+ await ctx.printWelcome();
45
+ ctx.ui.resumeAnimation();
46
+ return true;
33
47
  },
34
48
  };
35
49
  // =============================================================================
@@ -39,8 +53,19 @@ export const helpCommand = {
39
53
  name: 'help',
40
54
  aliases: ['h', '?'],
41
55
  description: 'Show available commands',
56
+ details: 'Opens the help overlay with tabs for general info, commands list, and custom commands.',
57
+ examples: [
58
+ { code: '/help' },
59
+ { code: '/?', description: 'Short alias' },
60
+ ],
61
+ interactions: [
62
+ 'Tab cycles: All → Built-in → Custom',
63
+ '↑/↓ to navigate command list',
64
+ 'Enter to view command details',
65
+ 'Esc to go back or close',
66
+ ],
42
67
  async execute(_args, ctx) {
43
- const helpOverlay = new HelpOverlayV2();
68
+ const helpOverlay = new HelpOverlayV2({ getHelpCommands, getCommand });
44
69
  await ctx.ui.showOverlay(helpOverlay);
45
70
  return true;
46
71
  },
@@ -51,6 +76,15 @@ export const helpCommand = {
51
76
  export const tutorialCommand = {
52
77
  name: 'tutorial',
53
78
  description: 'Interactive workflow tutorial',
79
+ details: 'Opens a comprehensive tutorial covering all CLI features. Browse by category (Basics, Projects, Planning, Teams, Config) and view detailed guides for each topic.',
80
+ examples: [{ code: '/tutorial' }],
81
+ interactions: [
82
+ '←/→ or Tab to switch between category tabs',
83
+ '↑/↓ or j/k to navigate topics',
84
+ 'Enter to view topic details',
85
+ '/ to search tutorials',
86
+ 'Esc to go back or close',
87
+ ],
54
88
  async execute(_args, ctx) {
55
89
  const tutorialOverlay = new TutorialOverlayV2();
56
90
  const result = await ctx.ui.showOverlay(tutorialOverlay);
@@ -61,11 +95,42 @@ export const tutorialCommand = {
61
95
  },
62
96
  };
63
97
  // =============================================================================
98
+ // Changelog Command
99
+ // =============================================================================
100
+ export const changelogCommand = {
101
+ name: 'changelog',
102
+ aliases: ['changes', 'whatsnew'],
103
+ description: 'View release notes',
104
+ details: 'Opens a browsable overlay showing release notes for each version. View categorized changes (added, changed, fixed) for any release.',
105
+ examples: [
106
+ { code: '/changelog' },
107
+ { code: '/whatsnew', description: 'Alias' },
108
+ ],
109
+ interactions: [
110
+ '↑/↓ or j/k to navigate releases',
111
+ 'Enter to view release details',
112
+ '/ to search releases',
113
+ 'Esc to go back or close',
114
+ ],
115
+ async execute(_args, ctx) {
116
+ const overlay = new ChangelogOverlayV2();
117
+ await ctx.ui.showOverlay(overlay);
118
+ return true;
119
+ },
120
+ };
121
+ // =============================================================================
64
122
  // Commands Command
65
123
  // =============================================================================
66
124
  export const commandsCommand = {
67
125
  name: 'commands',
68
126
  description: 'Manage custom commands',
127
+ details: 'Create, edit, or delete custom slash commands. Custom commands are markdown files that expand into prompts when invoked.',
128
+ examples: [{ code: '/commands' }],
129
+ interactions: [
130
+ '↑/↓ to navigate commands',
131
+ 'Enter to select or create new',
132
+ 'Esc to close',
133
+ ],
69
134
  async execute(_args, ctx) {
70
135
  const commandsOverlay = new CommandsOverlayV2();
71
136
  const result = await ctx.ui.showOverlay(commandsOverlay);
@@ -81,9 +146,31 @@ export const commandsCommand = {
81
146
  export const menuCommand = {
82
147
  name: 'menu',
83
148
  description: 'Return to the Project Dashboard',
149
+ details: 'Opens the Project Dashboard where you can see current project info, switch projects, or start new work. From the dashboard you can create new projects, open existing ones, or start Quick Chat mode.',
150
+ examples: [{ code: '/menu' }],
151
+ interactions: [
152
+ '↑/↓ or j/k to navigate',
153
+ '←/→ or h/l to switch tabs (Dashboard ↔ More)',
154
+ 'Enter to select, q/Esc to exit',
155
+ 'n for /new, p for projects, c for chat, w for workflow',
156
+ ],
84
157
  async execute(_args, ctx) {
85
158
  // Print logo to scrolling area (stays visible while overlays render below)
86
159
  ctx.printLogo();
160
+ // Show session restoration info if available (startup only, one-shot)
161
+ const sessionInfo = ctx.consumeRestoredSessionInfo();
162
+ if (sessionInfo) {
163
+ const s = getStyles();
164
+ console.log(s.info(sessionInfo));
165
+ console.log('');
166
+ }
167
+ // Show update notification if available
168
+ if (ctx.updateAvailable) {
169
+ const s = getStyles();
170
+ console.log(s.warning(` ⬆ Update available: v${ctx.updateAvailable.current} → v${ctx.updateAvailable.latest}`));
171
+ console.log(s.muted(' Run: npm update -g @compilr-dev/cli'));
172
+ console.log('');
173
+ }
87
174
  // Dashboard loop - returns to dashboard after sub-commands until user exits or continues
88
175
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
89
176
  while (true) {
@@ -98,9 +185,10 @@ export const menuCommand = {
98
185
  ctx.ui.stop();
99
186
  console.log('\nGoodbye!\n');
100
187
  return false;
101
- case 'continue':
188
+ case 'continue': {
102
189
  // Switch to selected project if different from current
103
190
  if (result.projectId) {
191
+ const oldProjectId = getCurrentProjectIdForTracking();
104
192
  const project = projectRepository.getById(result.projectId);
105
193
  if (project) {
106
194
  setCurrentProject({
@@ -111,15 +199,51 @@ export const menuCommand = {
111
199
  });
112
200
  ctx.ui.setProjectName(project.displayName);
113
201
  ctx.ui.print({ type: 'success', message: `Switched to project: ${project.displayName}` });
202
+ // Handle project switch - saves old session/team and loads new project's team
203
+ const switchResult = await handleProjectSwitch(oldProjectId, ctx.agent ?? null, ctx.team && ctx.agentFactory ? {
204
+ team: ctx.team,
205
+ agentFactory: ctx.agentFactory,
206
+ } : undefined);
207
+ if (switchResult?.switched) {
208
+ // Update the team if a new one was created/loaded
209
+ if (switchResult.newTeam && ctx.setTeam) {
210
+ ctx.setTeam(switchResult.newTeam);
211
+ // Update footer with new active agent
212
+ const active = switchResult.newTeam.getActive();
213
+ ctx.ui.setActiveTeamAgent({
214
+ id: active.id,
215
+ displayName: active.displayName,
216
+ mascot: active.mascot,
217
+ });
218
+ }
219
+ if (switchResult.sessionRestored) {
220
+ ctx.ui.print({ type: 'info', message: `Session restored (${String(switchResult.messageCount)} messages).` });
221
+ ctx.ui.print({ type: 'info', message: 'Tip: Use Ctrl+R to view conversation history.' });
222
+ if (switchResult.restoredMessages) {
223
+ ctx.ui.setRestoredHistory(convertMessagesToItems(switchResult.restoredMessages));
224
+ }
225
+ }
226
+ }
114
227
  }
115
228
  }
116
229
  return true; // Exit loop, return to REPL
117
- case 'chat':
230
+ }
231
+ case 'chat': {
232
+ // Track old project for team saving
233
+ const oldProjectId = getCurrentProjectIdForTracking();
234
+ // Save current team before clearing project (if in a project)
235
+ if (oldProjectId !== null && ctx.team && ctx.agentFactory) {
236
+ await handleProjectSwitch(oldProjectId, ctx.agent ?? null, {
237
+ team: ctx.team,
238
+ agentFactory: ctx.agentFactory,
239
+ });
240
+ }
118
241
  // Clear current project for quick chat mode
119
242
  setCurrentProject(null);
120
243
  ctx.ui.setProjectName(null);
121
244
  ctx.ui.print({ type: 'warning', message: 'Quick Chat mode - no project context. Use /menu to select a project.' });
122
245
  return true; // Exit loop, return to REPL
246
+ }
123
247
  case 'new':
124
248
  await executeCommand('new', '', ctx);
125
249
  // Loop back to dashboard after /new completes
@@ -160,6 +284,7 @@ export const coreCommands = [
160
284
  clearCommand,
161
285
  helpCommand,
162
286
  tutorialCommand,
287
+ changelogCommand,
163
288
  commandsCommand,
164
289
  menuCommand,
165
290
  ];
@@ -10,6 +10,8 @@ import { spawn } from 'child_process';
10
10
  export const sampleTodosCommand = {
11
11
  name: 'sample-todos',
12
12
  description: 'Add sample todos for testing (debug)',
13
+ details: 'Debug command that adds sample todo items to the footer for testing the todo display. Not for regular use.',
14
+ examples: [{ code: '/sample-todos' }],
13
15
  execute(_args, ctx) {
14
16
  ctx.ui.setTodos([
15
17
  { content: 'First task', status: 'completed' },
@@ -26,6 +28,11 @@ export const sampleTodosCommand = {
26
28
  export const suggestCommand = {
27
29
  name: 'suggest',
28
30
  description: 'Set ghost text suggestion (debug)',
31
+ details: 'Debug command that sets a ghost text suggestion in the input prompt for testing the autocomplete display.',
32
+ examples: [
33
+ { code: '/suggest', description: 'Default suggestion' },
34
+ { code: '/suggest hello world', description: 'Custom suggestion' },
35
+ ],
29
36
  execute(args, ctx) {
30
37
  if (args) {
31
38
  ctx.ui.setSuggestion(args);
@@ -44,6 +51,11 @@ export const suggestCommand = {
44
51
  export const bashCommand = {
45
52
  name: 'bash',
46
53
  description: 'Execute a real bash command in LiveRegion (debug)',
54
+ details: 'Debug command that executes a real bash command and streams output to the LiveRegion. Used for testing bash display rendering.',
55
+ examples: [
56
+ { code: '/bash', description: 'Default hello command' },
57
+ { code: '/bash ls -la', description: 'Run ls command' },
58
+ ],
47
59
  async execute(args, ctx) {
48
60
  const command = args || 'echo "Hello from bash!" && sleep 1 && echo "Done!"';
49
61
  const id = `bash-${String(Date.now())}`;
@@ -103,6 +115,12 @@ function sleep(ms) {
103
115
  export const subagentCommand = {
104
116
  name: 'subagent',
105
117
  description: 'Simulate a subagent in LiveRegion (debug)',
118
+ details: 'Debug command that simulates subagent execution with tool calls and completion in the LiveRegion. Used for testing subagent display rendering.',
119
+ examples: [
120
+ { code: '/subagent', description: 'Single subagent' },
121
+ { code: '/subagent multi', description: 'Multiple subagents' },
122
+ { code: '/subagent 5', description: 'Run 5 subagents' },
123
+ ],
106
124
  async execute(args, ctx) {
107
125
  // Parse args: "single" or "multi" or number
108
126
  const mode = args.trim().toLowerCase();
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Delegations Command Handler
3
+ *
4
+ * Opens the delegations overlay to view coordinator delegation status.
5
+ */
6
+ import type { CommandHandlerV2 } from '../types.js';
7
+ export declare const delegationsCommand: CommandHandlerV2;
8
+ export declare const delegationsCommands: CommandHandlerV2[];
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Delegations Command Handler
3
+ *
4
+ * Opens the delegations overlay to view coordinator delegation status.
5
+ */
6
+ import { DelegationsOverlayV2 } from '../../ui/overlay/index.js';
7
+ export const delegationsCommand = {
8
+ name: 'delegations',
9
+ aliases: ['del'],
10
+ description: 'View delegation status and history',
11
+ details: 'Shows delegations from the coordinator to background specialists. ' +
12
+ 'Displays active, completed, and failed delegations with timing and results.',
13
+ examples: [
14
+ { code: '/delegations', description: 'Open the delegations overlay' },
15
+ { code: '/del', description: 'Short alias' },
16
+ ],
17
+ interactions: [
18
+ '↑↓ to navigate',
19
+ 'Enter to view details',
20
+ 'c to clear completed',
21
+ 'Esc to close',
22
+ ],
23
+ async execute(_args, ctx) {
24
+ const overlay = new DelegationsOverlayV2();
25
+ await ctx.ui.showOverlay(overlay);
26
+ return true;
27
+ },
28
+ };
29
+ export const delegationsCommands = [delegationsCommand];
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Files Command for REPL V2
3
+ *
4
+ * Shows files tracked during the session (read, modified, referenced).
5
+ * Supports multi-agent teams: shows files per agent.
6
+ */
7
+ import type { CommandHandlerV2 } from '../types.js';
8
+ export declare const filesCommands: CommandHandlerV2[];
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Files Command for REPL V2
3
+ *
4
+ * Shows files tracked during the session (read, modified, referenced).
5
+ * Supports multi-agent teams: shows files per agent.
6
+ */
7
+ import pc from 'picocolors';
8
+ // =============================================================================
9
+ // Helpers
10
+ // =============================================================================
11
+ const TYPE_LABELS = {
12
+ read: pc.cyan('read'),
13
+ modified: pc.yellow('modified'),
14
+ referenced: pc.dim('referenced'),
15
+ };
16
+ const TYPE_ICONS = {
17
+ read: pc.cyan('R'),
18
+ modified: pc.yellow('M'),
19
+ referenced: pc.dim('~'),
20
+ };
21
+ function formatPath(filePath) {
22
+ const cwd = process.cwd();
23
+ if (filePath.startsWith(cwd + '/')) {
24
+ return filePath.slice(cwd.length + 1);
25
+ }
26
+ return filePath;
27
+ }
28
+ function formatFileEntry(access) {
29
+ const icon = TYPE_ICONS[access.type];
30
+ const displayPath = formatPath(access.path);
31
+ const parts = [` [${icon}] ${displayPath}`];
32
+ if (access.lineCount !== undefined) {
33
+ parts.push(pc.dim(` (${String(access.lineCount)} lines)`));
34
+ }
35
+ if ('content' in access && access.content !== undefined) {
36
+ parts.push(pc.dim(' [cached]'));
37
+ }
38
+ return parts.join('');
39
+ }
40
+ function printFilesForAgent(ctx, agent, label, typeFilter) {
41
+ const tracker = agent.getFileTracker();
42
+ if (!tracker || tracker.size === 0) {
43
+ ctx.ui.print({ type: 'info', message: `${label}: No tracked files` });
44
+ return;
45
+ }
46
+ const filterOpts = typeFilter ? { type: typeFilter } : undefined;
47
+ const accesses = tracker.getAccesses(filterOpts);
48
+ if (accesses.length === 0) {
49
+ ctx.ui.print({
50
+ type: 'info',
51
+ message: `${label}: No ${typeFilter ?? ''} files`,
52
+ });
53
+ return;
54
+ }
55
+ const stats = tracker.getStats();
56
+ const lines = [];
57
+ lines.push('');
58
+ lines.push(pc.bold(label));
59
+ lines.push(pc.dim(` ${String(stats.read)} read, ${String(stats.modified)} modified, ${String(stats.referenced)} referenced`));
60
+ lines.push('');
61
+ if (typeFilter) {
62
+ lines.push(` ${TYPE_LABELS[typeFilter]} files:`);
63
+ for (const access of accesses) {
64
+ lines.push(formatFileEntry(access));
65
+ }
66
+ }
67
+ else {
68
+ // Group by type: modified first, then read, then referenced
69
+ const modified = accesses.filter((a) => a.type === 'modified');
70
+ const read = accesses.filter((a) => a.type === 'read');
71
+ const referenced = accesses.filter((a) => a.type === 'referenced');
72
+ if (modified.length > 0) {
73
+ lines.push(` ${TYPE_LABELS.modified} (${String(modified.length)}):`);
74
+ for (const access of modified) {
75
+ lines.push(formatFileEntry(access));
76
+ }
77
+ lines.push('');
78
+ }
79
+ if (read.length > 0) {
80
+ lines.push(` ${TYPE_LABELS.read} (${String(read.length)}):`);
81
+ for (const access of read) {
82
+ lines.push(formatFileEntry(access));
83
+ }
84
+ lines.push('');
85
+ }
86
+ if (referenced.length > 0) {
87
+ lines.push(` ${TYPE_LABELS.referenced} (${String(referenced.length)}):`);
88
+ for (const access of referenced) {
89
+ lines.push(formatFileEntry(access));
90
+ }
91
+ }
92
+ }
93
+ ctx.ui.print({ type: 'raw-lines', lines });
94
+ }
95
+ // =============================================================================
96
+ // /files Command
97
+ // =============================================================================
98
+ const filesCommand = {
99
+ name: 'files',
100
+ description: 'Show tracked file accesses',
101
+ details: 'Display files read, modified, or referenced during this session. ' +
102
+ 'In multi-agent teams, shows files per agent.',
103
+ examples: [
104
+ { code: '/files', description: 'Show all tracked files' },
105
+ { code: '/files read', description: 'Show only files that were read' },
106
+ { code: '/files modified', description: 'Show only modified files' },
107
+ { code: '/files referenced', description: 'Show only referenced files' },
108
+ ],
109
+ execute(args, ctx) {
110
+ // Parse optional type filter
111
+ const trimmed = args.trim().toLowerCase();
112
+ let typeFilter;
113
+ if (trimmed === 'read' || trimmed === 'modified' || trimmed === 'referenced') {
114
+ typeFilter = trimmed;
115
+ }
116
+ else if (trimmed && trimmed !== '') {
117
+ ctx.ui.print({
118
+ type: 'warning',
119
+ message: `Unknown filter: "${trimmed}". Use: read, modified, referenced`,
120
+ });
121
+ return Promise.resolve(true);
122
+ }
123
+ // Collect all unique Agent instances (dedup by object identity)
124
+ const agentEntries = [];
125
+ const seen = new Set();
126
+ // Multi-agent: iterate all team agents
127
+ if (ctx.team) {
128
+ for (const teamAgent of ctx.team.getAll()) {
129
+ if (!teamAgent.agent)
130
+ continue;
131
+ seen.add(teamAgent.agent);
132
+ const label = teamAgent.id === 'default'
133
+ ? 'Lead Agent'
134
+ : `$${teamAgent.id} (${teamAgent.displayName})`;
135
+ agentEntries.push({ label, agent: teamAgent.agent });
136
+ }
137
+ }
138
+ // Always check ctx.agent too — it may differ from team entries
139
+ // (e.g., REPL's active agent reference diverged after reinitialization)
140
+ if (ctx.agent && !seen.has(ctx.agent)) {
141
+ const label = ctx.team ? 'Active Agent' : 'Tracked Files';
142
+ agentEntries.push({ label, agent: ctx.agent });
143
+ }
144
+ if (agentEntries.length === 0) {
145
+ ctx.ui.print({ type: 'warning', message: 'Agent not available' });
146
+ return Promise.resolve(true);
147
+ }
148
+ let anyTracked = false;
149
+ for (const entry of agentEntries) {
150
+ const tracker = entry.agent.getFileTracker();
151
+ if (!tracker || tracker.size === 0)
152
+ continue;
153
+ anyTracked = true;
154
+ printFilesForAgent(ctx, entry.agent, entry.label, typeFilter);
155
+ }
156
+ if (!anyTracked) {
157
+ ctx.ui.print({ type: 'info', message: 'No tracked files' });
158
+ }
159
+ return Promise.resolve(true);
160
+ },
161
+ };
162
+ export const filesCommands = [filesCommand];
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Conversation Filter Command Handler
3
+ *
4
+ * Filters the conversation display to show only specific agents.
5
+ * The filter is display-only - full history is preserved.
6
+ */
7
+ import type { CommandHandlerV2 } from '../types.js';
8
+ export declare const filterCommand: CommandHandlerV2;
9
+ export declare const filterCommands: CommandHandlerV2[];
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Conversation Filter Command Handler
3
+ *
4
+ * Filters the conversation display to show only specific agents.
5
+ * The filter is display-only - full history is preserved.
6
+ */
7
+ import { FilterOverlayV2 } from '../../ui/overlay/impl/filter-overlay-v2.js';
8
+ // =============================================================================
9
+ // Filter Command
10
+ // =============================================================================
11
+ export const filterCommand = {
12
+ name: 'filter',
13
+ aliases: ['f'],
14
+ description: 'Filter conversation to show only specific agents',
15
+ details: 'Shows only messages from selected agents. The filter is display-only - full history is preserved. Use /filter --clear or /f to show all messages again.',
16
+ examples: [
17
+ { code: '/filter', description: 'Open filter overlay' },
18
+ { code: '/f', description: 'Open filter overlay (alias)' },
19
+ { code: '/filter $arch', description: 'Show only $arch messages' },
20
+ { code: '/filter $arch $dev', description: 'Show $arch and $dev messages' },
21
+ { code: '/filter --clear', description: 'Clear filter, show all messages' },
22
+ ],
23
+ interactions: [
24
+ 'Space to toggle agent selection',
25
+ 'a to select all agents',
26
+ 'n to deselect all agents',
27
+ 'Enter to apply filter',
28
+ 'Esc to cancel',
29
+ ],
30
+ async execute(args, ctx) {
31
+ // Handle --clear flag
32
+ if (args.trim() === '--clear') {
33
+ ctx.ui.clearConversationFilter();
34
+ ctx.ui.print({
35
+ type: 'info',
36
+ message: 'Conversation filter cleared - showing all messages',
37
+ });
38
+ return true;
39
+ }
40
+ // Handle quick filter with agent names: /filter $arch $dev
41
+ const agentArgs = args.trim();
42
+ if (agentArgs) {
43
+ // Parse agent IDs from args (e.g., "$arch $dev" or "arch dev")
44
+ const agentIds = agentArgs
45
+ .split(/\s+/)
46
+ .map(arg => arg.replace(/^\$/, '').toLowerCase())
47
+ .filter(id => id.length > 0);
48
+ if (agentIds.length > 0) {
49
+ // Validate agent IDs exist in team
50
+ if (ctx.team) {
51
+ const validIds = agentIds.filter(id => ctx.team?.has(id));
52
+ const invalidIds = agentIds.filter(id => !ctx.team?.has(id));
53
+ if (invalidIds.length > 0) {
54
+ ctx.ui.print({
55
+ type: 'warning',
56
+ message: `Unknown agents: ${invalidIds.map(id => `$${id}`).join(', ')}`,
57
+ });
58
+ }
59
+ if (validIds.length > 0) {
60
+ ctx.ui.setConversationFilter(validIds);
61
+ ctx.ui.print({
62
+ type: 'info',
63
+ message: `Filtering to: ${validIds.map(id => `$${id}`).join(', ')}`,
64
+ });
65
+ return true;
66
+ }
67
+ }
68
+ else {
69
+ // No team, just apply filter
70
+ ctx.ui.setConversationFilter(agentIds);
71
+ ctx.ui.print({
72
+ type: 'info',
73
+ message: `Filtering to: ${agentIds.map(id => `$${id}`).join(', ')}`,
74
+ });
75
+ return true;
76
+ }
77
+ }
78
+ }
79
+ // No args - show overlay
80
+ if (!ctx.team) {
81
+ ctx.ui.print({
82
+ type: 'warning',
83
+ message: 'No team agents available. Use /filter $agent to filter manually.',
84
+ });
85
+ return true;
86
+ }
87
+ // Get current filter state
88
+ const currentFilter = ctx.ui.getConversationFilter();
89
+ // Get all agent IDs from team
90
+ const allAgents = ctx.team.getAgentIds().map(id => {
91
+ const agent = ctx.team?.get(id);
92
+ return {
93
+ id,
94
+ displayName: agent?.displayName ?? id,
95
+ mascot: agent?.mascot ?? '[•_•]',
96
+ selected: currentFilter.isActive ? currentFilter.agentIds.includes(id) : true,
97
+ };
98
+ });
99
+ // Show overlay
100
+ const overlay = new FilterOverlayV2({
101
+ agents: allAgents,
102
+ currentFilter: currentFilter.agentIds,
103
+ });
104
+ const result = await ctx.ui.showOverlay(overlay);
105
+ if (result && result.type === 'apply') {
106
+ if (result.agentIds.length === 0 || result.agentIds.length === allAgents.length) {
107
+ // All or none selected = clear filter
108
+ ctx.ui.clearConversationFilter();
109
+ ctx.ui.print({
110
+ type: 'info',
111
+ message: 'Conversation filter cleared - showing all messages',
112
+ });
113
+ }
114
+ else {
115
+ ctx.ui.setConversationFilter(result.agentIds);
116
+ ctx.ui.print({
117
+ type: 'info',
118
+ message: `Filtering to: ${result.agentIds.map(id => `$${id}`).join(', ')}`,
119
+ });
120
+ }
121
+ }
122
+ return true;
123
+ },
124
+ };
125
+ // =============================================================================
126
+ // Export
127
+ // =============================================================================
128
+ export const filterCommands = [
129
+ filterCommand,
130
+ ];
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Games Command Handler
3
+ *
4
+ * Hidden easter egg - terminal arcade games!
5
+ */
6
+ import type { CommandHandlerV2 } from '../types.js';
7
+ export declare const gamesCommand: CommandHandlerV2;