@compilr-dev/cli 0.4.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 (634) hide show
  1. package/README.md +254 -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 +134 -4
  7. package/dist/agent.js +345 -166
  8. package/dist/anchors/index.d.ts +9 -0
  9. package/dist/anchors/index.js +9 -0
  10. package/dist/anchors/project-anchors.d.ts +79 -0
  11. package/dist/anchors/project-anchors.js +202 -0
  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/index.d.ts +2 -1
  23. package/dist/commands-v2/handlers/auth.d.ts +10 -0
  24. package/dist/commands-v2/handlers/auth.js +118 -0
  25. package/dist/commands-v2/handlers/background.d.ts +14 -0
  26. package/dist/commands-v2/handlers/background.js +276 -0
  27. package/dist/commands-v2/handlers/context.d.ts +13 -0
  28. package/dist/commands-v2/handlers/context.js +533 -0
  29. package/dist/commands-v2/handlers/core.d.ts +14 -0
  30. package/dist/commands-v2/handlers/core.js +290 -0
  31. package/dist/commands-v2/handlers/debug.d.ts +11 -0
  32. package/dist/commands-v2/handlers/debug.js +177 -0
  33. package/dist/commands-v2/handlers/delegations.d.ts +8 -0
  34. package/dist/commands-v2/handlers/delegations.js +29 -0
  35. package/dist/commands-v2/handlers/files.d.ts +8 -0
  36. package/dist/commands-v2/handlers/files.js +162 -0
  37. package/dist/commands-v2/handlers/filter.d.ts +9 -0
  38. package/dist/commands-v2/handlers/filter.js +130 -0
  39. package/dist/commands-v2/handlers/games.d.ts +7 -0
  40. package/dist/commands-v2/handlers/games.js +57 -0
  41. package/dist/commands-v2/handlers/index.d.ts +25 -0
  42. package/dist/commands-v2/handlers/index.js +63 -0
  43. package/dist/commands-v2/handlers/mcp.d.ts +8 -0
  44. package/dist/commands-v2/handlers/mcp.js +39 -0
  45. package/dist/commands-v2/handlers/notifications.d.ts +9 -0
  46. package/dist/commands-v2/handlers/notifications.js +34 -0
  47. package/dist/commands-v2/handlers/project.d.ts +22 -0
  48. package/dist/commands-v2/handlers/project.js +1035 -0
  49. package/dist/commands-v2/handlers/reset.d.ts +11 -0
  50. package/dist/commands-v2/handlers/reset.js +118 -0
  51. package/dist/commands-v2/handlers/session.d.ts +161 -0
  52. package/dist/commands-v2/handlers/session.js +805 -0
  53. package/dist/commands-v2/handlers/settings.d.ts +17 -0
  54. package/dist/commands-v2/handlers/settings.js +417 -0
  55. package/dist/commands-v2/handlers/tasks.d.ts +5 -0
  56. package/dist/commands-v2/handlers/tasks.js +36 -0
  57. package/dist/commands-v2/handlers/team.d.ts +9 -0
  58. package/dist/commands-v2/handlers/team.js +549 -0
  59. package/dist/commands-v2/handlers/terminals.d.ts +9 -0
  60. package/dist/commands-v2/handlers/terminals.js +34 -0
  61. package/dist/commands-v2/index.d.ts +14 -0
  62. package/dist/commands-v2/index.js +18 -0
  63. package/dist/commands-v2/registry.d.ts +52 -0
  64. package/dist/commands-v2/registry.js +114 -0
  65. package/dist/commands-v2/types.d.ts +153 -0
  66. package/dist/commands-v2/types.js +7 -0
  67. package/dist/commands.js +123 -7
  68. package/dist/compilr-diff-companion.vsix +0 -0
  69. package/dist/db/index.js +98 -4
  70. package/dist/db/repositories/document-repository.d.ts +2 -0
  71. package/dist/db/repositories/document-repository.js +5 -1
  72. package/dist/db/repositories/index.d.ts +2 -0
  73. package/dist/db/repositories/index.js +1 -0
  74. package/dist/db/repositories/plan-repository.d.ts +101 -0
  75. package/dist/db/repositories/plan-repository.js +275 -0
  76. package/dist/db/repositories/project-repository.d.ts +6 -0
  77. package/dist/db/repositories/project-repository.js +41 -0
  78. package/dist/db/repositories/work-item-repository.d.ts +15 -0
  79. package/dist/db/repositories/work-item-repository.js +69 -4
  80. package/dist/db/schema.d.ts +40 -3
  81. package/dist/db/schema.js +66 -3
  82. package/dist/episodes/index.d.ts +20 -0
  83. package/dist/episodes/index.js +27 -0
  84. package/dist/episodes/recorder.d.ts +51 -0
  85. package/dist/episodes/recorder.js +195 -0
  86. package/dist/episodes/significant-work.d.ts +21 -0
  87. package/dist/episodes/significant-work.js +56 -0
  88. package/dist/episodes/store.d.ts +38 -0
  89. package/dist/episodes/store.js +199 -0
  90. package/dist/episodes/types.d.ts +35 -0
  91. package/dist/episodes/types.js +6 -0
  92. package/dist/episodes/work-at-risk.d.ts +12 -0
  93. package/dist/episodes/work-at-risk.js +38 -0
  94. package/dist/episodes/work-summary-anchor.d.ts +23 -0
  95. package/dist/episodes/work-summary-anchor.js +73 -0
  96. package/dist/games/coins.d.ts +66 -0
  97. package/dist/games/coins.js +165 -0
  98. package/dist/games/game-base.d.ts +84 -0
  99. package/dist/games/game-base.js +204 -0
  100. package/dist/games/index.d.ts +16 -0
  101. package/dist/games/index.js +49 -0
  102. package/dist/games/scores.d.ts +69 -0
  103. package/dist/games/scores.js +191 -0
  104. package/dist/games/tetris/board.d.ts +59 -0
  105. package/dist/games/tetris/board.js +170 -0
  106. package/dist/games/tetris/index.d.ts +109 -0
  107. package/dist/games/tetris/index.js +610 -0
  108. package/dist/games/tetris/pieces.d.ts +44 -0
  109. package/dist/games/tetris/pieces.js +271 -0
  110. package/dist/games/tetris/renderer.d.ts +26 -0
  111. package/dist/games/tetris/renderer.js +77 -0
  112. package/dist/guide/guide-content.d.ts +23 -0
  113. package/dist/guide/guide-content.js +196 -0
  114. package/dist/guide/index.d.ts +8 -0
  115. package/dist/guide/index.js +7 -0
  116. package/dist/guide/shared-content.d.ts +37 -0
  117. package/dist/guide/shared-content.js +1272 -0
  118. package/dist/guide/tutorial-helpers.d.ts +57 -0
  119. package/dist/guide/tutorial-helpers.js +147 -0
  120. package/dist/handlers/ask-user-handlers.d.ts +32 -0
  121. package/dist/handlers/ask-user-handlers.js +104 -0
  122. package/dist/handlers/delegation-handlers.d.ts +34 -0
  123. package/dist/handlers/delegation-handlers.js +291 -0
  124. package/dist/handlers/permission-handler.d.ts +30 -0
  125. package/dist/handlers/permission-handler.js +205 -0
  126. package/dist/index.d.ts +11 -1
  127. package/dist/index.js +615 -179
  128. package/dist/input-handlers/index.d.ts +7 -0
  129. package/dist/input-handlers/index.js +7 -0
  130. package/dist/input-handlers/memory-handler.d.ts +26 -0
  131. package/dist/input-handlers/memory-handler.js +69 -0
  132. package/dist/models/index.d.ts +10 -0
  133. package/dist/models/index.js +12 -0
  134. package/dist/models/model-registry.d.ts +38 -0
  135. package/dist/models/model-registry.js +69 -0
  136. package/dist/models/model-tiers.d.ts +28 -0
  137. package/dist/models/model-tiers.js +71 -0
  138. package/dist/models/model-validation.d.ts +25 -0
  139. package/dist/models/model-validation.js +291 -0
  140. package/dist/models/ollama-models.d.ts +73 -0
  141. package/dist/models/ollama-models.js +178 -0
  142. package/dist/models/provider-types.d.ts +6 -0
  143. package/dist/models/provider-types.js +1 -0
  144. package/dist/models/providers.d.ts +35 -0
  145. package/dist/models/providers.js +58 -0
  146. package/dist/models/types.d.ts +4 -0
  147. package/dist/models/types.js +4 -0
  148. package/dist/multi-agent/activity.d.ts +21 -0
  149. package/dist/multi-agent/activity.js +34 -0
  150. package/dist/multi-agent/agent-selection.d.ts +55 -0
  151. package/dist/multi-agent/agent-selection.js +90 -0
  152. package/dist/multi-agent/artifacts.d.ts +197 -0
  153. package/dist/multi-agent/artifacts.js +379 -0
  154. package/dist/multi-agent/checkpointer.d.ts +138 -0
  155. package/dist/multi-agent/checkpointer.js +471 -0
  156. package/dist/multi-agent/collision-utils.d.ts +16 -0
  157. package/dist/multi-agent/collision-utils.js +28 -0
  158. package/dist/multi-agent/context-resolver.d.ts +97 -0
  159. package/dist/multi-agent/context-resolver.js +316 -0
  160. package/dist/multi-agent/custom-agents.d.ts +83 -0
  161. package/dist/multi-agent/custom-agents.js +227 -0
  162. package/dist/multi-agent/delegation-tracker.d.ts +157 -0
  163. package/dist/multi-agent/delegation-tracker.js +243 -0
  164. package/dist/multi-agent/file-lock-hook.d.ts +29 -0
  165. package/dist/multi-agent/file-lock-hook.js +97 -0
  166. package/dist/multi-agent/file-locks.d.ts +58 -0
  167. package/dist/multi-agent/file-locks.js +194 -0
  168. package/dist/multi-agent/index.d.ts +24 -0
  169. package/dist/multi-agent/index.js +30 -0
  170. package/dist/multi-agent/mention-parser.d.ts +64 -0
  171. package/dist/multi-agent/mention-parser.js +146 -0
  172. package/dist/multi-agent/notification-manager.d.ts +84 -0
  173. package/dist/multi-agent/notification-manager.js +224 -0
  174. package/dist/multi-agent/pending-requests.d.ts +122 -0
  175. package/dist/multi-agent/pending-requests.js +155 -0
  176. package/dist/multi-agent/session-registry.d.ts +139 -0
  177. package/dist/multi-agent/session-registry.js +514 -0
  178. package/dist/multi-agent/shared-context.d.ts +293 -0
  179. package/dist/multi-agent/shared-context.js +671 -0
  180. package/dist/multi-agent/skill-requirements.d.ts +66 -0
  181. package/dist/multi-agent/skill-requirements.js +178 -0
  182. package/dist/multi-agent/task-assignment.d.ts +69 -0
  183. package/dist/multi-agent/task-assignment.js +123 -0
  184. package/dist/multi-agent/task-suggestion.d.ts +31 -0
  185. package/dist/multi-agent/task-suggestion.js +72 -0
  186. package/dist/multi-agent/team-agent.d.ts +201 -0
  187. package/dist/multi-agent/team-agent.js +488 -0
  188. package/dist/multi-agent/team.d.ts +286 -0
  189. package/dist/multi-agent/team.js +610 -0
  190. package/dist/multi-agent/tool-config.d.ts +110 -0
  191. package/dist/multi-agent/tool-config.js +661 -0
  192. package/dist/multi-agent/types.d.ts +211 -0
  193. package/dist/multi-agent/types.js +617 -0
  194. package/dist/prompts/plan-mode-prompt.d.ts +11 -0
  195. package/dist/prompts/plan-mode-prompt.js +95 -0
  196. package/dist/repl-helpers.d.ts +63 -0
  197. package/dist/repl-helpers.js +319 -0
  198. package/dist/repl-v2.d.ts +554 -0
  199. package/dist/repl-v2.js +3286 -0
  200. package/dist/session/index.d.ts +6 -0
  201. package/dist/session/index.js +6 -0
  202. package/dist/session/project-session-manager.d.ts +158 -0
  203. package/dist/session/project-session-manager.js +650 -0
  204. package/dist/settings/index.d.ts +156 -13
  205. package/dist/settings/index.js +377 -24
  206. package/dist/settings/mcp-config.d.ts +76 -0
  207. package/dist/settings/mcp-config.js +143 -0
  208. package/dist/settings/paths.d.ts +114 -0
  209. package/dist/settings/paths.js +270 -0
  210. package/dist/shared-handlers.d.ts +62 -0
  211. package/dist/shared-handlers.js +48 -0
  212. package/dist/system-prompt/builder.d.ts +5 -0
  213. package/dist/system-prompt/builder.js +4 -0
  214. package/dist/system-prompt/index.d.ts +18 -0
  215. package/dist/system-prompt/index.js +18 -0
  216. package/dist/system-prompt/modules.d.ts +5 -0
  217. package/dist/system-prompt/modules.js +4 -0
  218. package/dist/tabbed-menu.js +2 -1
  219. package/dist/templates/compilr-md-import.d.ts +16 -0
  220. package/dist/templates/compilr-md-import.js +241 -0
  221. package/dist/templates/compilr-md.js +10 -58
  222. package/dist/templates/config-json.d.ts +1 -25
  223. package/dist/templates/index.d.ts +2 -0
  224. package/dist/templates/index.js +35 -75
  225. package/dist/themes/colors.js +3 -1
  226. package/dist/themes/registry.d.ts +5 -36
  227. package/dist/themes/registry.js +11 -95
  228. package/dist/themes/types.d.ts +3 -38
  229. package/dist/themes/types.js +2 -2
  230. package/dist/tool-names.d.ts +108 -0
  231. package/dist/tool-names.js +227 -0
  232. package/dist/tools/anchor-tools.d.ts +31 -0
  233. package/dist/tools/anchor-tools.js +255 -0
  234. package/dist/tools/artifact-tools.d.ts +42 -0
  235. package/dist/tools/artifact-tools.js +328 -0
  236. package/dist/tools/ask-user-simple.d.ts +1 -1
  237. package/dist/tools/ask-user-simple.js +2 -1
  238. package/dist/tools/ask-user.d.ts +1 -1
  239. package/dist/tools/ask-user.js +2 -1
  240. package/dist/tools/backlog-wrappers.d.ts +56 -0
  241. package/dist/tools/backlog-wrappers.js +353 -0
  242. package/dist/tools/backlog.d.ts +2 -2
  243. package/dist/tools/backlog.js +2 -2
  244. package/dist/tools/db-tools.d.ts +12 -0
  245. package/dist/tools/db-tools.js +14 -0
  246. package/dist/tools/delegate-background.d.ts +27 -0
  247. package/dist/tools/delegate-background.js +115 -0
  248. package/dist/tools/delegate.d.ts +22 -0
  249. package/dist/tools/delegate.js +97 -0
  250. package/dist/tools/delegation-status.d.ts +16 -0
  251. package/dist/tools/delegation-status.js +128 -0
  252. package/dist/tools/document-db.d.ts +43 -0
  253. package/dist/tools/document-db.js +220 -0
  254. package/dist/tools/guide-tool.d.ts +12 -0
  255. package/dist/tools/guide-tool.js +59 -0
  256. package/dist/tools/handoff.d.ts +25 -0
  257. package/dist/tools/handoff.js +99 -0
  258. package/dist/tools/meta-tools.d.ts +26 -0
  259. package/dist/tools/meta-tools.js +47 -0
  260. package/dist/tools/plan-tools.d.ts +54 -0
  261. package/dist/tools/plan-tools.js +338 -0
  262. package/dist/tools/platform-adapter.d.ts +29 -0
  263. package/dist/tools/platform-adapter.js +394 -0
  264. package/dist/tools/project-db.d.ts +34 -0
  265. package/dist/tools/project-db.js +39 -0
  266. package/dist/tools/recall-work-tool.d.ts +18 -0
  267. package/dist/tools/recall-work-tool.js +82 -0
  268. package/dist/tools/workitem-db.d.ts +135 -0
  269. package/dist/tools/workitem-db.js +730 -0
  270. package/dist/tools.d.ts +67 -2
  271. package/dist/tools.js +238 -38
  272. package/dist/ui/ask-user-overlay.d.ts +2 -2
  273. package/dist/ui/ask-user-overlay.js +443 -535
  274. package/dist/ui/ask-user-simple-overlay.d.ts +2 -2
  275. package/dist/ui/ask-user-simple-overlay.js +182 -209
  276. package/dist/ui/autocomplete-controller.d.ts +42 -0
  277. package/dist/ui/autocomplete-controller.js +384 -0
  278. package/dist/ui/base/index.d.ts +26 -0
  279. package/dist/ui/base/index.js +33 -0
  280. package/dist/ui/base/inline-overlay-utils.d.ts +217 -0
  281. package/dist/ui/base/inline-overlay-utils.js +320 -0
  282. package/dist/ui/base/inline-overlay.d.ts +159 -0
  283. package/dist/ui/base/inline-overlay.js +257 -0
  284. package/dist/ui/base/key-utils.d.ts +15 -0
  285. package/dist/ui/base/key-utils.js +30 -0
  286. package/dist/ui/base/overlay-base-v2.d.ts +203 -0
  287. package/dist/ui/base/overlay-base-v2.js +260 -0
  288. package/dist/ui/base/overlay-base.d.ts +156 -0
  289. package/dist/ui/base/overlay-base.js +238 -0
  290. package/dist/ui/base/overlay-lifecycle.d.ts +65 -0
  291. package/dist/ui/base/overlay-lifecycle.js +159 -0
  292. package/dist/ui/base/overlay-types.d.ts +185 -0
  293. package/dist/ui/base/overlay-types.js +7 -0
  294. package/dist/ui/base/render-utils.d.ts +27 -0
  295. package/dist/ui/base/render-utils.js +36 -0
  296. package/dist/ui/base/screen-stack.d.ts +148 -0
  297. package/dist/ui/base/screen-stack.js +184 -0
  298. package/dist/ui/base/tabbed-list-overlay-v2.d.ts +118 -0
  299. package/dist/ui/base/tabbed-list-overlay-v2.js +335 -0
  300. package/dist/ui/base/tabbed-list-overlay.d.ts +153 -0
  301. package/dist/ui/base/tabbed-list-overlay.js +369 -0
  302. package/dist/ui/constants/labels.d.ts +14 -0
  303. package/dist/ui/constants/labels.js +51 -0
  304. package/dist/ui/conversation-store.d.ts +55 -0
  305. package/dist/ui/conversation-store.js +107 -0
  306. package/dist/ui/conversation.d.ts +75 -4
  307. package/dist/ui/conversation.js +376 -165
  308. package/dist/ui/diff.d.ts +7 -1
  309. package/dist/ui/diff.js +85 -48
  310. package/dist/ui/ephemeral.d.ts +1 -1
  311. package/dist/ui/ephemeral.js +4 -10
  312. package/dist/ui/features/index.d.ts +34 -0
  313. package/dist/ui/features/index.js +34 -0
  314. package/dist/ui/features/input-feature.d.ts +85 -0
  315. package/dist/ui/features/input-feature.js +238 -0
  316. package/dist/ui/features/list-feature.d.ts +155 -0
  317. package/dist/ui/features/list-feature.js +244 -0
  318. package/dist/ui/features/pagination-feature.d.ts +154 -0
  319. package/dist/ui/features/pagination-feature.js +238 -0
  320. package/dist/ui/features/search-feature.d.ts +148 -0
  321. package/dist/ui/features/search-feature.js +185 -0
  322. package/dist/ui/features/tab-feature.d.ts +194 -0
  323. package/dist/ui/features/tab-feature.js +307 -0
  324. package/dist/ui/file-autocomplete.d.ts +24 -0
  325. package/dist/ui/file-autocomplete.js +56 -0
  326. package/dist/ui/footer-renderer.d.ts +69 -0
  327. package/dist/ui/footer-renderer.js +431 -0
  328. package/dist/ui/footer.d.ts +181 -7
  329. package/dist/ui/footer.js +523 -74
  330. package/dist/ui/guardrail-overlay.d.ts +29 -0
  331. package/dist/ui/guardrail-overlay.js +145 -0
  332. package/dist/ui/index.d.ts +1 -1
  333. package/dist/ui/index.js +1 -3
  334. package/dist/ui/input-controller.d.ts +51 -0
  335. package/dist/ui/input-controller.js +176 -0
  336. package/dist/ui/input-prompt.d.ts +135 -33
  337. package/dist/ui/input-prompt.js +728 -337
  338. package/dist/ui/iteration-limit-overlay.d.ts +2 -2
  339. package/dist/ui/iteration-limit-overlay.js +92 -128
  340. package/dist/ui/keyboard-handler.d.ts +57 -0
  341. package/dist/ui/keyboard-handler.js +557 -0
  342. package/dist/ui/keys-overlay.d.ts +1 -0
  343. package/dist/ui/keys-overlay.js +203 -141
  344. package/dist/ui/line-utils.d.ts +88 -0
  345. package/dist/ui/line-utils.js +150 -0
  346. package/dist/ui/live-region-facade.d.ts +42 -0
  347. package/dist/ui/live-region-facade.js +205 -0
  348. package/dist/ui/live-region.d.ts +157 -0
  349. package/dist/ui/live-region.js +379 -0
  350. package/dist/ui/mascot/expressions.d.ts +32 -0
  351. package/dist/ui/mascot/expressions.js +213 -0
  352. package/dist/ui/mascot/index.d.ts +8 -0
  353. package/dist/ui/mascot/index.js +8 -0
  354. package/dist/ui/mascot/renderer.d.ts +19 -0
  355. package/dist/ui/mascot/renderer.js +132 -0
  356. package/dist/ui/overlay/data/tutorial-content.d.ts +9 -0
  357. package/dist/ui/overlay/data/tutorial-content.js +9 -0
  358. package/dist/ui/overlay/data/tutorial-registry.d.ts +12 -0
  359. package/dist/ui/overlay/data/tutorial-registry.js +116 -0
  360. package/dist/ui/overlay/data/tutorial-types.d.ts +35 -0
  361. package/dist/ui/overlay/data/tutorial-types.js +6 -0
  362. package/dist/ui/overlay/data/tutorials/basics/first-conversation.d.ts +7 -0
  363. package/dist/ui/overlay/data/tutorials/basics/first-conversation.js +220 -0
  364. package/dist/ui/overlay/data/tutorials/basics/first-project.d.ts +7 -0
  365. package/dist/ui/overlay/data/tutorials/basics/first-project.js +284 -0
  366. package/dist/ui/overlay/data/tutorials/basics/navigation.d.ts +8 -0
  367. package/dist/ui/overlay/data/tutorials/basics/navigation.js +22 -0
  368. package/dist/ui/overlay/data/tutorials/basics/welcome.d.ts +7 -0
  369. package/dist/ui/overlay/data/tutorials/basics/welcome.js +174 -0
  370. package/dist/ui/overlay/data/tutorials/config/context-management.d.ts +7 -0
  371. package/dist/ui/overlay/data/tutorials/config/context-management.js +158 -0
  372. package/dist/ui/overlay/data/tutorials/config/mcp-servers.d.ts +8 -0
  373. package/dist/ui/overlay/data/tutorials/config/mcp-servers.js +155 -0
  374. package/dist/ui/overlay/data/tutorials/config/model-selection.d.ts +7 -0
  375. package/dist/ui/overlay/data/tutorials/config/model-selection.js +162 -0
  376. package/dist/ui/overlay/data/tutorials/config/permissions-safety.d.ts +7 -0
  377. package/dist/ui/overlay/data/tutorials/config/permissions-safety.js +163 -0
  378. package/dist/ui/overlay/data/tutorials/config/settings-config.d.ts +7 -0
  379. package/dist/ui/overlay/data/tutorials/config/settings-config.js +166 -0
  380. package/dist/ui/overlay/data/tutorials/planning/arch.d.ts +7 -0
  381. package/dist/ui/overlay/data/tutorials/planning/arch.js +168 -0
  382. package/dist/ui/overlay/data/tutorials/planning/backlog.d.ts +7 -0
  383. package/dist/ui/overlay/data/tutorials/planning/backlog.js +103 -0
  384. package/dist/ui/overlay/data/tutorials/planning/build.d.ts +7 -0
  385. package/dist/ui/overlay/data/tutorials/planning/build.js +173 -0
  386. package/dist/ui/overlay/data/tutorials/planning/design.d.ts +7 -0
  387. package/dist/ui/overlay/data/tutorials/planning/design.js +205 -0
  388. package/dist/ui/overlay/data/tutorials/planning/docs.d.ts +7 -0
  389. package/dist/ui/overlay/data/tutorials/planning/docs.js +143 -0
  390. package/dist/ui/overlay/data/tutorials/planning/prd.d.ts +7 -0
  391. package/dist/ui/overlay/data/tutorials/planning/prd.js +173 -0
  392. package/dist/ui/overlay/data/tutorials/planning/scaffold.d.ts +7 -0
  393. package/dist/ui/overlay/data/tutorials/planning/scaffold.js +164 -0
  394. package/dist/ui/overlay/data/tutorials/planning/sketch.d.ts +7 -0
  395. package/dist/ui/overlay/data/tutorials/planning/sketch.js +58 -0
  396. package/dist/ui/overlay/data/tutorials/projects/anchors.d.ts +7 -0
  397. package/dist/ui/overlay/data/tutorials/projects/anchors.js +248 -0
  398. package/dist/ui/overlay/data/tutorials/projects/import-project.d.ts +7 -0
  399. package/dist/ui/overlay/data/tutorials/projects/import-project.js +172 -0
  400. package/dist/ui/overlay/data/tutorials/projects/managing-projects.d.ts +8 -0
  401. package/dist/ui/overlay/data/tutorials/projects/managing-projects.js +212 -0
  402. package/dist/ui/overlay/data/tutorials/projects/new-project.d.ts +7 -0
  403. package/dist/ui/overlay/data/tutorials/projects/new-project.js +251 -0
  404. package/dist/ui/overlay/data/tutorials/projects/session-management.d.ts +7 -0
  405. package/dist/ui/overlay/data/tutorials/projects/session-management.js +169 -0
  406. package/dist/ui/overlay/data/tutorials/teams/background-execution.d.ts +7 -0
  407. package/dist/ui/overlay/data/tutorials/teams/background-execution.js +171 -0
  408. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.d.ts +8 -0
  409. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.js +147 -0
  410. package/dist/ui/overlay/data/tutorials/teams/task-assignment.d.ts +7 -0
  411. package/dist/ui/overlay/data/tutorials/teams/task-assignment.js +204 -0
  412. package/dist/ui/overlay/data/tutorials/teams/team-overview.d.ts +7 -0
  413. package/dist/ui/overlay/data/tutorials/teams/team-overview.js +165 -0
  414. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.d.ts +7 -0
  415. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.js +172 -0
  416. package/dist/ui/overlay/impl/agents-overlay-v2.d.ts +45 -0
  417. package/dist/ui/overlay/impl/agents-overlay-v2.js +814 -0
  418. package/dist/ui/overlay/impl/anchors-overlay-v2.d.ts +47 -0
  419. package/dist/ui/overlay/impl/anchors-overlay-v2.js +749 -0
  420. package/dist/ui/overlay/impl/arch-type-overlay-v2.d.ts +37 -0
  421. package/dist/ui/overlay/impl/arch-type-overlay-v2.js +240 -0
  422. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.d.ts +43 -0
  423. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.js +232 -0
  424. package/dist/ui/overlay/impl/artifact-overlay-v2.d.ts +40 -0
  425. package/dist/ui/overlay/impl/artifact-overlay-v2.js +115 -0
  426. package/dist/ui/overlay/impl/ask-user-overlay-v2.d.ts +72 -0
  427. package/dist/ui/overlay/impl/ask-user-overlay-v2.js +581 -0
  428. package/dist/ui/overlay/impl/ask-user-simple-overlay-v2.d.ts +46 -0
  429. package/dist/ui/overlay/impl/ask-user-simple-overlay-v2.js +204 -0
  430. package/dist/ui/overlay/impl/background-overlay-v2.d.ts +40 -0
  431. package/dist/ui/overlay/impl/background-overlay-v2.js +147 -0
  432. package/dist/ui/overlay/impl/backlog-overlay-v2.d.ts +52 -0
  433. package/dist/ui/overlay/impl/backlog-overlay-v2.js +681 -0
  434. package/dist/ui/overlay/impl/changelog-overlay-v2.d.ts +44 -0
  435. package/dist/ui/overlay/impl/changelog-overlay-v2.js +165 -0
  436. package/dist/ui/overlay/impl/commands-overlay-v2.d.ts +33 -0
  437. package/dist/ui/overlay/impl/commands-overlay-v2.js +439 -0
  438. package/dist/ui/overlay/impl/config-overlay-v2.d.ts +111 -0
  439. package/dist/ui/overlay/impl/config-overlay-v2.js +718 -0
  440. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.d.ts +83 -0
  441. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.js +711 -0
  442. package/dist/ui/overlay/impl/dashboard-overlay-v2.d.ts +57 -0
  443. package/dist/ui/overlay/impl/dashboard-overlay-v2.js +382 -0
  444. package/dist/ui/overlay/impl/delegations-overlay-v2.d.ts +28 -0
  445. package/dist/ui/overlay/impl/delegations-overlay-v2.js +279 -0
  446. package/dist/ui/overlay/impl/docs-overlay-v2.d.ts +45 -0
  447. package/dist/ui/overlay/impl/docs-overlay-v2.js +117 -0
  448. package/dist/ui/overlay/impl/document-detail-overlay-v2.d.ts +84 -0
  449. package/dist/ui/overlay/impl/document-detail-overlay-v2.js +1112 -0
  450. package/dist/ui/overlay/impl/filter-overlay-v2.d.ts +41 -0
  451. package/dist/ui/overlay/impl/filter-overlay-v2.js +110 -0
  452. package/dist/ui/overlay/impl/games-overlay-v2.d.ts +31 -0
  453. package/dist/ui/overlay/impl/games-overlay-v2.js +135 -0
  454. package/dist/ui/overlay/impl/guardrail-overlay-v2.d.ts +43 -0
  455. package/dist/ui/overlay/impl/guardrail-overlay-v2.js +114 -0
  456. package/dist/ui/overlay/impl/help-overlay-v2.d.ts +57 -0
  457. package/dist/ui/overlay/impl/help-overlay-v2.js +287 -0
  458. package/dist/ui/overlay/impl/init-setup-overlay-v2.d.ts +25 -0
  459. package/dist/ui/overlay/impl/init-setup-overlay-v2.js +97 -0
  460. package/dist/ui/overlay/impl/iteration-limit-overlay-v2.d.ts +35 -0
  461. package/dist/ui/overlay/impl/iteration-limit-overlay-v2.js +105 -0
  462. package/dist/ui/overlay/impl/keys-overlay-v2.d.ts +41 -0
  463. package/dist/ui/overlay/impl/keys-overlay-v2.js +248 -0
  464. package/dist/ui/overlay/impl/login-overlay-v2.d.ts +49 -0
  465. package/dist/ui/overlay/impl/login-overlay-v2.js +277 -0
  466. package/dist/ui/overlay/impl/mascot-overlay-v2.d.ts +41 -0
  467. package/dist/ui/overlay/impl/mascot-overlay-v2.js +138 -0
  468. package/dist/ui/overlay/impl/mcp-overlay-v2.d.ts +63 -0
  469. package/dist/ui/overlay/impl/mcp-overlay-v2.js +907 -0
  470. package/dist/ui/overlay/impl/model-overlay-v2.d.ts +93 -0
  471. package/dist/ui/overlay/impl/model-overlay-v2.js +1143 -0
  472. package/dist/ui/overlay/impl/model-warning-overlay-v2.d.ts +46 -0
  473. package/dist/ui/overlay/impl/model-warning-overlay-v2.js +132 -0
  474. package/dist/ui/overlay/impl/new-overlay-v2.d.ts +108 -0
  475. package/dist/ui/overlay/impl/new-overlay-v2.js +1243 -0
  476. package/dist/ui/overlay/impl/notifications-overlay-v2.d.ts +20 -0
  477. package/dist/ui/overlay/impl/notifications-overlay-v2.js +116 -0
  478. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.d.ts +76 -0
  479. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.js +728 -0
  480. package/dist/ui/overlay/impl/pending-overlay-v2.d.ts +51 -0
  481. package/dist/ui/overlay/impl/pending-overlay-v2.js +445 -0
  482. package/dist/ui/overlay/impl/permission-overlay-v2.d.ts +36 -0
  483. package/dist/ui/overlay/impl/permission-overlay-v2.js +380 -0
  484. package/dist/ui/overlay/impl/permissions-overlay-v2.d.ts +85 -0
  485. package/dist/ui/overlay/impl/permissions-overlay-v2.js +820 -0
  486. package/dist/ui/overlay/impl/plan-approval-overlay-v2.d.ts +35 -0
  487. package/dist/ui/overlay/impl/plan-approval-overlay-v2.js +181 -0
  488. package/dist/ui/overlay/impl/project-edit-overlay-v2.d.ts +36 -0
  489. package/dist/ui/overlay/impl/project-edit-overlay-v2.js +195 -0
  490. package/dist/ui/overlay/impl/projects-overlay-v2.d.ts +37 -0
  491. package/dist/ui/overlay/impl/projects-overlay-v2.js +733 -0
  492. package/dist/ui/overlay/impl/reset-overlay-v2.d.ts +39 -0
  493. package/dist/ui/overlay/impl/reset-overlay-v2.js +107 -0
  494. package/dist/ui/overlay/impl/resume-overlay-v2.d.ts +60 -0
  495. package/dist/ui/overlay/impl/resume-overlay-v2.js +414 -0
  496. package/dist/ui/overlay/impl/session-mode-overlay-v2.d.ts +43 -0
  497. package/dist/ui/overlay/impl/session-mode-overlay-v2.js +124 -0
  498. package/dist/ui/overlay/impl/tasks-overlay-v2.d.ts +28 -0
  499. package/dist/ui/overlay/impl/tasks-overlay-v2.js +283 -0
  500. package/dist/ui/overlay/impl/team-overlay-v2.d.ts +86 -0
  501. package/dist/ui/overlay/impl/team-overlay-v2.js +692 -0
  502. package/dist/ui/overlay/impl/terminals-overlay-v2.d.ts +26 -0
  503. package/dist/ui/overlay/impl/terminals-overlay-v2.js +217 -0
  504. package/dist/ui/overlay/impl/theme-overlay-v2.d.ts +42 -0
  505. package/dist/ui/overlay/impl/theme-overlay-v2.js +135 -0
  506. package/dist/ui/overlay/impl/tools-overlay-v2.d.ts +47 -0
  507. package/dist/ui/overlay/impl/tools-overlay-v2.js +214 -0
  508. package/dist/ui/overlay/impl/tutorial-overlay-v2.d.ts +45 -0
  509. package/dist/ui/overlay/impl/tutorial-overlay-v2.js +212 -0
  510. package/dist/ui/overlay/impl/workflow-overlay-v2.d.ts +80 -0
  511. package/dist/ui/overlay/impl/workflow-overlay-v2.js +641 -0
  512. package/dist/ui/overlay/index.d.ts +52 -0
  513. package/dist/ui/overlay/index.js +54 -0
  514. package/dist/ui/overlay/key-utils.d.ts +6 -0
  515. package/dist/ui/overlay/key-utils.js +6 -0
  516. package/dist/ui/overlay/types.d.ts +140 -0
  517. package/dist/ui/overlay/types.js +22 -0
  518. package/dist/ui/overlay-manager.d.ts +43 -0
  519. package/dist/ui/overlay-manager.js +238 -0
  520. package/dist/ui/overlays.d.ts +0 -4
  521. package/dist/ui/overlays.js +4 -460
  522. package/dist/ui/permission-overlay.d.ts +1 -1
  523. package/dist/ui/permission-overlay.js +189 -300
  524. package/dist/ui/providers/types.d.ts +178 -0
  525. package/dist/ui/providers/types.js +9 -0
  526. package/dist/ui/render-modes.d.ts +36 -0
  527. package/dist/ui/render-modes.js +44 -0
  528. package/dist/ui/startup-menu.d.ts +36 -0
  529. package/dist/ui/startup-menu.js +236 -0
  530. package/dist/ui/status-bar-controller.d.ts +33 -0
  531. package/dist/ui/status-bar-controller.js +99 -0
  532. package/dist/ui/subagent-renderer.d.ts +117 -0
  533. package/dist/ui/subagent-renderer.js +318 -0
  534. package/dist/ui/terminal-autocomplete-utils.d.ts +23 -0
  535. package/dist/ui/terminal-autocomplete-utils.js +83 -0
  536. package/dist/ui/terminal-codes.d.ts +94 -0
  537. package/dist/ui/terminal-codes.js +124 -0
  538. package/dist/ui/terminal-line-builders.d.ts +17 -0
  539. package/dist/ui/terminal-line-builders.js +42 -0
  540. package/dist/ui/terminal-render-item.d.ts +16 -0
  541. package/dist/ui/terminal-render-item.js +267 -0
  542. package/dist/ui/terminal-renderer.d.ts +220 -0
  543. package/dist/ui/terminal-renderer.js +750 -0
  544. package/dist/ui/terminal-types.d.ts +179 -0
  545. package/dist/ui/terminal-types.js +34 -0
  546. package/dist/ui/terminal-ui.d.ts +331 -0
  547. package/dist/ui/terminal-ui.js +819 -0
  548. package/dist/ui/terminal.d.ts +20 -0
  549. package/dist/ui/terminal.js +72 -0
  550. package/dist/ui/todo-zone.d.ts +19 -1
  551. package/dist/ui/todo-zone.js +124 -38
  552. package/dist/ui/tool-formatters.d.ts +16 -0
  553. package/dist/ui/tool-formatters.js +1027 -0
  554. package/dist/ui/turn-metrics.d.ts +56 -0
  555. package/dist/ui/turn-metrics.js +75 -0
  556. package/dist/ui/types.d.ts +28 -0
  557. package/dist/ui/types.js +1 -0
  558. package/dist/ui/vscode-diff-ipc.d.ts +102 -0
  559. package/dist/ui/vscode-diff-ipc.js +385 -0
  560. package/dist/utils/credentials.d.ts +24 -5
  561. package/dist/utils/credentials.js +123 -9
  562. package/dist/utils/debug-log.d.ts +28 -0
  563. package/dist/utils/debug-log.js +57 -0
  564. package/dist/utils/format-tokens.d.ts +13 -0
  565. package/dist/utils/format-tokens.js +18 -0
  566. package/dist/utils/git-config.d.ts +26 -0
  567. package/dist/utils/git-config.js +54 -0
  568. package/dist/utils/message-utils.d.ts +61 -0
  569. package/dist/utils/message-utils.js +72 -0
  570. package/dist/utils/model-tiers.d.ts +8 -1
  571. package/dist/utils/model-tiers.js +39 -17
  572. package/dist/utils/open-browser.d.ts +5 -0
  573. package/dist/utils/open-browser.js +32 -0
  574. package/dist/utils/path-safety.d.ts +56 -0
  575. package/dist/utils/path-safety.js +240 -0
  576. package/dist/utils/project-detection.d.ts +58 -0
  577. package/dist/utils/project-detection.js +424 -0
  578. package/dist/utils/project-memory.js +2 -1
  579. package/dist/utils/project-status.d.ts +2 -2
  580. package/dist/utils/startup-perf.d.ts +18 -0
  581. package/dist/utils/startup-perf.js +60 -0
  582. package/dist/utils/token-tracker.d.ts +62 -0
  583. package/dist/utils/token-tracker.js +150 -0
  584. package/dist/utils/token-types.d.ts +23 -0
  585. package/dist/utils/token-types.js +18 -0
  586. package/dist/utils/types/config-types.d.ts +32 -0
  587. package/dist/utils/types/config-types.js +8 -0
  588. package/dist/utils/update-checker.d.ts +28 -0
  589. package/dist/utils/update-checker.js +106 -0
  590. package/dist/utils/version.d.ts +7 -0
  591. package/dist/utils/version.js +10 -0
  592. package/dist/utils/vscode-detect.d.ts +39 -0
  593. package/dist/utils/vscode-detect.js +137 -0
  594. package/dist/workflow/guided-mode-injector.d.ts +42 -0
  595. package/dist/workflow/guided-mode-injector.js +191 -0
  596. package/dist/workflow/index.d.ts +8 -0
  597. package/dist/workflow/index.js +8 -0
  598. package/dist/workflow/step-criteria.d.ts +62 -0
  599. package/dist/workflow/step-criteria.js +150 -0
  600. package/dist/workflow/step-tracker.d.ts +92 -0
  601. package/dist/workflow/step-tracker.js +141 -0
  602. package/package.json +32 -12
  603. package/dist/index.old.d.ts +0 -7
  604. package/dist/index.old.js +0 -1014
  605. package/dist/repl.d.ts +0 -121
  606. package/dist/repl.js +0 -1878
  607. package/dist/templates/claude-md.d.ts +0 -7
  608. package/dist/templates/claude-md.js +0 -189
  609. package/dist/test-autocomplete.d.ts +0 -7
  610. package/dist/test-autocomplete.js +0 -85
  611. package/dist/test-tabbed-menu.d.ts +0 -7
  612. package/dist/test-tabbed-menu.js +0 -25
  613. package/dist/tool-selector.d.ts +0 -71
  614. package/dist/tool-selector.js +0 -184
  615. package/dist/ui/agents-overlay.d.ts +0 -12
  616. package/dist/ui/agents-overlay.js +0 -501
  617. package/dist/ui/arch-type-overlay.d.ts +0 -20
  618. package/dist/ui/arch-type-overlay.js +0 -229
  619. package/dist/ui/backlog-overlay.d.ts +0 -17
  620. package/dist/ui/backlog-overlay.js +0 -786
  621. package/dist/ui/commands-overlay.d.ts +0 -11
  622. package/dist/ui/commands-overlay.js +0 -410
  623. package/dist/ui/config-overlay.d.ts +0 -34
  624. package/dist/ui/config-overlay.js +0 -977
  625. package/dist/ui/init-overlay.d.ts +0 -24
  626. package/dist/ui/init-overlay.js +0 -525
  627. package/dist/ui/input-prompt-v2.d.ts +0 -179
  628. package/dist/ui/input-prompt-v2.js +0 -991
  629. package/dist/ui/model-warning-overlay.d.ts +0 -30
  630. package/dist/ui/model-warning-overlay.js +0 -171
  631. package/dist/ui/tools-overlay.d.ts +0 -26
  632. package/dist/ui/tools-overlay.js +0 -278
  633. package/dist/ui/tutorial-overlay.d.ts +0 -10
  634. package/dist/ui/tutorial-overlay.js +0 -936
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Changelog Overlay V2
3
+ *
4
+ * Browsable release notes overlay.
5
+ * Extends TabbedListOverlayV2 for consistent UI with other overlays.
6
+ *
7
+ * Features:
8
+ * - Single tab (all releases)
9
+ * - Searchable release list
10
+ * - Detail view with categorized changes (added/changed/fixed)
11
+ */
12
+ import { TabbedListOverlayV2, BaseScreen } from '../../base/index.js';
13
+ import { type Release } from '../../../changelog/releases.js';
14
+ export interface ChangelogOverlayV2Result {
15
+ viewed: boolean;
16
+ }
17
+ /**
18
+ * Release list item with tab association for filtering.
19
+ */
20
+ interface ReleaseListItem extends Release {
21
+ tabId: string;
22
+ }
23
+ /**
24
+ * Changelog overlay with release list and categorized detail views.
25
+ * Extends TabbedListOverlayV2 for consistent look with other overlays.
26
+ */
27
+ export declare class ChangelogOverlayV2 extends TabbedListOverlayV2<ReleaseListItem, ChangelogOverlayV2Result> {
28
+ readonly type: "inline";
29
+ readonly id = "changelog-overlay-v2";
30
+ constructor();
31
+ /**
32
+ * Build items on first render.
33
+ */
34
+ private buildItemsIfNeeded;
35
+ /**
36
+ * Override render to build items on first call.
37
+ */
38
+ render(context: import('../index.js').RenderContext): {
39
+ lines: string[];
40
+ minHeight?: number;
41
+ };
42
+ protected createDetailScreen(item: ReleaseListItem): BaseScreen | null;
43
+ }
44
+ export {};
@@ -0,0 +1,165 @@
1
+ /**
2
+ * Changelog Overlay V2
3
+ *
4
+ * Browsable release notes overlay.
5
+ * Extends TabbedListOverlayV2 for consistent UI with other overlays.
6
+ *
7
+ * Features:
8
+ * - Single tab (all releases)
9
+ * - Searchable release list
10
+ * - Detail view with categorized changes (added/changed/fixed)
11
+ */
12
+ import { TabbedListOverlayV2, BaseScreen, stay, popScreen, closeOverlay, isEscape, isCtrlC, isQuit, renderBorder, } from '../../base/index.js';
13
+ import { RELEASES } from '../../../changelog/releases.js';
14
+ // =============================================================================
15
+ // Constants
16
+ // =============================================================================
17
+ const PAGE_SIZE = 8;
18
+ // =============================================================================
19
+ // Detail Screen (Categorized Changes)
20
+ // =============================================================================
21
+ /**
22
+ * Shows categorized changes for a single release.
23
+ */
24
+ class ViewingScreen extends BaseScreen {
25
+ release;
26
+ styles;
27
+ getWidth;
28
+ constructor(release, styles, getWidth) {
29
+ super();
30
+ this.release = release;
31
+ this.styles = styles;
32
+ this.getWidth = getWidth;
33
+ }
34
+ getMinHeight() {
35
+ return 20;
36
+ }
37
+ render() {
38
+ const s = this.styles;
39
+ const cols = this.getWidth();
40
+ const border = renderBorder(cols, s);
41
+ const lines = [];
42
+ // Header
43
+ const titleText = `v${this.release.version} — ${this.release.date}`;
44
+ const titleStyled = s.primaryBold(titleText);
45
+ lines.push(border);
46
+ lines.push(` ${titleStyled}`);
47
+ lines.push('');
48
+ // Group changes by category
49
+ const added = this.release.changes.filter((c) => c.category === 'added');
50
+ const changed = this.release.changes.filter((c) => c.category === 'changed');
51
+ const fixed = this.release.changes.filter((c) => c.category === 'fixed');
52
+ if (added.length > 0) {
53
+ lines.push(s.secondary(' Added:'));
54
+ for (const change of added) {
55
+ lines.push(` ${s.muted('+')} ${change.text}`);
56
+ }
57
+ lines.push('');
58
+ }
59
+ if (changed.length > 0) {
60
+ lines.push(s.secondary(' Changed:'));
61
+ for (const change of changed) {
62
+ lines.push(` ${s.muted('~')} ${change.text}`);
63
+ }
64
+ lines.push('');
65
+ }
66
+ if (fixed.length > 0) {
67
+ lines.push(s.secondary(' Fixed:'));
68
+ for (const change of fixed) {
69
+ lines.push(` ${s.muted('*')} ${change.text}`);
70
+ }
71
+ lines.push('');
72
+ }
73
+ // Pad to consistent height
74
+ while (lines.length < 16) {
75
+ lines.push('');
76
+ }
77
+ // Navigation footer
78
+ lines.push(border);
79
+ lines.push(s.muted(' q/Esc back'));
80
+ return lines;
81
+ }
82
+ handleKey(data) {
83
+ // Ctrl+C closes overlay completely
84
+ if (isCtrlC(data)) {
85
+ return closeOverlay({ viewed: true });
86
+ }
87
+ // Back to release list
88
+ if (isEscape(data) || isQuit(data)) {
89
+ return popScreen();
90
+ }
91
+ return stay(false);
92
+ }
93
+ }
94
+ // =============================================================================
95
+ // Changelog Overlay V2 Class
96
+ // =============================================================================
97
+ /**
98
+ * Changelog overlay with release list and categorized detail views.
99
+ * Extends TabbedListOverlayV2 for consistent look with other overlays.
100
+ */
101
+ export class ChangelogOverlayV2 extends TabbedListOverlayV2 {
102
+ type = 'inline';
103
+ id = 'changelog-overlay-v2';
104
+ constructor() {
105
+ const tabs = [
106
+ { id: 'all', label: 'All' },
107
+ ];
108
+ super({
109
+ title: 'Changelog',
110
+ tabs,
111
+ items: [], // Will be populated on first render
112
+ pageSize: PAGE_SIZE,
113
+ filterByTab: () => true,
114
+ getSearchText: (item) => `${item.version} ${item.date} ${item.highlights.join(' ')}`,
115
+ renderItem: (item, isSelected, styles) => {
116
+ const prefix = isSelected ? styles.primary(' ► ') : ' ';
117
+ // Pad raw text BEFORE applying styles to ensure consistent column widths
118
+ const versionPadded = `v${item.version}`.padEnd(10);
119
+ const datePadded = item.date.padEnd(14);
120
+ const summary = item.highlights.slice(0, 2).join(', ');
121
+ // Apply styles after padding
122
+ const version = isSelected ? styles.primary(versionPadded) : versionPadded;
123
+ const date = styles.muted(datePadded);
124
+ const desc = styles.muted(summary);
125
+ return `${prefix}${version} ${date} ${desc}`;
126
+ },
127
+ footerHints: (searchMode) => {
128
+ if (searchMode) {
129
+ return 'Type to filter · ↑↓/jk Navigate · Enter View · Esc Exit search';
130
+ }
131
+ return '↑↓/jk · / Search · Enter View · q/Esc Close';
132
+ },
133
+ emptyMessage: 'No releases available.',
134
+ noResultsMessage: 'No releases match the search.',
135
+ showCount: false,
136
+ });
137
+ this.minHeight = 18;
138
+ }
139
+ /**
140
+ * Build items on first render.
141
+ */
142
+ buildItemsIfNeeded() {
143
+ if (this.state.items.length > 0)
144
+ return;
145
+ const items = RELEASES.map((release) => ({
146
+ ...release,
147
+ tabId: 'all',
148
+ }));
149
+ this.state.items = items;
150
+ this.state.filteredItems = [...items];
151
+ }
152
+ /**
153
+ * Override render to build items on first call.
154
+ */
155
+ render(context) {
156
+ this.styles = context.styles;
157
+ this.termWidth = context.width;
158
+ this.buildItemsIfNeeded();
159
+ return super.render(context);
160
+ }
161
+ createDetailScreen(item) {
162
+ const styles = this.getStyles();
163
+ return new ViewingScreen(item, styles, () => this.termWidth);
164
+ }
165
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Commands Overlay V2
3
+ *
4
+ * Modal overlay for viewing and managing custom command definitions.
5
+ * Uses TabbedListOverlayV2 for consistent navigation patterns.
6
+ *
7
+ * Features:
8
+ * - Tabs: All, Project, Personal
9
+ * - Search with / toggle
10
+ * - Detail view for command information
11
+ * - Wizard for creating new commands
12
+ */
13
+ import { type CustomCommand } from '../../../commands/index.js';
14
+ import { TabbedListOverlayV2, BaseScreen } from '../../base/index.js';
15
+ export interface CommandsOverlayV2Result {
16
+ /** Command that was created (if any) */
17
+ created?: string;
18
+ }
19
+ type CommandItem = CustomCommand | {
20
+ type: 'create';
21
+ };
22
+ /**
23
+ * Commands overlay using TabbedListOverlayV2.
24
+ * Displays custom commands in a searchable, tabbed list.
25
+ */
26
+ export declare class CommandsOverlayV2 extends TabbedListOverlayV2<CommandItem, CommandsOverlayV2Result> {
27
+ readonly type: "inline";
28
+ readonly id = "commands-overlay-v2";
29
+ private readonly registry;
30
+ constructor();
31
+ protected createDetailScreen(item: CommandItem): BaseScreen | null;
32
+ }
33
+ export {};
@@ -0,0 +1,439 @@
1
+ /**
2
+ * Commands Overlay V2
3
+ *
4
+ * Modal overlay for viewing and managing custom command definitions.
5
+ * Uses TabbedListOverlayV2 for consistent navigation patterns.
6
+ *
7
+ * Features:
8
+ * - Tabs: All, Project, Personal
9
+ * - Search with / toggle
10
+ * - Detail view for command information
11
+ * - Wizard for creating new commands
12
+ */
13
+ import chalk from 'chalk';
14
+ import * as terminal from '../../terminal.js';
15
+ import { getCustomCommandRegistry, } from '../../../commands/index.js';
16
+ import { TabbedListOverlayV2, BaseScreen, stay, popScreen, closeOverlay, isEscape, isEnter, isCtrlC, isNavigateUp, isNavigateDown, isBackspace, renderBorder, truncate, wrapText, } from '../../base/index.js';
17
+ import { InputFeature } from '../../features/index.js';
18
+ // =============================================================================
19
+ // Constants
20
+ // =============================================================================
21
+ const TABS = [
22
+ { id: 'all', label: 'All' },
23
+ { id: 'project', label: 'Project' },
24
+ { id: 'personal', label: 'Personal' },
25
+ ];
26
+ const PAGE_SIZE = 10;
27
+ // =============================================================================
28
+ // Helpers
29
+ // =============================================================================
30
+ function isCreateItem(item) {
31
+ return 'type' in item;
32
+ }
33
+ function buildItemsList(registry) {
34
+ const commands = registry.getAll();
35
+ return [...commands, { type: 'create' }];
36
+ }
37
+ function defaultWizardState() {
38
+ return {
39
+ step: 'location',
40
+ location: 'project',
41
+ name: '',
42
+ description: '',
43
+ prompt: '',
44
+ selectedOption: 0,
45
+ error: null,
46
+ };
47
+ }
48
+ // =============================================================================
49
+ // Detail Screen
50
+ // =============================================================================
51
+ class CommandDetailScreen extends BaseScreen {
52
+ command;
53
+ registry;
54
+ styles;
55
+ constructor(command, registry, styles) {
56
+ super();
57
+ this.command = command;
58
+ this.registry = registry;
59
+ this.styles = styles;
60
+ }
61
+ render() {
62
+ const s = this.styles;
63
+ const lines = [];
64
+ const cols = terminal.getTerminalWidth();
65
+ const border = renderBorder(cols, s);
66
+ const cmd = this.command;
67
+ // Header
68
+ lines.push(border);
69
+ lines.push(' ' + s.primaryBold('Command Details'));
70
+ lines.push('');
71
+ // Command name
72
+ lines.push(chalk.bold(` /${cmd.name}`));
73
+ lines.push('');
74
+ // Location
75
+ lines.push(' ' + s.primary('LOCATION'));
76
+ lines.push(` ${cmd.location === 'project' ? 'Project' : 'Personal'} (${cmd.location})`);
77
+ lines.push('');
78
+ // File path
79
+ lines.push(' ' + s.primary('FILE'));
80
+ const basePath = cmd.location === 'project'
81
+ ? this.registry.getProjectDir()
82
+ : this.registry.getUserDir();
83
+ lines.push(s.muted(` ${basePath}/${cmd.name}.md`));
84
+ lines.push('');
85
+ // Description
86
+ lines.push(' ' + s.primary('DESCRIPTION'));
87
+ const descLines = wrapText(cmd.description, cols - 6, ' ');
88
+ lines.push(...descLines);
89
+ lines.push('');
90
+ // Prompt
91
+ lines.push(' ' + s.primary('PROMPT TEMPLATE'));
92
+ const promptLines = wrapText(cmd.prompt, cols - 6, ' ');
93
+ lines.push(...promptLines);
94
+ lines.push('');
95
+ // Footer
96
+ lines.push(border);
97
+ lines.push(` ${s.muted('q/Esc Back')}`);
98
+ lines.push(border);
99
+ return lines;
100
+ }
101
+ handleKey(data) {
102
+ if (isCtrlC(data)) {
103
+ return closeOverlay(undefined);
104
+ }
105
+ if (isEscape(data) || data.toString() === 'q') {
106
+ return popScreen();
107
+ }
108
+ return stay(false);
109
+ }
110
+ /**
111
+ * Minimum height for stable rendering.
112
+ * Covers: header(3) + name(2) + location(3) + file(3) + desc(5) + prompt(5) + footer(3) = 24
113
+ */
114
+ getMinHeight() {
115
+ return 24;
116
+ }
117
+ }
118
+ // =============================================================================
119
+ // Wizard Screen
120
+ // =============================================================================
121
+ class WizardScreen extends BaseScreen {
122
+ registry;
123
+ styles;
124
+ state;
125
+ input;
126
+ constructor(registry, styles) {
127
+ super();
128
+ this.registry = registry;
129
+ this.styles = styles;
130
+ this.state = defaultWizardState();
131
+ this.input = new InputFeature({ placeholder: '' });
132
+ }
133
+ render() {
134
+ const s = this.styles;
135
+ const lines = [];
136
+ const cols = terminal.getTerminalWidth();
137
+ const border = renderBorder(cols, s);
138
+ lines.push(border);
139
+ lines.push(' ' + s.primaryBold('Create New Command'));
140
+ lines.push('');
141
+ switch (this.state.step) {
142
+ case 'location':
143
+ lines.push(chalk.bold(' Choose location'));
144
+ lines.push('');
145
+ lines.push(this.state.selectedOption === 0
146
+ ? s.primary(' ❯ 1. Project (.compilr-dev/commands/)')
147
+ : s.muted(' 1. Project (.compilr-dev/commands/)'));
148
+ lines.push(this.state.selectedOption === 1
149
+ ? s.primary(' ❯ 2. Personal (~/.compilr-dev/commands/)')
150
+ : s.muted(' 2. Personal (~/.compilr-dev/commands/)'));
151
+ lines.push('');
152
+ lines.push(s.muted(' Project commands are shared with your team.'));
153
+ lines.push(s.muted(' Personal commands apply to all your projects.'));
154
+ break;
155
+ case 'name':
156
+ lines.push(chalk.bold(' Command name'));
157
+ lines.push('');
158
+ lines.push(' Enter a unique name:');
159
+ lines.push(` > ${this.input.render(s)}`);
160
+ lines.push('');
161
+ if (this.state.error) {
162
+ lines.push(s.error(` ${this.state.error}`));
163
+ }
164
+ else {
165
+ lines.push(s.muted(' Use lowercase letters, numbers, hyphens (e.g., code-review)'));
166
+ lines.push(s.muted(' This becomes the command: /{name}'));
167
+ }
168
+ break;
169
+ case 'description':
170
+ lines.push(chalk.bold(' Description'));
171
+ lines.push('');
172
+ lines.push(' Enter a short description:');
173
+ lines.push(` > ${this.input.render(s)}`);
174
+ lines.push('');
175
+ lines.push(s.muted(' This is shown in the help menu.'));
176
+ break;
177
+ case 'prompt':
178
+ lines.push(chalk.bold(' Prompt template'));
179
+ lines.push('');
180
+ lines.push(' Enter the prompt to send:');
181
+ lines.push(` > ${this.input.render(s)}`);
182
+ lines.push('');
183
+ lines.push(s.muted(' Use $1, $2 for positional args, $ARGUMENTS for all args.'));
184
+ lines.push(s.muted(' Example: "Review $1 for bugs and security issues"'));
185
+ break;
186
+ case 'confirm': {
187
+ lines.push(chalk.bold(' Confirm'));
188
+ lines.push('');
189
+ lines.push(` Command: ${s.primary('/' + this.state.name)}`);
190
+ const locationPath = this.state.location === 'project'
191
+ ? '.compilr-dev/commands/'
192
+ : '~/.compilr-dev/commands/';
193
+ lines.push(` Location: ${s.primary(locationPath)}${this.state.name}.md`);
194
+ lines.push('');
195
+ lines.push(chalk.bold(' Description:'));
196
+ const descPreview = truncate(this.state.description, 60);
197
+ lines.push(s.muted(` ${descPreview}`));
198
+ lines.push('');
199
+ lines.push(chalk.bold(' Prompt template:'));
200
+ const promptPreview = truncate(this.state.prompt, 60);
201
+ lines.push(s.muted(` ${promptPreview}`));
202
+ lines.push('');
203
+ lines.push(this.state.selectedOption === 0
204
+ ? s.primary(' ❯ Save')
205
+ : s.muted(' Save'));
206
+ lines.push(this.state.selectedOption === 1
207
+ ? s.primary(' ❯ Cancel')
208
+ : s.muted(' Cancel'));
209
+ if (this.state.error) {
210
+ lines.push('');
211
+ lines.push(s.error(` ${this.state.error}`));
212
+ }
213
+ break;
214
+ }
215
+ }
216
+ lines.push('');
217
+ lines.push(border);
218
+ lines.push(` ${s.muted('Esc to go back')}`);
219
+ lines.push(border);
220
+ return lines;
221
+ }
222
+ handleKey(data) {
223
+ // Ctrl+C always closes
224
+ if (isCtrlC(data)) {
225
+ return closeOverlay(undefined);
226
+ }
227
+ // Escape goes back one step (or exits wizard)
228
+ if (isEscape(data)) {
229
+ return this.handleBack();
230
+ }
231
+ // Input steps: name, description, prompt
232
+ if (['name', 'description', 'prompt'].includes(this.state.step)) {
233
+ return this.handleInputStep(data);
234
+ }
235
+ // Selection steps: location, confirm
236
+ if (['location', 'confirm'].includes(this.state.step)) {
237
+ return this.handleSelectionStep(data);
238
+ }
239
+ return stay();
240
+ }
241
+ handleBack() {
242
+ switch (this.state.step) {
243
+ case 'location':
244
+ return popScreen();
245
+ case 'name':
246
+ this.state.step = 'location';
247
+ this.state.selectedOption = this.state.location === 'project' ? 0 : 1;
248
+ break;
249
+ case 'description':
250
+ this.state.step = 'name';
251
+ this.input.value = this.state.name;
252
+ break;
253
+ case 'prompt':
254
+ this.state.step = 'description';
255
+ this.input.value = this.state.description;
256
+ break;
257
+ case 'confirm':
258
+ this.state.step = 'prompt';
259
+ this.input.value = this.state.prompt;
260
+ break;
261
+ }
262
+ this.state.error = null;
263
+ return stay();
264
+ }
265
+ handleInputStep(data) {
266
+ if (isEnter(data)) {
267
+ const value = this.input.trimmedValue;
268
+ if (value) {
269
+ // Validate name
270
+ if (this.state.step === 'name') {
271
+ if (!/^[a-z][a-z0-9-]{1,29}$/.test(value)) {
272
+ this.state.error = 'Invalid name. Use lowercase letters, numbers, hyphens (2-30 chars).';
273
+ return stay();
274
+ }
275
+ if (this.registry.has(value)) {
276
+ this.state.error = `Command "${value}" already exists.`;
277
+ return stay();
278
+ }
279
+ }
280
+ this.advanceStep();
281
+ }
282
+ return stay();
283
+ }
284
+ if (isBackspace(data)) {
285
+ const result = this.input.handleKey(data);
286
+ if (result.handled) {
287
+ this.state.error = null;
288
+ return stay(result.render);
289
+ }
290
+ return stay(false);
291
+ }
292
+ // Regular character input
293
+ const result = this.input.handleKey(data);
294
+ if (result.handled) {
295
+ this.state.error = null;
296
+ return stay(result.render);
297
+ }
298
+ return stay(false);
299
+ }
300
+ handleSelectionStep(data) {
301
+ const maxOptions = 2;
302
+ if (isNavigateUp(data) && this.state.selectedOption > 0) {
303
+ this.state.selectedOption--;
304
+ return stay();
305
+ }
306
+ if (isNavigateDown(data) && this.state.selectedOption < maxOptions - 1) {
307
+ this.state.selectedOption++;
308
+ return stay();
309
+ }
310
+ if (isEnter(data)) {
311
+ if (this.state.step === 'confirm') {
312
+ if (this.state.selectedOption === 0) {
313
+ // Save
314
+ try {
315
+ this.registry.save({
316
+ name: this.state.name,
317
+ description: this.state.description,
318
+ prompt: this.state.prompt,
319
+ }, this.state.location);
320
+ this.registry.load();
321
+ return closeOverlay({ created: this.state.name });
322
+ }
323
+ catch (error) {
324
+ this.state.error = error.message;
325
+ return stay();
326
+ }
327
+ }
328
+ else {
329
+ return popScreen();
330
+ }
331
+ }
332
+ else {
333
+ this.advanceStep();
334
+ }
335
+ }
336
+ return stay(false);
337
+ }
338
+ advanceStep() {
339
+ switch (this.state.step) {
340
+ case 'location':
341
+ this.state.location = this.state.selectedOption === 0 ? 'project' : 'personal';
342
+ this.state.step = 'name';
343
+ this.input.clear();
344
+ break;
345
+ case 'name':
346
+ this.state.name = this.input.trimmedValue;
347
+ this.state.step = 'description';
348
+ this.input.clear();
349
+ break;
350
+ case 'description':
351
+ this.state.description = this.input.trimmedValue;
352
+ this.state.step = 'prompt';
353
+ this.input.clear();
354
+ break;
355
+ case 'prompt':
356
+ this.state.prompt = this.input.trimmedValue;
357
+ this.state.step = 'confirm';
358
+ this.state.selectedOption = 0;
359
+ break;
360
+ }
361
+ this.state.error = null;
362
+ }
363
+ /**
364
+ * Minimum height for stable rendering.
365
+ * Covers: header(3) + form fields (up to 12) + options(4) + footer(3) = 22
366
+ */
367
+ getMinHeight() {
368
+ return 22;
369
+ }
370
+ }
371
+ // =============================================================================
372
+ // Commands Overlay V2
373
+ // =============================================================================
374
+ /**
375
+ * Commands overlay using TabbedListOverlayV2.
376
+ * Displays custom commands in a searchable, tabbed list.
377
+ */
378
+ export class CommandsOverlayV2 extends TabbedListOverlayV2 {
379
+ type = 'inline';
380
+ id = 'commands-overlay-v2';
381
+ registry;
382
+ constructor() {
383
+ const registry = getCustomCommandRegistry();
384
+ registry.load();
385
+ const items = buildItemsList(registry);
386
+ super({
387
+ title: 'Custom Commands',
388
+ tabs: TABS,
389
+ items,
390
+ pageSize: PAGE_SIZE,
391
+ filterByTab: (item, tabId) => {
392
+ // "Create new command" always shows
393
+ if (isCreateItem(item))
394
+ return true;
395
+ // Filter by location
396
+ if (tabId === 'all')
397
+ return true;
398
+ return item.location === tabId;
399
+ },
400
+ getSearchText: (item) => {
401
+ if (isCreateItem(item))
402
+ return 'create new';
403
+ return `${item.name} ${item.description}`;
404
+ },
405
+ renderItem: (item, isSelected, styles) => {
406
+ const cols = terminal.getTerminalWidth();
407
+ if (isCreateItem(item)) {
408
+ return isSelected
409
+ ? styles.primary(' ❯ Create new command')
410
+ : styles.muted(' Create new command');
411
+ }
412
+ const cmd = item;
413
+ const prefix = isSelected ? styles.primary(' ❯ ') : ' ';
414
+ const name = `/${cmd.name}`;
415
+ const nameStyled = isSelected ? styles.primary(name.padEnd(25)) : name.padEnd(25);
416
+ const maxDesc = Math.max(20, cols - 45);
417
+ const desc = truncate(cmd.description, maxDesc);
418
+ const descStyled = styles.muted(desc);
419
+ const location = styles.muted(` (${cmd.location})`);
420
+ return prefix + nameStyled + descStyled + location;
421
+ },
422
+ footerHints: (searchMode) => {
423
+ if (searchMode) {
424
+ return 'Type to filter · ↑↓/jk Navigate · Enter Select · Esc Exit search';
425
+ }
426
+ return 'Tab Filter · ↑↓/jk · / Search · Enter Select · q/Esc Close';
427
+ },
428
+ emptyMessage: 'No custom commands found.',
429
+ noResultsMessage: 'No commands match the search.',
430
+ });
431
+ this.registry = registry;
432
+ }
433
+ createDetailScreen(item) {
434
+ if (isCreateItem(item)) {
435
+ return new WizardScreen(this.registry, this.getStyles());
436
+ }
437
+ return new CommandDetailScreen(item, this.registry, this.getStyles());
438
+ }
439
+ }