@compilr-dev/cli 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (591) hide show
  1. package/README.md +236 -68
  2. package/dist/.tsbuildinfo.app +1 -0
  3. package/dist/.tsbuildinfo.data +1 -0
  4. package/dist/.tsbuildinfo.domain +1 -0
  5. package/dist/.tsbuildinfo.foundation +1 -0
  6. package/dist/agent.d.ts +61 -4
  7. package/dist/agent.js +241 -245
  8. package/dist/anchors/index.d.ts +1 -1
  9. package/dist/anchors/index.js +1 -1
  10. package/dist/anchors/project-anchors.d.ts +2 -2
  11. package/dist/anchors/project-anchors.js +1 -1
  12. package/dist/auth/api-client.d.ts +124 -0
  13. package/dist/auth/api-client.js +261 -0
  14. package/dist/auth/index.d.ts +172 -0
  15. package/dist/auth/index.js +545 -0
  16. package/dist/auth/storage.d.ts +52 -0
  17. package/dist/auth/storage.js +118 -0
  18. package/dist/changelog/index.d.ts +16 -0
  19. package/dist/changelog/index.js +24 -0
  20. package/dist/changelog/releases.d.ts +17 -0
  21. package/dist/changelog/releases.js +63 -0
  22. package/dist/commands-v2/handlers/auth.d.ts +10 -0
  23. package/dist/commands-v2/handlers/auth.js +118 -0
  24. package/dist/commands-v2/handlers/background.d.ts +14 -0
  25. package/dist/commands-v2/handlers/background.js +276 -0
  26. package/dist/commands-v2/handlers/context.js +266 -81
  27. package/dist/commands-v2/handlers/core.d.ts +1 -0
  28. package/dist/commands-v2/handlers/core.js +133 -8
  29. package/dist/commands-v2/handlers/debug.js +18 -0
  30. package/dist/commands-v2/handlers/delegations.d.ts +8 -0
  31. package/dist/commands-v2/handlers/delegations.js +29 -0
  32. package/dist/commands-v2/handlers/files.d.ts +8 -0
  33. package/dist/commands-v2/handlers/files.js +162 -0
  34. package/dist/commands-v2/handlers/filter.d.ts +9 -0
  35. package/dist/commands-v2/handlers/filter.js +130 -0
  36. package/dist/commands-v2/handlers/games.d.ts +7 -0
  37. package/dist/commands-v2/handlers/games.js +57 -0
  38. package/dist/commands-v2/handlers/index.d.ts +13 -0
  39. package/dist/commands-v2/handlers/index.js +39 -0
  40. package/dist/commands-v2/handlers/mcp.d.ts +8 -0
  41. package/dist/commands-v2/handlers/mcp.js +39 -0
  42. package/dist/commands-v2/handlers/notifications.d.ts +9 -0
  43. package/dist/commands-v2/handlers/notifications.js +34 -0
  44. package/dist/commands-v2/handlers/project.js +244 -23
  45. package/dist/commands-v2/handlers/reset.d.ts +11 -0
  46. package/dist/commands-v2/handlers/reset.js +118 -0
  47. package/dist/commands-v2/handlers/session.d.ts +161 -0
  48. package/dist/commands-v2/handlers/session.js +805 -0
  49. package/dist/commands-v2/handlers/settings.d.ts +2 -0
  50. package/dist/commands-v2/handlers/settings.js +217 -35
  51. package/dist/commands-v2/handlers/tasks.d.ts +5 -0
  52. package/dist/commands-v2/handlers/tasks.js +36 -0
  53. package/dist/commands-v2/handlers/team.d.ts +9 -0
  54. package/dist/commands-v2/handlers/team.js +549 -0
  55. package/dist/commands-v2/handlers/terminals.d.ts +9 -0
  56. package/dist/commands-v2/handlers/terminals.js +34 -0
  57. package/dist/commands-v2/index.d.ts +3 -2
  58. package/dist/commands-v2/index.js +4 -1
  59. package/dist/commands-v2/registry.d.ts +15 -0
  60. package/dist/commands-v2/registry.js +34 -0
  61. package/dist/commands-v2/types.d.ts +81 -3
  62. package/dist/commands.js +13 -0
  63. package/dist/compilr-diff-companion.vsix +0 -0
  64. package/dist/db/index.js +98 -4
  65. package/dist/db/repositories/document-repository.d.ts +2 -0
  66. package/dist/db/repositories/document-repository.js +5 -1
  67. package/dist/db/repositories/index.d.ts +2 -0
  68. package/dist/db/repositories/index.js +1 -0
  69. package/dist/db/repositories/plan-repository.d.ts +101 -0
  70. package/dist/db/repositories/plan-repository.js +275 -0
  71. package/dist/db/repositories/project-repository.d.ts +6 -0
  72. package/dist/db/repositories/project-repository.js +41 -0
  73. package/dist/db/repositories/work-item-repository.d.ts +15 -0
  74. package/dist/db/repositories/work-item-repository.js +69 -4
  75. package/dist/db/schema.d.ts +40 -3
  76. package/dist/db/schema.js +66 -3
  77. package/dist/episodes/index.d.ts +20 -0
  78. package/dist/episodes/index.js +27 -0
  79. package/dist/episodes/recorder.d.ts +51 -0
  80. package/dist/episodes/recorder.js +195 -0
  81. package/dist/episodes/significant-work.d.ts +21 -0
  82. package/dist/episodes/significant-work.js +56 -0
  83. package/dist/episodes/store.d.ts +38 -0
  84. package/dist/episodes/store.js +199 -0
  85. package/dist/episodes/types.d.ts +35 -0
  86. package/dist/episodes/types.js +6 -0
  87. package/dist/episodes/work-at-risk.d.ts +12 -0
  88. package/dist/episodes/work-at-risk.js +38 -0
  89. package/dist/episodes/work-summary-anchor.d.ts +23 -0
  90. package/dist/episodes/work-summary-anchor.js +73 -0
  91. package/dist/games/coins.d.ts +66 -0
  92. package/dist/games/coins.js +165 -0
  93. package/dist/games/game-base.d.ts +84 -0
  94. package/dist/games/game-base.js +204 -0
  95. package/dist/games/index.d.ts +16 -0
  96. package/dist/games/index.js +49 -0
  97. package/dist/games/scores.d.ts +69 -0
  98. package/dist/games/scores.js +191 -0
  99. package/dist/games/tetris/board.d.ts +59 -0
  100. package/dist/games/tetris/board.js +170 -0
  101. package/dist/games/tetris/index.d.ts +109 -0
  102. package/dist/games/tetris/index.js +610 -0
  103. package/dist/games/tetris/pieces.d.ts +44 -0
  104. package/dist/games/tetris/pieces.js +271 -0
  105. package/dist/games/tetris/renderer.d.ts +26 -0
  106. package/dist/games/tetris/renderer.js +77 -0
  107. package/dist/guide/guide-content.d.ts +23 -0
  108. package/dist/guide/guide-content.js +196 -0
  109. package/dist/guide/index.d.ts +8 -0
  110. package/dist/guide/index.js +7 -0
  111. package/dist/guide/shared-content.d.ts +37 -0
  112. package/dist/guide/shared-content.js +1272 -0
  113. package/dist/guide/tutorial-helpers.d.ts +57 -0
  114. package/dist/guide/tutorial-helpers.js +147 -0
  115. package/dist/handlers/ask-user-handlers.d.ts +32 -0
  116. package/dist/handlers/ask-user-handlers.js +104 -0
  117. package/dist/handlers/delegation-handlers.d.ts +34 -0
  118. package/dist/handlers/delegation-handlers.js +291 -0
  119. package/dist/handlers/permission-handler.d.ts +30 -0
  120. package/dist/handlers/permission-handler.js +205 -0
  121. package/dist/index.d.ts +11 -1
  122. package/dist/index.js +448 -271
  123. package/dist/input-handlers/memory-handler.d.ts +1 -1
  124. package/dist/input-handlers/memory-handler.js +2 -1
  125. package/dist/models/index.d.ts +10 -0
  126. package/dist/models/index.js +12 -0
  127. package/dist/models/model-registry.d.ts +38 -0
  128. package/dist/models/model-registry.js +69 -0
  129. package/dist/models/model-tiers.d.ts +28 -0
  130. package/dist/models/model-tiers.js +71 -0
  131. package/dist/models/model-validation.d.ts +25 -0
  132. package/dist/models/model-validation.js +291 -0
  133. package/dist/models/ollama-models.d.ts +73 -0
  134. package/dist/models/ollama-models.js +178 -0
  135. package/dist/models/provider-types.d.ts +6 -0
  136. package/dist/models/provider-types.js +1 -0
  137. package/dist/models/providers.d.ts +35 -0
  138. package/dist/models/providers.js +58 -0
  139. package/dist/models/types.d.ts +4 -0
  140. package/dist/models/types.js +4 -0
  141. package/dist/multi-agent/activity.d.ts +21 -0
  142. package/dist/multi-agent/activity.js +34 -0
  143. package/dist/multi-agent/agent-selection.d.ts +55 -0
  144. package/dist/multi-agent/agent-selection.js +90 -0
  145. package/dist/multi-agent/artifacts.d.ts +197 -0
  146. package/dist/multi-agent/artifacts.js +379 -0
  147. package/dist/multi-agent/checkpointer.d.ts +138 -0
  148. package/dist/multi-agent/checkpointer.js +471 -0
  149. package/dist/multi-agent/collision-utils.d.ts +16 -0
  150. package/dist/multi-agent/collision-utils.js +28 -0
  151. package/dist/multi-agent/context-resolver.d.ts +97 -0
  152. package/dist/multi-agent/context-resolver.js +316 -0
  153. package/dist/multi-agent/custom-agents.d.ts +83 -0
  154. package/dist/multi-agent/custom-agents.js +227 -0
  155. package/dist/multi-agent/delegation-tracker.d.ts +157 -0
  156. package/dist/multi-agent/delegation-tracker.js +243 -0
  157. package/dist/multi-agent/file-lock-hook.d.ts +29 -0
  158. package/dist/multi-agent/file-lock-hook.js +97 -0
  159. package/dist/multi-agent/file-locks.d.ts +58 -0
  160. package/dist/multi-agent/file-locks.js +194 -0
  161. package/dist/multi-agent/index.d.ts +24 -0
  162. package/dist/multi-agent/index.js +30 -0
  163. package/dist/multi-agent/mention-parser.d.ts +64 -0
  164. package/dist/multi-agent/mention-parser.js +146 -0
  165. package/dist/multi-agent/notification-manager.d.ts +84 -0
  166. package/dist/multi-agent/notification-manager.js +224 -0
  167. package/dist/multi-agent/pending-requests.d.ts +122 -0
  168. package/dist/multi-agent/pending-requests.js +155 -0
  169. package/dist/multi-agent/session-registry.d.ts +139 -0
  170. package/dist/multi-agent/session-registry.js +514 -0
  171. package/dist/multi-agent/shared-context.d.ts +293 -0
  172. package/dist/multi-agent/shared-context.js +671 -0
  173. package/dist/multi-agent/skill-requirements.d.ts +66 -0
  174. package/dist/multi-agent/skill-requirements.js +178 -0
  175. package/dist/multi-agent/task-assignment.d.ts +69 -0
  176. package/dist/multi-agent/task-assignment.js +123 -0
  177. package/dist/multi-agent/task-suggestion.d.ts +31 -0
  178. package/dist/multi-agent/task-suggestion.js +72 -0
  179. package/dist/multi-agent/team-agent.d.ts +201 -0
  180. package/dist/multi-agent/team-agent.js +488 -0
  181. package/dist/multi-agent/team.d.ts +286 -0
  182. package/dist/multi-agent/team.js +610 -0
  183. package/dist/multi-agent/tool-config.d.ts +110 -0
  184. package/dist/multi-agent/tool-config.js +661 -0
  185. package/dist/multi-agent/types.d.ts +211 -0
  186. package/dist/multi-agent/types.js +617 -0
  187. package/dist/prompts/plan-mode-prompt.d.ts +11 -0
  188. package/dist/prompts/plan-mode-prompt.js +95 -0
  189. package/dist/repl-helpers.js +3 -2
  190. package/dist/repl-v2.d.ts +401 -2
  191. package/dist/repl-v2.js +2577 -65
  192. package/dist/session/index.d.ts +6 -0
  193. package/dist/session/index.js +6 -0
  194. package/dist/session/project-session-manager.d.ts +158 -0
  195. package/dist/session/project-session-manager.js +650 -0
  196. package/dist/settings/index.d.ts +133 -13
  197. package/dist/settings/index.js +329 -24
  198. package/dist/settings/mcp-config.d.ts +76 -0
  199. package/dist/settings/mcp-config.js +143 -0
  200. package/dist/settings/paths.d.ts +4 -0
  201. package/dist/settings/paths.js +6 -0
  202. package/dist/shared-handlers.d.ts +62 -0
  203. package/dist/shared-handlers.js +48 -0
  204. package/dist/system-prompt/builder.d.ts +5 -0
  205. package/dist/system-prompt/builder.js +4 -0
  206. package/dist/system-prompt/index.d.ts +18 -0
  207. package/dist/system-prompt/index.js +18 -0
  208. package/dist/system-prompt/modules.d.ts +5 -0
  209. package/dist/system-prompt/modules.js +4 -0
  210. package/dist/tabbed-menu.js +2 -1
  211. package/dist/templates/compilr-md-import.d.ts +16 -0
  212. package/dist/templates/compilr-md-import.js +241 -0
  213. package/dist/templates/compilr-md.js +10 -61
  214. package/dist/templates/config-json.d.ts +1 -25
  215. package/dist/templates/index.d.ts +2 -0
  216. package/dist/templates/index.js +34 -73
  217. package/dist/tool-names.d.ts +108 -0
  218. package/dist/tool-names.js +227 -0
  219. package/dist/tools/anchor-tools.d.ts +4 -4
  220. package/dist/tools/anchor-tools.js +1 -1
  221. package/dist/tools/artifact-tools.d.ts +42 -0
  222. package/dist/tools/artifact-tools.js +328 -0
  223. package/dist/tools/ask-user-simple.d.ts +1 -1
  224. package/dist/tools/ask-user-simple.js +2 -1
  225. package/dist/tools/ask-user.d.ts +1 -1
  226. package/dist/tools/ask-user.js +2 -1
  227. package/dist/tools/backlog-wrappers.d.ts +5 -3
  228. package/dist/tools/backlog-wrappers.js +16 -1
  229. package/dist/tools/backlog.d.ts +2 -2
  230. package/dist/tools/backlog.js +1 -1
  231. package/dist/tools/db-tools.d.ts +8 -61
  232. package/dist/tools/db-tools.js +8 -13
  233. package/dist/tools/delegate-background.d.ts +27 -0
  234. package/dist/tools/delegate-background.js +115 -0
  235. package/dist/tools/delegate.d.ts +22 -0
  236. package/dist/tools/delegate.js +97 -0
  237. package/dist/tools/delegation-status.d.ts +16 -0
  238. package/dist/tools/delegation-status.js +128 -0
  239. package/dist/tools/document-db.d.ts +5 -5
  240. package/dist/tools/document-db.js +1 -1
  241. package/dist/tools/guide-tool.d.ts +12 -0
  242. package/dist/tools/guide-tool.js +59 -0
  243. package/dist/tools/handoff.d.ts +25 -0
  244. package/dist/tools/handoff.js +99 -0
  245. package/dist/tools/meta-tools.d.ts +26 -0
  246. package/dist/tools/meta-tools.js +47 -0
  247. package/dist/tools/plan-tools.d.ts +54 -0
  248. package/dist/tools/plan-tools.js +338 -0
  249. package/dist/tools/platform-adapter.d.ts +29 -0
  250. package/dist/tools/platform-adapter.js +394 -0
  251. package/dist/tools/project-db.d.ts +5 -73
  252. package/dist/tools/project-db.js +5 -336
  253. package/dist/tools/recall-work-tool.d.ts +18 -0
  254. package/dist/tools/recall-work-tool.js +82 -0
  255. package/dist/tools/workitem-db.d.ts +43 -11
  256. package/dist/tools/workitem-db.js +186 -5
  257. package/dist/tools.d.ts +67 -2
  258. package/dist/tools.js +237 -47
  259. package/dist/ui/autocomplete-controller.d.ts +42 -0
  260. package/dist/ui/autocomplete-controller.js +384 -0
  261. package/dist/ui/base/index.d.ts +1 -1
  262. package/dist/ui/base/index.js +1 -1
  263. package/dist/ui/base/overlay-base-v2.d.ts +10 -0
  264. package/dist/ui/base/overlay-base-v2.js +14 -0
  265. package/dist/ui/base/render-utils.d.ts +19 -0
  266. package/dist/ui/base/render-utils.js +25 -0
  267. package/dist/ui/base/tabbed-list-overlay-v2.d.ts +16 -1
  268. package/dist/ui/base/tabbed-list-overlay-v2.js +19 -1
  269. package/dist/ui/constants/labels.d.ts +14 -0
  270. package/dist/ui/constants/labels.js +51 -0
  271. package/dist/ui/conversation-store.d.ts +55 -0
  272. package/dist/ui/conversation-store.js +107 -0
  273. package/dist/ui/conversation.js +11 -13
  274. package/dist/ui/diff.d.ts +7 -1
  275. package/dist/ui/diff.js +85 -48
  276. package/dist/ui/ephemeral.js +3 -9
  277. package/dist/ui/file-autocomplete.d.ts +24 -0
  278. package/dist/ui/file-autocomplete.js +56 -0
  279. package/dist/ui/footer-renderer.d.ts +69 -0
  280. package/dist/ui/footer-renderer.js +431 -0
  281. package/dist/ui/footer.d.ts +74 -7
  282. package/dist/ui/footer.js +173 -16
  283. package/dist/ui/input-controller.d.ts +51 -0
  284. package/dist/ui/input-controller.js +176 -0
  285. package/dist/ui/input-prompt.d.ts +19 -0
  286. package/dist/ui/input-prompt.js +206 -14
  287. package/dist/ui/keyboard-handler.d.ts +57 -0
  288. package/dist/ui/keyboard-handler.js +557 -0
  289. package/dist/ui/live-region-facade.d.ts +42 -0
  290. package/dist/ui/live-region-facade.js +205 -0
  291. package/dist/ui/live-region.d.ts +0 -4
  292. package/dist/ui/live-region.js +6 -14
  293. package/dist/ui/mascot/renderer.d.ts +1 -1
  294. package/dist/ui/mascot/renderer.js +37 -2
  295. package/dist/ui/overlay/data/tutorial-content.d.ts +9 -0
  296. package/dist/ui/overlay/data/tutorial-content.js +9 -0
  297. package/dist/ui/overlay/data/tutorial-registry.d.ts +12 -0
  298. package/dist/ui/overlay/data/tutorial-registry.js +116 -0
  299. package/dist/ui/overlay/data/tutorial-types.d.ts +35 -0
  300. package/dist/ui/overlay/data/tutorial-types.js +6 -0
  301. package/dist/ui/overlay/data/tutorials/basics/first-conversation.d.ts +7 -0
  302. package/dist/ui/overlay/data/tutorials/basics/first-conversation.js +220 -0
  303. package/dist/ui/overlay/data/tutorials/basics/first-project.d.ts +7 -0
  304. package/dist/ui/overlay/data/tutorials/basics/first-project.js +284 -0
  305. package/dist/ui/overlay/data/tutorials/basics/navigation.d.ts +8 -0
  306. package/dist/ui/overlay/data/tutorials/basics/navigation.js +22 -0
  307. package/dist/ui/overlay/data/tutorials/basics/welcome.d.ts +7 -0
  308. package/dist/ui/overlay/data/tutorials/basics/welcome.js +174 -0
  309. package/dist/ui/overlay/data/tutorials/config/context-management.d.ts +7 -0
  310. package/dist/ui/overlay/data/tutorials/config/context-management.js +158 -0
  311. package/dist/ui/overlay/data/tutorials/config/mcp-servers.d.ts +8 -0
  312. package/dist/ui/overlay/data/tutorials/config/mcp-servers.js +155 -0
  313. package/dist/ui/overlay/data/tutorials/config/model-selection.d.ts +7 -0
  314. package/dist/ui/overlay/data/tutorials/config/model-selection.js +162 -0
  315. package/dist/ui/overlay/data/tutorials/config/permissions-safety.d.ts +7 -0
  316. package/dist/ui/overlay/data/tutorials/config/permissions-safety.js +163 -0
  317. package/dist/ui/overlay/data/tutorials/config/settings-config.d.ts +7 -0
  318. package/dist/ui/overlay/data/tutorials/config/settings-config.js +166 -0
  319. package/dist/ui/overlay/data/tutorials/planning/arch.d.ts +7 -0
  320. package/dist/ui/overlay/data/tutorials/planning/arch.js +168 -0
  321. package/dist/ui/overlay/data/tutorials/planning/backlog.d.ts +7 -0
  322. package/dist/ui/overlay/data/tutorials/planning/backlog.js +103 -0
  323. package/dist/ui/overlay/data/tutorials/planning/build.d.ts +7 -0
  324. package/dist/ui/overlay/data/tutorials/planning/build.js +173 -0
  325. package/dist/ui/overlay/data/tutorials/planning/design.d.ts +7 -0
  326. package/dist/ui/overlay/data/tutorials/planning/design.js +205 -0
  327. package/dist/ui/overlay/data/tutorials/planning/docs.d.ts +7 -0
  328. package/dist/ui/overlay/data/tutorials/planning/docs.js +143 -0
  329. package/dist/ui/overlay/data/tutorials/planning/prd.d.ts +7 -0
  330. package/dist/ui/overlay/data/tutorials/planning/prd.js +173 -0
  331. package/dist/ui/overlay/data/tutorials/planning/scaffold.d.ts +7 -0
  332. package/dist/ui/overlay/data/tutorials/planning/scaffold.js +164 -0
  333. package/dist/ui/overlay/data/tutorials/planning/sketch.d.ts +7 -0
  334. package/dist/ui/overlay/data/tutorials/planning/sketch.js +58 -0
  335. package/dist/ui/overlay/data/tutorials/projects/anchors.d.ts +7 -0
  336. package/dist/ui/overlay/data/tutorials/projects/anchors.js +248 -0
  337. package/dist/ui/overlay/data/tutorials/projects/import-project.d.ts +7 -0
  338. package/dist/ui/overlay/data/tutorials/projects/import-project.js +172 -0
  339. package/dist/ui/overlay/data/tutorials/projects/managing-projects.d.ts +8 -0
  340. package/dist/ui/overlay/data/tutorials/projects/managing-projects.js +212 -0
  341. package/dist/ui/overlay/data/tutorials/projects/new-project.d.ts +7 -0
  342. package/dist/ui/overlay/data/tutorials/projects/new-project.js +251 -0
  343. package/dist/ui/overlay/data/tutorials/projects/session-management.d.ts +7 -0
  344. package/dist/ui/overlay/data/tutorials/projects/session-management.js +169 -0
  345. package/dist/ui/overlay/data/tutorials/teams/background-execution.d.ts +7 -0
  346. package/dist/ui/overlay/data/tutorials/teams/background-execution.js +171 -0
  347. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.d.ts +8 -0
  348. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.js +147 -0
  349. package/dist/ui/overlay/data/tutorials/teams/task-assignment.d.ts +7 -0
  350. package/dist/ui/overlay/data/tutorials/teams/task-assignment.js +204 -0
  351. package/dist/ui/overlay/data/tutorials/teams/team-overview.d.ts +7 -0
  352. package/dist/ui/overlay/data/tutorials/teams/team-overview.js +165 -0
  353. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.d.ts +7 -0
  354. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.js +172 -0
  355. package/dist/ui/overlay/impl/agents-overlay-v2.js +6 -17
  356. package/dist/ui/overlay/impl/anchors-overlay-v2.js +30 -64
  357. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.d.ts +43 -0
  358. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.js +232 -0
  359. package/dist/ui/overlay/impl/artifact-overlay-v2.d.ts +40 -0
  360. package/dist/ui/overlay/impl/artifact-overlay-v2.js +115 -0
  361. package/dist/ui/overlay/impl/ask-user-overlay-v2.js +2 -5
  362. package/dist/ui/overlay/impl/background-overlay-v2.d.ts +40 -0
  363. package/dist/ui/overlay/impl/background-overlay-v2.js +147 -0
  364. package/dist/ui/overlay/impl/backlog-overlay-v2.d.ts +4 -1
  365. package/dist/ui/overlay/impl/backlog-overlay-v2.js +55 -16
  366. package/dist/ui/overlay/impl/changelog-overlay-v2.d.ts +44 -0
  367. package/dist/ui/overlay/impl/changelog-overlay-v2.js +165 -0
  368. package/dist/ui/overlay/impl/commands-overlay-v2.js +4 -6
  369. package/dist/ui/overlay/impl/config-overlay-v2.d.ts +12 -1
  370. package/dist/ui/overlay/impl/config-overlay-v2.js +164 -100
  371. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.d.ts +83 -0
  372. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.js +711 -0
  373. package/dist/ui/overlay/impl/dashboard-overlay-v2.d.ts +2 -0
  374. package/dist/ui/overlay/impl/dashboard-overlay-v2.js +26 -3
  375. package/dist/ui/overlay/impl/delegations-overlay-v2.d.ts +28 -0
  376. package/dist/ui/overlay/impl/delegations-overlay-v2.js +279 -0
  377. package/dist/ui/overlay/impl/docs-overlay-v2.js +12 -9
  378. package/dist/ui/overlay/impl/document-detail-overlay-v2.d.ts +7 -0
  379. package/dist/ui/overlay/impl/document-detail-overlay-v2.js +119 -78
  380. package/dist/ui/overlay/impl/filter-overlay-v2.d.ts +41 -0
  381. package/dist/ui/overlay/impl/filter-overlay-v2.js +110 -0
  382. package/dist/ui/overlay/impl/games-overlay-v2.d.ts +31 -0
  383. package/dist/ui/overlay/impl/games-overlay-v2.js +135 -0
  384. package/dist/ui/overlay/impl/help-overlay-v2.d.ts +26 -3
  385. package/dist/ui/overlay/impl/help-overlay-v2.js +20 -42
  386. package/dist/ui/overlay/impl/login-overlay-v2.d.ts +49 -0
  387. package/dist/ui/overlay/impl/login-overlay-v2.js +277 -0
  388. package/dist/ui/overlay/impl/mcp-overlay-v2.d.ts +63 -0
  389. package/dist/ui/overlay/impl/mcp-overlay-v2.js +907 -0
  390. package/dist/ui/overlay/impl/model-overlay-v2.d.ts +57 -13
  391. package/dist/ui/overlay/impl/model-overlay-v2.js +1086 -61
  392. package/dist/ui/overlay/impl/new-overlay-v2.d.ts +37 -6
  393. package/dist/ui/overlay/impl/new-overlay-v2.js +715 -65
  394. package/dist/ui/overlay/impl/notifications-overlay-v2.d.ts +20 -0
  395. package/dist/ui/overlay/impl/notifications-overlay-v2.js +116 -0
  396. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.d.ts +76 -0
  397. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.js +728 -0
  398. package/dist/ui/overlay/impl/pending-overlay-v2.d.ts +51 -0
  399. package/dist/ui/overlay/impl/pending-overlay-v2.js +445 -0
  400. package/dist/ui/overlay/impl/permission-overlay-v2.js +5 -5
  401. package/dist/ui/overlay/impl/permissions-overlay-v2.d.ts +85 -0
  402. package/dist/ui/overlay/impl/permissions-overlay-v2.js +820 -0
  403. package/dist/ui/overlay/impl/plan-approval-overlay-v2.d.ts +35 -0
  404. package/dist/ui/overlay/impl/plan-approval-overlay-v2.js +181 -0
  405. package/dist/ui/overlay/impl/project-edit-overlay-v2.d.ts +36 -0
  406. package/dist/ui/overlay/impl/project-edit-overlay-v2.js +195 -0
  407. package/dist/ui/overlay/impl/projects-overlay-v2.d.ts +1 -0
  408. package/dist/ui/overlay/impl/projects-overlay-v2.js +278 -44
  409. package/dist/ui/overlay/impl/reset-overlay-v2.d.ts +39 -0
  410. package/dist/ui/overlay/impl/reset-overlay-v2.js +107 -0
  411. package/dist/ui/overlay/impl/resume-overlay-v2.d.ts +60 -0
  412. package/dist/ui/overlay/impl/resume-overlay-v2.js +414 -0
  413. package/dist/ui/overlay/impl/session-mode-overlay-v2.d.ts +43 -0
  414. package/dist/ui/overlay/impl/session-mode-overlay-v2.js +124 -0
  415. package/dist/ui/overlay/impl/tasks-overlay-v2.d.ts +28 -0
  416. package/dist/ui/overlay/impl/tasks-overlay-v2.js +283 -0
  417. package/dist/ui/overlay/impl/team-overlay-v2.d.ts +86 -0
  418. package/dist/ui/overlay/impl/team-overlay-v2.js +692 -0
  419. package/dist/ui/overlay/impl/terminals-overlay-v2.d.ts +26 -0
  420. package/dist/ui/overlay/impl/terminals-overlay-v2.js +217 -0
  421. package/dist/ui/overlay/impl/tools-overlay-v2.js +3 -7
  422. package/dist/ui/overlay/impl/tutorial-overlay-v2.d.ts +30 -16
  423. package/dist/ui/overlay/impl/tutorial-overlay-v2.js +133 -956
  424. package/dist/ui/overlay/impl/workflow-overlay-v2.js +5 -1
  425. package/dist/ui/overlay/index.d.ts +20 -1
  426. package/dist/ui/overlay/index.js +19 -0
  427. package/dist/ui/overlay/types.d.ts +5 -0
  428. package/dist/ui/overlay-manager.d.ts +43 -0
  429. package/dist/ui/overlay-manager.js +238 -0
  430. package/dist/ui/overlays.js +4 -16
  431. package/dist/ui/permission-overlay.js +6 -5
  432. package/dist/ui/status-bar-controller.d.ts +33 -0
  433. package/dist/ui/status-bar-controller.js +99 -0
  434. package/dist/ui/subagent-renderer.js +3 -19
  435. package/dist/ui/terminal-autocomplete-utils.d.ts +23 -0
  436. package/dist/ui/terminal-autocomplete-utils.js +83 -0
  437. package/dist/ui/terminal-line-builders.d.ts +17 -0
  438. package/dist/ui/terminal-line-builders.js +42 -0
  439. package/dist/ui/terminal-render-item.d.ts +16 -0
  440. package/dist/ui/terminal-render-item.js +267 -0
  441. package/dist/ui/terminal-renderer.d.ts +7 -8
  442. package/dist/ui/terminal-renderer.js +7 -8
  443. package/dist/ui/terminal-types.d.ts +179 -0
  444. package/dist/ui/terminal-types.js +34 -0
  445. package/dist/ui/terminal-ui.d.ts +144 -276
  446. package/dist/ui/terminal-ui.js +384 -1861
  447. package/dist/ui/todo-zone.d.ts +19 -1
  448. package/dist/ui/todo-zone.js +71 -13
  449. package/dist/ui/tool-formatters.js +512 -1
  450. package/dist/ui/turn-metrics.d.ts +56 -0
  451. package/dist/ui/turn-metrics.js +75 -0
  452. package/dist/ui/types.d.ts +28 -0
  453. package/dist/ui/types.js +1 -0
  454. package/dist/ui/vscode-diff-ipc.d.ts +102 -0
  455. package/dist/ui/vscode-diff-ipc.js +385 -0
  456. package/dist/utils/credentials.d.ts +24 -5
  457. package/dist/utils/credentials.js +123 -9
  458. package/dist/utils/format-tokens.d.ts +13 -0
  459. package/dist/utils/format-tokens.js +18 -0
  460. package/dist/utils/git-config.d.ts +26 -0
  461. package/dist/utils/git-config.js +54 -0
  462. package/dist/utils/message-utils.d.ts +61 -0
  463. package/dist/utils/message-utils.js +72 -0
  464. package/dist/utils/model-tiers.d.ts +8 -1
  465. package/dist/utils/model-tiers.js +38 -16
  466. package/dist/utils/open-browser.d.ts +5 -0
  467. package/dist/utils/open-browser.js +32 -0
  468. package/dist/utils/path-safety.js +3 -2
  469. package/dist/utils/project-detection.d.ts +58 -0
  470. package/dist/utils/project-detection.js +424 -0
  471. package/dist/utils/project-memory.js +2 -1
  472. package/dist/utils/project-status.d.ts +2 -2
  473. package/dist/utils/startup-perf.d.ts +18 -0
  474. package/dist/utils/startup-perf.js +60 -0
  475. package/dist/utils/token-tracker.d.ts +62 -0
  476. package/dist/utils/token-tracker.js +150 -0
  477. package/dist/utils/token-types.d.ts +23 -0
  478. package/dist/utils/token-types.js +18 -0
  479. package/dist/utils/types/config-types.d.ts +32 -0
  480. package/dist/utils/types/config-types.js +8 -0
  481. package/dist/utils/update-checker.d.ts +28 -0
  482. package/dist/utils/update-checker.js +106 -0
  483. package/dist/utils/version.d.ts +7 -0
  484. package/dist/utils/version.js +10 -0
  485. package/dist/utils/vscode-detect.d.ts +39 -0
  486. package/dist/utils/vscode-detect.js +137 -0
  487. package/package.json +25 -12
  488. package/dist/commands/handler-types.d.ts +0 -68
  489. package/dist/commands/handler-types.js +0 -8
  490. package/dist/commands/handlers/agent-commands.d.ts +0 -13
  491. package/dist/commands/handlers/agent-commands.js +0 -305
  492. package/dist/commands/handlers/design-commands.d.ts +0 -15
  493. package/dist/commands/handlers/design-commands.js +0 -334
  494. package/dist/commands/handlers/index.d.ts +0 -20
  495. package/dist/commands/handlers/index.js +0 -43
  496. package/dist/commands/handlers/overlay-commands.d.ts +0 -21
  497. package/dist/commands/handlers/overlay-commands.js +0 -287
  498. package/dist/commands/handlers/project-commands.d.ts +0 -11
  499. package/dist/commands/handlers/project-commands.js +0 -167
  500. package/dist/commands/handlers/simple-commands.d.ts +0 -19
  501. package/dist/commands/handlers/simple-commands.js +0 -144
  502. package/dist/commands/registry.d.ts +0 -50
  503. package/dist/commands/registry.js +0 -75
  504. package/dist/index.old.d.ts +0 -7
  505. package/dist/index.old.js +0 -1014
  506. package/dist/repl.d.ts +0 -149
  507. package/dist/repl.js +0 -1151
  508. package/dist/templates/claude-md.d.ts +0 -7
  509. package/dist/templates/claude-md.js +0 -189
  510. package/dist/test-autocomplete.d.ts +0 -7
  511. package/dist/test-autocomplete.js +0 -85
  512. package/dist/test-tabbed-menu.d.ts +0 -7
  513. package/dist/test-tabbed-menu.js +0 -25
  514. package/dist/tool-selector.d.ts +0 -71
  515. package/dist/tool-selector.js +0 -184
  516. package/dist/ui/agents-overlay-v2.d.ts +0 -43
  517. package/dist/ui/agents-overlay-v2.js +0 -809
  518. package/dist/ui/agents-overlay.d.ts +0 -12
  519. package/dist/ui/agents-overlay.js +0 -863
  520. package/dist/ui/anchors-overlay.d.ts +0 -12
  521. package/dist/ui/anchors-overlay.js +0 -775
  522. package/dist/ui/arch-type-overlay.d.ts +0 -15
  523. package/dist/ui/arch-type-overlay.js +0 -201
  524. package/dist/ui/ask-user-overlay-v2.d.ts +0 -26
  525. package/dist/ui/ask-user-overlay-v2.js +0 -555
  526. package/dist/ui/ask-user-simple-overlay-v2.d.ts +0 -25
  527. package/dist/ui/ask-user-simple-overlay-v2.js +0 -215
  528. package/dist/ui/backlog-overlay.d.ts +0 -32
  529. package/dist/ui/backlog-overlay.js +0 -652
  530. package/dist/ui/commands-overlay-v2.d.ts +0 -33
  531. package/dist/ui/commands-overlay-v2.js +0 -441
  532. package/dist/ui/commands-overlay.d.ts +0 -16
  533. package/dist/ui/commands-overlay.js +0 -439
  534. package/dist/ui/config-overlay.d.ts +0 -35
  535. package/dist/ui/config-overlay.js +0 -707
  536. package/dist/ui/docs-overlay.d.ts +0 -17
  537. package/dist/ui/docs-overlay.js +0 -303
  538. package/dist/ui/footer-v2.d.ts +0 -222
  539. package/dist/ui/footer-v2.js +0 -1349
  540. package/dist/ui/help-overlay-v2.d.ts +0 -34
  541. package/dist/ui/help-overlay-v2.js +0 -309
  542. package/dist/ui/help-overlay.d.ts +0 -16
  543. package/dist/ui/help-overlay.js +0 -316
  544. package/dist/ui/init-overlay-v2.d.ts +0 -34
  545. package/dist/ui/init-overlay-v2.js +0 -600
  546. package/dist/ui/init-overlay.d.ts +0 -34
  547. package/dist/ui/init-overlay.js +0 -604
  548. package/dist/ui/input-prompt-v2.d.ts +0 -180
  549. package/dist/ui/input-prompt-v2.js +0 -999
  550. package/dist/ui/iteration-limit-overlay-v2.d.ts +0 -21
  551. package/dist/ui/iteration-limit-overlay-v2.js +0 -114
  552. package/dist/ui/keys-overlay-v2.d.ts +0 -41
  553. package/dist/ui/keys-overlay-v2.js +0 -248
  554. package/dist/ui/mascot-overlay-v2.d.ts +0 -41
  555. package/dist/ui/mascot-overlay-v2.js +0 -138
  556. package/dist/ui/mascot-overlay.d.ts +0 -21
  557. package/dist/ui/mascot-overlay.js +0 -146
  558. package/dist/ui/model-overlay-v2.d.ts +0 -49
  559. package/dist/ui/model-overlay-v2.js +0 -118
  560. package/dist/ui/model-overlay.d.ts +0 -27
  561. package/dist/ui/model-overlay.js +0 -221
  562. package/dist/ui/model-warning-overlay.d.ts +0 -30
  563. package/dist/ui/model-warning-overlay.js +0 -169
  564. package/dist/ui/new-overlay.d.ts +0 -34
  565. package/dist/ui/new-overlay.js +0 -604
  566. package/dist/ui/overlay/impl/init-overlay-v2.d.ts +0 -77
  567. package/dist/ui/overlay/impl/init-overlay-v2.js +0 -593
  568. package/dist/ui/overlay/overlay-types.d.ts +0 -128
  569. package/dist/ui/overlay/overlay-types.js +0 -22
  570. package/dist/ui/overlays/help-overlay-v2.d.ts +0 -28
  571. package/dist/ui/overlays/help-overlay-v2.js +0 -198
  572. package/dist/ui/overlays/index.d.ts +0 -11
  573. package/dist/ui/overlays/index.js +0 -11
  574. package/dist/ui/permission-overlay-v2.d.ts +0 -36
  575. package/dist/ui/permission-overlay-v2.js +0 -380
  576. package/dist/ui/projects-overlay.d.ts +0 -19
  577. package/dist/ui/projects-overlay.js +0 -484
  578. package/dist/ui/theme-overlay-v2.d.ts +0 -42
  579. package/dist/ui/theme-overlay-v2.js +0 -135
  580. package/dist/ui/theme-overlay.d.ts +0 -24
  581. package/dist/ui/theme-overlay.js +0 -127
  582. package/dist/ui/tools-overlay-v2.d.ts +0 -47
  583. package/dist/ui/tools-overlay-v2.js +0 -218
  584. package/dist/ui/tools-overlay.d.ts +0 -34
  585. package/dist/ui/tools-overlay.js +0 -230
  586. package/dist/ui/tutorial-overlay-v2.d.ts +0 -31
  587. package/dist/ui/tutorial-overlay-v2.js +0 -1035
  588. package/dist/ui/tutorial-overlay.d.ts +0 -11
  589. package/dist/ui/tutorial-overlay.js +0 -1034
  590. package/dist/ui/workflow-overlay.d.ts +0 -22
  591. package/dist/ui/workflow-overlay.js +0 -636
@@ -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;