@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,65 @@
1
+ /**
2
+ * Overlay Lifecycle Manager
3
+ *
4
+ * Handles the common setup and cleanup operations for all overlays:
5
+ * - Raw mode management
6
+ * - Cursor visibility
7
+ * - Event listener setup/teardown
8
+ * - Line clearing on close
9
+ */
10
+ import type { OverlayConfig } from './overlay-types.js';
11
+ /**
12
+ * Callback for key data events.
13
+ */
14
+ export type KeyHandler = (data: Buffer) => void;
15
+ /**
16
+ * Manages the lifecycle of an overlay.
17
+ *
18
+ * Usage:
19
+ * ```typescript
20
+ * const lifecycle = new OverlayLifecycle(config, (data) => handleKey(data));
21
+ *
22
+ * // Setup - call before first render
23
+ * lifecycle.setup();
24
+ *
25
+ * // ... overlay logic ...
26
+ *
27
+ * // Cleanup - call when closing
28
+ * lifecycle.cleanup(lineCount);
29
+ * ```
30
+ */
31
+ export declare class OverlayLifecycle {
32
+ private readonly config;
33
+ private readonly onKey;
34
+ private wasRawMode;
35
+ private dataHandler;
36
+ private isActive;
37
+ constructor(config: OverlayConfig, onKey: KeyHandler);
38
+ /**
39
+ * Setup the overlay for interaction.
40
+ * Call this before the first render.
41
+ */
42
+ setup(): void;
43
+ /**
44
+ * Cleanup after overlay closes.
45
+ * Restores terminal state and removes event listeners.
46
+ *
47
+ * @param lineCount - Number of lines to clear (typically maxLineCount)
48
+ */
49
+ cleanup(lineCount: number): void;
50
+ /**
51
+ * Check if the lifecycle is currently active.
52
+ */
53
+ isSetUp(): boolean;
54
+ }
55
+ /**
56
+ * Create a standard overlay setup without using the class.
57
+ * Returns a cleanup function.
58
+ *
59
+ * This is useful for simple overlays that don't need the full class.
60
+ *
61
+ * @param onKey - Key handler callback
62
+ * @param config - Optional configuration
63
+ * @returns Cleanup function
64
+ */
65
+ export declare function setupOverlay(onKey: KeyHandler, config?: OverlayConfig): (lineCount?: number) => void;
@@ -0,0 +1,159 @@
1
+ /**
2
+ * Overlay Lifecycle Manager
3
+ *
4
+ * Handles the common setup and cleanup operations for all overlays:
5
+ * - Raw mode management
6
+ * - Cursor visibility
7
+ * - Event listener setup/teardown
8
+ * - Line clearing on close
9
+ */
10
+ import * as terminal from '../terminal.js';
11
+ import { pauseForOverlay, resumeAfterOverlay } from '../overlay-controller.js';
12
+ import { debugLog } from '../../utils/debug-log.js';
13
+ // =============================================================================
14
+ // OverlayLifecycle Class
15
+ // =============================================================================
16
+ /**
17
+ * Manages the lifecycle of an overlay.
18
+ *
19
+ * Usage:
20
+ * ```typescript
21
+ * const lifecycle = new OverlayLifecycle(config, (data) => handleKey(data));
22
+ *
23
+ * // Setup - call before first render
24
+ * lifecycle.setup();
25
+ *
26
+ * // ... overlay logic ...
27
+ *
28
+ * // Cleanup - call when closing
29
+ * lifecycle.cleanup(lineCount);
30
+ * ```
31
+ */
32
+ export class OverlayLifecycle {
33
+ config;
34
+ onKey;
35
+ wasRawMode = false;
36
+ dataHandler = null;
37
+ isActive = false;
38
+ constructor(config, onKey) {
39
+ this.config = config;
40
+ this.onKey = onKey;
41
+ }
42
+ // ===========================================================================
43
+ // Public Methods
44
+ // ===========================================================================
45
+ /**
46
+ * Setup the overlay for interaction.
47
+ * Call this before the first render.
48
+ */
49
+ setup() {
50
+ if (this.isActive) {
51
+ return; // Already set up
52
+ }
53
+ debugLog('OverlayLifecycle:setup', 'start');
54
+ // Pause footer animation and clear it
55
+ // This is done HERE (not in REPL) so constructor I/O doesn't cause blank screen
56
+ pauseForOverlay();
57
+ debugLog('OverlayLifecycle:setup', 'footer paused');
58
+ // Save current raw mode state
59
+ this.wasRawMode = process.stdin.isRaw;
60
+ // Enter raw mode for character-by-character input
61
+ terminal.enableRawMode();
62
+ // Hide cursor (unless config says not to)
63
+ if (this.config.hideCursor !== false) {
64
+ terminal.hideCursor();
65
+ }
66
+ // Setup key handler
67
+ this.dataHandler = (data) => {
68
+ if (this.isActive) {
69
+ this.onKey(data);
70
+ }
71
+ };
72
+ process.stdin.on('data', this.dataHandler);
73
+ this.isActive = true;
74
+ debugLog('OverlayLifecycle:setup', 'done');
75
+ }
76
+ /**
77
+ * Cleanup after overlay closes.
78
+ * Restores terminal state and removes event listeners.
79
+ *
80
+ * @param lineCount - Number of lines to clear (typically maxLineCount)
81
+ */
82
+ cleanup(lineCount) {
83
+ if (!this.isActive) {
84
+ return; // Already cleaned up
85
+ }
86
+ debugLog('OverlayLifecycle:cleanup', 'start');
87
+ this.isActive = false;
88
+ // Remove event listener
89
+ if (this.dataHandler) {
90
+ process.stdin.removeListener('data', this.dataHandler);
91
+ this.dataHandler = null;
92
+ }
93
+ // Clear the overlay content
94
+ if (lineCount > 0) {
95
+ terminal.clearLinesAbove(lineCount);
96
+ }
97
+ // Restore cursor visibility
98
+ if (this.config.hideCursor !== false) {
99
+ terminal.showCursor();
100
+ }
101
+ // Restore raw mode state
102
+ if (!this.wasRawMode) {
103
+ terminal.disableRawMode();
104
+ }
105
+ // Resume footer animation
106
+ resumeAfterOverlay();
107
+ debugLog('OverlayLifecycle:cleanup', 'footer resumed');
108
+ }
109
+ /**
110
+ * Check if the lifecycle is currently active.
111
+ */
112
+ isSetUp() {
113
+ return this.isActive;
114
+ }
115
+ }
116
+ // =============================================================================
117
+ // Standalone Helper Functions
118
+ // =============================================================================
119
+ /**
120
+ * Create a standard overlay setup without using the class.
121
+ * Returns a cleanup function.
122
+ *
123
+ * This is useful for simple overlays that don't need the full class.
124
+ *
125
+ * @param onKey - Key handler callback
126
+ * @param config - Optional configuration
127
+ * @returns Cleanup function
128
+ */
129
+ export function setupOverlay(onKey, config = {}) {
130
+ const wasRawMode = process.stdin.isRaw;
131
+ // Pause footer animation and clear it
132
+ pauseForOverlay();
133
+ // Enter raw mode
134
+ terminal.enableRawMode();
135
+ // Hide cursor
136
+ if (config.hideCursor !== false) {
137
+ terminal.hideCursor();
138
+ }
139
+ // Setup handler
140
+ const dataHandler = (data) => {
141
+ onKey(data);
142
+ };
143
+ process.stdin.on('data', dataHandler);
144
+ // Return cleanup function
145
+ return (lineCount = 0) => {
146
+ process.stdin.removeListener('data', dataHandler);
147
+ if (lineCount > 0) {
148
+ terminal.clearLinesAbove(lineCount);
149
+ }
150
+ if (config.hideCursor !== false) {
151
+ terminal.showCursor();
152
+ }
153
+ if (!wasRawMode) {
154
+ terminal.disableRawMode();
155
+ }
156
+ // Resume footer animation
157
+ resumeAfterOverlay();
158
+ };
159
+ }
@@ -0,0 +1,185 @@
1
+ /**
2
+ * Overlay Type Definitions
3
+ *
4
+ * Core interfaces and types for the overlay system.
5
+ * These provide the foundation for BaseOverlay and composable features.
6
+ */
7
+ /**
8
+ * Result of handling a key press within a feature or overlay.
9
+ *
10
+ * - `handled: false` - Key was not handled, try next handler
11
+ * - `handled: true` - Key was handled
12
+ * - `action: 'render'` - State changed, re-render needed
13
+ * - `action: 'close'` - Overlay should close
14
+ * - No action - Key was consumed but no visual change
15
+ */
16
+ export type KeyResult = {
17
+ handled: false;
18
+ } | {
19
+ handled: true;
20
+ action?: 'render' | 'close';
21
+ };
22
+ /**
23
+ * Result of handling a key press within a screen.
24
+ *
25
+ * - `action: 'stay'` - Stay on current screen (optionally re-render)
26
+ * - `action: 'push'` - Push a new screen onto the stack
27
+ * - `action: 'pop'` - Go back to previous screen
28
+ * - `action: 'close'` - Close the entire overlay with a result
29
+ */
30
+ export type ScreenResult<TResult = unknown> = {
31
+ action: 'stay';
32
+ render?: boolean;
33
+ } | {
34
+ action: 'push';
35
+ screen: BaseScreenInterface;
36
+ } | {
37
+ action: 'pop';
38
+ } | {
39
+ action: 'close';
40
+ result: TResult;
41
+ };
42
+ /**
43
+ * Base state that all overlays must include.
44
+ * Tracks line counts for proper terminal clearing.
45
+ */
46
+ export interface OverlayState {
47
+ /** Current rendered line count */
48
+ lineCount: number;
49
+ /** Maximum line count seen (for clearing) */
50
+ maxLineCount: number;
51
+ }
52
+ /**
53
+ * State for list-based selection.
54
+ */
55
+ export interface ListState {
56
+ /** Currently selected index */
57
+ selectedIndex: number;
58
+ }
59
+ /**
60
+ * State for tabbed overlays.
61
+ */
62
+ export interface TabState {
63
+ /** Current tab index (0-based) */
64
+ currentTab: number;
65
+ }
66
+ /**
67
+ * State for paginated overlays.
68
+ */
69
+ export interface PaginationState {
70
+ /** Current page (0-based) */
71
+ currentPage: number;
72
+ /** Items per page */
73
+ pageSize: number;
74
+ /** Total number of items */
75
+ totalItems: number;
76
+ }
77
+ /**
78
+ * State for text input.
79
+ */
80
+ export interface InputState {
81
+ /** Current input buffer */
82
+ inputBuffer: string;
83
+ /** Whether input mode is active */
84
+ isInputMode: boolean;
85
+ /** Validation error message (if any) */
86
+ error?: string | null;
87
+ }
88
+ /**
89
+ * State for search functionality.
90
+ */
91
+ export interface SearchState {
92
+ /** Current search query */
93
+ searchQuery: string;
94
+ /** Whether search mode is active */
95
+ isSearchMode: boolean;
96
+ }
97
+ /**
98
+ * Configuration options for an overlay.
99
+ */
100
+ export interface OverlayConfig {
101
+ /** Minimum height in lines (for consistent sizing) */
102
+ minHeight?: number;
103
+ /** Whether to show border (default: true) */
104
+ showBorder?: boolean;
105
+ /** Whether to hide cursor during overlay (default: true) */
106
+ hideCursor?: boolean;
107
+ /** Whether to enable vim-style navigation (default: true) */
108
+ enableVimNav?: boolean;
109
+ /** Whether to enable number keys for tabs (default: true for tabbed overlays) */
110
+ enableNumberKeys?: boolean;
111
+ }
112
+ /**
113
+ * Tab definition for tabbed overlays.
114
+ */
115
+ export interface TabDefinition {
116
+ /** Unique identifier for the tab */
117
+ id: string;
118
+ /** Display label */
119
+ label: string;
120
+ /** Optional keyboard shortcut (1-9) */
121
+ shortcut?: number;
122
+ }
123
+ /**
124
+ * Interface for composable features.
125
+ * Features handle specific aspects of overlay behavior (list, tabs, pagination, etc.)
126
+ */
127
+ export interface Feature<TState = unknown> {
128
+ /**
129
+ * Handle a key press.
130
+ * @param data - Raw key buffer
131
+ * @param state - Current state (feature-specific portion)
132
+ * @returns KeyResult if handled, null if not handled
133
+ */
134
+ handleKey(data: Buffer, state: TState): KeyResult | null;
135
+ /**
136
+ * Optional render method for feature-specific content.
137
+ * @param state - Current state
138
+ * @returns Array of lines to render
139
+ */
140
+ render?(state: TState): string[];
141
+ }
142
+ /**
143
+ * Interface for screens in a multi-screen overlay.
144
+ */
145
+ export interface BaseScreenInterface {
146
+ /**
147
+ * Render the screen content.
148
+ * @returns Array of lines to render
149
+ */
150
+ render(): string[];
151
+ /**
152
+ * Handle a key press.
153
+ * @param data - Raw key buffer
154
+ * @returns ScreenResult indicating what action to take
155
+ */
156
+ handleKey(data: Buffer): ScreenResult;
157
+ /**
158
+ * Optional lifecycle hook called when screen becomes active.
159
+ */
160
+ onEnter?(): void;
161
+ /**
162
+ * Optional lifecycle hook called when screen is deactivated.
163
+ */
164
+ onExit?(): void;
165
+ /**
166
+ * Optional: Return minimum height for stable rendering.
167
+ * Override to prevent visual jitter when screen content varies.
168
+ */
169
+ getMinHeight?(): number;
170
+ }
171
+ /**
172
+ * Options for rendering an item in a list.
173
+ */
174
+ export interface ListItemRenderOptions<T> {
175
+ /** The item to render */
176
+ item: T;
177
+ /** Whether this item is selected */
178
+ isSelected: boolean;
179
+ /** Index in the list */
180
+ index: number;
181
+ }
182
+ /**
183
+ * Function type for custom list item rendering.
184
+ */
185
+ export type ListItemRenderer<T> = (options: ListItemRenderOptions<T>) => string;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Overlay Type Definitions
3
+ *
4
+ * Core interfaces and types for the overlay system.
5
+ * These provide the foundation for BaseOverlay and composable features.
6
+ */
7
+ export {};
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Render Utilities
3
+ *
4
+ * Re-exported from @compilr-dev/ui-core for consistency.
5
+ * CLI-specific aliases provided for backward compatibility.
6
+ */
7
+ export { renderBorder, wrapText, truncatePlain, truncateAnsi, normalizeText, padToHeight, emptyLines, padToWidth, } from '@compilr-dev/ui-core/utils';
8
+ export { truncatePlain as truncate } from '@compilr-dev/ui-core/utils';
9
+ import type { ThemeStyleFunctions } from '../../themes/index.js';
10
+ /**
11
+ * Render a progress bar with color coding.
12
+ *
13
+ * Color thresholds: >0.8 = error, >0.6 = warning, else success.
14
+ *
15
+ * @param ratio - Fill ratio (0-1, clamped)
16
+ * @param width - Width of the bar in characters
17
+ * @param s - Theme style functions for coloring
18
+ * @returns Colored bar string (no percentage text appended — caller adds if needed)
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * const bar = renderProgressBar(0.75, 20, styles);
23
+ * // Returns: "████████████████░░░░" (colored based on ratio)
24
+ * ```
25
+ */
26
+ export declare function renderProgressBar(ratio: number, width: number, s: ThemeStyleFunctions): string;
27
+ export { formatTokens } from '../../utils/format-tokens.js';
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Render Utilities
3
+ *
4
+ * Re-exported from @compilr-dev/ui-core for consistency.
5
+ * CLI-specific aliases provided for backward compatibility.
6
+ */
7
+ export { renderBorder, wrapText, truncatePlain, truncateAnsi, normalizeText, padToHeight, emptyLines, padToWidth, } from '@compilr-dev/ui-core/utils';
8
+ // Re-export truncatePlain as truncate for CLI compatibility
9
+ // (ui-core's truncate in ansi.ts is ANSI-aware with '...' suffix,
10
+ // CLI expects plain text truncate with '…' suffix)
11
+ export { truncatePlain as truncate } from '@compilr-dev/ui-core/utils';
12
+ /**
13
+ * Render a progress bar with color coding.
14
+ *
15
+ * Color thresholds: >0.8 = error, >0.6 = warning, else success.
16
+ *
17
+ * @param ratio - Fill ratio (0-1, clamped)
18
+ * @param width - Width of the bar in characters
19
+ * @param s - Theme style functions for coloring
20
+ * @returns Colored bar string (no percentage text appended — caller adds if needed)
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * const bar = renderProgressBar(0.75, 20, styles);
25
+ * // Returns: "████████████████░░░░" (colored based on ratio)
26
+ * ```
27
+ */
28
+ export function renderProgressBar(ratio, width, s) {
29
+ const clamped = Math.max(0, Math.min(1, ratio));
30
+ const filled = Math.round(clamped * width);
31
+ const empty = width - filled;
32
+ const colorFn = clamped > 0.8 ? s.error : clamped > 0.6 ? s.warning : s.success;
33
+ return colorFn('█'.repeat(filled)) + s.muted('░'.repeat(empty));
34
+ }
35
+ // Re-export formatTokens from utils for backward compatibility
36
+ export { formatTokens } from '../../utils/format-tokens.js';
@@ -0,0 +1,148 @@
1
+ /**
2
+ * Screen Stack
3
+ *
4
+ * Navigation stack for multi-screen overlays.
5
+ * Enables proper "back" behavior where Esc goes to previous screen.
6
+ *
7
+ * Usage:
8
+ * ```typescript
9
+ * class MyOverlay extends BaseOverlay<MyState, MyResult> {
10
+ * private screenStack = new ScreenStack();
11
+ *
12
+ * constructor() {
13
+ * super(initialState);
14
+ * this.screenStack.push(new ListScreen());
15
+ * }
16
+ *
17
+ * handleKey(data: Buffer): void {
18
+ * if (isEscape(data)) {
19
+ * if (this.screenStack.size() > 1) {
20
+ * this.screenStack.pop();
21
+ * this.update();
22
+ * } else {
23
+ * this.close(null);
24
+ * }
25
+ * return;
26
+ * }
27
+ *
28
+ * const result = this.screenStack.current()?.handleKey(data);
29
+ * this.handleScreenResult(result);
30
+ * }
31
+ *
32
+ * render(): string[] {
33
+ * return [
34
+ * ...this.renderHeader('My Overlay'),
35
+ * ...this.screenStack.current()?.render() ?? [],
36
+ * ...this.renderFooter(this.getCurrentHints())
37
+ * ];
38
+ * }
39
+ * }
40
+ * ```
41
+ */
42
+ import type { BaseScreenInterface, ScreenResult } from './overlay-types.js';
43
+ export type { BaseScreenInterface, ScreenResult };
44
+ /**
45
+ * Abstract base class for screens.
46
+ * Extend this to create screens for multi-screen overlays.
47
+ */
48
+ export declare abstract class BaseScreen implements BaseScreenInterface {
49
+ /**
50
+ * Render the screen content.
51
+ * @returns Array of lines to render
52
+ */
53
+ abstract render(): string[];
54
+ /**
55
+ * Handle a key press.
56
+ * @param data - Raw key buffer
57
+ * @returns ScreenResult indicating what action to take
58
+ */
59
+ abstract handleKey(data: Buffer): ScreenResult;
60
+ /**
61
+ * Optional lifecycle hook called when screen becomes active.
62
+ * Override to perform setup when navigating to this screen.
63
+ */
64
+ onEnter?(): void;
65
+ /**
66
+ * Optional lifecycle hook called when screen is deactivated.
67
+ * Override to perform cleanup when navigating away.
68
+ */
69
+ onExit?(): void;
70
+ /**
71
+ * Optional: Return minimum height for stable rendering.
72
+ * Override to prevent visual jitter when screen content varies.
73
+ * @returns Minimum number of lines this screen should occupy
74
+ */
75
+ getMinHeight(): number;
76
+ }
77
+ /**
78
+ * Stack-based navigation for multi-screen overlays.
79
+ *
80
+ * The stack maintains a history of screens, allowing:
81
+ * - push() to navigate forward to a new screen
82
+ * - pop() to go back to the previous screen
83
+ * - current() to get the active screen
84
+ */
85
+ export declare class ScreenStack {
86
+ private readonly screens;
87
+ /**
88
+ * Push a new screen onto the stack.
89
+ * Calls onExit() on current screen and onEnter() on new screen.
90
+ *
91
+ * @param screen - Screen to push
92
+ */
93
+ push(screen: BaseScreenInterface): void;
94
+ /**
95
+ * Pop the current screen and return to the previous one.
96
+ * Calls onExit() on popped screen and onEnter() on revealed screen.
97
+ *
98
+ * @returns The popped screen, or null if stack was empty
99
+ */
100
+ pop(): BaseScreenInterface | null;
101
+ /**
102
+ * Get the current (topmost) screen.
103
+ *
104
+ * @returns Current screen, or undefined if stack is empty
105
+ */
106
+ current(): BaseScreenInterface | undefined;
107
+ /**
108
+ * Get the number of screens in the stack.
109
+ */
110
+ size(): number;
111
+ /**
112
+ * Check if the stack is empty.
113
+ */
114
+ isEmpty(): boolean;
115
+ /**
116
+ * Check if there's more than one screen (can go back).
117
+ */
118
+ canGoBack(): boolean;
119
+ /**
120
+ * Clear all screens from the stack.
121
+ * Calls onExit() on each screen in reverse order.
122
+ */
123
+ clear(): void;
124
+ /**
125
+ * Replace the current screen with a new one.
126
+ * Useful for "replace" navigation (no back).
127
+ *
128
+ * @param screen - Screen to replace with
129
+ */
130
+ replace(screen: BaseScreenInterface): void;
131
+ }
132
+ /**
133
+ * Helper to create a ScreenResult for staying on the current screen.
134
+ */
135
+ export declare function stay(render?: boolean): ScreenResult;
136
+ /**
137
+ * Helper to create a ScreenResult for pushing a new screen.
138
+ */
139
+ export declare function pushScreen(screen: BaseScreenInterface): ScreenResult;
140
+ /**
141
+ * Helper to create a ScreenResult for popping the current screen.
142
+ */
143
+ export declare function popScreen(): ScreenResult;
144
+ /**
145
+ * Helper to create a ScreenResult for closing the overlay.
146
+ * Result is optional for void result types.
147
+ */
148
+ export declare function closeOverlay<T = void>(result?: T): ScreenResult<T>;