@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,124 @@
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
+ // =============================================================================
10
+ // Escape Sequence Base
11
+ // =============================================================================
12
+ /** Control Sequence Introducer */
13
+ export const CSI = '\x1b[';
14
+ /** Operating System Command (for title, etc.) */
15
+ export const OSC = '\x1b]';
16
+ /** String Terminator */
17
+ export const ST = '\x07';
18
+ // =============================================================================
19
+ // Cursor Movement
20
+ // =============================================================================
21
+ /** Move cursor up N lines */
22
+ export const cursorUp = (n) => (n > 0 ? `${CSI}${String(n)}A` : '');
23
+ /** Move cursor down N lines */
24
+ export const cursorDown = (n) => (n > 0 ? `${CSI}${String(n)}B` : '');
25
+ /** Move cursor forward (right) N columns */
26
+ export const cursorForward = (n) => (n > 0 ? `${CSI}${String(n)}C` : '');
27
+ /** Move cursor back (left) N columns */
28
+ export const cursorBack = (n) => (n > 0 ? `${CSI}${String(n)}D` : '');
29
+ /** Move cursor to specific row and column (1-indexed) */
30
+ export const cursorTo = (row, col) => `${CSI}${String(row)};${String(col)}H`;
31
+ /** Move cursor to beginning of line */
32
+ export const cursorToLineStart = '\r';
33
+ /** Move cursor to specific column (1-indexed) */
34
+ export const cursorToColumn = (col) => `${CSI}${String(col)}G`;
35
+ /** Save cursor position */
36
+ export const saveCursor = `${CSI}s`;
37
+ /** Restore cursor position */
38
+ export const restoreCursor = `${CSI}u`;
39
+ // =============================================================================
40
+ // Cursor Visibility
41
+ // =============================================================================
42
+ /** Hide cursor */
43
+ export const hideCursor = `${CSI}?25l`;
44
+ /** Show cursor */
45
+ export const showCursor = `${CSI}?25h`;
46
+ // =============================================================================
47
+ // Scroll Regions
48
+ // =============================================================================
49
+ /**
50
+ * Set scroll region (DECSTBM - DEC Set Top and Bottom Margins)
51
+ *
52
+ * @param top - Top row of scroll region (1-indexed, inclusive)
53
+ * @param bottom - Bottom row of scroll region (1-indexed, inclusive)
54
+ *
55
+ * When set, scrolling only affects rows within this region.
56
+ * Text printed in the scroll region that would overflow scrolls the region.
57
+ * Content outside the region is not affected.
58
+ */
59
+ export const setScrollRegion = (top, bottom) => `${CSI}${String(top)};${String(bottom)}r`;
60
+ /**
61
+ * Reset scroll region to full screen
62
+ *
63
+ * Removes any scroll region restrictions.
64
+ * Scrolling affects the entire terminal again.
65
+ */
66
+ export const resetScrollRegion = `${CSI}r`;
67
+ // =============================================================================
68
+ // Clearing
69
+ // =============================================================================
70
+ /** Clear from cursor to end of line */
71
+ export const clearToEndOfLine = `${CSI}K`;
72
+ /** Clear from cursor to start of line */
73
+ export const clearToStartOfLine = `${CSI}1K`;
74
+ /** Clear entire line */
75
+ export const clearLine = `${CSI}2K`;
76
+ /** Clear from cursor to end of screen */
77
+ export const clearToEndOfScreen = `${CSI}J`;
78
+ /** Clear from cursor to start of screen */
79
+ export const clearToStartOfScreen = `${CSI}1J`;
80
+ /** Clear entire screen (cursor position unchanged) */
81
+ export const clearScreen = `${CSI}2J`;
82
+ /** Clear entire screen and move cursor to top-left */
83
+ export const clearScreenAndHome = `${CSI}2J${CSI}H`;
84
+ // =============================================================================
85
+ // Alternate Screen Buffer
86
+ // =============================================================================
87
+ /**
88
+ * Enter alternate screen buffer.
89
+ * Content shown here doesn't go to main scrollback.
90
+ * Used for modal UIs like menus, editors.
91
+ */
92
+ export const enterAlternateScreen = `${CSI}?1049h`;
93
+ /**
94
+ * Leave alternate screen buffer.
95
+ * Returns to main screen (previous content restored).
96
+ */
97
+ export const leaveAlternateScreen = `${CSI}?1049l`;
98
+ // =============================================================================
99
+ // Mouse Tracking (disabled for CLI)
100
+ // =============================================================================
101
+ /** Disable all mouse tracking modes */
102
+ export const disableMouseTracking = `${CSI}?1000l${CSI}?1002l${CSI}?1003l`;
103
+ // =============================================================================
104
+ // Terminal Title
105
+ // =============================================================================
106
+ /** Set terminal window title */
107
+ export const setTitle = (title) => `${OSC}0;${title}${ST}`;
108
+ // =============================================================================
109
+ // Bell
110
+ // =============================================================================
111
+ /** Ring terminal bell */
112
+ export const bell = '\x07';
113
+ // =============================================================================
114
+ // Composite Helpers
115
+ // =============================================================================
116
+ /**
117
+ * Position cursor at a specific location and clear to end of screen
118
+ * Useful for redrawing from a known position
119
+ */
120
+ export const positionAndClear = (row, col) => `${cursorTo(row, col)}${clearToEndOfScreen}`;
121
+ /**
122
+ * Move to row 1, column 1 (home position)
123
+ */
124
+ export const cursorHome = `${CSI}H`;
@@ -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
+ }
@@ -0,0 +1,220 @@
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 ---
9
+ * Terminal Renderer
10
+ *
11
+ * Single point of terminal output. All rendering goes through this class.
12
+ * Eliminates race conditions by ensuring only one writer.
13
+ */
14
+ import { EventEmitter } from 'events';
15
+ import { RenderMode, type ModeTransition } from './render-modes.js';
16
+ import type { ProviderRegistry } from './providers/types.js';
17
+ import type { Footer } from './footer.js';
18
+ export { RenderMode } from './render-modes.js';
19
+ export interface TerminalRendererOptions {
20
+ /** Initial render mode (default: REPL) */
21
+ initialMode?: RenderMode;
22
+ /** Render debounce in milliseconds (default: 16 = ~60fps) */
23
+ renderDebounceMs?: number;
24
+ /** Enable debug logging */
25
+ debug?: boolean;
26
+ /**
27
+ * Use scroll regions for footer isolation (default: false)
28
+ * When false, uses console.log for scroll content (legacy mode)
29
+ * When true, uses ANSI scroll regions (requires footer integration)
30
+ */
31
+ useScrollRegions?: boolean;
32
+ }
33
+ export interface TerminalRendererEvents {
34
+ 'mode-change': (transition: ModeTransition) => void;
35
+ 'resize': (cols: number, rows: number) => void;
36
+ 'render': (mode: RenderMode) => void;
37
+ 'error': (error: Error) => void;
38
+ }
39
+ export declare class TerminalRenderer extends EventEmitter {
40
+ private readonly renderDebounceMs;
41
+ private readonly debug;
42
+ private readonly useScrollRegions;
43
+ private mode;
44
+ private terminalRows;
45
+ private terminalCols;
46
+ private footerHeight;
47
+ private scrollRegionBottom;
48
+ private isRendering;
49
+ private renderPending;
50
+ private renderTimer;
51
+ private started;
52
+ private simpleMode;
53
+ private pendingScrollContent;
54
+ private scrollCursorRow;
55
+ private providers;
56
+ private footer;
57
+ private resizeHandler;
58
+ private renderLoopTimer;
59
+ private readonly renderLoopInterval;
60
+ constructor(options?: TerminalRendererOptions);
61
+ /**
62
+ * Start the renderer.
63
+ * Sets up terminal state and begins render loop.
64
+ */
65
+ start(): void;
66
+ /**
67
+ * Start the render loop (for scroll region mode)
68
+ * Polls footer for changes and re-renders
69
+ */
70
+ private startRenderLoop;
71
+ /**
72
+ * Stop the render loop
73
+ */
74
+ private stopRenderLoop;
75
+ /**
76
+ * Stop the renderer.
77
+ * Cleans up terminal state and stops render loop.
78
+ */
79
+ stop(): void;
80
+ /**
81
+ * Check if renderer is running
82
+ */
83
+ isStarted(): boolean;
84
+ /**
85
+ * Get current render mode
86
+ */
87
+ getMode(): RenderMode;
88
+ /**
89
+ * Switch to a different render mode
90
+ */
91
+ setMode(newMode: RenderMode, reason?: string): void;
92
+ /**
93
+ * Set up terminal for a specific mode
94
+ */
95
+ private setupMode;
96
+ /**
97
+ * Clean up terminal state when leaving a mode
98
+ */
99
+ private cleanupMode;
100
+ /**
101
+ * Register content providers
102
+ */
103
+ setProviders(providers: Partial<ProviderRegistry>): void;
104
+ /**
105
+ * Get a specific provider
106
+ */
107
+ getProvider<K extends keyof ProviderRegistry>(key: K): ProviderRegistry[K] | undefined;
108
+ /**
109
+ * Set the Footer instance for scroll region rendering
110
+ * When useScrollRegions is true, TerminalRenderer uses footer.getFooterLines()
111
+ * and manages the scroll region. Footer's own render loop is disabled.
112
+ */
113
+ setFooter(footer: Footer): void;
114
+ /**
115
+ * Get the connected Footer instance
116
+ */
117
+ getFooter(): Footer | null;
118
+ /**
119
+ * Queue content for scroll zone (REPL mode only)
120
+ * Content will be written on next render
121
+ *
122
+ * In legacy mode (useScrollRegions=false), writes immediately via console.log
123
+ * In scroll region mode, queues for next render cycle
124
+ */
125
+ appendToScrollZone(content: string | string[]): void;
126
+ /**
127
+ * Flush pending scroll content to terminal
128
+ *
129
+ * Uses tracked scroll position to append content naturally.
130
+ * When content would exceed scroll region, scrolling occurs automatically.
131
+ */
132
+ private flushScrollContent;
133
+ /**
134
+ * Request a render (debounced)
135
+ */
136
+ requestRender(): void;
137
+ /**
138
+ * Force immediate render (bypasses debounce)
139
+ */
140
+ forceRender(): void;
141
+ /**
142
+ * Main render method
143
+ */
144
+ private doRender;
145
+ /**
146
+ * Render in simple mode (non-TTY)
147
+ */
148
+ private renderSimpleMode;
149
+ /**
150
+ * Render MENU mode
151
+ */
152
+ private renderMenuMode;
153
+ /**
154
+ * Render REPL mode
155
+ */
156
+ private renderReplMode;
157
+ /**
158
+ * Build footer lines from providers
159
+ */
160
+ private buildFooterLines;
161
+ /**
162
+ * Calculate physical height of lines (accounting for wrapping)
163
+ */
164
+ private calculatePhysicalHeight;
165
+ /**
166
+ * Adjust scroll region when footer height changes
167
+ */
168
+ private adjustScrollRegion;
169
+ /**
170
+ * Render footer content
171
+ */
172
+ private renderFooter;
173
+ /**
174
+ * Position cursor for input (provider-based)
175
+ */
176
+ private positionCursor;
177
+ /**
178
+ * Position cursor for Footer integration (scroll region mode)
179
+ */
180
+ private positionFooterCursor;
181
+ /**
182
+ * Render OVERLAY mode
183
+ */
184
+ private renderOverlayMode;
185
+ /**
186
+ * Handle terminal resize
187
+ */
188
+ handleResize(): void;
189
+ /**
190
+ * Update terminal dimensions from stdout
191
+ */
192
+ private updateDimensions;
193
+ /**
194
+ * Get current terminal dimensions
195
+ */
196
+ getDimensions(): {
197
+ rows: number;
198
+ cols: number;
199
+ };
200
+ /**
201
+ * Write to stdout (single output point)
202
+ */
203
+ write(text: string): void;
204
+ /**
205
+ * Route keyboard input to appropriate handler
206
+ */
207
+ handleKeyboard(key: Buffer): void;
208
+ /**
209
+ * Log debug message if debug mode enabled
210
+ */
211
+ private log;
212
+ }
213
+ /**
214
+ * Get or create the default renderer instance
215
+ */
216
+ export declare function getRenderer(options?: TerminalRendererOptions): TerminalRenderer;
217
+ /**
218
+ * Reset the default renderer (for testing)
219
+ */
220
+ export declare function resetRenderer(): void;