@compilr-dev/cli 0.5.0 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (587) hide show
  1. package/LICENSE +108 -0
  2. package/README.md +237 -69
  3. package/dist/.tsbuildinfo.app +1 -0
  4. package/dist/.tsbuildinfo.data +1 -0
  5. package/dist/.tsbuildinfo.domain +1 -0
  6. package/dist/.tsbuildinfo.foundation +1 -0
  7. package/dist/agent.d.ts +61 -4
  8. package/dist/agent.js +241 -245
  9. package/dist/anchors/index.d.ts +1 -1
  10. package/dist/anchors/index.js +1 -1
  11. package/dist/anchors/project-anchors.d.ts +2 -2
  12. package/dist/anchors/project-anchors.js +1 -1
  13. package/dist/auth/api-client.d.ts +124 -0
  14. package/dist/auth/api-client.js +261 -0
  15. package/dist/auth/index.d.ts +172 -0
  16. package/dist/auth/index.js +545 -0
  17. package/dist/auth/storage.d.ts +52 -0
  18. package/dist/auth/storage.js +118 -0
  19. package/dist/changelog/index.d.ts +16 -0
  20. package/dist/changelog/index.js +24 -0
  21. package/dist/changelog/releases.d.ts +17 -0
  22. package/dist/changelog/releases.js +63 -0
  23. package/dist/commands-v2/handlers/auth.d.ts +10 -0
  24. package/dist/commands-v2/handlers/auth.js +118 -0
  25. package/dist/commands-v2/handlers/background.d.ts +14 -0
  26. package/dist/commands-v2/handlers/background.js +276 -0
  27. package/dist/commands-v2/handlers/context.js +286 -81
  28. package/dist/commands-v2/handlers/core.d.ts +1 -0
  29. package/dist/commands-v2/handlers/core.js +133 -8
  30. package/dist/commands-v2/handlers/debug.js +18 -0
  31. package/dist/commands-v2/handlers/delegations.d.ts +8 -0
  32. package/dist/commands-v2/handlers/delegations.js +29 -0
  33. package/dist/commands-v2/handlers/files.d.ts +8 -0
  34. package/dist/commands-v2/handlers/files.js +162 -0
  35. package/dist/commands-v2/handlers/filter.d.ts +9 -0
  36. package/dist/commands-v2/handlers/filter.js +130 -0
  37. package/dist/commands-v2/handlers/games.d.ts +7 -0
  38. package/dist/commands-v2/handlers/games.js +57 -0
  39. package/dist/commands-v2/handlers/index.d.ts +13 -0
  40. package/dist/commands-v2/handlers/index.js +39 -0
  41. package/dist/commands-v2/handlers/mcp.d.ts +8 -0
  42. package/dist/commands-v2/handlers/mcp.js +39 -0
  43. package/dist/commands-v2/handlers/notifications.d.ts +9 -0
  44. package/dist/commands-v2/handlers/notifications.js +34 -0
  45. package/dist/commands-v2/handlers/project.js +295 -31
  46. package/dist/commands-v2/handlers/reset.d.ts +11 -0
  47. package/dist/commands-v2/handlers/reset.js +118 -0
  48. package/dist/commands-v2/handlers/session.d.ts +161 -0
  49. package/dist/commands-v2/handlers/session.js +805 -0
  50. package/dist/commands-v2/handlers/settings.d.ts +2 -0
  51. package/dist/commands-v2/handlers/settings.js +217 -35
  52. package/dist/commands-v2/handlers/tasks.d.ts +5 -0
  53. package/dist/commands-v2/handlers/tasks.js +36 -0
  54. package/dist/commands-v2/handlers/team.d.ts +9 -0
  55. package/dist/commands-v2/handlers/team.js +549 -0
  56. package/dist/commands-v2/handlers/terminals.d.ts +9 -0
  57. package/dist/commands-v2/handlers/terminals.js +34 -0
  58. package/dist/commands-v2/index.d.ts +3 -2
  59. package/dist/commands-v2/index.js +4 -1
  60. package/dist/commands-v2/registry.d.ts +15 -0
  61. package/dist/commands-v2/registry.js +34 -0
  62. package/dist/commands-v2/types.d.ts +81 -3
  63. package/dist/commands.js +13 -0
  64. package/dist/compilr-diff-companion.vsix +0 -0
  65. package/dist/db/index.js +98 -4
  66. package/dist/db/repositories/document-repository.d.ts +2 -0
  67. package/dist/db/repositories/document-repository.js +6 -1
  68. package/dist/db/repositories/index.d.ts +2 -0
  69. package/dist/db/repositories/index.js +1 -0
  70. package/dist/db/repositories/plan-repository.d.ts +101 -0
  71. package/dist/db/repositories/plan-repository.js +275 -0
  72. package/dist/db/repositories/project-repository.d.ts +6 -0
  73. package/dist/db/repositories/project-repository.js +41 -0
  74. package/dist/db/repositories/work-item-repository.d.ts +15 -0
  75. package/dist/db/repositories/work-item-repository.js +69 -4
  76. package/dist/db/schema.d.ts +40 -3
  77. package/dist/db/schema.js +66 -3
  78. package/dist/episodes/index.d.ts +20 -0
  79. package/dist/episodes/index.js +27 -0
  80. package/dist/episodes/recorder.d.ts +51 -0
  81. package/dist/episodes/recorder.js +195 -0
  82. package/dist/episodes/significant-work.d.ts +21 -0
  83. package/dist/episodes/significant-work.js +56 -0
  84. package/dist/episodes/store.d.ts +38 -0
  85. package/dist/episodes/store.js +199 -0
  86. package/dist/episodes/types.d.ts +35 -0
  87. package/dist/episodes/types.js +6 -0
  88. package/dist/episodes/work-at-risk.d.ts +12 -0
  89. package/dist/episodes/work-at-risk.js +38 -0
  90. package/dist/episodes/work-summary-anchor.d.ts +23 -0
  91. package/dist/episodes/work-summary-anchor.js +73 -0
  92. package/dist/games/coins.d.ts +66 -0
  93. package/dist/games/coins.js +165 -0
  94. package/dist/games/game-base.d.ts +84 -0
  95. package/dist/games/game-base.js +204 -0
  96. package/dist/games/index.d.ts +16 -0
  97. package/dist/games/index.js +49 -0
  98. package/dist/games/scores.d.ts +69 -0
  99. package/dist/games/scores.js +191 -0
  100. package/dist/games/tetris/board.d.ts +59 -0
  101. package/dist/games/tetris/board.js +170 -0
  102. package/dist/games/tetris/index.d.ts +109 -0
  103. package/dist/games/tetris/index.js +610 -0
  104. package/dist/games/tetris/pieces.d.ts +44 -0
  105. package/dist/games/tetris/pieces.js +271 -0
  106. package/dist/games/tetris/renderer.d.ts +26 -0
  107. package/dist/games/tetris/renderer.js +77 -0
  108. package/dist/guide/guide-content.d.ts +23 -0
  109. package/dist/guide/guide-content.js +196 -0
  110. package/dist/guide/index.d.ts +8 -0
  111. package/dist/guide/index.js +7 -0
  112. package/dist/guide/shared-content.d.ts +37 -0
  113. package/dist/guide/shared-content.js +1272 -0
  114. package/dist/guide/tutorial-helpers.d.ts +57 -0
  115. package/dist/guide/tutorial-helpers.js +147 -0
  116. package/dist/handlers/ask-user-handlers.d.ts +32 -0
  117. package/dist/handlers/ask-user-handlers.js +104 -0
  118. package/dist/handlers/delegation-handlers.d.ts +34 -0
  119. package/dist/handlers/delegation-handlers.js +291 -0
  120. package/dist/handlers/permission-handler.d.ts +30 -0
  121. package/dist/handlers/permission-handler.js +205 -0
  122. package/dist/index.d.ts +11 -1
  123. package/dist/index.js +448 -271
  124. package/dist/input-handlers/memory-handler.d.ts +1 -1
  125. package/dist/input-handlers/memory-handler.js +2 -1
  126. package/dist/models/index.d.ts +10 -0
  127. package/dist/models/index.js +12 -0
  128. package/dist/models/model-registry.d.ts +38 -0
  129. package/dist/models/model-registry.js +69 -0
  130. package/dist/models/model-tiers.d.ts +28 -0
  131. package/dist/models/model-tiers.js +71 -0
  132. package/dist/models/model-validation.d.ts +25 -0
  133. package/dist/models/model-validation.js +291 -0
  134. package/dist/models/ollama-models.d.ts +73 -0
  135. package/dist/models/ollama-models.js +178 -0
  136. package/dist/models/provider-types.d.ts +6 -0
  137. package/dist/models/provider-types.js +1 -0
  138. package/dist/models/providers.d.ts +35 -0
  139. package/dist/models/providers.js +58 -0
  140. package/dist/models/types.d.ts +4 -0
  141. package/dist/models/types.js +4 -0
  142. package/dist/multi-agent/activity.d.ts +21 -0
  143. package/dist/multi-agent/activity.js +34 -0
  144. package/dist/multi-agent/agent-selection.d.ts +55 -0
  145. package/dist/multi-agent/agent-selection.js +90 -0
  146. package/dist/multi-agent/artifacts.d.ts +197 -0
  147. package/dist/multi-agent/artifacts.js +379 -0
  148. package/dist/multi-agent/checkpointer.d.ts +138 -0
  149. package/dist/multi-agent/checkpointer.js +471 -0
  150. package/dist/multi-agent/collision-utils.d.ts +16 -0
  151. package/dist/multi-agent/collision-utils.js +28 -0
  152. package/dist/multi-agent/context-resolver.d.ts +97 -0
  153. package/dist/multi-agent/context-resolver.js +316 -0
  154. package/dist/multi-agent/custom-agents.d.ts +83 -0
  155. package/dist/multi-agent/custom-agents.js +227 -0
  156. package/dist/multi-agent/delegation-tracker.d.ts +157 -0
  157. package/dist/multi-agent/delegation-tracker.js +243 -0
  158. package/dist/multi-agent/file-lock-hook.d.ts +29 -0
  159. package/dist/multi-agent/file-lock-hook.js +97 -0
  160. package/dist/multi-agent/file-locks.d.ts +58 -0
  161. package/dist/multi-agent/file-locks.js +194 -0
  162. package/dist/multi-agent/index.d.ts +24 -0
  163. package/dist/multi-agent/index.js +30 -0
  164. package/dist/multi-agent/mention-parser.d.ts +64 -0
  165. package/dist/multi-agent/mention-parser.js +146 -0
  166. package/dist/multi-agent/notification-manager.d.ts +84 -0
  167. package/dist/multi-agent/notification-manager.js +224 -0
  168. package/dist/multi-agent/pending-requests.d.ts +122 -0
  169. package/dist/multi-agent/pending-requests.js +155 -0
  170. package/dist/multi-agent/session-registry.d.ts +139 -0
  171. package/dist/multi-agent/session-registry.js +514 -0
  172. package/dist/multi-agent/shared-context.d.ts +293 -0
  173. package/dist/multi-agent/shared-context.js +671 -0
  174. package/dist/multi-agent/skill-requirements.d.ts +66 -0
  175. package/dist/multi-agent/skill-requirements.js +178 -0
  176. package/dist/multi-agent/task-assignment.d.ts +69 -0
  177. package/dist/multi-agent/task-assignment.js +123 -0
  178. package/dist/multi-agent/task-suggestion.d.ts +31 -0
  179. package/dist/multi-agent/task-suggestion.js +72 -0
  180. package/dist/multi-agent/team-agent.d.ts +201 -0
  181. package/dist/multi-agent/team-agent.js +488 -0
  182. package/dist/multi-agent/team.d.ts +286 -0
  183. package/dist/multi-agent/team.js +610 -0
  184. package/dist/multi-agent/tool-config.d.ts +110 -0
  185. package/dist/multi-agent/tool-config.js +661 -0
  186. package/dist/multi-agent/types.d.ts +211 -0
  187. package/dist/multi-agent/types.js +617 -0
  188. package/dist/prompts/plan-mode-prompt.d.ts +11 -0
  189. package/dist/prompts/plan-mode-prompt.js +95 -0
  190. package/dist/repl-helpers.js +5 -2
  191. package/dist/repl-v2.d.ts +401 -2
  192. package/dist/repl-v2.js +2588 -65
  193. package/dist/session/index.d.ts +6 -0
  194. package/dist/session/index.js +6 -0
  195. package/dist/session/project-session-manager.d.ts +158 -0
  196. package/dist/session/project-session-manager.js +650 -0
  197. package/dist/settings/index.d.ts +133 -13
  198. package/dist/settings/index.js +329 -24
  199. package/dist/settings/mcp-config.d.ts +76 -0
  200. package/dist/settings/mcp-config.js +143 -0
  201. package/dist/settings/paths.d.ts +4 -0
  202. package/dist/settings/paths.js +6 -0
  203. package/dist/shared-handlers.d.ts +62 -0
  204. package/dist/shared-handlers.js +48 -0
  205. package/dist/system-prompt/builder.d.ts +5 -0
  206. package/dist/system-prompt/builder.js +4 -0
  207. package/dist/system-prompt/index.d.ts +18 -0
  208. package/dist/system-prompt/index.js +18 -0
  209. package/dist/system-prompt/modules.d.ts +5 -0
  210. package/dist/system-prompt/modules.js +4 -0
  211. package/dist/tabbed-menu.js +2 -1
  212. package/dist/templates/compilr-md-import.d.ts +16 -0
  213. package/dist/templates/compilr-md-import.js +241 -0
  214. package/dist/templates/compilr-md.js +10 -61
  215. package/dist/templates/config-json.d.ts +1 -25
  216. package/dist/templates/index.d.ts +2 -0
  217. package/dist/templates/index.js +34 -73
  218. package/dist/tool-names.d.ts +113 -0
  219. package/dist/tool-names.js +239 -0
  220. package/dist/tools/ask-user-simple.d.ts +1 -1
  221. package/dist/tools/ask-user-simple.js +2 -1
  222. package/dist/tools/ask-user.d.ts +1 -1
  223. package/dist/tools/ask-user.js +2 -1
  224. package/dist/tools/backlog.d.ts +2 -2
  225. package/dist/tools/backlog.js +1 -1
  226. package/dist/tools/db-tools.d.ts +13 -61
  227. package/dist/tools/db-tools.js +12 -13
  228. package/dist/tools/delegate-background.d.ts +27 -0
  229. package/dist/tools/delegate-background.js +115 -0
  230. package/dist/tools/delegate.d.ts +22 -0
  231. package/dist/tools/delegate.js +97 -0
  232. package/dist/tools/delegation-status.d.ts +16 -0
  233. package/dist/tools/delegation-status.js +128 -0
  234. package/dist/tools/guide-tool.d.ts +12 -0
  235. package/dist/tools/guide-tool.js +59 -0
  236. package/dist/tools/handoff.d.ts +25 -0
  237. package/dist/tools/handoff.js +99 -0
  238. package/dist/tools/meta-tools.d.ts +26 -0
  239. package/dist/tools/meta-tools.js +47 -0
  240. package/dist/tools/platform-adapter.d.ts +35 -0
  241. package/dist/tools/platform-adapter.js +404 -0
  242. package/dist/tools/project-db.d.ts +5 -73
  243. package/dist/tools/project-db.js +5 -336
  244. package/dist/tools.d.ts +67 -2
  245. package/dist/tools.js +240 -48
  246. package/dist/ui/autocomplete-controller.d.ts +42 -0
  247. package/dist/ui/autocomplete-controller.js +384 -0
  248. package/dist/ui/base/index.d.ts +1 -1
  249. package/dist/ui/base/index.js +1 -1
  250. package/dist/ui/base/overlay-base-v2.d.ts +10 -0
  251. package/dist/ui/base/overlay-base-v2.js +14 -0
  252. package/dist/ui/base/render-utils.d.ts +19 -0
  253. package/dist/ui/base/render-utils.js +25 -0
  254. package/dist/ui/base/tabbed-list-overlay-v2.d.ts +16 -1
  255. package/dist/ui/base/tabbed-list-overlay-v2.js +19 -1
  256. package/dist/ui/constants/labels.d.ts +14 -0
  257. package/dist/ui/constants/labels.js +52 -0
  258. package/dist/ui/conversation-store.d.ts +55 -0
  259. package/dist/ui/conversation-store.js +107 -0
  260. package/dist/ui/conversation.js +11 -13
  261. package/dist/ui/diff.d.ts +7 -1
  262. package/dist/ui/diff.js +85 -48
  263. package/dist/ui/ephemeral.js +3 -9
  264. package/dist/ui/file-autocomplete.d.ts +24 -0
  265. package/dist/ui/file-autocomplete.js +56 -0
  266. package/dist/ui/footer-renderer.d.ts +69 -0
  267. package/dist/ui/footer-renderer.js +431 -0
  268. package/dist/ui/footer.d.ts +74 -7
  269. package/dist/ui/footer.js +173 -16
  270. package/dist/ui/input-controller.d.ts +51 -0
  271. package/dist/ui/input-controller.js +176 -0
  272. package/dist/ui/input-prompt.d.ts +19 -0
  273. package/dist/ui/input-prompt.js +206 -14
  274. package/dist/ui/keyboard-handler.d.ts +57 -0
  275. package/dist/ui/keyboard-handler.js +557 -0
  276. package/dist/ui/live-region-facade.d.ts +42 -0
  277. package/dist/ui/live-region-facade.js +205 -0
  278. package/dist/ui/live-region.d.ts +0 -4
  279. package/dist/ui/live-region.js +6 -14
  280. package/dist/ui/mascot/renderer.d.ts +1 -1
  281. package/dist/ui/mascot/renderer.js +37 -2
  282. package/dist/ui/overlay/data/tutorial-content.d.ts +9 -0
  283. package/dist/ui/overlay/data/tutorial-content.js +9 -0
  284. package/dist/ui/overlay/data/tutorial-registry.d.ts +12 -0
  285. package/dist/ui/overlay/data/tutorial-registry.js +116 -0
  286. package/dist/ui/overlay/data/tutorial-types.d.ts +35 -0
  287. package/dist/ui/overlay/data/tutorial-types.js +6 -0
  288. package/dist/ui/overlay/data/tutorials/basics/first-conversation.d.ts +7 -0
  289. package/dist/ui/overlay/data/tutorials/basics/first-conversation.js +220 -0
  290. package/dist/ui/overlay/data/tutorials/basics/first-project.d.ts +7 -0
  291. package/dist/ui/overlay/data/tutorials/basics/first-project.js +284 -0
  292. package/dist/ui/overlay/data/tutorials/basics/navigation.d.ts +8 -0
  293. package/dist/ui/overlay/data/tutorials/basics/navigation.js +22 -0
  294. package/dist/ui/overlay/data/tutorials/basics/welcome.d.ts +7 -0
  295. package/dist/ui/overlay/data/tutorials/basics/welcome.js +174 -0
  296. package/dist/ui/overlay/data/tutorials/config/context-management.d.ts +7 -0
  297. package/dist/ui/overlay/data/tutorials/config/context-management.js +158 -0
  298. package/dist/ui/overlay/data/tutorials/config/mcp-servers.d.ts +8 -0
  299. package/dist/ui/overlay/data/tutorials/config/mcp-servers.js +155 -0
  300. package/dist/ui/overlay/data/tutorials/config/model-selection.d.ts +7 -0
  301. package/dist/ui/overlay/data/tutorials/config/model-selection.js +162 -0
  302. package/dist/ui/overlay/data/tutorials/config/permissions-safety.d.ts +7 -0
  303. package/dist/ui/overlay/data/tutorials/config/permissions-safety.js +163 -0
  304. package/dist/ui/overlay/data/tutorials/config/settings-config.d.ts +7 -0
  305. package/dist/ui/overlay/data/tutorials/config/settings-config.js +166 -0
  306. package/dist/ui/overlay/data/tutorials/planning/arch.d.ts +7 -0
  307. package/dist/ui/overlay/data/tutorials/planning/arch.js +168 -0
  308. package/dist/ui/overlay/data/tutorials/planning/backlog.d.ts +7 -0
  309. package/dist/ui/overlay/data/tutorials/planning/backlog.js +103 -0
  310. package/dist/ui/overlay/data/tutorials/planning/build.d.ts +7 -0
  311. package/dist/ui/overlay/data/tutorials/planning/build.js +173 -0
  312. package/dist/ui/overlay/data/tutorials/planning/design.d.ts +7 -0
  313. package/dist/ui/overlay/data/tutorials/planning/design.js +205 -0
  314. package/dist/ui/overlay/data/tutorials/planning/docs.d.ts +7 -0
  315. package/dist/ui/overlay/data/tutorials/planning/docs.js +143 -0
  316. package/dist/ui/overlay/data/tutorials/planning/prd.d.ts +7 -0
  317. package/dist/ui/overlay/data/tutorials/planning/prd.js +173 -0
  318. package/dist/ui/overlay/data/tutorials/planning/scaffold.d.ts +7 -0
  319. package/dist/ui/overlay/data/tutorials/planning/scaffold.js +164 -0
  320. package/dist/ui/overlay/data/tutorials/planning/sketch.d.ts +7 -0
  321. package/dist/ui/overlay/data/tutorials/planning/sketch.js +58 -0
  322. package/dist/ui/overlay/data/tutorials/projects/anchors.d.ts +7 -0
  323. package/dist/ui/overlay/data/tutorials/projects/anchors.js +248 -0
  324. package/dist/ui/overlay/data/tutorials/projects/import-project.d.ts +7 -0
  325. package/dist/ui/overlay/data/tutorials/projects/import-project.js +172 -0
  326. package/dist/ui/overlay/data/tutorials/projects/managing-projects.d.ts +8 -0
  327. package/dist/ui/overlay/data/tutorials/projects/managing-projects.js +212 -0
  328. package/dist/ui/overlay/data/tutorials/projects/new-project.d.ts +7 -0
  329. package/dist/ui/overlay/data/tutorials/projects/new-project.js +251 -0
  330. package/dist/ui/overlay/data/tutorials/projects/session-management.d.ts +7 -0
  331. package/dist/ui/overlay/data/tutorials/projects/session-management.js +169 -0
  332. package/dist/ui/overlay/data/tutorials/teams/background-execution.d.ts +7 -0
  333. package/dist/ui/overlay/data/tutorials/teams/background-execution.js +171 -0
  334. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.d.ts +8 -0
  335. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.js +147 -0
  336. package/dist/ui/overlay/data/tutorials/teams/task-assignment.d.ts +7 -0
  337. package/dist/ui/overlay/data/tutorials/teams/task-assignment.js +204 -0
  338. package/dist/ui/overlay/data/tutorials/teams/team-overview.d.ts +7 -0
  339. package/dist/ui/overlay/data/tutorials/teams/team-overview.js +165 -0
  340. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.d.ts +7 -0
  341. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.js +172 -0
  342. package/dist/ui/overlay/impl/agents-overlay-v2.js +6 -17
  343. package/dist/ui/overlay/impl/anchors-overlay-v2.js +30 -64
  344. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.d.ts +43 -0
  345. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.js +232 -0
  346. package/dist/ui/overlay/impl/artifact-overlay-v2.d.ts +40 -0
  347. package/dist/ui/overlay/impl/artifact-overlay-v2.js +115 -0
  348. package/dist/ui/overlay/impl/ask-user-overlay-v2.js +2 -5
  349. package/dist/ui/overlay/impl/background-overlay-v2.d.ts +40 -0
  350. package/dist/ui/overlay/impl/background-overlay-v2.js +147 -0
  351. package/dist/ui/overlay/impl/backlog-overlay-v2.d.ts +4 -1
  352. package/dist/ui/overlay/impl/backlog-overlay-v2.js +55 -16
  353. package/dist/ui/overlay/impl/changelog-overlay-v2.d.ts +44 -0
  354. package/dist/ui/overlay/impl/changelog-overlay-v2.js +165 -0
  355. package/dist/ui/overlay/impl/commands-overlay-v2.js +4 -6
  356. package/dist/ui/overlay/impl/config-overlay-v2.d.ts +12 -1
  357. package/dist/ui/overlay/impl/config-overlay-v2.js +164 -100
  358. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.d.ts +83 -0
  359. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.js +711 -0
  360. package/dist/ui/overlay/impl/dashboard-overlay-v2.d.ts +2 -0
  361. package/dist/ui/overlay/impl/dashboard-overlay-v2.js +26 -3
  362. package/dist/ui/overlay/impl/delegations-overlay-v2.d.ts +28 -0
  363. package/dist/ui/overlay/impl/delegations-overlay-v2.js +279 -0
  364. package/dist/ui/overlay/impl/docs-overlay-v2.js +12 -9
  365. package/dist/ui/overlay/impl/document-detail-overlay-v2.d.ts +7 -0
  366. package/dist/ui/overlay/impl/document-detail-overlay-v2.js +119 -78
  367. package/dist/ui/overlay/impl/filter-overlay-v2.d.ts +41 -0
  368. package/dist/ui/overlay/impl/filter-overlay-v2.js +110 -0
  369. package/dist/ui/overlay/impl/games-overlay-v2.d.ts +31 -0
  370. package/dist/ui/overlay/impl/games-overlay-v2.js +135 -0
  371. package/dist/ui/overlay/impl/help-overlay-v2.d.ts +26 -3
  372. package/dist/ui/overlay/impl/help-overlay-v2.js +20 -42
  373. package/dist/ui/overlay/impl/login-overlay-v2.d.ts +49 -0
  374. package/dist/ui/overlay/impl/login-overlay-v2.js +277 -0
  375. package/dist/ui/overlay/impl/mcp-overlay-v2.d.ts +63 -0
  376. package/dist/ui/overlay/impl/mcp-overlay-v2.js +907 -0
  377. package/dist/ui/overlay/impl/model-overlay-v2.d.ts +57 -13
  378. package/dist/ui/overlay/impl/model-overlay-v2.js +1086 -61
  379. package/dist/ui/overlay/impl/new-overlay-v2.d.ts +37 -6
  380. package/dist/ui/overlay/impl/new-overlay-v2.js +715 -65
  381. package/dist/ui/overlay/impl/notifications-overlay-v2.d.ts +20 -0
  382. package/dist/ui/overlay/impl/notifications-overlay-v2.js +116 -0
  383. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.d.ts +76 -0
  384. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.js +728 -0
  385. package/dist/ui/overlay/impl/pending-overlay-v2.d.ts +51 -0
  386. package/dist/ui/overlay/impl/pending-overlay-v2.js +445 -0
  387. package/dist/ui/overlay/impl/permission-overlay-v2.js +5 -5
  388. package/dist/ui/overlay/impl/permissions-overlay-v2.d.ts +85 -0
  389. package/dist/ui/overlay/impl/permissions-overlay-v2.js +820 -0
  390. package/dist/ui/overlay/impl/plan-approval-overlay-v2.d.ts +35 -0
  391. package/dist/ui/overlay/impl/plan-approval-overlay-v2.js +181 -0
  392. package/dist/ui/overlay/impl/project-edit-overlay-v2.d.ts +36 -0
  393. package/dist/ui/overlay/impl/project-edit-overlay-v2.js +195 -0
  394. package/dist/ui/overlay/impl/projects-overlay-v2.d.ts +1 -0
  395. package/dist/ui/overlay/impl/projects-overlay-v2.js +278 -44
  396. package/dist/ui/overlay/impl/reset-overlay-v2.d.ts +39 -0
  397. package/dist/ui/overlay/impl/reset-overlay-v2.js +107 -0
  398. package/dist/ui/overlay/impl/resume-overlay-v2.d.ts +60 -0
  399. package/dist/ui/overlay/impl/resume-overlay-v2.js +414 -0
  400. package/dist/ui/overlay/impl/session-mode-overlay-v2.d.ts +43 -0
  401. package/dist/ui/overlay/impl/session-mode-overlay-v2.js +124 -0
  402. package/dist/ui/overlay/impl/tasks-overlay-v2.d.ts +28 -0
  403. package/dist/ui/overlay/impl/tasks-overlay-v2.js +283 -0
  404. package/dist/ui/overlay/impl/team-overlay-v2.d.ts +86 -0
  405. package/dist/ui/overlay/impl/team-overlay-v2.js +692 -0
  406. package/dist/ui/overlay/impl/terminals-overlay-v2.d.ts +26 -0
  407. package/dist/ui/overlay/impl/terminals-overlay-v2.js +217 -0
  408. package/dist/ui/overlay/impl/tools-overlay-v2.js +3 -7
  409. package/dist/ui/overlay/impl/tutorial-overlay-v2.d.ts +30 -16
  410. package/dist/ui/overlay/impl/tutorial-overlay-v2.js +133 -956
  411. package/dist/ui/overlay/impl/workflow-overlay-v2.d.ts +1 -0
  412. package/dist/ui/overlay/impl/workflow-overlay-v2.js +10 -4
  413. package/dist/ui/overlay/index.d.ts +20 -1
  414. package/dist/ui/overlay/index.js +19 -0
  415. package/dist/ui/overlay/types.d.ts +5 -0
  416. package/dist/ui/overlay-manager.d.ts +43 -0
  417. package/dist/ui/overlay-manager.js +238 -0
  418. package/dist/ui/overlays.js +4 -16
  419. package/dist/ui/permission-overlay.js +6 -5
  420. package/dist/ui/status-bar-controller.d.ts +33 -0
  421. package/dist/ui/status-bar-controller.js +99 -0
  422. package/dist/ui/subagent-renderer.js +3 -19
  423. package/dist/ui/terminal-autocomplete-utils.d.ts +23 -0
  424. package/dist/ui/terminal-autocomplete-utils.js +83 -0
  425. package/dist/ui/terminal-line-builders.d.ts +17 -0
  426. package/dist/ui/terminal-line-builders.js +42 -0
  427. package/dist/ui/terminal-render-item.d.ts +16 -0
  428. package/dist/ui/terminal-render-item.js +267 -0
  429. package/dist/ui/terminal-renderer.d.ts +7 -8
  430. package/dist/ui/terminal-renderer.js +7 -8
  431. package/dist/ui/terminal-types.d.ts +179 -0
  432. package/dist/ui/terminal-types.js +34 -0
  433. package/dist/ui/terminal-ui.d.ts +144 -276
  434. package/dist/ui/terminal-ui.js +384 -1861
  435. package/dist/ui/todo-zone.d.ts +19 -1
  436. package/dist/ui/todo-zone.js +71 -13
  437. package/dist/ui/tool-formatters.js +696 -1
  438. package/dist/ui/turn-metrics.d.ts +56 -0
  439. package/dist/ui/turn-metrics.js +75 -0
  440. package/dist/ui/types.d.ts +28 -0
  441. package/dist/ui/types.js +1 -0
  442. package/dist/ui/vscode-diff-ipc.d.ts +102 -0
  443. package/dist/ui/vscode-diff-ipc.js +385 -0
  444. package/dist/utils/credentials.d.ts +24 -5
  445. package/dist/utils/credentials.js +123 -9
  446. package/dist/utils/format-tokens.d.ts +13 -0
  447. package/dist/utils/format-tokens.js +18 -0
  448. package/dist/utils/git-config.d.ts +26 -0
  449. package/dist/utils/git-config.js +54 -0
  450. package/dist/utils/message-utils.d.ts +61 -0
  451. package/dist/utils/message-utils.js +72 -0
  452. package/dist/utils/model-tiers.d.ts +8 -1
  453. package/dist/utils/model-tiers.js +38 -16
  454. package/dist/utils/open-browser.d.ts +5 -0
  455. package/dist/utils/open-browser.js +32 -0
  456. package/dist/utils/path-safety.js +3 -2
  457. package/dist/utils/project-detection.d.ts +58 -0
  458. package/dist/utils/project-detection.js +424 -0
  459. package/dist/utils/project-memory.js +2 -1
  460. package/dist/utils/project-status.d.ts +2 -2
  461. package/dist/utils/startup-perf.d.ts +18 -0
  462. package/dist/utils/startup-perf.js +60 -0
  463. package/dist/utils/token-tracker.d.ts +62 -0
  464. package/dist/utils/token-tracker.js +150 -0
  465. package/dist/utils/token-types.d.ts +23 -0
  466. package/dist/utils/token-types.js +18 -0
  467. package/dist/utils/types/config-types.d.ts +32 -0
  468. package/dist/utils/types/config-types.js +8 -0
  469. package/dist/utils/update-checker.d.ts +28 -0
  470. package/dist/utils/update-checker.js +106 -0
  471. package/dist/utils/version.d.ts +7 -0
  472. package/dist/utils/version.js +10 -0
  473. package/dist/utils/vscode-detect.d.ts +39 -0
  474. package/dist/utils/vscode-detect.js +137 -0
  475. package/package.json +27 -13
  476. package/dist/commands/handler-types.d.ts +0 -68
  477. package/dist/commands/handler-types.js +0 -8
  478. package/dist/commands/handlers/agent-commands.d.ts +0 -13
  479. package/dist/commands/handlers/agent-commands.js +0 -305
  480. package/dist/commands/handlers/design-commands.d.ts +0 -15
  481. package/dist/commands/handlers/design-commands.js +0 -334
  482. package/dist/commands/handlers/index.d.ts +0 -20
  483. package/dist/commands/handlers/index.js +0 -43
  484. package/dist/commands/handlers/overlay-commands.d.ts +0 -21
  485. package/dist/commands/handlers/overlay-commands.js +0 -287
  486. package/dist/commands/handlers/project-commands.d.ts +0 -11
  487. package/dist/commands/handlers/project-commands.js +0 -167
  488. package/dist/commands/handlers/simple-commands.d.ts +0 -19
  489. package/dist/commands/handlers/simple-commands.js +0 -144
  490. package/dist/commands/registry.d.ts +0 -50
  491. package/dist/commands/registry.js +0 -75
  492. package/dist/index.old.d.ts +0 -7
  493. package/dist/index.old.js +0 -1014
  494. package/dist/repl.d.ts +0 -149
  495. package/dist/repl.js +0 -1151
  496. package/dist/templates/claude-md.d.ts +0 -7
  497. package/dist/templates/claude-md.js +0 -189
  498. package/dist/test-autocomplete.d.ts +0 -7
  499. package/dist/test-autocomplete.js +0 -85
  500. package/dist/test-tabbed-menu.d.ts +0 -7
  501. package/dist/test-tabbed-menu.js +0 -25
  502. package/dist/tool-selector.d.ts +0 -71
  503. package/dist/tool-selector.js +0 -184
  504. package/dist/tools/anchor-tools.d.ts +0 -31
  505. package/dist/tools/anchor-tools.js +0 -255
  506. package/dist/tools/backlog-wrappers.d.ts +0 -54
  507. package/dist/tools/backlog-wrappers.js +0 -338
  508. package/dist/tools/document-db.d.ts +0 -43
  509. package/dist/tools/document-db.js +0 -220
  510. package/dist/tools/workitem-db.d.ts +0 -103
  511. package/dist/tools/workitem-db.js +0 -549
  512. package/dist/ui/agents-overlay-v2.d.ts +0 -43
  513. package/dist/ui/agents-overlay-v2.js +0 -809
  514. package/dist/ui/agents-overlay.d.ts +0 -12
  515. package/dist/ui/agents-overlay.js +0 -863
  516. package/dist/ui/anchors-overlay.d.ts +0 -12
  517. package/dist/ui/anchors-overlay.js +0 -775
  518. package/dist/ui/arch-type-overlay.d.ts +0 -15
  519. package/dist/ui/arch-type-overlay.js +0 -201
  520. package/dist/ui/ask-user-overlay-v2.d.ts +0 -26
  521. package/dist/ui/ask-user-overlay-v2.js +0 -555
  522. package/dist/ui/ask-user-simple-overlay-v2.d.ts +0 -25
  523. package/dist/ui/ask-user-simple-overlay-v2.js +0 -215
  524. package/dist/ui/backlog-overlay.d.ts +0 -32
  525. package/dist/ui/backlog-overlay.js +0 -652
  526. package/dist/ui/commands-overlay-v2.d.ts +0 -33
  527. package/dist/ui/commands-overlay-v2.js +0 -441
  528. package/dist/ui/commands-overlay.d.ts +0 -16
  529. package/dist/ui/commands-overlay.js +0 -439
  530. package/dist/ui/config-overlay.d.ts +0 -35
  531. package/dist/ui/config-overlay.js +0 -707
  532. package/dist/ui/docs-overlay.d.ts +0 -17
  533. package/dist/ui/docs-overlay.js +0 -303
  534. package/dist/ui/footer-v2.d.ts +0 -222
  535. package/dist/ui/footer-v2.js +0 -1349
  536. package/dist/ui/help-overlay-v2.d.ts +0 -34
  537. package/dist/ui/help-overlay-v2.js +0 -309
  538. package/dist/ui/help-overlay.d.ts +0 -16
  539. package/dist/ui/help-overlay.js +0 -316
  540. package/dist/ui/init-overlay-v2.d.ts +0 -34
  541. package/dist/ui/init-overlay-v2.js +0 -600
  542. package/dist/ui/init-overlay.d.ts +0 -34
  543. package/dist/ui/init-overlay.js +0 -604
  544. package/dist/ui/input-prompt-v2.d.ts +0 -180
  545. package/dist/ui/input-prompt-v2.js +0 -999
  546. package/dist/ui/iteration-limit-overlay-v2.d.ts +0 -21
  547. package/dist/ui/iteration-limit-overlay-v2.js +0 -114
  548. package/dist/ui/keys-overlay-v2.d.ts +0 -41
  549. package/dist/ui/keys-overlay-v2.js +0 -248
  550. package/dist/ui/mascot-overlay-v2.d.ts +0 -41
  551. package/dist/ui/mascot-overlay-v2.js +0 -138
  552. package/dist/ui/mascot-overlay.d.ts +0 -21
  553. package/dist/ui/mascot-overlay.js +0 -146
  554. package/dist/ui/model-overlay-v2.d.ts +0 -49
  555. package/dist/ui/model-overlay-v2.js +0 -118
  556. package/dist/ui/model-overlay.d.ts +0 -27
  557. package/dist/ui/model-overlay.js +0 -221
  558. package/dist/ui/model-warning-overlay.d.ts +0 -30
  559. package/dist/ui/model-warning-overlay.js +0 -169
  560. package/dist/ui/new-overlay.d.ts +0 -34
  561. package/dist/ui/new-overlay.js +0 -604
  562. package/dist/ui/overlay/impl/init-overlay-v2.d.ts +0 -77
  563. package/dist/ui/overlay/impl/init-overlay-v2.js +0 -593
  564. package/dist/ui/overlay/overlay-types.d.ts +0 -128
  565. package/dist/ui/overlay/overlay-types.js +0 -22
  566. package/dist/ui/overlays/help-overlay-v2.d.ts +0 -28
  567. package/dist/ui/overlays/help-overlay-v2.js +0 -198
  568. package/dist/ui/overlays/index.d.ts +0 -11
  569. package/dist/ui/overlays/index.js +0 -11
  570. package/dist/ui/permission-overlay-v2.d.ts +0 -36
  571. package/dist/ui/permission-overlay-v2.js +0 -380
  572. package/dist/ui/projects-overlay.d.ts +0 -19
  573. package/dist/ui/projects-overlay.js +0 -484
  574. package/dist/ui/theme-overlay-v2.d.ts +0 -42
  575. package/dist/ui/theme-overlay-v2.js +0 -135
  576. package/dist/ui/theme-overlay.d.ts +0 -24
  577. package/dist/ui/theme-overlay.js +0 -127
  578. package/dist/ui/tools-overlay-v2.d.ts +0 -47
  579. package/dist/ui/tools-overlay-v2.js +0 -218
  580. package/dist/ui/tools-overlay.d.ts +0 -34
  581. package/dist/ui/tools-overlay.js +0 -230
  582. package/dist/ui/tutorial-overlay-v2.d.ts +0 -31
  583. package/dist/ui/tutorial-overlay-v2.js +0 -1035
  584. package/dist/ui/tutorial-overlay.d.ts +0 -11
  585. package/dist/ui/tutorial-overlay.js +0 -1034
  586. package/dist/ui/workflow-overlay.d.ts +0 -22
  587. package/dist/ui/workflow-overlay.js +0 -636
@@ -20,6 +20,7 @@
20
20
  */
21
21
  import { getStyles } from '../themes/index.js';
22
22
  import { debugRender } from '../utils/debug-log.js';
23
+ import { formatTokens, truncate } from './base/index.js';
23
24
  // =============================================================================
24
25
  // Formatting Helpers
25
26
  // =============================================================================
@@ -35,29 +36,12 @@ function formatDuration(ms) {
35
36
  const remainingSeconds = Math.floor(seconds % 60);
36
37
  return `${String(minutes)}m ${String(remainingSeconds)}s`;
37
38
  }
38
- /**
39
- * Format token count (e.g., "18.1k", "500")
40
- */
41
- function formatTokens(tokens) {
42
- if (tokens >= 1000) {
43
- return `${(tokens / 1000).toFixed(1)}k`;
44
- }
45
- return tokens.toString();
46
- }
47
39
  /**
48
40
  * Capitalize first letter
49
41
  */
50
42
  function capitalize(str) {
51
43
  return str.charAt(0).toUpperCase() + str.slice(1);
52
44
  }
53
- /**
54
- * Truncate string to max length with ellipsis
55
- */
56
- function truncate(str, maxLen) {
57
- if (str.length <= maxLen)
58
- return str;
59
- return str.slice(0, maxLen - 1) + '…';
60
- }
61
45
  // =============================================================================
62
46
  // Tree Characters (Unicode box drawing)
63
47
  // =============================================================================
@@ -264,7 +248,7 @@ export class SubagentRenderer {
264
248
  if (agent.toolCount > 1) {
265
249
  lines.push(s.muted(` +${String(agent.toolCount - 1)} more tool uses (ctrl+o to expand)`));
266
250
  }
267
- lines.push(s.muted(' ctrl+b to run in background'));
251
+ // ctrl+b background: coming soon
268
252
  }
269
253
  return lines;
270
254
  }
@@ -317,7 +301,7 @@ export class SubagentRenderer {
317
301
  }
318
302
  // Footer hint for running agents
319
303
  if (counts.running > 0) {
320
- lines.push(s.muted(' ctrl+b to run in background'));
304
+ // ctrl+b background: coming soon
321
305
  }
322
306
  return lines;
323
307
  }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Standalone utility functions for input text formatting and autocomplete.
3
+ *
4
+ * Extracted from terminal-ui.ts for modularity.
5
+ * These are pure functions with no class dependencies.
6
+ */
7
+ import type { CommandOption } from './types.js';
8
+ /**
9
+ * Format input text with syntax highlighting for special prefixes.
10
+ * - $agent references: bold + secondary color
11
+ * - @path references: secondary color
12
+ * - /commands: primary color
13
+ */
14
+ export declare function formatInputText(text: string): string;
15
+ /**
16
+ * Calculate fuzzy match score for a query against a target string.
17
+ * Higher score = better match. Returns -1 if no match.
18
+ */
19
+ export declare function fuzzyMatchScore(query: string, target: string): number;
20
+ /**
21
+ * Filter and rank commands matching input using fuzzy matching
22
+ */
23
+ export declare function filterCommands(input: string, commands: CommandOption[]): CommandOption[];
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Standalone utility functions for input text formatting and autocomplete.
3
+ *
4
+ * Extracted from terminal-ui.ts for modularity.
5
+ * These are pure functions with no class dependencies.
6
+ */
7
+ import { Chalk } from 'chalk';
8
+ import { getStyles } from '../themes/index.js';
9
+ // Force color output (level 3 = 24-bit true color)
10
+ const chalk = new Chalk({ level: 3 });
11
+ // =============================================================================
12
+ // Input Text Formatting
13
+ // =============================================================================
14
+ /**
15
+ * Format input text with syntax highlighting for special prefixes.
16
+ * - $agent references: bold + secondary color
17
+ * - @path references: secondary color
18
+ * - /commands: primary color
19
+ */
20
+ export function formatInputText(text) {
21
+ const s = getStyles();
22
+ let result = text;
23
+ // Format $agent references - bold + secondary
24
+ // Match $word at word boundaries (not inside other text)
25
+ result = result.replace(/(?<![$\w])\$([a-zA-Z_][a-zA-Z0-9_]*)\b/g, (_match, agentId) => chalk.bold(s.secondary(`$${agentId}`)));
26
+ // Format @path references - secondary (not bold, paths can be long)
27
+ // Match @word or @path/to/file patterns
28
+ result = result.replace(/(?<![@\w])@([\w./-]+)/g, (_match, path) => s.secondary(`@${path}`));
29
+ // Format /commands at start of input - primary color
30
+ // Only match at start of line (after optional whitespace)
31
+ result = result.replace(/^(\s*)(\/[a-zA-Z][a-zA-Z0-9_-]*)/g, (_match, space, cmd) => space + s.primary(cmd));
32
+ return result;
33
+ }
34
+ // =============================================================================
35
+ // Fuzzy Matching
36
+ // =============================================================================
37
+ /**
38
+ * Calculate fuzzy match score for a query against a target string.
39
+ * Higher score = better match. Returns -1 if no match.
40
+ */
41
+ export function fuzzyMatchScore(query, target) {
42
+ const queryLower = query.toLowerCase();
43
+ const targetLower = target.toLowerCase();
44
+ // Exact prefix match - highest priority (score 1000+)
45
+ if (targetLower.startsWith(queryLower)) {
46
+ return 1000 + (100 - target.length); // Shorter commands rank higher
47
+ }
48
+ // Contiguous substring match - high priority (score 500+)
49
+ if (targetLower.includes(queryLower)) {
50
+ const index = targetLower.indexOf(queryLower);
51
+ return 500 + (100 - index); // Earlier matches rank higher
52
+ }
53
+ // Fuzzy match - characters appear in order (score 100+)
54
+ let queryIdx = 0;
55
+ let consecutiveBonus = 0;
56
+ let lastMatchIdx = -1;
57
+ for (let i = 0; i < targetLower.length && queryIdx < queryLower.length; i++) {
58
+ if (targetLower[i] === queryLower[queryIdx]) {
59
+ if (lastMatchIdx === i - 1) {
60
+ consecutiveBonus += 10;
61
+ }
62
+ lastMatchIdx = i;
63
+ queryIdx++;
64
+ }
65
+ }
66
+ if (queryIdx === queryLower.length) {
67
+ return 100 + consecutiveBonus + (100 - target.length);
68
+ }
69
+ return -1;
70
+ }
71
+ /**
72
+ * Filter and rank commands matching input using fuzzy matching
73
+ */
74
+ export function filterCommands(input, commands) {
75
+ const scored = commands
76
+ .map((cmd) => ({
77
+ cmd,
78
+ score: fuzzyMatchScore(input, cmd.command),
79
+ }))
80
+ .filter((item) => item.score >= 0);
81
+ scored.sort((a, b) => b.score - a.score);
82
+ return scored.map((item) => item.cmd);
83
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Pure line-building utility functions for TerminalUI.
3
+ *
4
+ * Extracted from terminal-ui.ts for modularity.
5
+ * These are pure functions with no class dependencies.
6
+ */
7
+ import type { TodoItem } from './types.js';
8
+ /**
9
+ * Format a duration in milliseconds to a human-readable string.
10
+ * e.g. 5000 → "5s", 90000 → "1m 30s"
11
+ */
12
+ export declare function formatDuration(ms: number): string;
13
+ /**
14
+ * Build a single todo line with task number prefix, icon, content,
15
+ * optional owner badge, and blocked-by suffix.
16
+ */
17
+ export declare function buildTodoLine(todo: TodoItem, taskNumber?: number): string;
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Pure line-building utility functions for TerminalUI.
3
+ *
4
+ * Extracted from terminal-ui.ts for modularity.
5
+ * These are pure functions with no class dependencies.
6
+ */
7
+ import { getStyles } from '../themes/index.js';
8
+ /**
9
+ * Format a duration in milliseconds to a human-readable string.
10
+ * e.g. 5000 → "5s", 90000 → "1m 30s"
11
+ */
12
+ export function formatDuration(ms) {
13
+ const seconds = Math.floor(ms / 1000);
14
+ if (seconds < 60) {
15
+ return `${String(seconds)}s`;
16
+ }
17
+ const minutes = Math.floor(seconds / 60);
18
+ const remainingSeconds = seconds % 60;
19
+ return `${String(minutes)}m ${String(remainingSeconds)}s`;
20
+ }
21
+ /**
22
+ * Build a single todo line with task number prefix, icon, content,
23
+ * optional owner badge, and blocked-by suffix.
24
+ */
25
+ export function buildTodoLine(todo, taskNumber) {
26
+ const s = getStyles();
27
+ const icon = todo.status === 'completed' ? '✓' :
28
+ todo.status === 'in_progress' ? '→' : '☐';
29
+ const style = todo.status === 'completed' ? s.muted :
30
+ todo.status === 'in_progress' ? s.info : s.muted;
31
+ // Task number prefix (e.g., "#1 ")
32
+ const prefix = taskNumber != null ? `#${String(taskNumber)} ` : '';
33
+ // Owner badge (skip for completed items)
34
+ const ownerBadge = todo.owner && todo.status !== 'completed'
35
+ ? s.muted(` @${todo.owner}`)
36
+ : '';
37
+ // Blocked-by suffix (skip for completed items)
38
+ const blockedSuffix = todo.blockedBy && todo.blockedBy.length > 0 && todo.status !== 'completed'
39
+ ? s.muted(` › blocked by ${todo.blockedBy.map((n) => `#${String(n)}`).join(', ')}`)
40
+ : '';
41
+ return style(`${prefix}${icon} ${todo.content}`) + ownerBadge + blockedSuffix;
42
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Render a single PrintableItem to the console.
3
+ *
4
+ * Extracted from terminal-ui.ts for modularity.
5
+ * This is a nearly-pure function — the only side effect is console.log output.
6
+ * The 'interrupted' case returns a suggestion string instead of calling setSuggestion().
7
+ */
8
+ import type { PrintableItem, TerminalUIConfig } from './terminal-types.js';
9
+ /**
10
+ * Render a single item to the console.
11
+ * Config-aware: respects verbose, showMascot settings.
12
+ *
13
+ * @returns suggestion string for 'interrupted' items, null otherwise.
14
+ * Caller should pass the suggestion to setSuggestion() if non-null.
15
+ */
16
+ export declare function renderItem(item: PrintableItem, config: TerminalUIConfig): string | null;
@@ -0,0 +1,267 @@
1
+ /**
2
+ * Render a single PrintableItem to the console.
3
+ *
4
+ * Extracted from terminal-ui.ts for modularity.
5
+ * This is a nearly-pure function — the only side effect is console.log output.
6
+ * The 'interrupted' case returns a suggestion string instead of calling setSuggestion().
7
+ */
8
+ import * as terminal from './terminal.js';
9
+ import { getStyles } from '../themes/index.js';
10
+ import { renderMarkdown } from './conversation.js';
11
+ import { MASCOT } from './terminal-types.js';
12
+ /**
13
+ * Render a single item to the console.
14
+ * Config-aware: respects verbose, showMascot settings.
15
+ *
16
+ * @returns suggestion string for 'interrupted' items, null otherwise.
17
+ * Caller should pass the suggestion to setSuggestion() if non-null.
18
+ */
19
+ export function renderItem(item, config) {
20
+ const s = getStyles();
21
+ switch (item.type) {
22
+ case 'user-message':
23
+ console.log('');
24
+ console.log(s.primaryBold('> ') + item.text);
25
+ console.log(''); // Trailing blank for separation
26
+ break;
27
+ case 'agent-text': {
28
+ // Render markdown for proper formatting (headers, lists, bold, code, etc.)
29
+ const rendered = renderMarkdown(item.text);
30
+ // Prefix agent messages with mascot expression (if enabled)
31
+ if (config.showMascot) {
32
+ // Expression can be a key ('success', 'neutral') or a direct mascot string ('[◈_◈]')
33
+ let expr;
34
+ if (!item.expression) {
35
+ expr = MASCOT.neutral;
36
+ }
37
+ else if (item.expression.startsWith('[')) {
38
+ // Direct mascot string from team agent
39
+ expr = item.expression;
40
+ }
41
+ else if (item.expression in MASCOT) {
42
+ // Key lookup in MASCOT object
43
+ expr = MASCOT[item.expression];
44
+ }
45
+ else {
46
+ // Unknown expression key, use neutral
47
+ expr = MASCOT.neutral;
48
+ }
49
+ // Only prefix the first line with mascot
50
+ const lines = rendered.split('\n');
51
+ if (lines.length > 0) {
52
+ console.log(s.primary(expr) + s.muted(' > ') + lines[0]);
53
+ for (let i = 1; i < lines.length; i++) {
54
+ console.log(lines[i]);
55
+ }
56
+ }
57
+ }
58
+ else {
59
+ console.log(rendered);
60
+ }
61
+ console.log(''); // Trailing blank for separation
62
+ break;
63
+ }
64
+ case 'thinking':
65
+ // Only show thinking in verbose mode
66
+ if (config.verbose) {
67
+ console.log(s.muted(`∴ Thinking…`));
68
+ console.log('');
69
+ // Indent thinking text
70
+ const lines = item.text.split('\n');
71
+ for (const line of lines) {
72
+ console.log(s.muted(` ${line}`));
73
+ }
74
+ console.log('');
75
+ }
76
+ // If not verbose, skip entirely (but still stored in history)
77
+ break;
78
+ case 'tool-start': {
79
+ // Truncate long params (e.g., long bash commands)
80
+ const maxLen = Math.min(60, terminal.getTerminalWidth() - 15);
81
+ let params = item.params;
82
+ // Handle multi-line params
83
+ const nlIdx = params.indexOf('\n');
84
+ if (nlIdx !== -1) {
85
+ const first = params.slice(0, nlIdx).trim();
86
+ const count = params.split('\n').length;
87
+ params = first.length > 0 ? `${first}… (${String(count)} lines)` : `(${String(count)} line script)`;
88
+ }
89
+ // Truncate if still too long
90
+ if (params.length > maxLen) {
91
+ params = params.slice(0, maxLen) + '…';
92
+ }
93
+ console.log(s.info(`● ${item.name}`) + s.muted(`(${params})`));
94
+ break;
95
+ }
96
+ case 'tool-result': {
97
+ // Truncate long params (e.g., long bash commands)
98
+ const maxParamsLen = Math.min(60, terminal.getTerminalWidth() - 15);
99
+ let paramsDisplay = item.params;
100
+ // Handle multi-line params (show first line + count)
101
+ const newlineIdx = paramsDisplay.indexOf('\n');
102
+ if (newlineIdx !== -1) {
103
+ const firstLine = paramsDisplay.slice(0, newlineIdx).trim();
104
+ const lineCount = paramsDisplay.split('\n').length;
105
+ paramsDisplay = firstLine.length > 0
106
+ ? `${firstLine}… (${String(lineCount)} lines)`
107
+ : `(${String(lineCount)} line script)`;
108
+ }
109
+ // Truncate if still too long
110
+ if (paramsDisplay.length > maxParamsLen) {
111
+ paramsDisplay = paramsDisplay.slice(0, maxParamsLen) + '…';
112
+ }
113
+ console.log(s.info(`● ${item.name}`) + s.muted(`(${paramsDisplay})`));
114
+ // Diff lines: render directly (already ANSI-formatted by diff.ts)
115
+ if (item.diffLines && item.diffLines.length > 0) {
116
+ const maxDiffPreview = 10;
117
+ if (config.verbose || item.diffLines.length <= maxDiffPreview) {
118
+ for (const line of item.diffLines) {
119
+ console.log(` ${line}`);
120
+ }
121
+ }
122
+ else {
123
+ for (let i = 0; i < maxDiffPreview; i++) {
124
+ console.log(` ${item.diffLines[i]}`);
125
+ }
126
+ const hidden = item.diffLines.length - maxDiffPreview;
127
+ console.log(s.muted(` … +${String(hidden)} lines (ctrl+o to expand)`));
128
+ }
129
+ }
130
+ else if (item.content) {
131
+ const contentLines = item.content.split('\n').filter((l) => l.length > 0);
132
+ const maxPreviewLines = 3;
133
+ if (config.verbose) {
134
+ // Verbose: show all lines
135
+ for (const line of contentLines) {
136
+ console.log(s.muted(` ⎿ ${line}`));
137
+ }
138
+ }
139
+ else if (contentLines.length > 0) {
140
+ // Compact: show first few lines + hidden count
141
+ const previewLines = contentLines.slice(0, maxPreviewLines);
142
+ const hiddenCount = contentLines.length - maxPreviewLines;
143
+ for (let i = 0; i < previewLines.length; i++) {
144
+ if (i === 0) {
145
+ console.log(s.muted(` ⎿ ${previewLines[i]}`));
146
+ }
147
+ else {
148
+ console.log(s.muted(` ${previewLines[i]}`));
149
+ }
150
+ }
151
+ if (hiddenCount > 0) {
152
+ console.log(s.muted(` … +${String(hiddenCount)} lines`) + s.muted(' (ctrl+o to expand)'));
153
+ }
154
+ }
155
+ else {
156
+ // No output lines
157
+ const expandHint = s.muted(' (ctrl+o to expand)');
158
+ if (item.success === false) {
159
+ console.log(s.error(` ⎿ ${item.summary}`) + expandHint);
160
+ }
161
+ else {
162
+ console.log(s.muted(` ⎿ ${item.summary}`) + expandHint);
163
+ }
164
+ }
165
+ }
166
+ else {
167
+ // No content, just show summary
168
+ if (item.success === false) {
169
+ console.log(s.error(` ⎿ ${item.summary}`));
170
+ }
171
+ else {
172
+ console.log(s.muted(` ⎿ ${item.summary}`));
173
+ }
174
+ }
175
+ console.log('');
176
+ break;
177
+ }
178
+ case 'tool-error': {
179
+ // Truncate long params
180
+ const maxErrLen = Math.min(60, terminal.getTerminalWidth() - 15);
181
+ let errParams = item.params;
182
+ const errNlIdx = errParams.indexOf('\n');
183
+ if (errNlIdx !== -1) {
184
+ const errFirst = errParams.slice(0, errNlIdx).trim();
185
+ const errCount = errParams.split('\n').length;
186
+ errParams = errFirst.length > 0 ? `${errFirst}… (${String(errCount)} lines)` : `(${String(errCount)} line script)`;
187
+ }
188
+ if (errParams.length > maxErrLen) {
189
+ errParams = errParams.slice(0, maxErrLen) + '…';
190
+ }
191
+ console.log(s.info(`● ${item.name}`) + s.muted(`(${errParams})`));
192
+ console.log(s.error(` ⎿ Error: ${item.error}`));
193
+ console.log('');
194
+ break;
195
+ }
196
+ case 'interrupted': {
197
+ // Show what was ongoing (if provided)
198
+ if (item.action) {
199
+ console.log(s.info(`● ${item.action}`));
200
+ }
201
+ else {
202
+ // No action means interrupted right after user message.
203
+ // Move cursor up to consume the trailing blank from user-message.
204
+ //
205
+ // ⚠️ WARNING: This cursor manipulation is fragile!
206
+ // It assumes the previous item was user-message which adds a trailing blank.
207
+ // If we add items that don't add trailing blanks, or if the rendering
208
+ // order changes, this could cause visual artifacts (overwriting content).
209
+ // If issues arise, consider tracking the last printed item type instead.
210
+ process.stdout.write('\x1b[1A'); // Move up one line
211
+ }
212
+ // Show interrupted line with mascot
213
+ const suggestion = item.suggestion ?? 'What should I do instead?';
214
+ console.log(s.warning(` ⎿ ${MASCOT.confused} Interrupted - ${suggestion}`));
215
+ console.log('');
216
+ // Return suggestion so caller can set it as ghost text
217
+ return suggestion;
218
+ }
219
+ case 'error':
220
+ console.log(s.error(`${MASCOT.error} ${item.message}`));
221
+ console.log('');
222
+ break;
223
+ case 'success':
224
+ console.log(s.success(`${MASCOT.success} ${item.message}`));
225
+ console.log('');
226
+ break;
227
+ case 'info':
228
+ console.log(s.info(item.message));
229
+ console.log('');
230
+ break;
231
+ case 'warning':
232
+ console.log(s.warning(item.message));
233
+ console.log('');
234
+ break;
235
+ case 'turn-summary': {
236
+ // Compact summary line: ── 45s · ↓ 2.3k ↑ 1.1k · 5 tools ──
237
+ const line = s.muted(`── ${item.parts.join(' · ')} ──`);
238
+ console.log(line);
239
+ console.log('');
240
+ break;
241
+ }
242
+ case 'raw':
243
+ console.log(item.text);
244
+ break;
245
+ case 'raw-lines':
246
+ for (const line of item.lines) {
247
+ console.log(line);
248
+ }
249
+ break;
250
+ case 'background-agent': {
251
+ // Background agent output with mascot label
252
+ // Format: [◈_◈] $arch: text - mascot followed by agent reference
253
+ const bgLabel = s.muted(`${item.mascot} $${item.agentId}:`);
254
+ // Render markdown for proper formatting
255
+ const bgRendered = renderMarkdown(item.text);
256
+ const bgLines = bgRendered.split('\n');
257
+ if (bgLines.length > 0) {
258
+ console.log(`${bgLabel} ${bgLines[0]}`);
259
+ for (let i = 1; i < bgLines.length; i++) {
260
+ console.log(bgLines[i]);
261
+ }
262
+ }
263
+ break;
264
+ }
265
+ }
266
+ return null;
267
+ }
@@ -1,16 +1,15 @@
1
1
  /**
2
+ * @deprecated DEAD CODE — This class is never instantiated. Do NOT modify this file.
3
+ *
4
+ * The active render pipeline is in TerminalUI (src/ui/terminal-ui.ts).
5
+ * TerminalUI handles all rendering, keyboard input, overlays, and footer display.
6
+ * All UI changes should go there.
7
+ *
8
+ * --- Original description ---
2
9
  * Terminal Renderer
3
10
  *
4
11
  * Single point of terminal output. All rendering goes through this class.
5
12
  * Eliminates race conditions by ensuring only one writer.
6
- *
7
- * Key responsibilities:
8
- * - Manage render modes (MENU, REPL, OVERLAY)
9
- * - Set up and manage scroll regions (REPL mode)
10
- * - Collect content from providers
11
- * - Write to terminal (single writer)
12
- * - Handle resize events
13
- * - Route keyboard input
14
13
  */
15
14
  import { EventEmitter } from 'events';
16
15
  import { RenderMode, type ModeTransition } from './render-modes.js';
@@ -1,16 +1,15 @@
1
1
  /**
2
+ * @deprecated DEAD CODE — This class is never instantiated. Do NOT modify this file.
3
+ *
4
+ * The active render pipeline is in TerminalUI (src/ui/terminal-ui.ts).
5
+ * TerminalUI handles all rendering, keyboard input, overlays, and footer display.
6
+ * All UI changes should go there.
7
+ *
8
+ * --- Original description ---
2
9
  * Terminal Renderer
3
10
  *
4
11
  * Single point of terminal output. All rendering goes through this class.
5
12
  * Eliminates race conditions by ensuring only one writer.
6
- *
7
- * Key responsibilities:
8
- * - Manage render modes (MENU, REPL, OVERLAY)
9
- * - Set up and manage scroll regions (REPL mode)
10
- * - Collect content from providers
11
- * - Write to terminal (single writer)
12
- * - Handle resize events
13
- * - Route keyboard input
14
13
  */
15
14
  import { EventEmitter } from 'events';
16
15
  import { RenderMode, isValidTransition } from './render-modes.js';