@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,117 @@
1
+ /**
2
+ * Subagent Renderer
3
+ *
4
+ * Renders subagent status in Claude Code style:
5
+ * - Single agent: bullet with status and last action
6
+ * - Multiple agents: tree structure with all agents listed
7
+ * - Live updates as tools execute
8
+ *
9
+ * Visual style:
10
+ * ● Explore(Find CLI entry points)
11
+ * ⎿ Read 67 lines
12
+ * Found 100 files
13
+ * +3 more tool uses (ctrl+o to expand)
14
+ *
15
+ * ● Running 3 Explore agents... (ctrl+o to expand)
16
+ * ├─ Find state management · 3 tool uses · 20.7k tokens
17
+ * │ ⎿ Bash: List TypeScript files
18
+ * └─ Find utility functions · 5 tool uses · 18.9k tokens
19
+ * ⎿ Read: src/utils/project-memory.ts
20
+ */
21
+ export interface SubagentState {
22
+ id: string;
23
+ type: string;
24
+ description: string;
25
+ status: 'running' | 'done' | 'error';
26
+ toolCount: number;
27
+ tokenCount: number;
28
+ lastAction: string;
29
+ lastActionDetails: string[];
30
+ startTime: number;
31
+ endTime?: number;
32
+ error?: string;
33
+ }
34
+ export interface SubagentRendererOptions {
35
+ /** Max detail lines to show per agent in compact mode (default: 1) */
36
+ maxDetailLines?: number;
37
+ /** Show token counts (default: true) */
38
+ showTokens?: boolean;
39
+ }
40
+ export declare class SubagentRenderer {
41
+ private readonly agents;
42
+ private isExpanded;
43
+ private readonly maxDetailLines;
44
+ private readonly showTokens;
45
+ private onUpdate;
46
+ constructor(options?: SubagentRendererOptions);
47
+ /**
48
+ * Called when a subagent starts
49
+ */
50
+ onSubagentStart(id: string, type: string, description: string): void;
51
+ /**
52
+ * Called when a subagent uses a tool
53
+ */
54
+ onToolUse(agentId: string, toolName: string, summary?: string): void;
55
+ /**
56
+ * Called when a subagent completes
57
+ */
58
+ onSubagentEnd(id: string, success: boolean, tokenCount: number, error?: string): void;
59
+ /**
60
+ * Toggle expanded/collapsed view (Ctrl+O)
61
+ */
62
+ toggleExpand(): void;
63
+ /**
64
+ * Check if there are any active subagents
65
+ */
66
+ hasActiveSubagents(): boolean;
67
+ /**
68
+ * Check if there are any subagents to display
69
+ */
70
+ hasSubagents(): boolean;
71
+ /**
72
+ * Get count of agents by status
73
+ */
74
+ getCounts(): {
75
+ running: number;
76
+ done: number;
77
+ error: number;
78
+ total: number;
79
+ };
80
+ /**
81
+ * Get the last agent's stats (for persisting to scrolling zone)
82
+ * Returns null if no agents tracked
83
+ */
84
+ getLastAgentStats(): {
85
+ type: string;
86
+ description: string;
87
+ toolCount: number;
88
+ tokenCount: number;
89
+ durationMs: number;
90
+ } | null;
91
+ /**
92
+ * Clear all agents (after rendering final output to scrolling zone)
93
+ */
94
+ clear(): void;
95
+ /**
96
+ * Set callback for state updates
97
+ */
98
+ setUpdateCallback(callback: (() => void) | null): void;
99
+ /**
100
+ * Render the subagent zone - returns array of lines
101
+ * Only renders running agents - completed agents are shown via printSubagentResponse
102
+ */
103
+ render(): string[];
104
+ private triggerUpdate;
105
+ /**
106
+ * Render single agent display
107
+ */
108
+ private renderSingleAgent;
109
+ /**
110
+ * Render multiple agents in tree display
111
+ */
112
+ private renderMultipleAgents;
113
+ /**
114
+ * Get common type label if all agents are same type, otherwise "mixed"
115
+ */
116
+ private getCommonTypeLabel;
117
+ }
@@ -0,0 +1,318 @@
1
+ /**
2
+ * Subagent Renderer
3
+ *
4
+ * Renders subagent status in Claude Code style:
5
+ * - Single agent: bullet with status and last action
6
+ * - Multiple agents: tree structure with all agents listed
7
+ * - Live updates as tools execute
8
+ *
9
+ * Visual style:
10
+ * ● Explore(Find CLI entry points)
11
+ * ⎿ Read 67 lines
12
+ * Found 100 files
13
+ * +3 more tool uses (ctrl+o to expand)
14
+ *
15
+ * ● Running 3 Explore agents... (ctrl+o to expand)
16
+ * ├─ Find state management · 3 tool uses · 20.7k tokens
17
+ * │ ⎿ Bash: List TypeScript files
18
+ * └─ Find utility functions · 5 tool uses · 18.9k tokens
19
+ * ⎿ Read: src/utils/project-memory.ts
20
+ */
21
+ import { getStyles } from '../themes/index.js';
22
+ import { debugRender } from '../utils/debug-log.js';
23
+ import { formatTokens, truncate } from './base/index.js';
24
+ // =============================================================================
25
+ // Formatting Helpers
26
+ // =============================================================================
27
+ /**
28
+ * Format duration in human-readable format (e.g., "1m 23s", "45s", "19.2s")
29
+ */
30
+ function formatDuration(ms) {
31
+ const seconds = ms / 1000;
32
+ if (seconds < 60) {
33
+ return seconds < 10 ? `${seconds.toFixed(1)}s` : `${String(Math.floor(seconds))}s`;
34
+ }
35
+ const minutes = Math.floor(seconds / 60);
36
+ const remainingSeconds = Math.floor(seconds % 60);
37
+ return `${String(minutes)}m ${String(remainingSeconds)}s`;
38
+ }
39
+ /**
40
+ * Capitalize first letter
41
+ */
42
+ function capitalize(str) {
43
+ return str.charAt(0).toUpperCase() + str.slice(1);
44
+ }
45
+ // =============================================================================
46
+ // Tree Characters (Unicode box drawing)
47
+ // =============================================================================
48
+ const TREE = {
49
+ branch: '├─', // Non-last item
50
+ end: '└─', // Last item
51
+ vertical: '│', // Vertical continuation
52
+ result: '⎿', // Result/action marker
53
+ bullet: '●', // Header bullet
54
+ };
55
+ // =============================================================================
56
+ // Subagent Renderer Class
57
+ // =============================================================================
58
+ export class SubagentRenderer {
59
+ agents = new Map();
60
+ isExpanded = false;
61
+ maxDetailLines;
62
+ showTokens;
63
+ // Callback for when state changes (trigger re-render)
64
+ onUpdate = null;
65
+ constructor(options = {}) {
66
+ this.maxDetailLines = options.maxDetailLines ?? 1;
67
+ this.showTokens = options.showTokens ?? true;
68
+ }
69
+ // ===========================================================================
70
+ // Public API
71
+ // ===========================================================================
72
+ /**
73
+ * Called when a subagent starts
74
+ */
75
+ onSubagentStart(id, type, description) {
76
+ this.agents.set(id, {
77
+ id,
78
+ type,
79
+ description: truncate(description, 50),
80
+ status: 'running',
81
+ toolCount: 0,
82
+ tokenCount: 0,
83
+ lastAction: '',
84
+ lastActionDetails: [],
85
+ startTime: Date.now(),
86
+ });
87
+ this.triggerUpdate();
88
+ }
89
+ /**
90
+ * Called when a subagent uses a tool
91
+ */
92
+ onToolUse(agentId, toolName, summary) {
93
+ const agent = this.agents.get(agentId);
94
+ if (!agent)
95
+ return;
96
+ agent.toolCount++;
97
+ agent.lastAction = summary
98
+ ? `${capitalize(toolName)}: ${truncate(summary, 40)}`
99
+ : capitalize(toolName);
100
+ this.triggerUpdate();
101
+ }
102
+ /**
103
+ * Called when a subagent completes
104
+ */
105
+ onSubagentEnd(id, success, tokenCount, error) {
106
+ const agent = this.agents.get(id);
107
+ if (!agent)
108
+ return;
109
+ agent.status = success ? 'done' : 'error';
110
+ agent.tokenCount = tokenCount;
111
+ agent.endTime = Date.now();
112
+ agent.error = error;
113
+ agent.lastAction = success ? 'Done' : `Error: ${error || 'Unknown'}`;
114
+ this.triggerUpdate();
115
+ }
116
+ /**
117
+ * Toggle expanded/collapsed view (Ctrl+O)
118
+ */
119
+ toggleExpand() {
120
+ this.isExpanded = !this.isExpanded;
121
+ this.triggerUpdate();
122
+ }
123
+ /**
124
+ * Check if there are any active subagents
125
+ */
126
+ hasActiveSubagents() {
127
+ return Array.from(this.agents.values()).some(a => a.status === 'running');
128
+ }
129
+ /**
130
+ * Check if there are any subagents to display
131
+ */
132
+ hasSubagents() {
133
+ return this.agents.size > 0;
134
+ }
135
+ /**
136
+ * Get count of agents by status
137
+ */
138
+ getCounts() {
139
+ let running = 0, done = 0, error = 0;
140
+ for (const agent of this.agents.values()) {
141
+ if (agent.status === 'running')
142
+ running++;
143
+ else if (agent.status === 'done')
144
+ done++;
145
+ else
146
+ error++;
147
+ }
148
+ return { running, done, error, total: this.agents.size };
149
+ }
150
+ /**
151
+ * Get the last agent's stats (for persisting to scrolling zone)
152
+ * Returns null if no agents tracked
153
+ */
154
+ getLastAgentStats() {
155
+ const agents = Array.from(this.agents.values());
156
+ if (agents.length === 0)
157
+ return null;
158
+ // Get the most recently added agent
159
+ const agent = agents[agents.length - 1];
160
+ const endTime = agent.endTime ?? Date.now();
161
+ const durationMs = endTime - agent.startTime;
162
+ return {
163
+ type: agent.type,
164
+ description: agent.description,
165
+ toolCount: agent.toolCount,
166
+ tokenCount: agent.tokenCount,
167
+ durationMs,
168
+ };
169
+ }
170
+ /**
171
+ * Clear all agents (after rendering final output to scrolling zone)
172
+ */
173
+ clear() {
174
+ this.agents.clear();
175
+ this.isExpanded = false;
176
+ this.triggerUpdate();
177
+ }
178
+ /**
179
+ * Set callback for state updates
180
+ */
181
+ setUpdateCallback(callback) {
182
+ this.onUpdate = callback;
183
+ }
184
+ /**
185
+ * Render the subagent zone - returns array of lines
186
+ * Only renders running agents - completed agents are shown via printSubagentResponse
187
+ */
188
+ render() {
189
+ if (this.agents.size === 0) {
190
+ debugRender('Subagent:render', 'no agents, returning []');
191
+ return [];
192
+ }
193
+ // Filter to only running agents - completed agents are shown via printSubagentResponse
194
+ const runningAgents = Array.from(this.agents.values()).filter(a => a.status === 'running');
195
+ const allStatuses = Array.from(this.agents.values()).map(a => `${a.id}:${a.status}`);
196
+ debugRender('Subagent:render', `total=${String(this.agents.size)} running=${String(runningAgents.length)} statuses=[${allStatuses.join(',')}]`);
197
+ if (runningAgents.length === 0) {
198
+ return [];
199
+ }
200
+ const s = getStyles();
201
+ // Single agent - simpler display
202
+ if (runningAgents.length === 1) {
203
+ const lines = this.renderSingleAgent(runningAgents[0], s);
204
+ debugRender('Subagent:render', `single agent, returning ${String(lines.length)} lines`);
205
+ return lines;
206
+ }
207
+ // Multiple agents - tree display
208
+ const counts = this.getCounts();
209
+ const lines = this.renderMultipleAgents(runningAgents, counts, s);
210
+ debugRender('Subagent:render', `multiple agents, returning ${String(lines.length)} lines`);
211
+ return lines;
212
+ }
213
+ // ===========================================================================
214
+ // Private Methods
215
+ // ===========================================================================
216
+ triggerUpdate() {
217
+ if (this.onUpdate) {
218
+ this.onUpdate();
219
+ }
220
+ }
221
+ /**
222
+ * Render single agent display
223
+ */
224
+ renderSingleAgent(agent, s) {
225
+ const lines = [];
226
+ const typeLabel = capitalize(agent.type);
227
+ // Header line: ● Explore(Find CLI entry points)
228
+ const header = `${TREE.bullet} ${typeLabel}(${agent.description})`;
229
+ if (agent.status === 'done') {
230
+ // Completed: show stats
231
+ const duration = formatDuration((agent.endTime ?? Date.now()) - agent.startTime);
232
+ const stats = this.showTokens
233
+ ? `${String(agent.toolCount)} tool uses · ${formatTokens(agent.tokenCount)} tokens · ${duration}`
234
+ : `${String(agent.toolCount)} tool uses · ${duration}`;
235
+ lines.push(s.primary(header));
236
+ lines.push(s.muted(` ${TREE.result} Done (${stats})`));
237
+ }
238
+ else if (agent.status === 'error') {
239
+ lines.push(s.error(header));
240
+ lines.push(s.error(` ${TREE.result} ${agent.lastAction}`));
241
+ }
242
+ else {
243
+ // Running: show last action
244
+ lines.push(s.primary(header));
245
+ if (agent.lastAction) {
246
+ lines.push(s.muted(` ${TREE.result} ${agent.lastAction}`));
247
+ }
248
+ if (agent.toolCount > 1) {
249
+ lines.push(s.muted(` +${String(agent.toolCount - 1)} more tool uses (ctrl+o to expand)`));
250
+ }
251
+ // ctrl+b background: coming soon
252
+ }
253
+ return lines;
254
+ }
255
+ /**
256
+ * Render multiple agents in tree display
257
+ */
258
+ renderMultipleAgents(agents, counts, s) {
259
+ const lines = [];
260
+ // Header line
261
+ let headerText;
262
+ if (counts.running > 0 && counts.done > 0) {
263
+ // Mixed states
264
+ headerText = `${TREE.bullet} ${String(counts.total)} agents (${String(counts.running)} running, ${String(counts.done)} done)`;
265
+ }
266
+ else if (counts.running > 0) {
267
+ // All running
268
+ const typeLabel = this.getCommonTypeLabel(agents);
269
+ headerText = `${TREE.bullet} Running ${String(counts.total)} ${typeLabel} agents… (ctrl+o to expand)`;
270
+ }
271
+ else {
272
+ // All done
273
+ const typeLabel = this.getCommonTypeLabel(agents);
274
+ headerText = `${TREE.bullet} ${String(counts.total)} ${typeLabel} agents finished (ctrl+o to expand)`;
275
+ }
276
+ lines.push(s.primary(headerText));
277
+ // Render each agent in tree
278
+ for (let i = 0; i < agents.length; i++) {
279
+ const agent = agents[i];
280
+ const isLast = i === agents.length - 1;
281
+ const branch = isLast ? TREE.end : TREE.branch;
282
+ const continuation = isLast ? ' ' : `${TREE.vertical} `;
283
+ // Agent line: ├─ Find state management · 3 tool uses · 20.7k tokens
284
+ const toolCountStr = String(agent.toolCount);
285
+ const stats = this.showTokens
286
+ ? `${toolCountStr} tool ${agent.toolCount === 1 ? 'use' : 'uses'} · ${formatTokens(agent.tokenCount)} tokens`
287
+ : `${toolCountStr} tool ${agent.toolCount === 1 ? 'use' : 'uses'}`;
288
+ const agentLine = ` ${branch} ${agent.description} · ${stats}`;
289
+ if (agent.status === 'error') {
290
+ lines.push(s.error(agentLine));
291
+ }
292
+ else if (agent.status === 'done') {
293
+ lines.push(s.muted(agentLine));
294
+ }
295
+ else {
296
+ lines.push(agentLine);
297
+ }
298
+ // Last action line: │ ⎿ Read: src/auth.ts
299
+ const actionLine = ` ${continuation}${TREE.result} ${agent.lastAction || (agent.status === 'done' ? 'Done' : 'Starting...')}`;
300
+ lines.push(s.muted(actionLine));
301
+ }
302
+ // Footer hint for running agents
303
+ if (counts.running > 0) {
304
+ // ctrl+b background: coming soon
305
+ }
306
+ return lines;
307
+ }
308
+ /**
309
+ * Get common type label if all agents are same type, otherwise "mixed"
310
+ */
311
+ getCommonTypeLabel(agents) {
312
+ if (agents.length === 0)
313
+ return '';
314
+ const firstType = agents[0].type;
315
+ const allSame = agents.every(a => a.type === firstType);
316
+ return allSame ? capitalize(firstType) : '';
317
+ }
318
+ }
@@ -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,94 @@
1
+ /**
2
+ * Terminal ANSI Escape Codes
3
+ *
4
+ * Constants and helper functions for ANSI escape sequences.
5
+ * Used by TerminalRenderer for cursor movement, scroll regions, clearing, etc.
6
+ *
7
+ * Reference: https://en.wikipedia.org/wiki/ANSI_escape_code
8
+ */
9
+ /** Control Sequence Introducer */
10
+ export declare const CSI = "\u001B[";
11
+ /** Operating System Command (for title, etc.) */
12
+ export declare const OSC = "\u001B]";
13
+ /** String Terminator */
14
+ export declare const ST = "\u0007";
15
+ /** Move cursor up N lines */
16
+ export declare const cursorUp: (n: number) => string;
17
+ /** Move cursor down N lines */
18
+ export declare const cursorDown: (n: number) => string;
19
+ /** Move cursor forward (right) N columns */
20
+ export declare const cursorForward: (n: number) => string;
21
+ /** Move cursor back (left) N columns */
22
+ export declare const cursorBack: (n: number) => string;
23
+ /** Move cursor to specific row and column (1-indexed) */
24
+ export declare const cursorTo: (row: number, col: number) => string;
25
+ /** Move cursor to beginning of line */
26
+ export declare const cursorToLineStart = "\r";
27
+ /** Move cursor to specific column (1-indexed) */
28
+ export declare const cursorToColumn: (col: number) => string;
29
+ /** Save cursor position */
30
+ export declare const saveCursor = "\u001B[s";
31
+ /** Restore cursor position */
32
+ export declare const restoreCursor = "\u001B[u";
33
+ /** Hide cursor */
34
+ export declare const hideCursor = "\u001B[?25l";
35
+ /** Show cursor */
36
+ export declare const showCursor = "\u001B[?25h";
37
+ /**
38
+ * Set scroll region (DECSTBM - DEC Set Top and Bottom Margins)
39
+ *
40
+ * @param top - Top row of scroll region (1-indexed, inclusive)
41
+ * @param bottom - Bottom row of scroll region (1-indexed, inclusive)
42
+ *
43
+ * When set, scrolling only affects rows within this region.
44
+ * Text printed in the scroll region that would overflow scrolls the region.
45
+ * Content outside the region is not affected.
46
+ */
47
+ export declare const setScrollRegion: (top: number, bottom: number) => string;
48
+ /**
49
+ * Reset scroll region to full screen
50
+ *
51
+ * Removes any scroll region restrictions.
52
+ * Scrolling affects the entire terminal again.
53
+ */
54
+ export declare const resetScrollRegion = "\u001B[r";
55
+ /** Clear from cursor to end of line */
56
+ export declare const clearToEndOfLine = "\u001B[K";
57
+ /** Clear from cursor to start of line */
58
+ export declare const clearToStartOfLine = "\u001B[1K";
59
+ /** Clear entire line */
60
+ export declare const clearLine = "\u001B[2K";
61
+ /** Clear from cursor to end of screen */
62
+ export declare const clearToEndOfScreen = "\u001B[J";
63
+ /** Clear from cursor to start of screen */
64
+ export declare const clearToStartOfScreen = "\u001B[1J";
65
+ /** Clear entire screen (cursor position unchanged) */
66
+ export declare const clearScreen = "\u001B[2J";
67
+ /** Clear entire screen and move cursor to top-left */
68
+ export declare const clearScreenAndHome = "\u001B[2J\u001B[H";
69
+ /**
70
+ * Enter alternate screen buffer.
71
+ * Content shown here doesn't go to main scrollback.
72
+ * Used for modal UIs like menus, editors.
73
+ */
74
+ export declare const enterAlternateScreen = "\u001B[?1049h";
75
+ /**
76
+ * Leave alternate screen buffer.
77
+ * Returns to main screen (previous content restored).
78
+ */
79
+ export declare const leaveAlternateScreen = "\u001B[?1049l";
80
+ /** Disable all mouse tracking modes */
81
+ export declare const disableMouseTracking = "\u001B[?1000l\u001B[?1002l\u001B[?1003l";
82
+ /** Set terminal window title */
83
+ export declare const setTitle: (title: string) => string;
84
+ /** Ring terminal bell */
85
+ export declare const bell = "\u0007";
86
+ /**
87
+ * Position cursor at a specific location and clear to end of screen
88
+ * Useful for redrawing from a known position
89
+ */
90
+ export declare const positionAndClear: (row: number, col: number) => string;
91
+ /**
92
+ * Move to row 1, column 1 (home position)
93
+ */
94
+ export declare const cursorHome = "\u001B[H";