@compilr-dev/cli 0.4.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (634) hide show
  1. package/README.md +254 -68
  2. package/dist/.tsbuildinfo.app +1 -0
  3. package/dist/.tsbuildinfo.data +1 -0
  4. package/dist/.tsbuildinfo.domain +1 -0
  5. package/dist/.tsbuildinfo.foundation +1 -0
  6. package/dist/agent.d.ts +134 -4
  7. package/dist/agent.js +345 -166
  8. package/dist/anchors/index.d.ts +9 -0
  9. package/dist/anchors/index.js +9 -0
  10. package/dist/anchors/project-anchors.d.ts +79 -0
  11. package/dist/anchors/project-anchors.js +202 -0
  12. package/dist/auth/api-client.d.ts +124 -0
  13. package/dist/auth/api-client.js +261 -0
  14. package/dist/auth/index.d.ts +172 -0
  15. package/dist/auth/index.js +545 -0
  16. package/dist/auth/storage.d.ts +52 -0
  17. package/dist/auth/storage.js +118 -0
  18. package/dist/changelog/index.d.ts +16 -0
  19. package/dist/changelog/index.js +24 -0
  20. package/dist/changelog/releases.d.ts +17 -0
  21. package/dist/changelog/releases.js +63 -0
  22. package/dist/commands/index.d.ts +2 -1
  23. package/dist/commands-v2/handlers/auth.d.ts +10 -0
  24. package/dist/commands-v2/handlers/auth.js +118 -0
  25. package/dist/commands-v2/handlers/background.d.ts +14 -0
  26. package/dist/commands-v2/handlers/background.js +276 -0
  27. package/dist/commands-v2/handlers/context.d.ts +13 -0
  28. package/dist/commands-v2/handlers/context.js +533 -0
  29. package/dist/commands-v2/handlers/core.d.ts +14 -0
  30. package/dist/commands-v2/handlers/core.js +290 -0
  31. package/dist/commands-v2/handlers/debug.d.ts +11 -0
  32. package/dist/commands-v2/handlers/debug.js +177 -0
  33. package/dist/commands-v2/handlers/delegations.d.ts +8 -0
  34. package/dist/commands-v2/handlers/delegations.js +29 -0
  35. package/dist/commands-v2/handlers/files.d.ts +8 -0
  36. package/dist/commands-v2/handlers/files.js +162 -0
  37. package/dist/commands-v2/handlers/filter.d.ts +9 -0
  38. package/dist/commands-v2/handlers/filter.js +130 -0
  39. package/dist/commands-v2/handlers/games.d.ts +7 -0
  40. package/dist/commands-v2/handlers/games.js +57 -0
  41. package/dist/commands-v2/handlers/index.d.ts +25 -0
  42. package/dist/commands-v2/handlers/index.js +63 -0
  43. package/dist/commands-v2/handlers/mcp.d.ts +8 -0
  44. package/dist/commands-v2/handlers/mcp.js +39 -0
  45. package/dist/commands-v2/handlers/notifications.d.ts +9 -0
  46. package/dist/commands-v2/handlers/notifications.js +34 -0
  47. package/dist/commands-v2/handlers/project.d.ts +22 -0
  48. package/dist/commands-v2/handlers/project.js +1035 -0
  49. package/dist/commands-v2/handlers/reset.d.ts +11 -0
  50. package/dist/commands-v2/handlers/reset.js +118 -0
  51. package/dist/commands-v2/handlers/session.d.ts +161 -0
  52. package/dist/commands-v2/handlers/session.js +805 -0
  53. package/dist/commands-v2/handlers/settings.d.ts +17 -0
  54. package/dist/commands-v2/handlers/settings.js +417 -0
  55. package/dist/commands-v2/handlers/tasks.d.ts +5 -0
  56. package/dist/commands-v2/handlers/tasks.js +36 -0
  57. package/dist/commands-v2/handlers/team.d.ts +9 -0
  58. package/dist/commands-v2/handlers/team.js +549 -0
  59. package/dist/commands-v2/handlers/terminals.d.ts +9 -0
  60. package/dist/commands-v2/handlers/terminals.js +34 -0
  61. package/dist/commands-v2/index.d.ts +14 -0
  62. package/dist/commands-v2/index.js +18 -0
  63. package/dist/commands-v2/registry.d.ts +52 -0
  64. package/dist/commands-v2/registry.js +114 -0
  65. package/dist/commands-v2/types.d.ts +153 -0
  66. package/dist/commands-v2/types.js +7 -0
  67. package/dist/commands.js +123 -7
  68. package/dist/compilr-diff-companion.vsix +0 -0
  69. package/dist/db/index.js +98 -4
  70. package/dist/db/repositories/document-repository.d.ts +2 -0
  71. package/dist/db/repositories/document-repository.js +5 -1
  72. package/dist/db/repositories/index.d.ts +2 -0
  73. package/dist/db/repositories/index.js +1 -0
  74. package/dist/db/repositories/plan-repository.d.ts +101 -0
  75. package/dist/db/repositories/plan-repository.js +275 -0
  76. package/dist/db/repositories/project-repository.d.ts +6 -0
  77. package/dist/db/repositories/project-repository.js +41 -0
  78. package/dist/db/repositories/work-item-repository.d.ts +15 -0
  79. package/dist/db/repositories/work-item-repository.js +69 -4
  80. package/dist/db/schema.d.ts +40 -3
  81. package/dist/db/schema.js +66 -3
  82. package/dist/episodes/index.d.ts +20 -0
  83. package/dist/episodes/index.js +27 -0
  84. package/dist/episodes/recorder.d.ts +51 -0
  85. package/dist/episodes/recorder.js +195 -0
  86. package/dist/episodes/significant-work.d.ts +21 -0
  87. package/dist/episodes/significant-work.js +56 -0
  88. package/dist/episodes/store.d.ts +38 -0
  89. package/dist/episodes/store.js +199 -0
  90. package/dist/episodes/types.d.ts +35 -0
  91. package/dist/episodes/types.js +6 -0
  92. package/dist/episodes/work-at-risk.d.ts +12 -0
  93. package/dist/episodes/work-at-risk.js +38 -0
  94. package/dist/episodes/work-summary-anchor.d.ts +23 -0
  95. package/dist/episodes/work-summary-anchor.js +73 -0
  96. package/dist/games/coins.d.ts +66 -0
  97. package/dist/games/coins.js +165 -0
  98. package/dist/games/game-base.d.ts +84 -0
  99. package/dist/games/game-base.js +204 -0
  100. package/dist/games/index.d.ts +16 -0
  101. package/dist/games/index.js +49 -0
  102. package/dist/games/scores.d.ts +69 -0
  103. package/dist/games/scores.js +191 -0
  104. package/dist/games/tetris/board.d.ts +59 -0
  105. package/dist/games/tetris/board.js +170 -0
  106. package/dist/games/tetris/index.d.ts +109 -0
  107. package/dist/games/tetris/index.js +610 -0
  108. package/dist/games/tetris/pieces.d.ts +44 -0
  109. package/dist/games/tetris/pieces.js +271 -0
  110. package/dist/games/tetris/renderer.d.ts +26 -0
  111. package/dist/games/tetris/renderer.js +77 -0
  112. package/dist/guide/guide-content.d.ts +23 -0
  113. package/dist/guide/guide-content.js +196 -0
  114. package/dist/guide/index.d.ts +8 -0
  115. package/dist/guide/index.js +7 -0
  116. package/dist/guide/shared-content.d.ts +37 -0
  117. package/dist/guide/shared-content.js +1272 -0
  118. package/dist/guide/tutorial-helpers.d.ts +57 -0
  119. package/dist/guide/tutorial-helpers.js +147 -0
  120. package/dist/handlers/ask-user-handlers.d.ts +32 -0
  121. package/dist/handlers/ask-user-handlers.js +104 -0
  122. package/dist/handlers/delegation-handlers.d.ts +34 -0
  123. package/dist/handlers/delegation-handlers.js +291 -0
  124. package/dist/handlers/permission-handler.d.ts +30 -0
  125. package/dist/handlers/permission-handler.js +205 -0
  126. package/dist/index.d.ts +11 -1
  127. package/dist/index.js +615 -179
  128. package/dist/input-handlers/index.d.ts +7 -0
  129. package/dist/input-handlers/index.js +7 -0
  130. package/dist/input-handlers/memory-handler.d.ts +26 -0
  131. package/dist/input-handlers/memory-handler.js +69 -0
  132. package/dist/models/index.d.ts +10 -0
  133. package/dist/models/index.js +12 -0
  134. package/dist/models/model-registry.d.ts +38 -0
  135. package/dist/models/model-registry.js +69 -0
  136. package/dist/models/model-tiers.d.ts +28 -0
  137. package/dist/models/model-tiers.js +71 -0
  138. package/dist/models/model-validation.d.ts +25 -0
  139. package/dist/models/model-validation.js +291 -0
  140. package/dist/models/ollama-models.d.ts +73 -0
  141. package/dist/models/ollama-models.js +178 -0
  142. package/dist/models/provider-types.d.ts +6 -0
  143. package/dist/models/provider-types.js +1 -0
  144. package/dist/models/providers.d.ts +35 -0
  145. package/dist/models/providers.js +58 -0
  146. package/dist/models/types.d.ts +4 -0
  147. package/dist/models/types.js +4 -0
  148. package/dist/multi-agent/activity.d.ts +21 -0
  149. package/dist/multi-agent/activity.js +34 -0
  150. package/dist/multi-agent/agent-selection.d.ts +55 -0
  151. package/dist/multi-agent/agent-selection.js +90 -0
  152. package/dist/multi-agent/artifacts.d.ts +197 -0
  153. package/dist/multi-agent/artifacts.js +379 -0
  154. package/dist/multi-agent/checkpointer.d.ts +138 -0
  155. package/dist/multi-agent/checkpointer.js +471 -0
  156. package/dist/multi-agent/collision-utils.d.ts +16 -0
  157. package/dist/multi-agent/collision-utils.js +28 -0
  158. package/dist/multi-agent/context-resolver.d.ts +97 -0
  159. package/dist/multi-agent/context-resolver.js +316 -0
  160. package/dist/multi-agent/custom-agents.d.ts +83 -0
  161. package/dist/multi-agent/custom-agents.js +227 -0
  162. package/dist/multi-agent/delegation-tracker.d.ts +157 -0
  163. package/dist/multi-agent/delegation-tracker.js +243 -0
  164. package/dist/multi-agent/file-lock-hook.d.ts +29 -0
  165. package/dist/multi-agent/file-lock-hook.js +97 -0
  166. package/dist/multi-agent/file-locks.d.ts +58 -0
  167. package/dist/multi-agent/file-locks.js +194 -0
  168. package/dist/multi-agent/index.d.ts +24 -0
  169. package/dist/multi-agent/index.js +30 -0
  170. package/dist/multi-agent/mention-parser.d.ts +64 -0
  171. package/dist/multi-agent/mention-parser.js +146 -0
  172. package/dist/multi-agent/notification-manager.d.ts +84 -0
  173. package/dist/multi-agent/notification-manager.js +224 -0
  174. package/dist/multi-agent/pending-requests.d.ts +122 -0
  175. package/dist/multi-agent/pending-requests.js +155 -0
  176. package/dist/multi-agent/session-registry.d.ts +139 -0
  177. package/dist/multi-agent/session-registry.js +514 -0
  178. package/dist/multi-agent/shared-context.d.ts +293 -0
  179. package/dist/multi-agent/shared-context.js +671 -0
  180. package/dist/multi-agent/skill-requirements.d.ts +66 -0
  181. package/dist/multi-agent/skill-requirements.js +178 -0
  182. package/dist/multi-agent/task-assignment.d.ts +69 -0
  183. package/dist/multi-agent/task-assignment.js +123 -0
  184. package/dist/multi-agent/task-suggestion.d.ts +31 -0
  185. package/dist/multi-agent/task-suggestion.js +72 -0
  186. package/dist/multi-agent/team-agent.d.ts +201 -0
  187. package/dist/multi-agent/team-agent.js +488 -0
  188. package/dist/multi-agent/team.d.ts +286 -0
  189. package/dist/multi-agent/team.js +610 -0
  190. package/dist/multi-agent/tool-config.d.ts +110 -0
  191. package/dist/multi-agent/tool-config.js +661 -0
  192. package/dist/multi-agent/types.d.ts +211 -0
  193. package/dist/multi-agent/types.js +617 -0
  194. package/dist/prompts/plan-mode-prompt.d.ts +11 -0
  195. package/dist/prompts/plan-mode-prompt.js +95 -0
  196. package/dist/repl-helpers.d.ts +63 -0
  197. package/dist/repl-helpers.js +319 -0
  198. package/dist/repl-v2.d.ts +554 -0
  199. package/dist/repl-v2.js +3286 -0
  200. package/dist/session/index.d.ts +6 -0
  201. package/dist/session/index.js +6 -0
  202. package/dist/session/project-session-manager.d.ts +158 -0
  203. package/dist/session/project-session-manager.js +650 -0
  204. package/dist/settings/index.d.ts +156 -13
  205. package/dist/settings/index.js +377 -24
  206. package/dist/settings/mcp-config.d.ts +76 -0
  207. package/dist/settings/mcp-config.js +143 -0
  208. package/dist/settings/paths.d.ts +114 -0
  209. package/dist/settings/paths.js +270 -0
  210. package/dist/shared-handlers.d.ts +62 -0
  211. package/dist/shared-handlers.js +48 -0
  212. package/dist/system-prompt/builder.d.ts +5 -0
  213. package/dist/system-prompt/builder.js +4 -0
  214. package/dist/system-prompt/index.d.ts +18 -0
  215. package/dist/system-prompt/index.js +18 -0
  216. package/dist/system-prompt/modules.d.ts +5 -0
  217. package/dist/system-prompt/modules.js +4 -0
  218. package/dist/tabbed-menu.js +2 -1
  219. package/dist/templates/compilr-md-import.d.ts +16 -0
  220. package/dist/templates/compilr-md-import.js +241 -0
  221. package/dist/templates/compilr-md.js +10 -58
  222. package/dist/templates/config-json.d.ts +1 -25
  223. package/dist/templates/index.d.ts +2 -0
  224. package/dist/templates/index.js +35 -75
  225. package/dist/themes/colors.js +3 -1
  226. package/dist/themes/registry.d.ts +5 -36
  227. package/dist/themes/registry.js +11 -95
  228. package/dist/themes/types.d.ts +3 -38
  229. package/dist/themes/types.js +2 -2
  230. package/dist/tool-names.d.ts +108 -0
  231. package/dist/tool-names.js +227 -0
  232. package/dist/tools/anchor-tools.d.ts +31 -0
  233. package/dist/tools/anchor-tools.js +255 -0
  234. package/dist/tools/artifact-tools.d.ts +42 -0
  235. package/dist/tools/artifact-tools.js +328 -0
  236. package/dist/tools/ask-user-simple.d.ts +1 -1
  237. package/dist/tools/ask-user-simple.js +2 -1
  238. package/dist/tools/ask-user.d.ts +1 -1
  239. package/dist/tools/ask-user.js +2 -1
  240. package/dist/tools/backlog-wrappers.d.ts +56 -0
  241. package/dist/tools/backlog-wrappers.js +353 -0
  242. package/dist/tools/backlog.d.ts +2 -2
  243. package/dist/tools/backlog.js +2 -2
  244. package/dist/tools/db-tools.d.ts +12 -0
  245. package/dist/tools/db-tools.js +14 -0
  246. package/dist/tools/delegate-background.d.ts +27 -0
  247. package/dist/tools/delegate-background.js +115 -0
  248. package/dist/tools/delegate.d.ts +22 -0
  249. package/dist/tools/delegate.js +97 -0
  250. package/dist/tools/delegation-status.d.ts +16 -0
  251. package/dist/tools/delegation-status.js +128 -0
  252. package/dist/tools/document-db.d.ts +43 -0
  253. package/dist/tools/document-db.js +220 -0
  254. package/dist/tools/guide-tool.d.ts +12 -0
  255. package/dist/tools/guide-tool.js +59 -0
  256. package/dist/tools/handoff.d.ts +25 -0
  257. package/dist/tools/handoff.js +99 -0
  258. package/dist/tools/meta-tools.d.ts +26 -0
  259. package/dist/tools/meta-tools.js +47 -0
  260. package/dist/tools/plan-tools.d.ts +54 -0
  261. package/dist/tools/plan-tools.js +338 -0
  262. package/dist/tools/platform-adapter.d.ts +29 -0
  263. package/dist/tools/platform-adapter.js +394 -0
  264. package/dist/tools/project-db.d.ts +34 -0
  265. package/dist/tools/project-db.js +39 -0
  266. package/dist/tools/recall-work-tool.d.ts +18 -0
  267. package/dist/tools/recall-work-tool.js +82 -0
  268. package/dist/tools/workitem-db.d.ts +135 -0
  269. package/dist/tools/workitem-db.js +730 -0
  270. package/dist/tools.d.ts +67 -2
  271. package/dist/tools.js +238 -38
  272. package/dist/ui/ask-user-overlay.d.ts +2 -2
  273. package/dist/ui/ask-user-overlay.js +443 -535
  274. package/dist/ui/ask-user-simple-overlay.d.ts +2 -2
  275. package/dist/ui/ask-user-simple-overlay.js +182 -209
  276. package/dist/ui/autocomplete-controller.d.ts +42 -0
  277. package/dist/ui/autocomplete-controller.js +384 -0
  278. package/dist/ui/base/index.d.ts +26 -0
  279. package/dist/ui/base/index.js +33 -0
  280. package/dist/ui/base/inline-overlay-utils.d.ts +217 -0
  281. package/dist/ui/base/inline-overlay-utils.js +320 -0
  282. package/dist/ui/base/inline-overlay.d.ts +159 -0
  283. package/dist/ui/base/inline-overlay.js +257 -0
  284. package/dist/ui/base/key-utils.d.ts +15 -0
  285. package/dist/ui/base/key-utils.js +30 -0
  286. package/dist/ui/base/overlay-base-v2.d.ts +203 -0
  287. package/dist/ui/base/overlay-base-v2.js +260 -0
  288. package/dist/ui/base/overlay-base.d.ts +156 -0
  289. package/dist/ui/base/overlay-base.js +238 -0
  290. package/dist/ui/base/overlay-lifecycle.d.ts +65 -0
  291. package/dist/ui/base/overlay-lifecycle.js +159 -0
  292. package/dist/ui/base/overlay-types.d.ts +185 -0
  293. package/dist/ui/base/overlay-types.js +7 -0
  294. package/dist/ui/base/render-utils.d.ts +27 -0
  295. package/dist/ui/base/render-utils.js +36 -0
  296. package/dist/ui/base/screen-stack.d.ts +148 -0
  297. package/dist/ui/base/screen-stack.js +184 -0
  298. package/dist/ui/base/tabbed-list-overlay-v2.d.ts +118 -0
  299. package/dist/ui/base/tabbed-list-overlay-v2.js +335 -0
  300. package/dist/ui/base/tabbed-list-overlay.d.ts +153 -0
  301. package/dist/ui/base/tabbed-list-overlay.js +369 -0
  302. package/dist/ui/constants/labels.d.ts +14 -0
  303. package/dist/ui/constants/labels.js +51 -0
  304. package/dist/ui/conversation-store.d.ts +55 -0
  305. package/dist/ui/conversation-store.js +107 -0
  306. package/dist/ui/conversation.d.ts +75 -4
  307. package/dist/ui/conversation.js +376 -165
  308. package/dist/ui/diff.d.ts +7 -1
  309. package/dist/ui/diff.js +85 -48
  310. package/dist/ui/ephemeral.d.ts +1 -1
  311. package/dist/ui/ephemeral.js +4 -10
  312. package/dist/ui/features/index.d.ts +34 -0
  313. package/dist/ui/features/index.js +34 -0
  314. package/dist/ui/features/input-feature.d.ts +85 -0
  315. package/dist/ui/features/input-feature.js +238 -0
  316. package/dist/ui/features/list-feature.d.ts +155 -0
  317. package/dist/ui/features/list-feature.js +244 -0
  318. package/dist/ui/features/pagination-feature.d.ts +154 -0
  319. package/dist/ui/features/pagination-feature.js +238 -0
  320. package/dist/ui/features/search-feature.d.ts +148 -0
  321. package/dist/ui/features/search-feature.js +185 -0
  322. package/dist/ui/features/tab-feature.d.ts +194 -0
  323. package/dist/ui/features/tab-feature.js +307 -0
  324. package/dist/ui/file-autocomplete.d.ts +24 -0
  325. package/dist/ui/file-autocomplete.js +56 -0
  326. package/dist/ui/footer-renderer.d.ts +69 -0
  327. package/dist/ui/footer-renderer.js +431 -0
  328. package/dist/ui/footer.d.ts +181 -7
  329. package/dist/ui/footer.js +523 -74
  330. package/dist/ui/guardrail-overlay.d.ts +29 -0
  331. package/dist/ui/guardrail-overlay.js +145 -0
  332. package/dist/ui/index.d.ts +1 -1
  333. package/dist/ui/index.js +1 -3
  334. package/dist/ui/input-controller.d.ts +51 -0
  335. package/dist/ui/input-controller.js +176 -0
  336. package/dist/ui/input-prompt.d.ts +135 -33
  337. package/dist/ui/input-prompt.js +728 -337
  338. package/dist/ui/iteration-limit-overlay.d.ts +2 -2
  339. package/dist/ui/iteration-limit-overlay.js +92 -128
  340. package/dist/ui/keyboard-handler.d.ts +57 -0
  341. package/dist/ui/keyboard-handler.js +557 -0
  342. package/dist/ui/keys-overlay.d.ts +1 -0
  343. package/dist/ui/keys-overlay.js +203 -141
  344. package/dist/ui/line-utils.d.ts +88 -0
  345. package/dist/ui/line-utils.js +150 -0
  346. package/dist/ui/live-region-facade.d.ts +42 -0
  347. package/dist/ui/live-region-facade.js +205 -0
  348. package/dist/ui/live-region.d.ts +157 -0
  349. package/dist/ui/live-region.js +379 -0
  350. package/dist/ui/mascot/expressions.d.ts +32 -0
  351. package/dist/ui/mascot/expressions.js +213 -0
  352. package/dist/ui/mascot/index.d.ts +8 -0
  353. package/dist/ui/mascot/index.js +8 -0
  354. package/dist/ui/mascot/renderer.d.ts +19 -0
  355. package/dist/ui/mascot/renderer.js +132 -0
  356. package/dist/ui/overlay/data/tutorial-content.d.ts +9 -0
  357. package/dist/ui/overlay/data/tutorial-content.js +9 -0
  358. package/dist/ui/overlay/data/tutorial-registry.d.ts +12 -0
  359. package/dist/ui/overlay/data/tutorial-registry.js +116 -0
  360. package/dist/ui/overlay/data/tutorial-types.d.ts +35 -0
  361. package/dist/ui/overlay/data/tutorial-types.js +6 -0
  362. package/dist/ui/overlay/data/tutorials/basics/first-conversation.d.ts +7 -0
  363. package/dist/ui/overlay/data/tutorials/basics/first-conversation.js +220 -0
  364. package/dist/ui/overlay/data/tutorials/basics/first-project.d.ts +7 -0
  365. package/dist/ui/overlay/data/tutorials/basics/first-project.js +284 -0
  366. package/dist/ui/overlay/data/tutorials/basics/navigation.d.ts +8 -0
  367. package/dist/ui/overlay/data/tutorials/basics/navigation.js +22 -0
  368. package/dist/ui/overlay/data/tutorials/basics/welcome.d.ts +7 -0
  369. package/dist/ui/overlay/data/tutorials/basics/welcome.js +174 -0
  370. package/dist/ui/overlay/data/tutorials/config/context-management.d.ts +7 -0
  371. package/dist/ui/overlay/data/tutorials/config/context-management.js +158 -0
  372. package/dist/ui/overlay/data/tutorials/config/mcp-servers.d.ts +8 -0
  373. package/dist/ui/overlay/data/tutorials/config/mcp-servers.js +155 -0
  374. package/dist/ui/overlay/data/tutorials/config/model-selection.d.ts +7 -0
  375. package/dist/ui/overlay/data/tutorials/config/model-selection.js +162 -0
  376. package/dist/ui/overlay/data/tutorials/config/permissions-safety.d.ts +7 -0
  377. package/dist/ui/overlay/data/tutorials/config/permissions-safety.js +163 -0
  378. package/dist/ui/overlay/data/tutorials/config/settings-config.d.ts +7 -0
  379. package/dist/ui/overlay/data/tutorials/config/settings-config.js +166 -0
  380. package/dist/ui/overlay/data/tutorials/planning/arch.d.ts +7 -0
  381. package/dist/ui/overlay/data/tutorials/planning/arch.js +168 -0
  382. package/dist/ui/overlay/data/tutorials/planning/backlog.d.ts +7 -0
  383. package/dist/ui/overlay/data/tutorials/planning/backlog.js +103 -0
  384. package/dist/ui/overlay/data/tutorials/planning/build.d.ts +7 -0
  385. package/dist/ui/overlay/data/tutorials/planning/build.js +173 -0
  386. package/dist/ui/overlay/data/tutorials/planning/design.d.ts +7 -0
  387. package/dist/ui/overlay/data/tutorials/planning/design.js +205 -0
  388. package/dist/ui/overlay/data/tutorials/planning/docs.d.ts +7 -0
  389. package/dist/ui/overlay/data/tutorials/planning/docs.js +143 -0
  390. package/dist/ui/overlay/data/tutorials/planning/prd.d.ts +7 -0
  391. package/dist/ui/overlay/data/tutorials/planning/prd.js +173 -0
  392. package/dist/ui/overlay/data/tutorials/planning/scaffold.d.ts +7 -0
  393. package/dist/ui/overlay/data/tutorials/planning/scaffold.js +164 -0
  394. package/dist/ui/overlay/data/tutorials/planning/sketch.d.ts +7 -0
  395. package/dist/ui/overlay/data/tutorials/planning/sketch.js +58 -0
  396. package/dist/ui/overlay/data/tutorials/projects/anchors.d.ts +7 -0
  397. package/dist/ui/overlay/data/tutorials/projects/anchors.js +248 -0
  398. package/dist/ui/overlay/data/tutorials/projects/import-project.d.ts +7 -0
  399. package/dist/ui/overlay/data/tutorials/projects/import-project.js +172 -0
  400. package/dist/ui/overlay/data/tutorials/projects/managing-projects.d.ts +8 -0
  401. package/dist/ui/overlay/data/tutorials/projects/managing-projects.js +212 -0
  402. package/dist/ui/overlay/data/tutorials/projects/new-project.d.ts +7 -0
  403. package/dist/ui/overlay/data/tutorials/projects/new-project.js +251 -0
  404. package/dist/ui/overlay/data/tutorials/projects/session-management.d.ts +7 -0
  405. package/dist/ui/overlay/data/tutorials/projects/session-management.js +169 -0
  406. package/dist/ui/overlay/data/tutorials/teams/background-execution.d.ts +7 -0
  407. package/dist/ui/overlay/data/tutorials/teams/background-execution.js +171 -0
  408. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.d.ts +8 -0
  409. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.js +147 -0
  410. package/dist/ui/overlay/data/tutorials/teams/task-assignment.d.ts +7 -0
  411. package/dist/ui/overlay/data/tutorials/teams/task-assignment.js +204 -0
  412. package/dist/ui/overlay/data/tutorials/teams/team-overview.d.ts +7 -0
  413. package/dist/ui/overlay/data/tutorials/teams/team-overview.js +165 -0
  414. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.d.ts +7 -0
  415. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.js +172 -0
  416. package/dist/ui/overlay/impl/agents-overlay-v2.d.ts +45 -0
  417. package/dist/ui/overlay/impl/agents-overlay-v2.js +814 -0
  418. package/dist/ui/overlay/impl/anchors-overlay-v2.d.ts +47 -0
  419. package/dist/ui/overlay/impl/anchors-overlay-v2.js +749 -0
  420. package/dist/ui/overlay/impl/arch-type-overlay-v2.d.ts +37 -0
  421. package/dist/ui/overlay/impl/arch-type-overlay-v2.js +240 -0
  422. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.d.ts +43 -0
  423. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.js +232 -0
  424. package/dist/ui/overlay/impl/artifact-overlay-v2.d.ts +40 -0
  425. package/dist/ui/overlay/impl/artifact-overlay-v2.js +115 -0
  426. package/dist/ui/overlay/impl/ask-user-overlay-v2.d.ts +72 -0
  427. package/dist/ui/overlay/impl/ask-user-overlay-v2.js +581 -0
  428. package/dist/ui/overlay/impl/ask-user-simple-overlay-v2.d.ts +46 -0
  429. package/dist/ui/overlay/impl/ask-user-simple-overlay-v2.js +204 -0
  430. package/dist/ui/overlay/impl/background-overlay-v2.d.ts +40 -0
  431. package/dist/ui/overlay/impl/background-overlay-v2.js +147 -0
  432. package/dist/ui/overlay/impl/backlog-overlay-v2.d.ts +52 -0
  433. package/dist/ui/overlay/impl/backlog-overlay-v2.js +681 -0
  434. package/dist/ui/overlay/impl/changelog-overlay-v2.d.ts +44 -0
  435. package/dist/ui/overlay/impl/changelog-overlay-v2.js +165 -0
  436. package/dist/ui/overlay/impl/commands-overlay-v2.d.ts +33 -0
  437. package/dist/ui/overlay/impl/commands-overlay-v2.js +439 -0
  438. package/dist/ui/overlay/impl/config-overlay-v2.d.ts +111 -0
  439. package/dist/ui/overlay/impl/config-overlay-v2.js +718 -0
  440. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.d.ts +83 -0
  441. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.js +711 -0
  442. package/dist/ui/overlay/impl/dashboard-overlay-v2.d.ts +57 -0
  443. package/dist/ui/overlay/impl/dashboard-overlay-v2.js +382 -0
  444. package/dist/ui/overlay/impl/delegations-overlay-v2.d.ts +28 -0
  445. package/dist/ui/overlay/impl/delegations-overlay-v2.js +279 -0
  446. package/dist/ui/overlay/impl/docs-overlay-v2.d.ts +45 -0
  447. package/dist/ui/overlay/impl/docs-overlay-v2.js +117 -0
  448. package/dist/ui/overlay/impl/document-detail-overlay-v2.d.ts +84 -0
  449. package/dist/ui/overlay/impl/document-detail-overlay-v2.js +1112 -0
  450. package/dist/ui/overlay/impl/filter-overlay-v2.d.ts +41 -0
  451. package/dist/ui/overlay/impl/filter-overlay-v2.js +110 -0
  452. package/dist/ui/overlay/impl/games-overlay-v2.d.ts +31 -0
  453. package/dist/ui/overlay/impl/games-overlay-v2.js +135 -0
  454. package/dist/ui/overlay/impl/guardrail-overlay-v2.d.ts +43 -0
  455. package/dist/ui/overlay/impl/guardrail-overlay-v2.js +114 -0
  456. package/dist/ui/overlay/impl/help-overlay-v2.d.ts +57 -0
  457. package/dist/ui/overlay/impl/help-overlay-v2.js +287 -0
  458. package/dist/ui/overlay/impl/init-setup-overlay-v2.d.ts +25 -0
  459. package/dist/ui/overlay/impl/init-setup-overlay-v2.js +97 -0
  460. package/dist/ui/overlay/impl/iteration-limit-overlay-v2.d.ts +35 -0
  461. package/dist/ui/overlay/impl/iteration-limit-overlay-v2.js +105 -0
  462. package/dist/ui/overlay/impl/keys-overlay-v2.d.ts +41 -0
  463. package/dist/ui/overlay/impl/keys-overlay-v2.js +248 -0
  464. package/dist/ui/overlay/impl/login-overlay-v2.d.ts +49 -0
  465. package/dist/ui/overlay/impl/login-overlay-v2.js +277 -0
  466. package/dist/ui/overlay/impl/mascot-overlay-v2.d.ts +41 -0
  467. package/dist/ui/overlay/impl/mascot-overlay-v2.js +138 -0
  468. package/dist/ui/overlay/impl/mcp-overlay-v2.d.ts +63 -0
  469. package/dist/ui/overlay/impl/mcp-overlay-v2.js +907 -0
  470. package/dist/ui/overlay/impl/model-overlay-v2.d.ts +93 -0
  471. package/dist/ui/overlay/impl/model-overlay-v2.js +1143 -0
  472. package/dist/ui/overlay/impl/model-warning-overlay-v2.d.ts +46 -0
  473. package/dist/ui/overlay/impl/model-warning-overlay-v2.js +132 -0
  474. package/dist/ui/overlay/impl/new-overlay-v2.d.ts +108 -0
  475. package/dist/ui/overlay/impl/new-overlay-v2.js +1243 -0
  476. package/dist/ui/overlay/impl/notifications-overlay-v2.d.ts +20 -0
  477. package/dist/ui/overlay/impl/notifications-overlay-v2.js +116 -0
  478. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.d.ts +76 -0
  479. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.js +728 -0
  480. package/dist/ui/overlay/impl/pending-overlay-v2.d.ts +51 -0
  481. package/dist/ui/overlay/impl/pending-overlay-v2.js +445 -0
  482. package/dist/ui/overlay/impl/permission-overlay-v2.d.ts +36 -0
  483. package/dist/ui/overlay/impl/permission-overlay-v2.js +380 -0
  484. package/dist/ui/overlay/impl/permissions-overlay-v2.d.ts +85 -0
  485. package/dist/ui/overlay/impl/permissions-overlay-v2.js +820 -0
  486. package/dist/ui/overlay/impl/plan-approval-overlay-v2.d.ts +35 -0
  487. package/dist/ui/overlay/impl/plan-approval-overlay-v2.js +181 -0
  488. package/dist/ui/overlay/impl/project-edit-overlay-v2.d.ts +36 -0
  489. package/dist/ui/overlay/impl/project-edit-overlay-v2.js +195 -0
  490. package/dist/ui/overlay/impl/projects-overlay-v2.d.ts +37 -0
  491. package/dist/ui/overlay/impl/projects-overlay-v2.js +733 -0
  492. package/dist/ui/overlay/impl/reset-overlay-v2.d.ts +39 -0
  493. package/dist/ui/overlay/impl/reset-overlay-v2.js +107 -0
  494. package/dist/ui/overlay/impl/resume-overlay-v2.d.ts +60 -0
  495. package/dist/ui/overlay/impl/resume-overlay-v2.js +414 -0
  496. package/dist/ui/overlay/impl/session-mode-overlay-v2.d.ts +43 -0
  497. package/dist/ui/overlay/impl/session-mode-overlay-v2.js +124 -0
  498. package/dist/ui/overlay/impl/tasks-overlay-v2.d.ts +28 -0
  499. package/dist/ui/overlay/impl/tasks-overlay-v2.js +283 -0
  500. package/dist/ui/overlay/impl/team-overlay-v2.d.ts +86 -0
  501. package/dist/ui/overlay/impl/team-overlay-v2.js +692 -0
  502. package/dist/ui/overlay/impl/terminals-overlay-v2.d.ts +26 -0
  503. package/dist/ui/overlay/impl/terminals-overlay-v2.js +217 -0
  504. package/dist/ui/overlay/impl/theme-overlay-v2.d.ts +42 -0
  505. package/dist/ui/overlay/impl/theme-overlay-v2.js +135 -0
  506. package/dist/ui/overlay/impl/tools-overlay-v2.d.ts +47 -0
  507. package/dist/ui/overlay/impl/tools-overlay-v2.js +214 -0
  508. package/dist/ui/overlay/impl/tutorial-overlay-v2.d.ts +45 -0
  509. package/dist/ui/overlay/impl/tutorial-overlay-v2.js +212 -0
  510. package/dist/ui/overlay/impl/workflow-overlay-v2.d.ts +80 -0
  511. package/dist/ui/overlay/impl/workflow-overlay-v2.js +641 -0
  512. package/dist/ui/overlay/index.d.ts +52 -0
  513. package/dist/ui/overlay/index.js +54 -0
  514. package/dist/ui/overlay/key-utils.d.ts +6 -0
  515. package/dist/ui/overlay/key-utils.js +6 -0
  516. package/dist/ui/overlay/types.d.ts +140 -0
  517. package/dist/ui/overlay/types.js +22 -0
  518. package/dist/ui/overlay-manager.d.ts +43 -0
  519. package/dist/ui/overlay-manager.js +238 -0
  520. package/dist/ui/overlays.d.ts +0 -4
  521. package/dist/ui/overlays.js +4 -460
  522. package/dist/ui/permission-overlay.d.ts +1 -1
  523. package/dist/ui/permission-overlay.js +189 -300
  524. package/dist/ui/providers/types.d.ts +178 -0
  525. package/dist/ui/providers/types.js +9 -0
  526. package/dist/ui/render-modes.d.ts +36 -0
  527. package/dist/ui/render-modes.js +44 -0
  528. package/dist/ui/startup-menu.d.ts +36 -0
  529. package/dist/ui/startup-menu.js +236 -0
  530. package/dist/ui/status-bar-controller.d.ts +33 -0
  531. package/dist/ui/status-bar-controller.js +99 -0
  532. package/dist/ui/subagent-renderer.d.ts +117 -0
  533. package/dist/ui/subagent-renderer.js +318 -0
  534. package/dist/ui/terminal-autocomplete-utils.d.ts +23 -0
  535. package/dist/ui/terminal-autocomplete-utils.js +83 -0
  536. package/dist/ui/terminal-codes.d.ts +94 -0
  537. package/dist/ui/terminal-codes.js +124 -0
  538. package/dist/ui/terminal-line-builders.d.ts +17 -0
  539. package/dist/ui/terminal-line-builders.js +42 -0
  540. package/dist/ui/terminal-render-item.d.ts +16 -0
  541. package/dist/ui/terminal-render-item.js +267 -0
  542. package/dist/ui/terminal-renderer.d.ts +220 -0
  543. package/dist/ui/terminal-renderer.js +750 -0
  544. package/dist/ui/terminal-types.d.ts +179 -0
  545. package/dist/ui/terminal-types.js +34 -0
  546. package/dist/ui/terminal-ui.d.ts +331 -0
  547. package/dist/ui/terminal-ui.js +819 -0
  548. package/dist/ui/terminal.d.ts +20 -0
  549. package/dist/ui/terminal.js +72 -0
  550. package/dist/ui/todo-zone.d.ts +19 -1
  551. package/dist/ui/todo-zone.js +124 -38
  552. package/dist/ui/tool-formatters.d.ts +16 -0
  553. package/dist/ui/tool-formatters.js +1027 -0
  554. package/dist/ui/turn-metrics.d.ts +56 -0
  555. package/dist/ui/turn-metrics.js +75 -0
  556. package/dist/ui/types.d.ts +28 -0
  557. package/dist/ui/types.js +1 -0
  558. package/dist/ui/vscode-diff-ipc.d.ts +102 -0
  559. package/dist/ui/vscode-diff-ipc.js +385 -0
  560. package/dist/utils/credentials.d.ts +24 -5
  561. package/dist/utils/credentials.js +123 -9
  562. package/dist/utils/debug-log.d.ts +28 -0
  563. package/dist/utils/debug-log.js +57 -0
  564. package/dist/utils/format-tokens.d.ts +13 -0
  565. package/dist/utils/format-tokens.js +18 -0
  566. package/dist/utils/git-config.d.ts +26 -0
  567. package/dist/utils/git-config.js +54 -0
  568. package/dist/utils/message-utils.d.ts +61 -0
  569. package/dist/utils/message-utils.js +72 -0
  570. package/dist/utils/model-tiers.d.ts +8 -1
  571. package/dist/utils/model-tiers.js +39 -17
  572. package/dist/utils/open-browser.d.ts +5 -0
  573. package/dist/utils/open-browser.js +32 -0
  574. package/dist/utils/path-safety.d.ts +56 -0
  575. package/dist/utils/path-safety.js +240 -0
  576. package/dist/utils/project-detection.d.ts +58 -0
  577. package/dist/utils/project-detection.js +424 -0
  578. package/dist/utils/project-memory.js +2 -1
  579. package/dist/utils/project-status.d.ts +2 -2
  580. package/dist/utils/startup-perf.d.ts +18 -0
  581. package/dist/utils/startup-perf.js +60 -0
  582. package/dist/utils/token-tracker.d.ts +62 -0
  583. package/dist/utils/token-tracker.js +150 -0
  584. package/dist/utils/token-types.d.ts +23 -0
  585. package/dist/utils/token-types.js +18 -0
  586. package/dist/utils/types/config-types.d.ts +32 -0
  587. package/dist/utils/types/config-types.js +8 -0
  588. package/dist/utils/update-checker.d.ts +28 -0
  589. package/dist/utils/update-checker.js +106 -0
  590. package/dist/utils/version.d.ts +7 -0
  591. package/dist/utils/version.js +10 -0
  592. package/dist/utils/vscode-detect.d.ts +39 -0
  593. package/dist/utils/vscode-detect.js +137 -0
  594. package/dist/workflow/guided-mode-injector.d.ts +42 -0
  595. package/dist/workflow/guided-mode-injector.js +191 -0
  596. package/dist/workflow/index.d.ts +8 -0
  597. package/dist/workflow/index.js +8 -0
  598. package/dist/workflow/step-criteria.d.ts +62 -0
  599. package/dist/workflow/step-criteria.js +150 -0
  600. package/dist/workflow/step-tracker.d.ts +92 -0
  601. package/dist/workflow/step-tracker.js +141 -0
  602. package/package.json +32 -12
  603. package/dist/index.old.d.ts +0 -7
  604. package/dist/index.old.js +0 -1014
  605. package/dist/repl.d.ts +0 -121
  606. package/dist/repl.js +0 -1878
  607. package/dist/templates/claude-md.d.ts +0 -7
  608. package/dist/templates/claude-md.js +0 -189
  609. package/dist/test-autocomplete.d.ts +0 -7
  610. package/dist/test-autocomplete.js +0 -85
  611. package/dist/test-tabbed-menu.d.ts +0 -7
  612. package/dist/test-tabbed-menu.js +0 -25
  613. package/dist/tool-selector.d.ts +0 -71
  614. package/dist/tool-selector.js +0 -184
  615. package/dist/ui/agents-overlay.d.ts +0 -12
  616. package/dist/ui/agents-overlay.js +0 -501
  617. package/dist/ui/arch-type-overlay.d.ts +0 -20
  618. package/dist/ui/arch-type-overlay.js +0 -229
  619. package/dist/ui/backlog-overlay.d.ts +0 -17
  620. package/dist/ui/backlog-overlay.js +0 -786
  621. package/dist/ui/commands-overlay.d.ts +0 -11
  622. package/dist/ui/commands-overlay.js +0 -410
  623. package/dist/ui/config-overlay.d.ts +0 -34
  624. package/dist/ui/config-overlay.js +0 -977
  625. package/dist/ui/init-overlay.d.ts +0 -24
  626. package/dist/ui/init-overlay.js +0 -525
  627. package/dist/ui/input-prompt-v2.d.ts +0 -179
  628. package/dist/ui/input-prompt-v2.js +0 -991
  629. package/dist/ui/model-warning-overlay.d.ts +0 -30
  630. package/dist/ui/model-warning-overlay.js +0 -171
  631. package/dist/ui/tools-overlay.d.ts +0 -26
  632. package/dist/ui/tools-overlay.js +0 -278
  633. package/dist/ui/tutorial-overlay.d.ts +0 -10
  634. package/dist/ui/tutorial-overlay.js +0 -936
@@ -0,0 +1,379 @@
1
+ /**
2
+ * LiveRegion - Unified Live-Updating Zone for Running Tools
3
+ *
4
+ * Manages the display of running tools (bash, subagents) that need live updates.
5
+ * Sits at the top of the footer, commits to scrolling zone on completion.
6
+ *
7
+ * Key features:
8
+ * - Single subagent: Full detail with tool history
9
+ * - Multiple subagents: Tree structure with summary header
10
+ * - Bash commands: Rolling output lines
11
+ * - Ephemeral notifications on completion
12
+ */
13
+ import { getStyles } from '../themes/index.js';
14
+ import { getVisibleLength } from './line-utils.js';
15
+ import { formatTokens } from './base/index.js';
16
+ // =============================================================================
17
+ // Constants
18
+ // =============================================================================
19
+ const EPHEMERAL_TIMEOUT_MS = 3000; // 3 seconds
20
+ const DEFAULT_MAX_OUTPUT_LINES = 3;
21
+ // Tree drawing characters
22
+ const TREE_BRANCH = '├─';
23
+ const TREE_END = '└─';
24
+ const TREE_CONTINUE = '│';
25
+ const RESULT_MARKER = '⎿';
26
+ // =============================================================================
27
+ // LiveRegion Class
28
+ // =============================================================================
29
+ export class LiveRegion {
30
+ items = new Map();
31
+ ephemeralNotifications = [];
32
+ maxOutputLines = DEFAULT_MAX_OUTPUT_LINES;
33
+ verbose = false;
34
+ expanded = false;
35
+ // =========================================================================
36
+ // Item Management
37
+ // =========================================================================
38
+ /**
39
+ * Add a new live item to the region.
40
+ */
41
+ addItem(item) {
42
+ this.items.set(item.id, item);
43
+ }
44
+ /**
45
+ * Update an existing live item.
46
+ */
47
+ updateItem(id, update) {
48
+ const existing = this.items.get(id);
49
+ if (existing) {
50
+ // Merge update into existing item (type assertion needed due to union type)
51
+ this.items.set(id, { ...existing, ...update });
52
+ }
53
+ }
54
+ /**
55
+ * Mark an item as completed. Returns the final item for committing to scrolling zone.
56
+ */
57
+ completeItem(id, status = 'done') {
58
+ const item = this.items.get(id);
59
+ if (item) {
60
+ item.status = status;
61
+ item.endTime = Date.now();
62
+ // Add ephemeral notification only for background items
63
+ if (item.background && item.type === 'subagent') {
64
+ this.addEphemeralNotification(`Agent "${item.description}" completed.`);
65
+ }
66
+ }
67
+ return item;
68
+ }
69
+ /**
70
+ * Remove an item and return it (for committing to scrolling zone).
71
+ */
72
+ removeItem(id) {
73
+ const item = this.items.get(id);
74
+ this.items.delete(id);
75
+ return item;
76
+ }
77
+ /**
78
+ * Get an item by ID.
79
+ */
80
+ getItem(id) {
81
+ return this.items.get(id);
82
+ }
83
+ /**
84
+ * Get all current items.
85
+ */
86
+ getItems() {
87
+ return Array.from(this.items.values());
88
+ }
89
+ /**
90
+ * Check if there are any items.
91
+ */
92
+ hasItems() {
93
+ return this.items.size > 0;
94
+ }
95
+ /**
96
+ * Get count of items.
97
+ */
98
+ getItemCount() {
99
+ return this.items.size;
100
+ }
101
+ /**
102
+ * Clear all items.
103
+ */
104
+ clear() {
105
+ this.items.clear();
106
+ this.ephemeralNotifications = [];
107
+ }
108
+ // =========================================================================
109
+ // Ephemeral Notifications
110
+ // =========================================================================
111
+ /**
112
+ * Add an ephemeral notification that disappears after timeout.
113
+ */
114
+ addEphemeralNotification(message) {
115
+ this.ephemeralNotifications.push({
116
+ message,
117
+ timestamp: Date.now(),
118
+ });
119
+ }
120
+ /**
121
+ * Clean up expired ephemeral notifications.
122
+ */
123
+ cleanupEphemeralNotifications() {
124
+ const now = Date.now();
125
+ this.ephemeralNotifications = this.ephemeralNotifications.filter((n) => now - n.timestamp < EPHEMERAL_TIMEOUT_MS);
126
+ }
127
+ // =========================================================================
128
+ // Configuration
129
+ // =========================================================================
130
+ /**
131
+ * Set maximum output lines per item.
132
+ */
133
+ setMaxOutputLines(maxLines) {
134
+ this.maxOutputLines = maxLines;
135
+ }
136
+ /**
137
+ * Set verbose mode.
138
+ */
139
+ setVerbose(verbose) {
140
+ this.verbose = verbose;
141
+ }
142
+ /**
143
+ * Toggle expanded view (Ctrl+O).
144
+ */
145
+ toggleExpanded() {
146
+ this.expanded = !this.expanded;
147
+ }
148
+ /**
149
+ * Get expanded state.
150
+ */
151
+ isExpanded() {
152
+ return this.expanded;
153
+ }
154
+ // =========================================================================
155
+ // Rendering
156
+ // =========================================================================
157
+ /**
158
+ * Render the live region content.
159
+ */
160
+ render(options) {
161
+ const lines = [];
162
+ const items = this.getItems();
163
+ if (items.length === 0) {
164
+ // Only show ephemeral notifications if no items
165
+ this.cleanupEphemeralNotifications();
166
+ for (const notification of this.ephemeralNotifications) {
167
+ lines.push(this.renderEphemeralNotification(notification.message));
168
+ }
169
+ return lines;
170
+ }
171
+ // Separate items by type
172
+ const subagents = items.filter((i) => i.type === 'subagent');
173
+ const bashItems = items.filter((i) => i.type === 'bash');
174
+ const toolItems = items.filter((i) => i.type === 'tool');
175
+ // Render subagents (single vs multiple has different rendering)
176
+ if (subagents.length === 1) {
177
+ lines.push(...this.renderSingleSubagent(subagents[0], options));
178
+ }
179
+ else if (subagents.length > 1) {
180
+ lines.push(...this.renderMultipleSubagents(subagents, options));
181
+ }
182
+ // Render bash commands
183
+ for (const bash of bashItems) {
184
+ lines.push(...this.renderBashItem(bash, options));
185
+ }
186
+ // Render generic tools
187
+ for (const tool of toolItems) {
188
+ lines.push(...this.renderToolItem(tool, options));
189
+ }
190
+ // Add ephemeral notifications at the end
191
+ this.cleanupEphemeralNotifications();
192
+ for (const notification of this.ephemeralNotifications) {
193
+ lines.push(this.renderEphemeralNotification(notification.message));
194
+ }
195
+ return lines;
196
+ }
197
+ // =========================================================================
198
+ // Single Subagent Rendering
199
+ // =========================================================================
200
+ renderSingleSubagent(item, options) {
201
+ const s = getStyles();
202
+ const lines = [];
203
+ // Header: ● AgentType(description)
204
+ const statusIcon = item.status === 'done' ? ' ✓' : '';
205
+ const header = `${s.info('●')} ${s.primary(item.agentType)}(${item.description})${statusIcon}`;
206
+ lines.push(header);
207
+ if (item.status === 'done') {
208
+ // Completed: show summary
209
+ const duration = item.endTime ? Math.round((item.endTime - item.startTime) / 1000) : 0;
210
+ const tokenStr = options.showTokens ? ` · ${formatTokens(item.tokenCount)} tokens` : '';
211
+ const summary = ` ${RESULT_MARKER} Done (${String(item.toolCount)} tool uses${tokenStr} · ${String(duration)}s)`;
212
+ lines.push(s.muted(summary));
213
+ }
214
+ else {
215
+ // Running: show last action
216
+ if (item.lastAction) {
217
+ lines.push(` ${RESULT_MARKER} ${s.muted(item.lastAction)}`);
218
+ }
219
+ else {
220
+ lines.push(` ${RESULT_MARKER} ${s.muted('Initializing…')}`);
221
+ }
222
+ // Show detail lines if expanded or verbose
223
+ if ((this.expanded || this.verbose) && item.lastActionDetails.length > 0) {
224
+ for (const detail of item.lastActionDetails.slice(0, this.maxOutputLines)) {
225
+ lines.push(` ${s.muted(detail)}`);
226
+ }
227
+ if (item.lastActionDetails.length > this.maxOutputLines) {
228
+ const hidden = item.lastActionDetails.length - this.maxOutputLines;
229
+ lines.push(` ${s.muted(`+${String(hidden)} more tool uses`)} ${s.muted('(ctrl+o to expand)')}`);
230
+ }
231
+ }
232
+ // Hints
233
+ // ctrl+b background: coming soon
234
+ }
235
+ return lines;
236
+ }
237
+ // =========================================================================
238
+ // Multiple Subagents Rendering (Tree Structure)
239
+ // =========================================================================
240
+ renderMultipleSubagents(items, options) {
241
+ const s = getStyles();
242
+ const lines = [];
243
+ // Count running vs done
244
+ const runningCount = items.filter((i) => i.status === 'running').length;
245
+ const allDone = runningCount === 0;
246
+ // Determine agent type label
247
+ const types = new Set(items.map((i) => i.agentType));
248
+ const typeLabel = types.size === 1 ? `${items[0].agentType} agents` : 'agents';
249
+ // Header: ● Running N agents… or ● N agents finished
250
+ if (allDone) {
251
+ lines.push(`${s.info('●')} ${String(items.length)} ${typeLabel} finished ${s.muted('(ctrl+o to expand)')}`);
252
+ }
253
+ else {
254
+ lines.push(`${s.info('●')} Running ${String(items.length)} ${typeLabel}… ${s.muted('(ctrl+o to expand)')}`);
255
+ }
256
+ // Render each agent in tree structure
257
+ for (let i = 0; i < items.length; i++) {
258
+ const item = items[i];
259
+ const isLast = i === items.length - 1;
260
+ const branch = isLast ? TREE_END : TREE_BRANCH;
261
+ const continuation = isLast ? ' ' : `${TREE_CONTINUE} `;
262
+ // Agent line: description · tool count · tokens
263
+ const tokenStr = options.showTokens ? ` · ${formatTokens(item.tokenCount)} tokens` : '';
264
+ const toolWord = item.toolCount === 1 ? 'tool use' : 'tool uses';
265
+ const agentLine = ` ${branch} ${item.description} · ${String(item.toolCount)} ${toolWord}${tokenStr}`;
266
+ lines.push(agentLine);
267
+ // Last action line
268
+ if (item.status === 'done') {
269
+ lines.push(` ${continuation}${RESULT_MARKER} ${s.muted('Done')}`);
270
+ }
271
+ else if (item.lastAction) {
272
+ lines.push(` ${continuation}${RESULT_MARKER} ${s.muted(item.lastAction)}`);
273
+ }
274
+ else {
275
+ lines.push(` ${continuation}${RESULT_MARKER} ${s.muted('Initializing…')}`);
276
+ }
277
+ }
278
+ // Hint at the end
279
+ if (!allDone) {
280
+ // ctrl+b background: coming soon
281
+ }
282
+ return lines;
283
+ }
284
+ // =========================================================================
285
+ // Bash Item Rendering
286
+ // =========================================================================
287
+ renderBashItem(item, options) {
288
+ const s = getStyles();
289
+ const lines = [];
290
+ // Header: ● Bash(command)
291
+ // Handle multi-line commands - only show first line
292
+ // Truncate long commands - show more context than before (60 chars)
293
+ const maxCmdLen = Math.min(60, options.width - 15);
294
+ const statusIcon = item.status === 'done' ? ' ✓' : '';
295
+ // For multi-line commands, show only first line or a summary
296
+ let cmdForDisplay = item.command;
297
+ const newlineIndex = cmdForDisplay.indexOf('\n');
298
+ if (newlineIndex !== -1) {
299
+ // Multi-line command - show first line with indicator
300
+ const firstLine = cmdForDisplay.slice(0, newlineIndex).trim();
301
+ const lineCount = cmdForDisplay.split('\n').length;
302
+ cmdForDisplay = firstLine.length > 0
303
+ ? `${firstLine}… (${String(lineCount)} lines)`
304
+ : `(${String(lineCount)} line script)`;
305
+ }
306
+ const cmdDisplay = cmdForDisplay.length > maxCmdLen
307
+ ? cmdForDisplay.slice(0, maxCmdLen) + '…'
308
+ : cmdForDisplay;
309
+ lines.push(`${s.info('●')} ${s.primary('Bash')}(${cmdDisplay})${statusIcon}`);
310
+ // Output lines - show first N lines (more useful than last N for live streaming)
311
+ const displayLines = this.expanded
312
+ ? item.output
313
+ : item.output.slice(0, this.maxOutputLines);
314
+ if (displayLines.length > 0) {
315
+ for (const line of displayLines) {
316
+ const truncated = this.truncateLine(line, options.width - 5);
317
+ lines.push(` ${RESULT_MARKER} ${s.muted(truncated)}`);
318
+ }
319
+ // Show collapsed indicator if there are hidden lines
320
+ if (!this.expanded && item.output.length > this.maxOutputLines) {
321
+ const hidden = item.output.length - this.maxOutputLines;
322
+ lines.push(` ${s.muted(`… +${String(hidden)} lines`)} ${s.muted('(ctrl+o to expand)')}`);
323
+ }
324
+ }
325
+ // Hint for running bash
326
+ if (item.status === 'running') {
327
+ // ctrl+b background: coming soon
328
+ }
329
+ return lines;
330
+ }
331
+ // =========================================================================
332
+ // Tool Item Rendering
333
+ // =========================================================================
334
+ renderToolItem(item, _options) {
335
+ const s = getStyles();
336
+ const lines = [];
337
+ // Header: ● ToolName(params)
338
+ const statusIcon = item.status === 'done' ? ' ✓' : '';
339
+ lines.push(`${s.info('●')} ${s.primary(item.name)}(${item.params})${statusIcon}`);
340
+ // Progress or status
341
+ if (item.progress) {
342
+ lines.push(` ${RESULT_MARKER} ${s.muted(item.progress)}`);
343
+ }
344
+ return lines;
345
+ }
346
+ // =========================================================================
347
+ // Ephemeral Notification Rendering
348
+ // =========================================================================
349
+ renderEphemeralNotification(message) {
350
+ const s = getStyles();
351
+ return `${s.info('●')} ${message}`;
352
+ }
353
+ // =========================================================================
354
+ // Helpers
355
+ // =========================================================================
356
+ /**
357
+ * Truncate a line to fit within width.
358
+ */
359
+ truncateLine(line, maxWidth) {
360
+ const visibleLen = getVisibleLength(line);
361
+ if (visibleLen <= maxWidth) {
362
+ return line;
363
+ }
364
+ // Simple truncation (doesn't handle ANSI codes perfectly)
365
+ return line.slice(0, maxWidth - 1) + '…';
366
+ }
367
+ /**
368
+ * Format duration for display.
369
+ */
370
+ formatDuration(ms) {
371
+ const seconds = Math.floor(ms / 1000);
372
+ if (seconds < 60) {
373
+ return `${String(seconds)}s`;
374
+ }
375
+ const minutes = Math.floor(seconds / 60);
376
+ const remainingSeconds = seconds % 60;
377
+ return `${String(minutes)}m ${String(remainingSeconds)}s`;
378
+ }
379
+ }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Mascot Expression Library
3
+ *
4
+ * ASCII art expressions for the compilr mascot - a retro CRT monitor
5
+ * with rabbit-ear antennas and a 3D keyboard.
6
+ *
7
+ * Each expression is 6 lines tall and designed to sit alongside the logo.
8
+ */
9
+ export type ExpressionCode = 'neutral' | 'thinking' | 'looking_left' | 'looking_right' | 'sleeping' | 'alert' | 'error' | 'success' | 'success_minimal' | 'searching' | 'skeptical';
10
+ export type MascotSetting = 'none' | 'random' | ExpressionCode;
11
+ export declare const EXPRESSIONS: Record<ExpressionCode, string[]>;
12
+ export declare const EXPRESSIONS_INLINE: Record<ExpressionCode, string>;
13
+ export declare const EXPRESSION_CODES: ExpressionCode[];
14
+ export declare const MASCOT_OPTIONS: MascotSetting[];
15
+ export declare const MASCOT_LABELS: Record<MascotSetting, string>;
16
+ /**
17
+ * Get a random expression code
18
+ */
19
+ export declare function getRandomExpression(): ExpressionCode;
20
+ /**
21
+ * Reset the session expression (for next startup or when settings change)
22
+ */
23
+ export declare function resetSessionExpression(): void;
24
+ /**
25
+ * Get expression lines for a mascot setting
26
+ * Returns null for 'none', picks random for 'random', otherwise returns the expression
27
+ */
28
+ export declare function getExpressionForSetting(setting: MascotSetting): string[] | null;
29
+ /**
30
+ * Get the width of the mascot (for layout calculations)
31
+ */
32
+ export declare function getMascotWidth(): number;
@@ -0,0 +1,213 @@
1
+ /**
2
+ * Mascot Expression Library
3
+ *
4
+ * ASCII art expressions for the compilr mascot - a retro CRT monitor
5
+ * with rabbit-ear antennas and a 3D keyboard.
6
+ *
7
+ * Each expression is 6 lines tall and designed to sit alongside the logo.
8
+ */
9
+ // Full mascot expressions (6 lines each)
10
+ // Design elements:
11
+ // - \|/ - Rabbit-ear antennas (retro TV)
12
+ // - ╭══════════╮ - Rounded top with double-line (CRT bezel)
13
+ // - ║ - Double left border (3D depth effect)
14
+ // - ' - Screen glare/reflection
15
+ // - ▐▌ - Rectangular eyes
16
+ // - ╰─═──────═─╯ - Bottom with feet (═)
17
+ // - \________\ - 3D perspective keyboard
18
+ export const EXPRESSIONS = {
19
+ // Standard/default - looking at user
20
+ neutral: [
21
+ ' \\|/',
22
+ ' ╭══════════╮',
23
+ " ║' ▐▌ ▐▌ │",
24
+ ' ║ │',
25
+ ' ╰─═──────═─╯',
26
+ ' \\________\\',
27
+ ],
28
+ // Processing, working on something
29
+ thinking: [
30
+ ' \\|/',
31
+ ' ╭══════════╮',
32
+ " ║' ▐▌ ▐▌ │",
33
+ ' ║ ... │',
34
+ ' ╰─═──────═─╯',
35
+ ' \\________\\',
36
+ ],
37
+ // Glancing left (3D effect switches sides)
38
+ looking_left: [
39
+ ' \\|/',
40
+ ' ╭══════════╮',
41
+ " │ ▐▌ ▐▌ '║",
42
+ ' │ ║',
43
+ ' ╰─═──────═─╯',
44
+ ' \\________\\',
45
+ ],
46
+ // Glancing right (eyes shifted)
47
+ looking_right: [
48
+ ' \\|/',
49
+ ' ╭══════════╮',
50
+ " ║' ▐▌ ▐▌ │",
51
+ ' ║ │',
52
+ ' ╰─═──────═─╯',
53
+ ' \\________\\',
54
+ ],
55
+ // Idle, waiting, inactive
56
+ sleeping: [
57
+ ' \\|/',
58
+ ' ╭══════════╮',
59
+ " ║' __ __ │",
60
+ ' ║ zZ │',
61
+ ' ╰─═──────═─╯',
62
+ ' \\________\\',
63
+ ],
64
+ // Attention needed, important notification
65
+ alert: [
66
+ ' \\|||/',
67
+ ' ╭══════════╮',
68
+ " ║' ▐▌ ▐▌ │",
69
+ ' ║ ! │',
70
+ ' ╰─═──────═─╯',
71
+ ' \\________\\',
72
+ ],
73
+ // Error occurred, confused, problem
74
+ error: [
75
+ ' \\|/',
76
+ ' ╭══════════╮',
77
+ " ║' × × │",
78
+ ' ║ ??? │',
79
+ ' ╰─═──────═─╯',
80
+ ' \\________\\',
81
+ ],
82
+ // Task completed successfully, happy
83
+ success: [
84
+ ' \\|/',
85
+ ' ╭══════════╮',
86
+ " ║' ^ ^ │",
87
+ ' ║ __ │',
88
+ ' ╰─═──────═─╯',
89
+ ' \\________\\',
90
+ ],
91
+ // Success with just happy eyes, no smile
92
+ success_minimal: [
93
+ ' \\|/',
94
+ ' ╭══════════╮',
95
+ " ║' ^ ^ │",
96
+ ' ║ │',
97
+ ' ╰─═──────═─╯',
98
+ ' \\________\\',
99
+ ],
100
+ // Looking for something, scanning
101
+ searching: [
102
+ ' \\|/',
103
+ ' ╭══════════╮',
104
+ " ║' ◐ ◐ │",
105
+ ' ║ ~~~ │',
106
+ ' ╰─═──────═─╯',
107
+ ' \\________\\',
108
+ ],
109
+ // Doubtful, questioning, side-eye
110
+ skeptical: [
111
+ ' \\|/',
112
+ ' ╭══════════╮',
113
+ " ║' > > │",
114
+ ' ║ │',
115
+ ' ╰─═──────═─╯',
116
+ ' \\________\\',
117
+ ],
118
+ };
119
+ // Inline mascot expressions (single line) for status updates
120
+ export const EXPRESSIONS_INLINE = {
121
+ neutral: '[•_•]',
122
+ thinking: '[•_•]...',
123
+ looking_left: '[<_<]',
124
+ looking_right: '[>_>]',
125
+ sleeping: '[-_-]zZ',
126
+ alert: '[•!•]',
127
+ error: '[×_×]',
128
+ success: '[^_^]',
129
+ success_minimal: '[^_^]',
130
+ searching: '[◐_◐]',
131
+ skeptical: '[>_>]',
132
+ };
133
+ // All expression codes for iteration
134
+ export const EXPRESSION_CODES = [
135
+ 'neutral',
136
+ 'thinking',
137
+ 'looking_left',
138
+ 'looking_right',
139
+ 'sleeping',
140
+ 'alert',
141
+ 'error',
142
+ 'success',
143
+ 'success_minimal',
144
+ 'searching',
145
+ 'skeptical',
146
+ ];
147
+ // All mascot setting options (for config menu)
148
+ export const MASCOT_OPTIONS = [
149
+ 'none',
150
+ 'random',
151
+ ...EXPRESSION_CODES,
152
+ ];
153
+ // Human-readable labels for mascot options
154
+ export const MASCOT_LABELS = {
155
+ none: 'None',
156
+ random: 'Random',
157
+ neutral: 'Neutral',
158
+ thinking: 'Thinking',
159
+ looking_left: 'Looking Left',
160
+ looking_right: 'Looking Right',
161
+ sleeping: 'Sleeping',
162
+ alert: 'Alert',
163
+ error: 'Error',
164
+ success: 'Success',
165
+ success_minimal: 'Success (Minimal)',
166
+ searching: 'Searching',
167
+ skeptical: 'Skeptical',
168
+ };
169
+ /**
170
+ * Get a random expression code
171
+ */
172
+ export function getRandomExpression() {
173
+ const index = Math.floor(Math.random() * EXPRESSION_CODES.length);
174
+ return EXPRESSION_CODES[index];
175
+ }
176
+ // Session-level cache for random expression (selected once at startup)
177
+ let sessionRandomExpression = null;
178
+ /**
179
+ * Get the cached session expression, or generate one if not set
180
+ */
181
+ function getSessionExpression() {
182
+ if (sessionRandomExpression === null) {
183
+ sessionRandomExpression = getRandomExpression();
184
+ }
185
+ return sessionRandomExpression;
186
+ }
187
+ /**
188
+ * Reset the session expression (for next startup or when settings change)
189
+ */
190
+ export function resetSessionExpression() {
191
+ sessionRandomExpression = null;
192
+ }
193
+ /**
194
+ * Get expression lines for a mascot setting
195
+ * Returns null for 'none', picks random for 'random', otherwise returns the expression
196
+ */
197
+ export function getExpressionForSetting(setting) {
198
+ if (setting === 'none') {
199
+ return null;
200
+ }
201
+ if (setting === 'random') {
202
+ // Use cached session expression for consistency within a session
203
+ return EXPRESSIONS[getSessionExpression()];
204
+ }
205
+ return EXPRESSIONS[setting];
206
+ }
207
+ /**
208
+ * Get the width of the mascot (for layout calculations)
209
+ */
210
+ export function getMascotWidth() {
211
+ // All expressions have the same width - use neutral as reference
212
+ return Math.max(...EXPRESSIONS.neutral.map((line) => line.length));
213
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Mascot Module
3
+ *
4
+ * Exports for the compilr mascot system.
5
+ * The mascot is a retro CRT monitor that displays expressions.
6
+ */
7
+ export { type ExpressionCode, type MascotSetting, EXPRESSIONS, EXPRESSIONS_INLINE, EXPRESSION_CODES, MASCOT_OPTIONS, MASCOT_LABELS, getRandomExpression, getExpressionForSetting, getMascotWidth, resetSessionExpression, } from './expressions.js';
8
+ export { renderMascotWithLogo, combineHorizontally } from './renderer.js';
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Mascot Module
3
+ *
4
+ * Exports for the compilr mascot system.
5
+ * The mascot is a retro CRT monitor that displays expressions.
6
+ */
7
+ export { EXPRESSIONS, EXPRESSIONS_INLINE, EXPRESSION_CODES, MASCOT_OPTIONS, MASCOT_LABELS, getRandomExpression, getExpressionForSetting, getMascotWidth, resetSessionExpression, } from './expressions.js';
8
+ export { renderMascotWithLogo, combineHorizontally } from './renderer.js';
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Mascot Renderer
3
+ *
4
+ * Handles rendering the mascot alongside the logo and applying colors.
5
+ */
6
+ import { type MascotSetting } from './expressions.js';
7
+ /**
8
+ * Combine two sets of lines horizontally with a gap
9
+ */
10
+ export declare function combineHorizontally(left: string[], right: string[], gap: number): string[];
11
+ /**
12
+ * Render mascot with logo side by side
13
+ * Returns the combined lines ready for output
14
+ *
15
+ * @param mascotSetting - The mascot setting (expression or 'none'/'random')
16
+ * @param version - Version string to append to logo
17
+ * @param projectName - Optional active project name to show
18
+ */
19
+ export declare function renderMascotWithLogo(mascotSetting: MascotSetting, version: string, projectName?: string | null, highlights?: string[]): string[];