@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
@@ -1,21 +0,0 @@
1
- /**
2
- * Iteration Limit Overlay (Refactored)
3
- *
4
- * Modal overlay shown when the agent reaches its iteration limit.
5
- * Uses InlineOverlay base class for consistent lifecycle management.
6
- */
7
- export type IterationLimitResult = {
8
- continue: true;
9
- additionalIterations: number;
10
- } | {
11
- continue: false;
12
- };
13
- export interface IterationLimitOverlayOptions {
14
- iteration: number;
15
- maxIterations: number;
16
- toolCallCount: number;
17
- }
18
- /**
19
- * Show the iteration limit overlay
20
- */
21
- export declare function showIterationLimitOverlay(options: IterationLimitOverlayOptions): Promise<IterationLimitResult>;
@@ -1,114 +0,0 @@
1
- /**
2
- * Iteration Limit Overlay (Refactored)
3
- *
4
- * Modal overlay shown when the agent reaches its iteration limit.
5
- * Uses InlineOverlay base class for consistent lifecycle management.
6
- */
7
- import chalk from 'chalk';
8
- import { getStyles } from '../themes/index.js';
9
- import { InlineOverlay } from './base/inline-overlay.js';
10
- // =============================================================================
11
- // Constants
12
- // =============================================================================
13
- const OPTIONS = [
14
- { label: 'Yes, continue (+10 iterations)', key: '1', result: { continue: true, additionalIterations: 10 } },
15
- { label: 'Yes, continue (+20 iterations)', key: '2', result: { continue: true, additionalIterations: 20 } },
16
- { label: 'No, stop here', key: 'n', result: { continue: false } },
17
- ];
18
- // =============================================================================
19
- // Overlay Implementation
20
- // =============================================================================
21
- class IterationLimitOverlayImpl extends InlineOverlay {
22
- options;
23
- constructor(options) {
24
- super();
25
- this.options = options;
26
- }
27
- getInitialState() {
28
- return {
29
- selectedIndex: 0, // Default to "Yes, continue (+10)"
30
- };
31
- }
32
- render() {
33
- const s = getStyles();
34
- const lines = [];
35
- const cols = this.getTerminalWidth();
36
- const border = s.muted('─'.repeat(Math.max(1, cols - 1)));
37
- // Header
38
- lines.push(border);
39
- lines.push(' ' + s.warning('⚠') + ' ' + chalk.bold('Iteration Limit Reached'));
40
- lines.push('');
41
- // Stats
42
- lines.push(' Iterations: ' + s.primary(String(this.options.iteration)) + ' / ' + s.muted(String(this.options.maxIterations)));
43
- lines.push(' Tool calls: ' + s.primary(String(this.options.toolCallCount)));
44
- lines.push('');
45
- lines.push(' ' + s.muted('The agent has reached its iteration limit.'));
46
- lines.push(' ' + s.muted('Would you like to continue?'));
47
- lines.push('');
48
- // Options
49
- for (let i = 0; i < OPTIONS.length; i++) {
50
- const isCursor = this.state.selectedIndex === i;
51
- const prefix = isCursor ? ' ❯ ' : ' ';
52
- const key = `[${OPTIONS[i].key}] `;
53
- if (isCursor) {
54
- lines.push(s.primary(prefix + key + OPTIONS[i].label));
55
- }
56
- else {
57
- lines.push(s.muted(prefix + key + OPTIONS[i].label));
58
- }
59
- }
60
- // Footer
61
- lines.push('');
62
- lines.push(s.muted(' ↑↓ Navigate · Enter Select · 1/2/n Quick select'));
63
- // Bottom border
64
- lines.push(border);
65
- return lines;
66
- }
67
- handleKey(data) {
68
- // Ctrl+C or Escape = stop
69
- if (this.isCtrlCKey(data) || this.isEscapeKey(data)) {
70
- return { type: 'close', result: { continue: false } };
71
- }
72
- // Quick keys
73
- const key = data.toString();
74
- if (key === '1') {
75
- return { type: 'close', result: { continue: true, additionalIterations: 10 } };
76
- }
77
- if (key === '2') {
78
- return { type: 'close', result: { continue: true, additionalIterations: 20 } };
79
- }
80
- if (key.toLowerCase() === 'n') {
81
- return { type: 'close', result: { continue: false } };
82
- }
83
- // Arrow navigation
84
- if (this.isUpArrowKey(data)) {
85
- this.state.selectedIndex = Math.max(0, this.state.selectedIndex - 1);
86
- return { type: 'continue' };
87
- }
88
- if (this.isDownArrowKey(data)) {
89
- this.state.selectedIndex = Math.min(OPTIONS.length - 1, this.state.selectedIndex + 1);
90
- return { type: 'continue' };
91
- }
92
- if (this.isEnterKey(data)) {
93
- return { type: 'close', result: OPTIONS[this.state.selectedIndex].result };
94
- }
95
- return { type: 'continue' };
96
- }
97
- getCleanupSummary(result) {
98
- const s = getStyles();
99
- if (result.continue) {
100
- return s.muted('Iteration limit: ') + s.success(`Continuing (+${String(result.additionalIterations)})`);
101
- }
102
- return s.muted('Iteration limit: ') + s.error('Stopped');
103
- }
104
- }
105
- // =============================================================================
106
- // Main Export
107
- // =============================================================================
108
- /**
109
- * Show the iteration limit overlay
110
- */
111
- export async function showIterationLimitOverlay(options) {
112
- const overlay = new IterationLimitOverlayImpl(options);
113
- return overlay.show();
114
- }
@@ -1,41 +0,0 @@
1
- /**
2
- * Keys Overlay V2
3
- *
4
- * API key management overlay using the new Overlay interface.
5
- * Shows status of all providers and allows setting/deleting keys.
6
- *
7
- * Features:
8
- * - List all providers with key status
9
- * - Set new API keys
10
- * - Delete stored keys
11
- * - Works with TerminalUI's overlay management
12
- */
13
- import { BaseOverlayV2 } from './base/index.js';
14
- import { getAllProviderStatuses } from '../utils/credentials.js';
15
- import type { RenderContext, OverlayAction, KeyEvent } from './overlay/index.js';
16
- export interface KeysOverlayV2Result {
17
- /** Whether any keys were changed */
18
- changed: boolean;
19
- }
20
- interface KeysState {
21
- selectedIndex: number;
22
- changed: boolean;
23
- providers: ReturnType<typeof getAllProviderStatuses>;
24
- }
25
- /**
26
- * Keys overlay using the new Overlay interface.
27
- * Manages API keys for LLM providers.
28
- */
29
- export declare class KeysOverlayV2 extends BaseOverlayV2<KeysState, KeysOverlayV2Result> {
30
- readonly type: "inline";
31
- readonly id = "keys-overlay-v2";
32
- private readonly screenStack;
33
- constructor();
34
- protected renderContent(_context: RenderContext): string[];
35
- render(context: RenderContext): {
36
- lines: string[];
37
- minHeight?: number;
38
- };
39
- handleKey(key: KeyEvent): OverlayAction<KeysOverlayV2Result>;
40
- }
41
- export {};
@@ -1,248 +0,0 @@
1
- /**
2
- * Keys Overlay V2
3
- *
4
- * API key management overlay using the new Overlay interface.
5
- * Shows status of all providers and allows setting/deleting keys.
6
- *
7
- * Features:
8
- * - List all providers with key status
9
- * - Set new API keys
10
- * - Delete stored keys
11
- * - Works with TerminalUI's overlay management
12
- */
13
- import * as terminal from './terminal.js';
14
- import { BaseOverlayV2, BaseScreen, ScreenStack, stay, pushScreen, popScreen, closeOverlay, isEscape, isEnter, isCtrlC, isClose, isNavigateUp, isNavigateDown, isD, renderBorder, } from './base/index.js';
15
- import { InputFeature } from './features/index.js';
16
- import { getAllProviderStatuses, setApiKey, deleteApiKey, } from '../utils/credentials.js';
17
- // =============================================================================
18
- // Screens
19
- // =============================================================================
20
- /**
21
- * List screen - shows all providers with their key status
22
- */
23
- class ListScreen extends BaseScreen {
24
- state;
25
- getStyles;
26
- getWidth;
27
- constructor(state, getStyles, getWidth) {
28
- super();
29
- this.state = state;
30
- this.getStyles = getStyles;
31
- this.getWidth = getWidth;
32
- }
33
- render() {
34
- const s = this.getStyles();
35
- const cols = this.getWidth();
36
- const border = renderBorder(cols, s);
37
- const lines = [];
38
- // Header
39
- lines.push(border);
40
- lines.push(` ${s.primaryBold('API Keys')}`);
41
- lines.push('');
42
- // Provider list
43
- for (let i = 0; i < this.state.providers.length; i++) {
44
- const p = this.state.providers[i];
45
- const isCursor = this.state.selectedIndex === i;
46
- const prefix = isCursor ? s.primary(' > ') : ' ';
47
- // Status indicator
48
- let status;
49
- if (p.provider === 'ollama') {
50
- status = s.secondary('Local (no key needed)');
51
- }
52
- else if (p.hasKey) {
53
- const source = p.fromEnv ? s.muted(' (env)') : '';
54
- status = s.success(`● ${p.masked ?? '***'}`) + source;
55
- }
56
- else {
57
- status = s.warning('○ Not set');
58
- }
59
- // Provider name
60
- const name = isCursor ? s.primary(p.name.padEnd(18)) : s.muted(p.name.padEnd(18));
61
- lines.push(`${prefix}${name} ${status}`);
62
- }
63
- // Footer
64
- lines.push('');
65
- lines.push(border);
66
- lines.push(` ${s.muted('up/down/jk Navigate . Enter Edit . d Delete . q/Esc Close')}`);
67
- lines.push(border);
68
- return lines;
69
- }
70
- handleKey(data) {
71
- // Close keys
72
- if (isCtrlC(data) || isClose(data)) {
73
- return closeOverlay({ changed: this.state.changed });
74
- }
75
- // Navigation up
76
- if (isNavigateUp(data)) {
77
- if (this.state.selectedIndex > 0) {
78
- this.state.selectedIndex--;
79
- return stay();
80
- }
81
- return stay(false);
82
- }
83
- // Navigation down
84
- if (isNavigateDown(data)) {
85
- if (this.state.selectedIndex < this.state.providers.length - 1) {
86
- this.state.selectedIndex++;
87
- return stay();
88
- }
89
- return stay(false);
90
- }
91
- // Enter - edit selected provider
92
- if (isEnter(data)) {
93
- const selected = this.state.providers[this.state.selectedIndex];
94
- if (selected.provider !== 'ollama') {
95
- return pushScreen(new InputScreen(this.state, this.getStyles, this.getWidth, selected.provider));
96
- }
97
- return stay(false);
98
- }
99
- // Delete key
100
- if (isD(data)) {
101
- const selected = this.state.providers[this.state.selectedIndex];
102
- if (selected.provider !== 'ollama' && selected.hasKey && !selected.fromEnv) {
103
- deleteApiKey(selected.provider);
104
- this.state.providers = getAllProviderStatuses();
105
- this.state.changed = true;
106
- return stay();
107
- }
108
- return stay(false);
109
- }
110
- return stay(false);
111
- }
112
- }
113
- /**
114
- * Input screen - text input for entering API key
115
- */
116
- class InputScreen extends BaseScreen {
117
- state;
118
- getStyles;
119
- getWidth;
120
- provider;
121
- input;
122
- constructor(state, getStyles, getWidth, provider) {
123
- super();
124
- this.state = state;
125
- this.getStyles = getStyles;
126
- this.getWidth = getWidth;
127
- this.provider = provider;
128
- this.input = new InputFeature({ placeholder: 'Paste or type your API key...' });
129
- }
130
- onEnter() {
131
- terminal.showCursor();
132
- }
133
- onExit() {
134
- terminal.hideCursor();
135
- }
136
- render() {
137
- const s = this.getStyles();
138
- const cols = this.getWidth();
139
- const border = renderBorder(cols, s);
140
- const lines = [];
141
- const providerInfo = this.state.providers.find(p => p.provider === this.provider);
142
- // Header
143
- lines.push(border);
144
- lines.push(` ${s.primaryBold('API Keys')}`);
145
- lines.push('');
146
- // Input prompt
147
- lines.push(` Set API key for ${s.primary(providerInfo?.name ?? this.provider)}:`);
148
- lines.push('');
149
- lines.push(' ' + this.input.render(s));
150
- lines.push('');
151
- // Help text
152
- if (providerInfo?.keyUrl) {
153
- lines.push(s.muted(` Get key: ${providerInfo.keyUrl}`));
154
- lines.push('');
155
- }
156
- // Footer
157
- lines.push(border);
158
- lines.push(` ${s.muted('Enter Save . Esc Cancel')}`);
159
- lines.push(border);
160
- return lines;
161
- }
162
- handleKey(data) {
163
- // Ctrl+C closes overlay
164
- if (isCtrlC(data)) {
165
- return closeOverlay({ changed: this.state.changed });
166
- }
167
- // Escape goes back to list
168
- if (isEscape(data)) {
169
- return popScreen();
170
- }
171
- // Enter saves the key
172
- if (isEnter(data)) {
173
- const value = this.input.trimmedValue;
174
- if (value) {
175
- setApiKey(this.provider, value);
176
- this.state.providers = getAllProviderStatuses();
177
- this.state.changed = true;
178
- }
179
- return popScreen();
180
- }
181
- // Let InputFeature handle the key
182
- const result = this.input.handleKey(data);
183
- if (result.handled) {
184
- return stay(result.render);
185
- }
186
- return stay(false);
187
- }
188
- getMinHeight() {
189
- return 12;
190
- }
191
- }
192
- // =============================================================================
193
- // Keys Overlay V2 Class
194
- // =============================================================================
195
- /**
196
- * Keys overlay using the new Overlay interface.
197
- * Manages API keys for LLM providers.
198
- */
199
- export class KeysOverlayV2 extends BaseOverlayV2 {
200
- type = 'inline';
201
- id = 'keys-overlay-v2';
202
- screenStack;
203
- constructor() {
204
- const providers = getAllProviderStatuses();
205
- const initialState = {
206
- selectedIndex: 0,
207
- changed: false,
208
- providers,
209
- };
210
- super(initialState);
211
- this.minHeight = 14;
212
- this.screenStack = new ScreenStack();
213
- this.screenStack.push(new ListScreen(this.state, () => this.getStyles(), () => this.termWidth));
214
- }
215
- renderContent(_context) {
216
- const screen = this.screenStack.current();
217
- return screen?.render() ?? [];
218
- }
219
- render(context) {
220
- this.styles = context.styles;
221
- this.termWidth = context.width;
222
- const lines = this.renderContent(context);
223
- const screen = this.screenStack.current();
224
- const screenMinHeight = screen?.getMinHeight?.() ?? 0;
225
- const effectiveMinHeight = Math.max(this.minHeight, screenMinHeight);
226
- return effectiveMinHeight > 0 ? { lines, minHeight: effectiveMinHeight } : { lines };
227
- }
228
- handleKey(key) {
229
- const data = key.raw;
230
- const screen = this.screenStack.current();
231
- if (!screen) {
232
- return this.close({ changed: this.state.changed });
233
- }
234
- const result = screen.handleKey(data);
235
- switch (result.action) {
236
- case 'stay':
237
- return result.render ? this.rerender() : this.noAction();
238
- case 'push':
239
- this.screenStack.push(result.screen);
240
- return this.rerender();
241
- case 'pop':
242
- this.screenStack.pop();
243
- return this.rerender();
244
- case 'close':
245
- return this.close(result.result);
246
- }
247
- }
248
- }
@@ -1,41 +0,0 @@
1
- /**
2
- * Mascot Overlay V2
3
- *
4
- * Mascot selection overlay using the new Overlay interface.
5
- * Shows all mascot expressions with live preview.
6
- *
7
- * Features:
8
- * - All mascot expressions
9
- * - Live preview
10
- * - Persists selection to settings
11
- * - Works with TerminalUI's overlay management
12
- */
13
- import { BaseOverlayV2 } from './base/index.js';
14
- import { type MascotSetting } from './mascot/index.js';
15
- import type { RenderContext, OverlayAction, KeyEvent } from './overlay/index.js';
16
- export interface MascotOverlayV2Options {
17
- /** Current mascot setting (for highlighting current selection) */
18
- currentMascot?: MascotSetting;
19
- }
20
- export interface MascotOverlayV2Result {
21
- /** Selected mascot (if changed) */
22
- mascotChanged?: MascotSetting;
23
- }
24
- interface MascotState {
25
- /** Selected mascot index */
26
- selectedIndex: number;
27
- /** Current mascot for checkmark display */
28
- currentMascot: MascotSetting;
29
- }
30
- /**
31
- * Mascot overlay using the new Overlay interface.
32
- * Displays mascot options with live preview.
33
- */
34
- export declare class MascotOverlayV2 extends BaseOverlayV2<MascotState, MascotOverlayV2Result> {
35
- readonly type: "inline";
36
- readonly id = "mascot-overlay-v2";
37
- constructor(options?: MascotOverlayV2Options);
38
- protected renderContent(context: RenderContext): string[];
39
- handleKey(key: KeyEvent): OverlayAction<MascotOverlayV2Result>;
40
- }
41
- export {};
@@ -1,138 +0,0 @@
1
- /**
2
- * Mascot Overlay V2
3
- *
4
- * Mascot selection overlay using the new Overlay interface.
5
- * Shows all mascot expressions with live preview.
6
- *
7
- * Features:
8
- * - All mascot expressions
9
- * - Live preview
10
- * - Persists selection to settings
11
- * - Works with TerminalUI's overlay management
12
- */
13
- import { BaseOverlayV2, isEscape, isEnter, isSpace, isCtrlC, isNavigateUp, isNavigateDown, isClose, renderBorder, } from './base/index.js';
14
- import { getSettings, setSetting } from '../settings/index.js';
15
- import { MASCOT_OPTIONS, MASCOT_LABELS, EXPRESSIONS, } from './mascot/index.js';
16
- // =============================================================================
17
- // Mascot Overlay V2 Class
18
- // =============================================================================
19
- /**
20
- * Mascot overlay using the new Overlay interface.
21
- * Displays mascot options with live preview.
22
- */
23
- export class MascotOverlayV2 extends BaseOverlayV2 {
24
- type = 'inline';
25
- id = 'mascot-overlay-v2';
26
- constructor(options = {}) {
27
- const currentMascot = options.currentMascot ?? getSettings().mascot;
28
- // Find current mascot in options list
29
- let selectedIndex = 0;
30
- const mascotIndex = MASCOT_OPTIONS.findIndex(m => m === currentMascot);
31
- if (mascotIndex >= 0) {
32
- selectedIndex = mascotIndex;
33
- }
34
- const initialState = {
35
- selectedIndex,
36
- currentMascot,
37
- };
38
- super(initialState);
39
- this.minHeight = 20;
40
- }
41
- renderContent(context) {
42
- const s = context.styles;
43
- const cols = context.width;
44
- const border = renderBorder(cols, s);
45
- const lines = [];
46
- // Get preview lines for side-by-side layout
47
- const selectedOption = MASCOT_OPTIONS[this.state.selectedIndex];
48
- let previewLines = [];
49
- let previewLabel = '';
50
- if (selectedOption === 'none') {
51
- previewLabel = '(No mascot)';
52
- previewLines = ['', '', '', '', '', ''];
53
- }
54
- else if (selectedOption === 'random') {
55
- previewLabel = '(Random on startup)';
56
- previewLines = EXPRESSIONS.neutral;
57
- }
58
- else {
59
- previewLabel = MASCOT_LABELS[selectedOption];
60
- previewLines = EXPRESSIONS[selectedOption];
61
- }
62
- // Header
63
- lines.push(border);
64
- lines.push(` ${s.primaryBold('Select Mascot')}`);
65
- lines.push('');
66
- // Column widths
67
- const listColWidth = 28;
68
- const gap = 4;
69
- const previewColStart = listColWidth + gap;
70
- // Build side-by-side layout
71
- const optionCount = MASCOT_OPTIONS.length;
72
- const previewHeight = previewLines.length;
73
- const previewStartRow = Math.max(0, Math.floor((optionCount - previewHeight) / 2));
74
- for (let i = 0; i < Math.max(optionCount, previewStartRow + previewHeight + 1); i++) {
75
- let leftPart = '';
76
- let rightPart = '';
77
- // Left column: option list
78
- if (i < optionCount) {
79
- const option = MASCOT_OPTIONS[i];
80
- const isSelected = i === this.state.selectedIndex;
81
- const isCurrent = option === this.state.currentMascot;
82
- const prefix = isSelected ? s.primary('> ') : ' ';
83
- const num = `${String(i + 1).padStart(2)}. `;
84
- const checkmark = isCurrent ? s.success(' (current)') : '';
85
- const label = isSelected ? s.primary(MASCOT_LABELS[option]) : s.muted(MASCOT_LABELS[option]);
86
- leftPart = ` ${prefix}${num}${label}${checkmark}`;
87
- }
88
- // Right column: preview
89
- const previewRow = i - previewStartRow;
90
- if (previewRow === -1) {
91
- rightPart = s.muted(previewLabel);
92
- }
93
- else if (previewRow >= 0 && previewRow < previewHeight) {
94
- rightPart = s.secondary(previewLines[previewRow]);
95
- }
96
- // Combine columns with proper spacing
97
- // eslint-disable-next-line no-control-regex
98
- const leftPlain = leftPart.replace(/\x1b\[[0-9;]*m/g, '');
99
- const padding = ' '.repeat(Math.max(0, previewColStart - leftPlain.length));
100
- lines.push(leftPart + padding + rightPart);
101
- }
102
- // Footer
103
- lines.push('');
104
- lines.push(border);
105
- lines.push(` ${s.muted('up/down/jk Navigate . Enter/Space Select . q/Esc Close')}`);
106
- lines.push(border);
107
- return lines;
108
- }
109
- handleKey(key) {
110
- const data = key.raw;
111
- const maxIndex = MASCOT_OPTIONS.length - 1;
112
- // Ctrl+C always closes
113
- if (isCtrlC(data)) {
114
- return this.cancel();
115
- }
116
- // q or Esc closes
117
- if (isEscape(data) || isClose(data)) {
118
- return this.cancel();
119
- }
120
- // Navigation up
121
- if (isNavigateUp(data) && this.state.selectedIndex > 0) {
122
- this.state.selectedIndex--;
123
- return this.rerender();
124
- }
125
- // Navigation down
126
- if (isNavigateDown(data) && this.state.selectedIndex < maxIndex) {
127
- this.state.selectedIndex++;
128
- return this.rerender();
129
- }
130
- // Enter/Space to select
131
- if (isEnter(data) || isSpace(data)) {
132
- const selectedMascot = MASCOT_OPTIONS[this.state.selectedIndex];
133
- setSetting('mascot', selectedMascot);
134
- return this.close({ mascotChanged: selectedMascot });
135
- }
136
- return this.noAction();
137
- }
138
- }
@@ -1,21 +0,0 @@
1
- /**
2
- * Mascot Overlay
3
- *
4
- * Standalone mascot selection overlay.
5
- * Accessible via /mascot command or from Config overlay.
6
- *
7
- * Features:
8
- * - All mascot expressions
9
- * - Live preview
10
- * - Persists selection to settings
11
- */
12
- import { type MascotSetting } from './mascot/index.js';
13
- export interface MascotOverlayOptions {
14
- /** Current mascot setting (for highlighting current selection) */
15
- currentMascot?: MascotSetting;
16
- }
17
- export interface MascotOverlayResult {
18
- /** Selected mascot (if changed) */
19
- mascotChanged?: MascotSetting;
20
- }
21
- export declare function showMascotOverlay(options?: MascotOverlayOptions): Promise<MascotOverlayResult>;