@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,178 @@
1
+ /**
2
+ * Content Provider Interfaces
3
+ *
4
+ * Components implement these interfaces to provide content for rendering.
5
+ * The TerminalRenderer collects lines from providers and writes to terminal.
6
+ *
7
+ * Key principle: Providers return string[], never write to terminal directly.
8
+ */
9
+ /**
10
+ * Base interface for all content providers.
11
+ * Returns lines to render. Empty array = nothing to show.
12
+ */
13
+ export interface ContentProvider {
14
+ /** Returns lines to render. Empty array = nothing to show */
15
+ getLines(): string[];
16
+ /** Optional: get cursor position within this component's content */
17
+ getCursorPosition?(): CursorPosition | null;
18
+ /** Optional: does this provider need keyboard input? */
19
+ hasKeyboardFocus?(): boolean;
20
+ }
21
+ /**
22
+ * Cursor position within rendered content
23
+ */
24
+ export interface CursorPosition {
25
+ /** Row within the provider's content (0-indexed) */
26
+ row: number;
27
+ /** Column within the row (0-indexed) */
28
+ col: number;
29
+ }
30
+ /**
31
+ * Menu options available in startup menu
32
+ */
33
+ export type MenuOption = 'init' | 'projects' | 'continue' | 'chat' | 'config' | 'help' | 'exit';
34
+ /**
35
+ * Actions from menu keyboard handling
36
+ */
37
+ export type MenuAction = 'up' | 'down' | 'select' | 'exit' | null;
38
+ /**
39
+ * Provider for the startup menu (MENU mode)
40
+ */
41
+ export interface MenuProvider extends ContentProvider {
42
+ /** Returns full menu screen content */
43
+ getLines(): string[];
44
+ /** Handle keyboard input, return action taken */
45
+ handleKey(key: Buffer): MenuAction;
46
+ /** Get currently selected menu option */
47
+ getSelectedOption(): MenuOption;
48
+ /** Get highlighted index (for rendering) */
49
+ getHighlightedIndex(): number;
50
+ }
51
+ /**
52
+ * Provider for subagent status display
53
+ */
54
+ export interface SubagentProvider extends ContentProvider {
55
+ /** Returns subagent status lines (empty if no active subagents) */
56
+ getLines(): string[];
57
+ /** Check if any subagent is currently active */
58
+ hasActiveSubagent(): boolean;
59
+ }
60
+ /**
61
+ * Provider for spinner/progress display
62
+ */
63
+ export interface SpinnerProvider extends ContentProvider {
64
+ /** Returns spinner line when agent is running (empty when idle) */
65
+ getLines(): string[];
66
+ /** Check if agent is currently running */
67
+ isAgentRunning(): boolean;
68
+ }
69
+ /**
70
+ * Provider for todo list display
71
+ */
72
+ export interface TodoProvider extends ContentProvider {
73
+ /** Returns todo list (empty when agent running or no todos) */
74
+ getLines(): string[];
75
+ /** Get count of todos */
76
+ getTodoCount(): number;
77
+ }
78
+ /**
79
+ * Provider for queued messages display
80
+ */
81
+ export interface QueueProvider extends ContentProvider {
82
+ /** Returns queued messages (empty if none) */
83
+ getLines(): string[];
84
+ /** Get count of queued messages */
85
+ getQueueCount(): number;
86
+ }
87
+ /**
88
+ * Actions from input keyboard handling
89
+ */
90
+ export type InputAction = {
91
+ type: 'submit';
92
+ value: string;
93
+ } | {
94
+ type: 'command';
95
+ value: string;
96
+ } | {
97
+ type: 'cancel';
98
+ } | {
99
+ type: 'change';
100
+ } | {
101
+ type: 'escape';
102
+ } | null;
103
+ /**
104
+ * Provider for input prompt
105
+ */
106
+ export interface InputProvider extends ContentProvider {
107
+ /** Returns separator + input prompt lines (may be multi-line) */
108
+ getLines(): string[];
109
+ /** Get cursor position within input content */
110
+ getCursorPosition(): CursorPosition;
111
+ /** Handle keyboard input, return action taken */
112
+ handleKey(key: Buffer): InputAction;
113
+ /** Get current input value */
114
+ getValue(): string;
115
+ /** Set input value programmatically */
116
+ setValue(value: string): void;
117
+ /** Clear input */
118
+ clear(): void;
119
+ /** Is input in queue mode (typing queued while agent runs) */
120
+ isQueueMode(): boolean;
121
+ }
122
+ /**
123
+ * Provider for mode indicator line
124
+ */
125
+ export interface ModeProvider extends ContentProvider {
126
+ /** Returns mode indicator line */
127
+ getLines(): string[];
128
+ /** Get current mode name */
129
+ getModeName(): string;
130
+ }
131
+ /**
132
+ * Actions from overlay keyboard handling
133
+ */
134
+ export type OverlayAction = {
135
+ type: 'close';
136
+ } | {
137
+ type: 'close';
138
+ result: unknown;
139
+ } | {
140
+ type: 'navigate';
141
+ direction: 'up' | 'down' | 'left' | 'right';
142
+ } | {
143
+ type: 'select';
144
+ } | {
145
+ type: 'scroll';
146
+ direction: 'up' | 'down';
147
+ } | {
148
+ type: 'tab';
149
+ direction: 'next' | 'prev';
150
+ } | null;
151
+ /**
152
+ * Provider for full-screen overlays
153
+ */
154
+ export interface OverlayProvider extends ContentProvider {
155
+ /** Returns full overlay content */
156
+ getLines(): string[];
157
+ /** Check if overlay is active */
158
+ isActive(): boolean;
159
+ /** Handle keyboard input, return action taken */
160
+ handleKey(key: Buffer): OverlayAction;
161
+ /** Get cursor position if overlay needs visible cursor */
162
+ getCursorPosition(): CursorPosition | null;
163
+ /** Get overlay title (for header) */
164
+ getTitle(): string;
165
+ }
166
+ /**
167
+ * All providers needed by TerminalRenderer
168
+ */
169
+ export interface ProviderRegistry {
170
+ menu?: MenuProvider;
171
+ subagent?: SubagentProvider;
172
+ spinner?: SpinnerProvider;
173
+ todo?: TodoProvider;
174
+ queue?: QueueProvider;
175
+ input?: InputProvider;
176
+ mode?: ModeProvider;
177
+ overlay?: OverlayProvider;
178
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Content Provider Interfaces
3
+ *
4
+ * Components implement these interfaces to provide content for rendering.
5
+ * The TerminalRenderer collects lines from providers and writes to terminal.
6
+ *
7
+ * Key principle: Providers return string[], never write to terminal directly.
8
+ */
9
+ export {};
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Render Modes
3
+ *
4
+ * The terminal operates in one of three mutually exclusive modes.
5
+ * Each mode has different rendering behavior and keyboard handling.
6
+ */
7
+ /**
8
+ * Terminal render modes
9
+ *
10
+ * MENU: Full-screen startup menu (no scroll regions)
11
+ * REPL: Scroll zone + footer (normal chat mode)
12
+ * OVERLAY: Full-screen overlay (config, backlog, permissions)
13
+ */
14
+ export declare enum RenderMode {
15
+ MENU = "MENU",
16
+ REPL = "REPL",
17
+ OVERLAY = "OVERLAY"
18
+ }
19
+ /**
20
+ * Mode transition events for debugging/logging
21
+ */
22
+ export interface ModeTransition {
23
+ from: RenderMode;
24
+ to: RenderMode;
25
+ reason: string;
26
+ timestamp: number;
27
+ }
28
+ /**
29
+ * Valid mode transitions
30
+ *
31
+ * MENU -> REPL: User selects option (init, chat, continue, etc.)
32
+ * REPL -> OVERLAY: User triggers overlay (/config, /backlog, permission)
33
+ * OVERLAY -> REPL: User closes overlay (Esc, Enter, etc.)
34
+ * REPL -> MENU: User runs /menu command
35
+ */
36
+ export declare function isValidTransition(from: RenderMode, to: RenderMode): boolean;
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Render Modes
3
+ *
4
+ * The terminal operates in one of three mutually exclusive modes.
5
+ * Each mode has different rendering behavior and keyboard handling.
6
+ */
7
+ /**
8
+ * Terminal render modes
9
+ *
10
+ * MENU: Full-screen startup menu (no scroll regions)
11
+ * REPL: Scroll zone + footer (normal chat mode)
12
+ * OVERLAY: Full-screen overlay (config, backlog, permissions)
13
+ */
14
+ export var RenderMode;
15
+ (function (RenderMode) {
16
+ RenderMode["MENU"] = "MENU";
17
+ RenderMode["REPL"] = "REPL";
18
+ RenderMode["OVERLAY"] = "OVERLAY";
19
+ })(RenderMode || (RenderMode = {}));
20
+ /**
21
+ * Valid mode transitions
22
+ *
23
+ * MENU -> REPL: User selects option (init, chat, continue, etc.)
24
+ * REPL -> OVERLAY: User triggers overlay (/config, /backlog, permission)
25
+ * OVERLAY -> REPL: User closes overlay (Esc, Enter, etc.)
26
+ * REPL -> MENU: User runs /menu command
27
+ */
28
+ export function isValidTransition(from, to) {
29
+ if (from === to)
30
+ return false;
31
+ switch (from) {
32
+ case RenderMode.MENU:
33
+ // Menu can go to REPL (user selects option) or OVERLAY (e.g., config from menu)
34
+ return to === RenderMode.REPL || to === RenderMode.OVERLAY;
35
+ case RenderMode.REPL:
36
+ // REPL can go to OVERLAY (modal opened) or MENU (/menu command)
37
+ return to === RenderMode.OVERLAY || to === RenderMode.MENU;
38
+ case RenderMode.OVERLAY:
39
+ // Overlay can go back to REPL (closed) or MENU (rare, but valid)
40
+ return to === RenderMode.REPL || to === RenderMode.MENU;
41
+ default:
42
+ return false;
43
+ }
44
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Startup Menu Overlay
3
+ *
4
+ * Provides a guided entry point for users with options to:
5
+ * - Start a new project (/new)
6
+ * - View & manage projects (/projects)
7
+ * - Continue last project
8
+ * - Free-form chat
9
+ * - Configure settings
10
+ * - Show help
11
+ * - Exit
12
+ *
13
+ * Inspired by ATLAS CLI interactiveMenu()
14
+ */
15
+ export type MenuOption = 'init' | 'projects' | 'continue' | 'chat' | 'config' | 'help' | 'exit';
16
+ export interface StartupMenuResult {
17
+ action: MenuOption;
18
+ project?: {
19
+ id: number;
20
+ name: string;
21
+ displayName: string;
22
+ path: string;
23
+ };
24
+ }
25
+ /**
26
+ * Show the startup menu and return the user's choice
27
+ */
28
+ export declare function showStartupMenu(version: string): Promise<StartupMenuResult>;
29
+ /**
30
+ * Find the last active project for the "continue" option
31
+ */
32
+ export declare function findLastActiveProject(): {
33
+ id: number;
34
+ name: string;
35
+ path: string;
36
+ } | null;
@@ -0,0 +1,236 @@
1
+ /**
2
+ * Startup Menu Overlay
3
+ *
4
+ * Provides a guided entry point for users with options to:
5
+ * - Start a new project (/new)
6
+ * - View & manage projects (/projects)
7
+ * - Continue last project
8
+ * - Free-form chat
9
+ * - Configure settings
10
+ * - Show help
11
+ * - Exit
12
+ *
13
+ * Inspired by ATLAS CLI interactiveMenu()
14
+ */
15
+ import { getStyles } from '../themes/index.js';
16
+ import * as terminal from './terminal.js';
17
+ import { projectRepository } from '../db/repositories/index.js';
18
+ import { setActiveProject } from '../tools/project-db.js';
19
+ import { printLogo } from './conversation.js';
20
+ // =============================================================================
21
+ // Menu Options
22
+ // =============================================================================
23
+ function getMenuOptions(hasLastProject, lastProjectName) {
24
+ return [
25
+ {
26
+ key: 'init',
27
+ label: 'init',
28
+ description: 'Start a new project',
29
+ },
30
+ {
31
+ key: 'projects',
32
+ label: 'projects',
33
+ description: 'View & manage projects',
34
+ },
35
+ {
36
+ key: 'continue',
37
+ label: 'continue',
38
+ description: hasLastProject
39
+ ? `Resume: ${lastProjectName ?? 'project'}`
40
+ : 'No recent project',
41
+ disabled: !hasLastProject,
42
+ },
43
+ {
44
+ key: 'chat',
45
+ label: 'chat',
46
+ description: 'Free-form AI chat',
47
+ },
48
+ {
49
+ key: 'config',
50
+ label: 'config',
51
+ description: 'Configure settings',
52
+ },
53
+ {
54
+ key: 'help',
55
+ label: 'help',
56
+ description: 'Show help and shortcuts',
57
+ },
58
+ {
59
+ key: 'exit',
60
+ label: 'exit',
61
+ description: 'Exit CLI',
62
+ },
63
+ ];
64
+ }
65
+ // =============================================================================
66
+ // Rendering
67
+ // =============================================================================
68
+ function renderMenu(state) {
69
+ const s = getStyles();
70
+ const lines = [];
71
+ lines.push('');
72
+ lines.push(' What would you like to do?');
73
+ lines.push('');
74
+ // Menu options - left-aligned like /config overlay
75
+ const labelWidth = 14;
76
+ for (let i = 0; i < state.options.length; i++) {
77
+ const opt = state.options[i];
78
+ const isSelected = i === state.selectedIndex;
79
+ const prefix = isSelected ? s.primary(' ❯ ') : ' ';
80
+ const rawLabel = opt.label.padEnd(labelWidth);
81
+ const rawDesc = opt.description;
82
+ let label;
83
+ let description;
84
+ if (opt.disabled) {
85
+ label = s.muted(rawLabel);
86
+ description = s.muted(rawDesc);
87
+ }
88
+ else if (isSelected) {
89
+ label = s.primary(rawLabel);
90
+ description = s.foreground(rawDesc);
91
+ }
92
+ else {
93
+ label = s.foreground(rawLabel);
94
+ description = s.muted(rawDesc);
95
+ }
96
+ lines.push(prefix + label + description);
97
+ }
98
+ lines.push('');
99
+ lines.push(s.muted(' ↑/↓: navigate Enter: select'));
100
+ return lines;
101
+ }
102
+ // =============================================================================
103
+ // Main Function
104
+ // =============================================================================
105
+ /**
106
+ * Show the startup menu and return the user's choice
107
+ */
108
+ export async function showStartupMenu(version) {
109
+ return new Promise((resolve) => {
110
+ // Check for last active project
111
+ let lastProject = null;
112
+ try {
113
+ const result = projectRepository.list({ status: 'active', limit: 1 });
114
+ if (result.projects.length > 0) {
115
+ const p = result.projects[0];
116
+ lastProject = { id: p.id, name: p.name, displayName: p.displayName, path: p.path };
117
+ }
118
+ }
119
+ catch {
120
+ // DB might not exist yet
121
+ }
122
+ const hasLastProject = lastProject !== null;
123
+ const lastProjectName = lastProject?.displayName;
124
+ const state = {
125
+ selectedIndex: 0,
126
+ options: getMenuOptions(hasLastProject, lastProjectName),
127
+ hasLastProject,
128
+ lastProjectName,
129
+ };
130
+ // Enable raw mode for key detection (no readline - it causes echo)
131
+ const wasRawMode = process.stdin.isRaw;
132
+ terminal.enableRawMode();
133
+ terminal.hideCursor();
134
+ let prevLineCount = 0;
135
+ const render = (isInitial = false) => {
136
+ if (isInitial) {
137
+ // First render: print logo and save cursor position
138
+ printLogo(version, lastProject?.displayName ?? null);
139
+ terminal.saveCursor();
140
+ }
141
+ else {
142
+ // Subsequent renders: restore cursor and clear to end of screen
143
+ terminal.restoreCursor();
144
+ terminal.clearToEndOfScreen();
145
+ }
146
+ // Render the menu
147
+ const lines = renderMenu(state);
148
+ const termWidth = terminal.getTerminalWidth();
149
+ const physicalLines = terminal.totalPhysicalLines(lines, termWidth);
150
+ // Pad to previous height to prevent shrinking
151
+ for (let i = physicalLines; i < prevLineCount; i++) {
152
+ lines.push('');
153
+ }
154
+ process.stdout.write(lines.join('\n') + '\n');
155
+ prevLineCount = Math.max(prevLineCount, physicalLines);
156
+ };
157
+ // Define handleKey first, then cleanup references it
158
+ const handleKey = (key) => {
159
+ const keyStr = key.toString();
160
+ // Arrow keys
161
+ if (keyStr === '\x1b[A' || keyStr === 'k') {
162
+ // Up
163
+ do {
164
+ state.selectedIndex = (state.selectedIndex - 1 + state.options.length) % state.options.length;
165
+ } while (state.options[state.selectedIndex].disabled);
166
+ render(false);
167
+ }
168
+ else if (keyStr === '\x1b[B' || keyStr === 'j') {
169
+ // Down
170
+ do {
171
+ state.selectedIndex = (state.selectedIndex + 1) % state.options.length;
172
+ } while (state.options[state.selectedIndex].disabled);
173
+ render(false);
174
+ }
175
+ else if (keyStr === '\r' || keyStr === '\n') {
176
+ // Enter
177
+ const selected = state.options[state.selectedIndex];
178
+ if (!selected.disabled) {
179
+ // Cleanup: Remove listener BEFORE changing raw mode to prevent issues
180
+ process.stdin.removeListener('data', handleKey);
181
+ if (!wasRawMode) {
182
+ terminal.disableRawMode();
183
+ }
184
+ terminal.showCursor();
185
+ // Handle continue option - set active project
186
+ if (selected.key === 'continue' && lastProject) {
187
+ setActiveProject({
188
+ id: lastProject.id,
189
+ name: lastProject.name,
190
+ displayName: lastProject.displayName,
191
+ path: lastProject.path,
192
+ });
193
+ resolve({
194
+ action: 'continue',
195
+ project: {
196
+ id: lastProject.id,
197
+ name: lastProject.name,
198
+ displayName: lastProject.displayName,
199
+ path: lastProject.path,
200
+ },
201
+ });
202
+ }
203
+ else {
204
+ resolve({ action: selected.key });
205
+ }
206
+ }
207
+ }
208
+ else if (keyStr === '\x03') {
209
+ // Ctrl+C - cleanup and exit
210
+ process.stdin.removeListener('data', handleKey);
211
+ terminal.disableRawMode();
212
+ terminal.showCursor();
213
+ process.exit(0);
214
+ }
215
+ };
216
+ process.stdin.on('data', handleKey);
217
+ // Initial render
218
+ render(true);
219
+ });
220
+ }
221
+ /**
222
+ * Find the last active project for the "continue" option
223
+ */
224
+ export function findLastActiveProject() {
225
+ try {
226
+ const result = projectRepository.list({ status: 'active', limit: 1 });
227
+ if (result.projects.length > 0) {
228
+ const p = result.projects[0];
229
+ return { id: p.id, name: p.name, path: p.path };
230
+ }
231
+ }
232
+ catch {
233
+ // DB might not exist
234
+ }
235
+ return null;
236
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Status bar navigation controller.
3
+ *
4
+ * Extracted from TerminalUI — manages the navigable status bar indicators
5
+ * (pending requests, background agents, terminals, notifications).
6
+ */
7
+ import type { KeypressKey } from './terminal-types.js';
8
+ export interface StatusBarItem {
9
+ id: 'pending' | 'bg-agents' | 'terminals' | 'notifications' | 'mcp';
10
+ action: string;
11
+ }
12
+ export interface StatusBarHost {
13
+ requestRender(): void;
14
+ emit(event: string, ...args: unknown[]): void;
15
+ }
16
+ export declare class StatusBarController {
17
+ navActive: boolean;
18
+ selectedIndex: number;
19
+ backgroundAgentCount: number;
20
+ mcpLoading: boolean;
21
+ mcpToolCount: number;
22
+ private readonly host;
23
+ constructor(host: StatusBarHost);
24
+ /** Set background agent count (called by REPL to keep UI in sync). */
25
+ setBackgroundAgentCount(count: number): void;
26
+ /** Set MCP loading state (shown while MCP servers connect in background). */
27
+ setMCPLoading(loading: boolean, toolCount?: number): void;
28
+ /** Returns navigable status bar indicators based on current state. */
29
+ getItems(): StatusBarItem[];
30
+ /** Handle keys while in status bar navigation mode. */
31
+ handleKey(_str: string, key: KeypressKey): void;
32
+ exitNav(): void;
33
+ }
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Status bar navigation controller.
3
+ *
4
+ * Extracted from TerminalUI — manages the navigable status bar indicators
5
+ * (pending requests, background agents, terminals, notifications).
6
+ */
7
+ import { getPendingRequestsManager } from '../multi-agent/index.js';
8
+ import { getSessionRegistry } from '../multi-agent/session-registry.js';
9
+ import { getNotificationManager } from '../multi-agent/notification-manager.js';
10
+ export class StatusBarController {
11
+ navActive = false;
12
+ selectedIndex = 0;
13
+ backgroundAgentCount = 0;
14
+ mcpLoading = false;
15
+ mcpToolCount = 0;
16
+ host;
17
+ constructor(host) {
18
+ this.host = host;
19
+ }
20
+ /** Set background agent count (called by REPL to keep UI in sync). */
21
+ setBackgroundAgentCount(count) {
22
+ this.backgroundAgentCount = count;
23
+ this.host.requestRender();
24
+ }
25
+ /** Set MCP loading state (shown while MCP servers connect in background). */
26
+ setMCPLoading(loading, toolCount) {
27
+ this.mcpLoading = loading;
28
+ if (toolCount !== undefined)
29
+ this.mcpToolCount = toolCount;
30
+ this.host.requestRender();
31
+ }
32
+ /** Returns navigable status bar indicators based on current state. */
33
+ getItems() {
34
+ const items = [];
35
+ const notifManager = getNotificationManager();
36
+ if (notifManager && notifManager.getUnreadCount() > 0) {
37
+ items.push({ id: 'notifications', action: 'notifications' });
38
+ }
39
+ if (getPendingRequestsManager().getCount() > 0) {
40
+ items.push({ id: 'pending', action: 'pending' });
41
+ }
42
+ if (this.backgroundAgentCount > 0) {
43
+ items.push({ id: 'bg-agents', action: 'bg' });
44
+ }
45
+ const registry = getSessionRegistry();
46
+ if (registry && registry.getProjectScopedSessionCount() > 1) {
47
+ items.push({ id: 'terminals', action: 'terminals' });
48
+ }
49
+ if (this.mcpLoading) {
50
+ items.push({ id: 'mcp', action: 'mcp' });
51
+ }
52
+ return items;
53
+ }
54
+ /** Handle keys while in status bar navigation mode. */
55
+ handleKey(_str, key) {
56
+ const items = this.getItems();
57
+ if (items.length === 0) {
58
+ this.exitNav();
59
+ return;
60
+ }
61
+ if (key.name === 'right' || key.name === 'down') {
62
+ if (this.selectedIndex < items.length - 1) {
63
+ this.selectedIndex++;
64
+ this.host.requestRender();
65
+ }
66
+ }
67
+ else if (key.name === 'left') {
68
+ if (this.selectedIndex > 0) {
69
+ this.selectedIndex--;
70
+ this.host.requestRender();
71
+ }
72
+ }
73
+ else if (key.name === 'up') {
74
+ if (this.selectedIndex > 0) {
75
+ this.selectedIndex--;
76
+ this.host.requestRender();
77
+ }
78
+ else {
79
+ this.exitNav();
80
+ }
81
+ }
82
+ else if (key.name === 'return') {
83
+ const item = items[this.selectedIndex];
84
+ this.exitNav();
85
+ this.host.emit('command', item.action, '');
86
+ }
87
+ else if (key.name === 'escape') {
88
+ this.exitNav();
89
+ }
90
+ else {
91
+ this.exitNav();
92
+ }
93
+ }
94
+ exitNav() {
95
+ this.navActive = false;
96
+ this.selectedIndex = 0;
97
+ this.host.requestRender();
98
+ }
99
+ }