@compilr-dev/cli 0.4.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (634) hide show
  1. package/README.md +254 -68
  2. package/dist/.tsbuildinfo.app +1 -0
  3. package/dist/.tsbuildinfo.data +1 -0
  4. package/dist/.tsbuildinfo.domain +1 -0
  5. package/dist/.tsbuildinfo.foundation +1 -0
  6. package/dist/agent.d.ts +134 -4
  7. package/dist/agent.js +345 -166
  8. package/dist/anchors/index.d.ts +9 -0
  9. package/dist/anchors/index.js +9 -0
  10. package/dist/anchors/project-anchors.d.ts +79 -0
  11. package/dist/anchors/project-anchors.js +202 -0
  12. package/dist/auth/api-client.d.ts +124 -0
  13. package/dist/auth/api-client.js +261 -0
  14. package/dist/auth/index.d.ts +172 -0
  15. package/dist/auth/index.js +545 -0
  16. package/dist/auth/storage.d.ts +52 -0
  17. package/dist/auth/storage.js +118 -0
  18. package/dist/changelog/index.d.ts +16 -0
  19. package/dist/changelog/index.js +24 -0
  20. package/dist/changelog/releases.d.ts +17 -0
  21. package/dist/changelog/releases.js +63 -0
  22. package/dist/commands/index.d.ts +2 -1
  23. package/dist/commands-v2/handlers/auth.d.ts +10 -0
  24. package/dist/commands-v2/handlers/auth.js +118 -0
  25. package/dist/commands-v2/handlers/background.d.ts +14 -0
  26. package/dist/commands-v2/handlers/background.js +276 -0
  27. package/dist/commands-v2/handlers/context.d.ts +13 -0
  28. package/dist/commands-v2/handlers/context.js +533 -0
  29. package/dist/commands-v2/handlers/core.d.ts +14 -0
  30. package/dist/commands-v2/handlers/core.js +290 -0
  31. package/dist/commands-v2/handlers/debug.d.ts +11 -0
  32. package/dist/commands-v2/handlers/debug.js +177 -0
  33. package/dist/commands-v2/handlers/delegations.d.ts +8 -0
  34. package/dist/commands-v2/handlers/delegations.js +29 -0
  35. package/dist/commands-v2/handlers/files.d.ts +8 -0
  36. package/dist/commands-v2/handlers/files.js +162 -0
  37. package/dist/commands-v2/handlers/filter.d.ts +9 -0
  38. package/dist/commands-v2/handlers/filter.js +130 -0
  39. package/dist/commands-v2/handlers/games.d.ts +7 -0
  40. package/dist/commands-v2/handlers/games.js +57 -0
  41. package/dist/commands-v2/handlers/index.d.ts +25 -0
  42. package/dist/commands-v2/handlers/index.js +63 -0
  43. package/dist/commands-v2/handlers/mcp.d.ts +8 -0
  44. package/dist/commands-v2/handlers/mcp.js +39 -0
  45. package/dist/commands-v2/handlers/notifications.d.ts +9 -0
  46. package/dist/commands-v2/handlers/notifications.js +34 -0
  47. package/dist/commands-v2/handlers/project.d.ts +22 -0
  48. package/dist/commands-v2/handlers/project.js +1035 -0
  49. package/dist/commands-v2/handlers/reset.d.ts +11 -0
  50. package/dist/commands-v2/handlers/reset.js +118 -0
  51. package/dist/commands-v2/handlers/session.d.ts +161 -0
  52. package/dist/commands-v2/handlers/session.js +805 -0
  53. package/dist/commands-v2/handlers/settings.d.ts +17 -0
  54. package/dist/commands-v2/handlers/settings.js +417 -0
  55. package/dist/commands-v2/handlers/tasks.d.ts +5 -0
  56. package/dist/commands-v2/handlers/tasks.js +36 -0
  57. package/dist/commands-v2/handlers/team.d.ts +9 -0
  58. package/dist/commands-v2/handlers/team.js +549 -0
  59. package/dist/commands-v2/handlers/terminals.d.ts +9 -0
  60. package/dist/commands-v2/handlers/terminals.js +34 -0
  61. package/dist/commands-v2/index.d.ts +14 -0
  62. package/dist/commands-v2/index.js +18 -0
  63. package/dist/commands-v2/registry.d.ts +52 -0
  64. package/dist/commands-v2/registry.js +114 -0
  65. package/dist/commands-v2/types.d.ts +153 -0
  66. package/dist/commands-v2/types.js +7 -0
  67. package/dist/commands.js +123 -7
  68. package/dist/compilr-diff-companion.vsix +0 -0
  69. package/dist/db/index.js +98 -4
  70. package/dist/db/repositories/document-repository.d.ts +2 -0
  71. package/dist/db/repositories/document-repository.js +5 -1
  72. package/dist/db/repositories/index.d.ts +2 -0
  73. package/dist/db/repositories/index.js +1 -0
  74. package/dist/db/repositories/plan-repository.d.ts +101 -0
  75. package/dist/db/repositories/plan-repository.js +275 -0
  76. package/dist/db/repositories/project-repository.d.ts +6 -0
  77. package/dist/db/repositories/project-repository.js +41 -0
  78. package/dist/db/repositories/work-item-repository.d.ts +15 -0
  79. package/dist/db/repositories/work-item-repository.js +69 -4
  80. package/dist/db/schema.d.ts +40 -3
  81. package/dist/db/schema.js +66 -3
  82. package/dist/episodes/index.d.ts +20 -0
  83. package/dist/episodes/index.js +27 -0
  84. package/dist/episodes/recorder.d.ts +51 -0
  85. package/dist/episodes/recorder.js +195 -0
  86. package/dist/episodes/significant-work.d.ts +21 -0
  87. package/dist/episodes/significant-work.js +56 -0
  88. package/dist/episodes/store.d.ts +38 -0
  89. package/dist/episodes/store.js +199 -0
  90. package/dist/episodes/types.d.ts +35 -0
  91. package/dist/episodes/types.js +6 -0
  92. package/dist/episodes/work-at-risk.d.ts +12 -0
  93. package/dist/episodes/work-at-risk.js +38 -0
  94. package/dist/episodes/work-summary-anchor.d.ts +23 -0
  95. package/dist/episodes/work-summary-anchor.js +73 -0
  96. package/dist/games/coins.d.ts +66 -0
  97. package/dist/games/coins.js +165 -0
  98. package/dist/games/game-base.d.ts +84 -0
  99. package/dist/games/game-base.js +204 -0
  100. package/dist/games/index.d.ts +16 -0
  101. package/dist/games/index.js +49 -0
  102. package/dist/games/scores.d.ts +69 -0
  103. package/dist/games/scores.js +191 -0
  104. package/dist/games/tetris/board.d.ts +59 -0
  105. package/dist/games/tetris/board.js +170 -0
  106. package/dist/games/tetris/index.d.ts +109 -0
  107. package/dist/games/tetris/index.js +610 -0
  108. package/dist/games/tetris/pieces.d.ts +44 -0
  109. package/dist/games/tetris/pieces.js +271 -0
  110. package/dist/games/tetris/renderer.d.ts +26 -0
  111. package/dist/games/tetris/renderer.js +77 -0
  112. package/dist/guide/guide-content.d.ts +23 -0
  113. package/dist/guide/guide-content.js +196 -0
  114. package/dist/guide/index.d.ts +8 -0
  115. package/dist/guide/index.js +7 -0
  116. package/dist/guide/shared-content.d.ts +37 -0
  117. package/dist/guide/shared-content.js +1272 -0
  118. package/dist/guide/tutorial-helpers.d.ts +57 -0
  119. package/dist/guide/tutorial-helpers.js +147 -0
  120. package/dist/handlers/ask-user-handlers.d.ts +32 -0
  121. package/dist/handlers/ask-user-handlers.js +104 -0
  122. package/dist/handlers/delegation-handlers.d.ts +34 -0
  123. package/dist/handlers/delegation-handlers.js +291 -0
  124. package/dist/handlers/permission-handler.d.ts +30 -0
  125. package/dist/handlers/permission-handler.js +205 -0
  126. package/dist/index.d.ts +11 -1
  127. package/dist/index.js +615 -179
  128. package/dist/input-handlers/index.d.ts +7 -0
  129. package/dist/input-handlers/index.js +7 -0
  130. package/dist/input-handlers/memory-handler.d.ts +26 -0
  131. package/dist/input-handlers/memory-handler.js +69 -0
  132. package/dist/models/index.d.ts +10 -0
  133. package/dist/models/index.js +12 -0
  134. package/dist/models/model-registry.d.ts +38 -0
  135. package/dist/models/model-registry.js +69 -0
  136. package/dist/models/model-tiers.d.ts +28 -0
  137. package/dist/models/model-tiers.js +71 -0
  138. package/dist/models/model-validation.d.ts +25 -0
  139. package/dist/models/model-validation.js +291 -0
  140. package/dist/models/ollama-models.d.ts +73 -0
  141. package/dist/models/ollama-models.js +178 -0
  142. package/dist/models/provider-types.d.ts +6 -0
  143. package/dist/models/provider-types.js +1 -0
  144. package/dist/models/providers.d.ts +35 -0
  145. package/dist/models/providers.js +58 -0
  146. package/dist/models/types.d.ts +4 -0
  147. package/dist/models/types.js +4 -0
  148. package/dist/multi-agent/activity.d.ts +21 -0
  149. package/dist/multi-agent/activity.js +34 -0
  150. package/dist/multi-agent/agent-selection.d.ts +55 -0
  151. package/dist/multi-agent/agent-selection.js +90 -0
  152. package/dist/multi-agent/artifacts.d.ts +197 -0
  153. package/dist/multi-agent/artifacts.js +379 -0
  154. package/dist/multi-agent/checkpointer.d.ts +138 -0
  155. package/dist/multi-agent/checkpointer.js +471 -0
  156. package/dist/multi-agent/collision-utils.d.ts +16 -0
  157. package/dist/multi-agent/collision-utils.js +28 -0
  158. package/dist/multi-agent/context-resolver.d.ts +97 -0
  159. package/dist/multi-agent/context-resolver.js +316 -0
  160. package/dist/multi-agent/custom-agents.d.ts +83 -0
  161. package/dist/multi-agent/custom-agents.js +227 -0
  162. package/dist/multi-agent/delegation-tracker.d.ts +157 -0
  163. package/dist/multi-agent/delegation-tracker.js +243 -0
  164. package/dist/multi-agent/file-lock-hook.d.ts +29 -0
  165. package/dist/multi-agent/file-lock-hook.js +97 -0
  166. package/dist/multi-agent/file-locks.d.ts +58 -0
  167. package/dist/multi-agent/file-locks.js +194 -0
  168. package/dist/multi-agent/index.d.ts +24 -0
  169. package/dist/multi-agent/index.js +30 -0
  170. package/dist/multi-agent/mention-parser.d.ts +64 -0
  171. package/dist/multi-agent/mention-parser.js +146 -0
  172. package/dist/multi-agent/notification-manager.d.ts +84 -0
  173. package/dist/multi-agent/notification-manager.js +224 -0
  174. package/dist/multi-agent/pending-requests.d.ts +122 -0
  175. package/dist/multi-agent/pending-requests.js +155 -0
  176. package/dist/multi-agent/session-registry.d.ts +139 -0
  177. package/dist/multi-agent/session-registry.js +514 -0
  178. package/dist/multi-agent/shared-context.d.ts +293 -0
  179. package/dist/multi-agent/shared-context.js +671 -0
  180. package/dist/multi-agent/skill-requirements.d.ts +66 -0
  181. package/dist/multi-agent/skill-requirements.js +178 -0
  182. package/dist/multi-agent/task-assignment.d.ts +69 -0
  183. package/dist/multi-agent/task-assignment.js +123 -0
  184. package/dist/multi-agent/task-suggestion.d.ts +31 -0
  185. package/dist/multi-agent/task-suggestion.js +72 -0
  186. package/dist/multi-agent/team-agent.d.ts +201 -0
  187. package/dist/multi-agent/team-agent.js +488 -0
  188. package/dist/multi-agent/team.d.ts +286 -0
  189. package/dist/multi-agent/team.js +610 -0
  190. package/dist/multi-agent/tool-config.d.ts +110 -0
  191. package/dist/multi-agent/tool-config.js +661 -0
  192. package/dist/multi-agent/types.d.ts +211 -0
  193. package/dist/multi-agent/types.js +617 -0
  194. package/dist/prompts/plan-mode-prompt.d.ts +11 -0
  195. package/dist/prompts/plan-mode-prompt.js +95 -0
  196. package/dist/repl-helpers.d.ts +63 -0
  197. package/dist/repl-helpers.js +319 -0
  198. package/dist/repl-v2.d.ts +554 -0
  199. package/dist/repl-v2.js +3286 -0
  200. package/dist/session/index.d.ts +6 -0
  201. package/dist/session/index.js +6 -0
  202. package/dist/session/project-session-manager.d.ts +158 -0
  203. package/dist/session/project-session-manager.js +650 -0
  204. package/dist/settings/index.d.ts +156 -13
  205. package/dist/settings/index.js +377 -24
  206. package/dist/settings/mcp-config.d.ts +76 -0
  207. package/dist/settings/mcp-config.js +143 -0
  208. package/dist/settings/paths.d.ts +114 -0
  209. package/dist/settings/paths.js +270 -0
  210. package/dist/shared-handlers.d.ts +62 -0
  211. package/dist/shared-handlers.js +48 -0
  212. package/dist/system-prompt/builder.d.ts +5 -0
  213. package/dist/system-prompt/builder.js +4 -0
  214. package/dist/system-prompt/index.d.ts +18 -0
  215. package/dist/system-prompt/index.js +18 -0
  216. package/dist/system-prompt/modules.d.ts +5 -0
  217. package/dist/system-prompt/modules.js +4 -0
  218. package/dist/tabbed-menu.js +2 -1
  219. package/dist/templates/compilr-md-import.d.ts +16 -0
  220. package/dist/templates/compilr-md-import.js +241 -0
  221. package/dist/templates/compilr-md.js +10 -58
  222. package/dist/templates/config-json.d.ts +1 -25
  223. package/dist/templates/index.d.ts +2 -0
  224. package/dist/templates/index.js +35 -75
  225. package/dist/themes/colors.js +3 -1
  226. package/dist/themes/registry.d.ts +5 -36
  227. package/dist/themes/registry.js +11 -95
  228. package/dist/themes/types.d.ts +3 -38
  229. package/dist/themes/types.js +2 -2
  230. package/dist/tool-names.d.ts +108 -0
  231. package/dist/tool-names.js +227 -0
  232. package/dist/tools/anchor-tools.d.ts +31 -0
  233. package/dist/tools/anchor-tools.js +255 -0
  234. package/dist/tools/artifact-tools.d.ts +42 -0
  235. package/dist/tools/artifact-tools.js +328 -0
  236. package/dist/tools/ask-user-simple.d.ts +1 -1
  237. package/dist/tools/ask-user-simple.js +2 -1
  238. package/dist/tools/ask-user.d.ts +1 -1
  239. package/dist/tools/ask-user.js +2 -1
  240. package/dist/tools/backlog-wrappers.d.ts +56 -0
  241. package/dist/tools/backlog-wrappers.js +353 -0
  242. package/dist/tools/backlog.d.ts +2 -2
  243. package/dist/tools/backlog.js +2 -2
  244. package/dist/tools/db-tools.d.ts +12 -0
  245. package/dist/tools/db-tools.js +14 -0
  246. package/dist/tools/delegate-background.d.ts +27 -0
  247. package/dist/tools/delegate-background.js +115 -0
  248. package/dist/tools/delegate.d.ts +22 -0
  249. package/dist/tools/delegate.js +97 -0
  250. package/dist/tools/delegation-status.d.ts +16 -0
  251. package/dist/tools/delegation-status.js +128 -0
  252. package/dist/tools/document-db.d.ts +43 -0
  253. package/dist/tools/document-db.js +220 -0
  254. package/dist/tools/guide-tool.d.ts +12 -0
  255. package/dist/tools/guide-tool.js +59 -0
  256. package/dist/tools/handoff.d.ts +25 -0
  257. package/dist/tools/handoff.js +99 -0
  258. package/dist/tools/meta-tools.d.ts +26 -0
  259. package/dist/tools/meta-tools.js +47 -0
  260. package/dist/tools/plan-tools.d.ts +54 -0
  261. package/dist/tools/plan-tools.js +338 -0
  262. package/dist/tools/platform-adapter.d.ts +29 -0
  263. package/dist/tools/platform-adapter.js +394 -0
  264. package/dist/tools/project-db.d.ts +34 -0
  265. package/dist/tools/project-db.js +39 -0
  266. package/dist/tools/recall-work-tool.d.ts +18 -0
  267. package/dist/tools/recall-work-tool.js +82 -0
  268. package/dist/tools/workitem-db.d.ts +135 -0
  269. package/dist/tools/workitem-db.js +730 -0
  270. package/dist/tools.d.ts +67 -2
  271. package/dist/tools.js +238 -38
  272. package/dist/ui/ask-user-overlay.d.ts +2 -2
  273. package/dist/ui/ask-user-overlay.js +443 -535
  274. package/dist/ui/ask-user-simple-overlay.d.ts +2 -2
  275. package/dist/ui/ask-user-simple-overlay.js +182 -209
  276. package/dist/ui/autocomplete-controller.d.ts +42 -0
  277. package/dist/ui/autocomplete-controller.js +384 -0
  278. package/dist/ui/base/index.d.ts +26 -0
  279. package/dist/ui/base/index.js +33 -0
  280. package/dist/ui/base/inline-overlay-utils.d.ts +217 -0
  281. package/dist/ui/base/inline-overlay-utils.js +320 -0
  282. package/dist/ui/base/inline-overlay.d.ts +159 -0
  283. package/dist/ui/base/inline-overlay.js +257 -0
  284. package/dist/ui/base/key-utils.d.ts +15 -0
  285. package/dist/ui/base/key-utils.js +30 -0
  286. package/dist/ui/base/overlay-base-v2.d.ts +203 -0
  287. package/dist/ui/base/overlay-base-v2.js +260 -0
  288. package/dist/ui/base/overlay-base.d.ts +156 -0
  289. package/dist/ui/base/overlay-base.js +238 -0
  290. package/dist/ui/base/overlay-lifecycle.d.ts +65 -0
  291. package/dist/ui/base/overlay-lifecycle.js +159 -0
  292. package/dist/ui/base/overlay-types.d.ts +185 -0
  293. package/dist/ui/base/overlay-types.js +7 -0
  294. package/dist/ui/base/render-utils.d.ts +27 -0
  295. package/dist/ui/base/render-utils.js +36 -0
  296. package/dist/ui/base/screen-stack.d.ts +148 -0
  297. package/dist/ui/base/screen-stack.js +184 -0
  298. package/dist/ui/base/tabbed-list-overlay-v2.d.ts +118 -0
  299. package/dist/ui/base/tabbed-list-overlay-v2.js +335 -0
  300. package/dist/ui/base/tabbed-list-overlay.d.ts +153 -0
  301. package/dist/ui/base/tabbed-list-overlay.js +369 -0
  302. package/dist/ui/constants/labels.d.ts +14 -0
  303. package/dist/ui/constants/labels.js +51 -0
  304. package/dist/ui/conversation-store.d.ts +55 -0
  305. package/dist/ui/conversation-store.js +107 -0
  306. package/dist/ui/conversation.d.ts +75 -4
  307. package/dist/ui/conversation.js +376 -165
  308. package/dist/ui/diff.d.ts +7 -1
  309. package/dist/ui/diff.js +85 -48
  310. package/dist/ui/ephemeral.d.ts +1 -1
  311. package/dist/ui/ephemeral.js +4 -10
  312. package/dist/ui/features/index.d.ts +34 -0
  313. package/dist/ui/features/index.js +34 -0
  314. package/dist/ui/features/input-feature.d.ts +85 -0
  315. package/dist/ui/features/input-feature.js +238 -0
  316. package/dist/ui/features/list-feature.d.ts +155 -0
  317. package/dist/ui/features/list-feature.js +244 -0
  318. package/dist/ui/features/pagination-feature.d.ts +154 -0
  319. package/dist/ui/features/pagination-feature.js +238 -0
  320. package/dist/ui/features/search-feature.d.ts +148 -0
  321. package/dist/ui/features/search-feature.js +185 -0
  322. package/dist/ui/features/tab-feature.d.ts +194 -0
  323. package/dist/ui/features/tab-feature.js +307 -0
  324. package/dist/ui/file-autocomplete.d.ts +24 -0
  325. package/dist/ui/file-autocomplete.js +56 -0
  326. package/dist/ui/footer-renderer.d.ts +69 -0
  327. package/dist/ui/footer-renderer.js +431 -0
  328. package/dist/ui/footer.d.ts +181 -7
  329. package/dist/ui/footer.js +523 -74
  330. package/dist/ui/guardrail-overlay.d.ts +29 -0
  331. package/dist/ui/guardrail-overlay.js +145 -0
  332. package/dist/ui/index.d.ts +1 -1
  333. package/dist/ui/index.js +1 -3
  334. package/dist/ui/input-controller.d.ts +51 -0
  335. package/dist/ui/input-controller.js +176 -0
  336. package/dist/ui/input-prompt.d.ts +135 -33
  337. package/dist/ui/input-prompt.js +728 -337
  338. package/dist/ui/iteration-limit-overlay.d.ts +2 -2
  339. package/dist/ui/iteration-limit-overlay.js +92 -128
  340. package/dist/ui/keyboard-handler.d.ts +57 -0
  341. package/dist/ui/keyboard-handler.js +557 -0
  342. package/dist/ui/keys-overlay.d.ts +1 -0
  343. package/dist/ui/keys-overlay.js +203 -141
  344. package/dist/ui/line-utils.d.ts +88 -0
  345. package/dist/ui/line-utils.js +150 -0
  346. package/dist/ui/live-region-facade.d.ts +42 -0
  347. package/dist/ui/live-region-facade.js +205 -0
  348. package/dist/ui/live-region.d.ts +157 -0
  349. package/dist/ui/live-region.js +379 -0
  350. package/dist/ui/mascot/expressions.d.ts +32 -0
  351. package/dist/ui/mascot/expressions.js +213 -0
  352. package/dist/ui/mascot/index.d.ts +8 -0
  353. package/dist/ui/mascot/index.js +8 -0
  354. package/dist/ui/mascot/renderer.d.ts +19 -0
  355. package/dist/ui/mascot/renderer.js +132 -0
  356. package/dist/ui/overlay/data/tutorial-content.d.ts +9 -0
  357. package/dist/ui/overlay/data/tutorial-content.js +9 -0
  358. package/dist/ui/overlay/data/tutorial-registry.d.ts +12 -0
  359. package/dist/ui/overlay/data/tutorial-registry.js +116 -0
  360. package/dist/ui/overlay/data/tutorial-types.d.ts +35 -0
  361. package/dist/ui/overlay/data/tutorial-types.js +6 -0
  362. package/dist/ui/overlay/data/tutorials/basics/first-conversation.d.ts +7 -0
  363. package/dist/ui/overlay/data/tutorials/basics/first-conversation.js +220 -0
  364. package/dist/ui/overlay/data/tutorials/basics/first-project.d.ts +7 -0
  365. package/dist/ui/overlay/data/tutorials/basics/first-project.js +284 -0
  366. package/dist/ui/overlay/data/tutorials/basics/navigation.d.ts +8 -0
  367. package/dist/ui/overlay/data/tutorials/basics/navigation.js +22 -0
  368. package/dist/ui/overlay/data/tutorials/basics/welcome.d.ts +7 -0
  369. package/dist/ui/overlay/data/tutorials/basics/welcome.js +174 -0
  370. package/dist/ui/overlay/data/tutorials/config/context-management.d.ts +7 -0
  371. package/dist/ui/overlay/data/tutorials/config/context-management.js +158 -0
  372. package/dist/ui/overlay/data/tutorials/config/mcp-servers.d.ts +8 -0
  373. package/dist/ui/overlay/data/tutorials/config/mcp-servers.js +155 -0
  374. package/dist/ui/overlay/data/tutorials/config/model-selection.d.ts +7 -0
  375. package/dist/ui/overlay/data/tutorials/config/model-selection.js +162 -0
  376. package/dist/ui/overlay/data/tutorials/config/permissions-safety.d.ts +7 -0
  377. package/dist/ui/overlay/data/tutorials/config/permissions-safety.js +163 -0
  378. package/dist/ui/overlay/data/tutorials/config/settings-config.d.ts +7 -0
  379. package/dist/ui/overlay/data/tutorials/config/settings-config.js +166 -0
  380. package/dist/ui/overlay/data/tutorials/planning/arch.d.ts +7 -0
  381. package/dist/ui/overlay/data/tutorials/planning/arch.js +168 -0
  382. package/dist/ui/overlay/data/tutorials/planning/backlog.d.ts +7 -0
  383. package/dist/ui/overlay/data/tutorials/planning/backlog.js +103 -0
  384. package/dist/ui/overlay/data/tutorials/planning/build.d.ts +7 -0
  385. package/dist/ui/overlay/data/tutorials/planning/build.js +173 -0
  386. package/dist/ui/overlay/data/tutorials/planning/design.d.ts +7 -0
  387. package/dist/ui/overlay/data/tutorials/planning/design.js +205 -0
  388. package/dist/ui/overlay/data/tutorials/planning/docs.d.ts +7 -0
  389. package/dist/ui/overlay/data/tutorials/planning/docs.js +143 -0
  390. package/dist/ui/overlay/data/tutorials/planning/prd.d.ts +7 -0
  391. package/dist/ui/overlay/data/tutorials/planning/prd.js +173 -0
  392. package/dist/ui/overlay/data/tutorials/planning/scaffold.d.ts +7 -0
  393. package/dist/ui/overlay/data/tutorials/planning/scaffold.js +164 -0
  394. package/dist/ui/overlay/data/tutorials/planning/sketch.d.ts +7 -0
  395. package/dist/ui/overlay/data/tutorials/planning/sketch.js +58 -0
  396. package/dist/ui/overlay/data/tutorials/projects/anchors.d.ts +7 -0
  397. package/dist/ui/overlay/data/tutorials/projects/anchors.js +248 -0
  398. package/dist/ui/overlay/data/tutorials/projects/import-project.d.ts +7 -0
  399. package/dist/ui/overlay/data/tutorials/projects/import-project.js +172 -0
  400. package/dist/ui/overlay/data/tutorials/projects/managing-projects.d.ts +8 -0
  401. package/dist/ui/overlay/data/tutorials/projects/managing-projects.js +212 -0
  402. package/dist/ui/overlay/data/tutorials/projects/new-project.d.ts +7 -0
  403. package/dist/ui/overlay/data/tutorials/projects/new-project.js +251 -0
  404. package/dist/ui/overlay/data/tutorials/projects/session-management.d.ts +7 -0
  405. package/dist/ui/overlay/data/tutorials/projects/session-management.js +169 -0
  406. package/dist/ui/overlay/data/tutorials/teams/background-execution.d.ts +7 -0
  407. package/dist/ui/overlay/data/tutorials/teams/background-execution.js +171 -0
  408. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.d.ts +8 -0
  409. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.js +147 -0
  410. package/dist/ui/overlay/data/tutorials/teams/task-assignment.d.ts +7 -0
  411. package/dist/ui/overlay/data/tutorials/teams/task-assignment.js +204 -0
  412. package/dist/ui/overlay/data/tutorials/teams/team-overview.d.ts +7 -0
  413. package/dist/ui/overlay/data/tutorials/teams/team-overview.js +165 -0
  414. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.d.ts +7 -0
  415. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.js +172 -0
  416. package/dist/ui/overlay/impl/agents-overlay-v2.d.ts +45 -0
  417. package/dist/ui/overlay/impl/agents-overlay-v2.js +814 -0
  418. package/dist/ui/overlay/impl/anchors-overlay-v2.d.ts +47 -0
  419. package/dist/ui/overlay/impl/anchors-overlay-v2.js +749 -0
  420. package/dist/ui/overlay/impl/arch-type-overlay-v2.d.ts +37 -0
  421. package/dist/ui/overlay/impl/arch-type-overlay-v2.js +240 -0
  422. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.d.ts +43 -0
  423. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.js +232 -0
  424. package/dist/ui/overlay/impl/artifact-overlay-v2.d.ts +40 -0
  425. package/dist/ui/overlay/impl/artifact-overlay-v2.js +115 -0
  426. package/dist/ui/overlay/impl/ask-user-overlay-v2.d.ts +72 -0
  427. package/dist/ui/overlay/impl/ask-user-overlay-v2.js +581 -0
  428. package/dist/ui/overlay/impl/ask-user-simple-overlay-v2.d.ts +46 -0
  429. package/dist/ui/overlay/impl/ask-user-simple-overlay-v2.js +204 -0
  430. package/dist/ui/overlay/impl/background-overlay-v2.d.ts +40 -0
  431. package/dist/ui/overlay/impl/background-overlay-v2.js +147 -0
  432. package/dist/ui/overlay/impl/backlog-overlay-v2.d.ts +52 -0
  433. package/dist/ui/overlay/impl/backlog-overlay-v2.js +681 -0
  434. package/dist/ui/overlay/impl/changelog-overlay-v2.d.ts +44 -0
  435. package/dist/ui/overlay/impl/changelog-overlay-v2.js +165 -0
  436. package/dist/ui/overlay/impl/commands-overlay-v2.d.ts +33 -0
  437. package/dist/ui/overlay/impl/commands-overlay-v2.js +439 -0
  438. package/dist/ui/overlay/impl/config-overlay-v2.d.ts +111 -0
  439. package/dist/ui/overlay/impl/config-overlay-v2.js +718 -0
  440. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.d.ts +83 -0
  441. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.js +711 -0
  442. package/dist/ui/overlay/impl/dashboard-overlay-v2.d.ts +57 -0
  443. package/dist/ui/overlay/impl/dashboard-overlay-v2.js +382 -0
  444. package/dist/ui/overlay/impl/delegations-overlay-v2.d.ts +28 -0
  445. package/dist/ui/overlay/impl/delegations-overlay-v2.js +279 -0
  446. package/dist/ui/overlay/impl/docs-overlay-v2.d.ts +45 -0
  447. package/dist/ui/overlay/impl/docs-overlay-v2.js +117 -0
  448. package/dist/ui/overlay/impl/document-detail-overlay-v2.d.ts +84 -0
  449. package/dist/ui/overlay/impl/document-detail-overlay-v2.js +1112 -0
  450. package/dist/ui/overlay/impl/filter-overlay-v2.d.ts +41 -0
  451. package/dist/ui/overlay/impl/filter-overlay-v2.js +110 -0
  452. package/dist/ui/overlay/impl/games-overlay-v2.d.ts +31 -0
  453. package/dist/ui/overlay/impl/games-overlay-v2.js +135 -0
  454. package/dist/ui/overlay/impl/guardrail-overlay-v2.d.ts +43 -0
  455. package/dist/ui/overlay/impl/guardrail-overlay-v2.js +114 -0
  456. package/dist/ui/overlay/impl/help-overlay-v2.d.ts +57 -0
  457. package/dist/ui/overlay/impl/help-overlay-v2.js +287 -0
  458. package/dist/ui/overlay/impl/init-setup-overlay-v2.d.ts +25 -0
  459. package/dist/ui/overlay/impl/init-setup-overlay-v2.js +97 -0
  460. package/dist/ui/overlay/impl/iteration-limit-overlay-v2.d.ts +35 -0
  461. package/dist/ui/overlay/impl/iteration-limit-overlay-v2.js +105 -0
  462. package/dist/ui/overlay/impl/keys-overlay-v2.d.ts +41 -0
  463. package/dist/ui/overlay/impl/keys-overlay-v2.js +248 -0
  464. package/dist/ui/overlay/impl/login-overlay-v2.d.ts +49 -0
  465. package/dist/ui/overlay/impl/login-overlay-v2.js +277 -0
  466. package/dist/ui/overlay/impl/mascot-overlay-v2.d.ts +41 -0
  467. package/dist/ui/overlay/impl/mascot-overlay-v2.js +138 -0
  468. package/dist/ui/overlay/impl/mcp-overlay-v2.d.ts +63 -0
  469. package/dist/ui/overlay/impl/mcp-overlay-v2.js +907 -0
  470. package/dist/ui/overlay/impl/model-overlay-v2.d.ts +93 -0
  471. package/dist/ui/overlay/impl/model-overlay-v2.js +1143 -0
  472. package/dist/ui/overlay/impl/model-warning-overlay-v2.d.ts +46 -0
  473. package/dist/ui/overlay/impl/model-warning-overlay-v2.js +132 -0
  474. package/dist/ui/overlay/impl/new-overlay-v2.d.ts +108 -0
  475. package/dist/ui/overlay/impl/new-overlay-v2.js +1243 -0
  476. package/dist/ui/overlay/impl/notifications-overlay-v2.d.ts +20 -0
  477. package/dist/ui/overlay/impl/notifications-overlay-v2.js +116 -0
  478. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.d.ts +76 -0
  479. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.js +728 -0
  480. package/dist/ui/overlay/impl/pending-overlay-v2.d.ts +51 -0
  481. package/dist/ui/overlay/impl/pending-overlay-v2.js +445 -0
  482. package/dist/ui/overlay/impl/permission-overlay-v2.d.ts +36 -0
  483. package/dist/ui/overlay/impl/permission-overlay-v2.js +380 -0
  484. package/dist/ui/overlay/impl/permissions-overlay-v2.d.ts +85 -0
  485. package/dist/ui/overlay/impl/permissions-overlay-v2.js +820 -0
  486. package/dist/ui/overlay/impl/plan-approval-overlay-v2.d.ts +35 -0
  487. package/dist/ui/overlay/impl/plan-approval-overlay-v2.js +181 -0
  488. package/dist/ui/overlay/impl/project-edit-overlay-v2.d.ts +36 -0
  489. package/dist/ui/overlay/impl/project-edit-overlay-v2.js +195 -0
  490. package/dist/ui/overlay/impl/projects-overlay-v2.d.ts +37 -0
  491. package/dist/ui/overlay/impl/projects-overlay-v2.js +733 -0
  492. package/dist/ui/overlay/impl/reset-overlay-v2.d.ts +39 -0
  493. package/dist/ui/overlay/impl/reset-overlay-v2.js +107 -0
  494. package/dist/ui/overlay/impl/resume-overlay-v2.d.ts +60 -0
  495. package/dist/ui/overlay/impl/resume-overlay-v2.js +414 -0
  496. package/dist/ui/overlay/impl/session-mode-overlay-v2.d.ts +43 -0
  497. package/dist/ui/overlay/impl/session-mode-overlay-v2.js +124 -0
  498. package/dist/ui/overlay/impl/tasks-overlay-v2.d.ts +28 -0
  499. package/dist/ui/overlay/impl/tasks-overlay-v2.js +283 -0
  500. package/dist/ui/overlay/impl/team-overlay-v2.d.ts +86 -0
  501. package/dist/ui/overlay/impl/team-overlay-v2.js +692 -0
  502. package/dist/ui/overlay/impl/terminals-overlay-v2.d.ts +26 -0
  503. package/dist/ui/overlay/impl/terminals-overlay-v2.js +217 -0
  504. package/dist/ui/overlay/impl/theme-overlay-v2.d.ts +42 -0
  505. package/dist/ui/overlay/impl/theme-overlay-v2.js +135 -0
  506. package/dist/ui/overlay/impl/tools-overlay-v2.d.ts +47 -0
  507. package/dist/ui/overlay/impl/tools-overlay-v2.js +214 -0
  508. package/dist/ui/overlay/impl/tutorial-overlay-v2.d.ts +45 -0
  509. package/dist/ui/overlay/impl/tutorial-overlay-v2.js +212 -0
  510. package/dist/ui/overlay/impl/workflow-overlay-v2.d.ts +80 -0
  511. package/dist/ui/overlay/impl/workflow-overlay-v2.js +641 -0
  512. package/dist/ui/overlay/index.d.ts +52 -0
  513. package/dist/ui/overlay/index.js +54 -0
  514. package/dist/ui/overlay/key-utils.d.ts +6 -0
  515. package/dist/ui/overlay/key-utils.js +6 -0
  516. package/dist/ui/overlay/types.d.ts +140 -0
  517. package/dist/ui/overlay/types.js +22 -0
  518. package/dist/ui/overlay-manager.d.ts +43 -0
  519. package/dist/ui/overlay-manager.js +238 -0
  520. package/dist/ui/overlays.d.ts +0 -4
  521. package/dist/ui/overlays.js +4 -460
  522. package/dist/ui/permission-overlay.d.ts +1 -1
  523. package/dist/ui/permission-overlay.js +189 -300
  524. package/dist/ui/providers/types.d.ts +178 -0
  525. package/dist/ui/providers/types.js +9 -0
  526. package/dist/ui/render-modes.d.ts +36 -0
  527. package/dist/ui/render-modes.js +44 -0
  528. package/dist/ui/startup-menu.d.ts +36 -0
  529. package/dist/ui/startup-menu.js +236 -0
  530. package/dist/ui/status-bar-controller.d.ts +33 -0
  531. package/dist/ui/status-bar-controller.js +99 -0
  532. package/dist/ui/subagent-renderer.d.ts +117 -0
  533. package/dist/ui/subagent-renderer.js +318 -0
  534. package/dist/ui/terminal-autocomplete-utils.d.ts +23 -0
  535. package/dist/ui/terminal-autocomplete-utils.js +83 -0
  536. package/dist/ui/terminal-codes.d.ts +94 -0
  537. package/dist/ui/terminal-codes.js +124 -0
  538. package/dist/ui/terminal-line-builders.d.ts +17 -0
  539. package/dist/ui/terminal-line-builders.js +42 -0
  540. package/dist/ui/terminal-render-item.d.ts +16 -0
  541. package/dist/ui/terminal-render-item.js +267 -0
  542. package/dist/ui/terminal-renderer.d.ts +220 -0
  543. package/dist/ui/terminal-renderer.js +750 -0
  544. package/dist/ui/terminal-types.d.ts +179 -0
  545. package/dist/ui/terminal-types.js +34 -0
  546. package/dist/ui/terminal-ui.d.ts +331 -0
  547. package/dist/ui/terminal-ui.js +819 -0
  548. package/dist/ui/terminal.d.ts +20 -0
  549. package/dist/ui/terminal.js +72 -0
  550. package/dist/ui/todo-zone.d.ts +19 -1
  551. package/dist/ui/todo-zone.js +124 -38
  552. package/dist/ui/tool-formatters.d.ts +16 -0
  553. package/dist/ui/tool-formatters.js +1027 -0
  554. package/dist/ui/turn-metrics.d.ts +56 -0
  555. package/dist/ui/turn-metrics.js +75 -0
  556. package/dist/ui/types.d.ts +28 -0
  557. package/dist/ui/types.js +1 -0
  558. package/dist/ui/vscode-diff-ipc.d.ts +102 -0
  559. package/dist/ui/vscode-diff-ipc.js +385 -0
  560. package/dist/utils/credentials.d.ts +24 -5
  561. package/dist/utils/credentials.js +123 -9
  562. package/dist/utils/debug-log.d.ts +28 -0
  563. package/dist/utils/debug-log.js +57 -0
  564. package/dist/utils/format-tokens.d.ts +13 -0
  565. package/dist/utils/format-tokens.js +18 -0
  566. package/dist/utils/git-config.d.ts +26 -0
  567. package/dist/utils/git-config.js +54 -0
  568. package/dist/utils/message-utils.d.ts +61 -0
  569. package/dist/utils/message-utils.js +72 -0
  570. package/dist/utils/model-tiers.d.ts +8 -1
  571. package/dist/utils/model-tiers.js +39 -17
  572. package/dist/utils/open-browser.d.ts +5 -0
  573. package/dist/utils/open-browser.js +32 -0
  574. package/dist/utils/path-safety.d.ts +56 -0
  575. package/dist/utils/path-safety.js +240 -0
  576. package/dist/utils/project-detection.d.ts +58 -0
  577. package/dist/utils/project-detection.js +424 -0
  578. package/dist/utils/project-memory.js +2 -1
  579. package/dist/utils/project-status.d.ts +2 -2
  580. package/dist/utils/startup-perf.d.ts +18 -0
  581. package/dist/utils/startup-perf.js +60 -0
  582. package/dist/utils/token-tracker.d.ts +62 -0
  583. package/dist/utils/token-tracker.js +150 -0
  584. package/dist/utils/token-types.d.ts +23 -0
  585. package/dist/utils/token-types.js +18 -0
  586. package/dist/utils/types/config-types.d.ts +32 -0
  587. package/dist/utils/types/config-types.js +8 -0
  588. package/dist/utils/update-checker.d.ts +28 -0
  589. package/dist/utils/update-checker.js +106 -0
  590. package/dist/utils/version.d.ts +7 -0
  591. package/dist/utils/version.js +10 -0
  592. package/dist/utils/vscode-detect.d.ts +39 -0
  593. package/dist/utils/vscode-detect.js +137 -0
  594. package/dist/workflow/guided-mode-injector.d.ts +42 -0
  595. package/dist/workflow/guided-mode-injector.js +191 -0
  596. package/dist/workflow/index.d.ts +8 -0
  597. package/dist/workflow/index.js +8 -0
  598. package/dist/workflow/step-criteria.d.ts +62 -0
  599. package/dist/workflow/step-criteria.js +150 -0
  600. package/dist/workflow/step-tracker.d.ts +92 -0
  601. package/dist/workflow/step-tracker.js +141 -0
  602. package/package.json +32 -12
  603. package/dist/index.old.d.ts +0 -7
  604. package/dist/index.old.js +0 -1014
  605. package/dist/repl.d.ts +0 -121
  606. package/dist/repl.js +0 -1878
  607. package/dist/templates/claude-md.d.ts +0 -7
  608. package/dist/templates/claude-md.js +0 -189
  609. package/dist/test-autocomplete.d.ts +0 -7
  610. package/dist/test-autocomplete.js +0 -85
  611. package/dist/test-tabbed-menu.d.ts +0 -7
  612. package/dist/test-tabbed-menu.js +0 -25
  613. package/dist/tool-selector.d.ts +0 -71
  614. package/dist/tool-selector.js +0 -184
  615. package/dist/ui/agents-overlay.d.ts +0 -12
  616. package/dist/ui/agents-overlay.js +0 -501
  617. package/dist/ui/arch-type-overlay.d.ts +0 -20
  618. package/dist/ui/arch-type-overlay.js +0 -229
  619. package/dist/ui/backlog-overlay.d.ts +0 -17
  620. package/dist/ui/backlog-overlay.js +0 -786
  621. package/dist/ui/commands-overlay.d.ts +0 -11
  622. package/dist/ui/commands-overlay.js +0 -410
  623. package/dist/ui/config-overlay.d.ts +0 -34
  624. package/dist/ui/config-overlay.js +0 -977
  625. package/dist/ui/init-overlay.d.ts +0 -24
  626. package/dist/ui/init-overlay.js +0 -525
  627. package/dist/ui/input-prompt-v2.d.ts +0 -179
  628. package/dist/ui/input-prompt-v2.js +0 -991
  629. package/dist/ui/model-warning-overlay.d.ts +0 -30
  630. package/dist/ui/model-warning-overlay.js +0 -171
  631. package/dist/ui/tools-overlay.d.ts +0 -26
  632. package/dist/ui/tools-overlay.js +0 -278
  633. package/dist/ui/tutorial-overlay.d.ts +0 -10
  634. package/dist/ui/tutorial-overlay.js +0 -936
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Terminals Overlay V2 - View active terminal sessions
3
+ *
4
+ * Shows all CLI instances currently registered in the session registry.
5
+ * Provides list and detail views for multi-terminal awareness.
6
+ */
7
+ import { BaseOverlayV2 } from '../../base/overlay-base-v2.js';
8
+ import type { RenderContext, OverlayAction, KeyEvent } from '../index.js';
9
+ interface TerminalsOverlayState {
10
+ selectedIndex: number;
11
+ screen: 'list' | 'detail';
12
+ detailSessionId: string | null;
13
+ }
14
+ export declare class TerminalsOverlayV2 extends BaseOverlayV2<TerminalsOverlayState> {
15
+ readonly type: "inline";
16
+ readonly id = "terminals-overlay";
17
+ constructor();
18
+ protected renderContent(context: RenderContext): string[];
19
+ private renderList;
20
+ private formatSessionLine;
21
+ private renderDetail;
22
+ handleKey(key: KeyEvent): OverlayAction<void>;
23
+ private handleListKey;
24
+ private handleDetailKey;
25
+ }
26
+ export {};
@@ -0,0 +1,217 @@
1
+ /**
2
+ * Terminals Overlay V2 - View active terminal sessions
3
+ *
4
+ * Shows all CLI instances currently registered in the session registry.
5
+ * Provides list and detail views for multi-terminal awareness.
6
+ */
7
+ import { BaseOverlayV2 } from '../../base/overlay-base-v2.js';
8
+ import { getSessionRegistry, getActiveTerminalSessionId } from '../../../multi-agent/session-registry.js';
9
+ import { getDb } from '../../../db/index.js';
10
+ /**
11
+ * Format a relative time string from a SQLite CURRENT_TIMESTAMP datetime.
12
+ * SQLite stores UTC but without a 'Z' suffix, so we append it.
13
+ */
14
+ function formatRelativeTime(sqliteDatetime) {
15
+ const now = Date.now();
16
+ const utcStr = sqliteDatetime.endsWith('Z') ? sqliteDatetime : sqliteDatetime + 'Z';
17
+ const then = new Date(utcStr).getTime();
18
+ const diffMs = now - then;
19
+ const diffSec = Math.floor(diffMs / 1000);
20
+ if (diffSec < 60)
21
+ return `${String(diffSec)}s ago`;
22
+ const diffMin = Math.floor(diffSec / 60);
23
+ if (diffMin < 60)
24
+ return `${String(diffMin)}m ago`;
25
+ const diffHr = Math.floor(diffMin / 60);
26
+ return `${String(diffHr)}h ${String(diffMin % 60)}m ago`;
27
+ }
28
+ /**
29
+ * Cache of project_id → display_name lookups.
30
+ * Refreshed each time the overlay renders.
31
+ */
32
+ function getProjectName(projectId) {
33
+ if (projectId === null)
34
+ return null;
35
+ try {
36
+ const row = getDb().prepare('SELECT display_name FROM projects WHERE id = ?').get(projectId);
37
+ return row?.display_name ?? null;
38
+ }
39
+ catch {
40
+ return null;
41
+ }
42
+ }
43
+ export class TerminalsOverlayV2 extends BaseOverlayV2 {
44
+ type = 'inline';
45
+ id = 'terminals-overlay';
46
+ constructor() {
47
+ super({
48
+ selectedIndex: 0,
49
+ screen: 'list',
50
+ detailSessionId: null,
51
+ });
52
+ }
53
+ renderContent(context) {
54
+ this.minHeight = this.state.screen === 'detail' ? 18 : 12;
55
+ if (this.state.screen === 'detail') {
56
+ return this.renderDetail(context);
57
+ }
58
+ return this.renderList(context);
59
+ }
60
+ renderList(context) {
61
+ const s = context.styles;
62
+ const lines = [];
63
+ // Header
64
+ lines.push(...this.renderHeader('Active Terminals'));
65
+ const registry = getSessionRegistry();
66
+ const sessions = registry?.getActiveSessions() ?? [];
67
+ const currentId = getActiveTerminalSessionId();
68
+ // Ensure selected index is valid
69
+ if (this.state.selectedIndex >= sessions.length) {
70
+ this.state.selectedIndex = Math.max(0, sessions.length - 1);
71
+ }
72
+ if (sessions.length === 0) {
73
+ lines.push(s.muted(' No active terminal sessions.'));
74
+ lines.push('');
75
+ }
76
+ else {
77
+ for (let i = 0; i < sessions.length; i++) {
78
+ const session = sessions[i];
79
+ const isSelected = i === this.state.selectedIndex;
80
+ const line = this.formatSessionLine(session, currentId, s);
81
+ if (isSelected) {
82
+ lines.push(s.selected(` ${s.primary('›')} ${line} `));
83
+ }
84
+ else {
85
+ lines.push(` ${line}`);
86
+ }
87
+ }
88
+ lines.push('');
89
+ }
90
+ // Footer
91
+ if (sessions.length > 0) {
92
+ lines.push(...this.renderFooter('↑↓ navigate · Enter view · Esc close'));
93
+ }
94
+ else {
95
+ lines.push(...this.renderFooter('Esc close'));
96
+ }
97
+ return lines;
98
+ }
99
+ formatSessionLine(session, currentId, s) {
100
+ const shortId = session.id.slice(0, 8);
101
+ const isSelf = session.id === currentId;
102
+ const selfTag = isSelf ? s.success(' (this)') : '';
103
+ const age = formatRelativeTime(session.last_heartbeat);
104
+ // Parse agent count
105
+ let agentCount = 0;
106
+ try {
107
+ const agents = JSON.parse(session.agents_json);
108
+ agentCount = agents.length;
109
+ }
110
+ catch {
111
+ // Ignore parse errors
112
+ }
113
+ const agentInfo = agentCount > 0
114
+ ? `${String(agentCount)} agents`
115
+ : session.active_agent;
116
+ const label = session.label ? s.muted(session.label) : '';
117
+ // Show project name (muted) if assigned
118
+ const projectName = getProjectName(session.project_id);
119
+ const projectTag = projectName ? s.muted(` [${projectName}]`) : '';
120
+ return `${s.secondary(shortId)}${selfTag} pid:${String(session.pid)} ${agentInfo} ${label}${projectTag} ${s.muted(age)}`;
121
+ }
122
+ renderDetail(context) {
123
+ const s = context.styles;
124
+ const lines = [];
125
+ const registry = getSessionRegistry();
126
+ const sessions = registry?.getActiveSessions() ?? [];
127
+ const session = sessions.find(sess => sess.id === this.state.detailSessionId);
128
+ const currentId = getActiveTerminalSessionId();
129
+ // Header
130
+ const shortId = this.state.detailSessionId?.slice(0, 8) ?? 'unknown';
131
+ lines.push(...this.renderHeader(`Terminal: ${shortId}`));
132
+ if (!session) {
133
+ lines.push(s.error(' Session not found (may have expired)'));
134
+ lines.push('');
135
+ lines.push(...this.renderFooter('Esc back'));
136
+ return lines;
137
+ }
138
+ const isSelf = session.id === currentId;
139
+ // Info section
140
+ const projectName = getProjectName(session.project_id);
141
+ lines.push(` ${s.primaryBold('Session ID:')} ${session.id}${isSelf ? s.success(' (this terminal)') : ''}`);
142
+ lines.push(` ${s.primaryBold('PID:')} ${String(session.pid)}`);
143
+ lines.push(` ${s.primaryBold('TTY:')} ${session.tty_path ?? s.muted('unknown')}`);
144
+ lines.push(` ${s.primaryBold('Label:')} ${session.label ?? s.muted('none')}`);
145
+ lines.push(` ${s.primaryBold('Project:')} ${projectName ?? s.muted('none')}`);
146
+ lines.push(` ${s.primaryBold('Active:')} ${session.active_agent}`);
147
+ lines.push(` ${s.primaryBold('Started:')} ${formatRelativeTime(session.started_at)}`);
148
+ lines.push(` ${s.primaryBold('Heartbeat:')} ${formatRelativeTime(session.last_heartbeat)}`);
149
+ lines.push('');
150
+ lines.push(this.renderBorder());
151
+ // Agents section
152
+ let agents = [];
153
+ try {
154
+ agents = JSON.parse(session.agents_json);
155
+ }
156
+ catch {
157
+ // Ignore parse errors
158
+ }
159
+ if (agents.length > 0) {
160
+ lines.push(` ${s.secondary('Agent Roster:')}`);
161
+ lines.push('');
162
+ for (const agent of agents) {
163
+ const isActive = agent.id === session.active_agent;
164
+ const activeMarker = isActive ? s.success(' ●') : '';
165
+ lines.push(` ${agent.mascot} ${s.primaryBold(agent.displayName)} (${s.muted(agent.id)})${activeMarker}`);
166
+ }
167
+ }
168
+ else {
169
+ lines.push(` ${s.muted(' No agents registered')}`);
170
+ }
171
+ lines.push('');
172
+ lines.push(...this.renderFooter('Esc back'));
173
+ return lines;
174
+ }
175
+ handleKey(key) {
176
+ if (this.isCloseKey(key)) {
177
+ if (this.state.screen === 'detail') {
178
+ this.state.screen = 'list';
179
+ this.state.detailSessionId = null;
180
+ return this.rerender();
181
+ }
182
+ return this.close(undefined);
183
+ }
184
+ if (this.state.screen === 'detail') {
185
+ return this.handleDetailKey(key);
186
+ }
187
+ return this.handleListKey(key);
188
+ }
189
+ handleListKey(key) {
190
+ const registry = getSessionRegistry();
191
+ const sessions = registry?.getActiveSessions() ?? [];
192
+ if (this.isUpKey(key)) {
193
+ if (this.state.selectedIndex > 0) {
194
+ this.state.selectedIndex--;
195
+ }
196
+ return this.rerender();
197
+ }
198
+ if (this.isDownKey(key)) {
199
+ if (this.state.selectedIndex < sessions.length - 1) {
200
+ this.state.selectedIndex++;
201
+ }
202
+ return this.rerender();
203
+ }
204
+ if (this.isEnterKey(key)) {
205
+ if (sessions.length > 0 && sessions[this.state.selectedIndex]) {
206
+ this.state.screen = 'detail';
207
+ this.state.detailSessionId = sessions[this.state.selectedIndex].id;
208
+ }
209
+ return this.rerender();
210
+ }
211
+ return this.noAction();
212
+ }
213
+ handleDetailKey(_key) {
214
+ // Detail screen only supports Esc (handled above)
215
+ return this.noAction();
216
+ }
217
+ }
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Theme Overlay V2
3
+ *
4
+ * Theme selection overlay using TabbedListOverlayV2 for the new Overlay interface.
5
+ * Works with TerminalUI's overlay management.
6
+ *
7
+ * Features:
8
+ * - Tabs: Curated (top picks), All, Dark, Light
9
+ * - Search mode with / toggle
10
+ * - Live preview with syntax highlighting
11
+ * - Persists selection to settings
12
+ */
13
+ import { TabbedListOverlayV2 } from '../../base/index.js';
14
+ import type { KeyEvent, OverlayAction } from '../index.js';
15
+ import { type Theme } from '../../../themes/index.js';
16
+ export interface ThemeOverlayOptions {
17
+ /** Current theme ID (for highlighting current selection) */
18
+ currentThemeId?: string;
19
+ }
20
+ export interface ThemeOverlayResult {
21
+ /** Selected theme ID (if changed) */
22
+ themeChanged?: string;
23
+ /** Selected theme name */
24
+ themeName?: string;
25
+ }
26
+ /**
27
+ * Theme overlay using the new Overlay interface.
28
+ * Displays available themes in a searchable, tabbed list with preview.
29
+ */
30
+ export declare class ThemeOverlayV2 extends TabbedListOverlayV2<Theme, ThemeOverlayResult> {
31
+ readonly type: "inline";
32
+ readonly id = "theme-overlay-v2";
33
+ private readonly currentThemeId;
34
+ private readonly curatedIds;
35
+ constructor(options?: ThemeOverlayOptions);
36
+ handleKey(key: KeyEvent): OverlayAction<ThemeOverlayResult>;
37
+ private selectTheme;
38
+ /**
39
+ * Optional summary shown after overlay closes.
40
+ */
41
+ getCloseSummary(result: ThemeOverlayResult): string | null;
42
+ }
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Theme Overlay V2
3
+ *
4
+ * Theme selection overlay using TabbedListOverlayV2 for the new Overlay interface.
5
+ * Works with TerminalUI's overlay management.
6
+ *
7
+ * Features:
8
+ * - Tabs: Curated (top picks), All, Dark, Light
9
+ * - Search mode with / toggle
10
+ * - Live preview with syntax highlighting
11
+ * - Persists selection to settings
12
+ */
13
+ import chalk from 'chalk';
14
+ import { TabbedListOverlayV2, } from '../../base/index.js';
15
+ import { getCuratedThemes, getCurrentTheme, setCurrentTheme, getAllThemes, getThemeCount, clearStyleCache, } from '../../../themes/index.js';
16
+ // =============================================================================
17
+ // Constants
18
+ // =============================================================================
19
+ const PAGE_SIZE = 10;
20
+ const TABS = [
21
+ { id: 'curated', label: 'Curated' },
22
+ { id: 'all', label: 'All' },
23
+ { id: 'dark', label: 'Dark' },
24
+ { id: 'light', label: 'Light' },
25
+ ];
26
+ // =============================================================================
27
+ // Helper Functions
28
+ // =============================================================================
29
+ function renderPreview(theme, styles) {
30
+ const lines = [];
31
+ const colors = theme.colors;
32
+ lines.push(styles.muted(' Preview:'));
33
+ // Use chalk for hex colors in preview
34
+ const primary = chalk.hex(colors.primary);
35
+ const secondary = chalk.hex(colors.secondary || colors.primary);
36
+ const muted = chalk.hex(colors.muted);
37
+ const fg = chalk.hex(colors.foreground);
38
+ lines.push(' ' + primary.bold('function') + ' ' + secondary('greet') + fg('() {'));
39
+ lines.push(' ' + muted('// Say hello'));
40
+ lines.push(' ' + fg('console.') + secondary('log') + fg('("Hello, ') + primary('World') + fg('!");'));
41
+ lines.push(' ' + fg('}'));
42
+ return lines;
43
+ }
44
+ // =============================================================================
45
+ // Theme Overlay V2 Class
46
+ // =============================================================================
47
+ /**
48
+ * Theme overlay using the new Overlay interface.
49
+ * Displays available themes in a searchable, tabbed list with preview.
50
+ */
51
+ export class ThemeOverlayV2 extends TabbedListOverlayV2 {
52
+ type = 'inline';
53
+ id = 'theme-overlay-v2';
54
+ currentThemeId;
55
+ curatedIds;
56
+ constructor(options = {}) {
57
+ const currentTheme = getCurrentTheme();
58
+ const currentThemeId = options.currentThemeId ?? currentTheme.id;
59
+ const curatedThemes = getCuratedThemes();
60
+ const curatedIds = new Set(curatedThemes.map(t => t.id));
61
+ const allThemes = getAllThemes();
62
+ const counts = getThemeCount();
63
+ super({
64
+ title: `Select Theme (${String(counts.total)})`,
65
+ tabs: TABS,
66
+ items: allThemes,
67
+ pageSize: PAGE_SIZE,
68
+ showCount: false, // We show count in title
69
+ filterByTab: (theme, tabId) => {
70
+ switch (tabId) {
71
+ case 'curated':
72
+ return curatedIds.has(theme.id);
73
+ case 'dark':
74
+ return theme.type === 'dark';
75
+ case 'light':
76
+ return theme.type === 'light';
77
+ default:
78
+ return true; // 'all'
79
+ }
80
+ },
81
+ getSearchText: (theme) => {
82
+ return `${theme.name} ${theme.id}`;
83
+ },
84
+ renderItem: (theme, isSelected, styles) => {
85
+ const isCurrent = theme.id === currentThemeId;
86
+ const prefix = isSelected ? styles.primary('> ') : ' ';
87
+ const icon = theme.type === 'dark' ? 'D' : 'L';
88
+ const checkmark = isCurrent ? styles.success(' *') : '';
89
+ // Pad the plain name first, then apply styling (ANSI codes break padEnd)
90
+ const paddedName = theme.name.padEnd(33);
91
+ const label = isSelected ? styles.primary(paddedName) : paddedName;
92
+ return ` ${prefix}${label}${icon}${checkmark}`;
93
+ },
94
+ renderSelectedPreview: (theme, styles) => {
95
+ return renderPreview(theme, styles);
96
+ },
97
+ footerHints: (searchMode) => {
98
+ if (searchMode) {
99
+ return 'Type to filter · ↑↓/jk Navigate · Enter Select · Esc Exit search';
100
+ }
101
+ return 'Tab Filter · ↑↓/jk · ←→/hl Pages · / Search · Enter Select · q/Esc Close';
102
+ },
103
+ emptyMessage: 'No themes available.',
104
+ noResultsMessage: 'No themes match the search.',
105
+ });
106
+ this.currentThemeId = currentThemeId;
107
+ this.curatedIds = curatedIds;
108
+ }
109
+ handleKey(key) {
110
+ // Handle Enter/Space to select theme
111
+ if ((key.name === 'return' || key.name === 'space') && this.state.filteredItems.length > 0) {
112
+ const theme = this.state.filteredItems[this.state.selectedIndex];
113
+ return this.selectTheme(theme);
114
+ }
115
+ // Let parent handle other keys
116
+ return super.handleKey(key);
117
+ }
118
+ selectTheme(theme) {
119
+ setCurrentTheme(theme.id);
120
+ clearStyleCache();
121
+ return this.close({
122
+ themeChanged: theme.id,
123
+ themeName: theme.name,
124
+ });
125
+ }
126
+ /**
127
+ * Optional summary shown after overlay closes.
128
+ */
129
+ getCloseSummary(result) {
130
+ if (result.themeName) {
131
+ return `Theme changed to: ${result.themeName}`;
132
+ }
133
+ return null;
134
+ }
135
+ }
@@ -0,0 +1,47 @@
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
+ }
@@ -0,0 +1,214 @@
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, truncate, } 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
+ description = truncate(description, MAX_DESCRIPTION_LENGTH);
112
+ const wrappedDesc = wrapText(description, cols - 6);
113
+ for (const line of wrappedDesc) {
114
+ lines.push(` ${s.secondary(line)}`);
115
+ }
116
+ lines.push('');
117
+ // Parameters
118
+ if (this.tool.parameters && this.tool.parameters.length > 0) {
119
+ // Sort: required first, then optional
120
+ const sorted = [...this.tool.parameters].sort((a, b) => {
121
+ if (a.required && !b.required)
122
+ return -1;
123
+ if (!a.required && b.required)
124
+ return 1;
125
+ return 0;
126
+ });
127
+ const shown = sorted.slice(0, MAX_PARAMETERS_SHOWN);
128
+ const hidden = sorted.length - shown.length;
129
+ lines.push(` ${s.muted('Parameters:')}`);
130
+ for (const param of shown) {
131
+ const requiredBadge = param.required ? s.warning('*') : ' ';
132
+ const typeStr = s.muted(`(${param.type})`);
133
+ lines.push(` ${requiredBadge} ${s.secondary(param.name)} ${typeStr}`);
134
+ }
135
+ if (hidden > 0) {
136
+ lines.push(` ${s.muted(` + ${String(hidden)} more optional parameters`)}`);
137
+ }
138
+ lines.push('');
139
+ lines.push(` ${s.muted('* = required')}`);
140
+ }
141
+ else {
142
+ lines.push(` ${s.muted('Parameters:')} ${s.muted('None')}`);
143
+ }
144
+ // Footer
145
+ lines.push(border);
146
+ lines.push(` ${s.muted('q/Esc Back')}`);
147
+ lines.push(border);
148
+ return lines;
149
+ }
150
+ handleKey(data) {
151
+ // Ctrl+C closes overlay completely
152
+ if (isCtrlC(data)) {
153
+ return closeOverlay({ dismissed: true });
154
+ }
155
+ // Esc or q goes back to list
156
+ if (isEscape(data) || isClose(data)) {
157
+ return popScreen();
158
+ }
159
+ return stay(false);
160
+ }
161
+ /**
162
+ * Minimum height for stable rendering.
163
+ */
164
+ getMinHeight() {
165
+ return 20;
166
+ }
167
+ }
168
+ // =============================================================================
169
+ // Tools Overlay V2 Class
170
+ // =============================================================================
171
+ /**
172
+ * Tools overlay using the new Overlay interface.
173
+ * Displays available tools in a searchable, tabbed list.
174
+ */
175
+ export class ToolsOverlayV2 extends TabbedListOverlayV2 {
176
+ type = 'inline';
177
+ id = 'tools-overlay-v2';
178
+ constructor(options) {
179
+ // Sort tools alphabetically
180
+ const sortedTools = [...options.tools].sort((a, b) => a.name.localeCompare(b.name));
181
+ super({
182
+ title: 'Available Tools',
183
+ tabs: TOOL_TABS,
184
+ items: sortedTools,
185
+ pageSize: PAGE_SIZE,
186
+ filterByTab: (tool, tabId) => toolMatchesCategory(tool.name, tabId),
187
+ getSearchText: (tool) => `${tool.name} ${tool.description ?? ''}`,
188
+ renderItem: (tool, isSelected, styles) => {
189
+ const cols = terminal.getTerminalWidth();
190
+ const descWidth = Math.max(20, cols - NAME_WIDTH - 10);
191
+ const cursor = isSelected ? styles.primary('> ') : ' ';
192
+ const name = isSelected
193
+ ? styles.primary(tool.name.padEnd(NAME_WIDTH))
194
+ : styles.muted(tool.name.padEnd(NAME_WIDTH));
195
+ // Normalize and truncate description
196
+ const normalizedDesc = normalizeText(tool.description ?? '');
197
+ const desc = truncate(normalizedDesc, descWidth);
198
+ const descColor = isSelected ? styles.secondary(desc) : styles.muted(desc);
199
+ return ` ${cursor}${name} ${descColor}`;
200
+ },
201
+ footerHints: (searchMode) => {
202
+ if (searchMode) {
203
+ return 'Type to filter · ↑↓/jk Navigate · Enter Details · Esc Exit search';
204
+ }
205
+ return 'Tab Filter · ↑↓/jk · ←→/hl Pages · / Search · Enter Details · q/Esc Close';
206
+ },
207
+ emptyMessage: 'No tools available.',
208
+ noResultsMessage: 'No tools match the current filter.',
209
+ });
210
+ }
211
+ createDetailScreen(tool) {
212
+ return new ToolDetailScreen(tool, this.getStyles());
213
+ }
214
+ }