@compilr-dev/cli 0.5.0 → 0.5.2

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 (587) hide show
  1. package/LICENSE +108 -0
  2. package/README.md +237 -69
  3. package/dist/.tsbuildinfo.app +1 -0
  4. package/dist/.tsbuildinfo.data +1 -0
  5. package/dist/.tsbuildinfo.domain +1 -0
  6. package/dist/.tsbuildinfo.foundation +1 -0
  7. package/dist/agent.d.ts +61 -4
  8. package/dist/agent.js +241 -245
  9. package/dist/anchors/index.d.ts +1 -1
  10. package/dist/anchors/index.js +1 -1
  11. package/dist/anchors/project-anchors.d.ts +2 -2
  12. package/dist/anchors/project-anchors.js +1 -1
  13. package/dist/auth/api-client.d.ts +124 -0
  14. package/dist/auth/api-client.js +261 -0
  15. package/dist/auth/index.d.ts +172 -0
  16. package/dist/auth/index.js +545 -0
  17. package/dist/auth/storage.d.ts +52 -0
  18. package/dist/auth/storage.js +118 -0
  19. package/dist/changelog/index.d.ts +16 -0
  20. package/dist/changelog/index.js +24 -0
  21. package/dist/changelog/releases.d.ts +17 -0
  22. package/dist/changelog/releases.js +63 -0
  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.js +286 -81
  28. package/dist/commands-v2/handlers/core.d.ts +1 -0
  29. package/dist/commands-v2/handlers/core.js +133 -8
  30. package/dist/commands-v2/handlers/debug.js +18 -0
  31. package/dist/commands-v2/handlers/delegations.d.ts +8 -0
  32. package/dist/commands-v2/handlers/delegations.js +29 -0
  33. package/dist/commands-v2/handlers/files.d.ts +8 -0
  34. package/dist/commands-v2/handlers/files.js +162 -0
  35. package/dist/commands-v2/handlers/filter.d.ts +9 -0
  36. package/dist/commands-v2/handlers/filter.js +130 -0
  37. package/dist/commands-v2/handlers/games.d.ts +7 -0
  38. package/dist/commands-v2/handlers/games.js +57 -0
  39. package/dist/commands-v2/handlers/index.d.ts +13 -0
  40. package/dist/commands-v2/handlers/index.js +39 -0
  41. package/dist/commands-v2/handlers/mcp.d.ts +8 -0
  42. package/dist/commands-v2/handlers/mcp.js +39 -0
  43. package/dist/commands-v2/handlers/notifications.d.ts +9 -0
  44. package/dist/commands-v2/handlers/notifications.js +34 -0
  45. package/dist/commands-v2/handlers/project.js +295 -31
  46. package/dist/commands-v2/handlers/reset.d.ts +11 -0
  47. package/dist/commands-v2/handlers/reset.js +118 -0
  48. package/dist/commands-v2/handlers/session.d.ts +161 -0
  49. package/dist/commands-v2/handlers/session.js +805 -0
  50. package/dist/commands-v2/handlers/settings.d.ts +2 -0
  51. package/dist/commands-v2/handlers/settings.js +217 -35
  52. package/dist/commands-v2/handlers/tasks.d.ts +5 -0
  53. package/dist/commands-v2/handlers/tasks.js +36 -0
  54. package/dist/commands-v2/handlers/team.d.ts +9 -0
  55. package/dist/commands-v2/handlers/team.js +549 -0
  56. package/dist/commands-v2/handlers/terminals.d.ts +9 -0
  57. package/dist/commands-v2/handlers/terminals.js +34 -0
  58. package/dist/commands-v2/index.d.ts +3 -2
  59. package/dist/commands-v2/index.js +4 -1
  60. package/dist/commands-v2/registry.d.ts +15 -0
  61. package/dist/commands-v2/registry.js +34 -0
  62. package/dist/commands-v2/types.d.ts +81 -3
  63. package/dist/commands.js +13 -0
  64. package/dist/compilr-diff-companion.vsix +0 -0
  65. package/dist/db/index.js +98 -4
  66. package/dist/db/repositories/document-repository.d.ts +2 -0
  67. package/dist/db/repositories/document-repository.js +6 -1
  68. package/dist/db/repositories/index.d.ts +2 -0
  69. package/dist/db/repositories/index.js +1 -0
  70. package/dist/db/repositories/plan-repository.d.ts +101 -0
  71. package/dist/db/repositories/plan-repository.js +275 -0
  72. package/dist/db/repositories/project-repository.d.ts +6 -0
  73. package/dist/db/repositories/project-repository.js +41 -0
  74. package/dist/db/repositories/work-item-repository.d.ts +15 -0
  75. package/dist/db/repositories/work-item-repository.js +69 -4
  76. package/dist/db/schema.d.ts +40 -3
  77. package/dist/db/schema.js +66 -3
  78. package/dist/episodes/index.d.ts +20 -0
  79. package/dist/episodes/index.js +27 -0
  80. package/dist/episodes/recorder.d.ts +51 -0
  81. package/dist/episodes/recorder.js +195 -0
  82. package/dist/episodes/significant-work.d.ts +21 -0
  83. package/dist/episodes/significant-work.js +56 -0
  84. package/dist/episodes/store.d.ts +38 -0
  85. package/dist/episodes/store.js +199 -0
  86. package/dist/episodes/types.d.ts +35 -0
  87. package/dist/episodes/types.js +6 -0
  88. package/dist/episodes/work-at-risk.d.ts +12 -0
  89. package/dist/episodes/work-at-risk.js +38 -0
  90. package/dist/episodes/work-summary-anchor.d.ts +23 -0
  91. package/dist/episodes/work-summary-anchor.js +73 -0
  92. package/dist/games/coins.d.ts +66 -0
  93. package/dist/games/coins.js +165 -0
  94. package/dist/games/game-base.d.ts +84 -0
  95. package/dist/games/game-base.js +204 -0
  96. package/dist/games/index.d.ts +16 -0
  97. package/dist/games/index.js +49 -0
  98. package/dist/games/scores.d.ts +69 -0
  99. package/dist/games/scores.js +191 -0
  100. package/dist/games/tetris/board.d.ts +59 -0
  101. package/dist/games/tetris/board.js +170 -0
  102. package/dist/games/tetris/index.d.ts +109 -0
  103. package/dist/games/tetris/index.js +610 -0
  104. package/dist/games/tetris/pieces.d.ts +44 -0
  105. package/dist/games/tetris/pieces.js +271 -0
  106. package/dist/games/tetris/renderer.d.ts +26 -0
  107. package/dist/games/tetris/renderer.js +77 -0
  108. package/dist/guide/guide-content.d.ts +23 -0
  109. package/dist/guide/guide-content.js +196 -0
  110. package/dist/guide/index.d.ts +8 -0
  111. package/dist/guide/index.js +7 -0
  112. package/dist/guide/shared-content.d.ts +37 -0
  113. package/dist/guide/shared-content.js +1272 -0
  114. package/dist/guide/tutorial-helpers.d.ts +57 -0
  115. package/dist/guide/tutorial-helpers.js +147 -0
  116. package/dist/handlers/ask-user-handlers.d.ts +32 -0
  117. package/dist/handlers/ask-user-handlers.js +104 -0
  118. package/dist/handlers/delegation-handlers.d.ts +34 -0
  119. package/dist/handlers/delegation-handlers.js +291 -0
  120. package/dist/handlers/permission-handler.d.ts +30 -0
  121. package/dist/handlers/permission-handler.js +205 -0
  122. package/dist/index.d.ts +11 -1
  123. package/dist/index.js +448 -271
  124. package/dist/input-handlers/memory-handler.d.ts +1 -1
  125. package/dist/input-handlers/memory-handler.js +2 -1
  126. package/dist/models/index.d.ts +10 -0
  127. package/dist/models/index.js +12 -0
  128. package/dist/models/model-registry.d.ts +38 -0
  129. package/dist/models/model-registry.js +69 -0
  130. package/dist/models/model-tiers.d.ts +28 -0
  131. package/dist/models/model-tiers.js +71 -0
  132. package/dist/models/model-validation.d.ts +25 -0
  133. package/dist/models/model-validation.js +291 -0
  134. package/dist/models/ollama-models.d.ts +73 -0
  135. package/dist/models/ollama-models.js +178 -0
  136. package/dist/models/provider-types.d.ts +6 -0
  137. package/dist/models/provider-types.js +1 -0
  138. package/dist/models/providers.d.ts +35 -0
  139. package/dist/models/providers.js +58 -0
  140. package/dist/models/types.d.ts +4 -0
  141. package/dist/models/types.js +4 -0
  142. package/dist/multi-agent/activity.d.ts +21 -0
  143. package/dist/multi-agent/activity.js +34 -0
  144. package/dist/multi-agent/agent-selection.d.ts +55 -0
  145. package/dist/multi-agent/agent-selection.js +90 -0
  146. package/dist/multi-agent/artifacts.d.ts +197 -0
  147. package/dist/multi-agent/artifacts.js +379 -0
  148. package/dist/multi-agent/checkpointer.d.ts +138 -0
  149. package/dist/multi-agent/checkpointer.js +471 -0
  150. package/dist/multi-agent/collision-utils.d.ts +16 -0
  151. package/dist/multi-agent/collision-utils.js +28 -0
  152. package/dist/multi-agent/context-resolver.d.ts +97 -0
  153. package/dist/multi-agent/context-resolver.js +316 -0
  154. package/dist/multi-agent/custom-agents.d.ts +83 -0
  155. package/dist/multi-agent/custom-agents.js +227 -0
  156. package/dist/multi-agent/delegation-tracker.d.ts +157 -0
  157. package/dist/multi-agent/delegation-tracker.js +243 -0
  158. package/dist/multi-agent/file-lock-hook.d.ts +29 -0
  159. package/dist/multi-agent/file-lock-hook.js +97 -0
  160. package/dist/multi-agent/file-locks.d.ts +58 -0
  161. package/dist/multi-agent/file-locks.js +194 -0
  162. package/dist/multi-agent/index.d.ts +24 -0
  163. package/dist/multi-agent/index.js +30 -0
  164. package/dist/multi-agent/mention-parser.d.ts +64 -0
  165. package/dist/multi-agent/mention-parser.js +146 -0
  166. package/dist/multi-agent/notification-manager.d.ts +84 -0
  167. package/dist/multi-agent/notification-manager.js +224 -0
  168. package/dist/multi-agent/pending-requests.d.ts +122 -0
  169. package/dist/multi-agent/pending-requests.js +155 -0
  170. package/dist/multi-agent/session-registry.d.ts +139 -0
  171. package/dist/multi-agent/session-registry.js +514 -0
  172. package/dist/multi-agent/shared-context.d.ts +293 -0
  173. package/dist/multi-agent/shared-context.js +671 -0
  174. package/dist/multi-agent/skill-requirements.d.ts +66 -0
  175. package/dist/multi-agent/skill-requirements.js +178 -0
  176. package/dist/multi-agent/task-assignment.d.ts +69 -0
  177. package/dist/multi-agent/task-assignment.js +123 -0
  178. package/dist/multi-agent/task-suggestion.d.ts +31 -0
  179. package/dist/multi-agent/task-suggestion.js +72 -0
  180. package/dist/multi-agent/team-agent.d.ts +201 -0
  181. package/dist/multi-agent/team-agent.js +488 -0
  182. package/dist/multi-agent/team.d.ts +286 -0
  183. package/dist/multi-agent/team.js +610 -0
  184. package/dist/multi-agent/tool-config.d.ts +110 -0
  185. package/dist/multi-agent/tool-config.js +661 -0
  186. package/dist/multi-agent/types.d.ts +211 -0
  187. package/dist/multi-agent/types.js +617 -0
  188. package/dist/prompts/plan-mode-prompt.d.ts +11 -0
  189. package/dist/prompts/plan-mode-prompt.js +95 -0
  190. package/dist/repl-helpers.js +5 -2
  191. package/dist/repl-v2.d.ts +401 -2
  192. package/dist/repl-v2.js +2588 -65
  193. package/dist/session/index.d.ts +6 -0
  194. package/dist/session/index.js +6 -0
  195. package/dist/session/project-session-manager.d.ts +158 -0
  196. package/dist/session/project-session-manager.js +650 -0
  197. package/dist/settings/index.d.ts +133 -13
  198. package/dist/settings/index.js +329 -24
  199. package/dist/settings/mcp-config.d.ts +76 -0
  200. package/dist/settings/mcp-config.js +143 -0
  201. package/dist/settings/paths.d.ts +4 -0
  202. package/dist/settings/paths.js +6 -0
  203. package/dist/shared-handlers.d.ts +62 -0
  204. package/dist/shared-handlers.js +48 -0
  205. package/dist/system-prompt/builder.d.ts +5 -0
  206. package/dist/system-prompt/builder.js +4 -0
  207. package/dist/system-prompt/index.d.ts +18 -0
  208. package/dist/system-prompt/index.js +18 -0
  209. package/dist/system-prompt/modules.d.ts +5 -0
  210. package/dist/system-prompt/modules.js +4 -0
  211. package/dist/tabbed-menu.js +2 -1
  212. package/dist/templates/compilr-md-import.d.ts +16 -0
  213. package/dist/templates/compilr-md-import.js +241 -0
  214. package/dist/templates/compilr-md.js +10 -61
  215. package/dist/templates/config-json.d.ts +1 -25
  216. package/dist/templates/index.d.ts +2 -0
  217. package/dist/templates/index.js +34 -73
  218. package/dist/tool-names.d.ts +113 -0
  219. package/dist/tool-names.js +239 -0
  220. package/dist/tools/ask-user-simple.d.ts +1 -1
  221. package/dist/tools/ask-user-simple.js +2 -1
  222. package/dist/tools/ask-user.d.ts +1 -1
  223. package/dist/tools/ask-user.js +2 -1
  224. package/dist/tools/backlog.d.ts +2 -2
  225. package/dist/tools/backlog.js +1 -1
  226. package/dist/tools/db-tools.d.ts +13 -61
  227. package/dist/tools/db-tools.js +12 -13
  228. package/dist/tools/delegate-background.d.ts +27 -0
  229. package/dist/tools/delegate-background.js +115 -0
  230. package/dist/tools/delegate.d.ts +22 -0
  231. package/dist/tools/delegate.js +97 -0
  232. package/dist/tools/delegation-status.d.ts +16 -0
  233. package/dist/tools/delegation-status.js +128 -0
  234. package/dist/tools/guide-tool.d.ts +12 -0
  235. package/dist/tools/guide-tool.js +59 -0
  236. package/dist/tools/handoff.d.ts +25 -0
  237. package/dist/tools/handoff.js +99 -0
  238. package/dist/tools/meta-tools.d.ts +26 -0
  239. package/dist/tools/meta-tools.js +47 -0
  240. package/dist/tools/platform-adapter.d.ts +35 -0
  241. package/dist/tools/platform-adapter.js +404 -0
  242. package/dist/tools/project-db.d.ts +5 -73
  243. package/dist/tools/project-db.js +5 -336
  244. package/dist/tools.d.ts +67 -2
  245. package/dist/tools.js +240 -48
  246. package/dist/ui/autocomplete-controller.d.ts +42 -0
  247. package/dist/ui/autocomplete-controller.js +384 -0
  248. package/dist/ui/base/index.d.ts +1 -1
  249. package/dist/ui/base/index.js +1 -1
  250. package/dist/ui/base/overlay-base-v2.d.ts +10 -0
  251. package/dist/ui/base/overlay-base-v2.js +14 -0
  252. package/dist/ui/base/render-utils.d.ts +19 -0
  253. package/dist/ui/base/render-utils.js +25 -0
  254. package/dist/ui/base/tabbed-list-overlay-v2.d.ts +16 -1
  255. package/dist/ui/base/tabbed-list-overlay-v2.js +19 -1
  256. package/dist/ui/constants/labels.d.ts +14 -0
  257. package/dist/ui/constants/labels.js +52 -0
  258. package/dist/ui/conversation-store.d.ts +55 -0
  259. package/dist/ui/conversation-store.js +107 -0
  260. package/dist/ui/conversation.js +11 -13
  261. package/dist/ui/diff.d.ts +7 -1
  262. package/dist/ui/diff.js +85 -48
  263. package/dist/ui/ephemeral.js +3 -9
  264. package/dist/ui/file-autocomplete.d.ts +24 -0
  265. package/dist/ui/file-autocomplete.js +56 -0
  266. package/dist/ui/footer-renderer.d.ts +69 -0
  267. package/dist/ui/footer-renderer.js +431 -0
  268. package/dist/ui/footer.d.ts +74 -7
  269. package/dist/ui/footer.js +173 -16
  270. package/dist/ui/input-controller.d.ts +51 -0
  271. package/dist/ui/input-controller.js +176 -0
  272. package/dist/ui/input-prompt.d.ts +19 -0
  273. package/dist/ui/input-prompt.js +206 -14
  274. package/dist/ui/keyboard-handler.d.ts +57 -0
  275. package/dist/ui/keyboard-handler.js +557 -0
  276. package/dist/ui/live-region-facade.d.ts +42 -0
  277. package/dist/ui/live-region-facade.js +205 -0
  278. package/dist/ui/live-region.d.ts +0 -4
  279. package/dist/ui/live-region.js +6 -14
  280. package/dist/ui/mascot/renderer.d.ts +1 -1
  281. package/dist/ui/mascot/renderer.js +37 -2
  282. package/dist/ui/overlay/data/tutorial-content.d.ts +9 -0
  283. package/dist/ui/overlay/data/tutorial-content.js +9 -0
  284. package/dist/ui/overlay/data/tutorial-registry.d.ts +12 -0
  285. package/dist/ui/overlay/data/tutorial-registry.js +116 -0
  286. package/dist/ui/overlay/data/tutorial-types.d.ts +35 -0
  287. package/dist/ui/overlay/data/tutorial-types.js +6 -0
  288. package/dist/ui/overlay/data/tutorials/basics/first-conversation.d.ts +7 -0
  289. package/dist/ui/overlay/data/tutorials/basics/first-conversation.js +220 -0
  290. package/dist/ui/overlay/data/tutorials/basics/first-project.d.ts +7 -0
  291. package/dist/ui/overlay/data/tutorials/basics/first-project.js +284 -0
  292. package/dist/ui/overlay/data/tutorials/basics/navigation.d.ts +8 -0
  293. package/dist/ui/overlay/data/tutorials/basics/navigation.js +22 -0
  294. package/dist/ui/overlay/data/tutorials/basics/welcome.d.ts +7 -0
  295. package/dist/ui/overlay/data/tutorials/basics/welcome.js +174 -0
  296. package/dist/ui/overlay/data/tutorials/config/context-management.d.ts +7 -0
  297. package/dist/ui/overlay/data/tutorials/config/context-management.js +158 -0
  298. package/dist/ui/overlay/data/tutorials/config/mcp-servers.d.ts +8 -0
  299. package/dist/ui/overlay/data/tutorials/config/mcp-servers.js +155 -0
  300. package/dist/ui/overlay/data/tutorials/config/model-selection.d.ts +7 -0
  301. package/dist/ui/overlay/data/tutorials/config/model-selection.js +162 -0
  302. package/dist/ui/overlay/data/tutorials/config/permissions-safety.d.ts +7 -0
  303. package/dist/ui/overlay/data/tutorials/config/permissions-safety.js +163 -0
  304. package/dist/ui/overlay/data/tutorials/config/settings-config.d.ts +7 -0
  305. package/dist/ui/overlay/data/tutorials/config/settings-config.js +166 -0
  306. package/dist/ui/overlay/data/tutorials/planning/arch.d.ts +7 -0
  307. package/dist/ui/overlay/data/tutorials/planning/arch.js +168 -0
  308. package/dist/ui/overlay/data/tutorials/planning/backlog.d.ts +7 -0
  309. package/dist/ui/overlay/data/tutorials/planning/backlog.js +103 -0
  310. package/dist/ui/overlay/data/tutorials/planning/build.d.ts +7 -0
  311. package/dist/ui/overlay/data/tutorials/planning/build.js +173 -0
  312. package/dist/ui/overlay/data/tutorials/planning/design.d.ts +7 -0
  313. package/dist/ui/overlay/data/tutorials/planning/design.js +205 -0
  314. package/dist/ui/overlay/data/tutorials/planning/docs.d.ts +7 -0
  315. package/dist/ui/overlay/data/tutorials/planning/docs.js +143 -0
  316. package/dist/ui/overlay/data/tutorials/planning/prd.d.ts +7 -0
  317. package/dist/ui/overlay/data/tutorials/planning/prd.js +173 -0
  318. package/dist/ui/overlay/data/tutorials/planning/scaffold.d.ts +7 -0
  319. package/dist/ui/overlay/data/tutorials/planning/scaffold.js +164 -0
  320. package/dist/ui/overlay/data/tutorials/planning/sketch.d.ts +7 -0
  321. package/dist/ui/overlay/data/tutorials/planning/sketch.js +58 -0
  322. package/dist/ui/overlay/data/tutorials/projects/anchors.d.ts +7 -0
  323. package/dist/ui/overlay/data/tutorials/projects/anchors.js +248 -0
  324. package/dist/ui/overlay/data/tutorials/projects/import-project.d.ts +7 -0
  325. package/dist/ui/overlay/data/tutorials/projects/import-project.js +172 -0
  326. package/dist/ui/overlay/data/tutorials/projects/managing-projects.d.ts +8 -0
  327. package/dist/ui/overlay/data/tutorials/projects/managing-projects.js +212 -0
  328. package/dist/ui/overlay/data/tutorials/projects/new-project.d.ts +7 -0
  329. package/dist/ui/overlay/data/tutorials/projects/new-project.js +251 -0
  330. package/dist/ui/overlay/data/tutorials/projects/session-management.d.ts +7 -0
  331. package/dist/ui/overlay/data/tutorials/projects/session-management.js +169 -0
  332. package/dist/ui/overlay/data/tutorials/teams/background-execution.d.ts +7 -0
  333. package/dist/ui/overlay/data/tutorials/teams/background-execution.js +171 -0
  334. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.d.ts +8 -0
  335. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.js +147 -0
  336. package/dist/ui/overlay/data/tutorials/teams/task-assignment.d.ts +7 -0
  337. package/dist/ui/overlay/data/tutorials/teams/task-assignment.js +204 -0
  338. package/dist/ui/overlay/data/tutorials/teams/team-overview.d.ts +7 -0
  339. package/dist/ui/overlay/data/tutorials/teams/team-overview.js +165 -0
  340. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.d.ts +7 -0
  341. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.js +172 -0
  342. package/dist/ui/overlay/impl/agents-overlay-v2.js +6 -17
  343. package/dist/ui/overlay/impl/anchors-overlay-v2.js +30 -64
  344. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.d.ts +43 -0
  345. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.js +232 -0
  346. package/dist/ui/overlay/impl/artifact-overlay-v2.d.ts +40 -0
  347. package/dist/ui/overlay/impl/artifact-overlay-v2.js +115 -0
  348. package/dist/ui/overlay/impl/ask-user-overlay-v2.js +2 -5
  349. package/dist/ui/overlay/impl/background-overlay-v2.d.ts +40 -0
  350. package/dist/ui/overlay/impl/background-overlay-v2.js +147 -0
  351. package/dist/ui/overlay/impl/backlog-overlay-v2.d.ts +4 -1
  352. package/dist/ui/overlay/impl/backlog-overlay-v2.js +55 -16
  353. package/dist/ui/overlay/impl/changelog-overlay-v2.d.ts +44 -0
  354. package/dist/ui/overlay/impl/changelog-overlay-v2.js +165 -0
  355. package/dist/ui/overlay/impl/commands-overlay-v2.js +4 -6
  356. package/dist/ui/overlay/impl/config-overlay-v2.d.ts +12 -1
  357. package/dist/ui/overlay/impl/config-overlay-v2.js +164 -100
  358. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.d.ts +83 -0
  359. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.js +711 -0
  360. package/dist/ui/overlay/impl/dashboard-overlay-v2.d.ts +2 -0
  361. package/dist/ui/overlay/impl/dashboard-overlay-v2.js +26 -3
  362. package/dist/ui/overlay/impl/delegations-overlay-v2.d.ts +28 -0
  363. package/dist/ui/overlay/impl/delegations-overlay-v2.js +279 -0
  364. package/dist/ui/overlay/impl/docs-overlay-v2.js +12 -9
  365. package/dist/ui/overlay/impl/document-detail-overlay-v2.d.ts +7 -0
  366. package/dist/ui/overlay/impl/document-detail-overlay-v2.js +119 -78
  367. package/dist/ui/overlay/impl/filter-overlay-v2.d.ts +41 -0
  368. package/dist/ui/overlay/impl/filter-overlay-v2.js +110 -0
  369. package/dist/ui/overlay/impl/games-overlay-v2.d.ts +31 -0
  370. package/dist/ui/overlay/impl/games-overlay-v2.js +135 -0
  371. package/dist/ui/overlay/impl/help-overlay-v2.d.ts +26 -3
  372. package/dist/ui/overlay/impl/help-overlay-v2.js +20 -42
  373. package/dist/ui/overlay/impl/login-overlay-v2.d.ts +49 -0
  374. package/dist/ui/overlay/impl/login-overlay-v2.js +277 -0
  375. package/dist/ui/overlay/impl/mcp-overlay-v2.d.ts +63 -0
  376. package/dist/ui/overlay/impl/mcp-overlay-v2.js +907 -0
  377. package/dist/ui/overlay/impl/model-overlay-v2.d.ts +57 -13
  378. package/dist/ui/overlay/impl/model-overlay-v2.js +1086 -61
  379. package/dist/ui/overlay/impl/new-overlay-v2.d.ts +37 -6
  380. package/dist/ui/overlay/impl/new-overlay-v2.js +715 -65
  381. package/dist/ui/overlay/impl/notifications-overlay-v2.d.ts +20 -0
  382. package/dist/ui/overlay/impl/notifications-overlay-v2.js +116 -0
  383. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.d.ts +76 -0
  384. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.js +728 -0
  385. package/dist/ui/overlay/impl/pending-overlay-v2.d.ts +51 -0
  386. package/dist/ui/overlay/impl/pending-overlay-v2.js +445 -0
  387. package/dist/ui/overlay/impl/permission-overlay-v2.js +5 -5
  388. package/dist/ui/overlay/impl/permissions-overlay-v2.d.ts +85 -0
  389. package/dist/ui/overlay/impl/permissions-overlay-v2.js +820 -0
  390. package/dist/ui/overlay/impl/plan-approval-overlay-v2.d.ts +35 -0
  391. package/dist/ui/overlay/impl/plan-approval-overlay-v2.js +181 -0
  392. package/dist/ui/overlay/impl/project-edit-overlay-v2.d.ts +36 -0
  393. package/dist/ui/overlay/impl/project-edit-overlay-v2.js +195 -0
  394. package/dist/ui/overlay/impl/projects-overlay-v2.d.ts +1 -0
  395. package/dist/ui/overlay/impl/projects-overlay-v2.js +278 -44
  396. package/dist/ui/overlay/impl/reset-overlay-v2.d.ts +39 -0
  397. package/dist/ui/overlay/impl/reset-overlay-v2.js +107 -0
  398. package/dist/ui/overlay/impl/resume-overlay-v2.d.ts +60 -0
  399. package/dist/ui/overlay/impl/resume-overlay-v2.js +414 -0
  400. package/dist/ui/overlay/impl/session-mode-overlay-v2.d.ts +43 -0
  401. package/dist/ui/overlay/impl/session-mode-overlay-v2.js +124 -0
  402. package/dist/ui/overlay/impl/tasks-overlay-v2.d.ts +28 -0
  403. package/dist/ui/overlay/impl/tasks-overlay-v2.js +283 -0
  404. package/dist/ui/overlay/impl/team-overlay-v2.d.ts +86 -0
  405. package/dist/ui/overlay/impl/team-overlay-v2.js +692 -0
  406. package/dist/ui/overlay/impl/terminals-overlay-v2.d.ts +26 -0
  407. package/dist/ui/overlay/impl/terminals-overlay-v2.js +217 -0
  408. package/dist/ui/overlay/impl/tools-overlay-v2.js +3 -7
  409. package/dist/ui/overlay/impl/tutorial-overlay-v2.d.ts +30 -16
  410. package/dist/ui/overlay/impl/tutorial-overlay-v2.js +133 -956
  411. package/dist/ui/overlay/impl/workflow-overlay-v2.d.ts +1 -0
  412. package/dist/ui/overlay/impl/workflow-overlay-v2.js +10 -4
  413. package/dist/ui/overlay/index.d.ts +20 -1
  414. package/dist/ui/overlay/index.js +19 -0
  415. package/dist/ui/overlay/types.d.ts +5 -0
  416. package/dist/ui/overlay-manager.d.ts +43 -0
  417. package/dist/ui/overlay-manager.js +238 -0
  418. package/dist/ui/overlays.js +4 -16
  419. package/dist/ui/permission-overlay.js +6 -5
  420. package/dist/ui/status-bar-controller.d.ts +33 -0
  421. package/dist/ui/status-bar-controller.js +99 -0
  422. package/dist/ui/subagent-renderer.js +3 -19
  423. package/dist/ui/terminal-autocomplete-utils.d.ts +23 -0
  424. package/dist/ui/terminal-autocomplete-utils.js +83 -0
  425. package/dist/ui/terminal-line-builders.d.ts +17 -0
  426. package/dist/ui/terminal-line-builders.js +42 -0
  427. package/dist/ui/terminal-render-item.d.ts +16 -0
  428. package/dist/ui/terminal-render-item.js +267 -0
  429. package/dist/ui/terminal-renderer.d.ts +7 -8
  430. package/dist/ui/terminal-renderer.js +7 -8
  431. package/dist/ui/terminal-types.d.ts +179 -0
  432. package/dist/ui/terminal-types.js +34 -0
  433. package/dist/ui/terminal-ui.d.ts +144 -276
  434. package/dist/ui/terminal-ui.js +384 -1861
  435. package/dist/ui/todo-zone.d.ts +19 -1
  436. package/dist/ui/todo-zone.js +71 -13
  437. package/dist/ui/tool-formatters.js +696 -1
  438. package/dist/ui/turn-metrics.d.ts +56 -0
  439. package/dist/ui/turn-metrics.js +75 -0
  440. package/dist/ui/types.d.ts +28 -0
  441. package/dist/ui/types.js +1 -0
  442. package/dist/ui/vscode-diff-ipc.d.ts +102 -0
  443. package/dist/ui/vscode-diff-ipc.js +385 -0
  444. package/dist/utils/credentials.d.ts +24 -5
  445. package/dist/utils/credentials.js +123 -9
  446. package/dist/utils/format-tokens.d.ts +13 -0
  447. package/dist/utils/format-tokens.js +18 -0
  448. package/dist/utils/git-config.d.ts +26 -0
  449. package/dist/utils/git-config.js +54 -0
  450. package/dist/utils/message-utils.d.ts +61 -0
  451. package/dist/utils/message-utils.js +72 -0
  452. package/dist/utils/model-tiers.d.ts +8 -1
  453. package/dist/utils/model-tiers.js +38 -16
  454. package/dist/utils/open-browser.d.ts +5 -0
  455. package/dist/utils/open-browser.js +32 -0
  456. package/dist/utils/path-safety.js +3 -2
  457. package/dist/utils/project-detection.d.ts +58 -0
  458. package/dist/utils/project-detection.js +424 -0
  459. package/dist/utils/project-memory.js +2 -1
  460. package/dist/utils/project-status.d.ts +2 -2
  461. package/dist/utils/startup-perf.d.ts +18 -0
  462. package/dist/utils/startup-perf.js +60 -0
  463. package/dist/utils/token-tracker.d.ts +62 -0
  464. package/dist/utils/token-tracker.js +150 -0
  465. package/dist/utils/token-types.d.ts +23 -0
  466. package/dist/utils/token-types.js +18 -0
  467. package/dist/utils/types/config-types.d.ts +32 -0
  468. package/dist/utils/types/config-types.js +8 -0
  469. package/dist/utils/update-checker.d.ts +28 -0
  470. package/dist/utils/update-checker.js +106 -0
  471. package/dist/utils/version.d.ts +7 -0
  472. package/dist/utils/version.js +10 -0
  473. package/dist/utils/vscode-detect.d.ts +39 -0
  474. package/dist/utils/vscode-detect.js +137 -0
  475. package/package.json +27 -13
  476. package/dist/commands/handler-types.d.ts +0 -68
  477. package/dist/commands/handler-types.js +0 -8
  478. package/dist/commands/handlers/agent-commands.d.ts +0 -13
  479. package/dist/commands/handlers/agent-commands.js +0 -305
  480. package/dist/commands/handlers/design-commands.d.ts +0 -15
  481. package/dist/commands/handlers/design-commands.js +0 -334
  482. package/dist/commands/handlers/index.d.ts +0 -20
  483. package/dist/commands/handlers/index.js +0 -43
  484. package/dist/commands/handlers/overlay-commands.d.ts +0 -21
  485. package/dist/commands/handlers/overlay-commands.js +0 -287
  486. package/dist/commands/handlers/project-commands.d.ts +0 -11
  487. package/dist/commands/handlers/project-commands.js +0 -167
  488. package/dist/commands/handlers/simple-commands.d.ts +0 -19
  489. package/dist/commands/handlers/simple-commands.js +0 -144
  490. package/dist/commands/registry.d.ts +0 -50
  491. package/dist/commands/registry.js +0 -75
  492. package/dist/index.old.d.ts +0 -7
  493. package/dist/index.old.js +0 -1014
  494. package/dist/repl.d.ts +0 -149
  495. package/dist/repl.js +0 -1151
  496. package/dist/templates/claude-md.d.ts +0 -7
  497. package/dist/templates/claude-md.js +0 -189
  498. package/dist/test-autocomplete.d.ts +0 -7
  499. package/dist/test-autocomplete.js +0 -85
  500. package/dist/test-tabbed-menu.d.ts +0 -7
  501. package/dist/test-tabbed-menu.js +0 -25
  502. package/dist/tool-selector.d.ts +0 -71
  503. package/dist/tool-selector.js +0 -184
  504. package/dist/tools/anchor-tools.d.ts +0 -31
  505. package/dist/tools/anchor-tools.js +0 -255
  506. package/dist/tools/backlog-wrappers.d.ts +0 -54
  507. package/dist/tools/backlog-wrappers.js +0 -338
  508. package/dist/tools/document-db.d.ts +0 -43
  509. package/dist/tools/document-db.js +0 -220
  510. package/dist/tools/workitem-db.d.ts +0 -103
  511. package/dist/tools/workitem-db.js +0 -549
  512. package/dist/ui/agents-overlay-v2.d.ts +0 -43
  513. package/dist/ui/agents-overlay-v2.js +0 -809
  514. package/dist/ui/agents-overlay.d.ts +0 -12
  515. package/dist/ui/agents-overlay.js +0 -863
  516. package/dist/ui/anchors-overlay.d.ts +0 -12
  517. package/dist/ui/anchors-overlay.js +0 -775
  518. package/dist/ui/arch-type-overlay.d.ts +0 -15
  519. package/dist/ui/arch-type-overlay.js +0 -201
  520. package/dist/ui/ask-user-overlay-v2.d.ts +0 -26
  521. package/dist/ui/ask-user-overlay-v2.js +0 -555
  522. package/dist/ui/ask-user-simple-overlay-v2.d.ts +0 -25
  523. package/dist/ui/ask-user-simple-overlay-v2.js +0 -215
  524. package/dist/ui/backlog-overlay.d.ts +0 -32
  525. package/dist/ui/backlog-overlay.js +0 -652
  526. package/dist/ui/commands-overlay-v2.d.ts +0 -33
  527. package/dist/ui/commands-overlay-v2.js +0 -441
  528. package/dist/ui/commands-overlay.d.ts +0 -16
  529. package/dist/ui/commands-overlay.js +0 -439
  530. package/dist/ui/config-overlay.d.ts +0 -35
  531. package/dist/ui/config-overlay.js +0 -707
  532. package/dist/ui/docs-overlay.d.ts +0 -17
  533. package/dist/ui/docs-overlay.js +0 -303
  534. package/dist/ui/footer-v2.d.ts +0 -222
  535. package/dist/ui/footer-v2.js +0 -1349
  536. package/dist/ui/help-overlay-v2.d.ts +0 -34
  537. package/dist/ui/help-overlay-v2.js +0 -309
  538. package/dist/ui/help-overlay.d.ts +0 -16
  539. package/dist/ui/help-overlay.js +0 -316
  540. package/dist/ui/init-overlay-v2.d.ts +0 -34
  541. package/dist/ui/init-overlay-v2.js +0 -600
  542. package/dist/ui/init-overlay.d.ts +0 -34
  543. package/dist/ui/init-overlay.js +0 -604
  544. package/dist/ui/input-prompt-v2.d.ts +0 -180
  545. package/dist/ui/input-prompt-v2.js +0 -999
  546. package/dist/ui/iteration-limit-overlay-v2.d.ts +0 -21
  547. package/dist/ui/iteration-limit-overlay-v2.js +0 -114
  548. package/dist/ui/keys-overlay-v2.d.ts +0 -41
  549. package/dist/ui/keys-overlay-v2.js +0 -248
  550. package/dist/ui/mascot-overlay-v2.d.ts +0 -41
  551. package/dist/ui/mascot-overlay-v2.js +0 -138
  552. package/dist/ui/mascot-overlay.d.ts +0 -21
  553. package/dist/ui/mascot-overlay.js +0 -146
  554. package/dist/ui/model-overlay-v2.d.ts +0 -49
  555. package/dist/ui/model-overlay-v2.js +0 -118
  556. package/dist/ui/model-overlay.d.ts +0 -27
  557. package/dist/ui/model-overlay.js +0 -221
  558. package/dist/ui/model-warning-overlay.d.ts +0 -30
  559. package/dist/ui/model-warning-overlay.js +0 -169
  560. package/dist/ui/new-overlay.d.ts +0 -34
  561. package/dist/ui/new-overlay.js +0 -604
  562. package/dist/ui/overlay/impl/init-overlay-v2.d.ts +0 -77
  563. package/dist/ui/overlay/impl/init-overlay-v2.js +0 -593
  564. package/dist/ui/overlay/overlay-types.d.ts +0 -128
  565. package/dist/ui/overlay/overlay-types.js +0 -22
  566. package/dist/ui/overlays/help-overlay-v2.d.ts +0 -28
  567. package/dist/ui/overlays/help-overlay-v2.js +0 -198
  568. package/dist/ui/overlays/index.d.ts +0 -11
  569. package/dist/ui/overlays/index.js +0 -11
  570. package/dist/ui/permission-overlay-v2.d.ts +0 -36
  571. package/dist/ui/permission-overlay-v2.js +0 -380
  572. package/dist/ui/projects-overlay.d.ts +0 -19
  573. package/dist/ui/projects-overlay.js +0 -484
  574. package/dist/ui/theme-overlay-v2.d.ts +0 -42
  575. package/dist/ui/theme-overlay-v2.js +0 -135
  576. package/dist/ui/theme-overlay.d.ts +0 -24
  577. package/dist/ui/theme-overlay.js +0 -127
  578. package/dist/ui/tools-overlay-v2.d.ts +0 -47
  579. package/dist/ui/tools-overlay-v2.js +0 -218
  580. package/dist/ui/tools-overlay.d.ts +0 -34
  581. package/dist/ui/tools-overlay.js +0 -230
  582. package/dist/ui/tutorial-overlay-v2.d.ts +0 -31
  583. package/dist/ui/tutorial-overlay-v2.js +0 -1035
  584. package/dist/ui/tutorial-overlay.d.ts +0 -11
  585. package/dist/ui/tutorial-overlay.js +0 -1034
  586. package/dist/ui/workflow-overlay.d.ts +0 -22
  587. package/dist/ui/workflow-overlay.js +0 -636
@@ -0,0 +1,205 @@
1
+ /**
2
+ * LiveRegion facade.
3
+ *
4
+ * Extracted from TerminalUI — owns the LiveRegion instance and active
5
+ * bash tracking. Methods that need to commit items to the scrolling
6
+ * zone or emit events go through the host interface.
7
+ */
8
+ import { formatTokens } from './base/index.js';
9
+ import { LiveRegion } from './live-region.js';
10
+ export class LiveRegionFacade {
11
+ /** The underlying LiveRegion (exposed for render pipeline). */
12
+ region = new LiveRegion();
13
+ /** Active bash command tracking (for Ctrl+B background feature). */
14
+ activeBashToolUseId = null;
15
+ host;
16
+ constructor(host) {
17
+ this.host = host;
18
+ }
19
+ // ===========================================================================
20
+ // Subagents
21
+ // ===========================================================================
22
+ addSubagent(id, agentType, description) {
23
+ const item = {
24
+ id,
25
+ type: 'subagent',
26
+ status: 'running',
27
+ startTime: Date.now(),
28
+ agentType,
29
+ description,
30
+ toolCount: 0,
31
+ tokenCount: 0,
32
+ lastAction: '',
33
+ lastActionDetails: [],
34
+ };
35
+ this.region.addItem(item);
36
+ this.host.requestRender();
37
+ }
38
+ updateSubagentTool(id, toolName, summary) {
39
+ const item = this.region.getItem(id);
40
+ if (item && item.type === 'subagent') {
41
+ const newAction = `${toolName}: ${summary}`;
42
+ const updatedDetails = item.lastAction
43
+ ? [...item.lastActionDetails, item.lastAction]
44
+ : [...item.lastActionDetails];
45
+ this.region.updateItem(id, {
46
+ toolCount: item.toolCount + 1,
47
+ lastAction: newAction,
48
+ lastActionDetails: updatedDetails,
49
+ });
50
+ this.host.requestRender();
51
+ }
52
+ }
53
+ completeSubagent(id, success, tokenCount, _error) {
54
+ const item = this.region.getItem(id);
55
+ if (item && item.type === 'subagent') {
56
+ this.region.updateItem(id, {
57
+ status: success ? 'done' : 'error',
58
+ tokenCount: tokenCount ?? item.tokenCount,
59
+ endTime: Date.now(),
60
+ });
61
+ this.region.completeItem(id, success ? 'done' : 'error');
62
+ this.host.requestRender();
63
+ }
64
+ }
65
+ removeSubagent(id) {
66
+ const item = this.region.removeItem(id);
67
+ this.host.requestRender();
68
+ return item;
69
+ }
70
+ commitSubagent(id, resultContent, success) {
71
+ const item = this.region.removeItem(id);
72
+ if (item && item.type === 'subagent') {
73
+ const toolCount = item.toolCount;
74
+ const tokenCount = item.tokenCount;
75
+ const duration = item.endTime
76
+ ? Math.round((item.endTime - item.startTime) / 1000)
77
+ : Math.round((Date.now() - item.startTime) / 1000);
78
+ const tokenStr = tokenCount > 0 ? `, ${formatTokens(tokenCount)} tokens` : '';
79
+ const summary = `${String(toolCount)} tool calls${tokenStr}, ${String(duration)}s`;
80
+ this.host.print({
81
+ type: 'tool-result',
82
+ name: item.agentType,
83
+ params: item.description,
84
+ summary,
85
+ content: resultContent || undefined,
86
+ success,
87
+ });
88
+ this.host.setSpinnerText(null);
89
+ }
90
+ this.host.requestRender();
91
+ return item;
92
+ }
93
+ // ===========================================================================
94
+ // Bash commands
95
+ // ===========================================================================
96
+ addBashCommand(id, command) {
97
+ const item = {
98
+ id,
99
+ type: 'bash',
100
+ status: 'running',
101
+ startTime: Date.now(),
102
+ command,
103
+ output: [],
104
+ };
105
+ this.region.addItem(item);
106
+ this.activeBashToolUseId = id;
107
+ this.host.requestRender();
108
+ }
109
+ updateBashOutput(id, line) {
110
+ const item = this.region.getItem(id);
111
+ if (item && item.type === 'bash') {
112
+ item.output.push(line);
113
+ this.region.updateItem(id, { output: [...item.output] });
114
+ this.host.requestRender();
115
+ }
116
+ }
117
+ completeBashCommand(id, exitCode) {
118
+ const item = this.region.getItem(id);
119
+ if (item && item.type === 'bash') {
120
+ this.region.updateItem(id, {
121
+ status: exitCode === 0 ? 'done' : 'error',
122
+ exitCode,
123
+ endTime: Date.now(),
124
+ });
125
+ this.region.completeItem(id, exitCode === 0 ? 'done' : 'error');
126
+ if (this.activeBashToolUseId === id) {
127
+ this.activeBashToolUseId = null;
128
+ }
129
+ this.host.requestRender();
130
+ }
131
+ }
132
+ commitBashCommand(id) {
133
+ if (this.activeBashToolUseId === id) {
134
+ this.activeBashToolUseId = null;
135
+ }
136
+ const item = this.region.removeItem(id);
137
+ if (item && item.type === 'bash') {
138
+ const output = item.output.join('\n') || '(no output)';
139
+ const exitCode = item.exitCode ?? 0;
140
+ this.host.print({
141
+ type: 'tool-result',
142
+ name: 'Bash',
143
+ params: item.command,
144
+ summary: exitCode === 0 ? 'Completed' : `Exit code ${String(exitCode)}`,
145
+ content: output,
146
+ success: exitCode === 0,
147
+ });
148
+ }
149
+ this.host.requestRender();
150
+ }
151
+ backgroundBashCommand() {
152
+ if (!this.activeBashToolUseId)
153
+ return;
154
+ const item = this.region.getItem(this.activeBashToolUseId);
155
+ if (!item || item.type !== 'bash')
156
+ return;
157
+ const bashItem = item;
158
+ const id = this.activeBashToolUseId;
159
+ this.region.updateItem(id, { background: true });
160
+ this.region.removeItem(id);
161
+ this.activeBashToolUseId = null;
162
+ this.host.print({
163
+ type: 'info',
164
+ message: `Task moved to background (id: ${id.slice(0, 8)}). Use /tasks or Ctrl+B to view.`,
165
+ });
166
+ this.host.emit('backgroundBash', {
167
+ toolUseId: id,
168
+ command: bashItem.command,
169
+ partialOutput: bashItem.output.join('\n'),
170
+ startTime: bashItem.startTime,
171
+ });
172
+ this.host.requestRender();
173
+ }
174
+ // ===========================================================================
175
+ // Queries
176
+ // ===========================================================================
177
+ hasActiveBash() {
178
+ return this.activeBashToolUseId !== null;
179
+ }
180
+ getActiveBashInfo() {
181
+ if (!this.activeBashToolUseId)
182
+ return null;
183
+ const item = this.region.getItem(this.activeBashToolUseId);
184
+ if (!item || item.type !== 'bash')
185
+ return null;
186
+ return {
187
+ toolUseId: this.activeBashToolUseId,
188
+ startTime: item.startTime,
189
+ };
190
+ }
191
+ clearLiveRegion() {
192
+ this.region.clear();
193
+ this.host.requestRender();
194
+ }
195
+ toggleLiveRegionExpanded() {
196
+ this.region.toggleExpanded();
197
+ this.host.requestRender();
198
+ }
199
+ hasLiveItems() {
200
+ return this.region.hasItems();
201
+ }
202
+ getLiveRegion() {
203
+ return this.region;
204
+ }
205
+ }
@@ -146,10 +146,6 @@ export declare class LiveRegion {
146
146
  private renderBashItem;
147
147
  private renderToolItem;
148
148
  private renderEphemeralNotification;
149
- /**
150
- * Format token count for display (e.g., 18.1k)
151
- */
152
- private formatTokens;
153
149
  /**
154
150
  * Truncate a line to fit within width.
155
151
  */
@@ -12,6 +12,7 @@
12
12
  */
13
13
  import { getStyles } from '../themes/index.js';
14
14
  import { getVisibleLength } from './line-utils.js';
15
+ import { formatTokens } from './base/index.js';
15
16
  // =============================================================================
16
17
  // Constants
17
18
  // =============================================================================
@@ -206,7 +207,7 @@ export class LiveRegion {
206
207
  if (item.status === 'done') {
207
208
  // Completed: show summary
208
209
  const duration = item.endTime ? Math.round((item.endTime - item.startTime) / 1000) : 0;
209
- const tokenStr = options.showTokens ? ` · ${this.formatTokens(item.tokenCount)} tokens` : '';
210
+ const tokenStr = options.showTokens ? ` · ${formatTokens(item.tokenCount)} tokens` : '';
210
211
  const summary = ` ${RESULT_MARKER} Done (${String(item.toolCount)} tool uses${tokenStr} · ${String(duration)}s)`;
211
212
  lines.push(s.muted(summary));
212
213
  }
@@ -229,7 +230,7 @@ export class LiveRegion {
229
230
  }
230
231
  }
231
232
  // Hints
232
- lines.push(` ${s.muted('ctrl+b to run in background')}`);
233
+ // ctrl+b background: coming soon
233
234
  }
234
235
  return lines;
235
236
  }
@@ -259,7 +260,7 @@ export class LiveRegion {
259
260
  const branch = isLast ? TREE_END : TREE_BRANCH;
260
261
  const continuation = isLast ? ' ' : `${TREE_CONTINUE} `;
261
262
  // Agent line: description · tool count · tokens
262
- const tokenStr = options.showTokens ? ` · ${this.formatTokens(item.tokenCount)} tokens` : '';
263
+ const tokenStr = options.showTokens ? ` · ${formatTokens(item.tokenCount)} tokens` : '';
263
264
  const toolWord = item.toolCount === 1 ? 'tool use' : 'tool uses';
264
265
  const agentLine = ` ${branch} ${item.description} · ${String(item.toolCount)} ${toolWord}${tokenStr}`;
265
266
  lines.push(agentLine);
@@ -276,7 +277,7 @@ export class LiveRegion {
276
277
  }
277
278
  // Hint at the end
278
279
  if (!allDone) {
279
- lines.push(` ${s.muted('ctrl+b to run in background')}`);
280
+ // ctrl+b background: coming soon
280
281
  }
281
282
  return lines;
282
283
  }
@@ -323,7 +324,7 @@ export class LiveRegion {
323
324
  }
324
325
  // Hint for running bash
325
326
  if (item.status === 'running') {
326
- lines.push(` ${s.muted('ctrl+b to run in background')}`);
327
+ // ctrl+b background: coming soon
327
328
  }
328
329
  return lines;
329
330
  }
@@ -352,15 +353,6 @@ export class LiveRegion {
352
353
  // =========================================================================
353
354
  // Helpers
354
355
  // =========================================================================
355
- /**
356
- * Format token count for display (e.g., 18.1k)
357
- */
358
- formatTokens(tokens) {
359
- if (tokens >= 1000) {
360
- return `${(tokens / 1000).toFixed(1)}k`;
361
- }
362
- return String(tokens);
363
- }
364
356
  /**
365
357
  * Truncate a line to fit within width.
366
358
  */
@@ -16,4 +16,4 @@ export declare function combineHorizontally(left: string[], right: string[], gap
16
16
  * @param version - Version string to append to logo
17
17
  * @param projectName - Optional active project name to show
18
18
  */
19
- export declare function renderMascotWithLogo(mascotSetting: MascotSetting, version: string, projectName?: string | null): string[];
19
+ export declare function renderMascotWithLogo(mascotSetting: MascotSetting, version: string, projectName?: string | null, highlights?: string[]): string[];
@@ -5,6 +5,11 @@
5
5
  */
6
6
  import { getStyles } from '../../themes/index.js';
7
7
  import { getExpressionForSetting } from './expressions.js';
8
+ import { getTerminalWidth } from '../terminal.js';
9
+ function stripAnsi(str) {
10
+ // eslint-disable-next-line no-control-regex
11
+ return str.replace(/\x1B\[[0-9;]*[a-zA-Z]/g, '');
12
+ }
8
13
  // The compilr logo (6 lines to match mascot height)
9
14
  const LOGO_LINES = [
10
15
  " ___ ___ _ __ ___ _ __ (_) |_ __",
@@ -36,7 +41,7 @@ export function combineHorizontally(left, right, gap) {
36
41
  * @param version - Version string to append to logo
37
42
  * @param projectName - Optional active project name to show
38
43
  */
39
- export function renderMascotWithLogo(mascotSetting, version, projectName) {
44
+ export function renderMascotWithLogo(mascotSetting, version, projectName, highlights) {
40
45
  const s = getStyles();
41
46
  // Get mascot expression (or null for 'none')
42
47
  const mascotLines = getExpressionForSetting(mascotSetting);
@@ -65,7 +70,7 @@ export function renderMascotWithLogo(mascotSetting, version, projectName) {
65
70
  result.push(`Project: ${projectName}`);
66
71
  }
67
72
  // Apply colors: mascot gets secondary color, logo gets accent
68
- return result.map((line, index) => {
73
+ const colored = result.map((line, index) => {
69
74
  if (!mascotLines) {
70
75
  // No mascot - color the logo with accent
71
76
  if (index < logoWithVersion.length) {
@@ -94,4 +99,34 @@ export function renderMascotWithLogo(mascotSetting, version, projectName) {
94
99
  }
95
100
  return line;
96
101
  });
102
+ // Append "What's New" highlights column (wide terminals only)
103
+ if (highlights && highlights.length > 0) {
104
+ const termWidth = getTerminalWidth();
105
+ const baseWidth = Math.max(...colored.map((l) => stripAnsi(l).length));
106
+ const highlightsGap = 3;
107
+ const minHighlightsCol = 25;
108
+ if (termWidth >= baseWidth + highlightsGap + minHighlightsCol) {
109
+ // Build styled highlights column (6 lines to match mascot height)
110
+ const hlLines = [];
111
+ hlLines.push(s.primaryBold("[^_^] What's New"));
112
+ hlLines.push(s.muted('───────────────────'));
113
+ for (const h of highlights.slice(0, 3)) {
114
+ hlLines.push(`${s.secondary('+')} ${h}`);
115
+ }
116
+ hlLines.push(s.muted('/changelog for more'));
117
+ while (hlLines.length < 6) {
118
+ hlLines.push('');
119
+ }
120
+ // Append highlights to the first 6 lines of the colored result
121
+ return colored.map((line, i) => {
122
+ if (i < hlLines.length && hlLines[i]) {
123
+ const visualLen = stripAnsi(line).length;
124
+ const pad = Math.max(1, baseWidth - visualLen + highlightsGap);
125
+ return line + ' '.repeat(pad) + hlLines[i];
126
+ }
127
+ return line;
128
+ });
129
+ }
130
+ }
131
+ return colored;
97
132
  }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Tutorial Content
3
+ *
4
+ * Re-exports the tutorial registry for use by tutorial-overlay-v2.
5
+ * This file maintains backward compatibility while the actual content
6
+ * is now organized in separate files under ./tutorials/.
7
+ */
8
+ export type { TutorialPage, TutorialItem, TutorialTab } from './tutorial-types.js';
9
+ export { buildTutorialRegistry as buildTutorialContent } from './tutorial-registry.js';
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Tutorial Content
3
+ *
4
+ * Re-exports the tutorial registry for use by tutorial-overlay-v2.
5
+ * This file maintains backward compatibility while the actual content
6
+ * is now organized in separate files under ./tutorials/.
7
+ */
8
+ // Re-export the builder from the registry
9
+ export { buildTutorialRegistry as buildTutorialContent } from './tutorial-registry.js';
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Tutorial Registry
3
+ *
4
+ * Combines all individual tutorials into the tab structure.
5
+ * Add new tutorials here as they are created.
6
+ */
7
+ import type { ThemeStyleFunctions } from '../../../themes/index.js';
8
+ import type { TutorialTab } from './tutorial-types.js';
9
+ /**
10
+ * Build all tutorial content organized into tabs.
11
+ */
12
+ export declare function buildTutorialRegistry(s: ThemeStyleFunctions): TutorialTab[];
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Tutorial Registry
3
+ *
4
+ * Combines all individual tutorials into the tab structure.
5
+ * Add new tutorials here as they are created.
6
+ */
7
+ // Import individual tutorials
8
+ import { welcomeTutorial } from './tutorials/basics/welcome.js';
9
+ import { firstProjectTutorial } from './tutorials/basics/first-project.js';
10
+ import { firstConversationTutorial } from './tutorials/basics/first-conversation.js';
11
+ import { navigationTutorial } from './tutorials/basics/navigation.js';
12
+ import { newProjectTutorial } from './tutorials/projects/new-project.js';
13
+ import { managingProjectsTutorial } from './tutorials/projects/managing-projects.js';
14
+ import { sessionManagementTutorial } from './tutorials/projects/session-management.js';
15
+ import { anchorsTutorial } from './tutorials/projects/anchors.js';
16
+ import { importProjectTutorial } from './tutorials/projects/import-project.js';
17
+ import { designTutorial } from './tutorials/planning/design.js';
18
+ import { backlogTutorial } from './tutorials/planning/backlog.js';
19
+ import { sketchTutorial } from './tutorials/planning/sketch.js';
20
+ import { scaffoldTutorial } from './tutorials/planning/scaffold.js';
21
+ import { buildTutorial } from './tutorials/planning/build.js';
22
+ import { prdTutorial } from './tutorials/planning/prd.js';
23
+ import { archTutorial } from './tutorials/planning/arch.js';
24
+ import { docsTutorial } from './tutorials/planning/docs.js';
25
+ import { teamOverviewTutorial } from './tutorials/teams/team-overview.js';
26
+ import { workingWithAgentsTutorial } from './tutorials/teams/working-with-agents.js';
27
+ import { backgroundExecutionTutorial } from './tutorials/teams/background-execution.js';
28
+ import { taskAssignmentTutorial } from './tutorials/teams/task-assignment.js';
29
+ import { multiTerminalTutorial } from './tutorials/teams/multi-terminal.js';
30
+ import { modelSelectionTutorial } from './tutorials/config/model-selection.js';
31
+ import { settingsConfigTutorial } from './tutorials/config/settings-config.js';
32
+ import { contextManagementTutorial } from './tutorials/config/context-management.js';
33
+ import { permissionsSafetyTutorial } from './tutorials/config/permissions-safety.js';
34
+ import { mcpServersTutorial } from './tutorials/config/mcp-servers.js';
35
+ // =============================================================================
36
+ // Registry Builder
37
+ // =============================================================================
38
+ /**
39
+ * Build all tutorial content organized into tabs.
40
+ */
41
+ export function buildTutorialRegistry(s) {
42
+ return [
43
+ // =========================================================================
44
+ // Tab 1: Basics
45
+ // =========================================================================
46
+ {
47
+ id: 'basics',
48
+ label: 'Basics',
49
+ items: [
50
+ welcomeTutorial(s),
51
+ firstProjectTutorial(s),
52
+ firstConversationTutorial(s),
53
+ navigationTutorial(s),
54
+ ],
55
+ },
56
+ // =========================================================================
57
+ // Tab 2: Projects
58
+ // =========================================================================
59
+ {
60
+ id: 'projects',
61
+ label: 'Projects',
62
+ items: [
63
+ newProjectTutorial(s),
64
+ importProjectTutorial(s),
65
+ managingProjectsTutorial(s),
66
+ sessionManagementTutorial(s),
67
+ anchorsTutorial(s),
68
+ ],
69
+ },
70
+ // =========================================================================
71
+ // Tab 3: Plan & Build
72
+ // =========================================================================
73
+ {
74
+ id: 'plan-build',
75
+ label: 'Plan & Build',
76
+ items: [
77
+ designTutorial(s),
78
+ sketchTutorial(s),
79
+ backlogTutorial(s),
80
+ prdTutorial(s),
81
+ archTutorial(s),
82
+ docsTutorial(s),
83
+ scaffoldTutorial(s),
84
+ buildTutorial(s),
85
+ ],
86
+ },
87
+ // =========================================================================
88
+ // Tab 4: Teams
89
+ // =========================================================================
90
+ {
91
+ id: 'teams',
92
+ label: 'Teams',
93
+ items: [
94
+ teamOverviewTutorial(s),
95
+ workingWithAgentsTutorial(s),
96
+ backgroundExecutionTutorial(s),
97
+ taskAssignmentTutorial(s),
98
+ multiTerminalTutorial(s),
99
+ ],
100
+ },
101
+ // =========================================================================
102
+ // Tab 5: Config
103
+ // =========================================================================
104
+ {
105
+ id: 'config',
106
+ label: 'Config',
107
+ items: [
108
+ modelSelectionTutorial(s),
109
+ settingsConfigTutorial(s),
110
+ contextManagementTutorial(s),
111
+ permissionsSafetyTutorial(s),
112
+ mcpServersTutorial(s),
113
+ ],
114
+ },
115
+ ];
116
+ }
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Tutorial Types
3
+ *
4
+ * Shared types for the tutorial system.
5
+ */
6
+ import type { ThemeStyleFunctions } from '../../../themes/index.js';
7
+ /**
8
+ * A single page within a tutorial.
9
+ * Each tutorial can have multiple pages that the user navigates through.
10
+ */
11
+ export interface TutorialPage {
12
+ title: string;
13
+ lines: string[];
14
+ }
15
+ /**
16
+ * A tutorial item representing a complete tutorial topic.
17
+ */
18
+ export interface TutorialItem {
19
+ id: string;
20
+ title: string;
21
+ description: string;
22
+ pages: TutorialPage[];
23
+ }
24
+ /**
25
+ * A tab grouping related tutorials together.
26
+ */
27
+ export interface TutorialTab {
28
+ id: string;
29
+ label: string;
30
+ items: TutorialItem[];
31
+ }
32
+ /**
33
+ * Function signature for building a tutorial with theme styles.
34
+ */
35
+ export type TutorialBuilder = (s: ThemeStyleFunctions) => TutorialItem;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Tutorial Types
3
+ *
4
+ * Shared types for the tutorial system.
5
+ */
6
+ export {};
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Your First Conversation Tutorial
3
+ *
4
+ * How to interact with the AI in REPL mode.
5
+ */
6
+ import type { TutorialBuilder } from '../../tutorial-types.js';
7
+ export declare const firstConversationTutorial: TutorialBuilder;