@compilr-dev/cli 0.5.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 (591) hide show
  1. package/README.md +236 -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 +61 -4
  7. package/dist/agent.js +241 -245
  8. package/dist/anchors/index.d.ts +1 -1
  9. package/dist/anchors/index.js +1 -1
  10. package/dist/anchors/project-anchors.d.ts +2 -2
  11. package/dist/anchors/project-anchors.js +1 -1
  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-v2/handlers/auth.d.ts +10 -0
  23. package/dist/commands-v2/handlers/auth.js +118 -0
  24. package/dist/commands-v2/handlers/background.d.ts +14 -0
  25. package/dist/commands-v2/handlers/background.js +276 -0
  26. package/dist/commands-v2/handlers/context.js +266 -81
  27. package/dist/commands-v2/handlers/core.d.ts +1 -0
  28. package/dist/commands-v2/handlers/core.js +133 -8
  29. package/dist/commands-v2/handlers/debug.js +18 -0
  30. package/dist/commands-v2/handlers/delegations.d.ts +8 -0
  31. package/dist/commands-v2/handlers/delegations.js +29 -0
  32. package/dist/commands-v2/handlers/files.d.ts +8 -0
  33. package/dist/commands-v2/handlers/files.js +162 -0
  34. package/dist/commands-v2/handlers/filter.d.ts +9 -0
  35. package/dist/commands-v2/handlers/filter.js +130 -0
  36. package/dist/commands-v2/handlers/games.d.ts +7 -0
  37. package/dist/commands-v2/handlers/games.js +57 -0
  38. package/dist/commands-v2/handlers/index.d.ts +13 -0
  39. package/dist/commands-v2/handlers/index.js +39 -0
  40. package/dist/commands-v2/handlers/mcp.d.ts +8 -0
  41. package/dist/commands-v2/handlers/mcp.js +39 -0
  42. package/dist/commands-v2/handlers/notifications.d.ts +9 -0
  43. package/dist/commands-v2/handlers/notifications.js +34 -0
  44. package/dist/commands-v2/handlers/project.js +244 -23
  45. package/dist/commands-v2/handlers/reset.d.ts +11 -0
  46. package/dist/commands-v2/handlers/reset.js +118 -0
  47. package/dist/commands-v2/handlers/session.d.ts +161 -0
  48. package/dist/commands-v2/handlers/session.js +805 -0
  49. package/dist/commands-v2/handlers/settings.d.ts +2 -0
  50. package/dist/commands-v2/handlers/settings.js +217 -35
  51. package/dist/commands-v2/handlers/tasks.d.ts +5 -0
  52. package/dist/commands-v2/handlers/tasks.js +36 -0
  53. package/dist/commands-v2/handlers/team.d.ts +9 -0
  54. package/dist/commands-v2/handlers/team.js +549 -0
  55. package/dist/commands-v2/handlers/terminals.d.ts +9 -0
  56. package/dist/commands-v2/handlers/terminals.js +34 -0
  57. package/dist/commands-v2/index.d.ts +3 -2
  58. package/dist/commands-v2/index.js +4 -1
  59. package/dist/commands-v2/registry.d.ts +15 -0
  60. package/dist/commands-v2/registry.js +34 -0
  61. package/dist/commands-v2/types.d.ts +81 -3
  62. package/dist/commands.js +13 -0
  63. package/dist/compilr-diff-companion.vsix +0 -0
  64. package/dist/db/index.js +98 -4
  65. package/dist/db/repositories/document-repository.d.ts +2 -0
  66. package/dist/db/repositories/document-repository.js +5 -1
  67. package/dist/db/repositories/index.d.ts +2 -0
  68. package/dist/db/repositories/index.js +1 -0
  69. package/dist/db/repositories/plan-repository.d.ts +101 -0
  70. package/dist/db/repositories/plan-repository.js +275 -0
  71. package/dist/db/repositories/project-repository.d.ts +6 -0
  72. package/dist/db/repositories/project-repository.js +41 -0
  73. package/dist/db/repositories/work-item-repository.d.ts +15 -0
  74. package/dist/db/repositories/work-item-repository.js +69 -4
  75. package/dist/db/schema.d.ts +40 -3
  76. package/dist/db/schema.js +66 -3
  77. package/dist/episodes/index.d.ts +20 -0
  78. package/dist/episodes/index.js +27 -0
  79. package/dist/episodes/recorder.d.ts +51 -0
  80. package/dist/episodes/recorder.js +195 -0
  81. package/dist/episodes/significant-work.d.ts +21 -0
  82. package/dist/episodes/significant-work.js +56 -0
  83. package/dist/episodes/store.d.ts +38 -0
  84. package/dist/episodes/store.js +199 -0
  85. package/dist/episodes/types.d.ts +35 -0
  86. package/dist/episodes/types.js +6 -0
  87. package/dist/episodes/work-at-risk.d.ts +12 -0
  88. package/dist/episodes/work-at-risk.js +38 -0
  89. package/dist/episodes/work-summary-anchor.d.ts +23 -0
  90. package/dist/episodes/work-summary-anchor.js +73 -0
  91. package/dist/games/coins.d.ts +66 -0
  92. package/dist/games/coins.js +165 -0
  93. package/dist/games/game-base.d.ts +84 -0
  94. package/dist/games/game-base.js +204 -0
  95. package/dist/games/index.d.ts +16 -0
  96. package/dist/games/index.js +49 -0
  97. package/dist/games/scores.d.ts +69 -0
  98. package/dist/games/scores.js +191 -0
  99. package/dist/games/tetris/board.d.ts +59 -0
  100. package/dist/games/tetris/board.js +170 -0
  101. package/dist/games/tetris/index.d.ts +109 -0
  102. package/dist/games/tetris/index.js +610 -0
  103. package/dist/games/tetris/pieces.d.ts +44 -0
  104. package/dist/games/tetris/pieces.js +271 -0
  105. package/dist/games/tetris/renderer.d.ts +26 -0
  106. package/dist/games/tetris/renderer.js +77 -0
  107. package/dist/guide/guide-content.d.ts +23 -0
  108. package/dist/guide/guide-content.js +196 -0
  109. package/dist/guide/index.d.ts +8 -0
  110. package/dist/guide/index.js +7 -0
  111. package/dist/guide/shared-content.d.ts +37 -0
  112. package/dist/guide/shared-content.js +1272 -0
  113. package/dist/guide/tutorial-helpers.d.ts +57 -0
  114. package/dist/guide/tutorial-helpers.js +147 -0
  115. package/dist/handlers/ask-user-handlers.d.ts +32 -0
  116. package/dist/handlers/ask-user-handlers.js +104 -0
  117. package/dist/handlers/delegation-handlers.d.ts +34 -0
  118. package/dist/handlers/delegation-handlers.js +291 -0
  119. package/dist/handlers/permission-handler.d.ts +30 -0
  120. package/dist/handlers/permission-handler.js +205 -0
  121. package/dist/index.d.ts +11 -1
  122. package/dist/index.js +448 -271
  123. package/dist/input-handlers/memory-handler.d.ts +1 -1
  124. package/dist/input-handlers/memory-handler.js +2 -1
  125. package/dist/models/index.d.ts +10 -0
  126. package/dist/models/index.js +12 -0
  127. package/dist/models/model-registry.d.ts +38 -0
  128. package/dist/models/model-registry.js +69 -0
  129. package/dist/models/model-tiers.d.ts +28 -0
  130. package/dist/models/model-tiers.js +71 -0
  131. package/dist/models/model-validation.d.ts +25 -0
  132. package/dist/models/model-validation.js +291 -0
  133. package/dist/models/ollama-models.d.ts +73 -0
  134. package/dist/models/ollama-models.js +178 -0
  135. package/dist/models/provider-types.d.ts +6 -0
  136. package/dist/models/provider-types.js +1 -0
  137. package/dist/models/providers.d.ts +35 -0
  138. package/dist/models/providers.js +58 -0
  139. package/dist/models/types.d.ts +4 -0
  140. package/dist/models/types.js +4 -0
  141. package/dist/multi-agent/activity.d.ts +21 -0
  142. package/dist/multi-agent/activity.js +34 -0
  143. package/dist/multi-agent/agent-selection.d.ts +55 -0
  144. package/dist/multi-agent/agent-selection.js +90 -0
  145. package/dist/multi-agent/artifacts.d.ts +197 -0
  146. package/dist/multi-agent/artifacts.js +379 -0
  147. package/dist/multi-agent/checkpointer.d.ts +138 -0
  148. package/dist/multi-agent/checkpointer.js +471 -0
  149. package/dist/multi-agent/collision-utils.d.ts +16 -0
  150. package/dist/multi-agent/collision-utils.js +28 -0
  151. package/dist/multi-agent/context-resolver.d.ts +97 -0
  152. package/dist/multi-agent/context-resolver.js +316 -0
  153. package/dist/multi-agent/custom-agents.d.ts +83 -0
  154. package/dist/multi-agent/custom-agents.js +227 -0
  155. package/dist/multi-agent/delegation-tracker.d.ts +157 -0
  156. package/dist/multi-agent/delegation-tracker.js +243 -0
  157. package/dist/multi-agent/file-lock-hook.d.ts +29 -0
  158. package/dist/multi-agent/file-lock-hook.js +97 -0
  159. package/dist/multi-agent/file-locks.d.ts +58 -0
  160. package/dist/multi-agent/file-locks.js +194 -0
  161. package/dist/multi-agent/index.d.ts +24 -0
  162. package/dist/multi-agent/index.js +30 -0
  163. package/dist/multi-agent/mention-parser.d.ts +64 -0
  164. package/dist/multi-agent/mention-parser.js +146 -0
  165. package/dist/multi-agent/notification-manager.d.ts +84 -0
  166. package/dist/multi-agent/notification-manager.js +224 -0
  167. package/dist/multi-agent/pending-requests.d.ts +122 -0
  168. package/dist/multi-agent/pending-requests.js +155 -0
  169. package/dist/multi-agent/session-registry.d.ts +139 -0
  170. package/dist/multi-agent/session-registry.js +514 -0
  171. package/dist/multi-agent/shared-context.d.ts +293 -0
  172. package/dist/multi-agent/shared-context.js +671 -0
  173. package/dist/multi-agent/skill-requirements.d.ts +66 -0
  174. package/dist/multi-agent/skill-requirements.js +178 -0
  175. package/dist/multi-agent/task-assignment.d.ts +69 -0
  176. package/dist/multi-agent/task-assignment.js +123 -0
  177. package/dist/multi-agent/task-suggestion.d.ts +31 -0
  178. package/dist/multi-agent/task-suggestion.js +72 -0
  179. package/dist/multi-agent/team-agent.d.ts +201 -0
  180. package/dist/multi-agent/team-agent.js +488 -0
  181. package/dist/multi-agent/team.d.ts +286 -0
  182. package/dist/multi-agent/team.js +610 -0
  183. package/dist/multi-agent/tool-config.d.ts +110 -0
  184. package/dist/multi-agent/tool-config.js +661 -0
  185. package/dist/multi-agent/types.d.ts +211 -0
  186. package/dist/multi-agent/types.js +617 -0
  187. package/dist/prompts/plan-mode-prompt.d.ts +11 -0
  188. package/dist/prompts/plan-mode-prompt.js +95 -0
  189. package/dist/repl-helpers.js +3 -2
  190. package/dist/repl-v2.d.ts +401 -2
  191. package/dist/repl-v2.js +2577 -65
  192. package/dist/session/index.d.ts +6 -0
  193. package/dist/session/index.js +6 -0
  194. package/dist/session/project-session-manager.d.ts +158 -0
  195. package/dist/session/project-session-manager.js +650 -0
  196. package/dist/settings/index.d.ts +133 -13
  197. package/dist/settings/index.js +329 -24
  198. package/dist/settings/mcp-config.d.ts +76 -0
  199. package/dist/settings/mcp-config.js +143 -0
  200. package/dist/settings/paths.d.ts +4 -0
  201. package/dist/settings/paths.js +6 -0
  202. package/dist/shared-handlers.d.ts +62 -0
  203. package/dist/shared-handlers.js +48 -0
  204. package/dist/system-prompt/builder.d.ts +5 -0
  205. package/dist/system-prompt/builder.js +4 -0
  206. package/dist/system-prompt/index.d.ts +18 -0
  207. package/dist/system-prompt/index.js +18 -0
  208. package/dist/system-prompt/modules.d.ts +5 -0
  209. package/dist/system-prompt/modules.js +4 -0
  210. package/dist/tabbed-menu.js +2 -1
  211. package/dist/templates/compilr-md-import.d.ts +16 -0
  212. package/dist/templates/compilr-md-import.js +241 -0
  213. package/dist/templates/compilr-md.js +10 -61
  214. package/dist/templates/config-json.d.ts +1 -25
  215. package/dist/templates/index.d.ts +2 -0
  216. package/dist/templates/index.js +34 -73
  217. package/dist/tool-names.d.ts +108 -0
  218. package/dist/tool-names.js +227 -0
  219. package/dist/tools/anchor-tools.d.ts +4 -4
  220. package/dist/tools/anchor-tools.js +1 -1
  221. package/dist/tools/artifact-tools.d.ts +42 -0
  222. package/dist/tools/artifact-tools.js +328 -0
  223. package/dist/tools/ask-user-simple.d.ts +1 -1
  224. package/dist/tools/ask-user-simple.js +2 -1
  225. package/dist/tools/ask-user.d.ts +1 -1
  226. package/dist/tools/ask-user.js +2 -1
  227. package/dist/tools/backlog-wrappers.d.ts +5 -3
  228. package/dist/tools/backlog-wrappers.js +16 -1
  229. package/dist/tools/backlog.d.ts +2 -2
  230. package/dist/tools/backlog.js +1 -1
  231. package/dist/tools/db-tools.d.ts +8 -61
  232. package/dist/tools/db-tools.js +8 -13
  233. package/dist/tools/delegate-background.d.ts +27 -0
  234. package/dist/tools/delegate-background.js +115 -0
  235. package/dist/tools/delegate.d.ts +22 -0
  236. package/dist/tools/delegate.js +97 -0
  237. package/dist/tools/delegation-status.d.ts +16 -0
  238. package/dist/tools/delegation-status.js +128 -0
  239. package/dist/tools/document-db.d.ts +5 -5
  240. package/dist/tools/document-db.js +1 -1
  241. package/dist/tools/guide-tool.d.ts +12 -0
  242. package/dist/tools/guide-tool.js +59 -0
  243. package/dist/tools/handoff.d.ts +25 -0
  244. package/dist/tools/handoff.js +99 -0
  245. package/dist/tools/meta-tools.d.ts +26 -0
  246. package/dist/tools/meta-tools.js +47 -0
  247. package/dist/tools/plan-tools.d.ts +54 -0
  248. package/dist/tools/plan-tools.js +338 -0
  249. package/dist/tools/platform-adapter.d.ts +29 -0
  250. package/dist/tools/platform-adapter.js +394 -0
  251. package/dist/tools/project-db.d.ts +5 -73
  252. package/dist/tools/project-db.js +5 -336
  253. package/dist/tools/recall-work-tool.d.ts +18 -0
  254. package/dist/tools/recall-work-tool.js +82 -0
  255. package/dist/tools/workitem-db.d.ts +43 -11
  256. package/dist/tools/workitem-db.js +186 -5
  257. package/dist/tools.d.ts +67 -2
  258. package/dist/tools.js +237 -47
  259. package/dist/ui/autocomplete-controller.d.ts +42 -0
  260. package/dist/ui/autocomplete-controller.js +384 -0
  261. package/dist/ui/base/index.d.ts +1 -1
  262. package/dist/ui/base/index.js +1 -1
  263. package/dist/ui/base/overlay-base-v2.d.ts +10 -0
  264. package/dist/ui/base/overlay-base-v2.js +14 -0
  265. package/dist/ui/base/render-utils.d.ts +19 -0
  266. package/dist/ui/base/render-utils.js +25 -0
  267. package/dist/ui/base/tabbed-list-overlay-v2.d.ts +16 -1
  268. package/dist/ui/base/tabbed-list-overlay-v2.js +19 -1
  269. package/dist/ui/constants/labels.d.ts +14 -0
  270. package/dist/ui/constants/labels.js +51 -0
  271. package/dist/ui/conversation-store.d.ts +55 -0
  272. package/dist/ui/conversation-store.js +107 -0
  273. package/dist/ui/conversation.js +11 -13
  274. package/dist/ui/diff.d.ts +7 -1
  275. package/dist/ui/diff.js +85 -48
  276. package/dist/ui/ephemeral.js +3 -9
  277. package/dist/ui/file-autocomplete.d.ts +24 -0
  278. package/dist/ui/file-autocomplete.js +56 -0
  279. package/dist/ui/footer-renderer.d.ts +69 -0
  280. package/dist/ui/footer-renderer.js +431 -0
  281. package/dist/ui/footer.d.ts +74 -7
  282. package/dist/ui/footer.js +173 -16
  283. package/dist/ui/input-controller.d.ts +51 -0
  284. package/dist/ui/input-controller.js +176 -0
  285. package/dist/ui/input-prompt.d.ts +19 -0
  286. package/dist/ui/input-prompt.js +206 -14
  287. package/dist/ui/keyboard-handler.d.ts +57 -0
  288. package/dist/ui/keyboard-handler.js +557 -0
  289. package/dist/ui/live-region-facade.d.ts +42 -0
  290. package/dist/ui/live-region-facade.js +205 -0
  291. package/dist/ui/live-region.d.ts +0 -4
  292. package/dist/ui/live-region.js +6 -14
  293. package/dist/ui/mascot/renderer.d.ts +1 -1
  294. package/dist/ui/mascot/renderer.js +37 -2
  295. package/dist/ui/overlay/data/tutorial-content.d.ts +9 -0
  296. package/dist/ui/overlay/data/tutorial-content.js +9 -0
  297. package/dist/ui/overlay/data/tutorial-registry.d.ts +12 -0
  298. package/dist/ui/overlay/data/tutorial-registry.js +116 -0
  299. package/dist/ui/overlay/data/tutorial-types.d.ts +35 -0
  300. package/dist/ui/overlay/data/tutorial-types.js +6 -0
  301. package/dist/ui/overlay/data/tutorials/basics/first-conversation.d.ts +7 -0
  302. package/dist/ui/overlay/data/tutorials/basics/first-conversation.js +220 -0
  303. package/dist/ui/overlay/data/tutorials/basics/first-project.d.ts +7 -0
  304. package/dist/ui/overlay/data/tutorials/basics/first-project.js +284 -0
  305. package/dist/ui/overlay/data/tutorials/basics/navigation.d.ts +8 -0
  306. package/dist/ui/overlay/data/tutorials/basics/navigation.js +22 -0
  307. package/dist/ui/overlay/data/tutorials/basics/welcome.d.ts +7 -0
  308. package/dist/ui/overlay/data/tutorials/basics/welcome.js +174 -0
  309. package/dist/ui/overlay/data/tutorials/config/context-management.d.ts +7 -0
  310. package/dist/ui/overlay/data/tutorials/config/context-management.js +158 -0
  311. package/dist/ui/overlay/data/tutorials/config/mcp-servers.d.ts +8 -0
  312. package/dist/ui/overlay/data/tutorials/config/mcp-servers.js +155 -0
  313. package/dist/ui/overlay/data/tutorials/config/model-selection.d.ts +7 -0
  314. package/dist/ui/overlay/data/tutorials/config/model-selection.js +162 -0
  315. package/dist/ui/overlay/data/tutorials/config/permissions-safety.d.ts +7 -0
  316. package/dist/ui/overlay/data/tutorials/config/permissions-safety.js +163 -0
  317. package/dist/ui/overlay/data/tutorials/config/settings-config.d.ts +7 -0
  318. package/dist/ui/overlay/data/tutorials/config/settings-config.js +166 -0
  319. package/dist/ui/overlay/data/tutorials/planning/arch.d.ts +7 -0
  320. package/dist/ui/overlay/data/tutorials/planning/arch.js +168 -0
  321. package/dist/ui/overlay/data/tutorials/planning/backlog.d.ts +7 -0
  322. package/dist/ui/overlay/data/tutorials/planning/backlog.js +103 -0
  323. package/dist/ui/overlay/data/tutorials/planning/build.d.ts +7 -0
  324. package/dist/ui/overlay/data/tutorials/planning/build.js +173 -0
  325. package/dist/ui/overlay/data/tutorials/planning/design.d.ts +7 -0
  326. package/dist/ui/overlay/data/tutorials/planning/design.js +205 -0
  327. package/dist/ui/overlay/data/tutorials/planning/docs.d.ts +7 -0
  328. package/dist/ui/overlay/data/tutorials/planning/docs.js +143 -0
  329. package/dist/ui/overlay/data/tutorials/planning/prd.d.ts +7 -0
  330. package/dist/ui/overlay/data/tutorials/planning/prd.js +173 -0
  331. package/dist/ui/overlay/data/tutorials/planning/scaffold.d.ts +7 -0
  332. package/dist/ui/overlay/data/tutorials/planning/scaffold.js +164 -0
  333. package/dist/ui/overlay/data/tutorials/planning/sketch.d.ts +7 -0
  334. package/dist/ui/overlay/data/tutorials/planning/sketch.js +58 -0
  335. package/dist/ui/overlay/data/tutorials/projects/anchors.d.ts +7 -0
  336. package/dist/ui/overlay/data/tutorials/projects/anchors.js +248 -0
  337. package/dist/ui/overlay/data/tutorials/projects/import-project.d.ts +7 -0
  338. package/dist/ui/overlay/data/tutorials/projects/import-project.js +172 -0
  339. package/dist/ui/overlay/data/tutorials/projects/managing-projects.d.ts +8 -0
  340. package/dist/ui/overlay/data/tutorials/projects/managing-projects.js +212 -0
  341. package/dist/ui/overlay/data/tutorials/projects/new-project.d.ts +7 -0
  342. package/dist/ui/overlay/data/tutorials/projects/new-project.js +251 -0
  343. package/dist/ui/overlay/data/tutorials/projects/session-management.d.ts +7 -0
  344. package/dist/ui/overlay/data/tutorials/projects/session-management.js +169 -0
  345. package/dist/ui/overlay/data/tutorials/teams/background-execution.d.ts +7 -0
  346. package/dist/ui/overlay/data/tutorials/teams/background-execution.js +171 -0
  347. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.d.ts +8 -0
  348. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.js +147 -0
  349. package/dist/ui/overlay/data/tutorials/teams/task-assignment.d.ts +7 -0
  350. package/dist/ui/overlay/data/tutorials/teams/task-assignment.js +204 -0
  351. package/dist/ui/overlay/data/tutorials/teams/team-overview.d.ts +7 -0
  352. package/dist/ui/overlay/data/tutorials/teams/team-overview.js +165 -0
  353. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.d.ts +7 -0
  354. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.js +172 -0
  355. package/dist/ui/overlay/impl/agents-overlay-v2.js +6 -17
  356. package/dist/ui/overlay/impl/anchors-overlay-v2.js +30 -64
  357. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.d.ts +43 -0
  358. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.js +232 -0
  359. package/dist/ui/overlay/impl/artifact-overlay-v2.d.ts +40 -0
  360. package/dist/ui/overlay/impl/artifact-overlay-v2.js +115 -0
  361. package/dist/ui/overlay/impl/ask-user-overlay-v2.js +2 -5
  362. package/dist/ui/overlay/impl/background-overlay-v2.d.ts +40 -0
  363. package/dist/ui/overlay/impl/background-overlay-v2.js +147 -0
  364. package/dist/ui/overlay/impl/backlog-overlay-v2.d.ts +4 -1
  365. package/dist/ui/overlay/impl/backlog-overlay-v2.js +55 -16
  366. package/dist/ui/overlay/impl/changelog-overlay-v2.d.ts +44 -0
  367. package/dist/ui/overlay/impl/changelog-overlay-v2.js +165 -0
  368. package/dist/ui/overlay/impl/commands-overlay-v2.js +4 -6
  369. package/dist/ui/overlay/impl/config-overlay-v2.d.ts +12 -1
  370. package/dist/ui/overlay/impl/config-overlay-v2.js +164 -100
  371. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.d.ts +83 -0
  372. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.js +711 -0
  373. package/dist/ui/overlay/impl/dashboard-overlay-v2.d.ts +2 -0
  374. package/dist/ui/overlay/impl/dashboard-overlay-v2.js +26 -3
  375. package/dist/ui/overlay/impl/delegations-overlay-v2.d.ts +28 -0
  376. package/dist/ui/overlay/impl/delegations-overlay-v2.js +279 -0
  377. package/dist/ui/overlay/impl/docs-overlay-v2.js +12 -9
  378. package/dist/ui/overlay/impl/document-detail-overlay-v2.d.ts +7 -0
  379. package/dist/ui/overlay/impl/document-detail-overlay-v2.js +119 -78
  380. package/dist/ui/overlay/impl/filter-overlay-v2.d.ts +41 -0
  381. package/dist/ui/overlay/impl/filter-overlay-v2.js +110 -0
  382. package/dist/ui/overlay/impl/games-overlay-v2.d.ts +31 -0
  383. package/dist/ui/overlay/impl/games-overlay-v2.js +135 -0
  384. package/dist/ui/overlay/impl/help-overlay-v2.d.ts +26 -3
  385. package/dist/ui/overlay/impl/help-overlay-v2.js +20 -42
  386. package/dist/ui/overlay/impl/login-overlay-v2.d.ts +49 -0
  387. package/dist/ui/overlay/impl/login-overlay-v2.js +277 -0
  388. package/dist/ui/overlay/impl/mcp-overlay-v2.d.ts +63 -0
  389. package/dist/ui/overlay/impl/mcp-overlay-v2.js +907 -0
  390. package/dist/ui/overlay/impl/model-overlay-v2.d.ts +57 -13
  391. package/dist/ui/overlay/impl/model-overlay-v2.js +1086 -61
  392. package/dist/ui/overlay/impl/new-overlay-v2.d.ts +37 -6
  393. package/dist/ui/overlay/impl/new-overlay-v2.js +715 -65
  394. package/dist/ui/overlay/impl/notifications-overlay-v2.d.ts +20 -0
  395. package/dist/ui/overlay/impl/notifications-overlay-v2.js +116 -0
  396. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.d.ts +76 -0
  397. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.js +728 -0
  398. package/dist/ui/overlay/impl/pending-overlay-v2.d.ts +51 -0
  399. package/dist/ui/overlay/impl/pending-overlay-v2.js +445 -0
  400. package/dist/ui/overlay/impl/permission-overlay-v2.js +5 -5
  401. package/dist/ui/overlay/impl/permissions-overlay-v2.d.ts +85 -0
  402. package/dist/ui/overlay/impl/permissions-overlay-v2.js +820 -0
  403. package/dist/ui/overlay/impl/plan-approval-overlay-v2.d.ts +35 -0
  404. package/dist/ui/overlay/impl/plan-approval-overlay-v2.js +181 -0
  405. package/dist/ui/overlay/impl/project-edit-overlay-v2.d.ts +36 -0
  406. package/dist/ui/overlay/impl/project-edit-overlay-v2.js +195 -0
  407. package/dist/ui/overlay/impl/projects-overlay-v2.d.ts +1 -0
  408. package/dist/ui/overlay/impl/projects-overlay-v2.js +278 -44
  409. package/dist/ui/overlay/impl/reset-overlay-v2.d.ts +39 -0
  410. package/dist/ui/overlay/impl/reset-overlay-v2.js +107 -0
  411. package/dist/ui/overlay/impl/resume-overlay-v2.d.ts +60 -0
  412. package/dist/ui/overlay/impl/resume-overlay-v2.js +414 -0
  413. package/dist/ui/overlay/impl/session-mode-overlay-v2.d.ts +43 -0
  414. package/dist/ui/overlay/impl/session-mode-overlay-v2.js +124 -0
  415. package/dist/ui/overlay/impl/tasks-overlay-v2.d.ts +28 -0
  416. package/dist/ui/overlay/impl/tasks-overlay-v2.js +283 -0
  417. package/dist/ui/overlay/impl/team-overlay-v2.d.ts +86 -0
  418. package/dist/ui/overlay/impl/team-overlay-v2.js +692 -0
  419. package/dist/ui/overlay/impl/terminals-overlay-v2.d.ts +26 -0
  420. package/dist/ui/overlay/impl/terminals-overlay-v2.js +217 -0
  421. package/dist/ui/overlay/impl/tools-overlay-v2.js +3 -7
  422. package/dist/ui/overlay/impl/tutorial-overlay-v2.d.ts +30 -16
  423. package/dist/ui/overlay/impl/tutorial-overlay-v2.js +133 -956
  424. package/dist/ui/overlay/impl/workflow-overlay-v2.js +5 -1
  425. package/dist/ui/overlay/index.d.ts +20 -1
  426. package/dist/ui/overlay/index.js +19 -0
  427. package/dist/ui/overlay/types.d.ts +5 -0
  428. package/dist/ui/overlay-manager.d.ts +43 -0
  429. package/dist/ui/overlay-manager.js +238 -0
  430. package/dist/ui/overlays.js +4 -16
  431. package/dist/ui/permission-overlay.js +6 -5
  432. package/dist/ui/status-bar-controller.d.ts +33 -0
  433. package/dist/ui/status-bar-controller.js +99 -0
  434. package/dist/ui/subagent-renderer.js +3 -19
  435. package/dist/ui/terminal-autocomplete-utils.d.ts +23 -0
  436. package/dist/ui/terminal-autocomplete-utils.js +83 -0
  437. package/dist/ui/terminal-line-builders.d.ts +17 -0
  438. package/dist/ui/terminal-line-builders.js +42 -0
  439. package/dist/ui/terminal-render-item.d.ts +16 -0
  440. package/dist/ui/terminal-render-item.js +267 -0
  441. package/dist/ui/terminal-renderer.d.ts +7 -8
  442. package/dist/ui/terminal-renderer.js +7 -8
  443. package/dist/ui/terminal-types.d.ts +179 -0
  444. package/dist/ui/terminal-types.js +34 -0
  445. package/dist/ui/terminal-ui.d.ts +144 -276
  446. package/dist/ui/terminal-ui.js +384 -1861
  447. package/dist/ui/todo-zone.d.ts +19 -1
  448. package/dist/ui/todo-zone.js +71 -13
  449. package/dist/ui/tool-formatters.js +512 -1
  450. package/dist/ui/turn-metrics.d.ts +56 -0
  451. package/dist/ui/turn-metrics.js +75 -0
  452. package/dist/ui/types.d.ts +28 -0
  453. package/dist/ui/types.js +1 -0
  454. package/dist/ui/vscode-diff-ipc.d.ts +102 -0
  455. package/dist/ui/vscode-diff-ipc.js +385 -0
  456. package/dist/utils/credentials.d.ts +24 -5
  457. package/dist/utils/credentials.js +123 -9
  458. package/dist/utils/format-tokens.d.ts +13 -0
  459. package/dist/utils/format-tokens.js +18 -0
  460. package/dist/utils/git-config.d.ts +26 -0
  461. package/dist/utils/git-config.js +54 -0
  462. package/dist/utils/message-utils.d.ts +61 -0
  463. package/dist/utils/message-utils.js +72 -0
  464. package/dist/utils/model-tiers.d.ts +8 -1
  465. package/dist/utils/model-tiers.js +38 -16
  466. package/dist/utils/open-browser.d.ts +5 -0
  467. package/dist/utils/open-browser.js +32 -0
  468. package/dist/utils/path-safety.js +3 -2
  469. package/dist/utils/project-detection.d.ts +58 -0
  470. package/dist/utils/project-detection.js +424 -0
  471. package/dist/utils/project-memory.js +2 -1
  472. package/dist/utils/project-status.d.ts +2 -2
  473. package/dist/utils/startup-perf.d.ts +18 -0
  474. package/dist/utils/startup-perf.js +60 -0
  475. package/dist/utils/token-tracker.d.ts +62 -0
  476. package/dist/utils/token-tracker.js +150 -0
  477. package/dist/utils/token-types.d.ts +23 -0
  478. package/dist/utils/token-types.js +18 -0
  479. package/dist/utils/types/config-types.d.ts +32 -0
  480. package/dist/utils/types/config-types.js +8 -0
  481. package/dist/utils/update-checker.d.ts +28 -0
  482. package/dist/utils/update-checker.js +106 -0
  483. package/dist/utils/version.d.ts +7 -0
  484. package/dist/utils/version.js +10 -0
  485. package/dist/utils/vscode-detect.d.ts +39 -0
  486. package/dist/utils/vscode-detect.js +137 -0
  487. package/package.json +25 -12
  488. package/dist/commands/handler-types.d.ts +0 -68
  489. package/dist/commands/handler-types.js +0 -8
  490. package/dist/commands/handlers/agent-commands.d.ts +0 -13
  491. package/dist/commands/handlers/agent-commands.js +0 -305
  492. package/dist/commands/handlers/design-commands.d.ts +0 -15
  493. package/dist/commands/handlers/design-commands.js +0 -334
  494. package/dist/commands/handlers/index.d.ts +0 -20
  495. package/dist/commands/handlers/index.js +0 -43
  496. package/dist/commands/handlers/overlay-commands.d.ts +0 -21
  497. package/dist/commands/handlers/overlay-commands.js +0 -287
  498. package/dist/commands/handlers/project-commands.d.ts +0 -11
  499. package/dist/commands/handlers/project-commands.js +0 -167
  500. package/dist/commands/handlers/simple-commands.d.ts +0 -19
  501. package/dist/commands/handlers/simple-commands.js +0 -144
  502. package/dist/commands/registry.d.ts +0 -50
  503. package/dist/commands/registry.js +0 -75
  504. package/dist/index.old.d.ts +0 -7
  505. package/dist/index.old.js +0 -1014
  506. package/dist/repl.d.ts +0 -149
  507. package/dist/repl.js +0 -1151
  508. package/dist/templates/claude-md.d.ts +0 -7
  509. package/dist/templates/claude-md.js +0 -189
  510. package/dist/test-autocomplete.d.ts +0 -7
  511. package/dist/test-autocomplete.js +0 -85
  512. package/dist/test-tabbed-menu.d.ts +0 -7
  513. package/dist/test-tabbed-menu.js +0 -25
  514. package/dist/tool-selector.d.ts +0 -71
  515. package/dist/tool-selector.js +0 -184
  516. package/dist/ui/agents-overlay-v2.d.ts +0 -43
  517. package/dist/ui/agents-overlay-v2.js +0 -809
  518. package/dist/ui/agents-overlay.d.ts +0 -12
  519. package/dist/ui/agents-overlay.js +0 -863
  520. package/dist/ui/anchors-overlay.d.ts +0 -12
  521. package/dist/ui/anchors-overlay.js +0 -775
  522. package/dist/ui/arch-type-overlay.d.ts +0 -15
  523. package/dist/ui/arch-type-overlay.js +0 -201
  524. package/dist/ui/ask-user-overlay-v2.d.ts +0 -26
  525. package/dist/ui/ask-user-overlay-v2.js +0 -555
  526. package/dist/ui/ask-user-simple-overlay-v2.d.ts +0 -25
  527. package/dist/ui/ask-user-simple-overlay-v2.js +0 -215
  528. package/dist/ui/backlog-overlay.d.ts +0 -32
  529. package/dist/ui/backlog-overlay.js +0 -652
  530. package/dist/ui/commands-overlay-v2.d.ts +0 -33
  531. package/dist/ui/commands-overlay-v2.js +0 -441
  532. package/dist/ui/commands-overlay.d.ts +0 -16
  533. package/dist/ui/commands-overlay.js +0 -439
  534. package/dist/ui/config-overlay.d.ts +0 -35
  535. package/dist/ui/config-overlay.js +0 -707
  536. package/dist/ui/docs-overlay.d.ts +0 -17
  537. package/dist/ui/docs-overlay.js +0 -303
  538. package/dist/ui/footer-v2.d.ts +0 -222
  539. package/dist/ui/footer-v2.js +0 -1349
  540. package/dist/ui/help-overlay-v2.d.ts +0 -34
  541. package/dist/ui/help-overlay-v2.js +0 -309
  542. package/dist/ui/help-overlay.d.ts +0 -16
  543. package/dist/ui/help-overlay.js +0 -316
  544. package/dist/ui/init-overlay-v2.d.ts +0 -34
  545. package/dist/ui/init-overlay-v2.js +0 -600
  546. package/dist/ui/init-overlay.d.ts +0 -34
  547. package/dist/ui/init-overlay.js +0 -604
  548. package/dist/ui/input-prompt-v2.d.ts +0 -180
  549. package/dist/ui/input-prompt-v2.js +0 -999
  550. package/dist/ui/iteration-limit-overlay-v2.d.ts +0 -21
  551. package/dist/ui/iteration-limit-overlay-v2.js +0 -114
  552. package/dist/ui/keys-overlay-v2.d.ts +0 -41
  553. package/dist/ui/keys-overlay-v2.js +0 -248
  554. package/dist/ui/mascot-overlay-v2.d.ts +0 -41
  555. package/dist/ui/mascot-overlay-v2.js +0 -138
  556. package/dist/ui/mascot-overlay.d.ts +0 -21
  557. package/dist/ui/mascot-overlay.js +0 -146
  558. package/dist/ui/model-overlay-v2.d.ts +0 -49
  559. package/dist/ui/model-overlay-v2.js +0 -118
  560. package/dist/ui/model-overlay.d.ts +0 -27
  561. package/dist/ui/model-overlay.js +0 -221
  562. package/dist/ui/model-warning-overlay.d.ts +0 -30
  563. package/dist/ui/model-warning-overlay.js +0 -169
  564. package/dist/ui/new-overlay.d.ts +0 -34
  565. package/dist/ui/new-overlay.js +0 -604
  566. package/dist/ui/overlay/impl/init-overlay-v2.d.ts +0 -77
  567. package/dist/ui/overlay/impl/init-overlay-v2.js +0 -593
  568. package/dist/ui/overlay/overlay-types.d.ts +0 -128
  569. package/dist/ui/overlay/overlay-types.js +0 -22
  570. package/dist/ui/overlays/help-overlay-v2.d.ts +0 -28
  571. package/dist/ui/overlays/help-overlay-v2.js +0 -198
  572. package/dist/ui/overlays/index.d.ts +0 -11
  573. package/dist/ui/overlays/index.js +0 -11
  574. package/dist/ui/permission-overlay-v2.d.ts +0 -36
  575. package/dist/ui/permission-overlay-v2.js +0 -380
  576. package/dist/ui/projects-overlay.d.ts +0 -19
  577. package/dist/ui/projects-overlay.js +0 -484
  578. package/dist/ui/theme-overlay-v2.d.ts +0 -42
  579. package/dist/ui/theme-overlay-v2.js +0 -135
  580. package/dist/ui/theme-overlay.d.ts +0 -24
  581. package/dist/ui/theme-overlay.js +0 -127
  582. package/dist/ui/tools-overlay-v2.d.ts +0 -47
  583. package/dist/ui/tools-overlay-v2.js +0 -218
  584. package/dist/ui/tools-overlay.d.ts +0 -34
  585. package/dist/ui/tools-overlay.js +0 -230
  586. package/dist/ui/tutorial-overlay-v2.d.ts +0 -31
  587. package/dist/ui/tutorial-overlay-v2.js +0 -1035
  588. package/dist/ui/tutorial-overlay.d.ts +0 -11
  589. package/dist/ui/tutorial-overlay.js +0 -1034
  590. package/dist/ui/workflow-overlay.d.ts +0 -22
  591. package/dist/ui/workflow-overlay.js +0 -636
@@ -14,7 +14,7 @@
14
14
  */
15
15
  import chalk from 'chalk';
16
16
  import * as terminal from '../../terminal.js';
17
- import { TabbedListOverlayV2, BaseScreen, stay, popScreen, closeOverlay, isEscape, isCtrlC, isEnter, isSpace, isNavigateUp, isNavigateDown, isLeftArrow, isRightArrow, isVimLeft, isVimRight, isBackspace, extractPrintable, renderBorder, wrapText, } from '../../base/index.js';
17
+ import { TabbedListOverlayV2, BaseScreen, stay, popScreen, closeOverlay, isEscape, isCtrlC, isEnter, isSpace, isNavigateUp, isNavigateDown, isLeftArrow, isRightArrow, isVimLeft, isVimRight, isBackspace, extractPrintable, renderBorder, wrapText, truncate, } from '../../base/index.js';
18
18
  import { workItemRepository } from '../../../db/repositories/work-item-repository.js';
19
19
  import { getActiveProject } from '../../../tools/project-db.js';
20
20
  // =============================================================================
@@ -83,6 +83,7 @@ function workItemToBacklogItem(item) {
83
83
  title: item.title,
84
84
  description: item.description ?? '',
85
85
  commit: item.commitHash ?? undefined,
86
+ owner: item.owner ?? undefined,
86
87
  };
87
88
  }
88
89
  // =============================================================================
@@ -118,6 +119,12 @@ function updateItemType(dbId, type) {
118
119
  function updateItemPriority(dbId, priority) {
119
120
  workItemRepository.update(dbId, { priority });
120
121
  }
122
+ /**
123
+ * Update an item's owner in the database
124
+ */
125
+ function updateItemOwner(dbId, owner) {
126
+ workItemRepository.update(dbId, { owner });
127
+ }
121
128
  /**
122
129
  * Create a new item in the database
123
130
  */
@@ -146,19 +153,22 @@ function getStatusLabel(status) {
146
153
  // Detail Screen (In-Place Editing)
147
154
  // =============================================================================
148
155
  /**
149
- * Screen for editing item type, status, and priority.
156
+ * Screen for editing item type, status, priority, and owner.
150
157
  * Renders in-place over the list.
151
158
  */
152
159
  class DetailScreen extends BaseScreen {
153
160
  item;
154
161
  editState;
155
162
  styles;
156
- selectedField = 0; // 0=type, 1=status, 2=priority
157
- constructor(item, editState, styles) {
163
+ selectedField = 0; // 0=type, 1=status, 2=priority, 3=owner
164
+ ownerOptions; // null = unassigned, then team agents
165
+ constructor(item, editState, styles, teamAgentIds = []) {
158
166
  super();
159
167
  this.item = item;
160
168
  this.editState = editState;
161
169
  this.styles = styles;
170
+ // Owner options: unassigned (null) + team agents
171
+ this.ownerOptions = [null, ...teamAgentIds];
162
172
  }
163
173
  render() {
164
174
  const s = this.styles;
@@ -183,6 +193,11 @@ class DetailScreen extends BaseScreen {
183
193
  const priPrefix = this.selectedField === 2 ? s.primary('❯ Priority: ') : s.muted(' Priority: ');
184
194
  const priValue = this.selectedField === 2 ? s.primary(PRIORITY_LABELS[this.item.priority]) : PRIORITY_LABELS[this.item.priority];
185
195
  lines.push(` ${priPrefix}${priValue}`);
196
+ // Owner field
197
+ const ownerDisplay = this.item.owner ? `@${this.item.owner}` : 'unassigned';
198
+ const ownerPrefix = this.selectedField === 3 ? s.primary('❯ Owner: ') : s.muted(' Owner: ');
199
+ const ownerValue = this.selectedField === 3 ? s.primary(ownerDisplay) : ownerDisplay;
200
+ lines.push(` ${ownerPrefix}${ownerValue}`);
186
201
  lines.push('');
187
202
  // Description
188
203
  lines.push(` ${s.muted('Description:')}`);
@@ -210,12 +225,12 @@ class DetailScreen extends BaseScreen {
210
225
  if (isEscape(data)) {
211
226
  return popScreen();
212
227
  }
213
- // Up/Down or k/j - navigate fields
228
+ // Up/Down or k/j - navigate fields (0=type, 1=status, 2=priority, 3=owner)
214
229
  if (isNavigateUp(data) && this.selectedField > 0) {
215
230
  this.selectedField = (this.selectedField - 1);
216
231
  return stay();
217
232
  }
218
- if (isNavigateDown(data) && this.selectedField < 2) {
233
+ if (isNavigateDown(data) && this.selectedField < 3) {
219
234
  this.selectedField = (this.selectedField + 1);
220
235
  return stay();
221
236
  }
@@ -240,7 +255,7 @@ class DetailScreen extends BaseScreen {
240
255
  updateItemStatus(this.item.dbId, newStatus);
241
256
  this.item.status = newStatus;
242
257
  }
243
- else {
258
+ else if (this.selectedField === 2) {
244
259
  // Priority
245
260
  const currentIdx = PRIORITY_OPTIONS.indexOf(this.item.priority);
246
261
  const newIdx = (currentIdx + direction + PRIORITY_OPTIONS.length) % PRIORITY_OPTIONS.length;
@@ -248,6 +263,16 @@ class DetailScreen extends BaseScreen {
248
263
  updateItemPriority(this.item.dbId, newPriority);
249
264
  this.item.priority = newPriority;
250
265
  }
266
+ else {
267
+ // Owner - cycle through ownerOptions (null = unassigned, then team agents)
268
+ const currentOwner = this.item.owner ?? null;
269
+ const currentIdx = this.ownerOptions.indexOf(currentOwner);
270
+ const safeIdx = currentIdx === -1 ? 0 : currentIdx;
271
+ const newIdx = (safeIdx + direction + this.ownerOptions.length) % this.ownerOptions.length;
272
+ const newOwner = this.ownerOptions[newIdx];
273
+ updateItemOwner(this.item.dbId, newOwner);
274
+ this.item.owner = newOwner ?? undefined;
275
+ }
251
276
  this.editState.modified = true;
252
277
  this.editState.reloadItems();
253
278
  return stay();
@@ -507,12 +532,16 @@ export class BacklogOverlayV2 extends TabbedListOverlayV2 {
507
532
  type = 'inline';
508
533
  id = 'backlog-overlay-v2';
509
534
  editState;
535
+ teamAgentIds;
510
536
  /**
511
537
  * @param projectId - Optional project ID to view backlog for.
512
538
  * If not provided, uses the active project.
513
539
  * Pass this when opening from workflow overlay for a specific project.
540
+ * @param teamAgentIds - List of agent IDs in the team for owner selection.
514
541
  */
515
- constructor(projectId) {
542
+ constructor(projectId, teamAgentIds = []) {
543
+ // Filter out 'default' from team agents for owner selection
544
+ const validOwners = teamAgentIds.filter(id => id !== 'default');
516
545
  // Use provided projectId, or fall back to active project
517
546
  const activeProject = getActiveProject();
518
547
  const resolvedProjectId = projectId ?? activeProject?.id ?? null;
@@ -531,16 +560,21 @@ export class BacklogOverlayV2 extends TabbedListOverlayV2 {
531
560
  }
532
561
  return item.type === tabId;
533
562
  },
534
- getSearchText: (item) => `${item.id} ${item.title} ${item.description}`,
563
+ getSearchText: (item) => `${item.id} ${item.title} ${item.description} ${item.owner ?? ''}`,
535
564
  renderItem: (item, isSelected, styles) => {
536
565
  const cols = terminal.getTerminalWidth();
537
566
  const prefix = isSelected ? styles.primary('❯ ') : ' ';
567
+ // Fixed column widths - owner as 3rd column for visibility
538
568
  const idW = 10;
539
569
  const typeW = 10;
570
+ const ownerW = 12; // "unassigned" = 10 chars + padding
540
571
  const statusW = 4;
541
- const priW = 8;
542
- const titleW = Math.max(20, cols - idW - typeW - statusW - priW - 10);
543
- const row = `${item.id.padEnd(idW)}${item.type.padEnd(typeW)}${item.status.padEnd(statusW)}${item.priority.padEnd(priW)}${item.title.slice(0, titleW - 2)}`;
572
+ const priW = 9;
573
+ const titleW = Math.max(20, cols - idW - typeW - ownerW - statusW - priW - 6);
574
+ const ownerDisplay = (item.owner ?? 'unassigned').padEnd(ownerW);
575
+ const titleDisplay = item.title.slice(0, titleW);
576
+ // Order: id, type, owner, status, priority, title
577
+ const row = `${item.id.padEnd(idW)}${item.type.padEnd(typeW)}${ownerDisplay}${item.status.padEnd(statusW)}${item.priority.padEnd(priW)}${titleDisplay}`;
544
578
  if (isSelected) {
545
579
  return `${prefix}${styles.primary(row)}`;
546
580
  }
@@ -555,10 +589,13 @@ export class BacklogOverlayV2 extends TabbedListOverlayV2 {
555
589
  const cols = terminal.getTerminalWidth();
556
590
  const descPrefix = ' Desc: ';
557
591
  const maxDescLen = cols - descPrefix.length - 2;
558
- const truncatedDesc = item.description.length > maxDescLen
559
- ? item.description.slice(0, maxDescLen - 3) + '...'
560
- : item.description;
592
+ // Replace newlines with spaces to prevent height changes
593
+ const normalizedDesc = item.description.replace(/\n+/g, ' ').replace(/\s+/g, ' ').trim();
594
+ const truncatedDesc = truncate(normalizedDesc, maxDescLen);
561
595
  const lines = [styles.muted(descPrefix) + truncatedDesc];
596
+ if (item.owner) {
597
+ lines.push(styles.muted(' Owner: ') + `@${item.owner}`);
598
+ }
562
599
  if (item.commit) {
563
600
  lines.push(styles.muted(' Commit: ') + item.commit);
564
601
  }
@@ -592,9 +629,11 @@ export class BacklogOverlayV2 extends TabbedListOverlayV2 {
592
629
  }
593
630
  },
594
631
  };
632
+ // Store team agent IDs for owner selection (excluding 'default')
633
+ this.teamAgentIds = validOwners;
595
634
  }
596
635
  createDetailScreen(item) {
597
- return new DetailScreen(item, this.editState, this.getStyles());
636
+ return new DetailScreen(item, this.editState, this.getStyles(), this.teamAgentIds);
598
637
  }
599
638
  /**
600
639
  * Override handleKey to add custom behavior (Space toggle, 'a' add).
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Changelog Overlay V2
3
+ *
4
+ * Browsable release notes overlay.
5
+ * Extends TabbedListOverlayV2 for consistent UI with other overlays.
6
+ *
7
+ * Features:
8
+ * - Single tab (all releases)
9
+ * - Searchable release list
10
+ * - Detail view with categorized changes (added/changed/fixed)
11
+ */
12
+ import { TabbedListOverlayV2, BaseScreen } from '../../base/index.js';
13
+ import { type Release } from '../../../changelog/releases.js';
14
+ export interface ChangelogOverlayV2Result {
15
+ viewed: boolean;
16
+ }
17
+ /**
18
+ * Release list item with tab association for filtering.
19
+ */
20
+ interface ReleaseListItem extends Release {
21
+ tabId: string;
22
+ }
23
+ /**
24
+ * Changelog overlay with release list and categorized detail views.
25
+ * Extends TabbedListOverlayV2 for consistent look with other overlays.
26
+ */
27
+ export declare class ChangelogOverlayV2 extends TabbedListOverlayV2<ReleaseListItem, ChangelogOverlayV2Result> {
28
+ readonly type: "inline";
29
+ readonly id = "changelog-overlay-v2";
30
+ constructor();
31
+ /**
32
+ * Build items on first render.
33
+ */
34
+ private buildItemsIfNeeded;
35
+ /**
36
+ * Override render to build items on first call.
37
+ */
38
+ render(context: import('../index.js').RenderContext): {
39
+ lines: string[];
40
+ minHeight?: number;
41
+ };
42
+ protected createDetailScreen(item: ReleaseListItem): BaseScreen | null;
43
+ }
44
+ export {};
@@ -0,0 +1,165 @@
1
+ /**
2
+ * Changelog Overlay V2
3
+ *
4
+ * Browsable release notes overlay.
5
+ * Extends TabbedListOverlayV2 for consistent UI with other overlays.
6
+ *
7
+ * Features:
8
+ * - Single tab (all releases)
9
+ * - Searchable release list
10
+ * - Detail view with categorized changes (added/changed/fixed)
11
+ */
12
+ import { TabbedListOverlayV2, BaseScreen, stay, popScreen, closeOverlay, isEscape, isCtrlC, isQuit, renderBorder, } from '../../base/index.js';
13
+ import { RELEASES } from '../../../changelog/releases.js';
14
+ // =============================================================================
15
+ // Constants
16
+ // =============================================================================
17
+ const PAGE_SIZE = 8;
18
+ // =============================================================================
19
+ // Detail Screen (Categorized Changes)
20
+ // =============================================================================
21
+ /**
22
+ * Shows categorized changes for a single release.
23
+ */
24
+ class ViewingScreen extends BaseScreen {
25
+ release;
26
+ styles;
27
+ getWidth;
28
+ constructor(release, styles, getWidth) {
29
+ super();
30
+ this.release = release;
31
+ this.styles = styles;
32
+ this.getWidth = getWidth;
33
+ }
34
+ getMinHeight() {
35
+ return 20;
36
+ }
37
+ render() {
38
+ const s = this.styles;
39
+ const cols = this.getWidth();
40
+ const border = renderBorder(cols, s);
41
+ const lines = [];
42
+ // Header
43
+ const titleText = `v${this.release.version} — ${this.release.date}`;
44
+ const titleStyled = s.primaryBold(titleText);
45
+ lines.push(border);
46
+ lines.push(` ${titleStyled}`);
47
+ lines.push('');
48
+ // Group changes by category
49
+ const added = this.release.changes.filter((c) => c.category === 'added');
50
+ const changed = this.release.changes.filter((c) => c.category === 'changed');
51
+ const fixed = this.release.changes.filter((c) => c.category === 'fixed');
52
+ if (added.length > 0) {
53
+ lines.push(s.secondary(' Added:'));
54
+ for (const change of added) {
55
+ lines.push(` ${s.muted('+')} ${change.text}`);
56
+ }
57
+ lines.push('');
58
+ }
59
+ if (changed.length > 0) {
60
+ lines.push(s.secondary(' Changed:'));
61
+ for (const change of changed) {
62
+ lines.push(` ${s.muted('~')} ${change.text}`);
63
+ }
64
+ lines.push('');
65
+ }
66
+ if (fixed.length > 0) {
67
+ lines.push(s.secondary(' Fixed:'));
68
+ for (const change of fixed) {
69
+ lines.push(` ${s.muted('*')} ${change.text}`);
70
+ }
71
+ lines.push('');
72
+ }
73
+ // Pad to consistent height
74
+ while (lines.length < 16) {
75
+ lines.push('');
76
+ }
77
+ // Navigation footer
78
+ lines.push(border);
79
+ lines.push(s.muted(' q/Esc back'));
80
+ return lines;
81
+ }
82
+ handleKey(data) {
83
+ // Ctrl+C closes overlay completely
84
+ if (isCtrlC(data)) {
85
+ return closeOverlay({ viewed: true });
86
+ }
87
+ // Back to release list
88
+ if (isEscape(data) || isQuit(data)) {
89
+ return popScreen();
90
+ }
91
+ return stay(false);
92
+ }
93
+ }
94
+ // =============================================================================
95
+ // Changelog Overlay V2 Class
96
+ // =============================================================================
97
+ /**
98
+ * Changelog overlay with release list and categorized detail views.
99
+ * Extends TabbedListOverlayV2 for consistent look with other overlays.
100
+ */
101
+ export class ChangelogOverlayV2 extends TabbedListOverlayV2 {
102
+ type = 'inline';
103
+ id = 'changelog-overlay-v2';
104
+ constructor() {
105
+ const tabs = [
106
+ { id: 'all', label: 'All' },
107
+ ];
108
+ super({
109
+ title: 'Changelog',
110
+ tabs,
111
+ items: [], // Will be populated on first render
112
+ pageSize: PAGE_SIZE,
113
+ filterByTab: () => true,
114
+ getSearchText: (item) => `${item.version} ${item.date} ${item.highlights.join(' ')}`,
115
+ renderItem: (item, isSelected, styles) => {
116
+ const prefix = isSelected ? styles.primary(' ► ') : ' ';
117
+ // Pad raw text BEFORE applying styles to ensure consistent column widths
118
+ const versionPadded = `v${item.version}`.padEnd(10);
119
+ const datePadded = item.date.padEnd(14);
120
+ const summary = item.highlights.slice(0, 2).join(', ');
121
+ // Apply styles after padding
122
+ const version = isSelected ? styles.primary(versionPadded) : versionPadded;
123
+ const date = styles.muted(datePadded);
124
+ const desc = styles.muted(summary);
125
+ return `${prefix}${version} ${date} ${desc}`;
126
+ },
127
+ footerHints: (searchMode) => {
128
+ if (searchMode) {
129
+ return 'Type to filter · ↑↓/jk Navigate · Enter View · Esc Exit search';
130
+ }
131
+ return '↑↓/jk · / Search · Enter View · q/Esc Close';
132
+ },
133
+ emptyMessage: 'No releases available.',
134
+ noResultsMessage: 'No releases match the search.',
135
+ showCount: false,
136
+ });
137
+ this.minHeight = 18;
138
+ }
139
+ /**
140
+ * Build items on first render.
141
+ */
142
+ buildItemsIfNeeded() {
143
+ if (this.state.items.length > 0)
144
+ return;
145
+ const items = RELEASES.map((release) => ({
146
+ ...release,
147
+ tabId: 'all',
148
+ }));
149
+ this.state.items = items;
150
+ this.state.filteredItems = [...items];
151
+ }
152
+ /**
153
+ * Override render to build items on first call.
154
+ */
155
+ render(context) {
156
+ this.styles = context.styles;
157
+ this.termWidth = context.width;
158
+ this.buildItemsIfNeeded();
159
+ return super.render(context);
160
+ }
161
+ createDetailScreen(item) {
162
+ const styles = this.getStyles();
163
+ return new ViewingScreen(item, styles, () => this.termWidth);
164
+ }
165
+ }
@@ -13,7 +13,7 @@
13
13
  import chalk from 'chalk';
14
14
  import * as terminal from '../../terminal.js';
15
15
  import { getCustomCommandRegistry, } from '../../../commands/index.js';
16
- import { TabbedListOverlayV2, BaseScreen, stay, popScreen, closeOverlay, isEscape, isEnter, isCtrlC, isNavigateUp, isNavigateDown, isBackspace, renderBorder, wrapText, } from '../../base/index.js';
16
+ import { TabbedListOverlayV2, BaseScreen, stay, popScreen, closeOverlay, isEscape, isEnter, isCtrlC, isNavigateUp, isNavigateDown, isBackspace, renderBorder, truncate, wrapText, } from '../../base/index.js';
17
17
  import { InputFeature } from '../../features/index.js';
18
18
  // =============================================================================
19
19
  // Constants
@@ -193,13 +193,11 @@ class WizardScreen extends BaseScreen {
193
193
  lines.push(` Location: ${s.primary(locationPath)}${this.state.name}.md`);
194
194
  lines.push('');
195
195
  lines.push(chalk.bold(' Description:'));
196
- const descPreview = this.state.description.slice(0, 60) +
197
- (this.state.description.length > 60 ? '...' : '');
196
+ const descPreview = truncate(this.state.description, 60);
198
197
  lines.push(s.muted(` ${descPreview}`));
199
198
  lines.push('');
200
199
  lines.push(chalk.bold(' Prompt template:'));
201
- const promptPreview = this.state.prompt.slice(0, 60) +
202
- (this.state.prompt.length > 60 ? '...' : '');
200
+ const promptPreview = truncate(this.state.prompt, 60);
203
201
  lines.push(s.muted(` ${promptPreview}`));
204
202
  lines.push('');
205
203
  lines.push(this.state.selectedOption === 0
@@ -416,7 +414,7 @@ export class CommandsOverlayV2 extends TabbedListOverlayV2 {
416
414
  const name = `/${cmd.name}`;
417
415
  const nameStyled = isSelected ? styles.primary(name.padEnd(25)) : name.padEnd(25);
418
416
  const maxDesc = Math.max(20, cols - 45);
419
- const desc = cmd.description.slice(0, maxDesc) + (cmd.description.length > maxDesc ? '...' : '');
417
+ const desc = truncate(cmd.description, maxDesc);
420
418
  const descStyled = styles.muted(desc);
421
419
  const location = styles.muted(` (${cmd.location})`);
422
420
  return prefix + nameStyled + descStyled + location;
@@ -28,6 +28,12 @@ interface StatusInfo {
28
28
  provider: string;
29
29
  memoryFile: string | null;
30
30
  toolCount: number;
31
+ /** Number of direct (always-available) tools */
32
+ directToolCount?: number;
33
+ /** Number of meta-registry tools (accessed via use_tool) */
34
+ metaToolCount?: number;
35
+ /** Whether a multi-agent team is active */
36
+ hasTeam?: boolean;
31
37
  startTime: Date;
32
38
  }
33
39
  interface UsageStats {
@@ -56,6 +62,12 @@ export interface ConfigOverlayV2Options {
56
62
  model?: string;
57
63
  provider?: string;
58
64
  toolCount?: number;
65
+ /** Number of direct (always-available) tools */
66
+ directToolCount?: number;
67
+ /** Number of meta-registry tools (accessed via use_tool) */
68
+ metaToolCount?: number;
69
+ /** Whether a multi-agent team is active */
70
+ hasTeam?: boolean;
59
71
  startTime?: Date;
60
72
  inputTokens?: number;
61
73
  outputTokens?: number;
@@ -80,7 +92,6 @@ export declare class ConfigOverlayV2 extends BaseOverlayV2<ConfigState, ConfigOv
80
92
  private renderConfigTab;
81
93
  private renderPathsTab;
82
94
  private renderUsageTab;
83
- private renderProgressBar;
84
95
  private renderTabFooter;
85
96
  handleKey(key: KeyEvent): OverlayAction<ConfigOverlayV2Result>;
86
97
  private handleConfigTabKey;