@productbrain/cli 0.1.0-beta.1 → 0.1.0-beta.100

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 (731) hide show
  1. package/README.md +127 -0
  2. package/dist/__tests__/adapters.test.d.ts +2 -0
  3. package/dist/__tests__/adapters.test.d.ts.map +1 -0
  4. package/dist/__tests__/adapters.test.js +417 -0
  5. package/dist/__tests__/adapters.test.js.map +1 -0
  6. package/dist/__tests__/audit.test.d.ts +2 -0
  7. package/dist/__tests__/audit.test.d.ts.map +1 -0
  8. package/dist/__tests__/audit.test.js +394 -0
  9. package/dist/__tests__/audit.test.js.map +1 -0
  10. package/dist/__tests__/authority-domains.test.d.ts +2 -0
  11. package/dist/__tests__/authority-domains.test.d.ts.map +1 -0
  12. package/dist/__tests__/authority-domains.test.js +48 -0
  13. package/dist/__tests__/authority-domains.test.js.map +1 -0
  14. package/dist/__tests__/batch-transformations.test.d.ts +2 -0
  15. package/dist/__tests__/batch-transformations.test.d.ts.map +1 -0
  16. package/dist/__tests__/batch-transformations.test.js +263 -0
  17. package/dist/__tests__/batch-transformations.test.js.map +1 -0
  18. package/dist/__tests__/capture.test.d.ts +2 -0
  19. package/dist/__tests__/capture.test.d.ts.map +1 -0
  20. package/dist/__tests__/capture.test.js +377 -0
  21. package/dist/__tests__/capture.test.js.map +1 -0
  22. package/dist/__tests__/config.test.d.ts +8 -0
  23. package/dist/__tests__/config.test.d.ts.map +1 -0
  24. package/dist/__tests__/config.test.js +296 -0
  25. package/dist/__tests__/config.test.js.map +1 -0
  26. package/dist/__tests__/constants.test.d.ts +2 -0
  27. package/dist/__tests__/constants.test.d.ts.map +1 -0
  28. package/dist/__tests__/constants.test.js +141 -0
  29. package/dist/__tests__/constants.test.js.map +1 -0
  30. package/dist/__tests__/constellation.test.d.ts +2 -0
  31. package/dist/__tests__/constellation.test.d.ts.map +1 -0
  32. package/dist/__tests__/constellation.test.js +254 -0
  33. package/dist/__tests__/constellation.test.js.map +1 -0
  34. package/dist/__tests__/context-strategy.test.d.ts +2 -0
  35. package/dist/__tests__/context-strategy.test.d.ts.map +1 -0
  36. package/dist/__tests__/context-strategy.test.js +79 -0
  37. package/dist/__tests__/context-strategy.test.js.map +1 -0
  38. package/dist/__tests__/envelope-contract.test.d.ts +15 -0
  39. package/dist/__tests__/envelope-contract.test.d.ts.map +1 -0
  40. package/dist/__tests__/envelope-contract.test.js +126 -0
  41. package/dist/__tests__/envelope-contract.test.js.map +1 -0
  42. package/dist/__tests__/errors.test.d.ts +2 -0
  43. package/dist/__tests__/errors.test.d.ts.map +1 -0
  44. package/dist/__tests__/errors.test.js +117 -0
  45. package/dist/__tests__/errors.test.js.map +1 -0
  46. package/dist/__tests__/experiment.test.d.ts +6 -0
  47. package/dist/__tests__/experiment.test.d.ts.map +1 -0
  48. package/dist/__tests__/experiment.test.js +69 -0
  49. package/dist/__tests__/experiment.test.js.map +1 -0
  50. package/dist/__tests__/fields.test.d.ts +2 -0
  51. package/dist/__tests__/fields.test.d.ts.map +1 -0
  52. package/dist/__tests__/fields.test.js +238 -0
  53. package/dist/__tests__/fields.test.js.map +1 -0
  54. package/dist/__tests__/glossary.test.d.ts +2 -0
  55. package/dist/__tests__/glossary.test.d.ts.map +1 -0
  56. package/dist/__tests__/glossary.test.js +32 -0
  57. package/dist/__tests__/glossary.test.js.map +1 -0
  58. package/dist/__tests__/handshake-preview.test.d.ts +2 -0
  59. package/dist/__tests__/handshake-preview.test.d.ts.map +1 -0
  60. package/dist/__tests__/handshake-preview.test.js +279 -0
  61. package/dist/__tests__/handshake-preview.test.js.map +1 -0
  62. package/dist/__tests__/handshake.test.d.ts +2 -0
  63. package/dist/__tests__/handshake.test.d.ts.map +1 -0
  64. package/dist/__tests__/handshake.test.js +196 -0
  65. package/dist/__tests__/handshake.test.js.map +1 -0
  66. package/dist/__tests__/hook-intents.test.d.ts +2 -0
  67. package/dist/__tests__/hook-intents.test.d.ts.map +1 -0
  68. package/dist/__tests__/hook-intents.test.js +184 -0
  69. package/dist/__tests__/hook-intents.test.js.map +1 -0
  70. package/dist/__tests__/ingest.test.d.ts +2 -0
  71. package/dist/__tests__/ingest.test.d.ts.map +1 -0
  72. package/dist/__tests__/ingest.test.js +185 -0
  73. package/dist/__tests__/ingest.test.js.map +1 -0
  74. package/dist/__tests__/init.test.d.ts +7 -0
  75. package/dist/__tests__/init.test.d.ts.map +1 -0
  76. package/dist/__tests__/init.test.js +146 -0
  77. package/dist/__tests__/init.test.js.map +1 -0
  78. package/dist/__tests__/login.test.d.ts +2 -0
  79. package/dist/__tests__/login.test.d.ts.map +1 -0
  80. package/dist/__tests__/login.test.js +167 -0
  81. package/dist/__tests__/login.test.js.map +1 -0
  82. package/dist/__tests__/manifest.test.d.ts +6 -0
  83. package/dist/__tests__/manifest.test.d.ts.map +1 -0
  84. package/dist/__tests__/manifest.test.js +138 -0
  85. package/dist/__tests__/manifest.test.js.map +1 -0
  86. package/dist/__tests__/method-registry.integration.test.d.ts +6 -0
  87. package/dist/__tests__/method-registry.integration.test.d.ts.map +1 -0
  88. package/dist/__tests__/method-registry.integration.test.js +18 -0
  89. package/dist/__tests__/method-registry.integration.test.js.map +1 -0
  90. package/dist/__tests__/method-registry.test.d.ts +14 -0
  91. package/dist/__tests__/method-registry.test.d.ts.map +1 -0
  92. package/dist/__tests__/method-registry.test.js +134 -0
  93. package/dist/__tests__/method-registry.test.js.map +1 -0
  94. package/dist/__tests__/onboarding-path-b.test.d.ts +2 -0
  95. package/dist/__tests__/onboarding-path-b.test.d.ts.map +1 -0
  96. package/dist/__tests__/onboarding-path-b.test.js +46 -0
  97. package/dist/__tests__/onboarding-path-b.test.js.map +1 -0
  98. package/dist/__tests__/onboarding.test.d.ts +6 -0
  99. package/dist/__tests__/onboarding.test.d.ts.map +1 -0
  100. package/dist/__tests__/onboarding.test.js +347 -0
  101. package/dist/__tests__/onboarding.test.js.map +1 -0
  102. package/dist/__tests__/orient.test.d.ts +2 -0
  103. package/dist/__tests__/orient.test.d.ts.map +1 -0
  104. package/dist/__tests__/orient.test.js +196 -0
  105. package/dist/__tests__/orient.test.js.map +1 -0
  106. package/dist/__tests__/personal-layer.test.d.ts +12 -0
  107. package/dist/__tests__/personal-layer.test.d.ts.map +1 -0
  108. package/dist/__tests__/personal-layer.test.js +304 -0
  109. package/dist/__tests__/personal-layer.test.js.map +1 -0
  110. package/dist/__tests__/profiles.test.d.ts +2 -0
  111. package/dist/__tests__/profiles.test.d.ts.map +1 -0
  112. package/dist/__tests__/profiles.test.js +212 -0
  113. package/dist/__tests__/profiles.test.js.map +1 -0
  114. package/dist/__tests__/promote.test.d.ts +2 -0
  115. package/dist/__tests__/promote.test.d.ts.map +1 -0
  116. package/dist/__tests__/promote.test.js +230 -0
  117. package/dist/__tests__/promote.test.js.map +1 -0
  118. package/dist/__tests__/prompts.test.d.ts +6 -0
  119. package/dist/__tests__/prompts.test.d.ts.map +1 -0
  120. package/dist/__tests__/prompts.test.js +146 -0
  121. package/dist/__tests__/prompts.test.js.map +1 -0
  122. package/dist/__tests__/proposals.test.d.ts +2 -0
  123. package/dist/__tests__/proposals.test.d.ts.map +1 -0
  124. package/dist/__tests__/proposals.test.js +167 -0
  125. package/dist/__tests__/proposals.test.js.map +1 -0
  126. package/dist/__tests__/relate.test.d.ts +2 -0
  127. package/dist/__tests__/relate.test.d.ts.map +1 -0
  128. package/dist/__tests__/relate.test.js +103 -0
  129. package/dist/__tests__/relate.test.js.map +1 -0
  130. package/dist/__tests__/repo-detect.test.d.ts +2 -0
  131. package/dist/__tests__/repo-detect.test.d.ts.map +1 -0
  132. package/dist/__tests__/repo-detect.test.js +215 -0
  133. package/dist/__tests__/repo-detect.test.js.map +1 -0
  134. package/dist/__tests__/runner.test.d.ts +2 -0
  135. package/dist/__tests__/runner.test.d.ts.map +1 -0
  136. package/dist/__tests__/runner.test.js +219 -0
  137. package/dist/__tests__/runner.test.js.map +1 -0
  138. package/dist/__tests__/session-state-machine.test.d.ts +2 -0
  139. package/dist/__tests__/session-state-machine.test.d.ts.map +1 -0
  140. package/dist/__tests__/session-state-machine.test.js +154 -0
  141. package/dist/__tests__/session-state-machine.test.js.map +1 -0
  142. package/dist/__tests__/session-touch.test.d.ts +2 -0
  143. package/dist/__tests__/session-touch.test.d.ts.map +1 -0
  144. package/dist/__tests__/session-touch.test.js +134 -0
  145. package/dist/__tests__/session-touch.test.js.map +1 -0
  146. package/dist/__tests__/session.test.d.ts +2 -0
  147. package/dist/__tests__/session.test.d.ts.map +1 -0
  148. package/dist/__tests__/session.test.js +46 -0
  149. package/dist/__tests__/session.test.js.map +1 -0
  150. package/dist/__tests__/setup-ingest.test.d.ts +2 -0
  151. package/dist/__tests__/setup-ingest.test.d.ts.map +1 -0
  152. package/dist/__tests__/setup-ingest.test.js +55 -0
  153. package/dist/__tests__/setup-ingest.test.js.map +1 -0
  154. package/dist/__tests__/setup-resolver.test.d.ts +14 -0
  155. package/dist/__tests__/setup-resolver.test.d.ts.map +1 -0
  156. package/dist/__tests__/setup-resolver.test.js +228 -0
  157. package/dist/__tests__/setup-resolver.test.js.map +1 -0
  158. package/dist/__tests__/setup.test.d.ts +2 -0
  159. package/dist/__tests__/setup.test.d.ts.map +1 -0
  160. package/dist/__tests__/setup.test.js +141 -0
  161. package/dist/__tests__/setup.test.js.map +1 -0
  162. package/dist/__tests__/spinner-labels.test.d.ts +2 -0
  163. package/dist/__tests__/spinner-labels.test.d.ts.map +1 -0
  164. package/dist/__tests__/spinner-labels.test.js +23 -0
  165. package/dist/__tests__/spinner-labels.test.js.map +1 -0
  166. package/dist/__tests__/state.test.d.ts +6 -0
  167. package/dist/__tests__/state.test.d.ts.map +1 -0
  168. package/dist/__tests__/state.test.js +97 -0
  169. package/dist/__tests__/state.test.js.map +1 -0
  170. package/dist/__tests__/strip.test.d.ts +2 -0
  171. package/dist/__tests__/strip.test.d.ts.map +1 -0
  172. package/dist/__tests__/strip.test.js +136 -0
  173. package/dist/__tests__/strip.test.js.map +1 -0
  174. package/dist/__tests__/surface-profiles.test.d.ts +2 -0
  175. package/dist/__tests__/surface-profiles.test.d.ts.map +1 -0
  176. package/dist/__tests__/surface-profiles.test.js +233 -0
  177. package/dist/__tests__/surface-profiles.test.js.map +1 -0
  178. package/dist/__tests__/surfaces.test.d.ts +2 -0
  179. package/dist/__tests__/surfaces.test.d.ts.map +1 -0
  180. package/dist/__tests__/surfaces.test.js +46 -0
  181. package/dist/__tests__/surfaces.test.js.map +1 -0
  182. package/dist/__tests__/update.test.d.ts +2 -0
  183. package/dist/__tests__/update.test.d.ts.map +1 -0
  184. package/dist/__tests__/update.test.js +228 -0
  185. package/dist/__tests__/update.test.js.map +1 -0
  186. package/dist/__tests__/workspace.test.d.ts +2 -0
  187. package/dist/__tests__/workspace.test.d.ts.map +1 -0
  188. package/dist/__tests__/workspace.test.js +308 -0
  189. package/dist/__tests__/workspace.test.js.map +1 -0
  190. package/dist/commands/accept.d.ts +18 -0
  191. package/dist/commands/accept.d.ts.map +1 -0
  192. package/dist/commands/accept.js +76 -0
  193. package/dist/commands/accept.js.map +1 -0
  194. package/dist/commands/admin/cockpit.d.ts +90 -0
  195. package/dist/commands/admin/cockpit.d.ts.map +1 -0
  196. package/dist/commands/admin/cockpit.js +618 -0
  197. package/dist/commands/admin/cockpit.js.map +1 -0
  198. package/dist/commands/admin/index.d.ts +21 -0
  199. package/dist/commands/admin/index.d.ts.map +1 -0
  200. package/dist/commands/admin/index.js +256 -0
  201. package/dist/commands/admin/index.js.map +1 -0
  202. package/dist/commands/admin/inspect.d.ts +30 -0
  203. package/dist/commands/admin/inspect.d.ts.map +1 -0
  204. package/dist/commands/admin/inspect.js +555 -0
  205. package/dist/commands/admin/inspect.js.map +1 -0
  206. package/dist/commands/admin/inspect.test.d.ts +7 -0
  207. package/dist/commands/admin/inspect.test.d.ts.map +1 -0
  208. package/dist/commands/admin/inspect.test.js +90 -0
  209. package/dist/commands/admin/inspect.test.js.map +1 -0
  210. package/dist/commands/admin/manage.d.ts +8 -0
  211. package/dist/commands/admin/manage.d.ts.map +1 -0
  212. package/dist/commands/admin/manage.js +76 -0
  213. package/dist/commands/admin/manage.js.map +1 -0
  214. package/dist/commands/admin/seed.d.ts +32 -0
  215. package/dist/commands/admin/seed.d.ts.map +1 -0
  216. package/dist/commands/admin/seed.js +533 -0
  217. package/dist/commands/admin/seed.js.map +1 -0
  218. package/dist/commands/admin/seed.test.d.ts +6 -0
  219. package/dist/commands/admin/seed.test.d.ts.map +1 -0
  220. package/dist/commands/admin/seed.test.js +65 -0
  221. package/dist/commands/admin/seed.test.js.map +1 -0
  222. package/dist/commands/audit.d.ts +25 -0
  223. package/dist/commands/audit.d.ts.map +1 -0
  224. package/dist/commands/audit.js +188 -0
  225. package/dist/commands/audit.js.map +1 -0
  226. package/dist/commands/authority-domains.d.ts +140 -0
  227. package/dist/commands/authority-domains.d.ts.map +1 -0
  228. package/dist/commands/authority-domains.js +268 -0
  229. package/dist/commands/authority-domains.js.map +1 -0
  230. package/dist/commands/brand-pack.d.ts +2 -0
  231. package/dist/commands/brand-pack.d.ts.map +1 -0
  232. package/dist/commands/brand-pack.js +25 -0
  233. package/dist/commands/brand-pack.js.map +1 -0
  234. package/dist/commands/brief.d.ts +28 -0
  235. package/dist/commands/brief.d.ts.map +1 -0
  236. package/dist/commands/brief.js +75 -0
  237. package/dist/commands/brief.js.map +1 -0
  238. package/dist/commands/capture.d.ts +30 -0
  239. package/dist/commands/capture.d.ts.map +1 -0
  240. package/dist/commands/capture.js +339 -0
  241. package/dist/commands/capture.js.map +1 -0
  242. package/dist/commands/chain-walk.d.ts +14 -0
  243. package/dist/commands/chain-walk.d.ts.map +1 -0
  244. package/dist/commands/chain-walk.js +38 -0
  245. package/dist/commands/chain-walk.js.map +1 -0
  246. package/dist/commands/changes.d.ts +11 -0
  247. package/dist/commands/changes.d.ts.map +1 -0
  248. package/dist/commands/changes.js +46 -0
  249. package/dist/commands/changes.js.map +1 -0
  250. package/dist/commands/codex-prep.d.ts +12 -0
  251. package/dist/commands/codex-prep.d.ts.map +1 -0
  252. package/dist/commands/codex-prep.js +122 -0
  253. package/dist/commands/codex-prep.js.map +1 -0
  254. package/dist/commands/collections.d.ts +22 -0
  255. package/dist/commands/collections.d.ts.map +1 -0
  256. package/dist/commands/collections.js +77 -0
  257. package/dist/commands/collections.js.map +1 -0
  258. package/dist/commands/connect-integration.test.d.ts +7 -0
  259. package/dist/commands/connect-integration.test.d.ts.map +1 -0
  260. package/dist/commands/connect-integration.test.js +211 -0
  261. package/dist/commands/connect-integration.test.js.map +1 -0
  262. package/dist/commands/connect-screens.d.ts +21 -0
  263. package/dist/commands/connect-screens.d.ts.map +1 -0
  264. package/dist/commands/connect-screens.js +79 -0
  265. package/dist/commands/connect-screens.js.map +1 -0
  266. package/dist/commands/connect.d.ts +23 -0
  267. package/dist/commands/connect.d.ts.map +1 -0
  268. package/dist/commands/connect.js +289 -0
  269. package/dist/commands/connect.js.map +1 -0
  270. package/dist/commands/connect.test.d.ts +6 -0
  271. package/dist/commands/connect.test.d.ts.map +1 -0
  272. package/dist/commands/connect.test.js +297 -0
  273. package/dist/commands/connect.test.js.map +1 -0
  274. package/dist/commands/constellation.d.ts +11 -0
  275. package/dist/commands/constellation.d.ts.map +1 -0
  276. package/dist/commands/constellation.js +33 -0
  277. package/dist/commands/constellation.js.map +1 -0
  278. package/dist/commands/context.d.ts +2 -1
  279. package/dist/commands/context.d.ts.map +1 -1
  280. package/dist/commands/context.js +25 -10
  281. package/dist/commands/context.js.map +1 -1
  282. package/dist/commands/cross-cut.d.ts +11 -0
  283. package/dist/commands/cross-cut.d.ts.map +1 -0
  284. package/dist/commands/cross-cut.js +23 -0
  285. package/dist/commands/cross-cut.js.map +1 -0
  286. package/dist/commands/doctor.d.ts +18 -0
  287. package/dist/commands/doctor.d.ts.map +1 -0
  288. package/dist/commands/doctor.js +232 -0
  289. package/dist/commands/doctor.js.map +1 -0
  290. package/dist/commands/doctor.test.d.ts +8 -0
  291. package/dist/commands/doctor.test.d.ts.map +1 -0
  292. package/dist/commands/doctor.test.js +311 -0
  293. package/dist/commands/doctor.test.js.map +1 -0
  294. package/dist/commands/fields.d.ts +9 -0
  295. package/dist/commands/fields.d.ts.map +1 -0
  296. package/dist/commands/fields.js +30 -0
  297. package/dist/commands/fields.js.map +1 -0
  298. package/dist/commands/get.d.ts +8 -1
  299. package/dist/commands/get.d.ts.map +1 -1
  300. package/dist/commands/get.js +65 -8
  301. package/dist/commands/get.js.map +1 -1
  302. package/dist/commands/handshake.d.ts +30 -0
  303. package/dist/commands/handshake.d.ts.map +1 -0
  304. package/dist/commands/handshake.js +929 -0
  305. package/dist/commands/handshake.js.map +1 -0
  306. package/dist/commands/ingest.d.ts +14 -0
  307. package/dist/commands/ingest.d.ts.map +1 -0
  308. package/dist/commands/ingest.js +189 -0
  309. package/dist/commands/ingest.js.map +1 -0
  310. package/dist/commands/init.d.ts +14 -0
  311. package/dist/commands/init.d.ts.map +1 -0
  312. package/dist/commands/init.js +109 -0
  313. package/dist/commands/init.js.map +1 -0
  314. package/dist/commands/login.d.ts +9 -0
  315. package/dist/commands/login.d.ts.map +1 -0
  316. package/dist/commands/login.js +116 -0
  317. package/dist/commands/login.js.map +1 -0
  318. package/dist/commands/method.d.ts +99 -0
  319. package/dist/commands/method.d.ts.map +1 -0
  320. package/dist/commands/method.js +781 -0
  321. package/dist/commands/method.js.map +1 -0
  322. package/dist/commands/migrate-setup.d.ts +18 -0
  323. package/dist/commands/migrate-setup.d.ts.map +1 -0
  324. package/dist/commands/migrate-setup.js +198 -0
  325. package/dist/commands/migrate-setup.js.map +1 -0
  326. package/dist/commands/orient.d.ts +109 -1
  327. package/dist/commands/orient.d.ts.map +1 -1
  328. package/dist/commands/orient.js +94 -7
  329. package/dist/commands/orient.js.map +1 -1
  330. package/dist/commands/profile.d.ts +47 -0
  331. package/dist/commands/profile.d.ts.map +1 -0
  332. package/dist/commands/profile.js +148 -0
  333. package/dist/commands/profile.js.map +1 -0
  334. package/dist/commands/promote.d.ts +12 -0
  335. package/dist/commands/promote.d.ts.map +1 -0
  336. package/dist/commands/promote.js +113 -0
  337. package/dist/commands/promote.js.map +1 -0
  338. package/dist/commands/proposals.d.ts +9 -0
  339. package/dist/commands/proposals.d.ts.map +1 -0
  340. package/dist/commands/proposals.js +24 -0
  341. package/dist/commands/proposals.js.map +1 -0
  342. package/dist/commands/reject.d.ts +14 -0
  343. package/dist/commands/reject.d.ts.map +1 -0
  344. package/dist/commands/reject.js +43 -0
  345. package/dist/commands/reject.js.map +1 -0
  346. package/dist/commands/relate.d.ts +16 -0
  347. package/dist/commands/relate.d.ts.map +1 -0
  348. package/dist/commands/relate.js +111 -0
  349. package/dist/commands/relate.js.map +1 -0
  350. package/dist/commands/search.d.ts +1 -0
  351. package/dist/commands/search.d.ts.map +1 -1
  352. package/dist/commands/search.js +10 -4
  353. package/dist/commands/search.js.map +1 -1
  354. package/dist/commands/session.d.ts +20 -0
  355. package/dist/commands/session.d.ts.map +1 -0
  356. package/dist/commands/session.js +203 -0
  357. package/dist/commands/session.js.map +1 -0
  358. package/dist/commands/setup-ingest.d.ts +17 -0
  359. package/dist/commands/setup-ingest.d.ts.map +1 -0
  360. package/dist/commands/setup-ingest.js +224 -0
  361. package/dist/commands/setup-ingest.js.map +1 -0
  362. package/dist/commands/setup-resolver.d.ts +58 -0
  363. package/dist/commands/setup-resolver.d.ts.map +1 -0
  364. package/dist/commands/setup-resolver.js +150 -0
  365. package/dist/commands/setup-resolver.js.map +1 -0
  366. package/dist/commands/setup.d.ts +15 -0
  367. package/dist/commands/setup.d.ts.map +1 -0
  368. package/dist/commands/setup.js +148 -0
  369. package/dist/commands/setup.js.map +1 -0
  370. package/dist/commands/update.d.ts +17 -0
  371. package/dist/commands/update.d.ts.map +1 -0
  372. package/dist/commands/update.js +178 -0
  373. package/dist/commands/update.js.map +1 -0
  374. package/dist/commands/usage.d.ts +40 -0
  375. package/dist/commands/usage.d.ts.map +1 -0
  376. package/dist/commands/usage.js +232 -0
  377. package/dist/commands/usage.js.map +1 -0
  378. package/dist/commands/verify.d.ts +13 -0
  379. package/dist/commands/verify.d.ts.map +1 -0
  380. package/dist/commands/verify.js +49 -0
  381. package/dist/commands/verify.js.map +1 -0
  382. package/dist/commands/welcome.d.ts +21 -0
  383. package/dist/commands/welcome.d.ts.map +1 -0
  384. package/dist/commands/welcome.js +50 -0
  385. package/dist/commands/welcome.js.map +1 -0
  386. package/dist/commands/workspace.d.ts +92 -0
  387. package/dist/commands/workspace.d.ts.map +1 -0
  388. package/dist/commands/workspace.js +263 -0
  389. package/dist/commands/workspace.js.map +1 -0
  390. package/dist/formatters/audit.d.ts +46 -0
  391. package/dist/formatters/audit.d.ts.map +1 -0
  392. package/dist/formatters/audit.js +81 -0
  393. package/dist/formatters/audit.js.map +1 -0
  394. package/dist/formatters/brief.d.ts +112 -0
  395. package/dist/formatters/brief.d.ts.map +1 -0
  396. package/dist/formatters/brief.js +179 -0
  397. package/dist/formatters/brief.js.map +1 -0
  398. package/dist/formatters/capture.d.ts +48 -0
  399. package/dist/formatters/capture.d.ts.map +1 -0
  400. package/dist/formatters/capture.js +77 -0
  401. package/dist/formatters/capture.js.map +1 -0
  402. package/dist/formatters/chain-walk.d.ts +33 -0
  403. package/dist/formatters/chain-walk.d.ts.map +1 -0
  404. package/dist/formatters/chain-walk.js +54 -0
  405. package/dist/formatters/chain-walk.js.map +1 -0
  406. package/dist/formatters/changes.d.ts +25 -0
  407. package/dist/formatters/changes.d.ts.map +1 -0
  408. package/dist/formatters/changes.js +60 -0
  409. package/dist/formatters/changes.js.map +1 -0
  410. package/dist/formatters/collections.d.ts +40 -0
  411. package/dist/formatters/collections.d.ts.map +1 -0
  412. package/dist/formatters/collections.js +93 -0
  413. package/dist/formatters/collections.js.map +1 -0
  414. package/dist/formatters/constellation.d.ts +34 -0
  415. package/dist/formatters/constellation.d.ts.map +1 -0
  416. package/dist/formatters/constellation.js +38 -0
  417. package/dist/formatters/constellation.js.map +1 -0
  418. package/dist/formatters/cross-cut.d.ts +21 -0
  419. package/dist/formatters/cross-cut.d.ts.map +1 -0
  420. package/dist/formatters/cross-cut.js +32 -0
  421. package/dist/formatters/cross-cut.js.map +1 -0
  422. package/dist/formatters/entry.d.ts +11 -4
  423. package/dist/formatters/entry.d.ts.map +1 -1
  424. package/dist/formatters/entry.js +24 -8
  425. package/dist/formatters/entry.js.map +1 -1
  426. package/dist/formatters/fields.d.ts +32 -0
  427. package/dist/formatters/fields.d.ts.map +1 -0
  428. package/dist/formatters/fields.js +49 -0
  429. package/dist/formatters/fields.js.map +1 -0
  430. package/dist/formatters/handshake.d.ts +46 -0
  431. package/dist/formatters/handshake.d.ts.map +1 -0
  432. package/dist/formatters/handshake.js +163 -0
  433. package/dist/formatters/handshake.js.map +1 -0
  434. package/dist/formatters/orient.d.ts +129 -1
  435. package/dist/formatters/orient.d.ts.map +1 -1
  436. package/dist/formatters/orient.js +156 -17
  437. package/dist/formatters/orient.js.map +1 -1
  438. package/dist/formatters/promote.d.ts +30 -0
  439. package/dist/formatters/promote.d.ts.map +1 -0
  440. package/dist/formatters/promote.js +39 -0
  441. package/dist/formatters/promote.js.map +1 -0
  442. package/dist/formatters/proposals.d.ts +45 -0
  443. package/dist/formatters/proposals.d.ts.map +1 -0
  444. package/dist/formatters/proposals.js +62 -0
  445. package/dist/formatters/proposals.js.map +1 -0
  446. package/dist/formatters/relate.d.ts +14 -0
  447. package/dist/formatters/relate.d.ts.map +1 -0
  448. package/dist/formatters/relate.js +16 -0
  449. package/dist/formatters/relate.js.map +1 -0
  450. package/dist/formatters/search.d.ts +0 -4
  451. package/dist/formatters/search.d.ts.map +1 -1
  452. package/dist/formatters/search.js +4 -1
  453. package/dist/formatters/search.js.map +1 -1
  454. package/dist/formatters/session.d.ts +11 -0
  455. package/dist/formatters/session.d.ts.map +1 -0
  456. package/dist/formatters/session.js +53 -0
  457. package/dist/formatters/session.js.map +1 -0
  458. package/dist/formatters/update.d.ts +17 -0
  459. package/dist/formatters/update.d.ts.map +1 -0
  460. package/dist/formatters/update.js +45 -0
  461. package/dist/formatters/update.js.map +1 -0
  462. package/dist/formatters/verify.d.ts +11 -0
  463. package/dist/formatters/verify.d.ts.map +1 -0
  464. package/dist/formatters/verify.js +11 -0
  465. package/dist/formatters/verify.js.map +1 -0
  466. package/dist/generators/adapters.d.ts +44 -0
  467. package/dist/generators/adapters.d.ts.map +1 -0
  468. package/dist/generators/adapters.js +290 -0
  469. package/dist/generators/adapters.js.map +1 -0
  470. package/dist/generators/adapters.test.d.ts +2 -0
  471. package/dist/generators/adapters.test.d.ts.map +1 -0
  472. package/dist/generators/adapters.test.js +27 -0
  473. package/dist/generators/adapters.test.js.map +1 -0
  474. package/dist/generators/archetypes.d.ts +52 -0
  475. package/dist/generators/archetypes.d.ts.map +1 -0
  476. package/dist/generators/archetypes.js +153 -0
  477. package/dist/generators/archetypes.js.map +1 -0
  478. package/dist/generators/archetypes.test.d.ts +2 -0
  479. package/dist/generators/archetypes.test.d.ts.map +1 -0
  480. package/dist/generators/archetypes.test.js +237 -0
  481. package/dist/generators/archetypes.test.js.map +1 -0
  482. package/dist/generators/boundary-manifest.d.ts +29 -0
  483. package/dist/generators/boundary-manifest.d.ts.map +1 -0
  484. package/dist/generators/boundary-manifest.js +183 -0
  485. package/dist/generators/boundary-manifest.js.map +1 -0
  486. package/dist/generators/boundary-manifest.test.d.ts +2 -0
  487. package/dist/generators/boundary-manifest.test.d.ts.map +1 -0
  488. package/dist/generators/boundary-manifest.test.js +91 -0
  489. package/dist/generators/boundary-manifest.test.js.map +1 -0
  490. package/dist/generators/briefing-md.d.ts +8 -0
  491. package/dist/generators/briefing-md.d.ts.map +1 -0
  492. package/dist/generators/briefing-md.js +51 -0
  493. package/dist/generators/briefing-md.js.map +1 -0
  494. package/dist/generators/chain-classifier.d.ts +49 -0
  495. package/dist/generators/chain-classifier.d.ts.map +1 -0
  496. package/dist/generators/chain-classifier.js +180 -0
  497. package/dist/generators/chain-classifier.js.map +1 -0
  498. package/dist/generators/chain-classifier.test.d.ts +2 -0
  499. package/dist/generators/chain-classifier.test.d.ts.map +1 -0
  500. package/dist/generators/chain-classifier.test.js +257 -0
  501. package/dist/generators/chain-classifier.test.js.map +1 -0
  502. package/dist/generators/chain-rules.d.ts +42 -0
  503. package/dist/generators/chain-rules.d.ts.map +1 -0
  504. package/dist/generators/chain-rules.js +144 -0
  505. package/dist/generators/chain-rules.js.map +1 -0
  506. package/dist/generators/chain-rules.test.d.ts +2 -0
  507. package/dist/generators/chain-rules.test.d.ts.map +1 -0
  508. package/dist/generators/chain-rules.test.js +179 -0
  509. package/dist/generators/chain-rules.test.js.map +1 -0
  510. package/dist/generators/context-md.d.ts +8 -0
  511. package/dist/generators/context-md.d.ts.map +1 -0
  512. package/dist/generators/context-md.js +134 -0
  513. package/dist/generators/context-md.js.map +1 -0
  514. package/dist/generators/handshake-diff.d.ts +67 -0
  515. package/dist/generators/handshake-diff.d.ts.map +1 -0
  516. package/dist/generators/handshake-diff.js +183 -0
  517. package/dist/generators/handshake-diff.js.map +1 -0
  518. package/dist/generators/handshake-diff.test.d.ts +2 -0
  519. package/dist/generators/handshake-diff.test.d.ts.map +1 -0
  520. package/dist/generators/handshake-diff.test.js +264 -0
  521. package/dist/generators/handshake-diff.test.js.map +1 -0
  522. package/dist/generators/manifest.d.ts +39 -0
  523. package/dist/generators/manifest.d.ts.map +1 -0
  524. package/dist/generators/manifest.js +166 -0
  525. package/dist/generators/manifest.js.map +1 -0
  526. package/dist/generators/portable-knowledge.d.ts +165 -0
  527. package/dist/generators/portable-knowledge.d.ts.map +1 -0
  528. package/dist/generators/portable-knowledge.js +613 -0
  529. package/dist/generators/portable-knowledge.js.map +1 -0
  530. package/dist/generators/portable-knowledge.test.d.ts +2 -0
  531. package/dist/generators/portable-knowledge.test.d.ts.map +1 -0
  532. package/dist/generators/portable-knowledge.test.js +927 -0
  533. package/dist/generators/portable-knowledge.test.js.map +1 -0
  534. package/dist/generators/surface-profiles.d.ts +49 -0
  535. package/dist/generators/surface-profiles.d.ts.map +1 -0
  536. package/dist/generators/surface-profiles.js +98 -0
  537. package/dist/generators/surface-profiles.js.map +1 -0
  538. package/dist/index.d.ts +3 -2
  539. package/dist/index.d.ts.map +1 -1
  540. package/dist/index.js +858 -32
  541. package/dist/index.js.map +1 -1
  542. package/dist/lib/activation.d.ts +28 -0
  543. package/dist/lib/activation.d.ts.map +1 -0
  544. package/dist/lib/activation.js +57 -0
  545. package/dist/lib/activation.js.map +1 -0
  546. package/dist/lib/activation.test.d.ts +6 -0
  547. package/dist/lib/activation.test.d.ts.map +1 -0
  548. package/dist/lib/activation.test.js +121 -0
  549. package/dist/lib/activation.test.js.map +1 -0
  550. package/dist/lib/canonicalRefs.d.ts +69 -0
  551. package/dist/lib/canonicalRefs.d.ts.map +1 -0
  552. package/dist/lib/canonicalRefs.js +83 -0
  553. package/dist/lib/canonicalRefs.js.map +1 -0
  554. package/dist/lib/client.d.ts +62 -1
  555. package/dist/lib/client.d.ts.map +1 -1
  556. package/dist/lib/client.js +259 -13
  557. package/dist/lib/client.js.map +1 -1
  558. package/dist/lib/collectionRegistry.d.ts +38 -0
  559. package/dist/lib/collectionRegistry.d.ts.map +1 -0
  560. package/dist/lib/collectionRegistry.js +112 -0
  561. package/dist/lib/collectionRegistry.js.map +1 -0
  562. package/dist/lib/config.d.ts +122 -2
  563. package/dist/lib/config.d.ts.map +1 -1
  564. package/dist/lib/config.js +426 -18
  565. package/dist/lib/config.js.map +1 -1
  566. package/dist/lib/connectKeyLabel.d.ts +9 -0
  567. package/dist/lib/connectKeyLabel.d.ts.map +1 -0
  568. package/dist/lib/connectKeyLabel.js +12 -0
  569. package/dist/lib/connectKeyLabel.js.map +1 -0
  570. package/dist/lib/constants.d.ts +42 -0
  571. package/dist/lib/constants.d.ts.map +1 -0
  572. package/dist/lib/constants.js +76 -0
  573. package/dist/lib/constants.js.map +1 -0
  574. package/dist/lib/conversation-engine.d.ts +45 -0
  575. package/dist/lib/conversation-engine.d.ts.map +1 -0
  576. package/dist/lib/conversation-engine.js +112 -0
  577. package/dist/lib/conversation-engine.js.map +1 -0
  578. package/dist/lib/conversation-phases.d.ts +59 -0
  579. package/dist/lib/conversation-phases.d.ts.map +1 -0
  580. package/dist/lib/conversation-phases.js +11 -0
  581. package/dist/lib/conversation-phases.js.map +1 -0
  582. package/dist/lib/conversation-signals.d.ts +30 -0
  583. package/dist/lib/conversation-signals.d.ts.map +1 -0
  584. package/dist/lib/conversation-signals.js +64 -0
  585. package/dist/lib/conversation-signals.js.map +1 -0
  586. package/dist/lib/deployment.d.ts +23 -0
  587. package/dist/lib/deployment.d.ts.map +1 -0
  588. package/dist/lib/deployment.js +78 -0
  589. package/dist/lib/deployment.js.map +1 -0
  590. package/dist/lib/deployment.test.d.ts +5 -0
  591. package/dist/lib/deployment.test.d.ts.map +1 -0
  592. package/dist/lib/deployment.test.js +54 -0
  593. package/dist/lib/deployment.test.js.map +1 -0
  594. package/dist/lib/errors.d.ts +60 -0
  595. package/dist/lib/errors.d.ts.map +1 -0
  596. package/dist/lib/errors.js +69 -0
  597. package/dist/lib/errors.js.map +1 -0
  598. package/dist/lib/experiment.d.ts +18 -0
  599. package/dist/lib/experiment.d.ts.map +1 -0
  600. package/dist/lib/experiment.js +28 -0
  601. package/dist/lib/experiment.js.map +1 -0
  602. package/dist/lib/format.d.ts +10 -0
  603. package/dist/lib/format.d.ts.map +1 -0
  604. package/dist/lib/format.js +27 -0
  605. package/dist/lib/format.js.map +1 -0
  606. package/dist/lib/glossary.d.ts +19 -0
  607. package/dist/lib/glossary.d.ts.map +1 -0
  608. package/dist/lib/glossary.js +53 -0
  609. package/dist/lib/glossary.js.map +1 -0
  610. package/dist/lib/hook-intents.d.ts +51 -0
  611. package/dist/lib/hook-intents.d.ts.map +1 -0
  612. package/dist/lib/hook-intents.js +85 -0
  613. package/dist/lib/hook-intents.js.map +1 -0
  614. package/dist/lib/inferSourceDate.d.ts +12 -0
  615. package/dist/lib/inferSourceDate.d.ts.map +1 -0
  616. package/dist/lib/inferSourceDate.js +44 -0
  617. package/dist/lib/inferSourceDate.js.map +1 -0
  618. package/dist/lib/method-registry.d.ts +32 -0
  619. package/dist/lib/method-registry.d.ts.map +1 -0
  620. package/dist/lib/method-registry.js +53 -0
  621. package/dist/lib/method-registry.js.map +1 -0
  622. package/dist/lib/onboarding-path-b.d.ts +10 -0
  623. package/dist/lib/onboarding-path-b.d.ts.map +1 -0
  624. package/dist/lib/onboarding-path-b.js +214 -0
  625. package/dist/lib/onboarding-path-b.js.map +1 -0
  626. package/dist/lib/onboarding-shared.d.ts +81 -0
  627. package/dist/lib/onboarding-shared.d.ts.map +1 -0
  628. package/dist/lib/onboarding-shared.js +190 -0
  629. package/dist/lib/onboarding-shared.js.map +1 -0
  630. package/dist/lib/onboarding-topics.d.ts +27 -0
  631. package/dist/lib/onboarding-topics.d.ts.map +1 -0
  632. package/dist/lib/onboarding-topics.js +57 -0
  633. package/dist/lib/onboarding-topics.js.map +1 -0
  634. package/dist/lib/onboarding.d.ts +17 -0
  635. package/dist/lib/onboarding.d.ts.map +1 -0
  636. package/dist/lib/onboarding.js +350 -0
  637. package/dist/lib/onboarding.js.map +1 -0
  638. package/dist/lib/profiles.d.ts +39 -0
  639. package/dist/lib/profiles.d.ts.map +1 -0
  640. package/dist/lib/profiles.js +185 -0
  641. package/dist/lib/profiles.js.map +1 -0
  642. package/dist/lib/prompts.d.ts +65 -0
  643. package/dist/lib/prompts.d.ts.map +1 -0
  644. package/dist/lib/prompts.js +132 -0
  645. package/dist/lib/prompts.js.map +1 -0
  646. package/dist/lib/repo-detect.d.ts +33 -0
  647. package/dist/lib/repo-detect.d.ts.map +1 -0
  648. package/dist/lib/repo-detect.js +83 -0
  649. package/dist/lib/repo-detect.js.map +1 -0
  650. package/dist/lib/runner.d.ts +33 -0
  651. package/dist/lib/runner.d.ts.map +1 -0
  652. package/dist/lib/runner.js +79 -0
  653. package/dist/lib/runner.js.map +1 -0
  654. package/dist/lib/session.d.ts +42 -0
  655. package/dist/lib/session.d.ts.map +1 -0
  656. package/dist/lib/session.js +109 -0
  657. package/dist/lib/session.js.map +1 -0
  658. package/dist/lib/spinner.d.ts +27 -0
  659. package/dist/lib/spinner.d.ts.map +1 -0
  660. package/dist/lib/spinner.js +76 -0
  661. package/dist/lib/spinner.js.map +1 -0
  662. package/dist/lib/spinner.test.d.ts +2 -0
  663. package/dist/lib/spinner.test.d.ts.map +1 -0
  664. package/dist/lib/spinner.test.js +39 -0
  665. package/dist/lib/spinner.test.js.map +1 -0
  666. package/dist/lib/state.d.ts +51 -0
  667. package/dist/lib/state.d.ts.map +1 -0
  668. package/dist/lib/state.js +90 -0
  669. package/dist/lib/state.js.map +1 -0
  670. package/dist/lib/strip.d.ts +12 -0
  671. package/dist/lib/strip.d.ts.map +1 -0
  672. package/dist/lib/strip.js +41 -0
  673. package/dist/lib/strip.js.map +1 -0
  674. package/dist/lib/style.d.ts +96 -0
  675. package/dist/lib/style.d.ts.map +1 -0
  676. package/dist/lib/style.js +169 -0
  677. package/dist/lib/style.js.map +1 -0
  678. package/dist/lib/style.test.d.ts +7 -0
  679. package/dist/lib/style.test.d.ts.map +1 -0
  680. package/dist/lib/style.test.js +263 -0
  681. package/dist/lib/style.test.js.map +1 -0
  682. package/dist/lib/telemetry.d.ts +15 -0
  683. package/dist/lib/telemetry.d.ts.map +1 -0
  684. package/dist/lib/telemetry.js +47 -0
  685. package/dist/lib/telemetry.js.map +1 -0
  686. package/dist/lib/tokenConstants.d.ts +17 -0
  687. package/dist/lib/tokenConstants.d.ts.map +1 -0
  688. package/dist/lib/tokenConstants.js +17 -0
  689. package/dist/lib/tokenConstants.js.map +1 -0
  690. package/dist/lib/update-check.d.ts +21 -0
  691. package/dist/lib/update-check.d.ts.map +1 -0
  692. package/dist/lib/update-check.js +145 -0
  693. package/dist/lib/update-check.js.map +1 -0
  694. package/dist/lib/wizard-surfaces.d.ts +47 -0
  695. package/dist/lib/wizard-surfaces.d.ts.map +1 -0
  696. package/dist/lib/wizard-surfaces.js +176 -0
  697. package/dist/lib/wizard-surfaces.js.map +1 -0
  698. package/dist/lib/wizard-surfaces.test.d.ts +2 -0
  699. package/dist/lib/wizard-surfaces.test.d.ts.map +1 -0
  700. package/dist/lib/wizard-surfaces.test.js +127 -0
  701. package/dist/lib/wizard-surfaces.test.js.map +1 -0
  702. package/dist/lib/wizard-trust.d.ts +31 -0
  703. package/dist/lib/wizard-trust.d.ts.map +1 -0
  704. package/dist/lib/wizard-trust.js +66 -0
  705. package/dist/lib/wizard-trust.js.map +1 -0
  706. package/dist/lib/wizard-trust.test.d.ts +2 -0
  707. package/dist/lib/wizard-trust.test.d.ts.map +1 -0
  708. package/dist/lib/wizard-trust.test.js +32 -0
  709. package/dist/lib/wizard-trust.test.js.map +1 -0
  710. package/dist/lib/workspace-probe.d.ts +19 -0
  711. package/dist/lib/workspace-probe.d.ts.map +1 -0
  712. package/dist/lib/workspace-probe.js +27 -0
  713. package/dist/lib/workspace-probe.js.map +1 -0
  714. package/dist/surfaces/registry.d.ts +20 -0
  715. package/dist/surfaces/registry.d.ts.map +1 -0
  716. package/dist/surfaces/registry.js +42 -0
  717. package/dist/surfaces/registry.js.map +1 -0
  718. package/package.json +15 -5
  719. package/templates/archetypes/boundary.md +23 -0
  720. package/templates/archetypes/constraint.md +23 -0
  721. package/templates/archetypes/convention.md +23 -0
  722. package/templates/archetypes/policy.md +23 -0
  723. package/templates/archetypes/quality-gate.md +23 -0
  724. package/templates/archetypes/workflow.md +23 -0
  725. package/templates/general/code-integrity.md +11 -0
  726. package/templates/general/getting-started.md +12 -0
  727. package/templates/method-registry.json +16 -0
  728. package/templates/node-ts/code-integrity.md +13 -0
  729. package/templates/node-ts/testing.md +12 -0
  730. package/templates/python/code-integrity.md +13 -0
  731. package/templates/python/testing.md +12 -0
@@ -1,36 +1,444 @@
1
1
  /**
2
- * CLI config — reads PRODUCTBRAIN_API_KEY + CONVEX_SITE_URL from env / .env.mcp.
3
- * Mirrors scripts/test-orient.mjs pattern.
2
+ * CLI config — reads PRODUCTBRAIN_API_KEY + CONVEX_SITE_URL from:
3
+ * 1. Environment variables (always highest priority)
4
+ * 2. Project local config: .productbrain/config.local.json (walked up from CWD, machine-local)
5
+ * 3. Project config: .productbrain/config.json (walked up from CWD, siteUrl only — committed)
6
+ * 4. Profile system (~/.config/productbrain/profiles/{name}.env)
7
+ * 5. Legacy ~/.config/productbrain/.env (auto-migrated to profiles on first use)
8
+ * 6. CWD .env.mcp / packages/mcp-server/.env.mcp / .env
9
+ *
10
+ * Config loading is lazy — loadEnv() runs on first getConfig()/getConfigOrGuide() call.
11
+ * This enables profile switching without import-time side effects (TEN-1276).
12
+ *
13
+ * When key is missing and retry is provided (TTY), runs guided flow per docs/cli-unauthenticated-user-journey.md.
14
+ *
15
+ * Split config design:
16
+ * - config.json (committed): siteUrl only — workspace gateway, safe to share with teammates.
17
+ * - config.local.json (gitignored): profile pin — machine-local, never committed.
4
18
  */
5
- import { readFileSync, existsSync } from 'fs';
19
+ import { readFileSync, existsSync, mkdirSync, writeFileSync } from 'fs';
6
20
  import { resolve } from 'path';
7
- const ENV_PATHS = ['.env.mcp', 'packages/mcp-server/.env.mcp', '.env'];
8
- function loadEnv() {
9
- for (const p of ENV_PATHS) {
21
+ import { homedir } from 'os';
22
+ import { DEFAULT_SITE_URL, isDevMode } from './constants.js';
23
+ import { API_KEY_PREFIX } from './tokenConstants.js';
24
+ import { resolveProfileConfig, resolveNamedProfileConfig } from './profiles.js';
25
+ import { CLIError, ErrorCode } from './errors.js';
26
+ import { confirm as promptConfirm, password as promptPassword } from './prompts.js';
27
+ const HOME_CONFIG_DIR = resolve(homedir(), '.config', 'productbrain');
28
+ const HOME_ENV_PATH = resolve(HOME_CONFIG_DIR, '.env');
29
+ const CWD_ENV_PATHS = ['.env.mcp', 'packages/mcp-server/.env.mcp', '.env'];
30
+ // Short error when not TTY (scripts/pipes must not hang)
31
+ const NON_TTY_MESSAGE = 'No API key. Set PRODUCTBRAIN_API_KEY or run pb login.';
32
+ /** Track whether env has been loaded to avoid redundant file reads. */
33
+ let envLoaded = false;
34
+ /**
35
+ * Walk up the directory tree (git-style) to find the nearest .productbrain/ directory.
36
+ * Stops at home directory or filesystem root.
37
+ * Returns the directory containing .productbrain/, or null if not found.
38
+ */
39
+ export function findProjectRoot(startDir) {
40
+ let dir = startDir;
41
+ const home = homedir();
42
+ while (true) {
43
+ if (existsSync(resolve(dir, '.productbrain')))
44
+ return dir;
45
+ const parent = resolve(dir, '..');
46
+ if (parent === dir || dir === home)
47
+ return null;
48
+ dir = parent;
49
+ }
50
+ }
51
+ /**
52
+ * Read .productbrain/config.json from the walked-up project root.
53
+ * Only reads siteUrl — profile and apiKey fields are ignored (legacy or misplaced).
54
+ * Returns null if file missing or project root not found.
55
+ * Warns to stderr on invalid JSON but does not throw.
56
+ */
57
+ function readProjectConfig() {
58
+ const projectRoot = findProjectRoot(process.cwd());
59
+ if (!projectRoot)
60
+ return null;
61
+ const configPath = resolve(projectRoot, '.productbrain', 'config.json');
62
+ if (!existsSync(configPath))
63
+ return null;
64
+ try {
65
+ const raw = readFileSync(configPath, 'utf8');
66
+ const parsed = JSON.parse(raw);
67
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
68
+ process.stderr.write('Warning: .productbrain/config.json is not a JSON object, skipping.\n');
69
+ return null;
70
+ }
71
+ const result = {};
72
+ if (typeof parsed.siteUrl === 'string' && parsed.siteUrl) {
73
+ result.siteUrl = parsed.siteUrl;
74
+ }
75
+ // Silently ignore `profile` and `apiKey` in config.json — those must be in config.local.json
76
+ return result;
77
+ }
78
+ catch {
79
+ process.stderr.write('Warning: .productbrain/config.json contains invalid JSON, skipping.\n');
80
+ return null;
81
+ }
82
+ }
83
+ /**
84
+ * Read .productbrain/config.local.json from the walked-up project root.
85
+ * Only reads profile — machine-local state never committed.
86
+ * Returns null if file missing or project root not found.
87
+ * Warns to stderr on invalid JSON but does not throw.
88
+ */
89
+ export function readLocalProjectConfig() {
90
+ const projectRoot = findProjectRoot(process.cwd());
91
+ if (!projectRoot)
92
+ return null;
93
+ const configPath = resolve(projectRoot, '.productbrain', 'config.local.json');
94
+ if (!existsSync(configPath))
95
+ return null;
96
+ try {
97
+ const raw = readFileSync(configPath, 'utf8');
98
+ const parsed = JSON.parse(raw);
99
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
100
+ process.stderr.write('Warning: .productbrain/config.local.json is not a JSON object, skipping.\n');
101
+ return null;
102
+ }
103
+ const result = {};
104
+ if (typeof parsed.profile === 'string' && parsed.profile) {
105
+ result.profile = parsed.profile;
106
+ }
107
+ return result;
108
+ }
109
+ catch {
110
+ process.stderr.write('Warning: .productbrain/config.local.json contains invalid JSON, skipping.\n');
111
+ return null;
112
+ }
113
+ }
114
+ /**
115
+ * Run the full config resolution cascade and return a typed result.
116
+ * Resolution order:
117
+ * 1. Environment variables (highest priority)
118
+ * 2. config.local.json profile → resolveNamedProfileConfig(profile) for apiKey + siteUrl
119
+ * 2b. config.json siteUrl (gateway override only — no apiKey, no profile)
120
+ * 3. Profile system (~/.config/productbrain/profiles/{name}.env)
121
+ * 4. Legacy home config (~/.config/productbrain/.env)
122
+ * 5. CWD .env files (.env.mcp, packages/mcp-server/.env.mcp, .env)
123
+ *
124
+ * siteUrl always has a value (falls back to DEFAULT_SITE_URL).
125
+ */
126
+ export function resolveConfig() {
127
+ // 1. Env vars — check directly, don't mutate process.env
128
+ const envKey = process.env.PRODUCTBRAIN_API_KEY;
129
+ const envSite = process.env.CONVEX_SITE_URL;
130
+ if (envKey) {
131
+ return {
132
+ apiKey: envKey,
133
+ siteUrl: (envSite || DEFAULT_SITE_URL).replace(/\/$/, ''),
134
+ source: 'env',
135
+ };
136
+ }
137
+ // 2. Local project config — profile pin (config.local.json, gitignored)
138
+ const localConfig = readLocalProjectConfig();
139
+ if (localConfig?.profile) {
140
+ const namedConfig = resolveNamedProfileConfig(localConfig.profile);
141
+ if (namedConfig?.apiKey) {
142
+ // siteUrl: local.profile.siteUrl || config.json.siteUrl || env || default
143
+ const projectConfig = readProjectConfig();
144
+ return {
145
+ apiKey: namedConfig.apiKey,
146
+ siteUrl: (namedConfig.siteUrl || projectConfig?.siteUrl || envSite || DEFAULT_SITE_URL).replace(/\/$/, ''),
147
+ source: 'project',
148
+ };
149
+ }
150
+ }
151
+ // 2b. config.json — siteUrl gateway override only (no apiKey, no profile)
152
+ // Falls through; siteUrl from config.json is used as a tiebreaker below in step 3.
153
+ // 3. Profile system
154
+ const projectConfig = readProjectConfig();
155
+ const profileConfig = resolveProfileConfig();
156
+ if (profileConfig?.apiKey) {
157
+ return {
158
+ apiKey: profileConfig.apiKey,
159
+ siteUrl: (projectConfig?.siteUrl || profileConfig.siteUrl || envSite || DEFAULT_SITE_URL).replace(/\/$/, ''),
160
+ source: 'profile',
161
+ };
162
+ }
163
+ // 4. Legacy home config
164
+ if (existsSync(HOME_ENV_PATH)) {
165
+ const vars = parseEnvVars(readFileSync(HOME_ENV_PATH, 'utf8'));
166
+ if (vars['PRODUCTBRAIN_API_KEY']) {
167
+ return {
168
+ apiKey: vars['PRODUCTBRAIN_API_KEY'],
169
+ siteUrl: (projectConfig?.siteUrl || vars['CONVEX_SITE_URL'] || envSite || DEFAULT_SITE_URL).replace(/\/$/, ''),
170
+ source: 'profile',
171
+ };
172
+ }
173
+ }
174
+ // 5. CWD .env files
175
+ for (const p of CWD_ENV_PATHS) {
10
176
  const full = resolve(process.cwd(), p);
11
177
  if (existsSync(full)) {
12
- const content = readFileSync(full, 'utf8');
13
- for (const line of content.split('\n')) {
14
- const m = line.match(/^([^#=]+)=(.*)$/);
15
- if (m && !process.env[m[1].trim()]) {
16
- process.env[m[1].trim()] = m[2].trim().replace(/^["']|["']$/g, '');
17
- }
178
+ const vars = parseEnvVars(readFileSync(full, 'utf8'));
179
+ if (vars['PRODUCTBRAIN_API_KEY']) {
180
+ return {
181
+ apiKey: vars['PRODUCTBRAIN_API_KEY'],
182
+ siteUrl: (projectConfig?.siteUrl || vars['CONVEX_SITE_URL'] || envSite || DEFAULT_SITE_URL).replace(/\/$/, ''),
183
+ source: 'cwd',
184
+ };
185
+ }
186
+ break;
187
+ }
188
+ }
189
+ // 6. No API key found anywhere — return with siteUrl default
190
+ return {
191
+ apiKey: undefined,
192
+ siteUrl: (projectConfig?.siteUrl || envSite || DEFAULT_SITE_URL).replace(/\/$/, ''),
193
+ source: 'default',
194
+ };
195
+ }
196
+ /** Parse env file content and return key-value pairs (without mutating process.env). */
197
+ function parseEnvVars(content) {
198
+ const vars = {};
199
+ for (const line of content.split('\n')) {
200
+ const m = line.match(/^([^#=]+)=(.*)$/);
201
+ if (m) {
202
+ vars[m[1].trim()] = m[2].trim().replace(/^["']|["']$/g, '');
203
+ }
204
+ }
205
+ return vars;
206
+ }
207
+ function parseEnvContent(content) {
208
+ for (const line of content.split('\n')) {
209
+ const m = line.match(/^([^#=]+)=(.*)$/);
210
+ if (m && !process.env[m[1].trim()]) {
211
+ process.env[m[1].trim()] = m[2].trim().replace(/^["']|["']$/g, '');
212
+ }
213
+ }
214
+ }
215
+ function loadEnv() {
216
+ if (envLoaded)
217
+ return;
218
+ envLoaded = true;
219
+ // 1. Try local project config first (profile pin, config.local.json)
220
+ const localConfig = readLocalProjectConfig();
221
+ if (localConfig?.profile && !process.env.PRODUCTBRAIN_API_KEY) {
222
+ const namedConfig = resolveNamedProfileConfig(localConfig.profile);
223
+ if (namedConfig?.apiKey) {
224
+ process.env.PRODUCTBRAIN_API_KEY = namedConfig.apiKey;
225
+ if (!process.env.CONVEX_SITE_URL && namedConfig.siteUrl) {
226
+ process.env.CONVEX_SITE_URL = namedConfig.siteUrl;
18
227
  }
228
+ }
229
+ }
230
+ // 1b. Apply siteUrl from config.json (gateway override — no apiKey reading here)
231
+ const projectConfig = readProjectConfig();
232
+ if (projectConfig?.siteUrl && !process.env.CONVEX_SITE_URL) {
233
+ process.env.CONVEX_SITE_URL = projectConfig.siteUrl;
234
+ }
235
+ // 2. Try profile system (handles auto-migration from legacy .env)
236
+ const profileConfig = resolveProfileConfig();
237
+ if (profileConfig) {
238
+ // Only set if not already set by env vars or project config
239
+ if (!process.env.PRODUCTBRAIN_API_KEY) {
240
+ process.env.PRODUCTBRAIN_API_KEY = profileConfig.apiKey;
241
+ }
242
+ if (!process.env.CONVEX_SITE_URL && profileConfig.siteUrl) {
243
+ process.env.CONVEX_SITE_URL = profileConfig.siteUrl;
244
+ }
245
+ }
246
+ // 3. Legacy home config (in case profiles didn't find it)
247
+ if (existsSync(HOME_ENV_PATH)) {
248
+ parseEnvContent(readFileSync(HOME_ENV_PATH, 'utf8'));
249
+ }
250
+ // 4. CWD env files
251
+ for (const p of CWD_ENV_PATHS) {
252
+ const full = resolve(process.cwd(), p);
253
+ if (existsSync(full)) {
254
+ parseEnvContent(readFileSync(full, 'utf8'));
19
255
  break;
20
256
  }
21
257
  }
22
258
  }
23
- loadEnv();
24
- const DEFAULT_SITE_URL = 'https://trustworthy-kangaroo-277.convex.site';
259
+ /** Reset env loaded state — used for profile switching. */
260
+ export function resetConfigCache() {
261
+ envLoaded = false;
262
+ }
263
+ /**
264
+ * Guided flow when key is missing (TTY only). Per docs/cli-unauthenticated-user-journey.md.
265
+ * Returns true if we saved and ran retry; false if user said No (caller should exit).
266
+ */
267
+ async function runGuidedFlow(retry) {
268
+ const hasKey = await promptConfirm({
269
+ message: 'Do you have an API key from Product Brain?',
270
+ initialValue: false,
271
+ });
272
+ if (!hasKey) {
273
+ console.log('Get your key: Product Brain app → Settings → API Keys. Then run: pb login');
274
+ process.exit(0);
275
+ }
276
+ let apiKey = await promptPassword({
277
+ message: `Paste your API key (${API_KEY_PREFIX}...)`,
278
+ validate: (v) => (!v ? 'Key is required' : undefined),
279
+ });
280
+ if (!apiKey.startsWith(API_KEY_PREFIX)) {
281
+ console.log(`Key must start with ${API_KEY_PREFIX}. Try again or run pb login.`);
282
+ apiKey = await promptPassword({
283
+ message: `Paste your API key (${API_KEY_PREFIX}...)`,
284
+ validate: (v) => (!v || !v.startsWith(API_KEY_PREFIX) ? `Key must start with ${API_KEY_PREFIX}` : undefined),
285
+ });
286
+ }
287
+ if (!apiKey || !apiKey.startsWith(API_KEY_PREFIX)) {
288
+ console.log('Get your key: Product Brain app → Settings → API Keys. Then run: pb login');
289
+ process.exit(0);
290
+ }
291
+ // Save as a named profile via the profile system
292
+ const { createProfile, getActiveProfile } = await import('./profiles.js');
293
+ const profileName = getActiveProfile() || 'default';
294
+ try {
295
+ createProfile(profileName, apiKey, DEFAULT_SITE_URL.replace(/\/$/, ''));
296
+ }
297
+ catch {
298
+ // Profile already exists — fall back to legacy path
299
+ const content = [
300
+ `# Product Brain CLI — saved by guided setup`,
301
+ `PRODUCTBRAIN_API_KEY=${apiKey}`,
302
+ `CONVEX_SITE_URL=${DEFAULT_SITE_URL.replace(/\/$/, '')}`,
303
+ '',
304
+ ].join('\n');
305
+ mkdirSync(HOME_CONFIG_DIR, { recursive: true });
306
+ writeFileSync(HOME_ENV_PATH, content, { mode: 0o600 });
307
+ }
308
+ process.env.PRODUCTBRAIN_API_KEY = apiKey;
309
+ process.env.CONVEX_SITE_URL = DEFAULT_SITE_URL.replace(/\/$/, '');
310
+ console.log('Saved your key. Running your command…\n');
311
+ await retry();
312
+ return true;
313
+ }
25
314
  export function getConfig() {
315
+ loadEnv();
316
+ const apiKey = process.env.PRODUCTBRAIN_API_KEY ?? '';
317
+ const siteUrl = (process.env.CONVEX_SITE_URL ?? DEFAULT_SITE_URL).replace(/\/$/, '');
318
+ if (!apiKey || !apiKey.startsWith(API_KEY_PREFIX)) {
319
+ throw new CLIError(NON_TTY_MESSAGE, {
320
+ code: ErrorCode.AUTH_MISSING,
321
+ category: 'auth',
322
+ guidance: 'Set PRODUCTBRAIN_API_KEY or run `pb login`.',
323
+ });
324
+ }
325
+ const allowHttp = isDevMode() && siteUrl.startsWith('http://localhost');
326
+ if (!siteUrl.startsWith('https://') && !allowHttp) {
327
+ throw new CLIError(`CONVEX_SITE_URL must use HTTPS (got "${siteUrl.slice(0, 30)}…"). API keys must not be sent over unencrypted connections.`, {
328
+ code: ErrorCode.CONFIG_INVALID,
329
+ category: 'config',
330
+ guidance: 'Set CONVEX_SITE_URL to an https:// URL.',
331
+ });
332
+ }
333
+ return { apiKey, siteUrl };
334
+ }
335
+ /**
336
+ * Non-throwing alternative to getConfig().
337
+ *
338
+ * Architecture: getConfig() is the primary path for commands that require auth — it
339
+ * throws CLIError when the key is missing, which is correct for API call paths.
340
+ * getConfigSafe() is for status/probe surfaces (no-args dashboard, init) that need
341
+ * to check config availability without crashing. Both paths are intentional and
342
+ * coexist by design — see WP-303 review (DW#5).
343
+ *
344
+ * Uses resolveConfig() directly (no loadEnv) to avoid env var pollution affecting source attribution.
345
+ */
346
+ export function getConfigSafe() {
347
+ const resolved = resolveConfig();
348
+ if (!resolved.apiKey || !resolved.apiKey.startsWith(API_KEY_PREFIX)) {
349
+ return { ok: false, reason: 'No API key. Run pb login or set PRODUCTBRAIN_API_KEY.' };
350
+ }
351
+ const siteUrl = resolved.siteUrl;
352
+ const allowHttp = isDevMode() && siteUrl.startsWith('http://localhost');
353
+ if (!siteUrl.startsWith('https://') && !allowHttp) {
354
+ return {
355
+ ok: false,
356
+ reason: `CONVEX_SITE_URL must use HTTPS (got "${siteUrl.slice(0, 30)}…"). API keys must not be sent over unencrypted connections.`,
357
+ };
358
+ }
359
+ return { ok: true, apiKey: resolved.apiKey, siteUrl, source: resolved.source };
360
+ }
361
+ /**
362
+ * Get config; if key is missing and stdin is a TTY, run guided flow (y/n → paste key → save → retry).
363
+ * @param retry Called after saving key so the original command runs in-process.
364
+ * @returns Config, or null if we ran retry (caller should return without running again).
365
+ */
366
+ export async function getConfigOrGuide(retry) {
367
+ loadEnv();
26
368
  const apiKey = process.env.PRODUCTBRAIN_API_KEY ?? '';
27
369
  const siteUrl = (process.env.CONVEX_SITE_URL ?? DEFAULT_SITE_URL).replace(/\/$/, '');
28
- if (!apiKey || !apiKey.startsWith('pb_sk_')) {
29
- throw new Error('Missing PRODUCTBRAIN_API_KEY (pb_sk_*) set it or add to .env.mcp');
370
+ const allowHttp = isDevMode() && siteUrl.startsWith('http://localhost');
371
+ if (apiKey.startsWith(API_KEY_PREFIX) && (siteUrl.startsWith('https://') || allowHttp)) {
372
+ return { apiKey, siteUrl };
373
+ }
374
+ if (!process.stdin.isTTY) {
375
+ throw new CLIError(NON_TTY_MESSAGE, {
376
+ code: ErrorCode.AUTH_MISSING,
377
+ category: 'auth',
378
+ guidance: 'Set PRODUCTBRAIN_API_KEY or run `pb login`.',
379
+ });
380
+ }
381
+ const didRetry = await runGuidedFlow(retry);
382
+ return didRetry ? null : null;
383
+ }
384
+ /**
385
+ * Resolve config for admin operations — profile-only resolution.
386
+ *
387
+ * Admin commands (pb admin ...) must NOT read .productbrain/config.json or CWD env files.
388
+ * The project config intentionally pins the repo to a dev Convex site; admin operations
389
+ * target PROD workspaces via the operator's active profile. Reading project config here
390
+ * would silently route admin calls to the wrong gateway (TEN-1334).
391
+ *
392
+ * Resolution order:
393
+ * 1. Shell env vars (PRODUCTBRAIN_API_KEY / CONVEX_SITE_URL) — always win
394
+ * 2. Active named profile (~/.config/productbrain/profiles/{name}.env)
395
+ * 3. Legacy home config (~/.config/productbrain/.env)
396
+ * 4. DEFAULT_SITE_URL as fallback for siteUrl
397
+ *
398
+ * Throws CLIError with AUTH_MISSING if no API key is found.
399
+ */
400
+ export function resolveAdminConfig() {
401
+ let apiKey;
402
+ let rawSiteUrl;
403
+ // 1. Shell env vars — always highest priority
404
+ const envKey = process.env.PRODUCTBRAIN_API_KEY;
405
+ if (envKey?.startsWith(API_KEY_PREFIX)) {
406
+ apiKey = envKey;
407
+ rawSiteUrl = process.env.CONVEX_SITE_URL;
408
+ }
409
+ // 2. Active profile (no project config, no CWD files)
410
+ if (!apiKey) {
411
+ const profileConfig = resolveProfileConfig();
412
+ if (profileConfig?.apiKey?.startsWith(API_KEY_PREFIX)) {
413
+ apiKey = profileConfig.apiKey;
414
+ rawSiteUrl = profileConfig.siteUrl;
415
+ }
416
+ }
417
+ // 3. Legacy ~/.config/productbrain/.env
418
+ if (!apiKey && existsSync(HOME_ENV_PATH)) {
419
+ const vars = parseEnvVars(readFileSync(HOME_ENV_PATH, 'utf8'));
420
+ if (vars['PRODUCTBRAIN_API_KEY']?.startsWith(API_KEY_PREFIX)) {
421
+ apiKey = vars['PRODUCTBRAIN_API_KEY'];
422
+ rawSiteUrl = vars['CONVEX_SITE_URL'];
423
+ }
424
+ }
425
+ if (!apiKey) {
426
+ throw new CLIError('No API key found. Run pb login or set PRODUCTBRAIN_API_KEY.', {
427
+ code: ErrorCode.AUTH_MISSING,
428
+ category: 'auth',
429
+ guidance: 'Run `pb login` to set your API key.',
430
+ });
30
431
  }
31
- if (!siteUrl.startsWith('https://')) {
32
- throw new Error(`CONVEX_SITE_URL must use HTTPS (got "${siteUrl.slice(0, 30)}…"). API keys must not be sent over unencrypted connections.`);
432
+ const siteUrl = (rawSiteUrl || DEFAULT_SITE_URL).replace(/\/$/, '');
433
+ const allowHttp = isDevMode() && siteUrl.startsWith('http://localhost');
434
+ if (!siteUrl.startsWith('https://') && !allowHttp) {
435
+ throw new CLIError(`CONVEX_SITE_URL must use HTTPS for admin operations (got "${siteUrl.slice(0, 30)}…").`, {
436
+ code: ErrorCode.CONFIG_INVALID,
437
+ category: 'config',
438
+ guidance: 'Set CONVEX_SITE_URL to an https:// URL.',
439
+ });
33
440
  }
34
441
  return { apiKey, siteUrl };
35
442
  }
443
+ export { HOME_CONFIG_DIR, HOME_ENV_PATH, readProjectConfig };
36
444
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,MAAM,SAAS,GAAG,CAAC,UAAU,EAAE,8BAA8B,EAAE,MAAM,CAAC,CAAC;AAEvE,SAAS,OAAO;IACd,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC3C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;gBACxC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;oBACnC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;gBACrE,CAAC;YACH,CAAC;YACD,MAAM;QACR,CAAC;IACH,CAAC;AACH,CAAC;AAED,OAAO,EAAE,CAAC;AAEV,MAAM,gBAAgB,GAAG,8CAA8C,CAAC;AAExE,MAAM,UAAU,SAAS;IACvB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAC;IACtD,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAErF,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,wCAAwC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,8DAA8D,CAC3H,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,cAAc,CAAC;AAEpF,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;AACtE,MAAM,aAAa,GAAG,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;AAEvD,MAAM,aAAa,GAAG,CAAC,UAAU,EAAE,8BAA8B,EAAE,MAAM,CAAC,CAAC;AAE3E,yDAAyD;AACzD,MAAM,eAAe,GAAG,uDAAuD,CAAC;AAEhF,uEAAuE;AACvE,IAAI,SAAS,GAAG,KAAK,CAAC;AAYtB;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,IAAI,GAAG,GAAG,QAAQ,CAAC;IACnB,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;YAAE,OAAO,GAAG,CAAC;QAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,MAAM,KAAK,GAAG,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAChD,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,iBAAiB;IACxB,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACnD,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAC9B,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC;IACxE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAEzC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;YAC7F,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,MAAM,GAAkB,EAAE,CAAC;QACjC,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACzD,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAClC,CAAC;QACD,6FAA6F;QAC7F,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC;QAC9F,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACnD,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAC9B,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,eAAe,EAAE,mBAAmB,CAAC,CAAC;IAC9E,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAEzC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4EAA4E,CAAC,CAAC;YACnG,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,MAAM,GAAuB,EAAE,CAAC;QACtC,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACzD,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAClC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6EAA6E,CAAC,CAAC;QACpG,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAYD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa;IAC3B,yDAAyD;IACzD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IAChD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAC5C,IAAI,MAAM,EAAE,CAAC;QACX,OAAO;YACL,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,CAAC,OAAO,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;YACzD,MAAM,EAAE,KAAK;SACd,CAAC;IACJ,CAAC;IAED,wEAAwE;IACxE,MAAM,WAAW,GAAG,sBAAsB,EAAE,CAAC;IAC7C,IAAI,WAAW,EAAE,OAAO,EAAE,CAAC;QACzB,MAAM,WAAW,GAAG,yBAAyB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACnE,IAAI,WAAW,EAAE,MAAM,EAAE,CAAC;YACxB,0EAA0E;YAC1E,MAAM,aAAa,GAAG,iBAAiB,EAAE,CAAC;YAC1C,OAAO;gBACL,MAAM,EAAE,WAAW,CAAC,MAAM;gBAC1B,OAAO,EAAE,CAAC,WAAW,CAAC,OAAO,IAAI,aAAa,EAAE,OAAO,IAAI,OAAO,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;gBAC1G,MAAM,EAAE,SAAS;aAClB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,mFAAmF;IAEnF,oBAAoB;IACpB,MAAM,aAAa,GAAG,iBAAiB,EAAE,CAAC;IAC1C,MAAM,aAAa,GAAG,oBAAoB,EAAE,CAAC;IAC7C,IAAI,aAAa,EAAE,MAAM,EAAE,CAAC;QAC1B,OAAO;YACL,MAAM,EAAE,aAAa,CAAC,MAAM;YAC5B,OAAO,EAAE,CAAC,aAAa,EAAE,OAAO,IAAI,aAAa,CAAC,OAAO,IAAI,OAAO,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;YAC5G,MAAM,EAAE,SAAS;SAClB,CAAC;IACJ,CAAC;IAED,wBAAwB;IACxB,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,YAAY,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;QAC/D,IAAI,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC;YACjC,OAAO;gBACL,MAAM,EAAE,IAAI,CAAC,sBAAsB,CAAC;gBACpC,OAAO,EAAE,CAAC,aAAa,EAAE,OAAO,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,OAAO,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;gBAC9G,MAAM,EAAE,SAAS;aAClB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;YACtD,IAAI,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC;gBACjC,OAAO;oBACL,MAAM,EAAE,IAAI,CAAC,sBAAsB,CAAC;oBACpC,OAAO,EAAE,CAAC,aAAa,EAAE,OAAO,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,OAAO,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;oBAC9G,MAAM,EAAE,KAAK;iBACd,CAAC;YACJ,CAAC;YACD,MAAM;QACR,CAAC;IACH,CAAC;IAED,6DAA6D;IAC7D,OAAO;QACL,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,CAAC,aAAa,EAAE,OAAO,IAAI,OAAO,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QACnF,MAAM,EAAE,SAAS;KAClB,CAAC;AACJ,CAAC;AAED,wFAAwF;AACxF,SAAS,YAAY,CAAC,OAAe;IACnC,MAAM,IAAI,GAA2B,EAAE,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACxC,IAAI,CAAC,EAAE,CAAC;YACN,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,eAAe,CAAC,OAAe;IACtC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,OAAO;IACd,IAAI,SAAS;QAAE,OAAO;IACtB,SAAS,GAAG,IAAI,CAAC;IAEjB,qEAAqE;IACrE,MAAM,WAAW,GAAG,sBAAsB,EAAE,CAAC;IAC7C,IAAI,WAAW,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;QAC9D,MAAM,WAAW,GAAG,yBAAyB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACnE,IAAI,WAAW,EAAE,MAAM,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,WAAW,CAAC,MAAM,CAAC;YACtD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;gBACxD,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,WAAW,CAAC,OAAO,CAAC;YACpD,CAAC;QACH,CAAC;IACH,CAAC;IAED,iFAAiF;IACjF,MAAM,aAAa,GAAG,iBAAiB,EAAE,CAAC;IAC1C,IAAI,aAAa,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,aAAa,CAAC,OAAO,CAAC;IACtD,CAAC;IAED,kEAAkE;IAClE,MAAM,aAAa,GAAG,oBAAoB,EAAE,CAAC;IAC7C,IAAI,aAAa,EAAE,CAAC;QAClB,4DAA4D;QAC5D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,aAAa,CAAC,MAAM,CAAC;QAC1D,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,aAAa,CAAC,OAAO,CAAC;QACtD,CAAC;IACH,CAAC;IAED,0DAA0D;IAC1D,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9B,eAAe,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,mBAAmB;IACnB,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,eAAe,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;YAC5C,MAAM;QACR,CAAC;IACH,CAAC;AACH,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,gBAAgB;IAC9B,SAAS,GAAG,KAAK,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,aAAa,CAAC,KAA0B;IACrD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC;QACjC,OAAO,EAAE,4CAA4C;QACrD,YAAY,EAAE,KAAK;KACpB,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAC;QACzF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,MAAM,GAAG,MAAM,cAAc,CAAC;QAChC,OAAO,EAAE,uBAAuB,cAAc,MAAM;QACpD,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;KACtD,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,uBAAuB,cAAc,8BAA8B,CAAC,CAAC;QACjF,MAAM,GAAG,MAAM,cAAc,CAAC;YAC5B,OAAO,EAAE,uBAAuB,cAAc,MAAM;YACpD,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,uBAAuB,cAAc,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;SAC7G,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAC;QACzF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,iDAAiD;IACjD,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IAC1E,MAAM,WAAW,GAAG,gBAAgB,EAAE,IAAI,SAAS,CAAC;IACpD,IAAI,CAAC;QACH,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,oDAAoD;QACpD,MAAM,OAAO,GAAG;YACd,6CAA6C;YAC7C,wBAAwB,MAAM,EAAE;YAChC,mBAAmB,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE;YACxD,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,SAAS,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,aAAa,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,MAAM,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAElE,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACvD,MAAM,KAAK,EAAE,CAAC;IACd,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,EAAE,CAAC;IACV,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAC;IACtD,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAErF,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,QAAQ,CAAC,eAAe,EAAE;YAClC,IAAI,EAAE,SAAS,CAAC,YAAY;YAC5B,QAAQ,EAAE,MAAM;YAChB,QAAQ,EAAE,6CAA6C;SACxD,CAAC,CAAC;IACL,CAAC;IAED,MAAM,SAAS,GAAG,SAAS,EAAE,IAAI,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;IACxE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAClD,MAAM,IAAI,QAAQ,CAChB,wCAAwC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,8DAA8D,EAC1H;YACE,IAAI,EAAE,SAAS,CAAC,cAAc;YAC9B,QAAQ,EAAE,QAAQ;YAClB,QAAQ,EAAE,yCAAyC;SACpD,CACF,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC;AASD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,QAAQ,GAAG,aAAa,EAAE,CAAC;IAEjC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QACpE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,uDAAuD,EAAE,CAAC;IACxF,CAAC;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;IACjC,MAAM,SAAS,GAAG,SAAS,EAAE,IAAI,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;IACxE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAClD,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,wCAAwC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,8DAA8D;SACnI,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;AACjF,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAA0B;IAC/D,OAAO,EAAE,CAAC;IACV,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAC;IACtD,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAErF,MAAM,SAAS,GAAG,SAAS,EAAE,IAAI,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;IACxE,IAAI,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC;QACvF,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,QAAQ,CAAC,eAAe,EAAE;YAClC,IAAI,EAAE,SAAS,CAAC,YAAY;YAC5B,QAAQ,EAAE,MAAM;YAChB,QAAQ,EAAE,6CAA6C;SACxD,CAAC,CAAC;IACL,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5C,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAChC,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,kBAAkB;IAChC,IAAI,MAA0B,CAAC;IAC/B,IAAI,UAA8B,CAAC;IAEnC,8CAA8C;IAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IAChD,IAAI,MAAM,EAAE,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QACvC,MAAM,GAAG,MAAM,CAAC;QAChB,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAC3C,CAAC;IAED,sDAAsD;IACtD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,aAAa,GAAG,oBAAoB,EAAE,CAAC;QAC7C,IAAI,aAAa,EAAE,MAAM,EAAE,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YACtD,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;YAC9B,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC;QACrC,CAAC;IACH,CAAC;IAED,wCAAwC;IACxC,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,YAAY,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;QAC/D,IAAI,IAAI,CAAC,sBAAsB,CAAC,EAAE,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAC7D,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACtC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,QAAQ,CAAC,6DAA6D,EAAE;YAChF,IAAI,EAAE,SAAS,CAAC,YAAY;YAC5B,QAAQ,EAAE,MAAM;YAChB,QAAQ,EAAE,qCAAqC;SAChD,CAAC,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,UAAU,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACpE,MAAM,SAAS,GAAG,SAAS,EAAE,IAAI,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;IACxE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAClD,MAAM,IAAI,QAAQ,CAChB,6DAA6D,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EACvF;YACE,IAAI,EAAE,SAAS,CAAC,cAAc;YAC9B,QAAQ,EAAE,QAAQ;YAClB,QAAQ,EAAE,yCAAyC;SACpD,CACF,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC;AAED,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Labels for API keys from `pb connect` — keep in sync with convex/lib/connectRedeemDisplayName.ts.
3
+ * (Monorepo boundary: Convex cannot import from packages/cli and vice versa.)
4
+ */
5
+ export declare const CONNECT_REDEEM_DEFAULT_API_KEY_NAME = "Product Brain CLI";
6
+ export declare const CONNECT_REDEEM_NAME_MAX_LENGTH = 200;
7
+ /** Align client-side trimming with server `normalizeConnectRedeemDisplayName` (control strip + cap). */
8
+ export declare function trimClientKeyLabelInput(raw: string): string;
9
+ //# sourceMappingURL=connectKeyLabel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connectKeyLabel.d.ts","sourceRoot":"","sources":["../../src/lib/connectKeyLabel.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,mCAAmC,sBAAsB,CAAC;AAEvE,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAIlD,wGAAwG;AACxG,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE3D"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Labels for API keys from `pb connect` — keep in sync with convex/lib/connectRedeemDisplayName.ts.
3
+ * (Monorepo boundary: Convex cannot import from packages/cli and vice versa.)
4
+ */
5
+ export const CONNECT_REDEEM_DEFAULT_API_KEY_NAME = 'Product Brain CLI';
6
+ export const CONNECT_REDEEM_NAME_MAX_LENGTH = 200;
7
+ const CONTROL_CHARS = /[\u0000-\u001F\u007F-\u009F]/g;
8
+ /** Align client-side trimming with server `normalizeConnectRedeemDisplayName` (control strip + cap). */
9
+ export function trimClientKeyLabelInput(raw) {
10
+ return raw.replace(CONTROL_CHARS, '').trim().slice(0, CONNECT_REDEEM_NAME_MAX_LENGTH).trimEnd();
11
+ }
12
+ //# sourceMappingURL=connectKeyLabel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connectKeyLabel.js","sourceRoot":"","sources":["../../src/lib/connectKeyLabel.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,mCAAmC,GAAG,mBAAmB,CAAC;AAEvE,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAG,CAAC;AAElD,MAAM,aAAa,GAAG,+BAA+B,CAAC;AAEtD,wGAAwG;AACxG,MAAM,UAAU,uBAAuB,CAAC,GAAW;IAClD,OAAO,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,8BAA8B,CAAC,CAAC,OAAO,EAAE,CAAC;AACjG,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * CLI constants — single source of truth for URLs and environment switching.
3
+ * WP-301 Slice 0: Extract hardcoded URLs, add PB_ENV awareness.
4
+ */
5
+ /** Production Convex HTTP Actions endpoint. */
6
+ export declare const DEFAULT_SITE_URL = "https://gateway.productbrain.io";
7
+ /**
8
+ * Resolve the Convex site URL based on PB_ENV.
9
+ * - PB_ENV=dev → DEV_SITE_URL (localhost — see caveat on DEV_SITE_URL)
10
+ * - PB_ENV=production or unset → production URL
11
+ *
12
+ * NOTE: No production CLI command currently imports this function.
13
+ * For HTTP Actions (connect, etc.), use CONVEX_SITE_URL or DEFAULT_SITE_URL.
14
+ */
15
+ export declare function resolveSiteUrl(): string;
16
+ /**
17
+ * Gateway URL for `pb connect` token redemption (`POST …/auth/redeem-connect-token`).
18
+ *
19
+ * Resolution order:
20
+ * 1. `cliGateway` argument (from `pb connect --gateway <url>`)
21
+ * 2. `PB_CONNECT_GATEWAY_URL` env var
22
+ * 3. `CONVEX_SITE_URL` env var — the actual Convex HTTP Actions deployment
23
+ * 4. `DEFAULT_SITE_URL` (production gateway)
24
+ *
25
+ * Convex HTTP Actions are cloud-hosted even during local development
26
+ * (`npx convex dev` syncs to cloud, not localhost). Tokens minted by
27
+ * any web app (production or localhost) live in the cloud Convex DB,
28
+ * so redeem must target the cloud deployment — never localhost.
29
+ *
30
+ * For dev deployments: set CONVEX_SITE_URL to your *.convex.site URL
31
+ * or use --gateway.
32
+ */
33
+ export declare function resolveConnectRedeemUrl(cliGateway?: string): string;
34
+ /**
35
+ * Resolve the web app URL based on PB_ENV.
36
+ * - PB_ENV=dev → localhost:5173
37
+ * - PB_ENV=production or unset → work.productbrain.io
38
+ */
39
+ export declare function resolveAppUrl(): string;
40
+ /** Whether the CLI is running in dev mode. */
41
+ export declare function isDevMode(): boolean;
42
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,+CAA+C;AAC/C,eAAO,MAAM,gBAAgB,oCAAoC,CAAC;AAiBlE;;;;;;;GAOG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAIvC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAQnE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAItC;AAED,8CAA8C;AAC9C,wBAAgB,SAAS,IAAI,OAAO,CAEnC"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * CLI constants — single source of truth for URLs and environment switching.
3
+ * WP-301 Slice 0: Extract hardcoded URLs, add PB_ENV awareness.
4
+ */
5
+ /** Production Convex HTTP Actions endpoint. */
6
+ export const DEFAULT_SITE_URL = 'https://gateway.productbrain.io';
7
+ /** Hostname lists for banners + admin seed gates live in `deployment.ts` (PRODUCTION_HOSTS, DEV_CLOUD_HOSTS). */
8
+ /** Production web app URL. */
9
+ const PROD_APP_URL = 'https://work.productbrain.io';
10
+ /**
11
+ * Legacy: intended for a local Convex dev server, but Convex HTTP Actions
12
+ * are always cloud-hosted (`npx convex dev` syncs to *.convex.site).
13
+ * Only used by resolveSiteUrl() which has no production consumers.
14
+ */
15
+ const DEV_SITE_URL = 'http://localhost:5176';
16
+ /** Local web app URL. */
17
+ const DEV_APP_URL = 'http://localhost:5173';
18
+ /**
19
+ * Resolve the Convex site URL based on PB_ENV.
20
+ * - PB_ENV=dev → DEV_SITE_URL (localhost — see caveat on DEV_SITE_URL)
21
+ * - PB_ENV=production or unset → production URL
22
+ *
23
+ * NOTE: No production CLI command currently imports this function.
24
+ * For HTTP Actions (connect, etc.), use CONVEX_SITE_URL or DEFAULT_SITE_URL.
25
+ */
26
+ export function resolveSiteUrl() {
27
+ const env = process.env.PB_ENV?.toLowerCase();
28
+ if (env === 'dev')
29
+ return DEV_SITE_URL;
30
+ return DEFAULT_SITE_URL;
31
+ }
32
+ /**
33
+ * Gateway URL for `pb connect` token redemption (`POST …/auth/redeem-connect-token`).
34
+ *
35
+ * Resolution order:
36
+ * 1. `cliGateway` argument (from `pb connect --gateway <url>`)
37
+ * 2. `PB_CONNECT_GATEWAY_URL` env var
38
+ * 3. `CONVEX_SITE_URL` env var — the actual Convex HTTP Actions deployment
39
+ * 4. `DEFAULT_SITE_URL` (production gateway)
40
+ *
41
+ * Convex HTTP Actions are cloud-hosted even during local development
42
+ * (`npx convex dev` syncs to cloud, not localhost). Tokens minted by
43
+ * any web app (production or localhost) live in the cloud Convex DB,
44
+ * so redeem must target the cloud deployment — never localhost.
45
+ *
46
+ * For dev deployments: set CONVEX_SITE_URL to your *.convex.site URL
47
+ * or use --gateway.
48
+ */
49
+ export function resolveConnectRedeemUrl(cliGateway) {
50
+ const fromCli = cliGateway?.trim();
51
+ if (fromCli)
52
+ return fromCli.replace(/\/$/, '');
53
+ const fromEnv = process.env.PB_CONNECT_GATEWAY_URL?.trim();
54
+ if (fromEnv)
55
+ return fromEnv.replace(/\/$/, '');
56
+ const fromConvex = process.env.CONVEX_SITE_URL?.trim();
57
+ if (fromConvex)
58
+ return fromConvex.replace(/\/$/, '');
59
+ return DEFAULT_SITE_URL;
60
+ }
61
+ /**
62
+ * Resolve the web app URL based on PB_ENV.
63
+ * - PB_ENV=dev → localhost:5173
64
+ * - PB_ENV=production or unset → work.productbrain.io
65
+ */
66
+ export function resolveAppUrl() {
67
+ const env = process.env.PB_ENV?.toLowerCase();
68
+ if (env === 'dev')
69
+ return DEV_APP_URL;
70
+ return PROD_APP_URL;
71
+ }
72
+ /** Whether the CLI is running in dev mode. */
73
+ export function isDevMode() {
74
+ return process.env.PB_ENV?.toLowerCase() === 'dev';
75
+ }
76
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,+CAA+C;AAC/C,MAAM,CAAC,MAAM,gBAAgB,GAAG,iCAAiC,CAAC;AAElE,iHAAiH;AAEjH,8BAA8B;AAC9B,MAAM,YAAY,GAAG,8BAA8B,CAAC;AAEpD;;;;GAIG;AACH,MAAM,YAAY,GAAG,uBAAuB,CAAC;AAE7C,yBAAyB;AACzB,MAAM,WAAW,GAAG,uBAAuB,CAAC;AAE5C;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;IAC9C,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,YAAY,CAAC;IACvC,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,uBAAuB,CAAC,UAAmB;IACzD,MAAM,OAAO,GAAG,UAAU,EAAE,IAAI,EAAE,CAAC;IACnC,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,EAAE,CAAC;IAC3D,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC;IACvD,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACrD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;IAC9C,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,WAAW,CAAC;IACtC,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,SAAS;IACvB,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,KAAK,CAAC;AACrD,CAAC"}