@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,279 @@
1
+ /**
2
+ * Delegations Overlay V2 - View delegation status and history
3
+ *
4
+ * Shows delegations from the coordinator to background specialists.
5
+ * List view with detail drill-down, clear completed, status indicators.
6
+ */
7
+ import { BaseOverlayV2 } from '../../base/overlay-base-v2.js';
8
+ import { wrapText, truncate } from '../../base/render-utils.js';
9
+ import { getDelegationTracker, } from '../../../multi-agent/delegation-tracker.js';
10
+ export class DelegationsOverlayV2 extends BaseOverlayV2 {
11
+ type = 'inline';
12
+ id = 'delegations-overlay';
13
+ constructor() {
14
+ super({
15
+ selectedIndex: 0,
16
+ screen: 'list',
17
+ detailId: null,
18
+ });
19
+ }
20
+ renderContent(context) {
21
+ this.minHeight = this.state.screen === 'detail' ? 18 : 14;
22
+ if (this.state.screen === 'detail') {
23
+ return this.renderDetail(context);
24
+ }
25
+ return this.renderList(context);
26
+ }
27
+ // ===========================================================================
28
+ // List View
29
+ // ===========================================================================
30
+ renderList(context) {
31
+ const s = context.styles;
32
+ const lines = [];
33
+ const innerWidth = context.width - 4;
34
+ lines.push(...this.renderHeader('Delegations'));
35
+ const tracker = getDelegationTracker();
36
+ const delegations = this.getSortedDelegations();
37
+ const stats = tracker.getStats();
38
+ // Stats line
39
+ const statParts = [];
40
+ if (stats.pending > 0 || stats.running > 0) {
41
+ statParts.push(s.warning(`Active: ${String(stats.pending + stats.running)}`));
42
+ }
43
+ if (stats.completed > 0) {
44
+ statParts.push(s.success(`Completed: ${String(stats.completed)}`));
45
+ }
46
+ if (stats.failed > 0) {
47
+ statParts.push(s.error(`Failed: ${String(stats.failed)}`));
48
+ }
49
+ if (statParts.length > 0) {
50
+ lines.push(` ${statParts.join(' ')}`);
51
+ lines.push('');
52
+ }
53
+ // Ensure selected index is valid
54
+ if (this.state.selectedIndex >= delegations.length) {
55
+ this.state.selectedIndex = Math.max(0, delegations.length - 1);
56
+ }
57
+ if (delegations.length === 0) {
58
+ lines.push(s.muted(' No delegations yet.'));
59
+ lines.push('');
60
+ lines.push(s.muted(' The coordinator uses delegate_background to'));
61
+ lines.push(s.muted(' assign tasks to specialist agents.'));
62
+ lines.push('');
63
+ }
64
+ else {
65
+ for (let i = 0; i < delegations.length; i++) {
66
+ const d = delegations[i];
67
+ const isSelected = i === this.state.selectedIndex;
68
+ const line = this.formatDelegationLine(d, innerWidth - 4, s);
69
+ if (isSelected) {
70
+ lines.push(s.selected(` ${s.primary('›')} ${line} `));
71
+ }
72
+ else {
73
+ lines.push(` ${line}`);
74
+ }
75
+ }
76
+ lines.push('');
77
+ }
78
+ // Footer
79
+ if (delegations.length > 0) {
80
+ lines.push(...this.renderFooter('↑↓ navigate · Enter details · c clear done · q close'));
81
+ }
82
+ else {
83
+ lines.push(...this.renderFooter('q close'));
84
+ }
85
+ return lines;
86
+ }
87
+ formatDelegationLine(d, maxWidth, s) {
88
+ const { icon, colorFn } = this.getStatusStyle(d.status, s);
89
+ const duration = this.formatDuration(d.createdAt, d.completedAt);
90
+ const agent = `$${d.targetAgentId}`;
91
+ // Columns: icon(2) + id(12) + agent(8) + task(flex) + status/duration(12)
92
+ const fixedWidth = 2 + 12 + 8 + 12;
93
+ const taskMaxLen = Math.max(10, maxWidth - fixedWidth);
94
+ const task = truncate(d.task, taskMaxLen);
95
+ const statusText = d.status === 'completed' || d.status === 'failed'
96
+ ? duration
97
+ : d.status;
98
+ return `${colorFn(icon)} ${s.muted(d.id.padEnd(12))}${s.secondary(agent.padEnd(8))}${task.padEnd(taskMaxLen)}${s.muted(statusText)}`;
99
+ }
100
+ // ===========================================================================
101
+ // Detail View
102
+ // ===========================================================================
103
+ renderDetail(context) {
104
+ const s = context.styles;
105
+ const lines = [];
106
+ const innerWidth = context.width - 4;
107
+ const tracker = getDelegationTracker();
108
+ const d = this.state.detailId ? tracker.get(this.state.detailId) : undefined;
109
+ lines.push(...this.renderHeader(this.state.detailId ?? 'Delegation'));
110
+ if (!d) {
111
+ lines.push(s.error(' Delegation not found.'));
112
+ lines.push('');
113
+ lines.push(...this.renderFooter('Esc back'));
114
+ return lines;
115
+ }
116
+ const { icon, colorFn } = this.getStatusStyle(d.status, s);
117
+ // Info fields
118
+ lines.push(` ${s.primaryBold('Status:')} ${colorFn(`${icon} ${d.status}`)}`);
119
+ lines.push(` ${s.primaryBold('Agent:')} ${s.secondary(`$${d.targetAgentId}`)}`);
120
+ lines.push(` ${s.primaryBold('Created:')} ${s.muted(d.createdAt.toLocaleTimeString())}`);
121
+ lines.push(` ${s.primaryBold('Duration:')} ${s.muted(this.formatDuration(d.createdAt, d.completedAt))}`);
122
+ if (d.todoIndex !== undefined) {
123
+ lines.push(` ${s.primaryBold('Todo:')} ${s.muted(`#${String(d.todoIndex)}`)}`);
124
+ }
125
+ lines.push('');
126
+ // Task
127
+ lines.push(` ${s.primaryBold('Task:')}`);
128
+ const taskLines = wrapText(d.task, innerWidth - 4);
129
+ for (const tl of taskLines) {
130
+ lines.push(` ${tl}`);
131
+ }
132
+ if (d.expectedOutput) {
133
+ lines.push('');
134
+ lines.push(` ${s.primaryBold('Expected Output:')}`);
135
+ const expectedLines = wrapText(d.expectedOutput, innerWidth - 4);
136
+ for (const el of expectedLines) {
137
+ lines.push(` ${s.muted(el)}`);
138
+ }
139
+ }
140
+ // Result
141
+ lines.push('');
142
+ if (d.result) {
143
+ lines.push(` ${s.primaryBold('Result:')}`);
144
+ const summaryLines = wrapText(d.result.summary, innerWidth - 4);
145
+ for (const sl of summaryLines) {
146
+ lines.push(` ${d.result.success ? s.success(sl) : s.error(sl)}`);
147
+ }
148
+ if (d.result.artifactIds.length > 0) {
149
+ lines.push(` ${s.primaryBold('Artifacts:')} ${s.muted(d.result.artifactIds.join(', '))}`);
150
+ }
151
+ if (d.result.error) {
152
+ lines.push(` ${s.primaryBold('Error:')} ${s.error(d.result.error)}`);
153
+ }
154
+ }
155
+ else {
156
+ lines.push(` ${s.muted('(still running)')}`);
157
+ }
158
+ lines.push('');
159
+ lines.push(...this.renderFooter('Esc back · q close'));
160
+ return lines;
161
+ }
162
+ // ===========================================================================
163
+ // Key Handling
164
+ // ===========================================================================
165
+ handleKey(key) {
166
+ if (this.isCloseKey(key)) {
167
+ if (this.state.screen === 'detail') {
168
+ this.state.screen = 'list';
169
+ this.state.detailId = null;
170
+ return this.rerender();
171
+ }
172
+ return this.close(undefined);
173
+ }
174
+ if (this.state.screen === 'detail') {
175
+ return this.noAction();
176
+ }
177
+ return this.handleListKey(key);
178
+ }
179
+ handleListKey(key) {
180
+ const delegations = this.getSortedDelegations();
181
+ if (this.isUpKey(key)) {
182
+ if (this.state.selectedIndex > 0) {
183
+ this.state.selectedIndex--;
184
+ }
185
+ return this.rerender();
186
+ }
187
+ if (this.isDownKey(key)) {
188
+ if (this.state.selectedIndex < delegations.length - 1) {
189
+ this.state.selectedIndex++;
190
+ }
191
+ return this.rerender();
192
+ }
193
+ if (this.isEnterKey(key)) {
194
+ if (delegations.length > 0 && delegations[this.state.selectedIndex]) {
195
+ this.state.screen = 'detail';
196
+ this.state.detailId = delegations[this.state.selectedIndex].id;
197
+ }
198
+ return this.rerender();
199
+ }
200
+ // 'c' for clear completed/failed/cancelled
201
+ if (key.name === 'c') {
202
+ const tracker = getDelegationTracker();
203
+ const all = tracker.getAll();
204
+ for (const d of all) {
205
+ if (d.status === 'completed' || d.status === 'failed' || d.status === 'cancelled') {
206
+ // Remove from tracker by clearing and re-adding actives
207
+ // DelegationTracker doesn't have a remove method, so we clear all
208
+ // Note: This is a simplification — only clear if there are no active delegations
209
+ }
210
+ }
211
+ // For now, clear the entire tracker if no active delegations remain
212
+ const stats = tracker.getStats();
213
+ if (stats.pending === 0 && stats.running === 0) {
214
+ tracker.clear();
215
+ }
216
+ this.state.selectedIndex = 0;
217
+ return this.rerender();
218
+ }
219
+ return this.noAction();
220
+ }
221
+ // ===========================================================================
222
+ // Helpers
223
+ // ===========================================================================
224
+ getSortedDelegations() {
225
+ const tracker = getDelegationTracker();
226
+ const delegations = tracker.getAll();
227
+ // Sort: running first, then pending, then completed/failed by time desc
228
+ delegations.sort((a, b) => {
229
+ const statusOrder = (status) => {
230
+ switch (status) {
231
+ case 'running': return 0;
232
+ case 'pending': return 1;
233
+ case 'completed': return 2;
234
+ case 'failed': return 3;
235
+ case 'cancelled': return 4;
236
+ default: return 5;
237
+ }
238
+ };
239
+ const orderDiff = statusOrder(a.status) - statusOrder(b.status);
240
+ if (orderDiff !== 0)
241
+ return orderDiff;
242
+ // Within same status, newest first
243
+ return b.createdAt.getTime() - a.createdAt.getTime();
244
+ });
245
+ return delegations;
246
+ }
247
+ getStatusStyle(status, s) {
248
+ switch (status) {
249
+ case 'running':
250
+ return { icon: '●', colorFn: s.warning };
251
+ case 'pending':
252
+ return { icon: '●', colorFn: s.muted };
253
+ case 'completed':
254
+ return { icon: '✓', colorFn: s.success };
255
+ case 'failed':
256
+ return { icon: '✗', colorFn: s.error };
257
+ case 'cancelled':
258
+ return { icon: '⊘', colorFn: s.muted };
259
+ default:
260
+ return { icon: '?', colorFn: s.muted };
261
+ }
262
+ }
263
+ formatDuration(from, to) {
264
+ const endTime = to ?? new Date();
265
+ const ms = endTime.getTime() - from.getTime();
266
+ const seconds = Math.floor(ms / 1000);
267
+ const minutes = Math.floor(seconds / 60);
268
+ const hours = Math.floor(minutes / 60);
269
+ if (hours > 0) {
270
+ return `${String(hours)}h ${String(minutes % 60)}m`;
271
+ }
272
+ else if (minutes > 0) {
273
+ return `${String(minutes)}m ${String(seconds % 60)}s`;
274
+ }
275
+ else {
276
+ return `${String(seconds)}s`;
277
+ }
278
+ }
279
+ }
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Docs Overlay V2
3
+ *
4
+ * Document browser for project documents (PRD, architecture, design, notes).
5
+ * Uses TabbedListOverlayV2 for consistent list/tab/search behavior.
6
+ *
7
+ * Features:
8
+ * - Tabbed filtering by document type
9
+ * - Search with / toggle
10
+ * - Paginated list
11
+ * - Returns selected document for viewing in separate fullscreen overlay
12
+ */
13
+ import { TabbedListOverlayV2 } from '../../base/tabbed-list-overlay-v2.js';
14
+ import type { OverlayAction, KeyEvent } from '../types.js';
15
+ import { type ProjectDocument } from '../../../db/repositories/document-repository.js';
16
+ export interface DocsOverlayV2Result {
17
+ /** Selected document to view (if any) */
18
+ selectedDocument?: ProjectDocument;
19
+ /** Whether user cancelled (Ctrl+C or Esc) */
20
+ cancelled: boolean;
21
+ }
22
+ export declare class DocsOverlayV2 extends TabbedListOverlayV2<ProjectDocument, DocsOverlayV2Result> {
23
+ readonly type: "inline";
24
+ readonly id = "docs-overlay-v2";
25
+ private readonly projectName;
26
+ /**
27
+ * @param projectId - Optional project ID to view documents for.
28
+ * If not provided, uses the active project.
29
+ * Pass this when opening from workflow overlay for a specific project.
30
+ */
31
+ constructor(projectId?: number);
32
+ /**
33
+ * Override to render project name in header
34
+ */
35
+ protected renderHeader(title: string, subtitle?: string): string[];
36
+ /**
37
+ * Override to handle item selection.
38
+ * Returns the selected document so the command handler can show it in a fullscreen overlay.
39
+ */
40
+ protected onItemSelected(doc: ProjectDocument): DocsOverlayV2Result | undefined;
41
+ /**
42
+ * Override to return result on close
43
+ */
44
+ handleKey(key: KeyEvent): OverlayAction<DocsOverlayV2Result>;
45
+ }
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Docs Overlay V2
3
+ *
4
+ * Document browser for project documents (PRD, architecture, design, notes).
5
+ * Uses TabbedListOverlayV2 for consistent list/tab/search behavior.
6
+ *
7
+ * Features:
8
+ * - Tabbed filtering by document type
9
+ * - Search with / toggle
10
+ * - Paginated list
11
+ * - Returns selected document for viewing in separate fullscreen overlay
12
+ */
13
+ import { TabbedListOverlayV2 } from '../../base/tabbed-list-overlay-v2.js';
14
+ import { documentRepository } from '../../../db/repositories/document-repository.js';
15
+ import { getActiveProject } from '../../../tools/project-db.js';
16
+ import { DOC_TYPE_LABELS, PLAN_STATUS_ICONS } from '../../constants/labels.js';
17
+ // =============================================================================
18
+ // Constants
19
+ // =============================================================================
20
+ const PAGE_SIZE = 10;
21
+ // Status badges for plans (icon-only for compact list view)
22
+ const PLAN_STATUS_LABELS = PLAN_STATUS_ICONS;
23
+ const TABS = [
24
+ { id: 'all', label: 'All' },
25
+ { id: 'prd', label: 'PRD' },
26
+ { id: 'architecture', label: 'ARCH' },
27
+ { id: 'design', label: 'DESIGN' },
28
+ { id: 'notes', label: 'NOTES' },
29
+ { id: 'plan', label: 'PLANS' },
30
+ ];
31
+ // =============================================================================
32
+ // Docs Overlay V2
33
+ // =============================================================================
34
+ export class DocsOverlayV2 extends TabbedListOverlayV2 {
35
+ type = 'inline';
36
+ id = 'docs-overlay-v2';
37
+ projectName;
38
+ /**
39
+ * @param projectId - Optional project ID to view documents for.
40
+ * If not provided, uses the active project.
41
+ * Pass this when opening from workflow overlay for a specific project.
42
+ */
43
+ constructor(projectId) {
44
+ // Use provided projectId, or fall back to active project
45
+ const activeProject = getActiveProject();
46
+ const resolvedProjectId = projectId ?? activeProject?.id ?? null;
47
+ const projectName = projectId
48
+ ? null // Will be loaded if needed, but we don't have it here
49
+ : activeProject?.displayName ?? null;
50
+ // Load documents
51
+ const documents = resolvedProjectId !== null
52
+ ? documentRepository.listByProject(resolvedProjectId)
53
+ : [];
54
+ super({
55
+ title: 'Documents',
56
+ tabs: TABS,
57
+ items: documents,
58
+ pageSize: PAGE_SIZE,
59
+ filterByTab: (doc, tabId) => {
60
+ if (tabId === 'all')
61
+ return true;
62
+ return doc.docType === tabId;
63
+ },
64
+ getSearchText: (doc) => `${doc.title} ${doc.docType}`,
65
+ renderItem: (doc, isSelected, styles) => {
66
+ const prefix = isSelected ? styles.primary('❯ ') : ' ';
67
+ const typeLabel = (DOC_TYPE_LABELS[doc.docType] || doc.docType).padEnd(8);
68
+ // For plans, show status badge before title
69
+ let titleDisplay = doc.title.slice(0, 50);
70
+ if (doc.docType === 'plan' && doc.status) {
71
+ const statusBadge = PLAN_STATUS_LABELS[doc.status] || '?';
72
+ titleDisplay = `${statusBadge} ${titleDisplay}`;
73
+ }
74
+ if (isSelected) {
75
+ return `${prefix}${styles.primaryBold(typeLabel)} ${styles.primary(titleDisplay)}`;
76
+ }
77
+ return `${prefix}${styles.muted(typeLabel)} ${styles.secondary(titleDisplay)}`;
78
+ },
79
+ showCount: true,
80
+ emptyMessage: resolvedProjectId === null
81
+ ? 'No active project. Use /projects to select one.'
82
+ : 'No documents found. Use /design or /arch to create documents.',
83
+ noResultsMessage: 'No documents match the search.',
84
+ });
85
+ this.projectName = projectName;
86
+ this.minHeight = 20;
87
+ }
88
+ /**
89
+ * Override to render project name in header
90
+ */
91
+ renderHeader(title, subtitle) {
92
+ const displaySubtitle = this.projectName || subtitle;
93
+ return super.renderHeader(title, displaySubtitle);
94
+ }
95
+ /**
96
+ * Override to handle item selection.
97
+ * Returns the selected document so the command handler can show it in a fullscreen overlay.
98
+ */
99
+ onItemSelected(doc) {
100
+ return { selectedDocument: doc, cancelled: false };
101
+ }
102
+ /**
103
+ * Override to return result on close
104
+ */
105
+ handleKey(key) {
106
+ // Check for close keys first
107
+ if (this.isInterruptKey(key)) {
108
+ return this.close({ cancelled: true });
109
+ }
110
+ if (this.isCloseKey(key) && !this.state.searchMode) {
111
+ return this.close({ cancelled: true });
112
+ }
113
+ // Let parent handle everything else (including Enter → onItemSelected)
114
+ // Parent will return the result from onItemSelected, so pass it through
115
+ return super.handleKey(key);
116
+ }
117
+ }
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Document Detail Overlay V2
3
+ *
4
+ * Fullscreen markdown document viewer AND editor with vim-style navigation.
5
+ * Separate from DocsOverlayV2 (inline list) to allow proper fullscreen rendering.
6
+ *
7
+ * Features:
8
+ * - Full-screen document viewing with markdown rendering
9
+ * - Vim-style navigation (j/k, g/G, PgUp/PgDn)
10
+ * - Edit mode with raw markdown editing
11
+ * - Save to database (Ctrl+S)
12
+ * - Dirty check with save prompt on exit
13
+ */
14
+ import { BaseOverlayV2 } from '../../base/overlay-base-v2.js';
15
+ import type { RenderContext, OverlayAction, KeyEvent } from '../types.js';
16
+ import { type ProjectDocument } from '../../../db/repositories/document-repository.js';
17
+ import type { PlanStatus } from '../../../db/schema.js';
18
+ export interface DocumentDetailResult {
19
+ /** Whether to go back to the document list */
20
+ goBack: boolean;
21
+ }
22
+ interface DocumentDetailState {
23
+ contentLines: string[];
24
+ scrollOffset: number;
25
+ isEditMode: boolean;
26
+ rawLines: string[];
27
+ cursorLine: number;
28
+ cursorColumn: number;
29
+ editScrollOffset: number;
30
+ isDirty: boolean;
31
+ originalContent: string;
32
+ showSavePrompt: boolean;
33
+ saveMessage: string | null;
34
+ planStatus: PlanStatus | null;
35
+ showStatusMenu: boolean;
36
+ statusMenuIndex: number;
37
+ availableStatuses: PlanStatus[];
38
+ }
39
+ /**
40
+ * Fullscreen document viewer and editor overlay.
41
+ * Shows a single document with vim-style scrolling navigation.
42
+ * Supports edit mode for modifying raw markdown content.
43
+ */
44
+ export declare class DocumentDetailOverlayV2 extends BaseOverlayV2<DocumentDetailState, DocumentDetailResult> {
45
+ private readonly document;
46
+ readonly type: "inline";
47
+ readonly id = "document-detail-overlay-v2";
48
+ readonly usesAlternateScreen = true;
49
+ constructor(document: ProjectDocument);
50
+ /**
51
+ * Enter alternate screen buffer when overlay mounts.
52
+ * This preserves the main screen content.
53
+ */
54
+ onMount(): void;
55
+ /**
56
+ * Exit alternate screen buffer when overlay unmounts.
57
+ * This restores the main screen content.
58
+ */
59
+ onUnmount(): void;
60
+ protected renderContent(context: RenderContext): string[];
61
+ private renderViewMode;
62
+ private renderEditMode;
63
+ private renderLineWithCursor;
64
+ private ensureCursorVisible;
65
+ handleKey(key: KeyEvent): OverlayAction<DocumentDetailResult>;
66
+ private handleViewModeKey;
67
+ private handleEditModeKey;
68
+ private handleSavePromptKey;
69
+ private handleStatusMenuKey;
70
+ private changeStatus;
71
+ private moveCursorUp;
72
+ private moveCursorDown;
73
+ private moveCursorLeft;
74
+ private moveCursorRight;
75
+ private clampCursorColumn;
76
+ private getCurrentLine;
77
+ private insertText;
78
+ private handleBackspace;
79
+ private handleDelete;
80
+ private handleEnter;
81
+ private saveDocument;
82
+ private exitEditMode;
83
+ }
84
+ export {};