@compilr-dev/cli 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (591) hide show
  1. package/README.md +236 -68
  2. package/dist/.tsbuildinfo.app +1 -0
  3. package/dist/.tsbuildinfo.data +1 -0
  4. package/dist/.tsbuildinfo.domain +1 -0
  5. package/dist/.tsbuildinfo.foundation +1 -0
  6. package/dist/agent.d.ts +61 -4
  7. package/dist/agent.js +241 -245
  8. package/dist/anchors/index.d.ts +1 -1
  9. package/dist/anchors/index.js +1 -1
  10. package/dist/anchors/project-anchors.d.ts +2 -2
  11. package/dist/anchors/project-anchors.js +1 -1
  12. package/dist/auth/api-client.d.ts +124 -0
  13. package/dist/auth/api-client.js +261 -0
  14. package/dist/auth/index.d.ts +172 -0
  15. package/dist/auth/index.js +545 -0
  16. package/dist/auth/storage.d.ts +52 -0
  17. package/dist/auth/storage.js +118 -0
  18. package/dist/changelog/index.d.ts +16 -0
  19. package/dist/changelog/index.js +24 -0
  20. package/dist/changelog/releases.d.ts +17 -0
  21. package/dist/changelog/releases.js +63 -0
  22. package/dist/commands-v2/handlers/auth.d.ts +10 -0
  23. package/dist/commands-v2/handlers/auth.js +118 -0
  24. package/dist/commands-v2/handlers/background.d.ts +14 -0
  25. package/dist/commands-v2/handlers/background.js +276 -0
  26. package/dist/commands-v2/handlers/context.js +266 -81
  27. package/dist/commands-v2/handlers/core.d.ts +1 -0
  28. package/dist/commands-v2/handlers/core.js +133 -8
  29. package/dist/commands-v2/handlers/debug.js +18 -0
  30. package/dist/commands-v2/handlers/delegations.d.ts +8 -0
  31. package/dist/commands-v2/handlers/delegations.js +29 -0
  32. package/dist/commands-v2/handlers/files.d.ts +8 -0
  33. package/dist/commands-v2/handlers/files.js +162 -0
  34. package/dist/commands-v2/handlers/filter.d.ts +9 -0
  35. package/dist/commands-v2/handlers/filter.js +130 -0
  36. package/dist/commands-v2/handlers/games.d.ts +7 -0
  37. package/dist/commands-v2/handlers/games.js +57 -0
  38. package/dist/commands-v2/handlers/index.d.ts +13 -0
  39. package/dist/commands-v2/handlers/index.js +39 -0
  40. package/dist/commands-v2/handlers/mcp.d.ts +8 -0
  41. package/dist/commands-v2/handlers/mcp.js +39 -0
  42. package/dist/commands-v2/handlers/notifications.d.ts +9 -0
  43. package/dist/commands-v2/handlers/notifications.js +34 -0
  44. package/dist/commands-v2/handlers/project.js +244 -23
  45. package/dist/commands-v2/handlers/reset.d.ts +11 -0
  46. package/dist/commands-v2/handlers/reset.js +118 -0
  47. package/dist/commands-v2/handlers/session.d.ts +161 -0
  48. package/dist/commands-v2/handlers/session.js +805 -0
  49. package/dist/commands-v2/handlers/settings.d.ts +2 -0
  50. package/dist/commands-v2/handlers/settings.js +217 -35
  51. package/dist/commands-v2/handlers/tasks.d.ts +5 -0
  52. package/dist/commands-v2/handlers/tasks.js +36 -0
  53. package/dist/commands-v2/handlers/team.d.ts +9 -0
  54. package/dist/commands-v2/handlers/team.js +549 -0
  55. package/dist/commands-v2/handlers/terminals.d.ts +9 -0
  56. package/dist/commands-v2/handlers/terminals.js +34 -0
  57. package/dist/commands-v2/index.d.ts +3 -2
  58. package/dist/commands-v2/index.js +4 -1
  59. package/dist/commands-v2/registry.d.ts +15 -0
  60. package/dist/commands-v2/registry.js +34 -0
  61. package/dist/commands-v2/types.d.ts +81 -3
  62. package/dist/commands.js +13 -0
  63. package/dist/compilr-diff-companion.vsix +0 -0
  64. package/dist/db/index.js +98 -4
  65. package/dist/db/repositories/document-repository.d.ts +2 -0
  66. package/dist/db/repositories/document-repository.js +5 -1
  67. package/dist/db/repositories/index.d.ts +2 -0
  68. package/dist/db/repositories/index.js +1 -0
  69. package/dist/db/repositories/plan-repository.d.ts +101 -0
  70. package/dist/db/repositories/plan-repository.js +275 -0
  71. package/dist/db/repositories/project-repository.d.ts +6 -0
  72. package/dist/db/repositories/project-repository.js +41 -0
  73. package/dist/db/repositories/work-item-repository.d.ts +15 -0
  74. package/dist/db/repositories/work-item-repository.js +69 -4
  75. package/dist/db/schema.d.ts +40 -3
  76. package/dist/db/schema.js +66 -3
  77. package/dist/episodes/index.d.ts +20 -0
  78. package/dist/episodes/index.js +27 -0
  79. package/dist/episodes/recorder.d.ts +51 -0
  80. package/dist/episodes/recorder.js +195 -0
  81. package/dist/episodes/significant-work.d.ts +21 -0
  82. package/dist/episodes/significant-work.js +56 -0
  83. package/dist/episodes/store.d.ts +38 -0
  84. package/dist/episodes/store.js +199 -0
  85. package/dist/episodes/types.d.ts +35 -0
  86. package/dist/episodes/types.js +6 -0
  87. package/dist/episodes/work-at-risk.d.ts +12 -0
  88. package/dist/episodes/work-at-risk.js +38 -0
  89. package/dist/episodes/work-summary-anchor.d.ts +23 -0
  90. package/dist/episodes/work-summary-anchor.js +73 -0
  91. package/dist/games/coins.d.ts +66 -0
  92. package/dist/games/coins.js +165 -0
  93. package/dist/games/game-base.d.ts +84 -0
  94. package/dist/games/game-base.js +204 -0
  95. package/dist/games/index.d.ts +16 -0
  96. package/dist/games/index.js +49 -0
  97. package/dist/games/scores.d.ts +69 -0
  98. package/dist/games/scores.js +191 -0
  99. package/dist/games/tetris/board.d.ts +59 -0
  100. package/dist/games/tetris/board.js +170 -0
  101. package/dist/games/tetris/index.d.ts +109 -0
  102. package/dist/games/tetris/index.js +610 -0
  103. package/dist/games/tetris/pieces.d.ts +44 -0
  104. package/dist/games/tetris/pieces.js +271 -0
  105. package/dist/games/tetris/renderer.d.ts +26 -0
  106. package/dist/games/tetris/renderer.js +77 -0
  107. package/dist/guide/guide-content.d.ts +23 -0
  108. package/dist/guide/guide-content.js +196 -0
  109. package/dist/guide/index.d.ts +8 -0
  110. package/dist/guide/index.js +7 -0
  111. package/dist/guide/shared-content.d.ts +37 -0
  112. package/dist/guide/shared-content.js +1272 -0
  113. package/dist/guide/tutorial-helpers.d.ts +57 -0
  114. package/dist/guide/tutorial-helpers.js +147 -0
  115. package/dist/handlers/ask-user-handlers.d.ts +32 -0
  116. package/dist/handlers/ask-user-handlers.js +104 -0
  117. package/dist/handlers/delegation-handlers.d.ts +34 -0
  118. package/dist/handlers/delegation-handlers.js +291 -0
  119. package/dist/handlers/permission-handler.d.ts +30 -0
  120. package/dist/handlers/permission-handler.js +205 -0
  121. package/dist/index.d.ts +11 -1
  122. package/dist/index.js +448 -271
  123. package/dist/input-handlers/memory-handler.d.ts +1 -1
  124. package/dist/input-handlers/memory-handler.js +2 -1
  125. package/dist/models/index.d.ts +10 -0
  126. package/dist/models/index.js +12 -0
  127. package/dist/models/model-registry.d.ts +38 -0
  128. package/dist/models/model-registry.js +69 -0
  129. package/dist/models/model-tiers.d.ts +28 -0
  130. package/dist/models/model-tiers.js +71 -0
  131. package/dist/models/model-validation.d.ts +25 -0
  132. package/dist/models/model-validation.js +291 -0
  133. package/dist/models/ollama-models.d.ts +73 -0
  134. package/dist/models/ollama-models.js +178 -0
  135. package/dist/models/provider-types.d.ts +6 -0
  136. package/dist/models/provider-types.js +1 -0
  137. package/dist/models/providers.d.ts +35 -0
  138. package/dist/models/providers.js +58 -0
  139. package/dist/models/types.d.ts +4 -0
  140. package/dist/models/types.js +4 -0
  141. package/dist/multi-agent/activity.d.ts +21 -0
  142. package/dist/multi-agent/activity.js +34 -0
  143. package/dist/multi-agent/agent-selection.d.ts +55 -0
  144. package/dist/multi-agent/agent-selection.js +90 -0
  145. package/dist/multi-agent/artifacts.d.ts +197 -0
  146. package/dist/multi-agent/artifacts.js +379 -0
  147. package/dist/multi-agent/checkpointer.d.ts +138 -0
  148. package/dist/multi-agent/checkpointer.js +471 -0
  149. package/dist/multi-agent/collision-utils.d.ts +16 -0
  150. package/dist/multi-agent/collision-utils.js +28 -0
  151. package/dist/multi-agent/context-resolver.d.ts +97 -0
  152. package/dist/multi-agent/context-resolver.js +316 -0
  153. package/dist/multi-agent/custom-agents.d.ts +83 -0
  154. package/dist/multi-agent/custom-agents.js +227 -0
  155. package/dist/multi-agent/delegation-tracker.d.ts +157 -0
  156. package/dist/multi-agent/delegation-tracker.js +243 -0
  157. package/dist/multi-agent/file-lock-hook.d.ts +29 -0
  158. package/dist/multi-agent/file-lock-hook.js +97 -0
  159. package/dist/multi-agent/file-locks.d.ts +58 -0
  160. package/dist/multi-agent/file-locks.js +194 -0
  161. package/dist/multi-agent/index.d.ts +24 -0
  162. package/dist/multi-agent/index.js +30 -0
  163. package/dist/multi-agent/mention-parser.d.ts +64 -0
  164. package/dist/multi-agent/mention-parser.js +146 -0
  165. package/dist/multi-agent/notification-manager.d.ts +84 -0
  166. package/dist/multi-agent/notification-manager.js +224 -0
  167. package/dist/multi-agent/pending-requests.d.ts +122 -0
  168. package/dist/multi-agent/pending-requests.js +155 -0
  169. package/dist/multi-agent/session-registry.d.ts +139 -0
  170. package/dist/multi-agent/session-registry.js +514 -0
  171. package/dist/multi-agent/shared-context.d.ts +293 -0
  172. package/dist/multi-agent/shared-context.js +671 -0
  173. package/dist/multi-agent/skill-requirements.d.ts +66 -0
  174. package/dist/multi-agent/skill-requirements.js +178 -0
  175. package/dist/multi-agent/task-assignment.d.ts +69 -0
  176. package/dist/multi-agent/task-assignment.js +123 -0
  177. package/dist/multi-agent/task-suggestion.d.ts +31 -0
  178. package/dist/multi-agent/task-suggestion.js +72 -0
  179. package/dist/multi-agent/team-agent.d.ts +201 -0
  180. package/dist/multi-agent/team-agent.js +488 -0
  181. package/dist/multi-agent/team.d.ts +286 -0
  182. package/dist/multi-agent/team.js +610 -0
  183. package/dist/multi-agent/tool-config.d.ts +110 -0
  184. package/dist/multi-agent/tool-config.js +661 -0
  185. package/dist/multi-agent/types.d.ts +211 -0
  186. package/dist/multi-agent/types.js +617 -0
  187. package/dist/prompts/plan-mode-prompt.d.ts +11 -0
  188. package/dist/prompts/plan-mode-prompt.js +95 -0
  189. package/dist/repl-helpers.js +3 -2
  190. package/dist/repl-v2.d.ts +401 -2
  191. package/dist/repl-v2.js +2577 -65
  192. package/dist/session/index.d.ts +6 -0
  193. package/dist/session/index.js +6 -0
  194. package/dist/session/project-session-manager.d.ts +158 -0
  195. package/dist/session/project-session-manager.js +650 -0
  196. package/dist/settings/index.d.ts +133 -13
  197. package/dist/settings/index.js +329 -24
  198. package/dist/settings/mcp-config.d.ts +76 -0
  199. package/dist/settings/mcp-config.js +143 -0
  200. package/dist/settings/paths.d.ts +4 -0
  201. package/dist/settings/paths.js +6 -0
  202. package/dist/shared-handlers.d.ts +62 -0
  203. package/dist/shared-handlers.js +48 -0
  204. package/dist/system-prompt/builder.d.ts +5 -0
  205. package/dist/system-prompt/builder.js +4 -0
  206. package/dist/system-prompt/index.d.ts +18 -0
  207. package/dist/system-prompt/index.js +18 -0
  208. package/dist/system-prompt/modules.d.ts +5 -0
  209. package/dist/system-prompt/modules.js +4 -0
  210. package/dist/tabbed-menu.js +2 -1
  211. package/dist/templates/compilr-md-import.d.ts +16 -0
  212. package/dist/templates/compilr-md-import.js +241 -0
  213. package/dist/templates/compilr-md.js +10 -61
  214. package/dist/templates/config-json.d.ts +1 -25
  215. package/dist/templates/index.d.ts +2 -0
  216. package/dist/templates/index.js +34 -73
  217. package/dist/tool-names.d.ts +108 -0
  218. package/dist/tool-names.js +227 -0
  219. package/dist/tools/anchor-tools.d.ts +4 -4
  220. package/dist/tools/anchor-tools.js +1 -1
  221. package/dist/tools/artifact-tools.d.ts +42 -0
  222. package/dist/tools/artifact-tools.js +328 -0
  223. package/dist/tools/ask-user-simple.d.ts +1 -1
  224. package/dist/tools/ask-user-simple.js +2 -1
  225. package/dist/tools/ask-user.d.ts +1 -1
  226. package/dist/tools/ask-user.js +2 -1
  227. package/dist/tools/backlog-wrappers.d.ts +5 -3
  228. package/dist/tools/backlog-wrappers.js +16 -1
  229. package/dist/tools/backlog.d.ts +2 -2
  230. package/dist/tools/backlog.js +1 -1
  231. package/dist/tools/db-tools.d.ts +8 -61
  232. package/dist/tools/db-tools.js +8 -13
  233. package/dist/tools/delegate-background.d.ts +27 -0
  234. package/dist/tools/delegate-background.js +115 -0
  235. package/dist/tools/delegate.d.ts +22 -0
  236. package/dist/tools/delegate.js +97 -0
  237. package/dist/tools/delegation-status.d.ts +16 -0
  238. package/dist/tools/delegation-status.js +128 -0
  239. package/dist/tools/document-db.d.ts +5 -5
  240. package/dist/tools/document-db.js +1 -1
  241. package/dist/tools/guide-tool.d.ts +12 -0
  242. package/dist/tools/guide-tool.js +59 -0
  243. package/dist/tools/handoff.d.ts +25 -0
  244. package/dist/tools/handoff.js +99 -0
  245. package/dist/tools/meta-tools.d.ts +26 -0
  246. package/dist/tools/meta-tools.js +47 -0
  247. package/dist/tools/plan-tools.d.ts +54 -0
  248. package/dist/tools/plan-tools.js +338 -0
  249. package/dist/tools/platform-adapter.d.ts +29 -0
  250. package/dist/tools/platform-adapter.js +394 -0
  251. package/dist/tools/project-db.d.ts +5 -73
  252. package/dist/tools/project-db.js +5 -336
  253. package/dist/tools/recall-work-tool.d.ts +18 -0
  254. package/dist/tools/recall-work-tool.js +82 -0
  255. package/dist/tools/workitem-db.d.ts +43 -11
  256. package/dist/tools/workitem-db.js +186 -5
  257. package/dist/tools.d.ts +67 -2
  258. package/dist/tools.js +237 -47
  259. package/dist/ui/autocomplete-controller.d.ts +42 -0
  260. package/dist/ui/autocomplete-controller.js +384 -0
  261. package/dist/ui/base/index.d.ts +1 -1
  262. package/dist/ui/base/index.js +1 -1
  263. package/dist/ui/base/overlay-base-v2.d.ts +10 -0
  264. package/dist/ui/base/overlay-base-v2.js +14 -0
  265. package/dist/ui/base/render-utils.d.ts +19 -0
  266. package/dist/ui/base/render-utils.js +25 -0
  267. package/dist/ui/base/tabbed-list-overlay-v2.d.ts +16 -1
  268. package/dist/ui/base/tabbed-list-overlay-v2.js +19 -1
  269. package/dist/ui/constants/labels.d.ts +14 -0
  270. package/dist/ui/constants/labels.js +51 -0
  271. package/dist/ui/conversation-store.d.ts +55 -0
  272. package/dist/ui/conversation-store.js +107 -0
  273. package/dist/ui/conversation.js +11 -13
  274. package/dist/ui/diff.d.ts +7 -1
  275. package/dist/ui/diff.js +85 -48
  276. package/dist/ui/ephemeral.js +3 -9
  277. package/dist/ui/file-autocomplete.d.ts +24 -0
  278. package/dist/ui/file-autocomplete.js +56 -0
  279. package/dist/ui/footer-renderer.d.ts +69 -0
  280. package/dist/ui/footer-renderer.js +431 -0
  281. package/dist/ui/footer.d.ts +74 -7
  282. package/dist/ui/footer.js +173 -16
  283. package/dist/ui/input-controller.d.ts +51 -0
  284. package/dist/ui/input-controller.js +176 -0
  285. package/dist/ui/input-prompt.d.ts +19 -0
  286. package/dist/ui/input-prompt.js +206 -14
  287. package/dist/ui/keyboard-handler.d.ts +57 -0
  288. package/dist/ui/keyboard-handler.js +557 -0
  289. package/dist/ui/live-region-facade.d.ts +42 -0
  290. package/dist/ui/live-region-facade.js +205 -0
  291. package/dist/ui/live-region.d.ts +0 -4
  292. package/dist/ui/live-region.js +6 -14
  293. package/dist/ui/mascot/renderer.d.ts +1 -1
  294. package/dist/ui/mascot/renderer.js +37 -2
  295. package/dist/ui/overlay/data/tutorial-content.d.ts +9 -0
  296. package/dist/ui/overlay/data/tutorial-content.js +9 -0
  297. package/dist/ui/overlay/data/tutorial-registry.d.ts +12 -0
  298. package/dist/ui/overlay/data/tutorial-registry.js +116 -0
  299. package/dist/ui/overlay/data/tutorial-types.d.ts +35 -0
  300. package/dist/ui/overlay/data/tutorial-types.js +6 -0
  301. package/dist/ui/overlay/data/tutorials/basics/first-conversation.d.ts +7 -0
  302. package/dist/ui/overlay/data/tutorials/basics/first-conversation.js +220 -0
  303. package/dist/ui/overlay/data/tutorials/basics/first-project.d.ts +7 -0
  304. package/dist/ui/overlay/data/tutorials/basics/first-project.js +284 -0
  305. package/dist/ui/overlay/data/tutorials/basics/navigation.d.ts +8 -0
  306. package/dist/ui/overlay/data/tutorials/basics/navigation.js +22 -0
  307. package/dist/ui/overlay/data/tutorials/basics/welcome.d.ts +7 -0
  308. package/dist/ui/overlay/data/tutorials/basics/welcome.js +174 -0
  309. package/dist/ui/overlay/data/tutorials/config/context-management.d.ts +7 -0
  310. package/dist/ui/overlay/data/tutorials/config/context-management.js +158 -0
  311. package/dist/ui/overlay/data/tutorials/config/mcp-servers.d.ts +8 -0
  312. package/dist/ui/overlay/data/tutorials/config/mcp-servers.js +155 -0
  313. package/dist/ui/overlay/data/tutorials/config/model-selection.d.ts +7 -0
  314. package/dist/ui/overlay/data/tutorials/config/model-selection.js +162 -0
  315. package/dist/ui/overlay/data/tutorials/config/permissions-safety.d.ts +7 -0
  316. package/dist/ui/overlay/data/tutorials/config/permissions-safety.js +163 -0
  317. package/dist/ui/overlay/data/tutorials/config/settings-config.d.ts +7 -0
  318. package/dist/ui/overlay/data/tutorials/config/settings-config.js +166 -0
  319. package/dist/ui/overlay/data/tutorials/planning/arch.d.ts +7 -0
  320. package/dist/ui/overlay/data/tutorials/planning/arch.js +168 -0
  321. package/dist/ui/overlay/data/tutorials/planning/backlog.d.ts +7 -0
  322. package/dist/ui/overlay/data/tutorials/planning/backlog.js +103 -0
  323. package/dist/ui/overlay/data/tutorials/planning/build.d.ts +7 -0
  324. package/dist/ui/overlay/data/tutorials/planning/build.js +173 -0
  325. package/dist/ui/overlay/data/tutorials/planning/design.d.ts +7 -0
  326. package/dist/ui/overlay/data/tutorials/planning/design.js +205 -0
  327. package/dist/ui/overlay/data/tutorials/planning/docs.d.ts +7 -0
  328. package/dist/ui/overlay/data/tutorials/planning/docs.js +143 -0
  329. package/dist/ui/overlay/data/tutorials/planning/prd.d.ts +7 -0
  330. package/dist/ui/overlay/data/tutorials/planning/prd.js +173 -0
  331. package/dist/ui/overlay/data/tutorials/planning/scaffold.d.ts +7 -0
  332. package/dist/ui/overlay/data/tutorials/planning/scaffold.js +164 -0
  333. package/dist/ui/overlay/data/tutorials/planning/sketch.d.ts +7 -0
  334. package/dist/ui/overlay/data/tutorials/planning/sketch.js +58 -0
  335. package/dist/ui/overlay/data/tutorials/projects/anchors.d.ts +7 -0
  336. package/dist/ui/overlay/data/tutorials/projects/anchors.js +248 -0
  337. package/dist/ui/overlay/data/tutorials/projects/import-project.d.ts +7 -0
  338. package/dist/ui/overlay/data/tutorials/projects/import-project.js +172 -0
  339. package/dist/ui/overlay/data/tutorials/projects/managing-projects.d.ts +8 -0
  340. package/dist/ui/overlay/data/tutorials/projects/managing-projects.js +212 -0
  341. package/dist/ui/overlay/data/tutorials/projects/new-project.d.ts +7 -0
  342. package/dist/ui/overlay/data/tutorials/projects/new-project.js +251 -0
  343. package/dist/ui/overlay/data/tutorials/projects/session-management.d.ts +7 -0
  344. package/dist/ui/overlay/data/tutorials/projects/session-management.js +169 -0
  345. package/dist/ui/overlay/data/tutorials/teams/background-execution.d.ts +7 -0
  346. package/dist/ui/overlay/data/tutorials/teams/background-execution.js +171 -0
  347. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.d.ts +8 -0
  348. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.js +147 -0
  349. package/dist/ui/overlay/data/tutorials/teams/task-assignment.d.ts +7 -0
  350. package/dist/ui/overlay/data/tutorials/teams/task-assignment.js +204 -0
  351. package/dist/ui/overlay/data/tutorials/teams/team-overview.d.ts +7 -0
  352. package/dist/ui/overlay/data/tutorials/teams/team-overview.js +165 -0
  353. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.d.ts +7 -0
  354. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.js +172 -0
  355. package/dist/ui/overlay/impl/agents-overlay-v2.js +6 -17
  356. package/dist/ui/overlay/impl/anchors-overlay-v2.js +30 -64
  357. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.d.ts +43 -0
  358. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.js +232 -0
  359. package/dist/ui/overlay/impl/artifact-overlay-v2.d.ts +40 -0
  360. package/dist/ui/overlay/impl/artifact-overlay-v2.js +115 -0
  361. package/dist/ui/overlay/impl/ask-user-overlay-v2.js +2 -5
  362. package/dist/ui/overlay/impl/background-overlay-v2.d.ts +40 -0
  363. package/dist/ui/overlay/impl/background-overlay-v2.js +147 -0
  364. package/dist/ui/overlay/impl/backlog-overlay-v2.d.ts +4 -1
  365. package/dist/ui/overlay/impl/backlog-overlay-v2.js +55 -16
  366. package/dist/ui/overlay/impl/changelog-overlay-v2.d.ts +44 -0
  367. package/dist/ui/overlay/impl/changelog-overlay-v2.js +165 -0
  368. package/dist/ui/overlay/impl/commands-overlay-v2.js +4 -6
  369. package/dist/ui/overlay/impl/config-overlay-v2.d.ts +12 -1
  370. package/dist/ui/overlay/impl/config-overlay-v2.js +164 -100
  371. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.d.ts +83 -0
  372. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.js +711 -0
  373. package/dist/ui/overlay/impl/dashboard-overlay-v2.d.ts +2 -0
  374. package/dist/ui/overlay/impl/dashboard-overlay-v2.js +26 -3
  375. package/dist/ui/overlay/impl/delegations-overlay-v2.d.ts +28 -0
  376. package/dist/ui/overlay/impl/delegations-overlay-v2.js +279 -0
  377. package/dist/ui/overlay/impl/docs-overlay-v2.js +12 -9
  378. package/dist/ui/overlay/impl/document-detail-overlay-v2.d.ts +7 -0
  379. package/dist/ui/overlay/impl/document-detail-overlay-v2.js +119 -78
  380. package/dist/ui/overlay/impl/filter-overlay-v2.d.ts +41 -0
  381. package/dist/ui/overlay/impl/filter-overlay-v2.js +110 -0
  382. package/dist/ui/overlay/impl/games-overlay-v2.d.ts +31 -0
  383. package/dist/ui/overlay/impl/games-overlay-v2.js +135 -0
  384. package/dist/ui/overlay/impl/help-overlay-v2.d.ts +26 -3
  385. package/dist/ui/overlay/impl/help-overlay-v2.js +20 -42
  386. package/dist/ui/overlay/impl/login-overlay-v2.d.ts +49 -0
  387. package/dist/ui/overlay/impl/login-overlay-v2.js +277 -0
  388. package/dist/ui/overlay/impl/mcp-overlay-v2.d.ts +63 -0
  389. package/dist/ui/overlay/impl/mcp-overlay-v2.js +907 -0
  390. package/dist/ui/overlay/impl/model-overlay-v2.d.ts +57 -13
  391. package/dist/ui/overlay/impl/model-overlay-v2.js +1086 -61
  392. package/dist/ui/overlay/impl/new-overlay-v2.d.ts +37 -6
  393. package/dist/ui/overlay/impl/new-overlay-v2.js +715 -65
  394. package/dist/ui/overlay/impl/notifications-overlay-v2.d.ts +20 -0
  395. package/dist/ui/overlay/impl/notifications-overlay-v2.js +116 -0
  396. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.d.ts +76 -0
  397. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.js +728 -0
  398. package/dist/ui/overlay/impl/pending-overlay-v2.d.ts +51 -0
  399. package/dist/ui/overlay/impl/pending-overlay-v2.js +445 -0
  400. package/dist/ui/overlay/impl/permission-overlay-v2.js +5 -5
  401. package/dist/ui/overlay/impl/permissions-overlay-v2.d.ts +85 -0
  402. package/dist/ui/overlay/impl/permissions-overlay-v2.js +820 -0
  403. package/dist/ui/overlay/impl/plan-approval-overlay-v2.d.ts +35 -0
  404. package/dist/ui/overlay/impl/plan-approval-overlay-v2.js +181 -0
  405. package/dist/ui/overlay/impl/project-edit-overlay-v2.d.ts +36 -0
  406. package/dist/ui/overlay/impl/project-edit-overlay-v2.js +195 -0
  407. package/dist/ui/overlay/impl/projects-overlay-v2.d.ts +1 -0
  408. package/dist/ui/overlay/impl/projects-overlay-v2.js +278 -44
  409. package/dist/ui/overlay/impl/reset-overlay-v2.d.ts +39 -0
  410. package/dist/ui/overlay/impl/reset-overlay-v2.js +107 -0
  411. package/dist/ui/overlay/impl/resume-overlay-v2.d.ts +60 -0
  412. package/dist/ui/overlay/impl/resume-overlay-v2.js +414 -0
  413. package/dist/ui/overlay/impl/session-mode-overlay-v2.d.ts +43 -0
  414. package/dist/ui/overlay/impl/session-mode-overlay-v2.js +124 -0
  415. package/dist/ui/overlay/impl/tasks-overlay-v2.d.ts +28 -0
  416. package/dist/ui/overlay/impl/tasks-overlay-v2.js +283 -0
  417. package/dist/ui/overlay/impl/team-overlay-v2.d.ts +86 -0
  418. package/dist/ui/overlay/impl/team-overlay-v2.js +692 -0
  419. package/dist/ui/overlay/impl/terminals-overlay-v2.d.ts +26 -0
  420. package/dist/ui/overlay/impl/terminals-overlay-v2.js +217 -0
  421. package/dist/ui/overlay/impl/tools-overlay-v2.js +3 -7
  422. package/dist/ui/overlay/impl/tutorial-overlay-v2.d.ts +30 -16
  423. package/dist/ui/overlay/impl/tutorial-overlay-v2.js +133 -956
  424. package/dist/ui/overlay/impl/workflow-overlay-v2.js +5 -1
  425. package/dist/ui/overlay/index.d.ts +20 -1
  426. package/dist/ui/overlay/index.js +19 -0
  427. package/dist/ui/overlay/types.d.ts +5 -0
  428. package/dist/ui/overlay-manager.d.ts +43 -0
  429. package/dist/ui/overlay-manager.js +238 -0
  430. package/dist/ui/overlays.js +4 -16
  431. package/dist/ui/permission-overlay.js +6 -5
  432. package/dist/ui/status-bar-controller.d.ts +33 -0
  433. package/dist/ui/status-bar-controller.js +99 -0
  434. package/dist/ui/subagent-renderer.js +3 -19
  435. package/dist/ui/terminal-autocomplete-utils.d.ts +23 -0
  436. package/dist/ui/terminal-autocomplete-utils.js +83 -0
  437. package/dist/ui/terminal-line-builders.d.ts +17 -0
  438. package/dist/ui/terminal-line-builders.js +42 -0
  439. package/dist/ui/terminal-render-item.d.ts +16 -0
  440. package/dist/ui/terminal-render-item.js +267 -0
  441. package/dist/ui/terminal-renderer.d.ts +7 -8
  442. package/dist/ui/terminal-renderer.js +7 -8
  443. package/dist/ui/terminal-types.d.ts +179 -0
  444. package/dist/ui/terminal-types.js +34 -0
  445. package/dist/ui/terminal-ui.d.ts +144 -276
  446. package/dist/ui/terminal-ui.js +384 -1861
  447. package/dist/ui/todo-zone.d.ts +19 -1
  448. package/dist/ui/todo-zone.js +71 -13
  449. package/dist/ui/tool-formatters.js +512 -1
  450. package/dist/ui/turn-metrics.d.ts +56 -0
  451. package/dist/ui/turn-metrics.js +75 -0
  452. package/dist/ui/types.d.ts +28 -0
  453. package/dist/ui/types.js +1 -0
  454. package/dist/ui/vscode-diff-ipc.d.ts +102 -0
  455. package/dist/ui/vscode-diff-ipc.js +385 -0
  456. package/dist/utils/credentials.d.ts +24 -5
  457. package/dist/utils/credentials.js +123 -9
  458. package/dist/utils/format-tokens.d.ts +13 -0
  459. package/dist/utils/format-tokens.js +18 -0
  460. package/dist/utils/git-config.d.ts +26 -0
  461. package/dist/utils/git-config.js +54 -0
  462. package/dist/utils/message-utils.d.ts +61 -0
  463. package/dist/utils/message-utils.js +72 -0
  464. package/dist/utils/model-tiers.d.ts +8 -1
  465. package/dist/utils/model-tiers.js +38 -16
  466. package/dist/utils/open-browser.d.ts +5 -0
  467. package/dist/utils/open-browser.js +32 -0
  468. package/dist/utils/path-safety.js +3 -2
  469. package/dist/utils/project-detection.d.ts +58 -0
  470. package/dist/utils/project-detection.js +424 -0
  471. package/dist/utils/project-memory.js +2 -1
  472. package/dist/utils/project-status.d.ts +2 -2
  473. package/dist/utils/startup-perf.d.ts +18 -0
  474. package/dist/utils/startup-perf.js +60 -0
  475. package/dist/utils/token-tracker.d.ts +62 -0
  476. package/dist/utils/token-tracker.js +150 -0
  477. package/dist/utils/token-types.d.ts +23 -0
  478. package/dist/utils/token-types.js +18 -0
  479. package/dist/utils/types/config-types.d.ts +32 -0
  480. package/dist/utils/types/config-types.js +8 -0
  481. package/dist/utils/update-checker.d.ts +28 -0
  482. package/dist/utils/update-checker.js +106 -0
  483. package/dist/utils/version.d.ts +7 -0
  484. package/dist/utils/version.js +10 -0
  485. package/dist/utils/vscode-detect.d.ts +39 -0
  486. package/dist/utils/vscode-detect.js +137 -0
  487. package/package.json +25 -12
  488. package/dist/commands/handler-types.d.ts +0 -68
  489. package/dist/commands/handler-types.js +0 -8
  490. package/dist/commands/handlers/agent-commands.d.ts +0 -13
  491. package/dist/commands/handlers/agent-commands.js +0 -305
  492. package/dist/commands/handlers/design-commands.d.ts +0 -15
  493. package/dist/commands/handlers/design-commands.js +0 -334
  494. package/dist/commands/handlers/index.d.ts +0 -20
  495. package/dist/commands/handlers/index.js +0 -43
  496. package/dist/commands/handlers/overlay-commands.d.ts +0 -21
  497. package/dist/commands/handlers/overlay-commands.js +0 -287
  498. package/dist/commands/handlers/project-commands.d.ts +0 -11
  499. package/dist/commands/handlers/project-commands.js +0 -167
  500. package/dist/commands/handlers/simple-commands.d.ts +0 -19
  501. package/dist/commands/handlers/simple-commands.js +0 -144
  502. package/dist/commands/registry.d.ts +0 -50
  503. package/dist/commands/registry.js +0 -75
  504. package/dist/index.old.d.ts +0 -7
  505. package/dist/index.old.js +0 -1014
  506. package/dist/repl.d.ts +0 -149
  507. package/dist/repl.js +0 -1151
  508. package/dist/templates/claude-md.d.ts +0 -7
  509. package/dist/templates/claude-md.js +0 -189
  510. package/dist/test-autocomplete.d.ts +0 -7
  511. package/dist/test-autocomplete.js +0 -85
  512. package/dist/test-tabbed-menu.d.ts +0 -7
  513. package/dist/test-tabbed-menu.js +0 -25
  514. package/dist/tool-selector.d.ts +0 -71
  515. package/dist/tool-selector.js +0 -184
  516. package/dist/ui/agents-overlay-v2.d.ts +0 -43
  517. package/dist/ui/agents-overlay-v2.js +0 -809
  518. package/dist/ui/agents-overlay.d.ts +0 -12
  519. package/dist/ui/agents-overlay.js +0 -863
  520. package/dist/ui/anchors-overlay.d.ts +0 -12
  521. package/dist/ui/anchors-overlay.js +0 -775
  522. package/dist/ui/arch-type-overlay.d.ts +0 -15
  523. package/dist/ui/arch-type-overlay.js +0 -201
  524. package/dist/ui/ask-user-overlay-v2.d.ts +0 -26
  525. package/dist/ui/ask-user-overlay-v2.js +0 -555
  526. package/dist/ui/ask-user-simple-overlay-v2.d.ts +0 -25
  527. package/dist/ui/ask-user-simple-overlay-v2.js +0 -215
  528. package/dist/ui/backlog-overlay.d.ts +0 -32
  529. package/dist/ui/backlog-overlay.js +0 -652
  530. package/dist/ui/commands-overlay-v2.d.ts +0 -33
  531. package/dist/ui/commands-overlay-v2.js +0 -441
  532. package/dist/ui/commands-overlay.d.ts +0 -16
  533. package/dist/ui/commands-overlay.js +0 -439
  534. package/dist/ui/config-overlay.d.ts +0 -35
  535. package/dist/ui/config-overlay.js +0 -707
  536. package/dist/ui/docs-overlay.d.ts +0 -17
  537. package/dist/ui/docs-overlay.js +0 -303
  538. package/dist/ui/footer-v2.d.ts +0 -222
  539. package/dist/ui/footer-v2.js +0 -1349
  540. package/dist/ui/help-overlay-v2.d.ts +0 -34
  541. package/dist/ui/help-overlay-v2.js +0 -309
  542. package/dist/ui/help-overlay.d.ts +0 -16
  543. package/dist/ui/help-overlay.js +0 -316
  544. package/dist/ui/init-overlay-v2.d.ts +0 -34
  545. package/dist/ui/init-overlay-v2.js +0 -600
  546. package/dist/ui/init-overlay.d.ts +0 -34
  547. package/dist/ui/init-overlay.js +0 -604
  548. package/dist/ui/input-prompt-v2.d.ts +0 -180
  549. package/dist/ui/input-prompt-v2.js +0 -999
  550. package/dist/ui/iteration-limit-overlay-v2.d.ts +0 -21
  551. package/dist/ui/iteration-limit-overlay-v2.js +0 -114
  552. package/dist/ui/keys-overlay-v2.d.ts +0 -41
  553. package/dist/ui/keys-overlay-v2.js +0 -248
  554. package/dist/ui/mascot-overlay-v2.d.ts +0 -41
  555. package/dist/ui/mascot-overlay-v2.js +0 -138
  556. package/dist/ui/mascot-overlay.d.ts +0 -21
  557. package/dist/ui/mascot-overlay.js +0 -146
  558. package/dist/ui/model-overlay-v2.d.ts +0 -49
  559. package/dist/ui/model-overlay-v2.js +0 -118
  560. package/dist/ui/model-overlay.d.ts +0 -27
  561. package/dist/ui/model-overlay.js +0 -221
  562. package/dist/ui/model-warning-overlay.d.ts +0 -30
  563. package/dist/ui/model-warning-overlay.js +0 -169
  564. package/dist/ui/new-overlay.d.ts +0 -34
  565. package/dist/ui/new-overlay.js +0 -604
  566. package/dist/ui/overlay/impl/init-overlay-v2.d.ts +0 -77
  567. package/dist/ui/overlay/impl/init-overlay-v2.js +0 -593
  568. package/dist/ui/overlay/overlay-types.d.ts +0 -128
  569. package/dist/ui/overlay/overlay-types.js +0 -22
  570. package/dist/ui/overlays/help-overlay-v2.d.ts +0 -28
  571. package/dist/ui/overlays/help-overlay-v2.js +0 -198
  572. package/dist/ui/overlays/index.d.ts +0 -11
  573. package/dist/ui/overlays/index.js +0 -11
  574. package/dist/ui/permission-overlay-v2.d.ts +0 -36
  575. package/dist/ui/permission-overlay-v2.js +0 -380
  576. package/dist/ui/projects-overlay.d.ts +0 -19
  577. package/dist/ui/projects-overlay.js +0 -484
  578. package/dist/ui/theme-overlay-v2.d.ts +0 -42
  579. package/dist/ui/theme-overlay-v2.js +0 -135
  580. package/dist/ui/theme-overlay.d.ts +0 -24
  581. package/dist/ui/theme-overlay.js +0 -127
  582. package/dist/ui/tools-overlay-v2.d.ts +0 -47
  583. package/dist/ui/tools-overlay-v2.js +0 -218
  584. package/dist/ui/tools-overlay.d.ts +0 -34
  585. package/dist/ui/tools-overlay.js +0 -230
  586. package/dist/ui/tutorial-overlay-v2.d.ts +0 -31
  587. package/dist/ui/tutorial-overlay-v2.js +0 -1035
  588. package/dist/ui/tutorial-overlay.d.ts +0 -11
  589. package/dist/ui/tutorial-overlay.js +0 -1034
  590. package/dist/ui/workflow-overlay.d.ts +0 -22
  591. package/dist/ui/workflow-overlay.js +0 -636
@@ -1,17 +0,0 @@
1
- /**
2
- * Docs Overlay
3
- *
4
- * Document browser for project documents (PRD, architecture, design, notes).
5
- * Uses TabbedListOverlay for consistent list/tab/search behavior.
6
- *
7
- * Features:
8
- * - Tabbed filtering by document type
9
- * - Search with / toggle
10
- * - Paginated list
11
- * - Full-screen document viewing with markdown rendering
12
- * - Vim-style navigation in viewer (j/k, g/G, PgUp/PgDn)
13
- */
14
- export interface DocsOverlayResult {
15
- viewed: boolean;
16
- }
17
- export declare function showDocsOverlay(): Promise<DocsOverlayResult>;
@@ -1,303 +0,0 @@
1
- /**
2
- * Docs Overlay
3
- *
4
- * Document browser for project documents (PRD, architecture, design, notes).
5
- * Uses TabbedListOverlay for consistent list/tab/search behavior.
6
- *
7
- * Features:
8
- * - Tabbed filtering by document type
9
- * - Search with / toggle
10
- * - Paginated list
11
- * - Full-screen document viewing with markdown rendering
12
- * - Vim-style navigation in viewer (j/k, g/G, PgUp/PgDn)
13
- */
14
- import chalk from 'chalk';
15
- import { marked } from 'marked';
16
- import { markedTerminal } from 'marked-terminal';
17
- import * as terminal from './terminal.js';
18
- import { getCurrentTheme } from '../themes/index.js';
19
- import { TabbedListOverlay, BaseScreen, stay, popScreen, closeOverlay, isEscape, isCtrlC, isNavigateUp, isNavigateDown, isSpace, isClose, renderBorder, } from './base/index.js';
20
- import { documentRepository } from '../db/repositories/document-repository.js';
21
- import { getActiveProject } from '../tools/project-db.js';
22
- // =============================================================================
23
- // Constants
24
- // =============================================================================
25
- const PAGE_SIZE = 10;
26
- const DOC_TYPE_LABELS = {
27
- 'prd': 'PRD',
28
- 'architecture': 'ARCH',
29
- 'design': 'DESIGN',
30
- 'notes': 'NOTES',
31
- };
32
- const TABS = [
33
- { id: 'all', label: 'All' },
34
- { id: 'prd', label: 'PRD' },
35
- { id: 'architecture', label: 'ARCH' },
36
- { id: 'design', label: 'DESIGN' },
37
- { id: 'notes', label: 'NOTES' },
38
- ];
39
- // =============================================================================
40
- // Markdown Rendering
41
- // =============================================================================
42
- function getThemedMarkedOptions() {
43
- const theme = getCurrentTheme();
44
- const primaryColor = chalk.hex(theme.colors.primary);
45
- const secondaryColor = chalk.hex(theme.colors.secondary || theme.colors.primary);
46
- const mutedColor = chalk.hex(theme.colors.muted);
47
- const borderColor = chalk.hex(theme.colors.border);
48
- const fgColor = chalk.hex(theme.colors.foreground);
49
- return {
50
- showSectionPrefix: false,
51
- reflowText: false,
52
- width: Math.min(100, terminal.getTerminalWidth() - 4),
53
- unescape: true,
54
- tab: 2,
55
- heading: primaryColor.bold,
56
- firstHeading: primaryColor.bold,
57
- strong: fgColor.bold,
58
- em: fgColor.italic,
59
- link: secondaryColor,
60
- href: secondaryColor.underline,
61
- blockquote: mutedColor.italic,
62
- del: mutedColor.strikethrough,
63
- hr: borderColor,
64
- codespan: secondaryColor,
65
- code: secondaryColor,
66
- html: mutedColor,
67
- table: fgColor,
68
- listitem: fgColor,
69
- paragraph: fgColor,
70
- tableOptions: {
71
- style: { head: ['bold'], border: [] },
72
- chars: {
73
- 'top': '─', 'top-mid': '─', 'top-left': '─', 'top-right': '─',
74
- 'bottom': '─', 'bottom-mid': '─', 'bottom-left': '─', 'bottom-right': '─',
75
- 'left': ' ', 'left-mid': ' ', 'mid': '─', 'mid-mid': '─',
76
- 'right': ' ', 'right-mid': ' ', 'middle': ' ',
77
- },
78
- },
79
- };
80
- }
81
- function preprocessMarkdown(content) {
82
- const lines = content.split('\n');
83
- return lines.map(line => /^(\s*)\* /.test(line) ? line.replace(/^(\s*)\* /, '$1- ') : line).join('\n');
84
- }
85
- function postProcessInlineFormatting(text) {
86
- return text.replace(/\*\*([^*]+)\*\*/g, (_match, content) => chalk.bold(content));
87
- }
88
- function renderMarkdownSync(content) {
89
- const preprocessed = preprocessMarkdown(content);
90
- const options = getThemedMarkedOptions();
91
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any
92
- marked.use(markedTerminal(options));
93
- // Use synchronous parsing to avoid async rendering issues
94
- const rendered = marked.parse(preprocessed, { async: false });
95
- const postProcessed = postProcessInlineFormatting(rendered);
96
- return postProcessed.split('\n');
97
- }
98
- /**
99
- * Full-screen document viewer with vim-style navigation.
100
- */
101
- class DocumentViewScreen extends BaseScreen {
102
- document;
103
- styles;
104
- viewState;
105
- constructor(document, styles) {
106
- super();
107
- this.document = document;
108
- this.styles = styles;
109
- // Load content synchronously in constructor so it's ready for first render
110
- this.viewState = {
111
- contentLines: renderMarkdownSync(document.content),
112
- scrollOffset: 0,
113
- };
114
- }
115
- /**
116
- * Called when entering this screen.
117
- * Clear screen for full-screen view.
118
- */
119
- onEnter() {
120
- terminal.clearScreen();
121
- }
122
- render() {
123
- const s = this.styles;
124
- const cols = terminal.getTerminalWidth();
125
- const rows = process.stdout.rows || 30;
126
- const border = renderBorder(cols, s);
127
- const lines = [];
128
- // Header
129
- const typeLabel = DOC_TYPE_LABELS[this.document.docType] || this.document.docType.toUpperCase();
130
- lines.push(border);
131
- lines.push(` ${s.primaryBold(typeLabel)}${s.muted(' │ ')}${chalk.bold(this.document.title)}`);
132
- lines.push(border);
133
- // Calculate content area
134
- const headerLines = 3;
135
- const footerLines = 3;
136
- const contentHeight = rows - headerLines - footerLines;
137
- // Get visible lines, accounting for wrapping
138
- // We need to count physical lines (after wrapping) not logical lines
139
- const totalLines = this.viewState.contentLines.length;
140
- const visibleLines = [];
141
- let physicalLinesUsed = 0;
142
- for (let i = this.viewState.scrollOffset; i < totalLines && physicalLinesUsed < contentHeight; i++) {
143
- const line = this.viewState.contentLines[i];
144
- // Calculate how many physical lines this content line takes
145
- // Strip ANSI codes for accurate width calculation
146
- // eslint-disable-next-line no-control-regex
147
- const visualLen = line.replace(/\x1b\[[0-9;]*m/g, '').length;
148
- const linePhysicalHeight = Math.max(1, Math.ceil(visualLen / cols));
149
- if (physicalLinesUsed + linePhysicalHeight <= contentHeight) {
150
- visibleLines.push(line);
151
- physicalLinesUsed += linePhysicalHeight;
152
- }
153
- else {
154
- break; // No room for this line
155
- }
156
- }
157
- // Content
158
- for (const line of visibleLines) {
159
- lines.push(line);
160
- }
161
- // Pad remaining physical space
162
- for (let i = physicalLinesUsed; i < contentHeight; i++) {
163
- lines.push('');
164
- }
165
- // Footer with position info
166
- const canScrollUp = this.viewState.scrollOffset > 0;
167
- const canScrollDown = this.viewState.scrollOffset + contentHeight < totalLines;
168
- const arrows = (canScrollUp ? '▲' : ' ') + (canScrollDown ? '▼' : ' ');
169
- const position = totalLines > 0
170
- ? `Line ${String(this.viewState.scrollOffset + 1)}-${String(Math.min(this.viewState.scrollOffset + contentHeight, totalLines))} of ${String(totalLines)}`
171
- : '';
172
- const scrollPercent = totalLines > contentHeight
173
- ? Math.round(((this.viewState.scrollOffset + contentHeight) / totalLines) * 100)
174
- : 100;
175
- lines.push(border);
176
- lines.push(s.muted(` ${arrows} ${position} (${String(scrollPercent)}%) ↑↓/jk Scroll · PgUp/PgDn Page · g/G Top/Bottom · q/Esc Back`));
177
- lines.push(border);
178
- return lines;
179
- }
180
- handleKey(data) {
181
- const char = data.length === 1 && data[0] >= 0x20 && data[0] < 0x7f
182
- ? String.fromCharCode(data[0])
183
- : null;
184
- const keyStr = data.toString();
185
- const rows = process.stdout.rows || 30;
186
- const contentHeight = rows - 6;
187
- const totalLines = this.viewState.contentLines.length;
188
- const maxScroll = Math.max(0, totalLines - contentHeight);
189
- // Ctrl+C closes everything
190
- if (isCtrlC(data)) {
191
- return closeOverlay({ viewed: true });
192
- }
193
- // Escape or q - back to list
194
- if (isEscape(data) || isClose(data)) {
195
- return popScreen();
196
- }
197
- // Up / k
198
- if (isNavigateUp(data)) {
199
- if (this.viewState.scrollOffset > 0) {
200
- this.viewState.scrollOffset--;
201
- return stay();
202
- }
203
- return stay(false);
204
- }
205
- // Down / j
206
- if (isNavigateDown(data)) {
207
- if (this.viewState.scrollOffset < maxScroll) {
208
- this.viewState.scrollOffset++;
209
- return stay();
210
- }
211
- return stay(false);
212
- }
213
- // Page Up
214
- if (keyStr === '\x1b[5~') {
215
- this.viewState.scrollOffset = Math.max(0, this.viewState.scrollOffset - contentHeight);
216
- return stay();
217
- }
218
- // Page Down / Space
219
- if (keyStr === '\x1b[6~' || isSpace(data)) {
220
- this.viewState.scrollOffset = Math.min(maxScroll, this.viewState.scrollOffset + contentHeight);
221
- return stay();
222
- }
223
- // g = top
224
- if (char === 'g') {
225
- this.viewState.scrollOffset = 0;
226
- return stay();
227
- }
228
- // G = bottom
229
- if (char === 'G') {
230
- this.viewState.scrollOffset = maxScroll;
231
- return stay();
232
- }
233
- // Home
234
- if (keyStr === '\x1b[H') {
235
- this.viewState.scrollOffset = 0;
236
- return stay();
237
- }
238
- // End
239
- if (keyStr === '\x1b[F') {
240
- this.viewState.scrollOffset = maxScroll;
241
- return stay();
242
- }
243
- return stay(false);
244
- }
245
- }
246
- // =============================================================================
247
- // Docs Overlay
248
- // =============================================================================
249
- class DocsOverlay extends TabbedListOverlay {
250
- // Stored for potential future use (e.g., subtitle display)
251
- _projectName;
252
- constructor() {
253
- const activeProject = getActiveProject();
254
- const projectId = activeProject?.id ?? null;
255
- const projectName = activeProject?.name ?? null;
256
- // Load documents
257
- const documents = projectId !== null
258
- ? documentRepository.listByProject(projectId)
259
- : [];
260
- const config = {
261
- title: 'Documents',
262
- tabs: TABS,
263
- items: documents,
264
- pageSize: PAGE_SIZE,
265
- filterByTab: (doc, tabId) => {
266
- if (tabId === 'all')
267
- return true;
268
- return doc.docType === tabId;
269
- },
270
- getSearchText: (doc) => `${doc.title} ${doc.docType}`,
271
- renderItem: (doc, isSelected, styles) => {
272
- const prefix = isSelected ? styles.primary('❯ ') : ' ';
273
- const typeLabel = (DOC_TYPE_LABELS[doc.docType] || doc.docType).padEnd(8);
274
- const title = doc.title.slice(0, 50);
275
- if (isSelected) {
276
- return `${prefix}${styles.primaryBold(typeLabel)} ${styles.primary(title)}`;
277
- }
278
- return `${prefix}${styles.muted(typeLabel)} ${styles.secondary(title)}`;
279
- },
280
- showCount: true,
281
- emptyMessage: projectId === null
282
- ? 'No active project. Use /projects to select one.'
283
- : 'No documents found. Use /design or /arch to create documents.',
284
- noResultsMessage: 'No documents match the search.',
285
- };
286
- super(config);
287
- this._projectName = projectName;
288
- }
289
- /**
290
- * Override to add project name subtitle in header.
291
- * For now, we work with the default rendering.
292
- * The TabbedListOverlay handles everything else.
293
- */
294
- createDetailScreen(doc) {
295
- return new DocumentViewScreen(doc, this.styles);
296
- }
297
- }
298
- // =============================================================================
299
- // Export Function (Backward Compatible)
300
- // =============================================================================
301
- export async function showDocsOverlay() {
302
- return new DocsOverlay().show();
303
- }
@@ -1,222 +0,0 @@
1
- /**
2
- * Footer V2 - UI Orchestrator
3
- *
4
- * Single point of control for all terminal UI:
5
- * - Owns all rendering decisions (when to clear, when to render)
6
- * - Owns all UI state (agentRunning, todos, currentTool, etc.)
7
- * - Provides output methods that handle clear/render automatically
8
- * - REPL just emits events, doesn't manage rendering timing
9
- *
10
- * Key principles:
11
- * - NO scroll regions (preserves terminal scrollback)
12
- * - Deterministic render cycle
13
- * - All output goes through footer (no external console.log)
14
- */
15
- import { EventEmitter } from 'events';
16
- import type { TodoItem, AgentMode } from './types.js';
17
- export interface FooterV2Events {
18
- submit: (input: string) => void;
19
- command: (command: string, args: string) => void;
20
- cancel: () => void;
21
- escape: () => void;
22
- interrupt: () => void;
23
- modeChange: () => void;
24
- }
25
- export interface FooterV2Options {
26
- prompt?: string;
27
- initialMode?: AgentMode;
28
- }
29
- /**
30
- * Represents a semantic item that can be printed to the scrolling zone.
31
- * FooterV2 handles all formatting based on the item type.
32
- */
33
- export type PrintableItem = {
34
- type: 'user-message';
35
- text: string;
36
- } | {
37
- type: 'agent-text';
38
- text: string;
39
- expression?: MascotExpression;
40
- } | {
41
- type: 'tool-start';
42
- name: string;
43
- params: string;
44
- } | {
45
- type: 'tool-result';
46
- name: string;
47
- params: string;
48
- result: string;
49
- success?: boolean;
50
- } | {
51
- type: 'tool-error';
52
- name: string;
53
- params: string;
54
- error: string;
55
- } | {
56
- type: 'interrupted';
57
- action?: string;
58
- suggestion?: string;
59
- } | {
60
- type: 'error';
61
- message: string;
62
- } | {
63
- type: 'success';
64
- message: string;
65
- } | {
66
- type: 'info';
67
- message: string;
68
- } | {
69
- type: 'warning';
70
- message: string;
71
- } | {
72
- type: 'raw';
73
- text: string;
74
- } | {
75
- type: 'raw-lines';
76
- lines: string[];
77
- };
78
- /**
79
- * Inline mascot expressions for agent identity and state feedback.
80
- * Used to prefix agent messages and in spinner animations.
81
- */
82
- export declare const MASCOT: {
83
- readonly neutral: "[•_•]";
84
- readonly thinking: "[°_°]";
85
- readonly searching: "[◐_◐]";
86
- readonly success: "[^_^]";
87
- readonly error: "[×_×]";
88
- readonly confused: "[?_?]";
89
- readonly working: "[•̀_•́]";
90
- readonly crt: readonly ["[░░░]", "[▒░░]", "[░▒░]", "[░░▒]", "[░▒░]", "[▒░░]"];
91
- };
92
- export type MascotExpression = 'neutral' | 'thinking' | 'searching' | 'success' | 'error' | 'confused' | 'working';
93
- export declare class FooterV2 extends EventEmitter {
94
- private promptPrefix;
95
- private promptPrefixLen;
96
- private lines;
97
- private currentLine;
98
- private cursorPos;
99
- private mode;
100
- private projectName;
101
- private todos;
102
- private spinnerText;
103
- private spinnerFrame;
104
- private agentRunning;
105
- private queuedInputs;
106
- private currentTool;
107
- private readonly autocomplete;
108
- private readonly fileAutocomplete;
109
- private readonly history;
110
- private historyIndex;
111
- private savedInput;
112
- private lastRenderHeight;
113
- private cursorLineFromBottom;
114
- private isRunning;
115
- private isPaused;
116
- private renderTimer;
117
- private needsRender;
118
- private lastEscapeTime;
119
- private suggestion;
120
- private readonly spinnerFrames;
121
- private spinnerTimer;
122
- constructor(options?: FooterV2Options);
123
- /** Get the full input value (all lines joined with newlines) */
124
- private getInputValue;
125
- /** Get the current line content */
126
- private getCurrentLineContent;
127
- /** Clear input and reset to single empty line */
128
- private clearInput;
129
- start(): void;
130
- stop(): void;
131
- /**
132
- * Print a semantic item to the scrolling zone.
133
- * FooterV2 handles all formatting based on the item type.
134
- */
135
- print(item: PrintableItem): void;
136
- /**
137
- * Execute a callback that outputs to terminal.
138
- * Handles clear → callback → render automatically.
139
- * Use this for complex output that needs multiple console.log calls.
140
- * @deprecated Prefer using print() with PrintableItem
141
- */
142
- output(callback: () => void): void;
143
- setAgentRunning(running: boolean): void;
144
- isAgentRunning(): boolean;
145
- setTodos(todos: TodoItem[]): void;
146
- getTodos(): TodoItem[];
147
- setSpinnerText(text: string | null): void;
148
- setCurrentTool(tool: string | null): void;
149
- setMode(mode: AgentMode): void;
150
- getMode(): AgentMode;
151
- setProjectName(name: string | null): void;
152
- getProjectName(): string | null;
153
- /**
154
- * Set ghost text suggestion (shown when input is empty)
155
- */
156
- setSuggestion(text: string | null): void;
157
- getSuggestion(): string | null;
158
- clearSuggestion(): void;
159
- getQueuedInputs(): string[];
160
- popQueuedInput(): string | null;
161
- hasQueuedInput(): boolean;
162
- clearQueue(): void;
163
- /**
164
- * Pause footer completely (for overlays)
165
- */
166
- pauseAnimation(): void;
167
- /**
168
- * Resume footer after pause
169
- */
170
- resumeAnimation(): void;
171
- /**
172
- * Restart input after command
173
- */
174
- restartInput(): void;
175
- /**
176
- * Refresh prompt with theme colors
177
- */
178
- refreshPrompt(): void;
179
- /**
180
- * @deprecated Use print() or output() instead
181
- */
182
- clearForOutput(): void;
183
- /**
184
- * @deprecated Use print() or output() instead
185
- */
186
- forceRender(): void;
187
- private clear;
188
- private render;
189
- private buildSpinnerLine;
190
- private buildTodoLine;
191
- private buildModeLine;
192
- private buildAutocompleteLines;
193
- private buildFileAutocompleteLines;
194
- private updateAutocomplete;
195
- private acceptAutocomplete;
196
- private closeAutocomplete;
197
- private navigateAutocompleteUp;
198
- private navigateAutocompleteDown;
199
- private addToHistory;
200
- private navigateHistoryUp;
201
- private navigateHistoryDown;
202
- private resetHistoryNavigation;
203
- private startSpinnerAnimation;
204
- private stopSpinnerAnimation;
205
- private keyHandler;
206
- private dataHandler;
207
- private startKeyboardCapture;
208
- private stopKeyboardCapture;
209
- /**
210
- * Handle word left (Option+Left) - move cursor to previous word boundary
211
- */
212
- private handleWordLeft;
213
- /**
214
- * Handle word right (Option+Right) - move cursor to next word boundary
215
- */
216
- private handleWordRight;
217
- /**
218
- * Handle Escape key - called from raw data handler for reliable detection
219
- */
220
- private handleEscape;
221
- private handleKeypress;
222
- }