@compilr-dev/cli 0.5.0 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (587) hide show
  1. package/LICENSE +108 -0
  2. package/README.md +237 -69
  3. package/dist/.tsbuildinfo.app +1 -0
  4. package/dist/.tsbuildinfo.data +1 -0
  5. package/dist/.tsbuildinfo.domain +1 -0
  6. package/dist/.tsbuildinfo.foundation +1 -0
  7. package/dist/agent.d.ts +61 -4
  8. package/dist/agent.js +241 -245
  9. package/dist/anchors/index.d.ts +1 -1
  10. package/dist/anchors/index.js +1 -1
  11. package/dist/anchors/project-anchors.d.ts +2 -2
  12. package/dist/anchors/project-anchors.js +1 -1
  13. package/dist/auth/api-client.d.ts +124 -0
  14. package/dist/auth/api-client.js +261 -0
  15. package/dist/auth/index.d.ts +172 -0
  16. package/dist/auth/index.js +545 -0
  17. package/dist/auth/storage.d.ts +52 -0
  18. package/dist/auth/storage.js +118 -0
  19. package/dist/changelog/index.d.ts +16 -0
  20. package/dist/changelog/index.js +24 -0
  21. package/dist/changelog/releases.d.ts +17 -0
  22. package/dist/changelog/releases.js +63 -0
  23. package/dist/commands-v2/handlers/auth.d.ts +10 -0
  24. package/dist/commands-v2/handlers/auth.js +118 -0
  25. package/dist/commands-v2/handlers/background.d.ts +14 -0
  26. package/dist/commands-v2/handlers/background.js +276 -0
  27. package/dist/commands-v2/handlers/context.js +286 -81
  28. package/dist/commands-v2/handlers/core.d.ts +1 -0
  29. package/dist/commands-v2/handlers/core.js +133 -8
  30. package/dist/commands-v2/handlers/debug.js +18 -0
  31. package/dist/commands-v2/handlers/delegations.d.ts +8 -0
  32. package/dist/commands-v2/handlers/delegations.js +29 -0
  33. package/dist/commands-v2/handlers/files.d.ts +8 -0
  34. package/dist/commands-v2/handlers/files.js +162 -0
  35. package/dist/commands-v2/handlers/filter.d.ts +9 -0
  36. package/dist/commands-v2/handlers/filter.js +130 -0
  37. package/dist/commands-v2/handlers/games.d.ts +7 -0
  38. package/dist/commands-v2/handlers/games.js +57 -0
  39. package/dist/commands-v2/handlers/index.d.ts +13 -0
  40. package/dist/commands-v2/handlers/index.js +39 -0
  41. package/dist/commands-v2/handlers/mcp.d.ts +8 -0
  42. package/dist/commands-v2/handlers/mcp.js +39 -0
  43. package/dist/commands-v2/handlers/notifications.d.ts +9 -0
  44. package/dist/commands-v2/handlers/notifications.js +34 -0
  45. package/dist/commands-v2/handlers/project.js +295 -31
  46. package/dist/commands-v2/handlers/reset.d.ts +11 -0
  47. package/dist/commands-v2/handlers/reset.js +118 -0
  48. package/dist/commands-v2/handlers/session.d.ts +161 -0
  49. package/dist/commands-v2/handlers/session.js +805 -0
  50. package/dist/commands-v2/handlers/settings.d.ts +2 -0
  51. package/dist/commands-v2/handlers/settings.js +217 -35
  52. package/dist/commands-v2/handlers/tasks.d.ts +5 -0
  53. package/dist/commands-v2/handlers/tasks.js +36 -0
  54. package/dist/commands-v2/handlers/team.d.ts +9 -0
  55. package/dist/commands-v2/handlers/team.js +549 -0
  56. package/dist/commands-v2/handlers/terminals.d.ts +9 -0
  57. package/dist/commands-v2/handlers/terminals.js +34 -0
  58. package/dist/commands-v2/index.d.ts +3 -2
  59. package/dist/commands-v2/index.js +4 -1
  60. package/dist/commands-v2/registry.d.ts +15 -0
  61. package/dist/commands-v2/registry.js +34 -0
  62. package/dist/commands-v2/types.d.ts +81 -3
  63. package/dist/commands.js +13 -0
  64. package/dist/compilr-diff-companion.vsix +0 -0
  65. package/dist/db/index.js +98 -4
  66. package/dist/db/repositories/document-repository.d.ts +2 -0
  67. package/dist/db/repositories/document-repository.js +6 -1
  68. package/dist/db/repositories/index.d.ts +2 -0
  69. package/dist/db/repositories/index.js +1 -0
  70. package/dist/db/repositories/plan-repository.d.ts +101 -0
  71. package/dist/db/repositories/plan-repository.js +275 -0
  72. package/dist/db/repositories/project-repository.d.ts +6 -0
  73. package/dist/db/repositories/project-repository.js +41 -0
  74. package/dist/db/repositories/work-item-repository.d.ts +15 -0
  75. package/dist/db/repositories/work-item-repository.js +69 -4
  76. package/dist/db/schema.d.ts +40 -3
  77. package/dist/db/schema.js +66 -3
  78. package/dist/episodes/index.d.ts +20 -0
  79. package/dist/episodes/index.js +27 -0
  80. package/dist/episodes/recorder.d.ts +51 -0
  81. package/dist/episodes/recorder.js +195 -0
  82. package/dist/episodes/significant-work.d.ts +21 -0
  83. package/dist/episodes/significant-work.js +56 -0
  84. package/dist/episodes/store.d.ts +38 -0
  85. package/dist/episodes/store.js +199 -0
  86. package/dist/episodes/types.d.ts +35 -0
  87. package/dist/episodes/types.js +6 -0
  88. package/dist/episodes/work-at-risk.d.ts +12 -0
  89. package/dist/episodes/work-at-risk.js +38 -0
  90. package/dist/episodes/work-summary-anchor.d.ts +23 -0
  91. package/dist/episodes/work-summary-anchor.js +73 -0
  92. package/dist/games/coins.d.ts +66 -0
  93. package/dist/games/coins.js +165 -0
  94. package/dist/games/game-base.d.ts +84 -0
  95. package/dist/games/game-base.js +204 -0
  96. package/dist/games/index.d.ts +16 -0
  97. package/dist/games/index.js +49 -0
  98. package/dist/games/scores.d.ts +69 -0
  99. package/dist/games/scores.js +191 -0
  100. package/dist/games/tetris/board.d.ts +59 -0
  101. package/dist/games/tetris/board.js +170 -0
  102. package/dist/games/tetris/index.d.ts +109 -0
  103. package/dist/games/tetris/index.js +610 -0
  104. package/dist/games/tetris/pieces.d.ts +44 -0
  105. package/dist/games/tetris/pieces.js +271 -0
  106. package/dist/games/tetris/renderer.d.ts +26 -0
  107. package/dist/games/tetris/renderer.js +77 -0
  108. package/dist/guide/guide-content.d.ts +23 -0
  109. package/dist/guide/guide-content.js +196 -0
  110. package/dist/guide/index.d.ts +8 -0
  111. package/dist/guide/index.js +7 -0
  112. package/dist/guide/shared-content.d.ts +37 -0
  113. package/dist/guide/shared-content.js +1272 -0
  114. package/dist/guide/tutorial-helpers.d.ts +57 -0
  115. package/dist/guide/tutorial-helpers.js +147 -0
  116. package/dist/handlers/ask-user-handlers.d.ts +32 -0
  117. package/dist/handlers/ask-user-handlers.js +104 -0
  118. package/dist/handlers/delegation-handlers.d.ts +34 -0
  119. package/dist/handlers/delegation-handlers.js +291 -0
  120. package/dist/handlers/permission-handler.d.ts +30 -0
  121. package/dist/handlers/permission-handler.js +205 -0
  122. package/dist/index.d.ts +11 -1
  123. package/dist/index.js +448 -271
  124. package/dist/input-handlers/memory-handler.d.ts +1 -1
  125. package/dist/input-handlers/memory-handler.js +2 -1
  126. package/dist/models/index.d.ts +10 -0
  127. package/dist/models/index.js +12 -0
  128. package/dist/models/model-registry.d.ts +38 -0
  129. package/dist/models/model-registry.js +69 -0
  130. package/dist/models/model-tiers.d.ts +28 -0
  131. package/dist/models/model-tiers.js +71 -0
  132. package/dist/models/model-validation.d.ts +25 -0
  133. package/dist/models/model-validation.js +291 -0
  134. package/dist/models/ollama-models.d.ts +73 -0
  135. package/dist/models/ollama-models.js +178 -0
  136. package/dist/models/provider-types.d.ts +6 -0
  137. package/dist/models/provider-types.js +1 -0
  138. package/dist/models/providers.d.ts +35 -0
  139. package/dist/models/providers.js +58 -0
  140. package/dist/models/types.d.ts +4 -0
  141. package/dist/models/types.js +4 -0
  142. package/dist/multi-agent/activity.d.ts +21 -0
  143. package/dist/multi-agent/activity.js +34 -0
  144. package/dist/multi-agent/agent-selection.d.ts +55 -0
  145. package/dist/multi-agent/agent-selection.js +90 -0
  146. package/dist/multi-agent/artifacts.d.ts +197 -0
  147. package/dist/multi-agent/artifacts.js +379 -0
  148. package/dist/multi-agent/checkpointer.d.ts +138 -0
  149. package/dist/multi-agent/checkpointer.js +471 -0
  150. package/dist/multi-agent/collision-utils.d.ts +16 -0
  151. package/dist/multi-agent/collision-utils.js +28 -0
  152. package/dist/multi-agent/context-resolver.d.ts +97 -0
  153. package/dist/multi-agent/context-resolver.js +316 -0
  154. package/dist/multi-agent/custom-agents.d.ts +83 -0
  155. package/dist/multi-agent/custom-agents.js +227 -0
  156. package/dist/multi-agent/delegation-tracker.d.ts +157 -0
  157. package/dist/multi-agent/delegation-tracker.js +243 -0
  158. package/dist/multi-agent/file-lock-hook.d.ts +29 -0
  159. package/dist/multi-agent/file-lock-hook.js +97 -0
  160. package/dist/multi-agent/file-locks.d.ts +58 -0
  161. package/dist/multi-agent/file-locks.js +194 -0
  162. package/dist/multi-agent/index.d.ts +24 -0
  163. package/dist/multi-agent/index.js +30 -0
  164. package/dist/multi-agent/mention-parser.d.ts +64 -0
  165. package/dist/multi-agent/mention-parser.js +146 -0
  166. package/dist/multi-agent/notification-manager.d.ts +84 -0
  167. package/dist/multi-agent/notification-manager.js +224 -0
  168. package/dist/multi-agent/pending-requests.d.ts +122 -0
  169. package/dist/multi-agent/pending-requests.js +155 -0
  170. package/dist/multi-agent/session-registry.d.ts +139 -0
  171. package/dist/multi-agent/session-registry.js +514 -0
  172. package/dist/multi-agent/shared-context.d.ts +293 -0
  173. package/dist/multi-agent/shared-context.js +671 -0
  174. package/dist/multi-agent/skill-requirements.d.ts +66 -0
  175. package/dist/multi-agent/skill-requirements.js +178 -0
  176. package/dist/multi-agent/task-assignment.d.ts +69 -0
  177. package/dist/multi-agent/task-assignment.js +123 -0
  178. package/dist/multi-agent/task-suggestion.d.ts +31 -0
  179. package/dist/multi-agent/task-suggestion.js +72 -0
  180. package/dist/multi-agent/team-agent.d.ts +201 -0
  181. package/dist/multi-agent/team-agent.js +488 -0
  182. package/dist/multi-agent/team.d.ts +286 -0
  183. package/dist/multi-agent/team.js +610 -0
  184. package/dist/multi-agent/tool-config.d.ts +110 -0
  185. package/dist/multi-agent/tool-config.js +661 -0
  186. package/dist/multi-agent/types.d.ts +211 -0
  187. package/dist/multi-agent/types.js +617 -0
  188. package/dist/prompts/plan-mode-prompt.d.ts +11 -0
  189. package/dist/prompts/plan-mode-prompt.js +95 -0
  190. package/dist/repl-helpers.js +5 -2
  191. package/dist/repl-v2.d.ts +401 -2
  192. package/dist/repl-v2.js +2588 -65
  193. package/dist/session/index.d.ts +6 -0
  194. package/dist/session/index.js +6 -0
  195. package/dist/session/project-session-manager.d.ts +158 -0
  196. package/dist/session/project-session-manager.js +650 -0
  197. package/dist/settings/index.d.ts +133 -13
  198. package/dist/settings/index.js +329 -24
  199. package/dist/settings/mcp-config.d.ts +76 -0
  200. package/dist/settings/mcp-config.js +143 -0
  201. package/dist/settings/paths.d.ts +4 -0
  202. package/dist/settings/paths.js +6 -0
  203. package/dist/shared-handlers.d.ts +62 -0
  204. package/dist/shared-handlers.js +48 -0
  205. package/dist/system-prompt/builder.d.ts +5 -0
  206. package/dist/system-prompt/builder.js +4 -0
  207. package/dist/system-prompt/index.d.ts +18 -0
  208. package/dist/system-prompt/index.js +18 -0
  209. package/dist/system-prompt/modules.d.ts +5 -0
  210. package/dist/system-prompt/modules.js +4 -0
  211. package/dist/tabbed-menu.js +2 -1
  212. package/dist/templates/compilr-md-import.d.ts +16 -0
  213. package/dist/templates/compilr-md-import.js +241 -0
  214. package/dist/templates/compilr-md.js +10 -61
  215. package/dist/templates/config-json.d.ts +1 -25
  216. package/dist/templates/index.d.ts +2 -0
  217. package/dist/templates/index.js +34 -73
  218. package/dist/tool-names.d.ts +113 -0
  219. package/dist/tool-names.js +239 -0
  220. package/dist/tools/ask-user-simple.d.ts +1 -1
  221. package/dist/tools/ask-user-simple.js +2 -1
  222. package/dist/tools/ask-user.d.ts +1 -1
  223. package/dist/tools/ask-user.js +2 -1
  224. package/dist/tools/backlog.d.ts +2 -2
  225. package/dist/tools/backlog.js +1 -1
  226. package/dist/tools/db-tools.d.ts +13 -61
  227. package/dist/tools/db-tools.js +12 -13
  228. package/dist/tools/delegate-background.d.ts +27 -0
  229. package/dist/tools/delegate-background.js +115 -0
  230. package/dist/tools/delegate.d.ts +22 -0
  231. package/dist/tools/delegate.js +97 -0
  232. package/dist/tools/delegation-status.d.ts +16 -0
  233. package/dist/tools/delegation-status.js +128 -0
  234. package/dist/tools/guide-tool.d.ts +12 -0
  235. package/dist/tools/guide-tool.js +59 -0
  236. package/dist/tools/handoff.d.ts +25 -0
  237. package/dist/tools/handoff.js +99 -0
  238. package/dist/tools/meta-tools.d.ts +26 -0
  239. package/dist/tools/meta-tools.js +47 -0
  240. package/dist/tools/platform-adapter.d.ts +35 -0
  241. package/dist/tools/platform-adapter.js +404 -0
  242. package/dist/tools/project-db.d.ts +5 -73
  243. package/dist/tools/project-db.js +5 -336
  244. package/dist/tools.d.ts +67 -2
  245. package/dist/tools.js +240 -48
  246. package/dist/ui/autocomplete-controller.d.ts +42 -0
  247. package/dist/ui/autocomplete-controller.js +384 -0
  248. package/dist/ui/base/index.d.ts +1 -1
  249. package/dist/ui/base/index.js +1 -1
  250. package/dist/ui/base/overlay-base-v2.d.ts +10 -0
  251. package/dist/ui/base/overlay-base-v2.js +14 -0
  252. package/dist/ui/base/render-utils.d.ts +19 -0
  253. package/dist/ui/base/render-utils.js +25 -0
  254. package/dist/ui/base/tabbed-list-overlay-v2.d.ts +16 -1
  255. package/dist/ui/base/tabbed-list-overlay-v2.js +19 -1
  256. package/dist/ui/constants/labels.d.ts +14 -0
  257. package/dist/ui/constants/labels.js +52 -0
  258. package/dist/ui/conversation-store.d.ts +55 -0
  259. package/dist/ui/conversation-store.js +107 -0
  260. package/dist/ui/conversation.js +11 -13
  261. package/dist/ui/diff.d.ts +7 -1
  262. package/dist/ui/diff.js +85 -48
  263. package/dist/ui/ephemeral.js +3 -9
  264. package/dist/ui/file-autocomplete.d.ts +24 -0
  265. package/dist/ui/file-autocomplete.js +56 -0
  266. package/dist/ui/footer-renderer.d.ts +69 -0
  267. package/dist/ui/footer-renderer.js +431 -0
  268. package/dist/ui/footer.d.ts +74 -7
  269. package/dist/ui/footer.js +173 -16
  270. package/dist/ui/input-controller.d.ts +51 -0
  271. package/dist/ui/input-controller.js +176 -0
  272. package/dist/ui/input-prompt.d.ts +19 -0
  273. package/dist/ui/input-prompt.js +206 -14
  274. package/dist/ui/keyboard-handler.d.ts +57 -0
  275. package/dist/ui/keyboard-handler.js +557 -0
  276. package/dist/ui/live-region-facade.d.ts +42 -0
  277. package/dist/ui/live-region-facade.js +205 -0
  278. package/dist/ui/live-region.d.ts +0 -4
  279. package/dist/ui/live-region.js +6 -14
  280. package/dist/ui/mascot/renderer.d.ts +1 -1
  281. package/dist/ui/mascot/renderer.js +37 -2
  282. package/dist/ui/overlay/data/tutorial-content.d.ts +9 -0
  283. package/dist/ui/overlay/data/tutorial-content.js +9 -0
  284. package/dist/ui/overlay/data/tutorial-registry.d.ts +12 -0
  285. package/dist/ui/overlay/data/tutorial-registry.js +116 -0
  286. package/dist/ui/overlay/data/tutorial-types.d.ts +35 -0
  287. package/dist/ui/overlay/data/tutorial-types.js +6 -0
  288. package/dist/ui/overlay/data/tutorials/basics/first-conversation.d.ts +7 -0
  289. package/dist/ui/overlay/data/tutorials/basics/first-conversation.js +220 -0
  290. package/dist/ui/overlay/data/tutorials/basics/first-project.d.ts +7 -0
  291. package/dist/ui/overlay/data/tutorials/basics/first-project.js +284 -0
  292. package/dist/ui/overlay/data/tutorials/basics/navigation.d.ts +8 -0
  293. package/dist/ui/overlay/data/tutorials/basics/navigation.js +22 -0
  294. package/dist/ui/overlay/data/tutorials/basics/welcome.d.ts +7 -0
  295. package/dist/ui/overlay/data/tutorials/basics/welcome.js +174 -0
  296. package/dist/ui/overlay/data/tutorials/config/context-management.d.ts +7 -0
  297. package/dist/ui/overlay/data/tutorials/config/context-management.js +158 -0
  298. package/dist/ui/overlay/data/tutorials/config/mcp-servers.d.ts +8 -0
  299. package/dist/ui/overlay/data/tutorials/config/mcp-servers.js +155 -0
  300. package/dist/ui/overlay/data/tutorials/config/model-selection.d.ts +7 -0
  301. package/dist/ui/overlay/data/tutorials/config/model-selection.js +162 -0
  302. package/dist/ui/overlay/data/tutorials/config/permissions-safety.d.ts +7 -0
  303. package/dist/ui/overlay/data/tutorials/config/permissions-safety.js +163 -0
  304. package/dist/ui/overlay/data/tutorials/config/settings-config.d.ts +7 -0
  305. package/dist/ui/overlay/data/tutorials/config/settings-config.js +166 -0
  306. package/dist/ui/overlay/data/tutorials/planning/arch.d.ts +7 -0
  307. package/dist/ui/overlay/data/tutorials/planning/arch.js +168 -0
  308. package/dist/ui/overlay/data/tutorials/planning/backlog.d.ts +7 -0
  309. package/dist/ui/overlay/data/tutorials/planning/backlog.js +103 -0
  310. package/dist/ui/overlay/data/tutorials/planning/build.d.ts +7 -0
  311. package/dist/ui/overlay/data/tutorials/planning/build.js +173 -0
  312. package/dist/ui/overlay/data/tutorials/planning/design.d.ts +7 -0
  313. package/dist/ui/overlay/data/tutorials/planning/design.js +205 -0
  314. package/dist/ui/overlay/data/tutorials/planning/docs.d.ts +7 -0
  315. package/dist/ui/overlay/data/tutorials/planning/docs.js +143 -0
  316. package/dist/ui/overlay/data/tutorials/planning/prd.d.ts +7 -0
  317. package/dist/ui/overlay/data/tutorials/planning/prd.js +173 -0
  318. package/dist/ui/overlay/data/tutorials/planning/scaffold.d.ts +7 -0
  319. package/dist/ui/overlay/data/tutorials/planning/scaffold.js +164 -0
  320. package/dist/ui/overlay/data/tutorials/planning/sketch.d.ts +7 -0
  321. package/dist/ui/overlay/data/tutorials/planning/sketch.js +58 -0
  322. package/dist/ui/overlay/data/tutorials/projects/anchors.d.ts +7 -0
  323. package/dist/ui/overlay/data/tutorials/projects/anchors.js +248 -0
  324. package/dist/ui/overlay/data/tutorials/projects/import-project.d.ts +7 -0
  325. package/dist/ui/overlay/data/tutorials/projects/import-project.js +172 -0
  326. package/dist/ui/overlay/data/tutorials/projects/managing-projects.d.ts +8 -0
  327. package/dist/ui/overlay/data/tutorials/projects/managing-projects.js +212 -0
  328. package/dist/ui/overlay/data/tutorials/projects/new-project.d.ts +7 -0
  329. package/dist/ui/overlay/data/tutorials/projects/new-project.js +251 -0
  330. package/dist/ui/overlay/data/tutorials/projects/session-management.d.ts +7 -0
  331. package/dist/ui/overlay/data/tutorials/projects/session-management.js +169 -0
  332. package/dist/ui/overlay/data/tutorials/teams/background-execution.d.ts +7 -0
  333. package/dist/ui/overlay/data/tutorials/teams/background-execution.js +171 -0
  334. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.d.ts +8 -0
  335. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.js +147 -0
  336. package/dist/ui/overlay/data/tutorials/teams/task-assignment.d.ts +7 -0
  337. package/dist/ui/overlay/data/tutorials/teams/task-assignment.js +204 -0
  338. package/dist/ui/overlay/data/tutorials/teams/team-overview.d.ts +7 -0
  339. package/dist/ui/overlay/data/tutorials/teams/team-overview.js +165 -0
  340. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.d.ts +7 -0
  341. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.js +172 -0
  342. package/dist/ui/overlay/impl/agents-overlay-v2.js +6 -17
  343. package/dist/ui/overlay/impl/anchors-overlay-v2.js +30 -64
  344. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.d.ts +43 -0
  345. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.js +232 -0
  346. package/dist/ui/overlay/impl/artifact-overlay-v2.d.ts +40 -0
  347. package/dist/ui/overlay/impl/artifact-overlay-v2.js +115 -0
  348. package/dist/ui/overlay/impl/ask-user-overlay-v2.js +2 -5
  349. package/dist/ui/overlay/impl/background-overlay-v2.d.ts +40 -0
  350. package/dist/ui/overlay/impl/background-overlay-v2.js +147 -0
  351. package/dist/ui/overlay/impl/backlog-overlay-v2.d.ts +4 -1
  352. package/dist/ui/overlay/impl/backlog-overlay-v2.js +55 -16
  353. package/dist/ui/overlay/impl/changelog-overlay-v2.d.ts +44 -0
  354. package/dist/ui/overlay/impl/changelog-overlay-v2.js +165 -0
  355. package/dist/ui/overlay/impl/commands-overlay-v2.js +4 -6
  356. package/dist/ui/overlay/impl/config-overlay-v2.d.ts +12 -1
  357. package/dist/ui/overlay/impl/config-overlay-v2.js +164 -100
  358. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.d.ts +83 -0
  359. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.js +711 -0
  360. package/dist/ui/overlay/impl/dashboard-overlay-v2.d.ts +2 -0
  361. package/dist/ui/overlay/impl/dashboard-overlay-v2.js +26 -3
  362. package/dist/ui/overlay/impl/delegations-overlay-v2.d.ts +28 -0
  363. package/dist/ui/overlay/impl/delegations-overlay-v2.js +279 -0
  364. package/dist/ui/overlay/impl/docs-overlay-v2.js +12 -9
  365. package/dist/ui/overlay/impl/document-detail-overlay-v2.d.ts +7 -0
  366. package/dist/ui/overlay/impl/document-detail-overlay-v2.js +119 -78
  367. package/dist/ui/overlay/impl/filter-overlay-v2.d.ts +41 -0
  368. package/dist/ui/overlay/impl/filter-overlay-v2.js +110 -0
  369. package/dist/ui/overlay/impl/games-overlay-v2.d.ts +31 -0
  370. package/dist/ui/overlay/impl/games-overlay-v2.js +135 -0
  371. package/dist/ui/overlay/impl/help-overlay-v2.d.ts +26 -3
  372. package/dist/ui/overlay/impl/help-overlay-v2.js +20 -42
  373. package/dist/ui/overlay/impl/login-overlay-v2.d.ts +49 -0
  374. package/dist/ui/overlay/impl/login-overlay-v2.js +277 -0
  375. package/dist/ui/overlay/impl/mcp-overlay-v2.d.ts +63 -0
  376. package/dist/ui/overlay/impl/mcp-overlay-v2.js +907 -0
  377. package/dist/ui/overlay/impl/model-overlay-v2.d.ts +57 -13
  378. package/dist/ui/overlay/impl/model-overlay-v2.js +1086 -61
  379. package/dist/ui/overlay/impl/new-overlay-v2.d.ts +37 -6
  380. package/dist/ui/overlay/impl/new-overlay-v2.js +715 -65
  381. package/dist/ui/overlay/impl/notifications-overlay-v2.d.ts +20 -0
  382. package/dist/ui/overlay/impl/notifications-overlay-v2.js +116 -0
  383. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.d.ts +76 -0
  384. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.js +728 -0
  385. package/dist/ui/overlay/impl/pending-overlay-v2.d.ts +51 -0
  386. package/dist/ui/overlay/impl/pending-overlay-v2.js +445 -0
  387. package/dist/ui/overlay/impl/permission-overlay-v2.js +5 -5
  388. package/dist/ui/overlay/impl/permissions-overlay-v2.d.ts +85 -0
  389. package/dist/ui/overlay/impl/permissions-overlay-v2.js +820 -0
  390. package/dist/ui/overlay/impl/plan-approval-overlay-v2.d.ts +35 -0
  391. package/dist/ui/overlay/impl/plan-approval-overlay-v2.js +181 -0
  392. package/dist/ui/overlay/impl/project-edit-overlay-v2.d.ts +36 -0
  393. package/dist/ui/overlay/impl/project-edit-overlay-v2.js +195 -0
  394. package/dist/ui/overlay/impl/projects-overlay-v2.d.ts +1 -0
  395. package/dist/ui/overlay/impl/projects-overlay-v2.js +278 -44
  396. package/dist/ui/overlay/impl/reset-overlay-v2.d.ts +39 -0
  397. package/dist/ui/overlay/impl/reset-overlay-v2.js +107 -0
  398. package/dist/ui/overlay/impl/resume-overlay-v2.d.ts +60 -0
  399. package/dist/ui/overlay/impl/resume-overlay-v2.js +414 -0
  400. package/dist/ui/overlay/impl/session-mode-overlay-v2.d.ts +43 -0
  401. package/dist/ui/overlay/impl/session-mode-overlay-v2.js +124 -0
  402. package/dist/ui/overlay/impl/tasks-overlay-v2.d.ts +28 -0
  403. package/dist/ui/overlay/impl/tasks-overlay-v2.js +283 -0
  404. package/dist/ui/overlay/impl/team-overlay-v2.d.ts +86 -0
  405. package/dist/ui/overlay/impl/team-overlay-v2.js +692 -0
  406. package/dist/ui/overlay/impl/terminals-overlay-v2.d.ts +26 -0
  407. package/dist/ui/overlay/impl/terminals-overlay-v2.js +217 -0
  408. package/dist/ui/overlay/impl/tools-overlay-v2.js +3 -7
  409. package/dist/ui/overlay/impl/tutorial-overlay-v2.d.ts +30 -16
  410. package/dist/ui/overlay/impl/tutorial-overlay-v2.js +133 -956
  411. package/dist/ui/overlay/impl/workflow-overlay-v2.d.ts +1 -0
  412. package/dist/ui/overlay/impl/workflow-overlay-v2.js +10 -4
  413. package/dist/ui/overlay/index.d.ts +20 -1
  414. package/dist/ui/overlay/index.js +19 -0
  415. package/dist/ui/overlay/types.d.ts +5 -0
  416. package/dist/ui/overlay-manager.d.ts +43 -0
  417. package/dist/ui/overlay-manager.js +238 -0
  418. package/dist/ui/overlays.js +4 -16
  419. package/dist/ui/permission-overlay.js +6 -5
  420. package/dist/ui/status-bar-controller.d.ts +33 -0
  421. package/dist/ui/status-bar-controller.js +99 -0
  422. package/dist/ui/subagent-renderer.js +3 -19
  423. package/dist/ui/terminal-autocomplete-utils.d.ts +23 -0
  424. package/dist/ui/terminal-autocomplete-utils.js +83 -0
  425. package/dist/ui/terminal-line-builders.d.ts +17 -0
  426. package/dist/ui/terminal-line-builders.js +42 -0
  427. package/dist/ui/terminal-render-item.d.ts +16 -0
  428. package/dist/ui/terminal-render-item.js +267 -0
  429. package/dist/ui/terminal-renderer.d.ts +7 -8
  430. package/dist/ui/terminal-renderer.js +7 -8
  431. package/dist/ui/terminal-types.d.ts +179 -0
  432. package/dist/ui/terminal-types.js +34 -0
  433. package/dist/ui/terminal-ui.d.ts +144 -276
  434. package/dist/ui/terminal-ui.js +384 -1861
  435. package/dist/ui/todo-zone.d.ts +19 -1
  436. package/dist/ui/todo-zone.js +71 -13
  437. package/dist/ui/tool-formatters.js +696 -1
  438. package/dist/ui/turn-metrics.d.ts +56 -0
  439. package/dist/ui/turn-metrics.js +75 -0
  440. package/dist/ui/types.d.ts +28 -0
  441. package/dist/ui/types.js +1 -0
  442. package/dist/ui/vscode-diff-ipc.d.ts +102 -0
  443. package/dist/ui/vscode-diff-ipc.js +385 -0
  444. package/dist/utils/credentials.d.ts +24 -5
  445. package/dist/utils/credentials.js +123 -9
  446. package/dist/utils/format-tokens.d.ts +13 -0
  447. package/dist/utils/format-tokens.js +18 -0
  448. package/dist/utils/git-config.d.ts +26 -0
  449. package/dist/utils/git-config.js +54 -0
  450. package/dist/utils/message-utils.d.ts +61 -0
  451. package/dist/utils/message-utils.js +72 -0
  452. package/dist/utils/model-tiers.d.ts +8 -1
  453. package/dist/utils/model-tiers.js +38 -16
  454. package/dist/utils/open-browser.d.ts +5 -0
  455. package/dist/utils/open-browser.js +32 -0
  456. package/dist/utils/path-safety.js +3 -2
  457. package/dist/utils/project-detection.d.ts +58 -0
  458. package/dist/utils/project-detection.js +424 -0
  459. package/dist/utils/project-memory.js +2 -1
  460. package/dist/utils/project-status.d.ts +2 -2
  461. package/dist/utils/startup-perf.d.ts +18 -0
  462. package/dist/utils/startup-perf.js +60 -0
  463. package/dist/utils/token-tracker.d.ts +62 -0
  464. package/dist/utils/token-tracker.js +150 -0
  465. package/dist/utils/token-types.d.ts +23 -0
  466. package/dist/utils/token-types.js +18 -0
  467. package/dist/utils/types/config-types.d.ts +32 -0
  468. package/dist/utils/types/config-types.js +8 -0
  469. package/dist/utils/update-checker.d.ts +28 -0
  470. package/dist/utils/update-checker.js +106 -0
  471. package/dist/utils/version.d.ts +7 -0
  472. package/dist/utils/version.js +10 -0
  473. package/dist/utils/vscode-detect.d.ts +39 -0
  474. package/dist/utils/vscode-detect.js +137 -0
  475. package/package.json +27 -13
  476. package/dist/commands/handler-types.d.ts +0 -68
  477. package/dist/commands/handler-types.js +0 -8
  478. package/dist/commands/handlers/agent-commands.d.ts +0 -13
  479. package/dist/commands/handlers/agent-commands.js +0 -305
  480. package/dist/commands/handlers/design-commands.d.ts +0 -15
  481. package/dist/commands/handlers/design-commands.js +0 -334
  482. package/dist/commands/handlers/index.d.ts +0 -20
  483. package/dist/commands/handlers/index.js +0 -43
  484. package/dist/commands/handlers/overlay-commands.d.ts +0 -21
  485. package/dist/commands/handlers/overlay-commands.js +0 -287
  486. package/dist/commands/handlers/project-commands.d.ts +0 -11
  487. package/dist/commands/handlers/project-commands.js +0 -167
  488. package/dist/commands/handlers/simple-commands.d.ts +0 -19
  489. package/dist/commands/handlers/simple-commands.js +0 -144
  490. package/dist/commands/registry.d.ts +0 -50
  491. package/dist/commands/registry.js +0 -75
  492. package/dist/index.old.d.ts +0 -7
  493. package/dist/index.old.js +0 -1014
  494. package/dist/repl.d.ts +0 -149
  495. package/dist/repl.js +0 -1151
  496. package/dist/templates/claude-md.d.ts +0 -7
  497. package/dist/templates/claude-md.js +0 -189
  498. package/dist/test-autocomplete.d.ts +0 -7
  499. package/dist/test-autocomplete.js +0 -85
  500. package/dist/test-tabbed-menu.d.ts +0 -7
  501. package/dist/test-tabbed-menu.js +0 -25
  502. package/dist/tool-selector.d.ts +0 -71
  503. package/dist/tool-selector.js +0 -184
  504. package/dist/tools/anchor-tools.d.ts +0 -31
  505. package/dist/tools/anchor-tools.js +0 -255
  506. package/dist/tools/backlog-wrappers.d.ts +0 -54
  507. package/dist/tools/backlog-wrappers.js +0 -338
  508. package/dist/tools/document-db.d.ts +0 -43
  509. package/dist/tools/document-db.js +0 -220
  510. package/dist/tools/workitem-db.d.ts +0 -103
  511. package/dist/tools/workitem-db.js +0 -549
  512. package/dist/ui/agents-overlay-v2.d.ts +0 -43
  513. package/dist/ui/agents-overlay-v2.js +0 -809
  514. package/dist/ui/agents-overlay.d.ts +0 -12
  515. package/dist/ui/agents-overlay.js +0 -863
  516. package/dist/ui/anchors-overlay.d.ts +0 -12
  517. package/dist/ui/anchors-overlay.js +0 -775
  518. package/dist/ui/arch-type-overlay.d.ts +0 -15
  519. package/dist/ui/arch-type-overlay.js +0 -201
  520. package/dist/ui/ask-user-overlay-v2.d.ts +0 -26
  521. package/dist/ui/ask-user-overlay-v2.js +0 -555
  522. package/dist/ui/ask-user-simple-overlay-v2.d.ts +0 -25
  523. package/dist/ui/ask-user-simple-overlay-v2.js +0 -215
  524. package/dist/ui/backlog-overlay.d.ts +0 -32
  525. package/dist/ui/backlog-overlay.js +0 -652
  526. package/dist/ui/commands-overlay-v2.d.ts +0 -33
  527. package/dist/ui/commands-overlay-v2.js +0 -441
  528. package/dist/ui/commands-overlay.d.ts +0 -16
  529. package/dist/ui/commands-overlay.js +0 -439
  530. package/dist/ui/config-overlay.d.ts +0 -35
  531. package/dist/ui/config-overlay.js +0 -707
  532. package/dist/ui/docs-overlay.d.ts +0 -17
  533. package/dist/ui/docs-overlay.js +0 -303
  534. package/dist/ui/footer-v2.d.ts +0 -222
  535. package/dist/ui/footer-v2.js +0 -1349
  536. package/dist/ui/help-overlay-v2.d.ts +0 -34
  537. package/dist/ui/help-overlay-v2.js +0 -309
  538. package/dist/ui/help-overlay.d.ts +0 -16
  539. package/dist/ui/help-overlay.js +0 -316
  540. package/dist/ui/init-overlay-v2.d.ts +0 -34
  541. package/dist/ui/init-overlay-v2.js +0 -600
  542. package/dist/ui/init-overlay.d.ts +0 -34
  543. package/dist/ui/init-overlay.js +0 -604
  544. package/dist/ui/input-prompt-v2.d.ts +0 -180
  545. package/dist/ui/input-prompt-v2.js +0 -999
  546. package/dist/ui/iteration-limit-overlay-v2.d.ts +0 -21
  547. package/dist/ui/iteration-limit-overlay-v2.js +0 -114
  548. package/dist/ui/keys-overlay-v2.d.ts +0 -41
  549. package/dist/ui/keys-overlay-v2.js +0 -248
  550. package/dist/ui/mascot-overlay-v2.d.ts +0 -41
  551. package/dist/ui/mascot-overlay-v2.js +0 -138
  552. package/dist/ui/mascot-overlay.d.ts +0 -21
  553. package/dist/ui/mascot-overlay.js +0 -146
  554. package/dist/ui/model-overlay-v2.d.ts +0 -49
  555. package/dist/ui/model-overlay-v2.js +0 -118
  556. package/dist/ui/model-overlay.d.ts +0 -27
  557. package/dist/ui/model-overlay.js +0 -221
  558. package/dist/ui/model-warning-overlay.d.ts +0 -30
  559. package/dist/ui/model-warning-overlay.js +0 -169
  560. package/dist/ui/new-overlay.d.ts +0 -34
  561. package/dist/ui/new-overlay.js +0 -604
  562. package/dist/ui/overlay/impl/init-overlay-v2.d.ts +0 -77
  563. package/dist/ui/overlay/impl/init-overlay-v2.js +0 -593
  564. package/dist/ui/overlay/overlay-types.d.ts +0 -128
  565. package/dist/ui/overlay/overlay-types.js +0 -22
  566. package/dist/ui/overlays/help-overlay-v2.d.ts +0 -28
  567. package/dist/ui/overlays/help-overlay-v2.js +0 -198
  568. package/dist/ui/overlays/index.d.ts +0 -11
  569. package/dist/ui/overlays/index.js +0 -11
  570. package/dist/ui/permission-overlay-v2.d.ts +0 -36
  571. package/dist/ui/permission-overlay-v2.js +0 -380
  572. package/dist/ui/projects-overlay.d.ts +0 -19
  573. package/dist/ui/projects-overlay.js +0 -484
  574. package/dist/ui/theme-overlay-v2.d.ts +0 -42
  575. package/dist/ui/theme-overlay-v2.js +0 -135
  576. package/dist/ui/theme-overlay.d.ts +0 -24
  577. package/dist/ui/theme-overlay.js +0 -127
  578. package/dist/ui/tools-overlay-v2.d.ts +0 -47
  579. package/dist/ui/tools-overlay-v2.js +0 -218
  580. package/dist/ui/tools-overlay.d.ts +0 -34
  581. package/dist/ui/tools-overlay.js +0 -230
  582. package/dist/ui/tutorial-overlay-v2.d.ts +0 -31
  583. package/dist/ui/tutorial-overlay-v2.js +0 -1035
  584. package/dist/ui/tutorial-overlay.d.ts +0 -11
  585. package/dist/ui/tutorial-overlay.js +0 -1034
  586. package/dist/ui/workflow-overlay.d.ts +0 -22
  587. package/dist/ui/workflow-overlay.js +0 -636
@@ -12,14 +12,17 @@
12
12
  */
13
13
  import * as fs from 'fs';
14
14
  import * as path from 'path';
15
- import { BaseOverlayV2, isEscape, isTab, isShiftTab, isEnter, isSpace, isCtrlC, isNavigateUp, isNavigateDown, isBackspace, getNumberKey, isPrintable, extractPrintable, } from '../../base/index.js';
15
+ import { execSync } from 'child_process';
16
+ import { BaseOverlayV2, isEscape, isTab, isShiftTab, isEnter, isSpace, isCtrlC, isNavigateUp, isNavigateDown, isBackspace, getNumberKey, isPrintable, extractPrintable, renderProgressBar, formatTokens, truncate, } from '../../base/index.js';
16
17
  import { getCurrentTheme, } from '../../../themes/index.js';
17
- import { getSettings, setSetting, permissionModeToDisplay, displayToPermissionMode, notificationModeToDisplay, displayToNotificationMode, projectStartupModeToDisplay, displayToProjectStartupMode, } from '../../../settings/index.js';
18
+ import { getSettings, setSetting, permissionModeToDisplay, displayToPermissionMode, notificationModeToDisplay, displayToNotificationMode, projectStartupModeToDisplay, displayToProjectStartupMode, projectSessionModeToDisplay, displayToProjectSessionMode, sessionRetentionToDisplay, displayToSessionRetention, compactModeToDisplay, displayToCompactMode, } from '../../../settings/index.js';
18
19
  import { getResolvedPathConfig, setDeleteProtection, setProjectMatchRequired, setWorkspacePath, setProjectsPath, setDataPath, } from '../../../settings/paths.js';
19
20
  import { MASCOT_LABELS, } from '../../mascot/index.js';
20
21
  import { ThemeOverlayV2 } from './theme-overlay-v2.js';
21
22
  import { ModelOverlayV2 } from './model-overlay-v2.js';
22
23
  import { MascotOverlayV2 } from './mascot-overlay-v2.js';
24
+ import { getDefaultModelsForUI } from '../../../models/index.js';
25
+ import { isInVSCode, ensureExtensionInstalled } from '../../../utils/vscode-detect.js';
23
26
  // =============================================================================
24
27
  // Constants
25
28
  // =============================================================================
@@ -28,26 +31,16 @@ const TARGET_HEIGHT = 25;
28
31
  const TABS = [
29
32
  { id: 'status', label: 'Status' },
30
33
  { id: 'config', label: 'Config' },
31
- { id: 'paths', label: 'Paths' },
34
+ { id: 'paths', label: 'Environment' },
32
35
  { id: 'usage', label: 'Usage' },
33
36
  ];
34
- const MODEL_OPTIONS = [
35
- // Claude
36
- { id: 'claude-sonnet-4-20250514', name: 'Sonnet 4', description: 'Best for everyday tasks', provider: 'claude' },
37
- { id: 'claude-opus-4-20250514', name: 'Opus 4', description: 'Most capable for complex work', provider: 'claude' },
38
- { id: 'claude-3-5-haiku-20241022', name: 'Haiku 3.5', description: 'Fastest for quick answers', provider: 'claude' },
39
- // OpenAI
40
- { id: 'gpt-4o', name: 'GPT-4o', description: 'Best overall', provider: 'openai' },
41
- { id: 'gpt-4o-mini', name: 'GPT-4o Mini', description: 'Fast and affordable', provider: 'openai' },
42
- // Gemini
43
- { id: 'gemini-2.0-flash', name: 'Gemini 2.0 Flash', description: 'Fast multimodal', provider: 'gemini' },
44
- { id: 'gemini-2.5-flash', name: 'Gemini 2.5 Flash', description: 'Latest stable flash', provider: 'gemini' },
45
- { id: 'gemini-2.5-pro', name: 'Gemini 2.5 Pro', description: 'Most capable Gemini', provider: 'gemini' },
46
- // Ollama
47
- { id: 'llama3.2', name: 'Llama 3.2', description: 'Local model', provider: 'ollama' },
48
- { id: 'mistral', name: 'Mistral', description: 'Local model', provider: 'ollama' },
49
- { id: 'codellama', name: 'Code Llama', description: 'Code-focused local model', provider: 'ollama' },
50
- ];
37
+ // =============================================================================
38
+ // Model Options (from registry - single source of truth)
39
+ // =============================================================================
40
+ // Get model options from registry for display name lookup
41
+ function getModelOptions() {
42
+ return getDefaultModelsForUI();
43
+ }
51
44
  // =============================================================================
52
45
  // Helper Functions
53
46
  // =============================================================================
@@ -88,16 +81,53 @@ function findMemoryFile(cwd) {
88
81
  }
89
82
  return null;
90
83
  }
84
+ /**
85
+ * Get git config value, returns null if not set
86
+ */
87
+ function getGitConfigValue(key) {
88
+ try {
89
+ const value = execSync(`git config --global ${key}`, {
90
+ encoding: 'utf-8',
91
+ stdio: ['pipe', 'pipe', 'pipe'],
92
+ }).trim();
93
+ return value || null;
94
+ }
95
+ catch {
96
+ return null;
97
+ }
98
+ }
99
+ /**
100
+ * Set git config value
101
+ */
102
+ function setGitConfigValue(key, value) {
103
+ try {
104
+ execSync(`git config --global ${key} "${value.replace(/"/g, '\\"')}"`, {
105
+ encoding: 'utf-8',
106
+ stdio: ['pipe', 'pipe', 'pipe'],
107
+ });
108
+ return true;
109
+ }
110
+ catch {
111
+ return false;
112
+ }
113
+ }
91
114
  function getConfigItems(currentModel) {
92
115
  const currentTheme = getCurrentTheme();
93
116
  const settings = getSettings();
94
- // Find display name for current model
95
- const modelOption = MODEL_OPTIONS.find(m => m.id === currentModel);
117
+ // Find display name for current model (from registry)
118
+ const modelOptions = getModelOptions();
119
+ const modelOption = modelOptions.find(m => m.id === currentModel);
96
120
  const modelDisplay = modelOption ? modelOption.name : currentModel || 'Default';
97
121
  return [
98
122
  { id: 'autoCompact', label: 'Auto-compact', type: 'boolean', value: settings.autoCompact },
99
- { id: 'showTips', label: 'Show tips', type: 'boolean', value: settings.showTips },
100
- { id: 'reviseCode', label: 'Revise code (checkpoints)', type: 'boolean', value: settings.reviseCode },
123
+ { id: 'delegation', label: 'Auto-delegate large results', type: 'boolean', value: settings.delegation },
124
+ // VS Code diff toggle only visible when running inside VS Code
125
+ ...(isInVSCode() ? [{ id: 'vsDiffExtension', label: 'VS Code diff view', type: 'boolean', value: settings.vsDiffExtension }] : []),
126
+ { id: 'compactMode', label: 'Default compact mode', type: 'cycle', value: compactModeToDisplay(settings.compactMode), options: ['Active agent', 'All agents', 'Auto (>70%)'] },
127
+ // TODO: Implement show tips feature
128
+ // { id: 'showTips', label: 'Show tips', type: 'boolean', value: settings.showTips },
129
+ // TODO: Implement checkpoints/rewind feature (Claude Code v2.0)
130
+ // { id: 'reviseCode', label: 'Revise code (checkpoints)', type: 'boolean', value: settings.reviseCode },
101
131
  { id: 'verbose', label: 'Verbose output', type: 'boolean', value: settings.verbose },
102
132
  { id: 'progressBar', label: 'Terminal progress bar', type: 'boolean', value: settings.progressBar },
103
133
  {
@@ -105,33 +135,18 @@ function getConfigItems(currentModel) {
105
135
  label: 'Default permission mode',
106
136
  type: 'cycle',
107
137
  value: permissionModeToDisplay(settings.permissionMode),
108
- options: ['Default', 'Plan', 'Bypass prompts'],
138
+ options: ['Default', 'Plan mode', 'Accept edits', "Don't ask"],
109
139
  },
110
- { id: 'gitignore', label: 'Respect .gitignore in file picker', type: 'boolean', value: settings.gitignore },
111
140
  { id: 'theme', label: 'Theme', type: 'submenu', value: currentTheme.name },
112
141
  { id: 'model', label: 'Model', type: 'submenu', value: modelDisplay },
113
142
  {
114
143
  id: 'notifications',
115
- label: 'Notifications',
144
+ label: 'Terminal notifications',
116
145
  type: 'cycle',
117
146
  value: notificationModeToDisplay(settings.notifications),
118
- options: ['Auto', 'Enabled', 'Disabled'],
147
+ options: ['Auto', 'Terminal Bell', 'Disabled'],
119
148
  },
120
- {
121
- id: 'outputStyle',
122
- label: 'Output style',
123
- type: 'cycle',
124
- value: settings.outputStyle,
125
- options: ['default', 'compact', 'verbose'],
126
- },
127
- {
128
- id: 'editorMode',
129
- label: 'Editor mode',
130
- type: 'cycle',
131
- value: settings.editorMode,
132
- options: ['normal', 'vim', 'emacs'],
133
- },
134
- { id: 'autoInstall', label: 'Auto-install IDE extension', type: 'boolean', value: settings.autoInstall },
149
+ { id: 'checkUpdates', label: 'Check for updates on startup', type: 'boolean', value: settings.checkUpdates },
135
150
  {
136
151
  id: 'startupMode',
137
152
  label: 'Startup behavior',
@@ -146,6 +161,20 @@ function getConfigItems(currentModel) {
146
161
  value: projectStartupModeToDisplay(settings.projectStartup),
147
162
  options: ['Last opened', 'Off'],
148
163
  },
164
+ {
165
+ id: 'projectSessionMode',
166
+ label: 'Session restore mode',
167
+ type: 'cycle',
168
+ value: projectSessionModeToDisplay(settings.projectSessionMode),
169
+ options: ['Auto', 'Ask', 'Fresh'],
170
+ },
171
+ {
172
+ id: 'sessionRetentionDays',
173
+ label: 'Session history retention',
174
+ type: 'cycle',
175
+ value: sessionRetentionToDisplay(settings.sessionRetentionDays),
176
+ options: ['7 days', '14 days', '30 days', '60 days', '90 days', 'Forever'],
177
+ },
149
178
  { id: 'mascot', label: 'Mascot', type: 'submenu', value: MASCOT_LABELS[settings.mascot] },
150
179
  ];
151
180
  }
@@ -174,6 +203,9 @@ export class ConfigOverlayV2 extends BaseOverlayV2 {
174
203
  model: options.model || 'unknown',
175
204
  provider: options.provider || 'unknown',
176
205
  toolCount: options.toolCount ?? 0,
206
+ directToolCount: options.directToolCount,
207
+ metaToolCount: options.metaToolCount,
208
+ hasTeam: options.hasTeam,
177
209
  startTime: options.startTime || new Date(),
178
210
  memoryFile: findMemoryFile(options.cwd),
179
211
  },
@@ -251,8 +283,16 @@ export class ConfigOverlayV2 extends BaseOverlayV2 {
251
283
  lines.push(` Uptime: ${s.muted(uptimeStr)}`);
252
284
  lines.push('');
253
285
  lines.push(` Provider: ${s.primary(info.provider)}`);
254
- lines.push(` Model: ${s.primary(info.model)}`);
255
- lines.push(` Tools: ${s.muted(String(info.toolCount))}`);
286
+ // Show model with "(default)" label when team is active
287
+ const modelLabel = info.hasTeam ? 'Model (default agent)' : 'Model';
288
+ lines.push(` ${modelLabel}: ${s.primary(info.model)}`);
289
+ // Show tool count with breakdown if available
290
+ if (info.directToolCount !== undefined && info.metaToolCount !== undefined) {
291
+ lines.push(` Tools: ${s.muted(String(info.toolCount))} ${s.muted(`(${String(info.directToolCount)} direct + ${String(info.metaToolCount)} via use_tool)`)}`);
292
+ }
293
+ else {
294
+ lines.push(` Tools: ${s.muted(String(info.toolCount))}`);
295
+ }
256
296
  lines.push('');
257
297
  lines.push(` Cwd: ${s.muted(info.cwd)}`);
258
298
  lines.push(` Memory: ${s.muted(info.memoryFile || 'none')}`);
@@ -293,12 +333,16 @@ export class ConfigOverlayV2 extends BaseOverlayV2 {
293
333
  // Layout constants
294
334
  const labelWidth = 24;
295
335
  const valueWidth = Math.max(30, cols - labelWidth - 8);
336
+ // Get git config
337
+ const gitUserName = getGitConfigValue('user.name');
338
+ const gitUserEmail = getGitConfigValue('user.email');
296
339
  lines.push(s.primaryBold(' Path Configuration'));
297
340
  lines.push('');
298
- // Helper to render a path item
299
- const renderPathItem = (index, label, value) => {
341
+ // Helper to render a path/text item
342
+ const renderEditableItem = (index, label, value, placeholder) => {
300
343
  const isSelected = this.state.pathSelectedItem === index;
301
344
  const prefix = isSelected ? s.primary(' ❯ ') : ' ';
345
+ const displayValue = value || placeholder || 'not set';
302
346
  if (this.state.pathEditMode && isSelected) {
303
347
  // Edit mode - show input field
304
348
  const labelStyled = s.primary(label.padEnd(labelWidth));
@@ -308,15 +352,23 @@ export class ConfigOverlayV2 extends BaseOverlayV2 {
308
352
  else {
309
353
  // Normal mode - show value
310
354
  const labelStyled = isSelected ? s.primary(label.padEnd(labelWidth)) : label.padEnd(labelWidth);
311
- const truncatedValue = value.length > valueWidth ? value.slice(0, valueWidth - 3) + '...' : value;
312
- const valueStyled = isSelected ? s.primary(truncatedValue) : s.muted(truncatedValue);
355
+ const truncatedValue = truncate(displayValue, valueWidth);
356
+ const valueStyled = value
357
+ ? (isSelected ? s.primary(truncatedValue) : s.muted(truncatedValue))
358
+ : s.warning(truncatedValue);
313
359
  lines.push(`${prefix}${labelStyled}${valueStyled}`);
314
360
  }
315
361
  };
316
362
  // Path items (0-2)
317
- renderPathItem(0, 'Workspace path', pathConfig.workspacePath);
318
- renderPathItem(1, 'Projects path', pathConfig.projectsPath);
319
- renderPathItem(2, 'Data path', pathConfig.dataPath);
363
+ renderEditableItem(0, 'Workspace path', pathConfig.workspacePath);
364
+ renderEditableItem(1, 'Projects path', pathConfig.projectsPath);
365
+ renderEditableItem(2, 'Data path', pathConfig.dataPath);
366
+ lines.push('');
367
+ lines.push(s.primaryBold(' Git Configuration'));
368
+ lines.push('');
369
+ // Git config items (3-4)
370
+ renderEditableItem(3, 'Git user name', gitUserName, 'not set');
371
+ renderEditableItem(4, 'Git user email', gitUserEmail, 'not set');
320
372
  lines.push('');
321
373
  lines.push(s.primaryBold(' Safety Settings'));
322
374
  lines.push('');
@@ -329,9 +381,9 @@ export class ConfigOverlayV2 extends BaseOverlayV2 {
329
381
  lines.push(`${prefix}${labelStyled}${valueStyled}`);
330
382
  lines.push(s.muted(` ${hint}`));
331
383
  };
332
- // Toggle items (3-4)
333
- renderToggleItem(3, 'Delete protection', pathConfig.deleteProtection, 'Only allow file deletion within projects path');
334
- renderToggleItem(4, 'CWD mismatch warning', pathConfig.requireProjectMatch, 'Warn when current directory differs from active project');
384
+ // Toggle items (5-6)
385
+ renderToggleItem(5, 'Delete protection', pathConfig.deleteProtection, 'Only allow file deletion within projects path');
386
+ renderToggleItem(6, 'CWD mismatch warning', pathConfig.requireProjectMatch, 'Warn when current directory differs from active project');
335
387
  lines.push('');
336
388
  // Allowed paths (if any)
337
389
  if (pathConfig.allowedPaths.length > 0) {
@@ -347,38 +399,22 @@ export class ConfigOverlayV2 extends BaseOverlayV2 {
347
399
  const s = context.styles;
348
400
  const lines = [];
349
401
  const stats = this.state.usageStats;
350
- // Format numbers with K suffix
351
- const formatNum = (n) => {
352
- if (n >= 1000)
353
- return `${(n / 1000).toFixed(1)}k`;
354
- return String(n);
355
- };
356
402
  lines.push(s.primaryBold(' Session Tokens'));
357
- lines.push(` Input: ${s.primary(formatNum(stats.inputTokens).padStart(8))}`);
358
- lines.push(` Output: ${s.primary(formatNum(stats.outputTokens).padStart(8))}`);
359
- lines.push(` Total: ${s.primary(formatNum(stats.inputTokens + stats.outputTokens).padStart(8))}`);
403
+ lines.push(` Input: ${s.primary(formatTokens(stats.inputTokens).padStart(8))}`);
404
+ lines.push(` Output: ${s.primary(formatTokens(stats.outputTokens).padStart(8))}`);
405
+ lines.push(` Total: ${s.primary(formatTokens(stats.inputTokens + stats.outputTokens).padStart(8))}`);
360
406
  lines.push('');
361
407
  lines.push(s.primaryBold(' Context Window'));
362
408
  const contextPct = stats.contextMax > 0 ? stats.contextUsed / stats.contextMax : 0;
363
409
  const contextPctDisplay = Math.round(contextPct * 100);
364
- lines.push(` ${this.renderProgressBar(contextPct, 30, s)} ${String(contextPctDisplay)}% used`);
365
- lines.push(s.muted(` ${formatNum(Math.round(stats.contextUsed))} / ${formatNum(stats.contextMax)} tokens`));
410
+ lines.push(` ${renderProgressBar(contextPct, 30, s)} ${String(contextPctDisplay)}% used`);
411
+ lines.push(s.muted(` ${formatTokens(Math.round(stats.contextUsed))} / ${formatTokens(stats.contextMax)} tokens`));
366
412
  lines.push('');
367
413
  lines.push(s.primaryBold(' Session Activity'));
368
414
  lines.push(` Requests: ${s.primary(String(stats.requests))}`);
369
415
  lines.push(` Messages: ${s.primary(String(stats.messageCount))}`);
370
416
  return lines;
371
417
  }
372
- renderProgressBar(value, width, s) {
373
- const filled = Math.round(value * width);
374
- const empty = width - filled;
375
- let colorFn = s.success;
376
- if (value > 0.8)
377
- colorFn = s.error;
378
- else if (value > 0.6)
379
- colorFn = s.warning;
380
- return colorFn('█'.repeat(filled)) + s.muted('░'.repeat(empty));
381
- }
382
418
  renderTabFooter(context) {
383
419
  const s = context.styles;
384
420
  const lines = [];
@@ -466,7 +502,7 @@ export class ConfigOverlayV2 extends BaseOverlayV2 {
466
502
  return this.noAction();
467
503
  }
468
504
  handlePathsTabKey(data) {
469
- const pathItemCount = 5; // 3 paths + 2 toggles
505
+ const pathItemCount = 7; // 3 paths + 2 git config + 2 toggles
470
506
  // Navigation
471
507
  if (isNavigateUp(data) && this.state.pathSelectedItem > 0) {
472
508
  this.state.pathSelectedItem--;
@@ -496,12 +532,24 @@ export class ConfigOverlayV2 extends BaseOverlayV2 {
496
532
  return this.rerender();
497
533
  }
498
534
  else if (this.state.pathSelectedItem === 3) {
535
+ // Git user name - enter edit mode
536
+ this.state.pathEditMode = true;
537
+ this.state.pathEditInput = getGitConfigValue('user.name') || '';
538
+ return this.rerender();
539
+ }
540
+ else if (this.state.pathSelectedItem === 4) {
541
+ // Git user email - enter edit mode
542
+ this.state.pathEditMode = true;
543
+ this.state.pathEditInput = getGitConfigValue('user.email') || '';
544
+ return this.rerender();
545
+ }
546
+ else if (this.state.pathSelectedItem === 5) {
499
547
  // Toggle delete protection
500
548
  setDeleteProtection(!currentConfig.deleteProtection);
501
549
  this.settingsChanged = true;
502
550
  return this.rerender();
503
551
  }
504
- else if (this.state.pathSelectedItem === 4) {
552
+ else if (this.state.pathSelectedItem === 6) {
505
553
  // Toggle CWD match warning
506
554
  setProjectMatchRequired(!currentConfig.requireProjectMatch);
507
555
  this.settingsChanged = true;
@@ -518,18 +566,24 @@ export class ConfigOverlayV2 extends BaseOverlayV2 {
518
566
  return this.rerender();
519
567
  }
520
568
  if (isEnter(data)) {
521
- // Save the path
522
- const newPath = this.state.pathEditInput.trim();
523
- if (newPath) {
569
+ // Save the value
570
+ const newValue = this.state.pathEditInput.trim();
571
+ if (newValue) {
524
572
  switch (this.state.pathSelectedItem) {
525
573
  case 0:
526
- setWorkspacePath(newPath);
574
+ setWorkspacePath(newValue);
527
575
  break;
528
576
  case 1:
529
- setProjectsPath(newPath);
577
+ setProjectsPath(newValue);
530
578
  break;
531
579
  case 2:
532
- setDataPath(newPath);
580
+ setDataPath(newValue);
581
+ break;
582
+ case 3:
583
+ setGitConfigValue('user.name', newValue);
584
+ break;
585
+ case 4:
586
+ setGitConfigValue('user.email', newValue);
533
587
  break;
534
588
  }
535
589
  this.settingsChanged = true;
@@ -569,23 +623,30 @@ export class ConfigOverlayV2 extends BaseOverlayV2 {
569
623
  case 'autoCompact':
570
624
  setSetting('autoCompact', newValue);
571
625
  break;
572
- case 'showTips':
573
- setSetting('showTips', newValue);
574
- break;
575
- case 'reviseCode':
576
- setSetting('reviseCode', newValue);
577
- break;
578
626
  case 'verbose':
579
627
  setSetting('verbose', newValue);
580
628
  break;
581
629
  case 'progressBar':
582
630
  setSetting('progressBar', newValue);
583
631
  break;
584
- case 'gitignore':
585
- setSetting('gitignore', newValue);
632
+ case 'checkUpdates':
633
+ setSetting('checkUpdates', newValue);
586
634
  break;
587
- case 'autoInstall':
588
- setSetting('autoInstall', newValue);
635
+ case 'delegation':
636
+ setSetting('delegation', newValue);
637
+ break;
638
+ case 'vsDiffExtension':
639
+ setSetting('vsDiffExtension', newValue);
640
+ // On enable, ensure the extension is installed
641
+ if (newValue) {
642
+ void ensureExtensionInstalled().then(result => {
643
+ if (result.needsReload) {
644
+ process.stderr.write('\n \x1b[33m⚠ VS Code diff extension installed.\x1b[0m\n' +
645
+ ' \x1b[2mReload VS Code window (Ctrl+Shift+P → "Developer: Reload Window") to activate.\x1b[0m\n' +
646
+ ' \x1b[2mRestart the CLI after reload.\x1b[0m\n\n');
647
+ }
648
+ });
649
+ }
589
650
  break;
590
651
  }
591
652
  return null;
@@ -604,18 +665,21 @@ export class ConfigOverlayV2 extends BaseOverlayV2 {
604
665
  case 'notifications':
605
666
  setSetting('notifications', displayToNotificationMode(newValue));
606
667
  break;
607
- case 'outputStyle':
608
- setSetting('outputStyle', newValue);
609
- break;
610
- case 'editorMode':
611
- setSetting('editorMode', newValue);
612
- break;
613
668
  case 'startupMode':
614
669
  setSetting('startupMode', newValue === 'Show menu' ? 'menu' : 'repl');
615
670
  break;
616
671
  case 'projectStartup':
617
672
  setSetting('projectStartup', displayToProjectStartupMode(newValue));
618
673
  break;
674
+ case 'projectSessionMode':
675
+ setSetting('projectSessionMode', displayToProjectSessionMode(newValue));
676
+ break;
677
+ case 'sessionRetentionDays':
678
+ setSetting('sessionRetentionDays', displayToSessionRetention(newValue));
679
+ break;
680
+ case 'compactMode':
681
+ setSetting('compactMode', displayToCompactMode(newValue));
682
+ break;
619
683
  }
620
684
  return null;
621
685
  }
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Custom Agent Form Overlay V2
3
+ *
4
+ * Multi-step wizard for creating custom agents.
5
+ * Step 1: Basic Info (Agent ID, Display Name, Specialty, Personality)
6
+ * Step 2: Tool Profile (select profile or customize tool groups)
7
+ * Step 3: Skills (select which skills to enable)
8
+ * Step 4: Model Tier (select fast/balanced/powerful)
9
+ */
10
+ import { BaseOverlayV2 } from '../../base/index.js';
11
+ import type { RenderContext, OverlayAction, KeyEvent } from '../types.js';
12
+ import { type CustomAgentDefinition, type ToolConfig, type ToolProfile } from '../../../multi-agent/custom-agents.js';
13
+ import { type ModelTier } from '../../../models/index.js';
14
+ interface FormField {
15
+ id: string;
16
+ label: string;
17
+ hint: string;
18
+ required: boolean;
19
+ maxLength: number;
20
+ value: string;
21
+ error?: string;
22
+ }
23
+ type WizardStep = 'basic' | 'tools' | 'skills' | 'tier';
24
+ interface FormState {
25
+ fields: FormField[];
26
+ activeFieldIndex: number;
27
+ cursorPos: number;
28
+ currentStep: WizardStep;
29
+ selectedProfile: ToolProfile;
30
+ customGroups: Set<string>;
31
+ profileListIndex: number;
32
+ groupListIndex: number;
33
+ inGroupSelection: boolean;
34
+ enabledSkills: Set<string>;
35
+ skillListIndex: number;
36
+ selectedModelTier: ModelTier;
37
+ tierListIndex: number;
38
+ }
39
+ export interface CustomAgentFormOptions {
40
+ /** Existing custom agents (for duplicate check) */
41
+ existingCustomAgents: CustomAgentDefinition[];
42
+ /** Current team agent IDs (for duplicate check) */
43
+ teamAgentIds: string[];
44
+ }
45
+ export interface CustomAgentFormResult {
46
+ cancelled: boolean;
47
+ agent?: {
48
+ id: string;
49
+ displayName: string;
50
+ specialty: string;
51
+ personality?: string;
52
+ toolConfig: ToolConfig;
53
+ enabledSkills: string[];
54
+ modelTier: ModelTier;
55
+ };
56
+ }
57
+ export declare class CustomAgentFormOverlayV2 extends BaseOverlayV2<FormState, CustomAgentFormResult> {
58
+ readonly type: "inline";
59
+ readonly id = "custom-agent-form-overlay-v2";
60
+ private readonly existingCustomAgents;
61
+ private readonly teamAgentIds;
62
+ constructor(options: CustomAgentFormOptions);
63
+ protected renderContent(context: RenderContext): string[];
64
+ private renderBasicStep;
65
+ private renderToolsStep;
66
+ private renderGroupItem;
67
+ private renderSkillsStep;
68
+ private getAvailableTools;
69
+ handleKey(key: KeyEvent): OverlayAction<CustomAgentFormResult>;
70
+ private handleBasicStepKey;
71
+ private handleToolsStepKey;
72
+ private handleSkillsStepKey;
73
+ private renderTierStep;
74
+ private handleTierStepKey;
75
+ private nextField;
76
+ private prevField;
77
+ private validateBasicInfo;
78
+ private validateAndContinue;
79
+ private submitWithDefaults;
80
+ private submit;
81
+ getCloseSummary(result: CustomAgentFormResult): string | null;
82
+ }
83
+ export {};