@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
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Games Command Handler
3
+ *
4
+ * Hidden easter egg - terminal arcade games!
5
+ */
6
+ import { GamesOverlayV2 } from '../../ui/overlay/index.js';
7
+ import { checkDailyBonus } from '../../games/index.js';
8
+ // =============================================================================
9
+ // Games Command
10
+ // =============================================================================
11
+ export const gamesCommand = {
12
+ name: 'games',
13
+ aliases: ['arcade', 'play'],
14
+ description: 'Open the arcade',
15
+ details: 'Hidden easter egg! Play classic arcade games. Earn coins by being productive with the CLI.',
16
+ examples: [
17
+ { code: '/games', description: 'Open the arcade menu' },
18
+ { code: '/arcade', description: 'Alias' },
19
+ ],
20
+ interactions: [
21
+ '↑/↓ to select a game',
22
+ 'Enter to play (costs 1 coin)',
23
+ 'Q to exit',
24
+ ],
25
+ // Note: Easter egg - could add hidden flag to CommandHandlerV2 if needed
26
+ async execute(_args, ctx) {
27
+ // Check for daily bonus (only on first open)
28
+ let gotDailyBonus = checkDailyBonus();
29
+ let keepPlaying = true;
30
+ // Loop: show arcade, play game, return to arcade
31
+ while (keepPlaying) {
32
+ // Show overlay (displays coins, bonus notification, and game selection)
33
+ const overlay = new GamesOverlayV2({ gotDailyBonus });
34
+ const result = await ctx.ui.showOverlay(overlay);
35
+ // Clear daily bonus notification after first display
36
+ gotDailyBonus = false;
37
+ if (result?.action === 'play' && result.game) {
38
+ // Pause the UI completely - game will take over stdin
39
+ ctx.ui.pauseAnimation();
40
+ try {
41
+ // Play the game (runs in alternate screen with its own input handling)
42
+ await result.game.play();
43
+ }
44
+ finally {
45
+ // Resume UI input handling
46
+ ctx.ui.resumeAnimation();
47
+ }
48
+ // After game ends, loop back to show arcade again
49
+ }
50
+ else {
51
+ // User closed arcade (pressed Q or Escape)
52
+ keepPlaying = false;
53
+ }
54
+ }
55
+ return true;
56
+ },
57
+ };
@@ -9,4 +9,17 @@ export * from './settings.js';
9
9
  export * from './context.js';
10
10
  export * from './project.js';
11
11
  export * from './debug.js';
12
+ export * from './session.js';
13
+ export * from './reset.js';
14
+ export * from './team.js';
15
+ export * from './games.js';
16
+ export * from './tasks.js';
17
+ export * from './background.js';
18
+ export * from './filter.js';
19
+ export * from './auth.js';
20
+ export * from './files.js';
21
+ export * from './terminals.js';
22
+ export * from './notifications.js';
23
+ export * from './mcp.js';
24
+ export * from './delegations.js';
12
25
  export declare const allCommands: CommandHandlerV2[];
@@ -8,12 +8,38 @@ import { settingsCommands } from './settings.js';
8
8
  import { contextCommands } from './context.js';
9
9
  import { projectCommands } from './project.js';
10
10
  import { debugCommands } from './debug.js';
11
+ import { sessionCommands } from './session.js';
12
+ import { resetCommands } from './reset.js';
13
+ import { teamCommands } from './team.js';
14
+ import { gamesCommand } from './games.js';
15
+ import { tasksCommand } from './tasks.js';
16
+ import { backgroundCommands } from './background.js';
17
+ import { filterCommands } from './filter.js';
18
+ import { authCommands } from './auth.js';
19
+ import { filesCommands } from './files.js';
20
+ import { terminalsCommands } from './terminals.js';
21
+ import { notificationsCommands } from './notifications.js';
22
+ import { mcpCommands } from './mcp.js';
23
+ import { delegationsCommands } from './delegations.js';
11
24
  // Re-export individual modules
12
25
  export * from './core.js';
13
26
  export * from './settings.js';
14
27
  export * from './context.js';
15
28
  export * from './project.js';
16
29
  export * from './debug.js';
30
+ export * from './session.js';
31
+ export * from './reset.js';
32
+ export * from './team.js';
33
+ export * from './games.js';
34
+ export * from './tasks.js';
35
+ export * from './background.js';
36
+ export * from './filter.js';
37
+ export * from './auth.js';
38
+ export * from './files.js';
39
+ export * from './terminals.js';
40
+ export * from './notifications.js';
41
+ export * from './mcp.js';
42
+ export * from './delegations.js';
17
43
  // All commands combined
18
44
  export const allCommands = [
19
45
  ...coreCommands,
@@ -21,4 +47,17 @@ export const allCommands = [
21
47
  ...contextCommands,
22
48
  ...projectCommands,
23
49
  ...debugCommands,
50
+ ...sessionCommands,
51
+ ...resetCommands,
52
+ ...teamCommands,
53
+ gamesCommand,
54
+ tasksCommand,
55
+ ...backgroundCommands,
56
+ ...filterCommands,
57
+ ...authCommands,
58
+ ...filesCommands,
59
+ ...terminalsCommands,
60
+ ...notificationsCommands,
61
+ ...mcpCommands,
62
+ ...delegationsCommands,
24
63
  ];
@@ -0,0 +1,8 @@
1
+ /**
2
+ * MCP Command for REPL V2
3
+ *
4
+ * Shows the MCP servers overlay for viewing connected servers,
5
+ * their tools, and managing connections.
6
+ */
7
+ import type { CommandHandlerV2 } from '../types.js';
8
+ export declare const mcpCommands: CommandHandlerV2[];
@@ -0,0 +1,39 @@
1
+ /**
2
+ * MCP Command for REPL V2
3
+ *
4
+ * Shows the MCP servers overlay for viewing connected servers,
5
+ * their tools, and managing connections.
6
+ */
7
+ import { MCPOverlayV2 } from '../../ui/overlay/impl/mcp-overlay-v2.js';
8
+ import { getMCPManager, ensureMCPManager } from '../../index.js';
9
+ import { getMCPConfigPath } from '../../settings/mcp-config.js';
10
+ import { getActiveProject } from '../../tools/project-db.js';
11
+ // =============================================================================
12
+ // /mcp Command
13
+ // =============================================================================
14
+ const mcpCommand = {
15
+ name: 'mcp',
16
+ description: 'View MCP servers and tools',
17
+ details: 'Opens the MCP (Model Context Protocol) servers overlay. ' +
18
+ 'View connected servers, their discovered tools, and manage connections. ' +
19
+ `Configure servers in ${getMCPConfigPath()}.`,
20
+ examples: [
21
+ { code: '/mcp', description: 'Show MCP servers dashboard' },
22
+ ],
23
+ interactions: [
24
+ 'Enter to view server details and tools',
25
+ 'a to add a new server',
26
+ 'r to restart a server',
27
+ 'd to disconnect a server',
28
+ '/ to search',
29
+ 'Esc to close',
30
+ ],
31
+ async execute(_args, ctx) {
32
+ const manager = getMCPManager();
33
+ const project = getActiveProject();
34
+ const overlay = new MCPOverlayV2(manager, ctx.agent ?? null, ensureMCPManager, project?.path);
35
+ await ctx.ui.showOverlay(overlay);
36
+ return true;
37
+ },
38
+ };
39
+ export const mcpCommands = [mcpCommand];
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Notifications Command Handler
3
+ *
4
+ * Shows cross-session notifications from other terminals.
5
+ * Opens an interactive overlay when unread notifications exist.
6
+ */
7
+ import type { CommandHandlerV2 } from '../types.js';
8
+ export declare const notificationsCommand: CommandHandlerV2;
9
+ export declare const notificationsCommands: CommandHandlerV2[];
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Notifications Command Handler
3
+ *
4
+ * Shows cross-session notifications from other terminals.
5
+ * Opens an interactive overlay when unread notifications exist.
6
+ */
7
+ import { getNotificationManager } from '../../multi-agent/notification-manager.js';
8
+ import { NotificationsOverlayV2 } from '../../ui/overlay/impl/notifications-overlay-v2.js';
9
+ export const notificationsCommand = {
10
+ name: 'notifications',
11
+ aliases: ['notif'],
12
+ description: 'Show cross-session notifications',
13
+ details: 'Lists unread notifications from other terminal sessions (e.g. background agent completions, pending approval requests).',
14
+ examples: [
15
+ { code: '/notifications', description: 'View unread notifications' },
16
+ { code: '/notif', description: 'Alias for /notifications' },
17
+ ],
18
+ async execute(_args, ctx) {
19
+ const manager = getNotificationManager();
20
+ if (!manager) {
21
+ ctx.ui.print({ type: 'info', message: 'Notification manager not available.' });
22
+ return true;
23
+ }
24
+ const count = manager.getUnreadCount();
25
+ if (count === 0) {
26
+ ctx.ui.print({ type: 'info', message: 'No unread notifications.' });
27
+ return true;
28
+ }
29
+ const overlay = new NotificationsOverlayV2();
30
+ await ctx.ui.showOverlay(overlay);
31
+ return true;
32
+ },
33
+ };
34
+ export const notificationsCommands = [notificationsCommand];
@@ -4,11 +4,12 @@
4
4
  * Commands for project management: init, backlog, workflow, anchors, design, sketch, refine
5
5
  */
6
6
  import { executeCommand } from '../registry.js';
7
- import { BacklogOverlayV2, WorkflowOverlayV2, DocsOverlayV2, DocumentDetailOverlayV2, AnchorsOverlayV2, ProjectsOverlayV2, NewProjectOverlayV2, InitSetupOverlayV2, ArchTypeOverlayV2, ModelWarningOverlayV2 } from '../../ui/overlay/index.js';
7
+ import { BacklogOverlayV2, WorkflowOverlayV2, DocsOverlayV2, DocumentDetailOverlayV2, AnchorsOverlayV2, ProjectsOverlayV2, NewProjectOverlayV2, OnboardingWizardOverlayV2, KeysOverlayV2, ArchTypeOverlayV2, ModelWarningOverlayV2 } from '../../ui/overlay/index.js';
8
8
  import { projectRepository, workItemRepository } from '../../db/repositories/index.js';
9
9
  import { setCurrentProject, getCurrentProject } from '../../tools/project-db.js';
10
10
  import { getSkillPrompt } from '../../repl-helpers.js';
11
11
  import { getModelTier, modelMeetsTier } from '../../utils/model-tiers.js';
12
+ import { getCurrentProjectIdForTracking, handleProjectSwitch } from './session.js';
12
13
  // =============================================================================
13
14
  // Helper Functions
14
15
  // =============================================================================
@@ -26,33 +27,80 @@ function syncFooterWithCurrentProject(ctx) {
26
27
  export const newCommand = {
27
28
  name: 'new',
28
29
  description: 'Create a new project',
30
+ details: 'Interactive wizard to scaffold a new project. Asks about project name, type, tech stack, and documentation preferences. Creates project structure with COMPILR.md, backlog, and optional separate docs repo.',
31
+ examples: [{ code: '/new' }],
32
+ interactions: [
33
+ '8-step wizard (0-7)',
34
+ '↑/↓ for selection steps, type for input steps',
35
+ 'Enter to confirm, Esc to go back',
36
+ ],
29
37
  async execute(_args, ctx) {
38
+ // Track project ID before overlay (for session/team switch handling)
39
+ const oldProjectId = getCurrentProjectIdForTracking();
30
40
  const newProjectOverlay = new NewProjectOverlayV2();
31
41
  const result = await ctx.ui.showOverlay(newProjectOverlay);
32
42
  // User cancelled
33
43
  if (!result?.created) {
34
44
  return true;
35
45
  }
36
- // Project was created - show success messages
37
- ctx.ui.print({ type: 'success', message: `Project created: ${result.projectPath ?? ''}` });
38
- if (result.docsPath) {
39
- ctx.ui.print({ type: 'success', message: `Docs repo created: ${result.docsPath}` });
46
+ // Check if this was an import or new project
47
+ const isImport = result.imported === true;
48
+ // Show success message
49
+ if (isImport) {
50
+ ctx.ui.print({ type: 'success', message: `Project imported: ${result.projectPath ?? ''}` });
51
+ }
52
+ else {
53
+ ctx.ui.print({ type: 'success', message: `Project created: ${result.projectPath ?? ''}` });
54
+ if (result.docsPath) {
55
+ ctx.ui.print({ type: 'success', message: `Docs repo created: ${result.docsPath}` });
56
+ }
40
57
  }
41
58
  // Register project in database if tracking is enabled
42
59
  if (result.trackInDatabase && result.projectName && result.projectPath) {
43
60
  try {
61
+ // Determine display name - for imports, use detected name; for new projects, prettify
62
+ const displayName = result.detectedProject?.displayName
63
+ ?? result.projectName.replace(/-/g, ' ').replace(/\b\w/g, (c) => c.toUpperCase());
44
64
  const project = projectRepository.create({
45
65
  name: result.projectName,
46
- display_name: result.projectName.replace(/-/g, ' ').replace(/\b\w/g, (c) => c.toUpperCase()),
66
+ display_name: displayName,
47
67
  description: result.description,
48
68
  path: result.projectPath,
49
69
  type: 'general',
50
70
  workflow_mode: result.workflowMode ?? 'flexible',
71
+ git_remote: result.gitRemote,
72
+ // For imports, include detected language and framework
73
+ language: result.detectedProject?.language ?? undefined,
74
+ framework: result.detectedProject?.framework ?? undefined,
75
+ package_manager: result.detectedProject?.packageManager ?? undefined,
51
76
  });
77
+ // For imports, set lifecycle to 'active' immediately
78
+ if (isImport) {
79
+ projectRepository.update(project.id, { lifecycle_state: 'active' });
80
+ }
52
81
  setCurrentProject({ id: project.id, name: project.name, displayName: project.displayName, path: project.path });
53
82
  ctx.ui.setProjectName(project.displayName);
54
83
  ctx.ui.print({ type: 'success', message: `Project tracked in database (${result.workflowMode ?? 'flexible'} mode)` });
55
84
  ctx.ui.print({ type: 'success', message: `"${project.displayName}" is now the current project` });
85
+ // Handle project switch - saves old session/team and creates fresh team for new project
86
+ const switchResult = await handleProjectSwitch(oldProjectId, ctx.agent ?? null, ctx.team && ctx.agentFactory ? {
87
+ team: ctx.team,
88
+ agentFactory: ctx.agentFactory,
89
+ } : undefined);
90
+ if (switchResult?.switched) {
91
+ // Update the team if a new one was created
92
+ if (switchResult.newTeam && ctx.setTeam) {
93
+ ctx.setTeam(switchResult.newTeam);
94
+ // Update footer with new active agent
95
+ const active = switchResult.newTeam.getActive();
96
+ ctx.ui.setActiveTeamAgent({
97
+ id: active.id,
98
+ displayName: active.displayName,
99
+ mascot: active.mascot,
100
+ });
101
+ }
102
+ ctx.ui.print({ type: 'info', message: 'Fresh team and session started for project.' });
103
+ }
56
104
  }
57
105
  catch (dbError) {
58
106
  ctx.ui.print({ type: 'warning', message: `Could not register in database: ${dbError.message}` });
@@ -60,17 +108,29 @@ export const newCommand = {
60
108
  }
61
109
  // Show next steps
62
110
  ctx.ui.print({ type: 'info', message: '' });
63
- ctx.ui.print({ type: 'info', message: 'Next steps:' });
64
- ctx.ui.print({ type: 'info', message: ` cd ${result.projectPath?.split('/').pop() ?? 'project'}` });
65
- ctx.ui.print({ type: 'info', message: ' npm install' });
66
- ctx.ui.print({ type: 'info', message: ' npm run dev' });
111
+ if (isImport) {
112
+ // Import-specific next steps
113
+ ctx.ui.print({ type: 'info', message: 'Next steps:' });
114
+ ctx.ui.print({ type: 'info', message: ' Review the generated COMPILR.md' });
115
+ ctx.ui.print({ type: 'info', message: ' Add existing work items with /backlog' });
116
+ ctx.ui.print({ type: 'info', message: ' Or ask the agent to explore the codebase' });
117
+ }
118
+ else {
119
+ // New project next steps
120
+ ctx.ui.print({ type: 'info', message: 'Next steps:' });
121
+ ctx.ui.print({ type: 'info', message: ` cd ${result.projectPath?.split('/').pop() ?? 'project'}` });
122
+ ctx.ui.print({ type: 'info', message: ' npm install' });
123
+ ctx.ui.print({ type: 'info', message: ' npm run dev' });
124
+ }
67
125
  ctx.ui.print({ type: 'info', message: '' });
68
126
  // Hint for agent interaction
69
127
  const compilrMdPath = result.docsPath
70
128
  ? `${result.docsPath}/COMPILR.md`
71
129
  : `${result.projectPath ?? '.'}/COMPILR.md`;
72
130
  ctx.ui.print({ type: 'info', message: `Tip: Ask the agent to read ${compilrMdPath} to get started!` });
73
- ctx.ui.print({ type: 'info', message: 'When ready to define requirements, type /design' });
131
+ if (!isImport) {
132
+ ctx.ui.print({ type: 'info', message: 'When ready to define requirements, type /design' });
133
+ }
74
134
  return true;
75
135
  },
76
136
  };
@@ -79,10 +139,30 @@ export const newCommand = {
79
139
  // =============================================================================
80
140
  export const initCommand = {
81
141
  name: 'init',
82
- description: 'View CLI setup status',
142
+ description: 'Run the CLI setup wizard',
143
+ details: 'Opens the onboarding wizard to configure API keys, git settings, and CLI preferences. Re-runnable anytime to update settings.',
144
+ examples: [{ code: '/init' }],
145
+ interactions: [
146
+ '↑/↓ to navigate wizard steps',
147
+ 'Enter to confirm, Esc to go back',
148
+ 'Type to enter values in input steps',
149
+ ],
83
150
  async execute(_args, ctx) {
84
- const initSetupOverlay = new InitSetupOverlayV2();
85
- await ctx.ui.showOverlay(initSetupOverlay);
151
+ // Show onboarding wizard (same as first-run experience)
152
+ // Loop if user chooses to configure keys
153
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
154
+ while (true) {
155
+ const wizard = new OnboardingWizardOverlayV2();
156
+ const result = await ctx.ui.showOverlay(wizard);
157
+ if (result?.openKeys) {
158
+ // User chose to configure keys - show keys overlay then loop back
159
+ const keysOverlay = new KeysOverlayV2();
160
+ await ctx.ui.showOverlay(keysOverlay);
161
+ continue;
162
+ }
163
+ // Done (completed or cancelled)
164
+ break;
165
+ }
86
166
  return true;
87
167
  },
88
168
  };
@@ -92,8 +172,19 @@ export const initCommand = {
92
172
  export const backlogCommand = {
93
173
  name: 'backlog',
94
174
  description: 'View and manage project backlog',
175
+ details: 'Opens an interactive overlay to browse, filter, and manage backlog items. You can add new items, change status/priority, search, and view details.',
176
+ examples: [{ code: '/backlog' }],
177
+ interactions: [
178
+ 'Tab cycles: All → Feature → Bug → Tech-Debt → Chore → Active',
179
+ '↑/↓ to navigate, ←/→ for pages',
180
+ 'Enter for details, Space to toggle status',
181
+ '/ to search, n for new item',
182
+ 'Esc to close',
183
+ ],
95
184
  async execute(_args, ctx) {
96
- const backlogOverlay = new BacklogOverlayV2();
185
+ // Get team agent IDs for owner selection in detail screen
186
+ const teamAgentIds = ctx.team?.getAgentIds() ?? [];
187
+ const backlogOverlay = new BacklogOverlayV2(undefined, teamAgentIds);
97
188
  const result = await ctx.ui.showOverlay(backlogOverlay);
98
189
  if (result?.modified) {
99
190
  ctx.ui.print({ type: 'success', message: 'Backlog updated.' });
@@ -107,9 +198,42 @@ export const backlogCommand = {
107
198
  export const workflowCommand = {
108
199
  name: 'workflow',
109
200
  description: 'View project workflow dashboard',
201
+ details: 'Displays the current project workflow status, progress through phases (init → design → backlog → scaffold → build), and recommended next actions. Helps you understand where you are in the development process.',
202
+ examples: [{ code: '/workflow' }],
203
+ interactions: [
204
+ '↑/↓ to navigate actions',
205
+ 'Enter to run selected action',
206
+ 'Esc to close',
207
+ ],
110
208
  async execute(_args, ctx) {
209
+ // Track project ID before overlay (for session switch handling)
210
+ const oldProjectId = getCurrentProjectIdForTracking();
111
211
  const workflowOverlay = new WorkflowOverlayV2();
112
212
  const result = await ctx.ui.showOverlay(workflowOverlay);
213
+ // Handle project switch if it occurred (includes team switching)
214
+ const switchResult = await handleProjectSwitch(oldProjectId, ctx.agent ?? null, ctx.team && ctx.agentFactory ? {
215
+ team: ctx.team,
216
+ agentFactory: ctx.agentFactory,
217
+ } : undefined);
218
+ if (switchResult?.switched) {
219
+ // Update the team if a new one was created/loaded
220
+ if (switchResult.newTeam && ctx.setTeam) {
221
+ ctx.setTeam(switchResult.newTeam);
222
+ // Update footer with new active agent
223
+ const active = switchResult.newTeam.getActive();
224
+ ctx.ui.setActiveTeamAgent({
225
+ id: active.id,
226
+ displayName: active.displayName,
227
+ mascot: active.mascot,
228
+ });
229
+ }
230
+ if (switchResult.sessionRestored) {
231
+ ctx.ui.print({ type: 'info', message: `Session restored (${String(switchResult.messageCount)} messages).` });
232
+ }
233
+ else {
234
+ ctx.ui.print({ type: 'info', message: 'Started fresh session for this project.' });
235
+ }
236
+ }
113
237
  // Handle workflow result - execute command if returned
114
238
  if (result?.command) {
115
239
  // Strip leading slash and execute the command
@@ -127,6 +251,16 @@ export const workflowCommand = {
127
251
  export const anchorsCommand = {
128
252
  name: 'anchors',
129
253
  description: 'View and manage anchors (persistent context)',
254
+ details: 'Anchors are critical pieces of information that survive context compaction. They are always included at the top of the context window. Manage both global anchors and project-specific anchors.',
255
+ examples: [{ code: '/anchors' }],
256
+ interactions: [
257
+ '↑/↓ to navigate anchors',
258
+ '[a] Add new anchor',
259
+ '[e] or Enter to edit',
260
+ '[d] to delete',
261
+ '[r] to refresh',
262
+ 'Esc to close',
263
+ ],
130
264
  async execute(_args, ctx) {
131
265
  const anchorsOverlay = new AnchorsOverlayV2();
132
266
  const result = await ctx.ui.showOverlay(anchorsOverlay);
@@ -142,6 +276,8 @@ export const anchorsCommand = {
142
276
  export const designCommand = {
143
277
  name: 'design',
144
278
  description: 'Agent-driven requirements gathering',
279
+ details: 'Comprehensive requirements gathering workflow. The agent guides you through vision, features, and technical context phases, then creates a PRD and populates the backlog with 5-15 items. Best used after /new.',
280
+ examples: [{ code: '/design' }],
145
281
  async execute(_args, ctx) {
146
282
  // Check if a project is set
147
283
  const currentProject = getCurrentProject();
@@ -217,6 +353,8 @@ Please start by using todo_write to track the design phases, then begin with Pha
217
353
  export const sketchCommand = {
218
354
  name: 'sketch',
219
355
  description: 'Quick 6-question project outline',
356
+ details: 'Lightweight alternative to /design. Asks 6 quick questions and creates 3-8 backlog items. Good for small projects or when you want to get started quickly.',
357
+ examples: [{ code: '/sketch' }],
220
358
  execute(_args, ctx) {
221
359
  // Check if a project is set
222
360
  const currentProject = getCurrentProject();
@@ -263,6 +401,11 @@ Please start by asking me about the type of application I'm building using the a
263
401
  export const refineCommand = {
264
402
  name: 'refine',
265
403
  description: 'Iterative refinement of requirements',
404
+ details: 'Iteratively refine backlog items. Can focus on a specific item or let the agent suggest what to refine. Useful for breaking down large items or adding acceptance criteria.',
405
+ examples: [
406
+ { code: '/refine', description: 'Agent picks item to refine' },
407
+ { code: '/refine REQ-003', description: 'Refine specific item' },
408
+ ],
266
409
  async execute(args, ctx) {
267
410
  // Check if a project is set
268
411
  const currentProject = getCurrentProject();
@@ -353,7 +496,13 @@ ${agentInstructions}`;
353
496
  // =============================================================================
354
497
  export const buildCommand = {
355
498
  name: 'build',
356
- description: 'Build a backlog item',
499
+ description: 'Implement a backlog item',
500
+ details: 'Picks the highest priority backlog item (or a specific one) and guides the agent through implementing it. Includes planning, coding, testing, and committing. Auto-detects if project scaffold is needed first.',
501
+ examples: [
502
+ { code: '/build', description: 'Pick highest priority item' },
503
+ { code: '/build REQ-003', description: 'Build specific item' },
504
+ { code: '/build scaffold', description: 'Create project structure first' },
505
+ ],
357
506
  async execute(args, ctx) {
358
507
  const argTrimmed = args.trim();
359
508
  // Handle `/build scaffold` - redirect to scaffold command
@@ -499,7 +648,12 @@ Please start by:
499
648
  // =============================================================================
500
649
  export const noteCommand = {
501
650
  name: 'note',
502
- description: 'Create a session note',
651
+ description: 'Create a session note capturing work done',
652
+ details: 'Creates a structured markdown note summarizing the current session including changes made, decisions, blockers, and next steps. Optionally provide a title.',
653
+ examples: [
654
+ { code: '/note', description: 'Auto-generated title' },
655
+ { code: '/note "Fixed auth bug"', description: 'Custom title' },
656
+ ],
503
657
  execute(args, ctx) {
504
658
  // Check if a project is set
505
659
  const currentProject = getCurrentProject();
@@ -551,7 +705,13 @@ Review the conversation context to understand what was accomplished, then create
551
705
  // =============================================================================
552
706
  export const prdCommand = {
553
707
  name: 'prd',
554
- description: 'Update the Product Requirements Document',
708
+ description: 'Amend or enhance the Product Requirements Document',
709
+ details: 'Update or refine the PRD created during /design. The agent reads the existing PRD and guides you through updating specific sections.',
710
+ examples: [
711
+ { code: '/prd', description: 'Interactive section selection' },
712
+ { code: '/prd vision', description: 'Update vision section' },
713
+ { code: '/prd scope', description: 'Update scope section' },
714
+ ],
555
715
  execute(args, ctx) {
556
716
  // Check if a project is set
557
717
  const currentProject = getCurrentProject();
@@ -585,7 +745,7 @@ ${prdPrompt}
585
745
 
586
746
  ${sectionInstruction}
587
747
 
588
- Start by reading the existing PRD.md file to understand current state.`;
748
+ Start by reading the existing PRD from the database using project_document_get({ doc_type: "prd" }). If no document exists yet, create a new one.`;
589
749
  // Queue message for agent
590
750
  ctx.queueAgentMessage({
591
751
  message: fullMessage,
@@ -601,7 +761,9 @@ Start by reading the existing PRD.md file to understand current state.`;
601
761
  // =============================================================================
602
762
  export const scaffoldCommand = {
603
763
  name: 'scaffold',
604
- description: 'Create project scaffold/foundation',
764
+ description: 'Create project foundation/structure',
765
+ details: 'Creates the base project structure (folders, config files, dependencies) based on tech stack from COMPILR.md. Use this before implementing features if starting from scratch. Alias for /build scaffold.',
766
+ examples: [{ code: '/scaffold' }],
605
767
  async execute(_args, ctx) {
606
768
  // Check if a project is set
607
769
  const currentProject = getCurrentProject();
@@ -692,7 +854,18 @@ Please start by reading the project documents from the database using project_do
692
854
  // =============================================================================
693
855
  export const archCommand = {
694
856
  name: 'arch',
695
- description: 'Create architecture documentation',
857
+ description: 'Create architecture documentation (ADRs, diagrams, etc.)',
858
+ details: 'Guides you through creating architecture documentation. Choose from ADRs (Architecture Decision Records), system diagrams, data models, or API designs. The agent asks questions and generates properly formatted documentation.',
859
+ examples: [
860
+ { code: '/arch', description: 'Interactive type selection' },
861
+ { code: '/arch decision', description: 'Create ADR directly' },
862
+ { code: '/arch diagram', description: 'Create system diagram' },
863
+ ],
864
+ interactions: [
865
+ '↑/↓ or 1-5 to select type',
866
+ 'Enter to confirm',
867
+ 'Esc to cancel',
868
+ ],
696
869
  async execute(_args, ctx) {
697
870
  // Check if a project is set (use database, not filesystem)
698
871
  const currentProject = getCurrentProject();
@@ -755,7 +928,17 @@ Please start by using project_document_list to find any existing PRD, and workit
755
928
  // =============================================================================
756
929
  export const docsCommand = {
757
930
  name: 'docs',
758
- description: 'View project documents (PRD, architecture, design, notes)',
931
+ description: 'View project documents (PRD, architecture, etc.)',
932
+ details: 'Opens an overlay to browse and read documents stored in the database for the active project. Documents are created by /design, /arch, and other workflow commands.',
933
+ examples: [
934
+ { code: '/docs', description: 'List all documents' },
935
+ ],
936
+ interactions: [
937
+ '↑/↓ or j/k to navigate',
938
+ 'Enter to view document',
939
+ '↑/↓ to scroll content',
940
+ 'Esc to go back or close',
941
+ ],
759
942
  async execute(_args, ctx) {
760
943
  // Loop: show list → detail → back to list (until user cancels list or Ctrl+C from detail)
761
944
  let showList = true;
@@ -783,10 +966,48 @@ export const docsCommand = {
783
966
  // =============================================================================
784
967
  export const projectsCommand = {
785
968
  name: 'projects',
786
- description: 'View and manage all projects',
969
+ description: 'View and manage projects',
970
+ details: 'Opens an interactive overlay to browse, filter, and manage projects tracked in the database. You can view details, open projects, archive, restore, or delete them.',
971
+ examples: [{ code: '/projects' }],
972
+ interactions: [
973
+ 'Tab cycles: All → Active → Paused → Completed → Archived',
974
+ '↑/↓ or j/k to navigate',
975
+ 'Enter to view details and actions',
976
+ 'x to archive/restore project',
977
+ 'd to delete project',
978
+ 'a to show/hide archived',
979
+ 'Esc to close',
980
+ ],
787
981
  async execute(_args, ctx) {
982
+ // Track project ID before overlay (for session switch handling)
983
+ const oldProjectId = getCurrentProjectIdForTracking();
788
984
  const projectsOverlay = new ProjectsOverlayV2();
789
985
  await ctx.ui.showOverlay(projectsOverlay);
986
+ // Handle project switch if it occurred (includes team switching)
987
+ const switchResult = await handleProjectSwitch(oldProjectId, ctx.agent ?? null, ctx.team && ctx.agentFactory ? {
988
+ team: ctx.team,
989
+ agentFactory: ctx.agentFactory,
990
+ } : undefined);
991
+ if (switchResult?.switched) {
992
+ const current = getCurrentProject();
993
+ // Update the team if a new one was created/loaded
994
+ if (switchResult.newTeam && ctx.setTeam) {
995
+ ctx.setTeam(switchResult.newTeam);
996
+ // Update footer with new active agent
997
+ const active = switchResult.newTeam.getActive();
998
+ ctx.ui.setActiveTeamAgent({
999
+ id: active.id,
1000
+ displayName: active.displayName,
1001
+ mascot: active.mascot,
1002
+ });
1003
+ }
1004
+ if (switchResult.sessionRestored) {
1005
+ ctx.ui.print({ type: 'success', message: `Switched to "${current?.displayName ?? 'project'}" - session restored (${String(switchResult.messageCount)} messages).` });
1006
+ }
1007
+ else {
1008
+ ctx.ui.print({ type: 'success', message: `Switched to "${current?.displayName ?? 'project'}" - fresh session.` });
1009
+ }
1010
+ }
790
1011
  // Sync footer with current project (may have changed during overlay)
791
1012
  syncFooterWithCurrentProject(ctx);
792
1013
  return true;