@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,127 +0,0 @@
1
- /**
2
- * Theme Overlay
3
- *
4
- * Standalone theme selection overlay using TabbedListOverlay.
5
- * Accessible via /theme command or from Config overlay.
6
- *
7
- * Features:
8
- * - Tabs: Curated (top picks), All, Dark, Light
9
- * - Search mode with / toggle
10
- * - Live preview with syntax highlighting
11
- * - Quick select with number keys (1-9,0) in Curated tab
12
- * - Persists selection to settings
13
- */
14
- import chalk from 'chalk';
15
- import { TabbedListOverlay, isEnter, isSpace, } from './base/index.js';
16
- import { getCuratedThemes, getCurrentTheme, setCurrentTheme, getAllThemes, getThemeCount, clearStyleCache, } from '../themes/index.js';
17
- // =============================================================================
18
- // Constants
19
- // =============================================================================
20
- const PAGE_SIZE = 10;
21
- const TABS = [
22
- { id: 'curated', label: 'Curated' },
23
- { id: 'all', label: 'All' },
24
- { id: 'dark', label: 'Dark' },
25
- { id: 'light', label: 'Light' },
26
- ];
27
- // =============================================================================
28
- // Helper Functions
29
- // =============================================================================
30
- function renderPreview(theme, styles) {
31
- const lines = [];
32
- const colors = theme.colors;
33
- lines.push(styles.muted(' Preview:'));
34
- // Use chalk for hex colors in preview
35
- const primary = chalk.hex(colors.primary);
36
- const secondary = chalk.hex(colors.secondary || colors.primary);
37
- const muted = chalk.hex(colors.muted);
38
- const fg = chalk.hex(colors.foreground);
39
- lines.push(' ' + primary.bold('function') + ' ' + secondary('greet') + fg('() {'));
40
- lines.push(' ' + muted('// Say hello'));
41
- lines.push(' ' + fg('console.') + secondary('log') + fg('("Hello, ') + primary('World') + fg('!");'));
42
- lines.push(' ' + fg('}'));
43
- return lines;
44
- }
45
- // =============================================================================
46
- // Theme Overlay Class
47
- // =============================================================================
48
- class ThemeOverlay extends TabbedListOverlay {
49
- currentThemeId;
50
- curatedIds;
51
- constructor(options = {}) {
52
- const currentTheme = getCurrentTheme();
53
- const currentThemeId = options.currentThemeId ?? currentTheme.id;
54
- const curatedThemes = getCuratedThemes();
55
- const curatedIds = new Set(curatedThemes.map(t => t.id));
56
- const allThemes = getAllThemes();
57
- const counts = getThemeCount();
58
- const config = {
59
- title: `Select Theme (${String(counts.total)})`,
60
- tabs: TABS,
61
- items: allThemes,
62
- pageSize: PAGE_SIZE,
63
- showCount: false, // We show count in title
64
- filterByTab: (theme, tabId) => {
65
- switch (tabId) {
66
- case 'curated':
67
- return curatedIds.has(theme.id);
68
- case 'dark':
69
- return theme.type === 'dark';
70
- case 'light':
71
- return theme.type === 'light';
72
- default:
73
- return true; // 'all'
74
- }
75
- },
76
- getSearchText: (theme) => {
77
- return `${theme.name} ${theme.id}`;
78
- },
79
- renderItem: (theme, isSelected, styles) => {
80
- const isCurrent = theme.id === currentThemeId;
81
- const prefix = isSelected ? styles.primary('❯ ') : ' ';
82
- const icon = theme.type === 'dark' ? '🌙' : '☀️';
83
- const checkmark = isCurrent ? styles.success(' ✓') : '';
84
- const label = isSelected ? styles.primary(theme.name) : theme.name;
85
- return ` ${prefix}${label.padEnd(33)}${icon}${checkmark}`;
86
- },
87
- renderSelectedPreview: (theme, styles) => {
88
- return renderPreview(theme, styles);
89
- },
90
- footerHints: (searchMode) => {
91
- if (searchMode) {
92
- return 'Type to filter · ↑↓/jk Navigate · Enter Select · Esc Exit search';
93
- }
94
- return 'Tab Filter · ↑↓/jk · ←→/hl Pages · / Search · Enter Select · q/Esc Close';
95
- },
96
- emptyMessage: 'No themes available.',
97
- noResultsMessage: 'No themes match the search.',
98
- };
99
- super(config);
100
- this.currentThemeId = currentThemeId;
101
- this.curatedIds = curatedIds;
102
- }
103
- handleKey(data) {
104
- // Handle Enter/Space to select theme
105
- if ((isEnter(data) || isSpace(data)) && this.state.filteredItems.length > 0) {
106
- const theme = this.state.filteredItems[this.state.selectedIndex];
107
- this.selectTheme(theme);
108
- return;
109
- }
110
- // Let parent handle other keys (including number keys for tab switching)
111
- super.handleKey(data);
112
- }
113
- selectTheme(theme) {
114
- setCurrentTheme(theme.id);
115
- clearStyleCache();
116
- this.close({
117
- themeChanged: theme.id,
118
- themeName: theme.name,
119
- });
120
- }
121
- }
122
- // =============================================================================
123
- // Export Function
124
- // =============================================================================
125
- export async function showThemeOverlay(options = {}) {
126
- return new ThemeOverlay(options).show();
127
- }
@@ -1,47 +0,0 @@
1
- /**
2
- * Tools Overlay V2
3
- *
4
- * Displays available agent tools in a categorized, searchable list.
5
- * Uses TabbedListOverlayV2 for the new Overlay interface.
6
- *
7
- * Features:
8
- * - Tabs: All, Files, Code, Git, Project, Agent
9
- * - Search with / toggle
10
- * - Detail view for full tool information
11
- * - Works with TerminalUI's overlay management
12
- */
13
- import { TabbedListOverlayV2, BaseScreen } from './base/index.js';
14
- export interface ToolParameter {
15
- name: string;
16
- type: string;
17
- description?: string;
18
- required: boolean;
19
- }
20
- export interface ToolPermissionInfo {
21
- level: 'once' | 'always' | 'session';
22
- description: string;
23
- }
24
- export interface ToolInfo {
25
- name: string;
26
- description?: string;
27
- parameters?: ToolParameter[];
28
- permission?: ToolPermissionInfo;
29
- }
30
- export interface ToolsOverlayV2Options {
31
- /** List of available tools */
32
- tools: ToolInfo[];
33
- }
34
- export interface ToolsOverlayV2Result {
35
- /** Whether the overlay was dismissed without action */
36
- dismissed: boolean;
37
- }
38
- /**
39
- * Tools overlay using the new Overlay interface.
40
- * Displays available tools in a searchable, tabbed list.
41
- */
42
- export declare class ToolsOverlayV2 extends TabbedListOverlayV2<ToolInfo, ToolsOverlayV2Result> {
43
- readonly type: "inline";
44
- readonly id = "tools-overlay-v2";
45
- constructor(options: ToolsOverlayV2Options);
46
- protected createDetailScreen(tool: ToolInfo): BaseScreen | null;
47
- }
@@ -1,218 +0,0 @@
1
- /**
2
- * Tools Overlay V2
3
- *
4
- * Displays available agent tools in a categorized, searchable list.
5
- * Uses TabbedListOverlayV2 for the new Overlay interface.
6
- *
7
- * Features:
8
- * - Tabs: All, Files, Code, Git, Project, Agent
9
- * - Search with / toggle
10
- * - Detail view for full tool information
11
- * - Works with TerminalUI's overlay management
12
- */
13
- import * as terminal from './terminal.js';
14
- import { TabbedListOverlayV2, BaseScreen, stay, popScreen, closeOverlay, isEscape, isCtrlC, isClose, renderBorder, wrapText, } from './base/index.js';
15
- // =============================================================================
16
- // Tab Definitions & Tool Categories
17
- // =============================================================================
18
- const TOOL_TABS = [
19
- { id: 'all', label: 'All' },
20
- { id: 'files', label: 'Files' },
21
- { id: 'code', label: 'Code' },
22
- { id: 'git', label: 'Git' },
23
- { id: 'project', label: 'Project' },
24
- { id: 'agent', label: 'Agent' },
25
- ];
26
- /**
27
- * Tool category mappings.
28
- * Uses exact names or prefix patterns (ending with *).
29
- */
30
- const TOOL_CATEGORIES = {
31
- all: null, // No filter - show all tools
32
- files: ['read_file', 'write_file', 'edit', 'glob', 'readFile', 'writeFile'],
33
- code: ['grep', 'bash', 'bashOutput', 'run_tests', 'run_lint', 'detect_project', 'find_project_root', 'detectProject', 'findProjectRoot'],
34
- git: ['git_*', 'gitStatus', 'gitDiff', 'gitLog', 'gitCommit', 'gitBranch'],
35
- project: ['project_*', 'workitem_*', 'document_*', 'anchor_*'],
36
- agent: ['task', 'todo_write', 'todo_read', 'todoWrite', 'todoRead', 'suggest', 'ask_user', 'ask_user_simple', 'askUser', 'askUserSimple', 'webFetch'],
37
- };
38
- /**
39
- * Check if a tool matches a category filter.
40
- */
41
- function toolMatchesCategory(toolName, categoryId) {
42
- const patterns = TOOL_CATEGORIES[categoryId];
43
- if (patterns === null)
44
- return true; // 'all' category
45
- for (const pattern of patterns) {
46
- if (pattern.endsWith('*')) {
47
- // Prefix match
48
- const prefix = pattern.slice(0, -1);
49
- if (toolName.startsWith(prefix))
50
- return true;
51
- }
52
- else {
53
- // Exact match
54
- if (toolName === pattern)
55
- return true;
56
- }
57
- }
58
- return false;
59
- }
60
- // =============================================================================
61
- // Constants
62
- // =============================================================================
63
- const PAGE_SIZE = 12;
64
- const NAME_WIDTH = 26;
65
- const MAX_DESCRIPTION_LENGTH = 300;
66
- const MAX_PARAMETERS_SHOWN = 5;
67
- /**
68
- * Normalize text by replacing newlines with spaces (for single-line display)
69
- */
70
- function normalizeText(text) {
71
- return text.replace(/\n+/g, ' ').replace(/\s+/g, ' ').trim();
72
- }
73
- // =============================================================================
74
- // Detail Screen
75
- // =============================================================================
76
- /**
77
- * Detail screen - shows full information for selected tool
78
- */
79
- class ToolDetailScreen extends BaseScreen {
80
- tool;
81
- styles;
82
- constructor(tool, styles) {
83
- super();
84
- this.tool = tool;
85
- this.styles = styles;
86
- }
87
- render() {
88
- const s = this.styles;
89
- const cols = terminal.getTerminalWidth();
90
- const border = renderBorder(cols, s);
91
- const lines = [];
92
- // Header
93
- lines.push(border);
94
- lines.push(` ${s.primaryBold('Tool Details')}`);
95
- lines.push('');
96
- // Tool name
97
- lines.push(` ${s.muted('Name:')} ${s.primaryBold(this.tool.name)}`);
98
- lines.push('');
99
- // Permission info
100
- if (this.tool.permission) {
101
- const levelColor = this.tool.permission.level === 'once' ? s.warning : s.muted;
102
- lines.push(` ${s.muted('Permission:')} ${levelColor(this.tool.permission.level)} ${s.muted(`(${this.tool.permission.description})`)}`);
103
- }
104
- else {
105
- lines.push(` ${s.muted('Permission:')} ${s.success('always')} ${s.muted('(no approval required)')}`);
106
- }
107
- lines.push('');
108
- // Description (normalize newlines for proper wrapping)
109
- lines.push(` ${s.muted('Description:')}`);
110
- let description = normalizeText(this.tool.description ?? 'No description available.');
111
- if (description.length > MAX_DESCRIPTION_LENGTH) {
112
- description = description.slice(0, MAX_DESCRIPTION_LENGTH).trim() + '...';
113
- }
114
- const wrappedDesc = wrapText(description, cols - 6);
115
- for (const line of wrappedDesc) {
116
- lines.push(` ${s.secondary(line)}`);
117
- }
118
- lines.push('');
119
- // Parameters
120
- if (this.tool.parameters && this.tool.parameters.length > 0) {
121
- // Sort: required first, then optional
122
- const sorted = [...this.tool.parameters].sort((a, b) => {
123
- if (a.required && !b.required)
124
- return -1;
125
- if (!a.required && b.required)
126
- return 1;
127
- return 0;
128
- });
129
- const shown = sorted.slice(0, MAX_PARAMETERS_SHOWN);
130
- const hidden = sorted.length - shown.length;
131
- lines.push(` ${s.muted('Parameters:')}`);
132
- for (const param of shown) {
133
- const requiredBadge = param.required ? s.warning('*') : ' ';
134
- const typeStr = s.muted(`(${param.type})`);
135
- lines.push(` ${requiredBadge} ${s.secondary(param.name)} ${typeStr}`);
136
- }
137
- if (hidden > 0) {
138
- lines.push(` ${s.muted(` + ${String(hidden)} more optional parameters`)}`);
139
- }
140
- lines.push('');
141
- lines.push(` ${s.muted('* = required')}`);
142
- }
143
- else {
144
- lines.push(` ${s.muted('Parameters:')} ${s.muted('None')}`);
145
- }
146
- // Footer
147
- lines.push(border);
148
- lines.push(` ${s.muted('q/Esc Back')}`);
149
- lines.push(border);
150
- return lines;
151
- }
152
- handleKey(data) {
153
- // Ctrl+C closes overlay completely
154
- if (isCtrlC(data)) {
155
- return closeOverlay({ dismissed: true });
156
- }
157
- // Esc or q goes back to list
158
- if (isEscape(data) || isClose(data)) {
159
- return popScreen();
160
- }
161
- return stay(false);
162
- }
163
- /**
164
- * Minimum height for stable rendering.
165
- */
166
- getMinHeight() {
167
- return 20;
168
- }
169
- }
170
- // =============================================================================
171
- // Tools Overlay V2 Class
172
- // =============================================================================
173
- /**
174
- * Tools overlay using the new Overlay interface.
175
- * Displays available tools in a searchable, tabbed list.
176
- */
177
- export class ToolsOverlayV2 extends TabbedListOverlayV2 {
178
- type = 'inline';
179
- id = 'tools-overlay-v2';
180
- constructor(options) {
181
- // Sort tools alphabetically
182
- const sortedTools = [...options.tools].sort((a, b) => a.name.localeCompare(b.name));
183
- super({
184
- title: 'Available Tools',
185
- tabs: TOOL_TABS,
186
- items: sortedTools,
187
- pageSize: PAGE_SIZE,
188
- filterByTab: (tool, tabId) => toolMatchesCategory(tool.name, tabId),
189
- getSearchText: (tool) => `${tool.name} ${tool.description ?? ''}`,
190
- renderItem: (tool, isSelected, styles) => {
191
- const cols = terminal.getTerminalWidth();
192
- const descWidth = Math.max(20, cols - NAME_WIDTH - 10);
193
- const cursor = isSelected ? styles.primary('> ') : ' ';
194
- const name = isSelected
195
- ? styles.primary(tool.name.padEnd(NAME_WIDTH))
196
- : styles.muted(tool.name.padEnd(NAME_WIDTH));
197
- // Normalize and truncate description
198
- const normalizedDesc = normalizeText(tool.description ?? '');
199
- const desc = normalizedDesc.length > descWidth
200
- ? normalizedDesc.slice(0, descWidth - 1) + '...'
201
- : normalizedDesc;
202
- const descColor = isSelected ? styles.secondary(desc) : styles.muted(desc);
203
- return ` ${cursor}${name} ${descColor}`;
204
- },
205
- footerHints: (searchMode) => {
206
- if (searchMode) {
207
- return 'Type to filter · ↑↓/jk Navigate · Enter Details · Esc Exit search';
208
- }
209
- return 'Tab Filter · ↑↓/jk · ←→/hl Pages · / Search · Enter Details · q/Esc Close';
210
- },
211
- emptyMessage: 'No tools available.',
212
- noResultsMessage: 'No tools match the current filter.',
213
- });
214
- }
215
- createDetailScreen(tool) {
216
- return new ToolDetailScreen(tool, this.getStyles());
217
- }
218
- }
@@ -1,34 +0,0 @@
1
- /**
2
- * Tools Overlay
3
- *
4
- * Displays available agent tools in a categorized, searchable list.
5
- * Uses TabbedListOverlay for consistent UX patterns.
6
- *
7
- * Features:
8
- * - Tabs: All, Files, Code, Git, Project, Agent
9
- * - Search with / toggle
10
- * - Detail view for full tool information
11
- */
12
- export interface ToolParameter {
13
- name: string;
14
- type: string;
15
- description?: string;
16
- required: boolean;
17
- }
18
- export interface ToolPermissionInfo {
19
- level: 'once' | 'always' | 'session';
20
- description: string;
21
- }
22
- export interface ToolInfo {
23
- name: string;
24
- description?: string;
25
- parameters?: ToolParameter[];
26
- permission?: ToolPermissionInfo;
27
- }
28
- export interface ToolsOverlayResult {
29
- dismissed: boolean;
30
- }
31
- /**
32
- * Show the tools overlay
33
- */
34
- export declare function showToolsOverlay(tools: ToolInfo[]): Promise<ToolsOverlayResult>;
@@ -1,230 +0,0 @@
1
- /**
2
- * Tools Overlay
3
- *
4
- * Displays available agent tools in a categorized, searchable list.
5
- * Uses TabbedListOverlay for consistent UX patterns.
6
- *
7
- * Features:
8
- * - Tabs: All, Files, Code, Git, Project, Agent
9
- * - Search with / toggle
10
- * - Detail view for full tool information
11
- */
12
- import * as terminal from './terminal.js';
13
- import { TabbedListOverlay, BaseScreen, stay, popScreen, closeOverlay, isCtrlC, isClose, isEscape, renderBorder, } from './base/index.js';
14
- // =============================================================================
15
- // Tab Definitions & Tool Categories
16
- // =============================================================================
17
- const TOOL_TABS = [
18
- { id: 'all', label: 'All' },
19
- { id: 'files', label: 'Files' },
20
- { id: 'code', label: 'Code' },
21
- { id: 'git', label: 'Git' },
22
- { id: 'project', label: 'Project' },
23
- { id: 'agent', label: 'Agent' },
24
- ];
25
- /**
26
- * Tool category mappings.
27
- * Uses exact names or prefix patterns (ending with *).
28
- */
29
- const TOOL_CATEGORIES = {
30
- all: null, // No filter - show all tools
31
- files: ['read_file', 'write_file', 'edit', 'glob', 'readFile', 'writeFile'],
32
- code: ['grep', 'bash', 'bashOutput', 'run_tests', 'run_lint', 'detect_project', 'find_project_root', 'detectProject', 'findProjectRoot'],
33
- git: ['git_*', 'gitStatus', 'gitDiff', 'gitLog', 'gitCommit', 'gitBranch'],
34
- project: ['project_*', 'workitem_*', 'document_*', 'anchor_*'],
35
- agent: ['task', 'todo_write', 'todo_read', 'todoWrite', 'todoRead', 'suggest', 'ask_user', 'ask_user_simple', 'askUser', 'askUserSimple', 'webFetch'],
36
- };
37
- /**
38
- * Check if a tool matches a category filter.
39
- */
40
- function toolMatchesCategory(toolName, categoryId) {
41
- const patterns = TOOL_CATEGORIES[categoryId];
42
- if (patterns === null)
43
- return true; // 'all' category
44
- for (const pattern of patterns) {
45
- if (pattern.endsWith('*')) {
46
- // Prefix match
47
- const prefix = pattern.slice(0, -1);
48
- if (toolName.startsWith(prefix))
49
- return true;
50
- }
51
- else {
52
- // Exact match
53
- if (toolName === pattern)
54
- return true;
55
- }
56
- }
57
- return false;
58
- }
59
- // =============================================================================
60
- // Constants
61
- // =============================================================================
62
- const PAGE_SIZE = 12;
63
- const NAME_WIDTH = 26;
64
- const MAX_DESCRIPTION_LENGTH = 300;
65
- const MAX_PARAMETERS_SHOWN = 5;
66
- /**
67
- * Normalize text by replacing newlines with spaces (for single-line display)
68
- */
69
- function normalizeText(text) {
70
- return text.replace(/\n+/g, ' ').replace(/\s+/g, ' ').trim();
71
- }
72
- /**
73
- * Detail screen - shows full information for selected tool
74
- */
75
- class ToolDetailScreen extends BaseScreen {
76
- tool;
77
- styles;
78
- constructor(tool, styles) {
79
- super();
80
- this.tool = tool;
81
- this.styles = styles;
82
- }
83
- render() {
84
- const s = this.styles;
85
- const cols = terminal.getTerminalWidth();
86
- const border = renderBorder(cols, s);
87
- const lines = [];
88
- // Header
89
- lines.push(border);
90
- lines.push(` ${s.primaryBold('Tool Details')}`);
91
- lines.push('');
92
- // Tool name
93
- lines.push(` ${s.muted('Name:')} ${s.primaryBold(this.tool.name)}`);
94
- lines.push('');
95
- // Permission info
96
- if (this.tool.permission) {
97
- const levelColor = this.tool.permission.level === 'once' ? s.warning : s.muted;
98
- lines.push(` ${s.muted('Permission:')} ${levelColor(this.tool.permission.level)} ${s.muted(`(${this.tool.permission.description})`)}`);
99
- }
100
- else {
101
- lines.push(` ${s.muted('Permission:')} ${s.success('always')} ${s.muted('(no approval required)')}`);
102
- }
103
- lines.push('');
104
- // Description (normalize newlines for proper wrapping)
105
- lines.push(` ${s.muted('Description:')}`);
106
- let description = normalizeText(this.tool.description ?? 'No description available.');
107
- if (description.length > MAX_DESCRIPTION_LENGTH) {
108
- description = description.slice(0, MAX_DESCRIPTION_LENGTH).trim() + '...';
109
- }
110
- const wrappedDesc = this.wrapText(description, cols - 6);
111
- for (const line of wrappedDesc) {
112
- lines.push(` ${s.secondary(line)}`);
113
- }
114
- lines.push('');
115
- // Parameters
116
- if (this.tool.parameters && this.tool.parameters.length > 0) {
117
- // Sort: required first, then optional
118
- const sorted = [...this.tool.parameters].sort((a, b) => {
119
- if (a.required && !b.required)
120
- return -1;
121
- if (!a.required && b.required)
122
- return 1;
123
- return 0;
124
- });
125
- const shown = sorted.slice(0, MAX_PARAMETERS_SHOWN);
126
- const hidden = sorted.length - shown.length;
127
- lines.push(` ${s.muted('Parameters:')}`);
128
- for (const param of shown) {
129
- const requiredBadge = param.required ? s.warning('*') : ' ';
130
- const typeStr = s.muted(`(${param.type})`);
131
- lines.push(` ${requiredBadge} ${s.secondary(param.name)} ${typeStr}`);
132
- }
133
- if (hidden > 0) {
134
- lines.push(` ${s.muted(` + ${String(hidden)} more optional parameters`)}`);
135
- }
136
- lines.push('');
137
- lines.push(` ${s.muted('* = required')}`);
138
- }
139
- else {
140
- lines.push(` ${s.muted('Parameters:')} ${s.muted('None')}`);
141
- }
142
- // Footer
143
- lines.push(border);
144
- lines.push(` ${s.muted('q/Esc Back')}`);
145
- lines.push(border);
146
- return lines;
147
- }
148
- handleKey(data) {
149
- // Ctrl+C closes overlay completely
150
- if (isCtrlC(data)) {
151
- return closeOverlay({ dismissed: true });
152
- }
153
- // Esc or q goes back to list
154
- if (isEscape(data) || isClose(data)) {
155
- return popScreen();
156
- }
157
- return stay(false);
158
- }
159
- wrapText(text, maxWidth) {
160
- const words = text.split(' ');
161
- const resultLines = [];
162
- let currentLine = '';
163
- for (const word of words) {
164
- if (currentLine.length + word.length + 1 <= maxWidth) {
165
- currentLine += (currentLine ? ' ' : '') + word;
166
- }
167
- else {
168
- if (currentLine)
169
- resultLines.push(currentLine);
170
- currentLine = word;
171
- }
172
- }
173
- if (currentLine)
174
- resultLines.push(currentLine);
175
- return resultLines;
176
- }
177
- }
178
- // =============================================================================
179
- // Tools Overlay Class
180
- // =============================================================================
181
- class ToolsOverlay extends TabbedListOverlay {
182
- constructor(tools) {
183
- // Sort tools alphabetically
184
- const sortedTools = [...tools].sort((a, b) => a.name.localeCompare(b.name));
185
- super({
186
- title: 'Available Tools',
187
- tabs: TOOL_TABS,
188
- items: sortedTools,
189
- pageSize: PAGE_SIZE,
190
- filterByTab: (tool, tabId) => toolMatchesCategory(tool.name, tabId),
191
- getSearchText: (tool) => `${tool.name} ${tool.description ?? ''}`,
192
- renderItem: (tool, isSelected, styles) => {
193
- const cols = terminal.getTerminalWidth();
194
- const descWidth = Math.max(20, cols - NAME_WIDTH - 10);
195
- const cursor = isSelected ? styles.primary('❯ ') : ' ';
196
- const name = isSelected
197
- ? styles.primaryBold(tool.name.padEnd(NAME_WIDTH))
198
- : styles.secondary(tool.name.padEnd(NAME_WIDTH));
199
- // Normalize and truncate description
200
- const normalizedDesc = normalizeText(tool.description ?? '');
201
- const desc = normalizedDesc.length > descWidth
202
- ? normalizedDesc.slice(0, descWidth - 1) + '…'
203
- : normalizedDesc;
204
- const descColor = isSelected ? styles.secondary(desc) : styles.muted(desc);
205
- return ` ${cursor}${name} ${descColor}`;
206
- },
207
- footerHints: (searchMode) => {
208
- if (searchMode) {
209
- return 'Type to filter · ↑↓/jk Navigate · Enter Details · Esc Exit search';
210
- }
211
- return 'Tab Filter · ↑↓/jk · ←→/hl Pages · / Search · Enter Details · q/Esc Close';
212
- },
213
- emptyMessage: 'No tools available.',
214
- noResultsMessage: 'No tools match the current filter.',
215
- detailScreensFullScreen: false,
216
- });
217
- }
218
- createDetailScreen(tool) {
219
- return new ToolDetailScreen(tool, this.styles);
220
- }
221
- }
222
- // =============================================================================
223
- // Export Function
224
- // =============================================================================
225
- /**
226
- * Show the tools overlay
227
- */
228
- export async function showToolsOverlay(tools) {
229
- return new ToolsOverlay(tools).show();
230
- }
@@ -1,31 +0,0 @@
1
- /**
2
- * Tutorial Overlay V2
3
- *
4
- * Interactive tutorial using the new Overlay interface.
5
- * Supports guided sequential tour and topic-based navigation.
6
- */
7
- import { BaseOverlayV2 } from './base/index.js';
8
- import type { RenderContext, OverlayAction, KeyEvent } from './overlay/index.js';
9
- export interface TutorialOverlayV2Result {
10
- completed: boolean;
11
- }
12
- interface TutorialState {
13
- topicListIndex: number;
14
- currentTopicIndex: number;
15
- currentPageIndex: number;
16
- isGuidedMode: boolean;
17
- }
18
- /**
19
- * Tutorial overlay using the new Overlay interface.
20
- * Multi-screen overlay for interactive tutorial.
21
- */
22
- export declare class TutorialOverlayV2 extends BaseOverlayV2<TutorialState, TutorialOverlayV2Result> {
23
- readonly type: "inline";
24
- readonly id = "tutorial-overlay-v2";
25
- private readonly screenStack;
26
- private topics;
27
- constructor();
28
- protected renderContent(context: RenderContext): string[];
29
- handleKey(key: KeyEvent): OverlayAction<TutorialOverlayV2Result>;
30
- }
31
- export {};