@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,124 @@
1
+ /**
2
+ * API Client for CLI Authentication
3
+ *
4
+ * All backend communication goes through Netlify Functions.
5
+ * No direct Supabase SDK dependency — the server handles Supabase calls.
6
+ *
7
+ * Note: This is for USER authentication only — users still bring their own LLM API keys.
8
+ */
9
+ export interface RefreshTokenResponse {
10
+ success: boolean;
11
+ access_token?: string;
12
+ refresh_token?: string;
13
+ expires_in?: number;
14
+ user?: {
15
+ id: string;
16
+ email: string;
17
+ };
18
+ error?: string;
19
+ }
20
+ export interface ProfileData {
21
+ user_id: string;
22
+ email: string;
23
+ account_type: 'free' | 'pro' | 'team' | 'enterprise';
24
+ telemetry_enabled: boolean;
25
+ default_provider: string;
26
+ default_model: string;
27
+ default_tier: string;
28
+ theme: string;
29
+ total_sessions: number;
30
+ total_messages: number;
31
+ first_session_at: string | null;
32
+ last_session_at: string | null;
33
+ created_at: string;
34
+ }
35
+ export interface HeartbeatData {
36
+ session_id: string;
37
+ cli_version: string;
38
+ os: string;
39
+ node_version: string;
40
+ project_id?: number;
41
+ total_messages?: number;
42
+ total_tokens_in?: number;
43
+ total_tokens_out?: number;
44
+ commands_used?: Record<string, number>;
45
+ agents_used?: string[];
46
+ tools_used?: string[];
47
+ llm_provider?: string;
48
+ llm_model?: string;
49
+ }
50
+ export interface DeviceCodeResponse {
51
+ device_code: string;
52
+ user_code: string;
53
+ verification_uri: string;
54
+ verification_uri_complete: string;
55
+ expires_in: number;
56
+ interval: number;
57
+ }
58
+ export interface DeviceTokenResponse {
59
+ access_token: string;
60
+ refresh_token: string;
61
+ token_type: string;
62
+ expires_in: number;
63
+ api_token?: string;
64
+ user: {
65
+ id: string;
66
+ email: string;
67
+ };
68
+ }
69
+ export interface DeviceTokenError {
70
+ error: 'authorization_pending' | 'slow_down' | 'expired_token' | 'access_denied' | 'invalid_grant' | 'server_error';
71
+ error_description: string;
72
+ }
73
+ /**
74
+ * Refresh an access token using a refresh token.
75
+ * Calls the server-side Netlify function which handles Supabase internally.
76
+ */
77
+ export declare function refreshToken(refreshTokenValue: string): Promise<RefreshTokenResponse>;
78
+ /**
79
+ * Send heartbeat to record session.
80
+ */
81
+ export declare function sendHeartbeat(accessToken: string, data: HeartbeatData): Promise<{
82
+ success: boolean;
83
+ telemetry_enabled?: boolean;
84
+ error?: string;
85
+ }>;
86
+ /**
87
+ * Get user profile from CLI API.
88
+ */
89
+ export declare function getProfile(accessToken: string): Promise<{
90
+ success: boolean;
91
+ profile?: ProfileData;
92
+ error?: string;
93
+ }>;
94
+ /**
95
+ * Update user profile via CLI API.
96
+ */
97
+ export declare function updateProfile(accessToken: string, updates: Partial<Pick<ProfileData, 'telemetry_enabled' | 'default_provider' | 'default_model' | 'default_tier' | 'theme'>>): Promise<{
98
+ success: boolean;
99
+ profile?: ProfileData;
100
+ error?: string;
101
+ }>;
102
+ /**
103
+ * Request a device code for CLI authentication.
104
+ * Returns codes and URLs for the user to authorize.
105
+ */
106
+ export declare function requestDeviceCode(): Promise<{
107
+ success: boolean;
108
+ data?: DeviceCodeResponse;
109
+ error?: string;
110
+ }>;
111
+ /**
112
+ * Poll for device token after user authorizes.
113
+ * Returns tokens on success, or error status if still pending.
114
+ */
115
+ export declare function pollDeviceToken(deviceCode: string): Promise<{
116
+ success: boolean;
117
+ data?: DeviceTokenResponse;
118
+ error?: DeviceTokenError;
119
+ networkError?: string;
120
+ }>;
121
+ /**
122
+ * Get the authorization URL for the device flow.
123
+ */
124
+ export declare function getAuthorizationUrl(userCode?: string): string;
@@ -0,0 +1,261 @@
1
+ /**
2
+ * API Client for CLI Authentication
3
+ *
4
+ * All backend communication goes through Netlify Functions.
5
+ * No direct Supabase SDK dependency — the server handles Supabase calls.
6
+ *
7
+ * Note: This is for USER authentication only — users still bring their own LLM API keys.
8
+ */
9
+ import * as os from 'os';
10
+ // =============================================================================
11
+ // Configuration
12
+ // =============================================================================
13
+ // API endpoint for CLI-specific operations
14
+ // Use COMPILR_API_URL env var for testing against branch previews
15
+ const API_BASE_URL = process.env.COMPILR_API_URL || 'https://compilr.dev/.netlify/functions';
16
+ // Device flow authorization URL
17
+ // Use COMPILR_WEB_URL env var for testing against branch previews
18
+ const WEB_BASE_URL = process.env.COMPILR_WEB_URL || 'https://compilr.dev';
19
+ const AUTHORIZATION_URL = `${WEB_BASE_URL}/cli/authorize`;
20
+ // =============================================================================
21
+ // Token Refresh (via Netlify Function)
22
+ // =============================================================================
23
+ /**
24
+ * Refresh an access token using a refresh token.
25
+ * Calls the server-side Netlify function which handles Supabase internally.
26
+ */
27
+ export async function refreshToken(refreshTokenValue) {
28
+ try {
29
+ const response = await fetch(`${API_BASE_URL}/cli-refresh-token`, {
30
+ method: 'POST',
31
+ headers: {
32
+ 'Content-Type': 'application/json',
33
+ },
34
+ body: JSON.stringify({ refresh_token: refreshTokenValue }),
35
+ });
36
+ const contentType = response.headers.get('content-type') ?? '';
37
+ if (!contentType.includes('application/json')) {
38
+ return { success: false, error: `Server returned non-JSON response (${String(response.status)})` };
39
+ }
40
+ const result = await response.json();
41
+ if (!response.ok) {
42
+ return {
43
+ success: false,
44
+ error: result.error ?? `HTTP ${String(response.status)}`,
45
+ };
46
+ }
47
+ return {
48
+ success: true,
49
+ access_token: result.access_token,
50
+ refresh_token: result.refresh_token,
51
+ expires_in: result.expires_in,
52
+ user: result.user,
53
+ };
54
+ }
55
+ catch (error) {
56
+ return {
57
+ success: false,
58
+ error: error instanceof Error ? error.message : 'Network error',
59
+ };
60
+ }
61
+ }
62
+ // =============================================================================
63
+ // CLI API Operations (against our Netlify Functions)
64
+ // =============================================================================
65
+ /**
66
+ * Send heartbeat to record session.
67
+ */
68
+ export async function sendHeartbeat(accessToken, data) {
69
+ try {
70
+ const response = await fetch(`${API_BASE_URL}/cli-heartbeat`, {
71
+ method: 'POST',
72
+ headers: {
73
+ 'Authorization': `Bearer ${accessToken}`,
74
+ 'Content-Type': 'application/json',
75
+ },
76
+ body: JSON.stringify(data),
77
+ });
78
+ const contentType = response.headers.get('content-type') ?? '';
79
+ if (!contentType.includes('application/json')) {
80
+ return { success: false, error: `Server returned non-JSON response (${String(response.status)})` };
81
+ }
82
+ const result = await response.json();
83
+ if (!response.ok) {
84
+ return {
85
+ success: false,
86
+ error: result.error ?? `HTTP ${String(response.status)}`,
87
+ };
88
+ }
89
+ return {
90
+ success: result.success ?? true,
91
+ telemetry_enabled: result.telemetry_enabled,
92
+ };
93
+ }
94
+ catch (error) {
95
+ return {
96
+ success: false,
97
+ error: error instanceof Error ? error.message : 'Network error',
98
+ };
99
+ }
100
+ }
101
+ /**
102
+ * Get user profile from CLI API.
103
+ */
104
+ export async function getProfile(accessToken) {
105
+ try {
106
+ const response = await fetch(`${API_BASE_URL}/cli-profile`, {
107
+ method: 'GET',
108
+ headers: {
109
+ 'Authorization': `Bearer ${accessToken}`,
110
+ },
111
+ });
112
+ const contentType = response.headers.get('content-type') ?? '';
113
+ if (!contentType.includes('application/json')) {
114
+ return { success: false, error: `Server returned non-JSON response (${String(response.status)})` };
115
+ }
116
+ const result = await response.json();
117
+ if (!response.ok) {
118
+ return {
119
+ success: false,
120
+ error: result.error ?? `HTTP ${String(response.status)}`,
121
+ };
122
+ }
123
+ return {
124
+ success: true,
125
+ profile: result,
126
+ };
127
+ }
128
+ catch (error) {
129
+ return {
130
+ success: false,
131
+ error: error instanceof Error ? error.message : 'Network error',
132
+ };
133
+ }
134
+ }
135
+ /**
136
+ * Update user profile via CLI API.
137
+ */
138
+ export async function updateProfile(accessToken, updates) {
139
+ try {
140
+ const response = await fetch(`${API_BASE_URL}/cli-profile`, {
141
+ method: 'PATCH',
142
+ headers: {
143
+ 'Authorization': `Bearer ${accessToken}`,
144
+ 'Content-Type': 'application/json',
145
+ },
146
+ body: JSON.stringify(updates),
147
+ });
148
+ const contentType = response.headers.get('content-type') ?? '';
149
+ if (!contentType.includes('application/json')) {
150
+ return { success: false, error: `Server returned non-JSON response (${String(response.status)})` };
151
+ }
152
+ const result = await response.json();
153
+ if (!response.ok) {
154
+ return {
155
+ success: false,
156
+ error: result.error ?? `HTTP ${String(response.status)}`,
157
+ };
158
+ }
159
+ return {
160
+ success: result.success ?? true,
161
+ profile: result.profile,
162
+ };
163
+ }
164
+ catch (error) {
165
+ return {
166
+ success: false,
167
+ error: error instanceof Error ? error.message : 'Network error',
168
+ };
169
+ }
170
+ }
171
+ // =============================================================================
172
+ // Device Flow Authentication
173
+ // =============================================================================
174
+ /**
175
+ * Request a device code for CLI authentication.
176
+ * Returns codes and URLs for the user to authorize.
177
+ */
178
+ export async function requestDeviceCode() {
179
+ try {
180
+ const url = `${API_BASE_URL}/cli-device-code`;
181
+ const response = await fetch(url, {
182
+ method: 'POST',
183
+ headers: {
184
+ 'Content-Type': 'application/json',
185
+ },
186
+ });
187
+ const contentType = response.headers.get('content-type') ?? '';
188
+ if (!contentType.includes('application/json')) {
189
+ return {
190
+ success: false,
191
+ error: `Non-JSON response (${String(response.status)}) from: ${url}`,
192
+ };
193
+ }
194
+ if (!response.ok) {
195
+ const result = await response.json();
196
+ return {
197
+ success: false,
198
+ error: result.error ?? `HTTP ${String(response.status)}`,
199
+ };
200
+ }
201
+ const data = await response.json();
202
+ return { success: true, data };
203
+ }
204
+ catch (error) {
205
+ return {
206
+ success: false,
207
+ error: error instanceof Error ? error.message : 'Network error',
208
+ };
209
+ }
210
+ }
211
+ /**
212
+ * Poll for device token after user authorizes.
213
+ * Returns tokens on success, or error status if still pending.
214
+ */
215
+ export async function pollDeviceToken(deviceCode) {
216
+ try {
217
+ const response = await fetch(`${API_BASE_URL}/cli-device-token`, {
218
+ method: 'POST',
219
+ headers: {
220
+ 'Content-Type': 'application/json',
221
+ },
222
+ body: JSON.stringify({
223
+ device_code: deviceCode,
224
+ hostname: os.hostname(),
225
+ }),
226
+ });
227
+ const contentType = response.headers.get('content-type') ?? '';
228
+ if (!contentType.includes('application/json')) {
229
+ return {
230
+ success: false,
231
+ networkError: `Server returned non-JSON response (${String(response.status)})`,
232
+ };
233
+ }
234
+ const result = await response.json();
235
+ if (!response.ok) {
236
+ return {
237
+ success: false,
238
+ error: result,
239
+ };
240
+ }
241
+ return {
242
+ success: true,
243
+ data: result,
244
+ };
245
+ }
246
+ catch (error) {
247
+ return {
248
+ success: false,
249
+ networkError: error instanceof Error ? error.message : 'Network error',
250
+ };
251
+ }
252
+ }
253
+ /**
254
+ * Get the authorization URL for the device flow.
255
+ */
256
+ export function getAuthorizationUrl(userCode) {
257
+ if (userCode) {
258
+ return `${AUTHORIZATION_URL}?code=${userCode}`;
259
+ }
260
+ return AUTHORIZATION_URL;
261
+ }
@@ -0,0 +1,172 @@
1
+ /**
2
+ * Auth Manager Module
3
+ *
4
+ * Singleton authentication manager for the CLI.
5
+ * Handles login, logout, token refresh, and session management.
6
+ *
7
+ * Usage:
8
+ * const auth = getAuthManager();
9
+ * if (!await auth.isAuthenticated()) {
10
+ * // Show login prompt
11
+ * }
12
+ */
13
+ import { type ProfileData } from './api-client.js';
14
+ export interface User {
15
+ id: string;
16
+ email: string;
17
+ accountType: 'free' | 'pro' | 'team' | 'enterprise';
18
+ createdAt: Date;
19
+ }
20
+ export interface LoginResult {
21
+ success: boolean;
22
+ user?: User;
23
+ error?: string;
24
+ needsConfirmation?: boolean;
25
+ }
26
+ export interface DeviceFlowCallbacks {
27
+ /** Called when device code is ready - display the user code and URL */
28
+ onCodeReady: (userCode: string, verificationUrl: string) => void;
29
+ /** Called to update status during polling */
30
+ onStatusUpdate?: (status: 'polling' | 'authorized' | 'expired' | 'denied') => void;
31
+ /** Called to open the browser (return false to skip) */
32
+ onOpenBrowser?: (url: string) => Promise<boolean>;
33
+ }
34
+ export interface SessionInfo {
35
+ sessionId: string;
36
+ startedAt: Date;
37
+ projectId?: number;
38
+ messageCount: number;
39
+ tokensIn: number;
40
+ tokensOut: number;
41
+ commandsUsed: Record<string, number>;
42
+ agentsUsed: Set<string>;
43
+ toolsUsed: Set<string>;
44
+ llmProvider?: string;
45
+ llmModel?: string;
46
+ }
47
+ declare class AuthManager {
48
+ private authData;
49
+ private profileData;
50
+ private sessionInfo;
51
+ private heartbeatInterval;
52
+ constructor();
53
+ /**
54
+ * Check if user is authenticated with a valid session.
55
+ *
56
+ * If an API token (tok_xxx) is present, authentication is immediate —
57
+ * no expiry check or refresh needed (server validates on each call).
58
+ *
59
+ * Falls back to JWT refresh for pre-v2 users who don't have an API token yet.
60
+ */
61
+ isAuthenticated(): Promise<boolean>;
62
+ /**
63
+ * Check if any auth data exists (quick check without validation).
64
+ */
65
+ hasStoredAuth(): boolean;
66
+ /**
67
+ * Get cached email from local auth data (no network call).
68
+ * Returns null if not authenticated.
69
+ */
70
+ getEmail(): string | null;
71
+ /**
72
+ * Get the current user.
73
+ * Throws if not authenticated.
74
+ */
75
+ getUser(): Promise<User>;
76
+ /**
77
+ * Get the access token (auto-refreshes if needed).
78
+ * Prefers API token (tok_xxx) over JWT when available.
79
+ */
80
+ getAccessToken(): Promise<string>;
81
+ /**
82
+ * Login using device flow (browser-based authentication).
83
+ * This is the recommended way to authenticate the CLI.
84
+ *
85
+ * @param callbacks - Callbacks for progress updates
86
+ * @param signal - AbortSignal for cancellation
87
+ */
88
+ loginWithDeviceFlow(callbacks: DeviceFlowCallbacks, signal?: AbortSignal): Promise<LoginResult>;
89
+ /**
90
+ * Logout (clear local session).
91
+ * Tokens expire naturally (1 hour). No server call needed.
92
+ */
93
+ logout(): void;
94
+ /**
95
+ * Refresh the access token using the refresh token.
96
+ * Calls the server-side Netlify function (no direct Supabase SDK).
97
+ */
98
+ private refreshToken;
99
+ /**
100
+ * Get the best available token for API calls.
101
+ * Prefers API token (tok_xxx) over short-lived JWT.
102
+ */
103
+ private getBestToken;
104
+ /**
105
+ * Fetch user profile from server.
106
+ */
107
+ private fetchProfile;
108
+ /**
109
+ * Get cached profile data.
110
+ */
111
+ getProfile(): ProfileData | null;
112
+ /**
113
+ * Update profile settings on server.
114
+ */
115
+ updateProfileSettings(updates: {
116
+ telemetry_enabled?: boolean;
117
+ default_provider?: string;
118
+ default_model?: string;
119
+ default_tier?: string;
120
+ theme?: string;
121
+ }): Promise<boolean>;
122
+ /**
123
+ * Start a new CLI session and begin heartbeat.
124
+ */
125
+ startSession(projectId?: number): Promise<void>;
126
+ /**
127
+ * Stop the current session.
128
+ */
129
+ stopHeartbeat(): void;
130
+ /**
131
+ * Record a message in the current session.
132
+ */
133
+ recordMessage(tokensIn: number, tokensOut: number): void;
134
+ /**
135
+ * Record command usage.
136
+ */
137
+ recordCommand(command: string): void;
138
+ /**
139
+ * Record agent usage.
140
+ */
141
+ recordAgent(agentId: string): void;
142
+ /**
143
+ * Record tool usage.
144
+ */
145
+ recordTool(toolName: string): void;
146
+ /**
147
+ * Set LLM provider/model for session.
148
+ */
149
+ setLLMInfo(provider: string, model: string): void;
150
+ /**
151
+ * Send a single heartbeat regardless of telemetry setting.
152
+ * Called once at login to register the CLI connection with the server
153
+ * (sets first_session_at on cli_users_extended). This is account metadata,
154
+ * not telemetry data.
155
+ */
156
+ sendForcedHeartbeat(): Promise<void>;
157
+ /**
158
+ * Send heartbeat to server (if telemetry enabled).
159
+ */
160
+ private sendHeartbeat;
161
+ }
162
+ /**
163
+ * Get the AuthManager singleton instance.
164
+ */
165
+ export declare function getAuthManager(): AuthManager;
166
+ /**
167
+ * Reset AuthManager (for testing).
168
+ */
169
+ export declare function resetAuthManager(): void;
170
+ export type { AuthData, AuthSession } from './storage.js';
171
+ export type { ProfileData, HeartbeatData, DeviceCodeResponse } from './api-client.js';
172
+ export { getAuthorizationUrl } from './api-client.js';