@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
@@ -1,604 +0,0 @@
1
- /**
2
- * New Project Overlay
3
- *
4
- * Modal overlay for the /new wizard - creates new projects with structured workflow.
5
- * Uses InlineOverlay base class for consistent lifecycle management.
6
- *
7
- * Steps:
8
- * 0. Project type (new vs existing)
9
- * 1. Project name
10
- * 2. Description
11
- * 3. Repo pattern (single vs two-repo)
12
- * 4. Tech stack
13
- * 5. Coding standards
14
- * 6. Initialize git?
15
- * 7. Track with project database?
16
- * 8. Workflow mode (if tracking enabled)
17
- * 9. Confirmation
18
- */
19
- import chalk from 'chalk';
20
- import * as terminal from './terminal.js';
21
- import { getStyles } from '../themes/index.js';
22
- import { InlineOverlay } from './base/inline-overlay.js';
23
- import { TECH_STACK_LABELS, CODING_STANDARDS_LABELS, REPO_PATTERN_LABELS, generateProject, isValidProjectName, projectExists, } from '../templates/index.js';
24
- import { getProjectsPath, ensureProjectsDirectory } from '../settings/paths.js';
25
- // =============================================================================
26
- // Constants
27
- // =============================================================================
28
- const TECH_STACK_OPTIONS = ['react-node-pg', 'react-python-pg', 'vue-node-pg', 'custom'];
29
- const CODING_STANDARDS_OPTIONS = ['strict', 'relaxed', 'custom'];
30
- const REPO_PATTERN_OPTIONS = ['single', 'two-repo'];
31
- const WORKFLOW_MODE_OPTIONS = ['flexible', 'guided'];
32
- const WORKFLOW_MODE_LABELS = {
33
- flexible: 'Flexible (user-driven, exploratory)',
34
- guided: 'Guided (structured step-by-step workflow)',
35
- };
36
- // =============================================================================
37
- // Rendering Helpers
38
- // =============================================================================
39
- function renderHeader(step) {
40
- const s = getStyles();
41
- const lines = [];
42
- const cols = terminal.getTerminalWidth();
43
- lines.push(s.muted('─'.repeat(Math.max(1, cols - 1))));
44
- lines.push(' ' + s.primaryBold('Initialize New Project') + s.muted(` [${String(step)}/9]`));
45
- lines.push('');
46
- return lines;
47
- }
48
- function renderFooter(step) {
49
- const s = getStyles();
50
- const lines = [];
51
- lines.push('');
52
- if (step === 0) {
53
- lines.push(s.muted(' ↑↓/jk Navigate · Enter Select · q/Esc Cancel'));
54
- }
55
- else if (step === 9) {
56
- lines.push(s.muted(' ↑↓/jk Navigate · Enter Confirm · Esc Back'));
57
- }
58
- else if (isSelectionStep(step)) {
59
- lines.push(s.muted(' ↑↓/jk Navigate · Enter Select · Esc Back'));
60
- }
61
- else {
62
- lines.push(s.muted(' Enter Confirm · Esc Back'));
63
- }
64
- return lines;
65
- }
66
- function renderSelectionOption(index, selectedIndex, label, disabled = false) {
67
- const s = getStyles();
68
- const isSelected = index === selectedIndex;
69
- const prefix = isSelected ? ' ❯ ' : ' ';
70
- if (disabled) {
71
- return s.muted(prefix + label + ' (coming soon)');
72
- }
73
- return isSelected ? s.primary(prefix + label) : s.muted(prefix + label);
74
- }
75
- // =============================================================================
76
- // Step Renderers
77
- // =============================================================================
78
- function renderStep0(state) {
79
- const s = getStyles();
80
- const lines = [];
81
- lines.push(chalk.bold(' What would you like to do?'));
82
- lines.push('');
83
- lines.push(renderSelectionOption(0, state.selectedIndex, '1. Start a new project'));
84
- lines.push(renderSelectionOption(1, state.selectedIndex, '2. Add workflow to existing project', true));
85
- lines.push('');
86
- lines.push(s.muted(' Start fresh with a structured project layout'));
87
- lines.push(s.muted(' optimized for AI-assisted development.'));
88
- return lines;
89
- }
90
- function renderStep1(state) {
91
- const s = getStyles();
92
- const lines = [];
93
- lines.push(chalk.bold(' Project name'));
94
- lines.push('');
95
- lines.push(` > ${state.inputBuffer}█`);
96
- lines.push('');
97
- if (state.error) {
98
- lines.push(s.error(` ${state.error}`));
99
- }
100
- else {
101
- lines.push(s.muted(' Use lowercase letters, numbers, hyphens (e.g., my-saas-app)'));
102
- lines.push(s.muted(' 2-50 characters, must start with a letter'));
103
- }
104
- return lines;
105
- }
106
- function renderStep2(state) {
107
- const s = getStyles();
108
- const lines = [];
109
- lines.push(chalk.bold(' What are you building?'));
110
- lines.push('');
111
- lines.push(` > ${state.inputBuffer}█`);
112
- lines.push('');
113
- if (state.error) {
114
- lines.push(s.error(` ${state.error}`));
115
- }
116
- else {
117
- lines.push(s.muted(' Brief description (1-2 sentences)'));
118
- lines.push(s.muted(' Example: "A task management SaaS for small teams"'));
119
- }
120
- return lines;
121
- }
122
- function renderStep3(state) {
123
- const s = getStyles();
124
- const lines = [];
125
- lines.push(chalk.bold(' Documentation structure'));
126
- lines.push('');
127
- for (let i = 0; i < REPO_PATTERN_OPTIONS.length; i++) {
128
- const pattern = REPO_PATTERN_OPTIONS[i];
129
- lines.push(renderSelectionOption(i, state.selectedIndex, `${String(i + 1)}. ${REPO_PATTERN_LABELS[pattern]}`));
130
- }
131
- lines.push('');
132
- lines.push(s.muted(' Single repo: All files in one repository'));
133
- lines.push(s.muted(' Two repos: Code and docs in separate repositories'));
134
- return lines;
135
- }
136
- function renderStep4(state) {
137
- const s = getStyles();
138
- const lines = [];
139
- lines.push(chalk.bold(' Tech stack'));
140
- lines.push('');
141
- for (let i = 0; i < TECH_STACK_OPTIONS.length; i++) {
142
- const stack = TECH_STACK_OPTIONS[i];
143
- lines.push(renderSelectionOption(i, state.selectedIndex, `${String(i + 1)}. ${TECH_STACK_LABELS[stack]}`));
144
- }
145
- lines.push('');
146
- lines.push(s.muted(' Choose a preset or configure later'));
147
- return lines;
148
- }
149
- function renderStep5(state) {
150
- const s = getStyles();
151
- const lines = [];
152
- lines.push(chalk.bold(' Coding standards preset'));
153
- lines.push('');
154
- for (let i = 0; i < CODING_STANDARDS_OPTIONS.length; i++) {
155
- const standard = CODING_STANDARDS_OPTIONS[i];
156
- lines.push(renderSelectionOption(i, state.selectedIndex, `${String(i + 1)}. ${CODING_STANDARDS_LABELS[standard]}`));
157
- }
158
- lines.push('');
159
- lines.push(s.muted(' Strict: Full TypeScript with strict mode + ESLint'));
160
- lines.push(s.muted(' Relaxed: TypeScript with basic strict mode'));
161
- lines.push(s.muted(' Custom: Configure your own standards later'));
162
- return lines;
163
- }
164
- function renderStep6(state) {
165
- const s = getStyles();
166
- const lines = [];
167
- lines.push(chalk.bold(' Initialize git repository?'));
168
- lines.push('');
169
- lines.push(renderSelectionOption(0, state.selectedIndex, 'Yes'));
170
- lines.push(renderSelectionOption(1, state.selectedIndex, 'No'));
171
- lines.push('');
172
- lines.push(s.muted(' Creates git repo with initial commit'));
173
- return lines;
174
- }
175
- function renderStep7(state) {
176
- const s = getStyles();
177
- const lines = [];
178
- lines.push(chalk.bold(' Track with project database?'));
179
- lines.push('');
180
- lines.push(renderSelectionOption(0, state.selectedIndex, 'Yes (recommended)'));
181
- lines.push(renderSelectionOption(1, state.selectedIndex, 'No'));
182
- lines.push('');
183
- lines.push(s.muted(' Enables persistent project tracking, backlog management,'));
184
- lines.push(s.muted(' and workflow features across sessions.'));
185
- return lines;
186
- }
187
- function renderStep8(state) {
188
- const s = getStyles();
189
- const lines = [];
190
- lines.push(chalk.bold(' Workflow mode'));
191
- lines.push('');
192
- for (let i = 0; i < WORKFLOW_MODE_OPTIONS.length; i++) {
193
- const mode = WORKFLOW_MODE_OPTIONS[i];
194
- const suffix = i === 0 ? ' (recommended)' : '';
195
- lines.push(renderSelectionOption(i, state.selectedIndex, `${String(i + 1)}. ${WORKFLOW_MODE_LABELS[mode]}${suffix}`));
196
- }
197
- lines.push('');
198
- lines.push(s.muted(' Flexible: Work at your own pace, agent responds to requests'));
199
- lines.push(s.muted(' Guided: Agent suggests next steps, tracks work item progress'));
200
- return lines;
201
- }
202
- function renderStep9(state) {
203
- const s = getStyles();
204
- const lines = [];
205
- lines.push(chalk.bold(' Ready to create project?'));
206
- lines.push('');
207
- lines.push(` Project: ${s.primary(state.projectName)}`);
208
- lines.push(` Location: ${s.primary('./' + state.projectName + '/')}`);
209
- lines.push(` Structure: ${s.primary(state.repoPattern === 'single' ? 'Single repo' : 'Two repos')}`);
210
- lines.push(` Tech: ${s.primary(state.techStack ? TECH_STACK_LABELS[state.techStack] : 'Not set')}`);
211
- lines.push(` Standards: ${s.primary(state.codingStandards ? CODING_STANDARDS_LABELS[state.codingStandards] : 'Not set')}`);
212
- lines.push(` Git: ${s.primary(state.initGit ? 'Yes' : 'No')}`);
213
- lines.push(` DB Tracking: ${s.primary(state.trackInDatabase ? 'Yes' : 'No')}`);
214
- if (state.trackInDatabase) {
215
- lines.push(` Workflow: ${s.primary(WORKFLOW_MODE_LABELS[state.workflowMode])}`);
216
- }
217
- if (state.repoPattern === 'two-repo') {
218
- lines.push('');
219
- lines.push(s.muted(` Docs repo: ./${state.projectName}-docs/`));
220
- }
221
- lines.push('');
222
- if (state.error) {
223
- lines.push(s.error(` ${state.error}`));
224
- lines.push('');
225
- }
226
- lines.push(renderSelectionOption(0, state.selectedIndex, 'Create'));
227
- lines.push(renderSelectionOption(1, state.selectedIndex, 'Cancel'));
228
- return lines;
229
- }
230
- function renderGenerating(state) {
231
- const lines = [];
232
- lines.push('');
233
- lines.push(chalk.cyan(` Creating project "${state.projectName}"...`));
234
- lines.push('');
235
- return lines;
236
- }
237
- // =============================================================================
238
- // Step Helpers
239
- // =============================================================================
240
- function getMaxOptionsForStep(step) {
241
- switch (step) {
242
- case 0:
243
- return 2;
244
- case 3:
245
- return REPO_PATTERN_OPTIONS.length;
246
- case 4:
247
- return TECH_STACK_OPTIONS.length;
248
- case 5:
249
- return CODING_STANDARDS_OPTIONS.length;
250
- case 6:
251
- return 2;
252
- case 7:
253
- return 2;
254
- case 8:
255
- return WORKFLOW_MODE_OPTIONS.length;
256
- case 9:
257
- return 2;
258
- default:
259
- return 0;
260
- }
261
- }
262
- function isSelectionStep(step) {
263
- return [0, 3, 4, 5, 6, 7, 8, 9].includes(step);
264
- }
265
- function isInputStep(step) {
266
- return [1, 2].includes(step);
267
- }
268
- // =============================================================================
269
- // Init Overlay Implementation
270
- // =============================================================================
271
- class NewProjectOverlayImpl extends InlineOverlay {
272
- getInitialState() {
273
- return {
274
- step: 0,
275
- projectType: null,
276
- projectName: '',
277
- description: '',
278
- repoPattern: null,
279
- techStack: null,
280
- codingStandards: null,
281
- initGit: true,
282
- trackInDatabase: true,
283
- workflowMode: 'flexible',
284
- selectedIndex: 0,
285
- inputBuffer: '',
286
- error: null,
287
- isGenerating: false,
288
- };
289
- }
290
- render() {
291
- // Show generating state if applicable
292
- if (this.state.isGenerating) {
293
- return renderGenerating(this.state);
294
- }
295
- const lines = [];
296
- lines.push(...renderHeader(this.state.step));
297
- switch (this.state.step) {
298
- case 0:
299
- lines.push(...renderStep0(this.state));
300
- break;
301
- case 1:
302
- lines.push(...renderStep1(this.state));
303
- break;
304
- case 2:
305
- lines.push(...renderStep2(this.state));
306
- break;
307
- case 3:
308
- lines.push(...renderStep3(this.state));
309
- break;
310
- case 4:
311
- lines.push(...renderStep4(this.state));
312
- break;
313
- case 5:
314
- lines.push(...renderStep5(this.state));
315
- break;
316
- case 6:
317
- lines.push(...renderStep6(this.state));
318
- break;
319
- case 7:
320
- lines.push(...renderStep7(this.state));
321
- break;
322
- case 8:
323
- lines.push(...renderStep8(this.state));
324
- break;
325
- case 9:
326
- lines.push(...renderStep9(this.state));
327
- break;
328
- }
329
- lines.push(...renderFooter(this.state.step));
330
- return lines;
331
- }
332
- async handleKey(data) {
333
- // Ctrl+C always cancels
334
- if (this.isCtrlCKey(data)) {
335
- return { type: 'close', result: { created: false } };
336
- }
337
- // q key on step 0 cancels
338
- const char = data.length === 1 && data[0] >= 0x20 && data[0] < 0x7f ? String.fromCharCode(data[0]) : null;
339
- if (this.state.step === 0 && char === 'q') {
340
- return { type: 'close', result: { created: false } };
341
- }
342
- // Escape on step 0 cancels, otherwise goes back
343
- if (this.isEscapeKey(data)) {
344
- if (this.state.step === 0) {
345
- return { type: 'close', result: { created: false } };
346
- }
347
- this.prevStep();
348
- return { type: 'continue' };
349
- }
350
- // Handle selection steps
351
- if (isSelectionStep(this.state.step)) {
352
- const maxOptions = getMaxOptionsForStep(this.state.step);
353
- // j/k for vim-style navigation
354
- if (char === 'j' && this.state.selectedIndex < maxOptions - 1) {
355
- this.state.selectedIndex++;
356
- return { type: 'continue' };
357
- }
358
- if (char === 'k' && this.state.selectedIndex > 0) {
359
- this.state.selectedIndex--;
360
- return { type: 'continue' };
361
- }
362
- if (this.isUpArrowKey(data) && this.state.selectedIndex > 0) {
363
- this.state.selectedIndex--;
364
- return { type: 'continue' };
365
- }
366
- if (this.isDownArrowKey(data) && this.state.selectedIndex < maxOptions - 1) {
367
- this.state.selectedIndex++;
368
- return { type: 'continue' };
369
- }
370
- if (this.isEnterKey(data)) {
371
- // Step 0 - only allow "new" option
372
- if (this.state.step === 0 && this.state.selectedIndex === 1) {
373
- this.state.error = 'This option is coming soon';
374
- return { type: 'continue' };
375
- }
376
- // Step 9 - confirmation
377
- if (this.state.step === 9) {
378
- if (this.state.selectedIndex === 1) {
379
- // Cancel
380
- return { type: 'close', result: { created: false } };
381
- }
382
- // Verify all required fields are set
383
- if (!this.state.repoPattern || !this.state.techStack || !this.state.codingStandards) {
384
- this.state.error = 'Missing configuration values';
385
- return { type: 'continue' };
386
- }
387
- // Show generating state
388
- this.state.isGenerating = true;
389
- this.requestRender();
390
- // Create project
391
- const config = {
392
- name: this.state.projectName,
393
- description: this.state.description,
394
- repoPattern: this.state.repoPattern,
395
- techStack: this.state.techStack,
396
- codingStandards: this.state.codingStandards,
397
- initGit: this.state.initGit,
398
- };
399
- try {
400
- // Ensure projects directory exists and create project there
401
- ensureProjectsDirectory();
402
- const projectsPath = getProjectsPath();
403
- const result = await generateProject(config, projectsPath);
404
- if (result.success) {
405
- return {
406
- type: 'close',
407
- result: {
408
- created: true,
409
- projectPath: result.projectPath,
410
- docsPath: result.docsPath,
411
- filesCreated: result.filesCreated,
412
- trackInDatabase: this.state.trackInDatabase,
413
- workflowMode: this.state.workflowMode,
414
- projectName: this.state.projectName,
415
- description: this.state.description,
416
- },
417
- };
418
- }
419
- else {
420
- this.state.isGenerating = false;
421
- this.state.error = result.error ?? 'Unknown error';
422
- return { type: 'continue' };
423
- }
424
- }
425
- catch (error) {
426
- this.state.isGenerating = false;
427
- this.state.error = error.message;
428
- return { type: 'continue' };
429
- }
430
- }
431
- this.nextStep();
432
- return { type: 'continue' };
433
- }
434
- }
435
- // Handle input steps
436
- if (isInputStep(this.state.step)) {
437
- if (this.isEnterKey(data)) {
438
- if (this.validateInput()) {
439
- this.nextStep();
440
- }
441
- return { type: 'continue' };
442
- }
443
- if (this.isBackspaceKey(data)) {
444
- this.state.inputBuffer = this.state.inputBuffer.slice(0, -1);
445
- this.state.error = null;
446
- return { type: 'continue' };
447
- }
448
- // Regular character input
449
- const inputChar = this.getPrintableChar(data);
450
- if (inputChar) {
451
- this.state.inputBuffer += inputChar;
452
- this.state.error = null;
453
- return { type: 'continue' };
454
- }
455
- }
456
- return { type: 'continue' };
457
- }
458
- getCleanupSummary(result) {
459
- if (!result.created) {
460
- return chalk.yellow(' Init cancelled');
461
- }
462
- return null;
463
- }
464
- // ===========================================================================
465
- // Private Helpers
466
- // ===========================================================================
467
- nextStep() {
468
- switch (this.state.step) {
469
- case 0:
470
- if (this.state.selectedIndex === 0) {
471
- this.state.projectType = 'new';
472
- this.state.step = 1;
473
- this.state.inputBuffer = '';
474
- this.state.selectedIndex = 0;
475
- }
476
- break;
477
- case 1:
478
- this.state.projectName = this.state.inputBuffer.trim();
479
- this.state.step = 2;
480
- this.state.inputBuffer = '';
481
- break;
482
- case 2:
483
- this.state.description = this.state.inputBuffer.trim();
484
- this.state.step = 3;
485
- this.state.selectedIndex = 0;
486
- break;
487
- case 3:
488
- this.state.repoPattern = REPO_PATTERN_OPTIONS[this.state.selectedIndex];
489
- this.state.step = 4;
490
- this.state.selectedIndex = 0;
491
- break;
492
- case 4:
493
- this.state.techStack = TECH_STACK_OPTIONS[this.state.selectedIndex];
494
- this.state.step = 5;
495
- this.state.selectedIndex = 0;
496
- break;
497
- case 5:
498
- this.state.codingStandards = CODING_STANDARDS_OPTIONS[this.state.selectedIndex];
499
- this.state.step = 6;
500
- this.state.selectedIndex = 0;
501
- break;
502
- case 6:
503
- this.state.initGit = this.state.selectedIndex === 0;
504
- this.state.step = 7;
505
- this.state.selectedIndex = 0;
506
- break;
507
- case 7:
508
- this.state.trackInDatabase = this.state.selectedIndex === 0;
509
- // If tracking in DB, ask for workflow mode; otherwise skip to confirmation
510
- this.state.step = this.state.trackInDatabase ? 8 : 9;
511
- this.state.selectedIndex = 0;
512
- break;
513
- case 8:
514
- this.state.workflowMode = WORKFLOW_MODE_OPTIONS[this.state.selectedIndex];
515
- this.state.step = 9;
516
- this.state.selectedIndex = 0;
517
- break;
518
- }
519
- this.state.error = null;
520
- }
521
- prevStep() {
522
- switch (this.state.step) {
523
- case 1:
524
- this.state.step = 0;
525
- this.state.selectedIndex = 0;
526
- break;
527
- case 2:
528
- this.state.step = 1;
529
- this.state.inputBuffer = this.state.projectName;
530
- break;
531
- case 3:
532
- this.state.step = 2;
533
- this.state.inputBuffer = this.state.description;
534
- break;
535
- case 4:
536
- this.state.step = 3;
537
- this.state.selectedIndex = this.state.repoPattern ? REPO_PATTERN_OPTIONS.indexOf(this.state.repoPattern) : 0;
538
- break;
539
- case 5:
540
- this.state.step = 4;
541
- this.state.selectedIndex = this.state.techStack ? TECH_STACK_OPTIONS.indexOf(this.state.techStack) : 0;
542
- break;
543
- case 6:
544
- this.state.step = 5;
545
- this.state.selectedIndex = this.state.codingStandards ? CODING_STANDARDS_OPTIONS.indexOf(this.state.codingStandards) : 0;
546
- break;
547
- case 7:
548
- this.state.step = 6;
549
- this.state.selectedIndex = this.state.initGit ? 0 : 1;
550
- break;
551
- case 8:
552
- this.state.step = 7;
553
- this.state.selectedIndex = this.state.trackInDatabase ? 0 : 1;
554
- break;
555
- case 9:
556
- // Go back to workflow mode if DB tracking is on, otherwise go to DB tracking step
557
- this.state.step = this.state.trackInDatabase ? 8 : 7;
558
- this.state.selectedIndex = this.state.trackInDatabase
559
- ? WORKFLOW_MODE_OPTIONS.indexOf(this.state.workflowMode)
560
- : 1;
561
- break;
562
- }
563
- this.state.error = null;
564
- }
565
- validateInput() {
566
- if (this.state.step === 1) {
567
- const name = this.state.inputBuffer.trim();
568
- if (!name) {
569
- this.state.error = 'Project name is required';
570
- return false;
571
- }
572
- if (!isValidProjectName(name)) {
573
- this.state.error = 'Invalid name. Use lowercase letters, numbers, hyphens (2-50 chars, start with letter)';
574
- return false;
575
- }
576
- if (projectExists(name)) {
577
- this.state.error = `Directory "${name}" already exists`;
578
- return false;
579
- }
580
- }
581
- if (this.state.step === 2) {
582
- const desc = this.state.inputBuffer.trim();
583
- if (!desc) {
584
- this.state.error = 'Description is required';
585
- return false;
586
- }
587
- if (desc.length < 10) {
588
- this.state.error = 'Description too short (min 10 characters)';
589
- return false;
590
- }
591
- }
592
- return true;
593
- }
594
- }
595
- // =============================================================================
596
- // Main Export
597
- // =============================================================================
598
- /**
599
- * Show the init wizard overlay
600
- */
601
- export async function showNewProjectOverlay() {
602
- const overlay = new NewProjectOverlayImpl();
603
- return overlay.show();
604
- }
@@ -1,77 +0,0 @@
1
- /**
2
- * Init Overlay V2
3
- *
4
- * Modal overlay for the /init wizard - creates new projects with structured workflow.
5
- * Uses BaseOverlayV2 for TerminalUI integration.
6
- *
7
- * Steps:
8
- * 0. Project type (new vs existing)
9
- * 1. Project name
10
- * 2. Description
11
- * 3. Repo pattern (single vs two-repo)
12
- * 4. Tech stack
13
- * 5. Coding standards
14
- * 6. Initialize git?
15
- * 7. Track with project database?
16
- * 8. Workflow mode (if tracking enabled)
17
- * 9. Confirmation
18
- */
19
- import { BaseOverlayV2 } from '../../base/index.js';
20
- import type { RenderContext, OverlayAction, KeyEvent } from '../types.js';
21
- import { type TechStack, type CodingStandards, type RepoPattern } from '../../../templates/index.js';
22
- type WizardStep = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
23
- type WorkflowMode = 'flexible' | 'guided';
24
- interface InitState {
25
- step: WizardStep;
26
- projectType: 'new' | 'existing' | null;
27
- projectName: string;
28
- description: string;
29
- repoPattern: RepoPattern | null;
30
- techStack: TechStack | null;
31
- codingStandards: CodingStandards | null;
32
- initGit: boolean;
33
- trackInDatabase: boolean;
34
- workflowMode: WorkflowMode;
35
- selectedIndex: number;
36
- inputBuffer: string;
37
- error: string | null;
38
- isGenerating: boolean;
39
- }
40
- export interface InitResultV2 {
41
- created: boolean;
42
- projectPath?: string;
43
- docsPath?: string;
44
- filesCreated?: string[];
45
- trackInDatabase?: boolean;
46
- workflowMode?: WorkflowMode;
47
- projectName?: string;
48
- description?: string;
49
- }
50
- export declare class InitOverlayV2 extends BaseOverlayV2<InitState, InitResultV2> {
51
- readonly type: "inline";
52
- readonly id = "init-overlay-v2";
53
- constructor();
54
- protected renderContent(context: RenderContext): string[];
55
- private renderGenerating;
56
- private renderStepFooter;
57
- private renderSelectionOption;
58
- private renderStep0;
59
- private renderStep1;
60
- private renderStep2;
61
- private renderStep3;
62
- private renderStep4;
63
- private renderStep5;
64
- private renderStep6;
65
- private renderStep7;
66
- private renderStep8;
67
- private renderStep9;
68
- handleKey(key: KeyEvent): OverlayAction<InitResultV2> | Promise<OverlayAction<InitResultV2>>;
69
- private handleSelectionKey;
70
- private handleSelectionEnter;
71
- private handleInputKey;
72
- private nextStep;
73
- private prevStep;
74
- private validateInput;
75
- getCloseSummary(result: InitResultV2): string | null;
76
- }
77
- export {};