@compilr-dev/cli 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (591) hide show
  1. package/README.md +236 -68
  2. package/dist/.tsbuildinfo.app +1 -0
  3. package/dist/.tsbuildinfo.data +1 -0
  4. package/dist/.tsbuildinfo.domain +1 -0
  5. package/dist/.tsbuildinfo.foundation +1 -0
  6. package/dist/agent.d.ts +61 -4
  7. package/dist/agent.js +241 -245
  8. package/dist/anchors/index.d.ts +1 -1
  9. package/dist/anchors/index.js +1 -1
  10. package/dist/anchors/project-anchors.d.ts +2 -2
  11. package/dist/anchors/project-anchors.js +1 -1
  12. package/dist/auth/api-client.d.ts +124 -0
  13. package/dist/auth/api-client.js +261 -0
  14. package/dist/auth/index.d.ts +172 -0
  15. package/dist/auth/index.js +545 -0
  16. package/dist/auth/storage.d.ts +52 -0
  17. package/dist/auth/storage.js +118 -0
  18. package/dist/changelog/index.d.ts +16 -0
  19. package/dist/changelog/index.js +24 -0
  20. package/dist/changelog/releases.d.ts +17 -0
  21. package/dist/changelog/releases.js +63 -0
  22. package/dist/commands-v2/handlers/auth.d.ts +10 -0
  23. package/dist/commands-v2/handlers/auth.js +118 -0
  24. package/dist/commands-v2/handlers/background.d.ts +14 -0
  25. package/dist/commands-v2/handlers/background.js +276 -0
  26. package/dist/commands-v2/handlers/context.js +266 -81
  27. package/dist/commands-v2/handlers/core.d.ts +1 -0
  28. package/dist/commands-v2/handlers/core.js +133 -8
  29. package/dist/commands-v2/handlers/debug.js +18 -0
  30. package/dist/commands-v2/handlers/delegations.d.ts +8 -0
  31. package/dist/commands-v2/handlers/delegations.js +29 -0
  32. package/dist/commands-v2/handlers/files.d.ts +8 -0
  33. package/dist/commands-v2/handlers/files.js +162 -0
  34. package/dist/commands-v2/handlers/filter.d.ts +9 -0
  35. package/dist/commands-v2/handlers/filter.js +130 -0
  36. package/dist/commands-v2/handlers/games.d.ts +7 -0
  37. package/dist/commands-v2/handlers/games.js +57 -0
  38. package/dist/commands-v2/handlers/index.d.ts +13 -0
  39. package/dist/commands-v2/handlers/index.js +39 -0
  40. package/dist/commands-v2/handlers/mcp.d.ts +8 -0
  41. package/dist/commands-v2/handlers/mcp.js +39 -0
  42. package/dist/commands-v2/handlers/notifications.d.ts +9 -0
  43. package/dist/commands-v2/handlers/notifications.js +34 -0
  44. package/dist/commands-v2/handlers/project.js +244 -23
  45. package/dist/commands-v2/handlers/reset.d.ts +11 -0
  46. package/dist/commands-v2/handlers/reset.js +118 -0
  47. package/dist/commands-v2/handlers/session.d.ts +161 -0
  48. package/dist/commands-v2/handlers/session.js +805 -0
  49. package/dist/commands-v2/handlers/settings.d.ts +2 -0
  50. package/dist/commands-v2/handlers/settings.js +217 -35
  51. package/dist/commands-v2/handlers/tasks.d.ts +5 -0
  52. package/dist/commands-v2/handlers/tasks.js +36 -0
  53. package/dist/commands-v2/handlers/team.d.ts +9 -0
  54. package/dist/commands-v2/handlers/team.js +549 -0
  55. package/dist/commands-v2/handlers/terminals.d.ts +9 -0
  56. package/dist/commands-v2/handlers/terminals.js +34 -0
  57. package/dist/commands-v2/index.d.ts +3 -2
  58. package/dist/commands-v2/index.js +4 -1
  59. package/dist/commands-v2/registry.d.ts +15 -0
  60. package/dist/commands-v2/registry.js +34 -0
  61. package/dist/commands-v2/types.d.ts +81 -3
  62. package/dist/commands.js +13 -0
  63. package/dist/compilr-diff-companion.vsix +0 -0
  64. package/dist/db/index.js +98 -4
  65. package/dist/db/repositories/document-repository.d.ts +2 -0
  66. package/dist/db/repositories/document-repository.js +5 -1
  67. package/dist/db/repositories/index.d.ts +2 -0
  68. package/dist/db/repositories/index.js +1 -0
  69. package/dist/db/repositories/plan-repository.d.ts +101 -0
  70. package/dist/db/repositories/plan-repository.js +275 -0
  71. package/dist/db/repositories/project-repository.d.ts +6 -0
  72. package/dist/db/repositories/project-repository.js +41 -0
  73. package/dist/db/repositories/work-item-repository.d.ts +15 -0
  74. package/dist/db/repositories/work-item-repository.js +69 -4
  75. package/dist/db/schema.d.ts +40 -3
  76. package/dist/db/schema.js +66 -3
  77. package/dist/episodes/index.d.ts +20 -0
  78. package/dist/episodes/index.js +27 -0
  79. package/dist/episodes/recorder.d.ts +51 -0
  80. package/dist/episodes/recorder.js +195 -0
  81. package/dist/episodes/significant-work.d.ts +21 -0
  82. package/dist/episodes/significant-work.js +56 -0
  83. package/dist/episodes/store.d.ts +38 -0
  84. package/dist/episodes/store.js +199 -0
  85. package/dist/episodes/types.d.ts +35 -0
  86. package/dist/episodes/types.js +6 -0
  87. package/dist/episodes/work-at-risk.d.ts +12 -0
  88. package/dist/episodes/work-at-risk.js +38 -0
  89. package/dist/episodes/work-summary-anchor.d.ts +23 -0
  90. package/dist/episodes/work-summary-anchor.js +73 -0
  91. package/dist/games/coins.d.ts +66 -0
  92. package/dist/games/coins.js +165 -0
  93. package/dist/games/game-base.d.ts +84 -0
  94. package/dist/games/game-base.js +204 -0
  95. package/dist/games/index.d.ts +16 -0
  96. package/dist/games/index.js +49 -0
  97. package/dist/games/scores.d.ts +69 -0
  98. package/dist/games/scores.js +191 -0
  99. package/dist/games/tetris/board.d.ts +59 -0
  100. package/dist/games/tetris/board.js +170 -0
  101. package/dist/games/tetris/index.d.ts +109 -0
  102. package/dist/games/tetris/index.js +610 -0
  103. package/dist/games/tetris/pieces.d.ts +44 -0
  104. package/dist/games/tetris/pieces.js +271 -0
  105. package/dist/games/tetris/renderer.d.ts +26 -0
  106. package/dist/games/tetris/renderer.js +77 -0
  107. package/dist/guide/guide-content.d.ts +23 -0
  108. package/dist/guide/guide-content.js +196 -0
  109. package/dist/guide/index.d.ts +8 -0
  110. package/dist/guide/index.js +7 -0
  111. package/dist/guide/shared-content.d.ts +37 -0
  112. package/dist/guide/shared-content.js +1272 -0
  113. package/dist/guide/tutorial-helpers.d.ts +57 -0
  114. package/dist/guide/tutorial-helpers.js +147 -0
  115. package/dist/handlers/ask-user-handlers.d.ts +32 -0
  116. package/dist/handlers/ask-user-handlers.js +104 -0
  117. package/dist/handlers/delegation-handlers.d.ts +34 -0
  118. package/dist/handlers/delegation-handlers.js +291 -0
  119. package/dist/handlers/permission-handler.d.ts +30 -0
  120. package/dist/handlers/permission-handler.js +205 -0
  121. package/dist/index.d.ts +11 -1
  122. package/dist/index.js +448 -271
  123. package/dist/input-handlers/memory-handler.d.ts +1 -1
  124. package/dist/input-handlers/memory-handler.js +2 -1
  125. package/dist/models/index.d.ts +10 -0
  126. package/dist/models/index.js +12 -0
  127. package/dist/models/model-registry.d.ts +38 -0
  128. package/dist/models/model-registry.js +69 -0
  129. package/dist/models/model-tiers.d.ts +28 -0
  130. package/dist/models/model-tiers.js +71 -0
  131. package/dist/models/model-validation.d.ts +25 -0
  132. package/dist/models/model-validation.js +291 -0
  133. package/dist/models/ollama-models.d.ts +73 -0
  134. package/dist/models/ollama-models.js +178 -0
  135. package/dist/models/provider-types.d.ts +6 -0
  136. package/dist/models/provider-types.js +1 -0
  137. package/dist/models/providers.d.ts +35 -0
  138. package/dist/models/providers.js +58 -0
  139. package/dist/models/types.d.ts +4 -0
  140. package/dist/models/types.js +4 -0
  141. package/dist/multi-agent/activity.d.ts +21 -0
  142. package/dist/multi-agent/activity.js +34 -0
  143. package/dist/multi-agent/agent-selection.d.ts +55 -0
  144. package/dist/multi-agent/agent-selection.js +90 -0
  145. package/dist/multi-agent/artifacts.d.ts +197 -0
  146. package/dist/multi-agent/artifacts.js +379 -0
  147. package/dist/multi-agent/checkpointer.d.ts +138 -0
  148. package/dist/multi-agent/checkpointer.js +471 -0
  149. package/dist/multi-agent/collision-utils.d.ts +16 -0
  150. package/dist/multi-agent/collision-utils.js +28 -0
  151. package/dist/multi-agent/context-resolver.d.ts +97 -0
  152. package/dist/multi-agent/context-resolver.js +316 -0
  153. package/dist/multi-agent/custom-agents.d.ts +83 -0
  154. package/dist/multi-agent/custom-agents.js +227 -0
  155. package/dist/multi-agent/delegation-tracker.d.ts +157 -0
  156. package/dist/multi-agent/delegation-tracker.js +243 -0
  157. package/dist/multi-agent/file-lock-hook.d.ts +29 -0
  158. package/dist/multi-agent/file-lock-hook.js +97 -0
  159. package/dist/multi-agent/file-locks.d.ts +58 -0
  160. package/dist/multi-agent/file-locks.js +194 -0
  161. package/dist/multi-agent/index.d.ts +24 -0
  162. package/dist/multi-agent/index.js +30 -0
  163. package/dist/multi-agent/mention-parser.d.ts +64 -0
  164. package/dist/multi-agent/mention-parser.js +146 -0
  165. package/dist/multi-agent/notification-manager.d.ts +84 -0
  166. package/dist/multi-agent/notification-manager.js +224 -0
  167. package/dist/multi-agent/pending-requests.d.ts +122 -0
  168. package/dist/multi-agent/pending-requests.js +155 -0
  169. package/dist/multi-agent/session-registry.d.ts +139 -0
  170. package/dist/multi-agent/session-registry.js +514 -0
  171. package/dist/multi-agent/shared-context.d.ts +293 -0
  172. package/dist/multi-agent/shared-context.js +671 -0
  173. package/dist/multi-agent/skill-requirements.d.ts +66 -0
  174. package/dist/multi-agent/skill-requirements.js +178 -0
  175. package/dist/multi-agent/task-assignment.d.ts +69 -0
  176. package/dist/multi-agent/task-assignment.js +123 -0
  177. package/dist/multi-agent/task-suggestion.d.ts +31 -0
  178. package/dist/multi-agent/task-suggestion.js +72 -0
  179. package/dist/multi-agent/team-agent.d.ts +201 -0
  180. package/dist/multi-agent/team-agent.js +488 -0
  181. package/dist/multi-agent/team.d.ts +286 -0
  182. package/dist/multi-agent/team.js +610 -0
  183. package/dist/multi-agent/tool-config.d.ts +110 -0
  184. package/dist/multi-agent/tool-config.js +661 -0
  185. package/dist/multi-agent/types.d.ts +211 -0
  186. package/dist/multi-agent/types.js +617 -0
  187. package/dist/prompts/plan-mode-prompt.d.ts +11 -0
  188. package/dist/prompts/plan-mode-prompt.js +95 -0
  189. package/dist/repl-helpers.js +3 -2
  190. package/dist/repl-v2.d.ts +401 -2
  191. package/dist/repl-v2.js +2577 -65
  192. package/dist/session/index.d.ts +6 -0
  193. package/dist/session/index.js +6 -0
  194. package/dist/session/project-session-manager.d.ts +158 -0
  195. package/dist/session/project-session-manager.js +650 -0
  196. package/dist/settings/index.d.ts +133 -13
  197. package/dist/settings/index.js +329 -24
  198. package/dist/settings/mcp-config.d.ts +76 -0
  199. package/dist/settings/mcp-config.js +143 -0
  200. package/dist/settings/paths.d.ts +4 -0
  201. package/dist/settings/paths.js +6 -0
  202. package/dist/shared-handlers.d.ts +62 -0
  203. package/dist/shared-handlers.js +48 -0
  204. package/dist/system-prompt/builder.d.ts +5 -0
  205. package/dist/system-prompt/builder.js +4 -0
  206. package/dist/system-prompt/index.d.ts +18 -0
  207. package/dist/system-prompt/index.js +18 -0
  208. package/dist/system-prompt/modules.d.ts +5 -0
  209. package/dist/system-prompt/modules.js +4 -0
  210. package/dist/tabbed-menu.js +2 -1
  211. package/dist/templates/compilr-md-import.d.ts +16 -0
  212. package/dist/templates/compilr-md-import.js +241 -0
  213. package/dist/templates/compilr-md.js +10 -61
  214. package/dist/templates/config-json.d.ts +1 -25
  215. package/dist/templates/index.d.ts +2 -0
  216. package/dist/templates/index.js +34 -73
  217. package/dist/tool-names.d.ts +108 -0
  218. package/dist/tool-names.js +227 -0
  219. package/dist/tools/anchor-tools.d.ts +4 -4
  220. package/dist/tools/anchor-tools.js +1 -1
  221. package/dist/tools/artifact-tools.d.ts +42 -0
  222. package/dist/tools/artifact-tools.js +328 -0
  223. package/dist/tools/ask-user-simple.d.ts +1 -1
  224. package/dist/tools/ask-user-simple.js +2 -1
  225. package/dist/tools/ask-user.d.ts +1 -1
  226. package/dist/tools/ask-user.js +2 -1
  227. package/dist/tools/backlog-wrappers.d.ts +5 -3
  228. package/dist/tools/backlog-wrappers.js +16 -1
  229. package/dist/tools/backlog.d.ts +2 -2
  230. package/dist/tools/backlog.js +1 -1
  231. package/dist/tools/db-tools.d.ts +8 -61
  232. package/dist/tools/db-tools.js +8 -13
  233. package/dist/tools/delegate-background.d.ts +27 -0
  234. package/dist/tools/delegate-background.js +115 -0
  235. package/dist/tools/delegate.d.ts +22 -0
  236. package/dist/tools/delegate.js +97 -0
  237. package/dist/tools/delegation-status.d.ts +16 -0
  238. package/dist/tools/delegation-status.js +128 -0
  239. package/dist/tools/document-db.d.ts +5 -5
  240. package/dist/tools/document-db.js +1 -1
  241. package/dist/tools/guide-tool.d.ts +12 -0
  242. package/dist/tools/guide-tool.js +59 -0
  243. package/dist/tools/handoff.d.ts +25 -0
  244. package/dist/tools/handoff.js +99 -0
  245. package/dist/tools/meta-tools.d.ts +26 -0
  246. package/dist/tools/meta-tools.js +47 -0
  247. package/dist/tools/plan-tools.d.ts +54 -0
  248. package/dist/tools/plan-tools.js +338 -0
  249. package/dist/tools/platform-adapter.d.ts +29 -0
  250. package/dist/tools/platform-adapter.js +394 -0
  251. package/dist/tools/project-db.d.ts +5 -73
  252. package/dist/tools/project-db.js +5 -336
  253. package/dist/tools/recall-work-tool.d.ts +18 -0
  254. package/dist/tools/recall-work-tool.js +82 -0
  255. package/dist/tools/workitem-db.d.ts +43 -11
  256. package/dist/tools/workitem-db.js +186 -5
  257. package/dist/tools.d.ts +67 -2
  258. package/dist/tools.js +237 -47
  259. package/dist/ui/autocomplete-controller.d.ts +42 -0
  260. package/dist/ui/autocomplete-controller.js +384 -0
  261. package/dist/ui/base/index.d.ts +1 -1
  262. package/dist/ui/base/index.js +1 -1
  263. package/dist/ui/base/overlay-base-v2.d.ts +10 -0
  264. package/dist/ui/base/overlay-base-v2.js +14 -0
  265. package/dist/ui/base/render-utils.d.ts +19 -0
  266. package/dist/ui/base/render-utils.js +25 -0
  267. package/dist/ui/base/tabbed-list-overlay-v2.d.ts +16 -1
  268. package/dist/ui/base/tabbed-list-overlay-v2.js +19 -1
  269. package/dist/ui/constants/labels.d.ts +14 -0
  270. package/dist/ui/constants/labels.js +51 -0
  271. package/dist/ui/conversation-store.d.ts +55 -0
  272. package/dist/ui/conversation-store.js +107 -0
  273. package/dist/ui/conversation.js +11 -13
  274. package/dist/ui/diff.d.ts +7 -1
  275. package/dist/ui/diff.js +85 -48
  276. package/dist/ui/ephemeral.js +3 -9
  277. package/dist/ui/file-autocomplete.d.ts +24 -0
  278. package/dist/ui/file-autocomplete.js +56 -0
  279. package/dist/ui/footer-renderer.d.ts +69 -0
  280. package/dist/ui/footer-renderer.js +431 -0
  281. package/dist/ui/footer.d.ts +74 -7
  282. package/dist/ui/footer.js +173 -16
  283. package/dist/ui/input-controller.d.ts +51 -0
  284. package/dist/ui/input-controller.js +176 -0
  285. package/dist/ui/input-prompt.d.ts +19 -0
  286. package/dist/ui/input-prompt.js +206 -14
  287. package/dist/ui/keyboard-handler.d.ts +57 -0
  288. package/dist/ui/keyboard-handler.js +557 -0
  289. package/dist/ui/live-region-facade.d.ts +42 -0
  290. package/dist/ui/live-region-facade.js +205 -0
  291. package/dist/ui/live-region.d.ts +0 -4
  292. package/dist/ui/live-region.js +6 -14
  293. package/dist/ui/mascot/renderer.d.ts +1 -1
  294. package/dist/ui/mascot/renderer.js +37 -2
  295. package/dist/ui/overlay/data/tutorial-content.d.ts +9 -0
  296. package/dist/ui/overlay/data/tutorial-content.js +9 -0
  297. package/dist/ui/overlay/data/tutorial-registry.d.ts +12 -0
  298. package/dist/ui/overlay/data/tutorial-registry.js +116 -0
  299. package/dist/ui/overlay/data/tutorial-types.d.ts +35 -0
  300. package/dist/ui/overlay/data/tutorial-types.js +6 -0
  301. package/dist/ui/overlay/data/tutorials/basics/first-conversation.d.ts +7 -0
  302. package/dist/ui/overlay/data/tutorials/basics/first-conversation.js +220 -0
  303. package/dist/ui/overlay/data/tutorials/basics/first-project.d.ts +7 -0
  304. package/dist/ui/overlay/data/tutorials/basics/first-project.js +284 -0
  305. package/dist/ui/overlay/data/tutorials/basics/navigation.d.ts +8 -0
  306. package/dist/ui/overlay/data/tutorials/basics/navigation.js +22 -0
  307. package/dist/ui/overlay/data/tutorials/basics/welcome.d.ts +7 -0
  308. package/dist/ui/overlay/data/tutorials/basics/welcome.js +174 -0
  309. package/dist/ui/overlay/data/tutorials/config/context-management.d.ts +7 -0
  310. package/dist/ui/overlay/data/tutorials/config/context-management.js +158 -0
  311. package/dist/ui/overlay/data/tutorials/config/mcp-servers.d.ts +8 -0
  312. package/dist/ui/overlay/data/tutorials/config/mcp-servers.js +155 -0
  313. package/dist/ui/overlay/data/tutorials/config/model-selection.d.ts +7 -0
  314. package/dist/ui/overlay/data/tutorials/config/model-selection.js +162 -0
  315. package/dist/ui/overlay/data/tutorials/config/permissions-safety.d.ts +7 -0
  316. package/dist/ui/overlay/data/tutorials/config/permissions-safety.js +163 -0
  317. package/dist/ui/overlay/data/tutorials/config/settings-config.d.ts +7 -0
  318. package/dist/ui/overlay/data/tutorials/config/settings-config.js +166 -0
  319. package/dist/ui/overlay/data/tutorials/planning/arch.d.ts +7 -0
  320. package/dist/ui/overlay/data/tutorials/planning/arch.js +168 -0
  321. package/dist/ui/overlay/data/tutorials/planning/backlog.d.ts +7 -0
  322. package/dist/ui/overlay/data/tutorials/planning/backlog.js +103 -0
  323. package/dist/ui/overlay/data/tutorials/planning/build.d.ts +7 -0
  324. package/dist/ui/overlay/data/tutorials/planning/build.js +173 -0
  325. package/dist/ui/overlay/data/tutorials/planning/design.d.ts +7 -0
  326. package/dist/ui/overlay/data/tutorials/planning/design.js +205 -0
  327. package/dist/ui/overlay/data/tutorials/planning/docs.d.ts +7 -0
  328. package/dist/ui/overlay/data/tutorials/planning/docs.js +143 -0
  329. package/dist/ui/overlay/data/tutorials/planning/prd.d.ts +7 -0
  330. package/dist/ui/overlay/data/tutorials/planning/prd.js +173 -0
  331. package/dist/ui/overlay/data/tutorials/planning/scaffold.d.ts +7 -0
  332. package/dist/ui/overlay/data/tutorials/planning/scaffold.js +164 -0
  333. package/dist/ui/overlay/data/tutorials/planning/sketch.d.ts +7 -0
  334. package/dist/ui/overlay/data/tutorials/planning/sketch.js +58 -0
  335. package/dist/ui/overlay/data/tutorials/projects/anchors.d.ts +7 -0
  336. package/dist/ui/overlay/data/tutorials/projects/anchors.js +248 -0
  337. package/dist/ui/overlay/data/tutorials/projects/import-project.d.ts +7 -0
  338. package/dist/ui/overlay/data/tutorials/projects/import-project.js +172 -0
  339. package/dist/ui/overlay/data/tutorials/projects/managing-projects.d.ts +8 -0
  340. package/dist/ui/overlay/data/tutorials/projects/managing-projects.js +212 -0
  341. package/dist/ui/overlay/data/tutorials/projects/new-project.d.ts +7 -0
  342. package/dist/ui/overlay/data/tutorials/projects/new-project.js +251 -0
  343. package/dist/ui/overlay/data/tutorials/projects/session-management.d.ts +7 -0
  344. package/dist/ui/overlay/data/tutorials/projects/session-management.js +169 -0
  345. package/dist/ui/overlay/data/tutorials/teams/background-execution.d.ts +7 -0
  346. package/dist/ui/overlay/data/tutorials/teams/background-execution.js +171 -0
  347. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.d.ts +8 -0
  348. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.js +147 -0
  349. package/dist/ui/overlay/data/tutorials/teams/task-assignment.d.ts +7 -0
  350. package/dist/ui/overlay/data/tutorials/teams/task-assignment.js +204 -0
  351. package/dist/ui/overlay/data/tutorials/teams/team-overview.d.ts +7 -0
  352. package/dist/ui/overlay/data/tutorials/teams/team-overview.js +165 -0
  353. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.d.ts +7 -0
  354. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.js +172 -0
  355. package/dist/ui/overlay/impl/agents-overlay-v2.js +6 -17
  356. package/dist/ui/overlay/impl/anchors-overlay-v2.js +30 -64
  357. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.d.ts +43 -0
  358. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.js +232 -0
  359. package/dist/ui/overlay/impl/artifact-overlay-v2.d.ts +40 -0
  360. package/dist/ui/overlay/impl/artifact-overlay-v2.js +115 -0
  361. package/dist/ui/overlay/impl/ask-user-overlay-v2.js +2 -5
  362. package/dist/ui/overlay/impl/background-overlay-v2.d.ts +40 -0
  363. package/dist/ui/overlay/impl/background-overlay-v2.js +147 -0
  364. package/dist/ui/overlay/impl/backlog-overlay-v2.d.ts +4 -1
  365. package/dist/ui/overlay/impl/backlog-overlay-v2.js +55 -16
  366. package/dist/ui/overlay/impl/changelog-overlay-v2.d.ts +44 -0
  367. package/dist/ui/overlay/impl/changelog-overlay-v2.js +165 -0
  368. package/dist/ui/overlay/impl/commands-overlay-v2.js +4 -6
  369. package/dist/ui/overlay/impl/config-overlay-v2.d.ts +12 -1
  370. package/dist/ui/overlay/impl/config-overlay-v2.js +164 -100
  371. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.d.ts +83 -0
  372. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.js +711 -0
  373. package/dist/ui/overlay/impl/dashboard-overlay-v2.d.ts +2 -0
  374. package/dist/ui/overlay/impl/dashboard-overlay-v2.js +26 -3
  375. package/dist/ui/overlay/impl/delegations-overlay-v2.d.ts +28 -0
  376. package/dist/ui/overlay/impl/delegations-overlay-v2.js +279 -0
  377. package/dist/ui/overlay/impl/docs-overlay-v2.js +12 -9
  378. package/dist/ui/overlay/impl/document-detail-overlay-v2.d.ts +7 -0
  379. package/dist/ui/overlay/impl/document-detail-overlay-v2.js +119 -78
  380. package/dist/ui/overlay/impl/filter-overlay-v2.d.ts +41 -0
  381. package/dist/ui/overlay/impl/filter-overlay-v2.js +110 -0
  382. package/dist/ui/overlay/impl/games-overlay-v2.d.ts +31 -0
  383. package/dist/ui/overlay/impl/games-overlay-v2.js +135 -0
  384. package/dist/ui/overlay/impl/help-overlay-v2.d.ts +26 -3
  385. package/dist/ui/overlay/impl/help-overlay-v2.js +20 -42
  386. package/dist/ui/overlay/impl/login-overlay-v2.d.ts +49 -0
  387. package/dist/ui/overlay/impl/login-overlay-v2.js +277 -0
  388. package/dist/ui/overlay/impl/mcp-overlay-v2.d.ts +63 -0
  389. package/dist/ui/overlay/impl/mcp-overlay-v2.js +907 -0
  390. package/dist/ui/overlay/impl/model-overlay-v2.d.ts +57 -13
  391. package/dist/ui/overlay/impl/model-overlay-v2.js +1086 -61
  392. package/dist/ui/overlay/impl/new-overlay-v2.d.ts +37 -6
  393. package/dist/ui/overlay/impl/new-overlay-v2.js +715 -65
  394. package/dist/ui/overlay/impl/notifications-overlay-v2.d.ts +20 -0
  395. package/dist/ui/overlay/impl/notifications-overlay-v2.js +116 -0
  396. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.d.ts +76 -0
  397. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.js +728 -0
  398. package/dist/ui/overlay/impl/pending-overlay-v2.d.ts +51 -0
  399. package/dist/ui/overlay/impl/pending-overlay-v2.js +445 -0
  400. package/dist/ui/overlay/impl/permission-overlay-v2.js +5 -5
  401. package/dist/ui/overlay/impl/permissions-overlay-v2.d.ts +85 -0
  402. package/dist/ui/overlay/impl/permissions-overlay-v2.js +820 -0
  403. package/dist/ui/overlay/impl/plan-approval-overlay-v2.d.ts +35 -0
  404. package/dist/ui/overlay/impl/plan-approval-overlay-v2.js +181 -0
  405. package/dist/ui/overlay/impl/project-edit-overlay-v2.d.ts +36 -0
  406. package/dist/ui/overlay/impl/project-edit-overlay-v2.js +195 -0
  407. package/dist/ui/overlay/impl/projects-overlay-v2.d.ts +1 -0
  408. package/dist/ui/overlay/impl/projects-overlay-v2.js +278 -44
  409. package/dist/ui/overlay/impl/reset-overlay-v2.d.ts +39 -0
  410. package/dist/ui/overlay/impl/reset-overlay-v2.js +107 -0
  411. package/dist/ui/overlay/impl/resume-overlay-v2.d.ts +60 -0
  412. package/dist/ui/overlay/impl/resume-overlay-v2.js +414 -0
  413. package/dist/ui/overlay/impl/session-mode-overlay-v2.d.ts +43 -0
  414. package/dist/ui/overlay/impl/session-mode-overlay-v2.js +124 -0
  415. package/dist/ui/overlay/impl/tasks-overlay-v2.d.ts +28 -0
  416. package/dist/ui/overlay/impl/tasks-overlay-v2.js +283 -0
  417. package/dist/ui/overlay/impl/team-overlay-v2.d.ts +86 -0
  418. package/dist/ui/overlay/impl/team-overlay-v2.js +692 -0
  419. package/dist/ui/overlay/impl/terminals-overlay-v2.d.ts +26 -0
  420. package/dist/ui/overlay/impl/terminals-overlay-v2.js +217 -0
  421. package/dist/ui/overlay/impl/tools-overlay-v2.js +3 -7
  422. package/dist/ui/overlay/impl/tutorial-overlay-v2.d.ts +30 -16
  423. package/dist/ui/overlay/impl/tutorial-overlay-v2.js +133 -956
  424. package/dist/ui/overlay/impl/workflow-overlay-v2.js +5 -1
  425. package/dist/ui/overlay/index.d.ts +20 -1
  426. package/dist/ui/overlay/index.js +19 -0
  427. package/dist/ui/overlay/types.d.ts +5 -0
  428. package/dist/ui/overlay-manager.d.ts +43 -0
  429. package/dist/ui/overlay-manager.js +238 -0
  430. package/dist/ui/overlays.js +4 -16
  431. package/dist/ui/permission-overlay.js +6 -5
  432. package/dist/ui/status-bar-controller.d.ts +33 -0
  433. package/dist/ui/status-bar-controller.js +99 -0
  434. package/dist/ui/subagent-renderer.js +3 -19
  435. package/dist/ui/terminal-autocomplete-utils.d.ts +23 -0
  436. package/dist/ui/terminal-autocomplete-utils.js +83 -0
  437. package/dist/ui/terminal-line-builders.d.ts +17 -0
  438. package/dist/ui/terminal-line-builders.js +42 -0
  439. package/dist/ui/terminal-render-item.d.ts +16 -0
  440. package/dist/ui/terminal-render-item.js +267 -0
  441. package/dist/ui/terminal-renderer.d.ts +7 -8
  442. package/dist/ui/terminal-renderer.js +7 -8
  443. package/dist/ui/terminal-types.d.ts +179 -0
  444. package/dist/ui/terminal-types.js +34 -0
  445. package/dist/ui/terminal-ui.d.ts +144 -276
  446. package/dist/ui/terminal-ui.js +384 -1861
  447. package/dist/ui/todo-zone.d.ts +19 -1
  448. package/dist/ui/todo-zone.js +71 -13
  449. package/dist/ui/tool-formatters.js +512 -1
  450. package/dist/ui/turn-metrics.d.ts +56 -0
  451. package/dist/ui/turn-metrics.js +75 -0
  452. package/dist/ui/types.d.ts +28 -0
  453. package/dist/ui/types.js +1 -0
  454. package/dist/ui/vscode-diff-ipc.d.ts +102 -0
  455. package/dist/ui/vscode-diff-ipc.js +385 -0
  456. package/dist/utils/credentials.d.ts +24 -5
  457. package/dist/utils/credentials.js +123 -9
  458. package/dist/utils/format-tokens.d.ts +13 -0
  459. package/dist/utils/format-tokens.js +18 -0
  460. package/dist/utils/git-config.d.ts +26 -0
  461. package/dist/utils/git-config.js +54 -0
  462. package/dist/utils/message-utils.d.ts +61 -0
  463. package/dist/utils/message-utils.js +72 -0
  464. package/dist/utils/model-tiers.d.ts +8 -1
  465. package/dist/utils/model-tiers.js +38 -16
  466. package/dist/utils/open-browser.d.ts +5 -0
  467. package/dist/utils/open-browser.js +32 -0
  468. package/dist/utils/path-safety.js +3 -2
  469. package/dist/utils/project-detection.d.ts +58 -0
  470. package/dist/utils/project-detection.js +424 -0
  471. package/dist/utils/project-memory.js +2 -1
  472. package/dist/utils/project-status.d.ts +2 -2
  473. package/dist/utils/startup-perf.d.ts +18 -0
  474. package/dist/utils/startup-perf.js +60 -0
  475. package/dist/utils/token-tracker.d.ts +62 -0
  476. package/dist/utils/token-tracker.js +150 -0
  477. package/dist/utils/token-types.d.ts +23 -0
  478. package/dist/utils/token-types.js +18 -0
  479. package/dist/utils/types/config-types.d.ts +32 -0
  480. package/dist/utils/types/config-types.js +8 -0
  481. package/dist/utils/update-checker.d.ts +28 -0
  482. package/dist/utils/update-checker.js +106 -0
  483. package/dist/utils/version.d.ts +7 -0
  484. package/dist/utils/version.js +10 -0
  485. package/dist/utils/vscode-detect.d.ts +39 -0
  486. package/dist/utils/vscode-detect.js +137 -0
  487. package/package.json +25 -12
  488. package/dist/commands/handler-types.d.ts +0 -68
  489. package/dist/commands/handler-types.js +0 -8
  490. package/dist/commands/handlers/agent-commands.d.ts +0 -13
  491. package/dist/commands/handlers/agent-commands.js +0 -305
  492. package/dist/commands/handlers/design-commands.d.ts +0 -15
  493. package/dist/commands/handlers/design-commands.js +0 -334
  494. package/dist/commands/handlers/index.d.ts +0 -20
  495. package/dist/commands/handlers/index.js +0 -43
  496. package/dist/commands/handlers/overlay-commands.d.ts +0 -21
  497. package/dist/commands/handlers/overlay-commands.js +0 -287
  498. package/dist/commands/handlers/project-commands.d.ts +0 -11
  499. package/dist/commands/handlers/project-commands.js +0 -167
  500. package/dist/commands/handlers/simple-commands.d.ts +0 -19
  501. package/dist/commands/handlers/simple-commands.js +0 -144
  502. package/dist/commands/registry.d.ts +0 -50
  503. package/dist/commands/registry.js +0 -75
  504. package/dist/index.old.d.ts +0 -7
  505. package/dist/index.old.js +0 -1014
  506. package/dist/repl.d.ts +0 -149
  507. package/dist/repl.js +0 -1151
  508. package/dist/templates/claude-md.d.ts +0 -7
  509. package/dist/templates/claude-md.js +0 -189
  510. package/dist/test-autocomplete.d.ts +0 -7
  511. package/dist/test-autocomplete.js +0 -85
  512. package/dist/test-tabbed-menu.d.ts +0 -7
  513. package/dist/test-tabbed-menu.js +0 -25
  514. package/dist/tool-selector.d.ts +0 -71
  515. package/dist/tool-selector.js +0 -184
  516. package/dist/ui/agents-overlay-v2.d.ts +0 -43
  517. package/dist/ui/agents-overlay-v2.js +0 -809
  518. package/dist/ui/agents-overlay.d.ts +0 -12
  519. package/dist/ui/agents-overlay.js +0 -863
  520. package/dist/ui/anchors-overlay.d.ts +0 -12
  521. package/dist/ui/anchors-overlay.js +0 -775
  522. package/dist/ui/arch-type-overlay.d.ts +0 -15
  523. package/dist/ui/arch-type-overlay.js +0 -201
  524. package/dist/ui/ask-user-overlay-v2.d.ts +0 -26
  525. package/dist/ui/ask-user-overlay-v2.js +0 -555
  526. package/dist/ui/ask-user-simple-overlay-v2.d.ts +0 -25
  527. package/dist/ui/ask-user-simple-overlay-v2.js +0 -215
  528. package/dist/ui/backlog-overlay.d.ts +0 -32
  529. package/dist/ui/backlog-overlay.js +0 -652
  530. package/dist/ui/commands-overlay-v2.d.ts +0 -33
  531. package/dist/ui/commands-overlay-v2.js +0 -441
  532. package/dist/ui/commands-overlay.d.ts +0 -16
  533. package/dist/ui/commands-overlay.js +0 -439
  534. package/dist/ui/config-overlay.d.ts +0 -35
  535. package/dist/ui/config-overlay.js +0 -707
  536. package/dist/ui/docs-overlay.d.ts +0 -17
  537. package/dist/ui/docs-overlay.js +0 -303
  538. package/dist/ui/footer-v2.d.ts +0 -222
  539. package/dist/ui/footer-v2.js +0 -1349
  540. package/dist/ui/help-overlay-v2.d.ts +0 -34
  541. package/dist/ui/help-overlay-v2.js +0 -309
  542. package/dist/ui/help-overlay.d.ts +0 -16
  543. package/dist/ui/help-overlay.js +0 -316
  544. package/dist/ui/init-overlay-v2.d.ts +0 -34
  545. package/dist/ui/init-overlay-v2.js +0 -600
  546. package/dist/ui/init-overlay.d.ts +0 -34
  547. package/dist/ui/init-overlay.js +0 -604
  548. package/dist/ui/input-prompt-v2.d.ts +0 -180
  549. package/dist/ui/input-prompt-v2.js +0 -999
  550. package/dist/ui/iteration-limit-overlay-v2.d.ts +0 -21
  551. package/dist/ui/iteration-limit-overlay-v2.js +0 -114
  552. package/dist/ui/keys-overlay-v2.d.ts +0 -41
  553. package/dist/ui/keys-overlay-v2.js +0 -248
  554. package/dist/ui/mascot-overlay-v2.d.ts +0 -41
  555. package/dist/ui/mascot-overlay-v2.js +0 -138
  556. package/dist/ui/mascot-overlay.d.ts +0 -21
  557. package/dist/ui/mascot-overlay.js +0 -146
  558. package/dist/ui/model-overlay-v2.d.ts +0 -49
  559. package/dist/ui/model-overlay-v2.js +0 -118
  560. package/dist/ui/model-overlay.d.ts +0 -27
  561. package/dist/ui/model-overlay.js +0 -221
  562. package/dist/ui/model-warning-overlay.d.ts +0 -30
  563. package/dist/ui/model-warning-overlay.js +0 -169
  564. package/dist/ui/new-overlay.d.ts +0 -34
  565. package/dist/ui/new-overlay.js +0 -604
  566. package/dist/ui/overlay/impl/init-overlay-v2.d.ts +0 -77
  567. package/dist/ui/overlay/impl/init-overlay-v2.js +0 -593
  568. package/dist/ui/overlay/overlay-types.d.ts +0 -128
  569. package/dist/ui/overlay/overlay-types.js +0 -22
  570. package/dist/ui/overlays/help-overlay-v2.d.ts +0 -28
  571. package/dist/ui/overlays/help-overlay-v2.js +0 -198
  572. package/dist/ui/overlays/index.d.ts +0 -11
  573. package/dist/ui/overlays/index.js +0 -11
  574. package/dist/ui/permission-overlay-v2.d.ts +0 -36
  575. package/dist/ui/permission-overlay-v2.js +0 -380
  576. package/dist/ui/projects-overlay.d.ts +0 -19
  577. package/dist/ui/projects-overlay.js +0 -484
  578. package/dist/ui/theme-overlay-v2.d.ts +0 -42
  579. package/dist/ui/theme-overlay-v2.js +0 -135
  580. package/dist/ui/theme-overlay.d.ts +0 -24
  581. package/dist/ui/theme-overlay.js +0 -127
  582. package/dist/ui/tools-overlay-v2.d.ts +0 -47
  583. package/dist/ui/tools-overlay-v2.js +0 -218
  584. package/dist/ui/tools-overlay.d.ts +0 -34
  585. package/dist/ui/tools-overlay.js +0 -230
  586. package/dist/ui/tutorial-overlay-v2.d.ts +0 -31
  587. package/dist/ui/tutorial-overlay-v2.js +0 -1035
  588. package/dist/ui/tutorial-overlay.d.ts +0 -11
  589. package/dist/ui/tutorial-overlay.js +0 -1034
  590. package/dist/ui/workflow-overlay.d.ts +0 -22
  591. package/dist/ui/workflow-overlay.js +0 -636
@@ -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;