@compilr-dev/cli 0.5.0 → 0.5.2

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 (587) hide show
  1. package/LICENSE +108 -0
  2. package/README.md +237 -69
  3. package/dist/.tsbuildinfo.app +1 -0
  4. package/dist/.tsbuildinfo.data +1 -0
  5. package/dist/.tsbuildinfo.domain +1 -0
  6. package/dist/.tsbuildinfo.foundation +1 -0
  7. package/dist/agent.d.ts +61 -4
  8. package/dist/agent.js +241 -245
  9. package/dist/anchors/index.d.ts +1 -1
  10. package/dist/anchors/index.js +1 -1
  11. package/dist/anchors/project-anchors.d.ts +2 -2
  12. package/dist/anchors/project-anchors.js +1 -1
  13. package/dist/auth/api-client.d.ts +124 -0
  14. package/dist/auth/api-client.js +261 -0
  15. package/dist/auth/index.d.ts +172 -0
  16. package/dist/auth/index.js +545 -0
  17. package/dist/auth/storage.d.ts +52 -0
  18. package/dist/auth/storage.js +118 -0
  19. package/dist/changelog/index.d.ts +16 -0
  20. package/dist/changelog/index.js +24 -0
  21. package/dist/changelog/releases.d.ts +17 -0
  22. package/dist/changelog/releases.js +63 -0
  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.js +286 -81
  28. package/dist/commands-v2/handlers/core.d.ts +1 -0
  29. package/dist/commands-v2/handlers/core.js +133 -8
  30. package/dist/commands-v2/handlers/debug.js +18 -0
  31. package/dist/commands-v2/handlers/delegations.d.ts +8 -0
  32. package/dist/commands-v2/handlers/delegations.js +29 -0
  33. package/dist/commands-v2/handlers/files.d.ts +8 -0
  34. package/dist/commands-v2/handlers/files.js +162 -0
  35. package/dist/commands-v2/handlers/filter.d.ts +9 -0
  36. package/dist/commands-v2/handlers/filter.js +130 -0
  37. package/dist/commands-v2/handlers/games.d.ts +7 -0
  38. package/dist/commands-v2/handlers/games.js +57 -0
  39. package/dist/commands-v2/handlers/index.d.ts +13 -0
  40. package/dist/commands-v2/handlers/index.js +39 -0
  41. package/dist/commands-v2/handlers/mcp.d.ts +8 -0
  42. package/dist/commands-v2/handlers/mcp.js +39 -0
  43. package/dist/commands-v2/handlers/notifications.d.ts +9 -0
  44. package/dist/commands-v2/handlers/notifications.js +34 -0
  45. package/dist/commands-v2/handlers/project.js +295 -31
  46. package/dist/commands-v2/handlers/reset.d.ts +11 -0
  47. package/dist/commands-v2/handlers/reset.js +118 -0
  48. package/dist/commands-v2/handlers/session.d.ts +161 -0
  49. package/dist/commands-v2/handlers/session.js +805 -0
  50. package/dist/commands-v2/handlers/settings.d.ts +2 -0
  51. package/dist/commands-v2/handlers/settings.js +217 -35
  52. package/dist/commands-v2/handlers/tasks.d.ts +5 -0
  53. package/dist/commands-v2/handlers/tasks.js +36 -0
  54. package/dist/commands-v2/handlers/team.d.ts +9 -0
  55. package/dist/commands-v2/handlers/team.js +549 -0
  56. package/dist/commands-v2/handlers/terminals.d.ts +9 -0
  57. package/dist/commands-v2/handlers/terminals.js +34 -0
  58. package/dist/commands-v2/index.d.ts +3 -2
  59. package/dist/commands-v2/index.js +4 -1
  60. package/dist/commands-v2/registry.d.ts +15 -0
  61. package/dist/commands-v2/registry.js +34 -0
  62. package/dist/commands-v2/types.d.ts +81 -3
  63. package/dist/commands.js +13 -0
  64. package/dist/compilr-diff-companion.vsix +0 -0
  65. package/dist/db/index.js +98 -4
  66. package/dist/db/repositories/document-repository.d.ts +2 -0
  67. package/dist/db/repositories/document-repository.js +6 -1
  68. package/dist/db/repositories/index.d.ts +2 -0
  69. package/dist/db/repositories/index.js +1 -0
  70. package/dist/db/repositories/plan-repository.d.ts +101 -0
  71. package/dist/db/repositories/plan-repository.js +275 -0
  72. package/dist/db/repositories/project-repository.d.ts +6 -0
  73. package/dist/db/repositories/project-repository.js +41 -0
  74. package/dist/db/repositories/work-item-repository.d.ts +15 -0
  75. package/dist/db/repositories/work-item-repository.js +69 -4
  76. package/dist/db/schema.d.ts +40 -3
  77. package/dist/db/schema.js +66 -3
  78. package/dist/episodes/index.d.ts +20 -0
  79. package/dist/episodes/index.js +27 -0
  80. package/dist/episodes/recorder.d.ts +51 -0
  81. package/dist/episodes/recorder.js +195 -0
  82. package/dist/episodes/significant-work.d.ts +21 -0
  83. package/dist/episodes/significant-work.js +56 -0
  84. package/dist/episodes/store.d.ts +38 -0
  85. package/dist/episodes/store.js +199 -0
  86. package/dist/episodes/types.d.ts +35 -0
  87. package/dist/episodes/types.js +6 -0
  88. package/dist/episodes/work-at-risk.d.ts +12 -0
  89. package/dist/episodes/work-at-risk.js +38 -0
  90. package/dist/episodes/work-summary-anchor.d.ts +23 -0
  91. package/dist/episodes/work-summary-anchor.js +73 -0
  92. package/dist/games/coins.d.ts +66 -0
  93. package/dist/games/coins.js +165 -0
  94. package/dist/games/game-base.d.ts +84 -0
  95. package/dist/games/game-base.js +204 -0
  96. package/dist/games/index.d.ts +16 -0
  97. package/dist/games/index.js +49 -0
  98. package/dist/games/scores.d.ts +69 -0
  99. package/dist/games/scores.js +191 -0
  100. package/dist/games/tetris/board.d.ts +59 -0
  101. package/dist/games/tetris/board.js +170 -0
  102. package/dist/games/tetris/index.d.ts +109 -0
  103. package/dist/games/tetris/index.js +610 -0
  104. package/dist/games/tetris/pieces.d.ts +44 -0
  105. package/dist/games/tetris/pieces.js +271 -0
  106. package/dist/games/tetris/renderer.d.ts +26 -0
  107. package/dist/games/tetris/renderer.js +77 -0
  108. package/dist/guide/guide-content.d.ts +23 -0
  109. package/dist/guide/guide-content.js +196 -0
  110. package/dist/guide/index.d.ts +8 -0
  111. package/dist/guide/index.js +7 -0
  112. package/dist/guide/shared-content.d.ts +37 -0
  113. package/dist/guide/shared-content.js +1272 -0
  114. package/dist/guide/tutorial-helpers.d.ts +57 -0
  115. package/dist/guide/tutorial-helpers.js +147 -0
  116. package/dist/handlers/ask-user-handlers.d.ts +32 -0
  117. package/dist/handlers/ask-user-handlers.js +104 -0
  118. package/dist/handlers/delegation-handlers.d.ts +34 -0
  119. package/dist/handlers/delegation-handlers.js +291 -0
  120. package/dist/handlers/permission-handler.d.ts +30 -0
  121. package/dist/handlers/permission-handler.js +205 -0
  122. package/dist/index.d.ts +11 -1
  123. package/dist/index.js +448 -271
  124. package/dist/input-handlers/memory-handler.d.ts +1 -1
  125. package/dist/input-handlers/memory-handler.js +2 -1
  126. package/dist/models/index.d.ts +10 -0
  127. package/dist/models/index.js +12 -0
  128. package/dist/models/model-registry.d.ts +38 -0
  129. package/dist/models/model-registry.js +69 -0
  130. package/dist/models/model-tiers.d.ts +28 -0
  131. package/dist/models/model-tiers.js +71 -0
  132. package/dist/models/model-validation.d.ts +25 -0
  133. package/dist/models/model-validation.js +291 -0
  134. package/dist/models/ollama-models.d.ts +73 -0
  135. package/dist/models/ollama-models.js +178 -0
  136. package/dist/models/provider-types.d.ts +6 -0
  137. package/dist/models/provider-types.js +1 -0
  138. package/dist/models/providers.d.ts +35 -0
  139. package/dist/models/providers.js +58 -0
  140. package/dist/models/types.d.ts +4 -0
  141. package/dist/models/types.js +4 -0
  142. package/dist/multi-agent/activity.d.ts +21 -0
  143. package/dist/multi-agent/activity.js +34 -0
  144. package/dist/multi-agent/agent-selection.d.ts +55 -0
  145. package/dist/multi-agent/agent-selection.js +90 -0
  146. package/dist/multi-agent/artifacts.d.ts +197 -0
  147. package/dist/multi-agent/artifacts.js +379 -0
  148. package/dist/multi-agent/checkpointer.d.ts +138 -0
  149. package/dist/multi-agent/checkpointer.js +471 -0
  150. package/dist/multi-agent/collision-utils.d.ts +16 -0
  151. package/dist/multi-agent/collision-utils.js +28 -0
  152. package/dist/multi-agent/context-resolver.d.ts +97 -0
  153. package/dist/multi-agent/context-resolver.js +316 -0
  154. package/dist/multi-agent/custom-agents.d.ts +83 -0
  155. package/dist/multi-agent/custom-agents.js +227 -0
  156. package/dist/multi-agent/delegation-tracker.d.ts +157 -0
  157. package/dist/multi-agent/delegation-tracker.js +243 -0
  158. package/dist/multi-agent/file-lock-hook.d.ts +29 -0
  159. package/dist/multi-agent/file-lock-hook.js +97 -0
  160. package/dist/multi-agent/file-locks.d.ts +58 -0
  161. package/dist/multi-agent/file-locks.js +194 -0
  162. package/dist/multi-agent/index.d.ts +24 -0
  163. package/dist/multi-agent/index.js +30 -0
  164. package/dist/multi-agent/mention-parser.d.ts +64 -0
  165. package/dist/multi-agent/mention-parser.js +146 -0
  166. package/dist/multi-agent/notification-manager.d.ts +84 -0
  167. package/dist/multi-agent/notification-manager.js +224 -0
  168. package/dist/multi-agent/pending-requests.d.ts +122 -0
  169. package/dist/multi-agent/pending-requests.js +155 -0
  170. package/dist/multi-agent/session-registry.d.ts +139 -0
  171. package/dist/multi-agent/session-registry.js +514 -0
  172. package/dist/multi-agent/shared-context.d.ts +293 -0
  173. package/dist/multi-agent/shared-context.js +671 -0
  174. package/dist/multi-agent/skill-requirements.d.ts +66 -0
  175. package/dist/multi-agent/skill-requirements.js +178 -0
  176. package/dist/multi-agent/task-assignment.d.ts +69 -0
  177. package/dist/multi-agent/task-assignment.js +123 -0
  178. package/dist/multi-agent/task-suggestion.d.ts +31 -0
  179. package/dist/multi-agent/task-suggestion.js +72 -0
  180. package/dist/multi-agent/team-agent.d.ts +201 -0
  181. package/dist/multi-agent/team-agent.js +488 -0
  182. package/dist/multi-agent/team.d.ts +286 -0
  183. package/dist/multi-agent/team.js +610 -0
  184. package/dist/multi-agent/tool-config.d.ts +110 -0
  185. package/dist/multi-agent/tool-config.js +661 -0
  186. package/dist/multi-agent/types.d.ts +211 -0
  187. package/dist/multi-agent/types.js +617 -0
  188. package/dist/prompts/plan-mode-prompt.d.ts +11 -0
  189. package/dist/prompts/plan-mode-prompt.js +95 -0
  190. package/dist/repl-helpers.js +5 -2
  191. package/dist/repl-v2.d.ts +401 -2
  192. package/dist/repl-v2.js +2588 -65
  193. package/dist/session/index.d.ts +6 -0
  194. package/dist/session/index.js +6 -0
  195. package/dist/session/project-session-manager.d.ts +158 -0
  196. package/dist/session/project-session-manager.js +650 -0
  197. package/dist/settings/index.d.ts +133 -13
  198. package/dist/settings/index.js +329 -24
  199. package/dist/settings/mcp-config.d.ts +76 -0
  200. package/dist/settings/mcp-config.js +143 -0
  201. package/dist/settings/paths.d.ts +4 -0
  202. package/dist/settings/paths.js +6 -0
  203. package/dist/shared-handlers.d.ts +62 -0
  204. package/dist/shared-handlers.js +48 -0
  205. package/dist/system-prompt/builder.d.ts +5 -0
  206. package/dist/system-prompt/builder.js +4 -0
  207. package/dist/system-prompt/index.d.ts +18 -0
  208. package/dist/system-prompt/index.js +18 -0
  209. package/dist/system-prompt/modules.d.ts +5 -0
  210. package/dist/system-prompt/modules.js +4 -0
  211. package/dist/tabbed-menu.js +2 -1
  212. package/dist/templates/compilr-md-import.d.ts +16 -0
  213. package/dist/templates/compilr-md-import.js +241 -0
  214. package/dist/templates/compilr-md.js +10 -61
  215. package/dist/templates/config-json.d.ts +1 -25
  216. package/dist/templates/index.d.ts +2 -0
  217. package/dist/templates/index.js +34 -73
  218. package/dist/tool-names.d.ts +113 -0
  219. package/dist/tool-names.js +239 -0
  220. package/dist/tools/ask-user-simple.d.ts +1 -1
  221. package/dist/tools/ask-user-simple.js +2 -1
  222. package/dist/tools/ask-user.d.ts +1 -1
  223. package/dist/tools/ask-user.js +2 -1
  224. package/dist/tools/backlog.d.ts +2 -2
  225. package/dist/tools/backlog.js +1 -1
  226. package/dist/tools/db-tools.d.ts +13 -61
  227. package/dist/tools/db-tools.js +12 -13
  228. package/dist/tools/delegate-background.d.ts +27 -0
  229. package/dist/tools/delegate-background.js +115 -0
  230. package/dist/tools/delegate.d.ts +22 -0
  231. package/dist/tools/delegate.js +97 -0
  232. package/dist/tools/delegation-status.d.ts +16 -0
  233. package/dist/tools/delegation-status.js +128 -0
  234. package/dist/tools/guide-tool.d.ts +12 -0
  235. package/dist/tools/guide-tool.js +59 -0
  236. package/dist/tools/handoff.d.ts +25 -0
  237. package/dist/tools/handoff.js +99 -0
  238. package/dist/tools/meta-tools.d.ts +26 -0
  239. package/dist/tools/meta-tools.js +47 -0
  240. package/dist/tools/platform-adapter.d.ts +35 -0
  241. package/dist/tools/platform-adapter.js +404 -0
  242. package/dist/tools/project-db.d.ts +5 -73
  243. package/dist/tools/project-db.js +5 -336
  244. package/dist/tools.d.ts +67 -2
  245. package/dist/tools.js +240 -48
  246. package/dist/ui/autocomplete-controller.d.ts +42 -0
  247. package/dist/ui/autocomplete-controller.js +384 -0
  248. package/dist/ui/base/index.d.ts +1 -1
  249. package/dist/ui/base/index.js +1 -1
  250. package/dist/ui/base/overlay-base-v2.d.ts +10 -0
  251. package/dist/ui/base/overlay-base-v2.js +14 -0
  252. package/dist/ui/base/render-utils.d.ts +19 -0
  253. package/dist/ui/base/render-utils.js +25 -0
  254. package/dist/ui/base/tabbed-list-overlay-v2.d.ts +16 -1
  255. package/dist/ui/base/tabbed-list-overlay-v2.js +19 -1
  256. package/dist/ui/constants/labels.d.ts +14 -0
  257. package/dist/ui/constants/labels.js +52 -0
  258. package/dist/ui/conversation-store.d.ts +55 -0
  259. package/dist/ui/conversation-store.js +107 -0
  260. package/dist/ui/conversation.js +11 -13
  261. package/dist/ui/diff.d.ts +7 -1
  262. package/dist/ui/diff.js +85 -48
  263. package/dist/ui/ephemeral.js +3 -9
  264. package/dist/ui/file-autocomplete.d.ts +24 -0
  265. package/dist/ui/file-autocomplete.js +56 -0
  266. package/dist/ui/footer-renderer.d.ts +69 -0
  267. package/dist/ui/footer-renderer.js +431 -0
  268. package/dist/ui/footer.d.ts +74 -7
  269. package/dist/ui/footer.js +173 -16
  270. package/dist/ui/input-controller.d.ts +51 -0
  271. package/dist/ui/input-controller.js +176 -0
  272. package/dist/ui/input-prompt.d.ts +19 -0
  273. package/dist/ui/input-prompt.js +206 -14
  274. package/dist/ui/keyboard-handler.d.ts +57 -0
  275. package/dist/ui/keyboard-handler.js +557 -0
  276. package/dist/ui/live-region-facade.d.ts +42 -0
  277. package/dist/ui/live-region-facade.js +205 -0
  278. package/dist/ui/live-region.d.ts +0 -4
  279. package/dist/ui/live-region.js +6 -14
  280. package/dist/ui/mascot/renderer.d.ts +1 -1
  281. package/dist/ui/mascot/renderer.js +37 -2
  282. package/dist/ui/overlay/data/tutorial-content.d.ts +9 -0
  283. package/dist/ui/overlay/data/tutorial-content.js +9 -0
  284. package/dist/ui/overlay/data/tutorial-registry.d.ts +12 -0
  285. package/dist/ui/overlay/data/tutorial-registry.js +116 -0
  286. package/dist/ui/overlay/data/tutorial-types.d.ts +35 -0
  287. package/dist/ui/overlay/data/tutorial-types.js +6 -0
  288. package/dist/ui/overlay/data/tutorials/basics/first-conversation.d.ts +7 -0
  289. package/dist/ui/overlay/data/tutorials/basics/first-conversation.js +220 -0
  290. package/dist/ui/overlay/data/tutorials/basics/first-project.d.ts +7 -0
  291. package/dist/ui/overlay/data/tutorials/basics/first-project.js +284 -0
  292. package/dist/ui/overlay/data/tutorials/basics/navigation.d.ts +8 -0
  293. package/dist/ui/overlay/data/tutorials/basics/navigation.js +22 -0
  294. package/dist/ui/overlay/data/tutorials/basics/welcome.d.ts +7 -0
  295. package/dist/ui/overlay/data/tutorials/basics/welcome.js +174 -0
  296. package/dist/ui/overlay/data/tutorials/config/context-management.d.ts +7 -0
  297. package/dist/ui/overlay/data/tutorials/config/context-management.js +158 -0
  298. package/dist/ui/overlay/data/tutorials/config/mcp-servers.d.ts +8 -0
  299. package/dist/ui/overlay/data/tutorials/config/mcp-servers.js +155 -0
  300. package/dist/ui/overlay/data/tutorials/config/model-selection.d.ts +7 -0
  301. package/dist/ui/overlay/data/tutorials/config/model-selection.js +162 -0
  302. package/dist/ui/overlay/data/tutorials/config/permissions-safety.d.ts +7 -0
  303. package/dist/ui/overlay/data/tutorials/config/permissions-safety.js +163 -0
  304. package/dist/ui/overlay/data/tutorials/config/settings-config.d.ts +7 -0
  305. package/dist/ui/overlay/data/tutorials/config/settings-config.js +166 -0
  306. package/dist/ui/overlay/data/tutorials/planning/arch.d.ts +7 -0
  307. package/dist/ui/overlay/data/tutorials/planning/arch.js +168 -0
  308. package/dist/ui/overlay/data/tutorials/planning/backlog.d.ts +7 -0
  309. package/dist/ui/overlay/data/tutorials/planning/backlog.js +103 -0
  310. package/dist/ui/overlay/data/tutorials/planning/build.d.ts +7 -0
  311. package/dist/ui/overlay/data/tutorials/planning/build.js +173 -0
  312. package/dist/ui/overlay/data/tutorials/planning/design.d.ts +7 -0
  313. package/dist/ui/overlay/data/tutorials/planning/design.js +205 -0
  314. package/dist/ui/overlay/data/tutorials/planning/docs.d.ts +7 -0
  315. package/dist/ui/overlay/data/tutorials/planning/docs.js +143 -0
  316. package/dist/ui/overlay/data/tutorials/planning/prd.d.ts +7 -0
  317. package/dist/ui/overlay/data/tutorials/planning/prd.js +173 -0
  318. package/dist/ui/overlay/data/tutorials/planning/scaffold.d.ts +7 -0
  319. package/dist/ui/overlay/data/tutorials/planning/scaffold.js +164 -0
  320. package/dist/ui/overlay/data/tutorials/planning/sketch.d.ts +7 -0
  321. package/dist/ui/overlay/data/tutorials/planning/sketch.js +58 -0
  322. package/dist/ui/overlay/data/tutorials/projects/anchors.d.ts +7 -0
  323. package/dist/ui/overlay/data/tutorials/projects/anchors.js +248 -0
  324. package/dist/ui/overlay/data/tutorials/projects/import-project.d.ts +7 -0
  325. package/dist/ui/overlay/data/tutorials/projects/import-project.js +172 -0
  326. package/dist/ui/overlay/data/tutorials/projects/managing-projects.d.ts +8 -0
  327. package/dist/ui/overlay/data/tutorials/projects/managing-projects.js +212 -0
  328. package/dist/ui/overlay/data/tutorials/projects/new-project.d.ts +7 -0
  329. package/dist/ui/overlay/data/tutorials/projects/new-project.js +251 -0
  330. package/dist/ui/overlay/data/tutorials/projects/session-management.d.ts +7 -0
  331. package/dist/ui/overlay/data/tutorials/projects/session-management.js +169 -0
  332. package/dist/ui/overlay/data/tutorials/teams/background-execution.d.ts +7 -0
  333. package/dist/ui/overlay/data/tutorials/teams/background-execution.js +171 -0
  334. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.d.ts +8 -0
  335. package/dist/ui/overlay/data/tutorials/teams/multi-terminal.js +147 -0
  336. package/dist/ui/overlay/data/tutorials/teams/task-assignment.d.ts +7 -0
  337. package/dist/ui/overlay/data/tutorials/teams/task-assignment.js +204 -0
  338. package/dist/ui/overlay/data/tutorials/teams/team-overview.d.ts +7 -0
  339. package/dist/ui/overlay/data/tutorials/teams/team-overview.js +165 -0
  340. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.d.ts +7 -0
  341. package/dist/ui/overlay/data/tutorials/teams/working-with-agents.js +172 -0
  342. package/dist/ui/overlay/impl/agents-overlay-v2.js +6 -17
  343. package/dist/ui/overlay/impl/anchors-overlay-v2.js +30 -64
  344. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.d.ts +43 -0
  345. package/dist/ui/overlay/impl/artifact-detail-overlay-v2.js +232 -0
  346. package/dist/ui/overlay/impl/artifact-overlay-v2.d.ts +40 -0
  347. package/dist/ui/overlay/impl/artifact-overlay-v2.js +115 -0
  348. package/dist/ui/overlay/impl/ask-user-overlay-v2.js +2 -5
  349. package/dist/ui/overlay/impl/background-overlay-v2.d.ts +40 -0
  350. package/dist/ui/overlay/impl/background-overlay-v2.js +147 -0
  351. package/dist/ui/overlay/impl/backlog-overlay-v2.d.ts +4 -1
  352. package/dist/ui/overlay/impl/backlog-overlay-v2.js +55 -16
  353. package/dist/ui/overlay/impl/changelog-overlay-v2.d.ts +44 -0
  354. package/dist/ui/overlay/impl/changelog-overlay-v2.js +165 -0
  355. package/dist/ui/overlay/impl/commands-overlay-v2.js +4 -6
  356. package/dist/ui/overlay/impl/config-overlay-v2.d.ts +12 -1
  357. package/dist/ui/overlay/impl/config-overlay-v2.js +164 -100
  358. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.d.ts +83 -0
  359. package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.js +711 -0
  360. package/dist/ui/overlay/impl/dashboard-overlay-v2.d.ts +2 -0
  361. package/dist/ui/overlay/impl/dashboard-overlay-v2.js +26 -3
  362. package/dist/ui/overlay/impl/delegations-overlay-v2.d.ts +28 -0
  363. package/dist/ui/overlay/impl/delegations-overlay-v2.js +279 -0
  364. package/dist/ui/overlay/impl/docs-overlay-v2.js +12 -9
  365. package/dist/ui/overlay/impl/document-detail-overlay-v2.d.ts +7 -0
  366. package/dist/ui/overlay/impl/document-detail-overlay-v2.js +119 -78
  367. package/dist/ui/overlay/impl/filter-overlay-v2.d.ts +41 -0
  368. package/dist/ui/overlay/impl/filter-overlay-v2.js +110 -0
  369. package/dist/ui/overlay/impl/games-overlay-v2.d.ts +31 -0
  370. package/dist/ui/overlay/impl/games-overlay-v2.js +135 -0
  371. package/dist/ui/overlay/impl/help-overlay-v2.d.ts +26 -3
  372. package/dist/ui/overlay/impl/help-overlay-v2.js +20 -42
  373. package/dist/ui/overlay/impl/login-overlay-v2.d.ts +49 -0
  374. package/dist/ui/overlay/impl/login-overlay-v2.js +277 -0
  375. package/dist/ui/overlay/impl/mcp-overlay-v2.d.ts +63 -0
  376. package/dist/ui/overlay/impl/mcp-overlay-v2.js +907 -0
  377. package/dist/ui/overlay/impl/model-overlay-v2.d.ts +57 -13
  378. package/dist/ui/overlay/impl/model-overlay-v2.js +1086 -61
  379. package/dist/ui/overlay/impl/new-overlay-v2.d.ts +37 -6
  380. package/dist/ui/overlay/impl/new-overlay-v2.js +715 -65
  381. package/dist/ui/overlay/impl/notifications-overlay-v2.d.ts +20 -0
  382. package/dist/ui/overlay/impl/notifications-overlay-v2.js +116 -0
  383. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.d.ts +76 -0
  384. package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.js +728 -0
  385. package/dist/ui/overlay/impl/pending-overlay-v2.d.ts +51 -0
  386. package/dist/ui/overlay/impl/pending-overlay-v2.js +445 -0
  387. package/dist/ui/overlay/impl/permission-overlay-v2.js +5 -5
  388. package/dist/ui/overlay/impl/permissions-overlay-v2.d.ts +85 -0
  389. package/dist/ui/overlay/impl/permissions-overlay-v2.js +820 -0
  390. package/dist/ui/overlay/impl/plan-approval-overlay-v2.d.ts +35 -0
  391. package/dist/ui/overlay/impl/plan-approval-overlay-v2.js +181 -0
  392. package/dist/ui/overlay/impl/project-edit-overlay-v2.d.ts +36 -0
  393. package/dist/ui/overlay/impl/project-edit-overlay-v2.js +195 -0
  394. package/dist/ui/overlay/impl/projects-overlay-v2.d.ts +1 -0
  395. package/dist/ui/overlay/impl/projects-overlay-v2.js +278 -44
  396. package/dist/ui/overlay/impl/reset-overlay-v2.d.ts +39 -0
  397. package/dist/ui/overlay/impl/reset-overlay-v2.js +107 -0
  398. package/dist/ui/overlay/impl/resume-overlay-v2.d.ts +60 -0
  399. package/dist/ui/overlay/impl/resume-overlay-v2.js +414 -0
  400. package/dist/ui/overlay/impl/session-mode-overlay-v2.d.ts +43 -0
  401. package/dist/ui/overlay/impl/session-mode-overlay-v2.js +124 -0
  402. package/dist/ui/overlay/impl/tasks-overlay-v2.d.ts +28 -0
  403. package/dist/ui/overlay/impl/tasks-overlay-v2.js +283 -0
  404. package/dist/ui/overlay/impl/team-overlay-v2.d.ts +86 -0
  405. package/dist/ui/overlay/impl/team-overlay-v2.js +692 -0
  406. package/dist/ui/overlay/impl/terminals-overlay-v2.d.ts +26 -0
  407. package/dist/ui/overlay/impl/terminals-overlay-v2.js +217 -0
  408. package/dist/ui/overlay/impl/tools-overlay-v2.js +3 -7
  409. package/dist/ui/overlay/impl/tutorial-overlay-v2.d.ts +30 -16
  410. package/dist/ui/overlay/impl/tutorial-overlay-v2.js +133 -956
  411. package/dist/ui/overlay/impl/workflow-overlay-v2.d.ts +1 -0
  412. package/dist/ui/overlay/impl/workflow-overlay-v2.js +10 -4
  413. package/dist/ui/overlay/index.d.ts +20 -1
  414. package/dist/ui/overlay/index.js +19 -0
  415. package/dist/ui/overlay/types.d.ts +5 -0
  416. package/dist/ui/overlay-manager.d.ts +43 -0
  417. package/dist/ui/overlay-manager.js +238 -0
  418. package/dist/ui/overlays.js +4 -16
  419. package/dist/ui/permission-overlay.js +6 -5
  420. package/dist/ui/status-bar-controller.d.ts +33 -0
  421. package/dist/ui/status-bar-controller.js +99 -0
  422. package/dist/ui/subagent-renderer.js +3 -19
  423. package/dist/ui/terminal-autocomplete-utils.d.ts +23 -0
  424. package/dist/ui/terminal-autocomplete-utils.js +83 -0
  425. package/dist/ui/terminal-line-builders.d.ts +17 -0
  426. package/dist/ui/terminal-line-builders.js +42 -0
  427. package/dist/ui/terminal-render-item.d.ts +16 -0
  428. package/dist/ui/terminal-render-item.js +267 -0
  429. package/dist/ui/terminal-renderer.d.ts +7 -8
  430. package/dist/ui/terminal-renderer.js +7 -8
  431. package/dist/ui/terminal-types.d.ts +179 -0
  432. package/dist/ui/terminal-types.js +34 -0
  433. package/dist/ui/terminal-ui.d.ts +144 -276
  434. package/dist/ui/terminal-ui.js +384 -1861
  435. package/dist/ui/todo-zone.d.ts +19 -1
  436. package/dist/ui/todo-zone.js +71 -13
  437. package/dist/ui/tool-formatters.js +696 -1
  438. package/dist/ui/turn-metrics.d.ts +56 -0
  439. package/dist/ui/turn-metrics.js +75 -0
  440. package/dist/ui/types.d.ts +28 -0
  441. package/dist/ui/types.js +1 -0
  442. package/dist/ui/vscode-diff-ipc.d.ts +102 -0
  443. package/dist/ui/vscode-diff-ipc.js +385 -0
  444. package/dist/utils/credentials.d.ts +24 -5
  445. package/dist/utils/credentials.js +123 -9
  446. package/dist/utils/format-tokens.d.ts +13 -0
  447. package/dist/utils/format-tokens.js +18 -0
  448. package/dist/utils/git-config.d.ts +26 -0
  449. package/dist/utils/git-config.js +54 -0
  450. package/dist/utils/message-utils.d.ts +61 -0
  451. package/dist/utils/message-utils.js +72 -0
  452. package/dist/utils/model-tiers.d.ts +8 -1
  453. package/dist/utils/model-tiers.js +38 -16
  454. package/dist/utils/open-browser.d.ts +5 -0
  455. package/dist/utils/open-browser.js +32 -0
  456. package/dist/utils/path-safety.js +3 -2
  457. package/dist/utils/project-detection.d.ts +58 -0
  458. package/dist/utils/project-detection.js +424 -0
  459. package/dist/utils/project-memory.js +2 -1
  460. package/dist/utils/project-status.d.ts +2 -2
  461. package/dist/utils/startup-perf.d.ts +18 -0
  462. package/dist/utils/startup-perf.js +60 -0
  463. package/dist/utils/token-tracker.d.ts +62 -0
  464. package/dist/utils/token-tracker.js +150 -0
  465. package/dist/utils/token-types.d.ts +23 -0
  466. package/dist/utils/token-types.js +18 -0
  467. package/dist/utils/types/config-types.d.ts +32 -0
  468. package/dist/utils/types/config-types.js +8 -0
  469. package/dist/utils/update-checker.d.ts +28 -0
  470. package/dist/utils/update-checker.js +106 -0
  471. package/dist/utils/version.d.ts +7 -0
  472. package/dist/utils/version.js +10 -0
  473. package/dist/utils/vscode-detect.d.ts +39 -0
  474. package/dist/utils/vscode-detect.js +137 -0
  475. package/package.json +27 -13
  476. package/dist/commands/handler-types.d.ts +0 -68
  477. package/dist/commands/handler-types.js +0 -8
  478. package/dist/commands/handlers/agent-commands.d.ts +0 -13
  479. package/dist/commands/handlers/agent-commands.js +0 -305
  480. package/dist/commands/handlers/design-commands.d.ts +0 -15
  481. package/dist/commands/handlers/design-commands.js +0 -334
  482. package/dist/commands/handlers/index.d.ts +0 -20
  483. package/dist/commands/handlers/index.js +0 -43
  484. package/dist/commands/handlers/overlay-commands.d.ts +0 -21
  485. package/dist/commands/handlers/overlay-commands.js +0 -287
  486. package/dist/commands/handlers/project-commands.d.ts +0 -11
  487. package/dist/commands/handlers/project-commands.js +0 -167
  488. package/dist/commands/handlers/simple-commands.d.ts +0 -19
  489. package/dist/commands/handlers/simple-commands.js +0 -144
  490. package/dist/commands/registry.d.ts +0 -50
  491. package/dist/commands/registry.js +0 -75
  492. package/dist/index.old.d.ts +0 -7
  493. package/dist/index.old.js +0 -1014
  494. package/dist/repl.d.ts +0 -149
  495. package/dist/repl.js +0 -1151
  496. package/dist/templates/claude-md.d.ts +0 -7
  497. package/dist/templates/claude-md.js +0 -189
  498. package/dist/test-autocomplete.d.ts +0 -7
  499. package/dist/test-autocomplete.js +0 -85
  500. package/dist/test-tabbed-menu.d.ts +0 -7
  501. package/dist/test-tabbed-menu.js +0 -25
  502. package/dist/tool-selector.d.ts +0 -71
  503. package/dist/tool-selector.js +0 -184
  504. package/dist/tools/anchor-tools.d.ts +0 -31
  505. package/dist/tools/anchor-tools.js +0 -255
  506. package/dist/tools/backlog-wrappers.d.ts +0 -54
  507. package/dist/tools/backlog-wrappers.js +0 -338
  508. package/dist/tools/document-db.d.ts +0 -43
  509. package/dist/tools/document-db.js +0 -220
  510. package/dist/tools/workitem-db.d.ts +0 -103
  511. package/dist/tools/workitem-db.js +0 -549
  512. package/dist/ui/agents-overlay-v2.d.ts +0 -43
  513. package/dist/ui/agents-overlay-v2.js +0 -809
  514. package/dist/ui/agents-overlay.d.ts +0 -12
  515. package/dist/ui/agents-overlay.js +0 -863
  516. package/dist/ui/anchors-overlay.d.ts +0 -12
  517. package/dist/ui/anchors-overlay.js +0 -775
  518. package/dist/ui/arch-type-overlay.d.ts +0 -15
  519. package/dist/ui/arch-type-overlay.js +0 -201
  520. package/dist/ui/ask-user-overlay-v2.d.ts +0 -26
  521. package/dist/ui/ask-user-overlay-v2.js +0 -555
  522. package/dist/ui/ask-user-simple-overlay-v2.d.ts +0 -25
  523. package/dist/ui/ask-user-simple-overlay-v2.js +0 -215
  524. package/dist/ui/backlog-overlay.d.ts +0 -32
  525. package/dist/ui/backlog-overlay.js +0 -652
  526. package/dist/ui/commands-overlay-v2.d.ts +0 -33
  527. package/dist/ui/commands-overlay-v2.js +0 -441
  528. package/dist/ui/commands-overlay.d.ts +0 -16
  529. package/dist/ui/commands-overlay.js +0 -439
  530. package/dist/ui/config-overlay.d.ts +0 -35
  531. package/dist/ui/config-overlay.js +0 -707
  532. package/dist/ui/docs-overlay.d.ts +0 -17
  533. package/dist/ui/docs-overlay.js +0 -303
  534. package/dist/ui/footer-v2.d.ts +0 -222
  535. package/dist/ui/footer-v2.js +0 -1349
  536. package/dist/ui/help-overlay-v2.d.ts +0 -34
  537. package/dist/ui/help-overlay-v2.js +0 -309
  538. package/dist/ui/help-overlay.d.ts +0 -16
  539. package/dist/ui/help-overlay.js +0 -316
  540. package/dist/ui/init-overlay-v2.d.ts +0 -34
  541. package/dist/ui/init-overlay-v2.js +0 -600
  542. package/dist/ui/init-overlay.d.ts +0 -34
  543. package/dist/ui/init-overlay.js +0 -604
  544. package/dist/ui/input-prompt-v2.d.ts +0 -180
  545. package/dist/ui/input-prompt-v2.js +0 -999
  546. package/dist/ui/iteration-limit-overlay-v2.d.ts +0 -21
  547. package/dist/ui/iteration-limit-overlay-v2.js +0 -114
  548. package/dist/ui/keys-overlay-v2.d.ts +0 -41
  549. package/dist/ui/keys-overlay-v2.js +0 -248
  550. package/dist/ui/mascot-overlay-v2.d.ts +0 -41
  551. package/dist/ui/mascot-overlay-v2.js +0 -138
  552. package/dist/ui/mascot-overlay.d.ts +0 -21
  553. package/dist/ui/mascot-overlay.js +0 -146
  554. package/dist/ui/model-overlay-v2.d.ts +0 -49
  555. package/dist/ui/model-overlay-v2.js +0 -118
  556. package/dist/ui/model-overlay.d.ts +0 -27
  557. package/dist/ui/model-overlay.js +0 -221
  558. package/dist/ui/model-warning-overlay.d.ts +0 -30
  559. package/dist/ui/model-warning-overlay.js +0 -169
  560. package/dist/ui/new-overlay.d.ts +0 -34
  561. package/dist/ui/new-overlay.js +0 -604
  562. package/dist/ui/overlay/impl/init-overlay-v2.d.ts +0 -77
  563. package/dist/ui/overlay/impl/init-overlay-v2.js +0 -593
  564. package/dist/ui/overlay/overlay-types.d.ts +0 -128
  565. package/dist/ui/overlay/overlay-types.js +0 -22
  566. package/dist/ui/overlays/help-overlay-v2.d.ts +0 -28
  567. package/dist/ui/overlays/help-overlay-v2.js +0 -198
  568. package/dist/ui/overlays/index.d.ts +0 -11
  569. package/dist/ui/overlays/index.js +0 -11
  570. package/dist/ui/permission-overlay-v2.d.ts +0 -36
  571. package/dist/ui/permission-overlay-v2.js +0 -380
  572. package/dist/ui/projects-overlay.d.ts +0 -19
  573. package/dist/ui/projects-overlay.js +0 -484
  574. package/dist/ui/theme-overlay-v2.d.ts +0 -42
  575. package/dist/ui/theme-overlay-v2.js +0 -135
  576. package/dist/ui/theme-overlay.d.ts +0 -24
  577. package/dist/ui/theme-overlay.js +0 -127
  578. package/dist/ui/tools-overlay-v2.d.ts +0 -47
  579. package/dist/ui/tools-overlay-v2.js +0 -218
  580. package/dist/ui/tools-overlay.d.ts +0 -34
  581. package/dist/ui/tools-overlay.js +0 -230
  582. package/dist/ui/tutorial-overlay-v2.d.ts +0 -31
  583. package/dist/ui/tutorial-overlay-v2.js +0 -1035
  584. package/dist/ui/tutorial-overlay.d.ts +0 -11
  585. package/dist/ui/tutorial-overlay.js +0 -1034
  586. package/dist/ui/workflow-overlay.d.ts +0 -22
  587. package/dist/ui/workflow-overlay.js +0 -636
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Auth Storage Module
3
+ *
4
+ * Manages persistent storage of authentication credentials.
5
+ * File: ~/.compilr-dev/auth.json
6
+ *
7
+ * Security:
8
+ * - File permissions set to 0600 (owner read/write only)
9
+ * - Tokens are JWTs from Supabase Auth
10
+ */
11
+ import * as fs from 'fs';
12
+ import * as path from 'path';
13
+ import * as os from 'os';
14
+ // =============================================================================
15
+ // Constants
16
+ // =============================================================================
17
+ const CONFIG_DIR = path.join(os.homedir(), '.compilr-dev');
18
+ const AUTH_FILE = path.join(CONFIG_DIR, 'auth.json');
19
+ // =============================================================================
20
+ // Storage Operations
21
+ // =============================================================================
22
+ /**
23
+ * Load auth data from disk.
24
+ * Returns null if file doesn't exist or is invalid.
25
+ */
26
+ export function loadAuthData() {
27
+ try {
28
+ if (!fs.existsSync(AUTH_FILE)) {
29
+ return null;
30
+ }
31
+ const data = fs.readFileSync(AUTH_FILE, 'utf-8');
32
+ const parsed = JSON.parse(data);
33
+ // Validate required fields
34
+ if (typeof parsed.version !== 'number' ||
35
+ typeof parsed.user !== 'object' ||
36
+ !parsed.user ||
37
+ typeof parsed.session !== 'object' ||
38
+ !parsed.session) {
39
+ return null;
40
+ }
41
+ return parsed;
42
+ }
43
+ catch {
44
+ // File doesn't exist or is corrupted
45
+ return null;
46
+ }
47
+ }
48
+ /**
49
+ * Save auth data to disk with secure permissions.
50
+ */
51
+ export function saveAuthData(data) {
52
+ // Ensure config directory exists
53
+ fs.mkdirSync(CONFIG_DIR, { recursive: true });
54
+ // Write with restrictive permissions
55
+ fs.writeFileSync(AUTH_FILE, JSON.stringify(data, null, 2), {
56
+ encoding: 'utf-8',
57
+ mode: 0o600, // Owner read/write only
58
+ });
59
+ // Verify permissions (fix if system ignored mode)
60
+ try {
61
+ fs.chmodSync(AUTH_FILE, 0o600);
62
+ }
63
+ catch {
64
+ // Ignore chmod errors (e.g., on Windows)
65
+ }
66
+ }
67
+ /**
68
+ * Clear auth data (logout).
69
+ */
70
+ export function clearAuthData() {
71
+ try {
72
+ if (fs.existsSync(AUTH_FILE)) {
73
+ fs.unlinkSync(AUTH_FILE);
74
+ }
75
+ }
76
+ catch {
77
+ // Ignore errors during cleanup
78
+ }
79
+ }
80
+ /**
81
+ * Update just the session tokens (after refresh).
82
+ */
83
+ export function updateSession(session) {
84
+ const data = loadAuthData();
85
+ if (!data) {
86
+ return false;
87
+ }
88
+ data.session = session;
89
+ saveAuthData(data);
90
+ return true;
91
+ }
92
+ /**
93
+ * Check if auth data exists (quick check without loading).
94
+ */
95
+ export function hasAuthData() {
96
+ return fs.existsSync(AUTH_FILE);
97
+ }
98
+ /**
99
+ * Check if stored auth file has insecure permissions.
100
+ * Returns warning message if insecure, null if OK.
101
+ */
102
+ export function checkAuthFilePermissions() {
103
+ try {
104
+ if (!fs.existsSync(AUTH_FILE)) {
105
+ return null;
106
+ }
107
+ const stats = fs.statSync(AUTH_FILE);
108
+ const mode = stats.mode & 0o777; // Get permission bits
109
+ // Check if group or others have any access
110
+ if (mode & 0o077) {
111
+ return `Warning: Auth file has insecure permissions (${mode.toString(8)}). Consider running: chmod 600 ${AUTH_FILE}`;
112
+ }
113
+ return null;
114
+ }
115
+ catch {
116
+ return null;
117
+ }
118
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Changelog Module
3
+ *
4
+ * Exports release data and helper functions.
5
+ */
6
+ import { type Release } from './releases.js';
7
+ export { RELEASES, type Release, type ReleaseChange } from './releases.js';
8
+ /**
9
+ * Get the latest release entry.
10
+ */
11
+ export declare function getLatestRelease(): Release | undefined;
12
+ /**
13
+ * Get startup highlights for a given version.
14
+ * Returns the highlights array if the version matches a known release, or the latest release highlights.
15
+ */
16
+ export declare function getStartupHighlights(version: string): string[];
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Changelog Module
3
+ *
4
+ * Exports release data and helper functions.
5
+ */
6
+ import { RELEASES } from './releases.js';
7
+ export { RELEASES } from './releases.js';
8
+ /**
9
+ * Get the latest release entry.
10
+ */
11
+ export function getLatestRelease() {
12
+ return RELEASES[0];
13
+ }
14
+ /**
15
+ * Get startup highlights for a given version.
16
+ * Returns the highlights array if the version matches a known release, or the latest release highlights.
17
+ */
18
+ export function getStartupHighlights(version) {
19
+ const match = RELEASES.find((r) => r.version === version);
20
+ if (match)
21
+ return match.highlights;
22
+ // Fallback to latest
23
+ return RELEASES[0]?.highlights ?? [];
24
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Release Data
3
+ *
4
+ * Single source of truth for all release notes.
5
+ * Newest releases first.
6
+ */
7
+ export interface ReleaseChange {
8
+ category: 'added' | 'changed' | 'fixed';
9
+ text: string;
10
+ }
11
+ export interface Release {
12
+ version: string;
13
+ date: string;
14
+ highlights: string[];
15
+ changes: ReleaseChange[];
16
+ }
17
+ export declare const RELEASES: Release[];
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Release Data
3
+ *
4
+ * Single source of truth for all release notes.
5
+ * Newest releases first.
6
+ */
7
+ // =============================================================================
8
+ // Release Data (newest first)
9
+ // =============================================================================
10
+ export const RELEASES = [
11
+ {
12
+ version: '0.5.0',
13
+ date: '2026-02-16',
14
+ highlights: [
15
+ 'Status bar navigation',
16
+ '/changelog command',
17
+ 'Release notes on startup',
18
+ ],
19
+ changes: [
20
+ { category: 'added', text: 'Status bar navigation (down arrow to footer)' },
21
+ { category: 'added', text: '/changelog command with browsable overlay' },
22
+ { category: 'added', text: 'Background agent count indicator' },
23
+ { category: 'added', text: 'Release notes on startup screen' },
24
+ { category: 'changed', text: 'Pending indicator hint updated to [↓]' },
25
+ { category: 'changed', text: 'Background execution tutorial updated' },
26
+ ],
27
+ },
28
+ {
29
+ version: '0.4.0',
30
+ date: '2026-01-20',
31
+ highlights: [
32
+ 'Multi-agent teams',
33
+ '/filter command',
34
+ 'Background execution',
35
+ ],
36
+ changes: [
37
+ { category: 'added', text: 'Multi-agent team support ($arch, $pm, $qa, etc.)' },
38
+ { category: 'added', text: '/filter command for tool filtering' },
39
+ { category: 'added', text: 'Background agent execution ($agent msg &)' },
40
+ { category: 'added', text: 'Task ownership and handoff between agents' },
41
+ { category: 'added', text: '/team dashboard with agent status' },
42
+ { category: 'changed', text: 'Footer shows active team agent' },
43
+ { category: 'fixed', text: 'Session restoration across project switches' },
44
+ ],
45
+ },
46
+ {
47
+ version: '0.3.0',
48
+ date: '2025-12-15',
49
+ highlights: [
50
+ 'Plan mode',
51
+ 'Permission system',
52
+ 'Onboarding wizard',
53
+ ],
54
+ changes: [
55
+ { category: 'added', text: 'Plan mode for structured AI responses' },
56
+ { category: 'added', text: 'Permission system for tool execution' },
57
+ { category: 'added', text: '/init onboarding wizard' },
58
+ { category: 'added', text: 'Meta-tools for 62% token reduction' },
59
+ { category: 'changed', text: 'Improved context management with ContextManager' },
60
+ { category: 'fixed', text: 'Ghost lines in overlay rendering' },
61
+ ],
62
+ },
63
+ ];
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Auth Command Handlers
3
+ *
4
+ * CLI authentication via device flow.
5
+ * Commands: /login, /logout, /whoami
6
+ */
7
+ import type { CommandHandlerV2 } from '../types.js';
8
+ import { openBrowser } from '../../utils/open-browser.js';
9
+ export { openBrowser };
10
+ export declare const authCommands: CommandHandlerV2[];
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Auth Command Handlers
3
+ *
4
+ * CLI authentication via device flow.
5
+ * Commands: /login, /logout, /whoami
6
+ */
7
+ import { getAuthManager } from '../../auth/index.js';
8
+ import { LoginOverlayV2 } from '../../ui/overlay/impl/login-overlay-v2.js';
9
+ import { openBrowser } from '../../utils/open-browser.js';
10
+ // Re-export for any existing consumers
11
+ export { openBrowser };
12
+ // =============================================================================
13
+ // /login Command
14
+ // =============================================================================
15
+ const loginCommand = {
16
+ name: 'login',
17
+ aliases: ['signin'],
18
+ description: 'Log in to compilr.dev',
19
+ details: 'Authenticate via browser using the device flow. Opens compilr.dev where you can log in or create an account. The CLI receives your credentials automatically.',
20
+ examples: [
21
+ { code: '/login', description: 'Start the login flow' },
22
+ ],
23
+ async execute(_args, ctx) {
24
+ const auth = getAuthManager();
25
+ // Check if already logged in
26
+ if (await auth.isAuthenticated()) {
27
+ const user = await auth.getUser();
28
+ ctx.ui.print({ type: 'info', message: `Already logged in as ${user.email}` });
29
+ ctx.ui.print({ type: 'info', message: 'Use /logout to sign out first.' });
30
+ return true;
31
+ }
32
+ const loginOverlay = new LoginOverlayV2();
33
+ const result = await ctx.ui.showOverlay(loginOverlay);
34
+ if (result?.success) {
35
+ await auth.sendForcedHeartbeat();
36
+ await auth.startSession();
37
+ ctx.ui.print({ type: 'success', message: `Logged in as ${result.email ?? ''}` });
38
+ }
39
+ else {
40
+ ctx.ui.print({ type: 'error', message: 'Login cancelled or failed.' });
41
+ }
42
+ return true;
43
+ },
44
+ };
45
+ // =============================================================================
46
+ // /logout Command
47
+ // =============================================================================
48
+ const logoutCommand = {
49
+ name: 'logout',
50
+ aliases: ['signout'],
51
+ description: 'Log out of compilr.dev',
52
+ details: 'Sign out and clear stored credentials.',
53
+ examples: [
54
+ { code: '/logout', description: 'Sign out' },
55
+ ],
56
+ execute(_args, ctx) {
57
+ const auth = getAuthManager();
58
+ if (!auth.hasStoredAuth()) {
59
+ ctx.ui.print({ type: 'info', message: 'Not logged in.' });
60
+ return Promise.resolve(true);
61
+ }
62
+ auth.logout();
63
+ ctx.ui.print({ type: 'success', message: 'Logged out successfully.' });
64
+ return Promise.resolve(true);
65
+ },
66
+ };
67
+ // =============================================================================
68
+ // /whoami Command
69
+ // =============================================================================
70
+ const whoamiCommand = {
71
+ name: 'whoami',
72
+ aliases: ['me', 'account'],
73
+ description: 'Show current user info',
74
+ details: 'Display the currently logged in user and account details.',
75
+ examples: [
76
+ { code: '/whoami', description: 'Show account info' },
77
+ ],
78
+ async execute(_args, ctx) {
79
+ const auth = getAuthManager();
80
+ if (!await auth.isAuthenticated()) {
81
+ ctx.ui.print({ type: 'info', message: 'Not logged in. Use /login to authenticate.' });
82
+ return true;
83
+ }
84
+ const user = await auth.getUser();
85
+ const profile = auth.getProfile();
86
+ const lines = [
87
+ '',
88
+ ` Email: ${user.email}`,
89
+ ` Account: ${user.accountType}`,
90
+ ` Member since: ${user.createdAt.toLocaleDateString('en-US', { year: 'numeric', month: 'short', day: 'numeric' })}`,
91
+ ` User ID: ${user.id.slice(0, 8)}...`,
92
+ ];
93
+ if (profile) {
94
+ lines.push('');
95
+ lines.push(` Provider: ${profile.default_provider}`);
96
+ lines.push(` Model: ${profile.default_model}`);
97
+ lines.push(` Telemetry: ${profile.telemetry_enabled ? 'enabled' : 'disabled'}`);
98
+ if (profile.total_sessions > 0) {
99
+ lines.push('');
100
+ lines.push(` Sessions: ${String(profile.total_sessions)}`);
101
+ lines.push(` Messages: ${String(profile.total_messages)}`);
102
+ }
103
+ }
104
+ lines.push('');
105
+ lines.push(' Profile: https://compilr.dev/profile');
106
+ lines.push('');
107
+ ctx.ui.print({ type: 'raw-lines', lines });
108
+ return true;
109
+ },
110
+ };
111
+ // =============================================================================
112
+ // Export
113
+ // =============================================================================
114
+ export const authCommands = [
115
+ loginCommand,
116
+ logoutCommand,
117
+ whoamiCommand,
118
+ ];
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Background Agent Command Handlers
3
+ *
4
+ * Commands for managing background agents and pending requests.
5
+ *
6
+ * Phase 3b: Pending Requests System
7
+ * Phase 3c: Background Status & Control
8
+ */
9
+ import type { CommandHandlerV2 } from '../types.js';
10
+ export declare const pendingCommand: CommandHandlerV2;
11
+ export declare const bgCommand: CommandHandlerV2;
12
+ export declare const fgCommand: CommandHandlerV2;
13
+ export declare const killCommand: CommandHandlerV2;
14
+ export declare const backgroundCommands: CommandHandlerV2[];
@@ -0,0 +1,276 @@
1
+ /**
2
+ * Background Agent Command Handlers
3
+ *
4
+ * Commands for managing background agents and pending requests.
5
+ *
6
+ * Phase 3b: Pending Requests System
7
+ * Phase 3c: Background Status & Control
8
+ */
9
+ import { getStyles } from '../../themes/index.js';
10
+ import { PendingOverlayV2, BackgroundOverlayV2 } from '../../ui/overlay/index.js';
11
+ import { AskUserSimpleOverlayV2 } from '../../ui/overlay/impl/ask-user-simple-overlay-v2.js';
12
+ import { AskUserOverlayV2 } from '../../ui/overlay/impl/ask-user-overlay-v2.js';
13
+ import { getPendingRequestsManager } from '../../multi-agent/index.js';
14
+ // =============================================================================
15
+ // Pending Command
16
+ // =============================================================================
17
+ export const pendingCommand = {
18
+ name: 'pending',
19
+ aliases: ['p'],
20
+ description: 'View and respond to pending requests from background agents',
21
+ details: 'Background agents may need your approval for permissions or answers to questions. This command shows all pending requests and lets you approve or deny them.',
22
+ examples: [
23
+ { code: '/pending', description: 'Open the pending requests overlay' },
24
+ { code: '/p', description: 'Shortcut alias' },
25
+ ],
26
+ interactions: [
27
+ '↑/↓ to select a request',
28
+ 'a to approve permission requests',
29
+ 'r/Enter to respond to questions',
30
+ 'd to deny/skip',
31
+ 'Esc to close',
32
+ ],
33
+ async execute(_args, ctx) {
34
+ const pendingManager = getPendingRequestsManager();
35
+ // Loop: re-open pending overlay after each question if more requests remain
36
+ let keepGoing = true;
37
+ while (keepGoing) {
38
+ const overlay = new PendingOverlayV2();
39
+ const result = await ctx.ui.showOverlay(overlay);
40
+ if (!result || result.type === 'closed') {
41
+ break;
42
+ }
43
+ // Handle 'respond' result - show the standard overlay for the question
44
+ const request = result.request;
45
+ const context = request.context;
46
+ const toolType = context?.toolType;
47
+ const originalInput = context?.originalInput;
48
+ if (toolType === 'ask_user_simple' && originalInput) {
49
+ const input = originalInput;
50
+ const questionOverlay = new AskUserSimpleOverlayV2({
51
+ question: input.question,
52
+ options: input.options,
53
+ allowCustom: input.allowCustom,
54
+ });
55
+ const questionResult = await ctx.ui.showOverlay(questionOverlay);
56
+ if (questionResult) {
57
+ pendingManager.respond(request.id, {
58
+ approved: !questionResult.skipped,
59
+ overlayResult: questionResult,
60
+ });
61
+ }
62
+ else {
63
+ pendingManager.respond(request.id, {
64
+ approved: false,
65
+ overlayResult: { answer: '', skipped: true },
66
+ });
67
+ }
68
+ }
69
+ else if (toolType === 'ask_user' && originalInput) {
70
+ const input = originalInput;
71
+ const questionOverlay = new AskUserOverlayV2({
72
+ questions: input.questions,
73
+ context: input.context,
74
+ });
75
+ const questionResult = await ctx.ui.showOverlay(questionOverlay);
76
+ if (questionResult) {
77
+ pendingManager.respond(request.id, {
78
+ approved: true,
79
+ overlayResult: questionResult,
80
+ });
81
+ }
82
+ else {
83
+ pendingManager.respond(request.id, {
84
+ approved: false,
85
+ overlayResult: {
86
+ answers: {},
87
+ skipped: input.questions.map((q) => q.id),
88
+ },
89
+ });
90
+ }
91
+ }
92
+ // Auto-close if no more requests, otherwise loop back to pending overlay
93
+ keepGoing = pendingManager.getCount() > 0;
94
+ }
95
+ return true;
96
+ },
97
+ };
98
+ // =============================================================================
99
+ // Background Status Command
100
+ // =============================================================================
101
+ export const bgCommand = {
102
+ name: 'bg',
103
+ aliases: ['background'],
104
+ description: 'View status of background agents',
105
+ details: 'Shows all running background agents and their status. You can bring an agent to the foreground or kill it from this view.',
106
+ examples: [
107
+ { code: '/bg', description: 'Show background agents status' },
108
+ { code: '/background', description: 'Full command name' },
109
+ ],
110
+ interactions: [
111
+ '↑/↓ to select an agent',
112
+ 'f to bring to foreground',
113
+ 'k to kill the agent',
114
+ 'Esc to close',
115
+ ],
116
+ async execute(_args, ctx) {
117
+ const s = getStyles();
118
+ // If the foreground agent is busy (agent running), /bg sends it to background
119
+ if (ctx.ui.isAgentRunning() && ctx.sendForegroundToBackground) {
120
+ const demoted = ctx.sendForegroundToBackground();
121
+ if (demoted) {
122
+ ctx.ui.print({
123
+ type: 'info',
124
+ message: `$${demoted} sent to background (still running)`,
125
+ });
126
+ }
127
+ return true;
128
+ }
129
+ // Check if background session management is available
130
+ if (!ctx.getBackgroundSessions) {
131
+ ctx.ui.print({
132
+ type: 'warning',
133
+ message: 'Background agent management not available in this session.',
134
+ });
135
+ return true;
136
+ }
137
+ const overlay = new BackgroundOverlayV2({
138
+ getSessions: ctx.getBackgroundSessions,
139
+ });
140
+ const result = await ctx.ui.showOverlay(overlay);
141
+ // Handle foreground request
142
+ if (result && result.type === 'foreground') {
143
+ if (ctx.bringToForeground) {
144
+ const success = await ctx.bringToForeground(result.agentId);
145
+ if (success) {
146
+ ctx.ui.print({
147
+ type: 'info',
148
+ message: `Switched to $${result.agentId} in foreground`,
149
+ });
150
+ }
151
+ else {
152
+ ctx.ui.print({
153
+ type: 'warning',
154
+ message: `Could not bring $${result.agentId} to foreground`,
155
+ });
156
+ }
157
+ }
158
+ }
159
+ // Handle kill request
160
+ if (result && result.type === 'kill') {
161
+ if (ctx.killBackgroundAgent) {
162
+ const success = ctx.killBackgroundAgent(result.agentId);
163
+ if (success) {
164
+ ctx.ui.print({
165
+ type: 'info',
166
+ message: s.warning(`Killed background agent $${result.agentId}`),
167
+ });
168
+ }
169
+ else {
170
+ ctx.ui.print({
171
+ type: 'warning',
172
+ message: `Could not kill $${result.agentId} - agent not found`,
173
+ });
174
+ }
175
+ }
176
+ }
177
+ return true;
178
+ },
179
+ };
180
+ // =============================================================================
181
+ // Foreground Command
182
+ // =============================================================================
183
+ export const fgCommand = {
184
+ name: 'fg',
185
+ aliases: ['foreground'],
186
+ description: 'Bring a background agent to the foreground',
187
+ details: 'Switches focus to a background agent, making it the active foreground agent. The previously active agent continues running in the background.',
188
+ examples: [
189
+ { code: '/fg arch', description: 'Bring $arch to the foreground' },
190
+ { code: '/fg dev', description: 'Bring $dev to the foreground' },
191
+ ],
192
+ async execute(args, ctx) {
193
+ const agentId = args.trim().replace(/^\$/, ''); // Remove $ prefix if present
194
+ if (!agentId) {
195
+ ctx.ui.print({
196
+ type: 'warning',
197
+ message: 'Usage: /fg <agent> - e.g., /fg arch or /fg $dev',
198
+ });
199
+ return true;
200
+ }
201
+ if (!ctx.bringToForeground) {
202
+ ctx.ui.print({
203
+ type: 'warning',
204
+ message: 'Background agent management not available in this session.',
205
+ });
206
+ return true;
207
+ }
208
+ const success = await ctx.bringToForeground(agentId);
209
+ if (success) {
210
+ ctx.ui.print({
211
+ type: 'info',
212
+ message: `Switched to $${agentId} in foreground`,
213
+ });
214
+ }
215
+ else {
216
+ ctx.ui.print({
217
+ type: 'warning',
218
+ message: `Could not bring $${agentId} to foreground - agent not found or not running in background`,
219
+ });
220
+ }
221
+ return true;
222
+ },
223
+ };
224
+ // =============================================================================
225
+ // Kill Command
226
+ // =============================================================================
227
+ export const killCommand = {
228
+ name: 'kill',
229
+ description: 'Kill a background agent',
230
+ details: 'Cancels a running background agent. Any pending requests from this agent will be rejected.',
231
+ examples: [
232
+ { code: '/kill arch', description: 'Kill the $arch background agent' },
233
+ { code: '/kill dev', description: 'Kill the $dev background agent' },
234
+ ],
235
+ execute(args, ctx) {
236
+ const s = getStyles();
237
+ const agentId = args.trim().replace(/^\$/, ''); // Remove $ prefix if present
238
+ if (!agentId) {
239
+ ctx.ui.print({
240
+ type: 'warning',
241
+ message: 'Usage: /kill <agent> - e.g., /kill arch or /kill $dev',
242
+ });
243
+ return Promise.resolve(true);
244
+ }
245
+ if (!ctx.killBackgroundAgent) {
246
+ ctx.ui.print({
247
+ type: 'warning',
248
+ message: 'Background agent management not available in this session.',
249
+ });
250
+ return Promise.resolve(true);
251
+ }
252
+ const success = ctx.killBackgroundAgent(agentId);
253
+ if (success) {
254
+ ctx.ui.print({
255
+ type: 'info',
256
+ message: s.warning(`Killed background agent $${agentId}`),
257
+ });
258
+ }
259
+ else {
260
+ ctx.ui.print({
261
+ type: 'warning',
262
+ message: `Could not kill $${agentId} - agent not found or not running in background`,
263
+ });
264
+ }
265
+ return Promise.resolve(true);
266
+ },
267
+ };
268
+ // =============================================================================
269
+ // Export
270
+ // =============================================================================
271
+ export const backgroundCommands = [
272
+ pendingCommand,
273
+ bgCommand,
274
+ fgCommand,
275
+ killCommand,
276
+ ];