@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,39 @@
1
+ /**
2
+ * Reset Overlay V2
3
+ *
4
+ * Modal overlay for resetting/clearing the conversation within the current project.
5
+ * Provides options for:
6
+ * - Reset & reload context: Clear messages, refresh COMPILR.md
7
+ * - Reset only: Clear messages, keep current context
8
+ * - Cancel: Keep current session
9
+ */
10
+ import { BaseOverlayV2 } from '../../base/index.js';
11
+ import type { RenderContext, OverlayAction, KeyEvent } from '../types.js';
12
+ export type ResetOption = 'reset-reload' | 'reset-only' | 'delete-history' | 'cancel';
13
+ interface ResetState {
14
+ /** Selected option index */
15
+ selectedIndex: number;
16
+ }
17
+ export interface ResetOverlayV2Options {
18
+ /** Project name for display */
19
+ projectName: string;
20
+ /** Number of messages in current session */
21
+ messageCount: number;
22
+ /** Estimated token usage */
23
+ tokenCount?: number;
24
+ }
25
+ export interface ResetOverlayV2Result {
26
+ /** Selected option */
27
+ option: ResetOption;
28
+ }
29
+ export declare class ResetOverlayV2 extends BaseOverlayV2<ResetState, ResetOverlayV2Result> {
30
+ readonly type: "inline";
31
+ readonly id = "reset-overlay-v2";
32
+ private readonly projectName;
33
+ private readonly messageCount;
34
+ private readonly tokenCount?;
35
+ constructor(options: ResetOverlayV2Options);
36
+ protected renderContent(context: RenderContext): string[];
37
+ handleKey(key: KeyEvent): OverlayAction<ResetOverlayV2Result>;
38
+ }
39
+ export {};
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Reset Overlay V2
3
+ *
4
+ * Modal overlay for resetting/clearing the conversation within the current project.
5
+ * Provides options for:
6
+ * - Reset & reload context: Clear messages, refresh COMPILR.md
7
+ * - Reset only: Clear messages, keep current context
8
+ * - Cancel: Keep current session
9
+ */
10
+ import { BaseOverlayV2, renderBorder, formatTokens } from '../../base/index.js';
11
+ const RESET_OPTIONS = [
12
+ {
13
+ id: 'reset-reload',
14
+ label: 'Reset & reload context',
15
+ description: 'Clear messages, refresh COMPILR.md and project context',
16
+ },
17
+ {
18
+ id: 'reset-only',
19
+ label: 'Reset only',
20
+ description: 'Clear messages, keep current context',
21
+ },
22
+ {
23
+ id: 'delete-history',
24
+ label: 'Delete conversation history',
25
+ description: 'Delete all archived sessions for this project',
26
+ },
27
+ {
28
+ id: 'cancel',
29
+ label: 'Cancel',
30
+ description: 'Keep current session',
31
+ },
32
+ ];
33
+ // =============================================================================
34
+ // Reset Overlay V2 Class
35
+ // =============================================================================
36
+ export class ResetOverlayV2 extends BaseOverlayV2 {
37
+ type = 'inline';
38
+ id = 'reset-overlay-v2';
39
+ projectName;
40
+ messageCount;
41
+ tokenCount;
42
+ constructor(options) {
43
+ super({ selectedIndex: 0 });
44
+ this.projectName = options.projectName;
45
+ this.messageCount = options.messageCount;
46
+ this.tokenCount = options.tokenCount;
47
+ this.minHeight = 18;
48
+ }
49
+ renderContent(context) {
50
+ const s = context.styles;
51
+ const border = renderBorder(context.width, s);
52
+ const lines = [];
53
+ lines.push(border);
54
+ lines.push(` ${s.primaryBold('Reset Conversation')}`);
55
+ lines.push('');
56
+ // Session info
57
+ lines.push(` ${s.muted('Project:')} ${s.primary(this.projectName)}`);
58
+ const sessionInfo = this.tokenCount
59
+ ? `${String(this.messageCount)} messages · ~${formatTokens(this.tokenCount)} tokens`
60
+ : `${String(this.messageCount)} messages`;
61
+ lines.push(` ${s.muted('Session:')} ${s.secondary(sessionInfo)}`);
62
+ lines.push('');
63
+ // Warning
64
+ lines.push(` ${s.warning('This will clear your conversation history.')}`);
65
+ lines.push(` ${s.muted('Previous session will be archived.')}`);
66
+ lines.push('');
67
+ // Options
68
+ for (let i = 0; i < RESET_OPTIONS.length; i++) {
69
+ const opt = RESET_OPTIONS[i];
70
+ const isSelected = i === this.state.selectedIndex;
71
+ const prefix = isSelected ? s.primary('> ') : ' ';
72
+ const label = isSelected ? s.primaryBold(opt.label) : s.secondary(opt.label);
73
+ const desc = s.muted(` - ${opt.description}`);
74
+ lines.push(` ${prefix}${label}${desc}`);
75
+ }
76
+ lines.push('');
77
+ lines.push(border);
78
+ lines.push(` ${s.muted('j/k Navigate Enter Select Esc Cancel')}`);
79
+ lines.push(border);
80
+ return lines;
81
+ }
82
+ handleKey(key) {
83
+ // Ctrl+C closes everything
84
+ if (key.ctrl && key.name === 'c') {
85
+ return this.close({ option: 'cancel' });
86
+ }
87
+ // Escape cancels
88
+ if (key.name === 'escape') {
89
+ return this.close({ option: 'cancel' });
90
+ }
91
+ // Navigation with j/k
92
+ if (key.char === 'j' || key.name === 'down') {
93
+ this.state.selectedIndex = Math.min(this.state.selectedIndex + 1, RESET_OPTIONS.length - 1);
94
+ return this.rerender();
95
+ }
96
+ if (key.char === 'k' || key.name === 'up') {
97
+ this.state.selectedIndex = Math.max(this.state.selectedIndex - 1, 0);
98
+ return this.rerender();
99
+ }
100
+ // Enter selects
101
+ if (key.name === 'return') {
102
+ const selected = RESET_OPTIONS[this.state.selectedIndex];
103
+ return this.close({ option: selected.id });
104
+ }
105
+ return this.rerender();
106
+ }
107
+ }
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Resume Overlay V2
3
+ *
4
+ * Modal overlay for viewing and resuming saved sessions.
5
+ * Uses TabbedListOverlayV2 for consistent list/tab/search behavior.
6
+ *
7
+ * Features:
8
+ * - List saved sessions with relative timestamps
9
+ * - Preview of last user message
10
+ * - Search sessions by content
11
+ * - Delete sessions
12
+ * - Resume selected session
13
+ */
14
+ import { TabbedListOverlayV2, BaseScreen } from '../../base/index.js';
15
+ import type { SessionInfo } from '@compilr-dev/sdk';
16
+ export interface SessionItem {
17
+ sessionId: string;
18
+ preview: string;
19
+ messageCount: number;
20
+ createdAt: string;
21
+ updatedAt: string;
22
+ /** Relative time string like "2 minutes ago" */
23
+ relativeTime: string;
24
+ /** Project ID (null for global sessions) */
25
+ projectId?: number | null;
26
+ /** Project name for display */
27
+ projectName?: string | null;
28
+ /** Whether this is the current project's session */
29
+ isCurrentProject?: boolean;
30
+ /** 8-hex terminal prefix from session filename */
31
+ terminalPrefix?: string | null;
32
+ /** Human-readable terminal label, e.g. "Terminal 1" */
33
+ terminalLabel?: string | null;
34
+ /** Whether the terminal that owns this session is still running */
35
+ isActiveTerminal?: boolean;
36
+ /** Number of agents in the team roster for this session */
37
+ teamAgentCount?: number;
38
+ }
39
+ export interface ResumeOverlayV2Options {
40
+ /** Sessions to display */
41
+ sessions: SessionInfo[];
42
+ /** Current project ID (null for global) */
43
+ currentProjectId?: number | null;
44
+ /** Callback to delete a session */
45
+ onDelete?: (sessionId: string) => Promise<boolean>;
46
+ }
47
+ export interface ResumeOverlayV2Result {
48
+ /** Session ID to resume */
49
+ sessionId?: string;
50
+ /** Session was deleted */
51
+ deleted?: string;
52
+ }
53
+ export declare class ResumeOverlayV2 extends TabbedListOverlayV2<SessionItem, ResumeOverlayV2Result> {
54
+ readonly type: "inline";
55
+ readonly id = "resume-overlay-v2";
56
+ private readonly onDeleteSession?;
57
+ constructor(options: ResumeOverlayV2Options);
58
+ protected createDetailScreen(item: SessionItem): BaseScreen | null;
59
+ protected onItemSelected(item: SessionItem): ResumeOverlayV2Result | undefined;
60
+ }
@@ -0,0 +1,414 @@
1
+ /**
2
+ * Resume Overlay V2
3
+ *
4
+ * Modal overlay for viewing and resuming saved sessions.
5
+ * Uses TabbedListOverlayV2 for consistent list/tab/search behavior.
6
+ *
7
+ * Features:
8
+ * - List saved sessions with relative timestamps
9
+ * - Preview of last user message
10
+ * - Search sessions by content
11
+ * - Delete sessions
12
+ * - Resume selected session
13
+ */
14
+ import * as terminal from '../../terminal.js';
15
+ import { TabbedListOverlayV2, BaseScreen, stay, popScreen, closeOverlay, isEscape, isCtrlC, isEnter, isClose, extractPrintable, renderBorder, wrapText, truncate, } from '../../base/index.js';
16
+ const TABS = [
17
+ { id: 'recent', label: 'Recent' },
18
+ { id: 'all', label: 'All' },
19
+ ];
20
+ // =============================================================================
21
+ // Helper Functions
22
+ // =============================================================================
23
+ /**
24
+ * Format a date as a relative time string.
25
+ */
26
+ function formatRelativeTime(date) {
27
+ const now = Date.now();
28
+ const then = new Date(date).getTime();
29
+ const diff = now - then;
30
+ const seconds = Math.floor(diff / 1000);
31
+ const minutes = Math.floor(seconds / 60);
32
+ const hours = Math.floor(minutes / 60);
33
+ const days = Math.floor(hours / 24);
34
+ if (days > 7) {
35
+ return new Date(date).toLocaleDateString();
36
+ }
37
+ if (days > 1) {
38
+ return `${String(days)} days ago`;
39
+ }
40
+ if (days === 1) {
41
+ return 'Yesterday';
42
+ }
43
+ if (hours >= 1) {
44
+ return `${String(hours)} hour${hours > 1 ? 's' : ''} ago`;
45
+ }
46
+ if (minutes >= 1) {
47
+ return `${String(minutes)} minute${minutes > 1 ? 's' : ''} ago`;
48
+ }
49
+ return 'Just now';
50
+ }
51
+ /**
52
+ * Convert SessionInfo to SessionItem with relative time.
53
+ */
54
+ function toSessionItem(session, currentProjectId) {
55
+ // Check if this is a ProjectSessionInfo with project metadata
56
+ const projectSession = session;
57
+ const projectId = projectSession.projectId;
58
+ const projectName = projectSession.projectName;
59
+ const isCurrentProject = projectId === currentProjectId;
60
+ return {
61
+ sessionId: session.sessionId,
62
+ preview: session.preview || 'No preview available',
63
+ messageCount: session.messageCount,
64
+ createdAt: session.createdAt,
65
+ updatedAt: session.updatedAt,
66
+ relativeTime: formatRelativeTime(session.updatedAt),
67
+ projectId,
68
+ projectName,
69
+ isCurrentProject,
70
+ terminalPrefix: projectSession.terminalPrefix ?? null,
71
+ terminalLabel: projectSession.terminalLabel ?? null,
72
+ isActiveTerminal: projectSession.isActiveTerminal ?? false,
73
+ teamAgentCount: projectSession.teamAgentCount ?? 0,
74
+ };
75
+ }
76
+ // =============================================================================
77
+ // Detail Screen (Session Details)
78
+ // =============================================================================
79
+ /**
80
+ * Screen for viewing session details before resuming.
81
+ */
82
+ class DetailScreen extends BaseScreen {
83
+ item;
84
+ styles;
85
+ onDelete;
86
+ confirmDelete = false;
87
+ confirmCrossProject = false;
88
+ confirmSelected = 1; // 0 = Yes, 1 = No (for both confirmations)
89
+ constructor(item, styles, onDelete) {
90
+ super();
91
+ this.item = item;
92
+ this.styles = styles;
93
+ this.onDelete = onDelete;
94
+ }
95
+ render() {
96
+ const s = this.styles;
97
+ const cols = terminal.getTerminalWidth();
98
+ const border = renderBorder(cols, s);
99
+ const lines = [];
100
+ lines.push(border);
101
+ lines.push(` ${s.primaryBold('Session Details')}`);
102
+ lines.push('');
103
+ // Delete confirmation
104
+ if (this.confirmDelete) {
105
+ lines.push(` ${s.error('Delete this session?')}`);
106
+ lines.push('');
107
+ lines.push(` ${s.muted('Session ID:')} ${s.secondary(this.item.sessionId)}`);
108
+ lines.push(` ${s.muted('Messages:')} ${s.secondary(String(this.item.messageCount))}`);
109
+ lines.push('');
110
+ lines.push(this.confirmSelected === 0
111
+ ? ` ${s.error('> Yes, delete')}`
112
+ : ` ${s.muted(' Yes, delete')}`);
113
+ lines.push(this.confirmSelected === 1
114
+ ? ` ${s.primary('> No, cancel')}`
115
+ : ` ${s.muted(' No, cancel')}`);
116
+ lines.push('');
117
+ lines.push(border);
118
+ lines.push(` ${s.muted('↑/↓ Navigate · Enter Select · Esc Cancel')}`);
119
+ lines.push(border);
120
+ return lines;
121
+ }
122
+ // Cross-project confirmation
123
+ if (this.confirmCrossProject) {
124
+ const projName = this.item.projectName ?? `Project ${String(this.item.projectId)}`;
125
+ lines.push(` ${s.warning('⚠ This session is from a different project')}`);
126
+ lines.push('');
127
+ lines.push(` ${s.muted('Project:')} ${s.primary(projName)}`);
128
+ lines.push(` ${s.muted('Messages:')} ${s.secondary(String(this.item.messageCount))}`);
129
+ lines.push('');
130
+ lines.push(` ${s.secondary('Resuming will load conversation history from that project.')}`);
131
+ lines.push(` ${s.secondary('Your current project context will remain unchanged.')}`);
132
+ lines.push('');
133
+ lines.push(this.confirmSelected === 0
134
+ ? ` ${s.warning('> Yes, resume anyway')}`
135
+ : ` ${s.muted(' Yes, resume anyway')}`);
136
+ lines.push(this.confirmSelected === 1
137
+ ? ` ${s.primary('> No, cancel')}`
138
+ : ` ${s.muted(' No, cancel')}`);
139
+ lines.push('');
140
+ lines.push(border);
141
+ lines.push(` ${s.muted('↑/↓ Navigate · Enter Select · Esc Cancel')}`);
142
+ lines.push(border);
143
+ return lines;
144
+ }
145
+ // Show cross-project warning banner if applicable
146
+ if (!this.item.isCurrentProject && this.item.projectId !== null) {
147
+ const projName = this.item.projectName ?? `Project ${String(this.item.projectId)}`;
148
+ lines.push(` ${s.warning(`⚠ From different project: ${projName}`)}`);
149
+ lines.push('');
150
+ }
151
+ // Active terminal warning
152
+ if (this.item.isActiveTerminal) {
153
+ lines.push(` ${s.warning('\u26A0 This session is in use by another terminal')}`);
154
+ lines.push('');
155
+ }
156
+ // Session info
157
+ lines.push(` ${s.muted('Updated:')} ${s.primary(this.item.relativeTime)}`);
158
+ lines.push(` ${s.muted('Created:')} ${s.secondary(new Date(this.item.createdAt).toLocaleString())}`);
159
+ if (this.item.messageCount > 0) {
160
+ lines.push(` ${s.muted('Messages:')} ${s.secondary(String(this.item.messageCount))}`);
161
+ }
162
+ else if (this.item.teamAgentCount && this.item.teamAgentCount > 1) {
163
+ lines.push(` ${s.muted('Messages:')} ${s.secondary('None (team only)')}`);
164
+ }
165
+ else {
166
+ lines.push(` ${s.muted('Messages:')} ${s.secondary(String(this.item.messageCount))}`);
167
+ }
168
+ if (this.item.teamAgentCount && this.item.teamAgentCount > 1) {
169
+ lines.push(` ${s.muted('Team:')} ${s.secondary(`${String(this.item.teamAgentCount)} agents`)}`);
170
+ }
171
+ lines.push(` ${s.muted('Session ID:')} ${s.secondary(this.item.sessionId)}`);
172
+ // Terminal info (for multi-terminal sessions)
173
+ if (this.item.terminalLabel) {
174
+ const prefixStr = this.item.terminalPrefix ? ` (${this.item.terminalPrefix})` : '';
175
+ const statusStr = this.item.isActiveTerminal
176
+ ? s.success('\u25CF Active')
177
+ : s.muted('\u2014 Exited');
178
+ lines.push(` ${s.muted('Terminal:')} ${s.secondary(this.item.terminalLabel + prefixStr)} ${statusStr}`);
179
+ }
180
+ lines.push('');
181
+ // Preview
182
+ lines.push(` ${s.muted('Last message:')}`);
183
+ const previewLines = wrapText(this.item.preview, cols - 6);
184
+ for (const line of previewLines.slice(0, 3)) {
185
+ lines.push(` ${s.secondary(line)}`);
186
+ }
187
+ if (previewLines.length > 3) {
188
+ lines.push(` ${s.muted('...')}`);
189
+ }
190
+ lines.push('');
191
+ lines.push(border);
192
+ if (this.item.isActiveTerminal) {
193
+ lines.push(` ${s.muted('d Delete · q/Esc Back')} ${s.warning('(in use — cannot resume)')}`);
194
+ }
195
+ else {
196
+ lines.push(` ${s.muted('Enter Resume · d Delete · q/Esc Back')}`);
197
+ }
198
+ lines.push(border);
199
+ return lines;
200
+ }
201
+ handleKey(data) {
202
+ const char = extractPrintable(data);
203
+ const key = data.toString();
204
+ // Ctrl+C closes everything
205
+ if (isCtrlC(data)) {
206
+ return closeOverlay(undefined);
207
+ }
208
+ // Confirm delete mode
209
+ if (this.confirmDelete) {
210
+ if (isEscape(data)) {
211
+ this.confirmDelete = false;
212
+ return stay();
213
+ }
214
+ if (char === 'j' || char === 'k' || key === '\x1b[A' || key === '\x1b[B') {
215
+ this.confirmSelected = this.confirmSelected === 0 ? 1 : 0;
216
+ return stay();
217
+ }
218
+ if (isEnter(data)) {
219
+ if (this.confirmSelected === 0) {
220
+ // Yes - delete the session
221
+ void this.handleDelete();
222
+ return closeOverlay({ deleted: this.item.sessionId });
223
+ }
224
+ else {
225
+ // No - cancel
226
+ this.confirmDelete = false;
227
+ return stay();
228
+ }
229
+ }
230
+ return stay(false);
231
+ }
232
+ // Cross-project confirmation mode
233
+ if (this.confirmCrossProject) {
234
+ if (isEscape(data)) {
235
+ this.confirmCrossProject = false;
236
+ return stay();
237
+ }
238
+ if (char === 'j' || char === 'k' || key === '\x1b[A' || key === '\x1b[B') {
239
+ this.confirmSelected = this.confirmSelected === 0 ? 1 : 0;
240
+ return stay();
241
+ }
242
+ if (isEnter(data)) {
243
+ if (this.confirmSelected === 0) {
244
+ // Yes - resume anyway
245
+ return closeOverlay({ sessionId: this.item.sessionId });
246
+ }
247
+ else {
248
+ // No - cancel
249
+ this.confirmCrossProject = false;
250
+ return stay();
251
+ }
252
+ }
253
+ return stay(false);
254
+ }
255
+ // Normal mode
256
+ if (isEscape(data) || isClose(data)) {
257
+ return popScreen();
258
+ }
259
+ // Enter resumes the session (with confirmation if cross-project)
260
+ if (isEnter(data)) {
261
+ // Active terminal sessions cannot be resumed
262
+ if (this.item.isActiveTerminal) {
263
+ return stay(false);
264
+ }
265
+ // Check if this is a cross-project session
266
+ if (!this.item.isCurrentProject && this.item.projectId !== null) {
267
+ this.confirmCrossProject = true;
268
+ this.confirmSelected = 1; // Default to "No"
269
+ return stay();
270
+ }
271
+ return closeOverlay({ sessionId: this.item.sessionId });
272
+ }
273
+ // 'd' deletes the session
274
+ if (char === 'd' && this.onDelete) {
275
+ this.confirmDelete = true;
276
+ this.confirmSelected = 1; // Default to "No"
277
+ return stay();
278
+ }
279
+ return stay(false);
280
+ }
281
+ async handleDelete() {
282
+ if (this.onDelete) {
283
+ await this.onDelete(this.item.sessionId);
284
+ }
285
+ }
286
+ /**
287
+ * Minimum height for stable rendering.
288
+ */
289
+ getMinHeight() {
290
+ return 20;
291
+ }
292
+ }
293
+ // =============================================================================
294
+ // Resume Overlay V2 Class
295
+ // =============================================================================
296
+ export class ResumeOverlayV2 extends TabbedListOverlayV2 {
297
+ type = 'inline';
298
+ id = 'resume-overlay-v2';
299
+ onDeleteSession;
300
+ constructor(options) {
301
+ const currentProjectId = options.currentProjectId;
302
+ const items = options.sessions.map((s) => toSessionItem(s, currentProjectId));
303
+ super({
304
+ title: 'Resume Session',
305
+ tabs: TABS,
306
+ items,
307
+ pageSize: 10,
308
+ filterByTab: (item, tabId) => {
309
+ if (tabId === 'all')
310
+ return true;
311
+ if (tabId === 'recent') {
312
+ // Show sessions from last 24 hours
313
+ const twentyFourHoursAgo = Date.now() - 24 * 60 * 60 * 1000;
314
+ return new Date(item.updatedAt).getTime() > twentyFourHoursAgo;
315
+ }
316
+ return true;
317
+ },
318
+ getSearchText: (item) => `${item.preview} ${item.sessionId} ${item.projectName ?? ''} ${item.terminalLabel ?? ''}`,
319
+ renderItem: (item, isSelected, styles) => {
320
+ const prefix = isSelected ? styles.primary('❯ ') : ' ';
321
+ // Fixed-width columns for alignment (visual character widths)
322
+ const PROJECT_COL_WIDTH = 18; // [Project Long Na..] or [Global]
323
+ const TERMINAL_COL_WIDTH = 16; // [Terminal 1 ●] or [Terminal d772]
324
+ const TIME_COL_WIDTH = 16; // "33 minutes ago"
325
+ const COUNT_COL_WIDTH = 10; // " 82 msgs " or " 2 agents"
326
+ // Project indicator (fixed width)
327
+ let projectName;
328
+ let isCurrentProj = false;
329
+ if (item.projectId !== null && item.projectId !== undefined) {
330
+ projectName = item.projectName ?? `Project ${String(item.projectId)}`;
331
+ isCurrentProj = item.isCurrentProject ?? false;
332
+ }
333
+ else {
334
+ projectName = 'Global';
335
+ }
336
+ // Truncate project name to fit in brackets
337
+ const maxProjLen = PROJECT_COL_WIDTH - 2; // -2 for brackets
338
+ const truncatedProj = truncate(projectName, maxProjLen);
339
+ const projectStr = `[${truncatedProj}]`.padEnd(PROJECT_COL_WIDTH);
340
+ const projectIndicator = isCurrentProj
341
+ ? styles.success(projectStr)
342
+ : styles.muted(projectStr);
343
+ // Terminal indicator (fixed width — pad inner label, then wrap + style)
344
+ let terminalStr = '';
345
+ if (item.terminalLabel) {
346
+ // Pad inner label to fixed width: TERMINAL_COL_WIDTH - 2 for brackets
347
+ const innerWidth = TERMINAL_COL_WIDTH - 2;
348
+ if (item.isActiveTerminal) {
349
+ const inner = `${item.terminalLabel} \u25CF`.padEnd(innerWidth);
350
+ terminalStr = styles.warning(`[${inner}]`);
351
+ }
352
+ else {
353
+ const inner = item.terminalLabel.padEnd(innerWidth);
354
+ terminalStr = styles.muted(`[${inner}]`);
355
+ }
356
+ }
357
+ else {
358
+ terminalStr = ''.padEnd(TERMINAL_COL_WIDTH);
359
+ }
360
+ // Time (fixed width)
361
+ const timeStr = item.relativeTime.padEnd(TIME_COL_WIDTH);
362
+ const timeStyled = isSelected ? styles.primary(timeStr) : styles.muted(timeStr);
363
+ // Message count or team-only indicator (fixed width, left-aligned)
364
+ let countStr;
365
+ if (item.messageCount === 0 && item.teamAgentCount && item.teamAgentCount > 1) {
366
+ countStr = `${String(item.teamAgentCount)} agents`.padEnd(COUNT_COL_WIDTH);
367
+ }
368
+ else {
369
+ const label = item.messageCount !== 1 ? 'msgs' : 'msg';
370
+ countStr = `${String(item.messageCount)} ${label}`.padEnd(COUNT_COL_WIDTH);
371
+ }
372
+ const countStyled = isSelected ? styles.secondary(countStr) : styles.muted(countStr);
373
+ // Sanitize preview: remove newlines, carriage returns, and collapse whitespace
374
+ const sanitized = item.preview
375
+ .replace(/[\r\n]+/g, ' ')
376
+ .replace(/\s+/g, ' ')
377
+ .replace(/^#+\s*/g, '')
378
+ .trim();
379
+ // Calculate remaining space for preview
380
+ const usedWidth = 2 + PROJECT_COL_WIDTH + 1 + TERMINAL_COL_WIDTH + 1 + TIME_COL_WIDTH + COUNT_COL_WIDTH + 1;
381
+ const cols = terminal.getTerminalWidth();
382
+ const maxPreview = Math.max(20, cols - usedWidth - 2);
383
+ const preview = truncate(sanitized, maxPreview);
384
+ const previewStyled = isSelected ? styles.secondary(preview) : styles.muted(preview);
385
+ return `${prefix}${projectIndicator} ${terminalStr} ${timeStyled}${countStyled} ${previewStyled}`;
386
+ },
387
+ showCount: true,
388
+ emptyMessage: 'No saved sessions found.',
389
+ noResultsMessage: 'No sessions match the search.',
390
+ footerHints: (searchMode) => {
391
+ if (searchMode) {
392
+ return 'Type to search Enter Select Esc Exit search';
393
+ }
394
+ return 'j/k Navigate / Search Enter Resume d Delete q/Esc Close';
395
+ },
396
+ });
397
+ this.onDeleteSession = options.onDelete;
398
+ }
399
+ createDetailScreen(item) {
400
+ return new DetailScreen(item, this.getStyles(), this.onDeleteSession);
401
+ }
402
+ onItemSelected(item) {
403
+ // Active terminal sessions cannot be resumed (in use by another terminal)
404
+ if (item.isActiveTerminal) {
405
+ return undefined; // Stay on list - no action
406
+ }
407
+ // Cross-project sessions need confirmation - go to detail screen
408
+ if (!item.isCurrentProject && item.projectId !== null) {
409
+ return undefined; // Fall through to detail screen for confirmation
410
+ }
411
+ // Same project - resume directly
412
+ return { sessionId: item.sessionId };
413
+ }
414
+ }
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Session Mode Overlay V2
3
+ *
4
+ * Modal overlay shown at startup when projectSessionMode='ask' and a previous session exists.
5
+ * Gives the user control over how to handle the existing session:
6
+ * - Resume full: Continue where you left off (conversation + context)
7
+ * - Resume messages: Keep conversation, refresh project context
8
+ * - Start fresh: Clear conversation, fresh project context
9
+ */
10
+ import { BaseOverlayV2 } from '../../base/index.js';
11
+ import type { RenderContext, OverlayAction, KeyEvent } from '../types.js';
12
+ export type SessionModeOption = 'resume-full' | 'resume-messages' | 'start-fresh';
13
+ interface SessionModeState {
14
+ /** Selected option index */
15
+ selectedIndex: number;
16
+ }
17
+ export interface SessionModeOverlayV2Options {
18
+ /** Project name for display */
19
+ projectName: string;
20
+ /** Number of messages in existing session */
21
+ messageCount: number;
22
+ /** Last activity timestamp */
23
+ lastActivity: Date;
24
+ /** Preview of last user message (optional) */
25
+ lastMessagePreview?: string;
26
+ }
27
+ export interface SessionModeOverlayV2Result {
28
+ /** Selected option */
29
+ option: SessionModeOption;
30
+ }
31
+ export declare class SessionModeOverlayV2 extends BaseOverlayV2<SessionModeState, SessionModeOverlayV2Result> {
32
+ readonly type: "inline";
33
+ readonly id = "session-mode-overlay-v2";
34
+ private readonly projectName;
35
+ private readonly messageCount;
36
+ private readonly lastActivity;
37
+ private readonly lastMessagePreview?;
38
+ constructor(options: SessionModeOverlayV2Options);
39
+ protected renderContent(context: RenderContext): string[];
40
+ handleKey(key: KeyEvent): OverlayAction<SessionModeOverlayV2Result>;
41
+ private formatTimeAgo;
42
+ }
43
+ export {};