@productbrain/cli 0.1.0-beta.96 → 0.1.0-beta.973

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 (410) hide show
  1. package/dist/__tests__/audit.test.js +5 -0
  2. package/dist/__tests__/audit.test.js.map +1 -1
  3. package/dist/__tests__/authority-domains.test.js +3 -0
  4. package/dist/__tests__/authority-domains.test.js.map +1 -1
  5. package/dist/__tests__/canonicalRefs.vocab.test.d.ts +2 -0
  6. package/dist/__tests__/canonicalRefs.vocab.test.d.ts.map +1 -0
  7. package/dist/__tests__/canonicalRefs.vocab.test.js +251 -0
  8. package/dist/__tests__/canonicalRefs.vocab.test.js.map +1 -0
  9. package/dist/__tests__/config.test.js +272 -2
  10. package/dist/__tests__/config.test.js.map +1 -1
  11. package/dist/__tests__/constants.test.js +6 -1
  12. package/dist/__tests__/constants.test.js.map +1 -1
  13. package/dist/__tests__/envelope-contract.test.js +29 -3
  14. package/dist/__tests__/envelope-contract.test.js.map +1 -1
  15. package/dist/__tests__/errors.test.js +1 -0
  16. package/dist/__tests__/errors.test.js.map +1 -1
  17. package/dist/__tests__/handshake-augment.test.d.ts +2 -0
  18. package/dist/__tests__/handshake-augment.test.d.ts.map +1 -0
  19. package/dist/__tests__/handshake-augment.test.js +423 -0
  20. package/dist/__tests__/handshake-augment.test.js.map +1 -0
  21. package/dist/__tests__/handshake-dormancy.test.d.ts +2 -0
  22. package/dist/__tests__/handshake-dormancy.test.d.ts.map +1 -0
  23. package/dist/__tests__/handshake-dormancy.test.js +207 -0
  24. package/dist/__tests__/handshake-dormancy.test.js.map +1 -0
  25. package/dist/__tests__/handshake-formatter.test.d.ts +2 -0
  26. package/dist/__tests__/handshake-formatter.test.d.ts.map +1 -0
  27. package/dist/__tests__/handshake-formatter.test.js +67 -0
  28. package/dist/__tests__/handshake-formatter.test.js.map +1 -0
  29. package/dist/__tests__/handshake-preview.test.js +566 -4
  30. package/dist/__tests__/handshake-preview.test.js.map +1 -1
  31. package/dist/__tests__/handshake.e2e.test.d.ts +2 -0
  32. package/dist/__tests__/handshake.e2e.test.d.ts.map +1 -0
  33. package/dist/__tests__/handshake.e2e.test.js +1252 -0
  34. package/dist/__tests__/handshake.e2e.test.js.map +1 -0
  35. package/dist/__tests__/handshake.test.js +611 -2
  36. package/dist/__tests__/handshake.test.js.map +1 -1
  37. package/dist/__tests__/manifest.test.js +118 -1
  38. package/dist/__tests__/manifest.test.js.map +1 -1
  39. package/dist/__tests__/onboarding-path-b.test.js +4 -4
  40. package/dist/__tests__/onboarding-path-b.test.js.map +1 -1
  41. package/dist/__tests__/orient.test.js +184 -7
  42. package/dist/__tests__/orient.test.js.map +1 -1
  43. package/dist/__tests__/perimeter.test.d.ts +2 -0
  44. package/dist/__tests__/perimeter.test.d.ts.map +1 -0
  45. package/dist/__tests__/perimeter.test.js +165 -0
  46. package/dist/__tests__/perimeter.test.js.map +1 -0
  47. package/dist/__tests__/personal-layer.test.d.ts +1 -2
  48. package/dist/__tests__/personal-layer.test.d.ts.map +1 -1
  49. package/dist/__tests__/personal-layer.test.js +12 -48
  50. package/dist/__tests__/personal-layer.test.js.map +1 -1
  51. package/dist/__tests__/profiles.test.js +122 -7
  52. package/dist/__tests__/profiles.test.js.map +1 -1
  53. package/dist/__tests__/promote.test.js +2 -2
  54. package/dist/__tests__/promote.test.js.map +1 -1
  55. package/dist/__tests__/session-state-machine.test.js +45 -1
  56. package/dist/__tests__/session-state-machine.test.js.map +1 -1
  57. package/dist/__tests__/session-switch.test.d.ts +2 -0
  58. package/dist/__tests__/session-switch.test.d.ts.map +1 -0
  59. package/dist/__tests__/session-switch.test.js +129 -0
  60. package/dist/__tests__/session-switch.test.js.map +1 -0
  61. package/dist/__tests__/setup-ingest.test.js +16 -0
  62. package/dist/__tests__/setup-ingest.test.js.map +1 -1
  63. package/dist/__tests__/skill-vocabulary.test.d.ts +21 -0
  64. package/dist/__tests__/skill-vocabulary.test.d.ts.map +1 -0
  65. package/dist/__tests__/skill-vocabulary.test.js +187 -0
  66. package/dist/__tests__/skill-vocabulary.test.js.map +1 -0
  67. package/dist/__tests__/update-check.test.d.ts +2 -0
  68. package/dist/__tests__/update-check.test.d.ts.map +1 -0
  69. package/dist/__tests__/update-check.test.js +56 -0
  70. package/dist/__tests__/update-check.test.js.map +1 -0
  71. package/dist/__tests__/upgrade-runner.test.d.ts +2 -0
  72. package/dist/__tests__/upgrade-runner.test.d.ts.map +1 -0
  73. package/dist/__tests__/upgrade-runner.test.js +42 -0
  74. package/dist/__tests__/upgrade-runner.test.js.map +1 -0
  75. package/dist/__tests__/vocabulary-leak.test.d.ts +39 -0
  76. package/dist/__tests__/vocabulary-leak.test.d.ts.map +1 -0
  77. package/dist/__tests__/vocabulary-leak.test.js +534 -0
  78. package/dist/__tests__/vocabulary-leak.test.js.map +1 -0
  79. package/dist/__tests__/workspace.test.js +32 -12
  80. package/dist/__tests__/workspace.test.js.map +1 -1
  81. package/dist/commands/__tests__/connect-handoff.test.d.ts +11 -0
  82. package/dist/commands/__tests__/connect-handoff.test.d.ts.map +1 -0
  83. package/dist/commands/__tests__/connect-handoff.test.js +111 -0
  84. package/dist/commands/__tests__/connect-handoff.test.js.map +1 -0
  85. package/dist/commands/__tests__/setup-detect-surfaces.test.d.ts +15 -0
  86. package/dist/commands/__tests__/setup-detect-surfaces.test.d.ts.map +1 -0
  87. package/dist/commands/__tests__/setup-detect-surfaces.test.js +149 -0
  88. package/dist/commands/__tests__/setup-detect-surfaces.test.js.map +1 -0
  89. package/dist/commands/__tests__/setup-state.test.d.ts +2 -0
  90. package/dist/commands/__tests__/setup-state.test.d.ts.map +1 -0
  91. package/dist/commands/__tests__/setup-state.test.js +194 -0
  92. package/dist/commands/__tests__/setup-state.test.js.map +1 -0
  93. package/dist/commands/admin/seed.d.ts +46 -2
  94. package/dist/commands/admin/seed.d.ts.map +1 -1
  95. package/dist/commands/admin/seed.js +475 -33
  96. package/dist/commands/admin/seed.js.map +1 -1
  97. package/dist/commands/admin/seed.test.d.ts +5 -0
  98. package/dist/commands/admin/seed.test.d.ts.map +1 -1
  99. package/dist/commands/admin/seed.test.js +67 -2
  100. package/dist/commands/admin/seed.test.js.map +1 -1
  101. package/dist/commands/admin/seedRegistryEntries.generated.d.ts +14 -0
  102. package/dist/commands/admin/seedRegistryEntries.generated.d.ts.map +1 -0
  103. package/dist/commands/admin/seedRegistryEntries.generated.js +117 -0
  104. package/dist/commands/admin/seedRegistryEntries.generated.js.map +1 -0
  105. package/dist/commands/admin/seedRegistryEntries.test.d.ts +11 -0
  106. package/dist/commands/admin/seedRegistryEntries.test.d.ts.map +1 -0
  107. package/dist/commands/admin/seedRegistryEntries.test.js +67 -0
  108. package/dist/commands/admin/seedRegistryEntries.test.js.map +1 -0
  109. package/dist/commands/audit.d.ts.map +1 -1
  110. package/dist/commands/audit.js +30 -3
  111. package/dist/commands/audit.js.map +1 -1
  112. package/dist/commands/authority-domains.d.ts +25 -1
  113. package/dist/commands/authority-domains.d.ts.map +1 -1
  114. package/dist/commands/authority-domains.js +51 -4
  115. package/dist/commands/authority-domains.js.map +1 -1
  116. package/dist/commands/capture.d.ts.map +1 -1
  117. package/dist/commands/capture.js +3 -2
  118. package/dist/commands/capture.js.map +1 -1
  119. package/dist/commands/codex-prep.d.ts +1 -0
  120. package/dist/commands/codex-prep.d.ts.map +1 -1
  121. package/dist/commands/codex-prep.js +10 -7
  122. package/dist/commands/codex-prep.js.map +1 -1
  123. package/dist/commands/connect-config.test.d.ts +2 -0
  124. package/dist/commands/connect-config.test.d.ts.map +1 -0
  125. package/dist/commands/connect-config.test.js +44 -0
  126. package/dist/commands/connect-config.test.js.map +1 -0
  127. package/dist/commands/connect-context.d.ts +45 -0
  128. package/dist/commands/connect-context.d.ts.map +1 -0
  129. package/dist/commands/connect-context.js +64 -0
  130. package/dist/commands/connect-context.js.map +1 -0
  131. package/dist/commands/connect-context.test.d.ts +2 -0
  132. package/dist/commands/connect-context.test.d.ts.map +1 -0
  133. package/dist/commands/connect-context.test.js +110 -0
  134. package/dist/commands/connect-context.test.js.map +1 -0
  135. package/dist/commands/connect-handoff.d.ts +51 -0
  136. package/dist/commands/connect-handoff.d.ts.map +1 -0
  137. package/dist/commands/connect-handoff.js +70 -0
  138. package/dist/commands/connect-handoff.js.map +1 -0
  139. package/dist/commands/connect-integration.test.js +29 -12
  140. package/dist/commands/connect-integration.test.js.map +1 -1
  141. package/dist/commands/connect-screens.d.ts +6 -4
  142. package/dist/commands/connect-screens.d.ts.map +1 -1
  143. package/dist/commands/connect-screens.js +30 -19
  144. package/dist/commands/connect-screens.js.map +1 -1
  145. package/dist/commands/connect.d.ts +21 -6
  146. package/dist/commands/connect.d.ts.map +1 -1
  147. package/dist/commands/connect.js +65 -58
  148. package/dist/commands/connect.js.map +1 -1
  149. package/dist/commands/connect.test.js +17 -1
  150. package/dist/commands/connect.test.js.map +1 -1
  151. package/dist/commands/doctor.d.ts.map +1 -1
  152. package/dist/commands/doctor.js +68 -3
  153. package/dist/commands/doctor.js.map +1 -1
  154. package/dist/commands/doctor.test.js +131 -0
  155. package/dist/commands/doctor.test.js.map +1 -1
  156. package/dist/commands/handshake.d.ts +194 -2
  157. package/dist/commands/handshake.d.ts.map +1 -1
  158. package/dist/commands/handshake.js +1537 -46
  159. package/dist/commands/handshake.js.map +1 -1
  160. package/dist/commands/method.d.ts.map +1 -1
  161. package/dist/commands/method.js +3 -0
  162. package/dist/commands/method.js.map +1 -1
  163. package/dist/commands/orient.d.ts +63 -2
  164. package/dist/commands/orient.d.ts.map +1 -1
  165. package/dist/commands/orient.js +106 -4
  166. package/dist/commands/orient.js.map +1 -1
  167. package/dist/commands/profile.d.ts +1 -14
  168. package/dist/commands/profile.d.ts.map +1 -1
  169. package/dist/commands/profile.js +89 -72
  170. package/dist/commands/profile.js.map +1 -1
  171. package/dist/commands/promote.js +1 -1
  172. package/dist/commands/promote.js.map +1 -1
  173. package/dist/commands/relate.d.ts.map +1 -1
  174. package/dist/commands/relate.js +13 -0
  175. package/dist/commands/relate.js.map +1 -1
  176. package/dist/commands/session.d.ts.map +1 -1
  177. package/dist/commands/session.js +51 -14
  178. package/dist/commands/session.js.map +1 -1
  179. package/dist/commands/setup-audit.d.ts +59 -0
  180. package/dist/commands/setup-audit.d.ts.map +1 -0
  181. package/dist/commands/setup-audit.js +250 -0
  182. package/dist/commands/setup-audit.js.map +1 -0
  183. package/dist/commands/setup-detect-surfaces.d.ts +38 -0
  184. package/dist/commands/setup-detect-surfaces.d.ts.map +1 -0
  185. package/dist/commands/setup-detect-surfaces.js +76 -0
  186. package/dist/commands/setup-detect-surfaces.js.map +1 -0
  187. package/dist/commands/setup-ingest.d.ts.map +1 -1
  188. package/dist/commands/setup-ingest.js +4 -2
  189. package/dist/commands/setup-ingest.js.map +1 -1
  190. package/dist/commands/setup-state.d.ts +42 -0
  191. package/dist/commands/setup-state.d.ts.map +1 -0
  192. package/dist/commands/setup-state.js +93 -0
  193. package/dist/commands/setup-state.js.map +1 -0
  194. package/dist/commands/setup.d.ts +17 -9
  195. package/dist/commands/setup.d.ts.map +1 -1
  196. package/dist/commands/setup.js +52 -131
  197. package/dist/commands/setup.js.map +1 -1
  198. package/dist/commands/upgrade.d.ts +5 -0
  199. package/dist/commands/upgrade.d.ts.map +1 -0
  200. package/dist/commands/upgrade.js +89 -0
  201. package/dist/commands/upgrade.js.map +1 -0
  202. package/dist/commands/whoami.d.ts +12 -0
  203. package/dist/commands/whoami.d.ts.map +1 -0
  204. package/dist/commands/whoami.js +70 -0
  205. package/dist/commands/whoami.js.map +1 -0
  206. package/dist/commands/whoami.test.d.ts +2 -0
  207. package/dist/commands/whoami.test.d.ts.map +1 -0
  208. package/dist/commands/whoami.test.js +50 -0
  209. package/dist/commands/whoami.test.js.map +1 -0
  210. package/dist/commands/workspace.d.ts +23 -2
  211. package/dist/commands/workspace.d.ts.map +1 -1
  212. package/dist/commands/workspace.js +2 -2
  213. package/dist/commands/workspace.js.map +1 -1
  214. package/dist/formatters/__tests__/orient-provenance.test.d.ts +7 -0
  215. package/dist/formatters/__tests__/orient-provenance.test.d.ts.map +1 -0
  216. package/dist/formatters/__tests__/orient-provenance.test.js +454 -0
  217. package/dist/formatters/__tests__/orient-provenance.test.js.map +1 -0
  218. package/dist/formatters/audit.d.ts +6 -0
  219. package/dist/formatters/audit.d.ts.map +1 -1
  220. package/dist/formatters/audit.js.map +1 -1
  221. package/dist/formatters/entry.d.ts +21 -0
  222. package/dist/formatters/entry.d.ts.map +1 -1
  223. package/dist/formatters/entry.js +46 -5
  224. package/dist/formatters/entry.js.map +1 -1
  225. package/dist/formatters/handshake.d.ts +19 -3
  226. package/dist/formatters/handshake.d.ts.map +1 -1
  227. package/dist/formatters/handshake.js +48 -13
  228. package/dist/formatters/handshake.js.map +1 -1
  229. package/dist/formatters/orient.d.ts +79 -4
  230. package/dist/formatters/orient.d.ts.map +1 -1
  231. package/dist/formatters/orient.js +119 -18
  232. package/dist/formatters/orient.js.map +1 -1
  233. package/dist/formatters/session.js +1 -1
  234. package/dist/formatters/session.js.map +1 -1
  235. package/dist/generators/adapters.js +2 -2
  236. package/dist/generators/context-md.js +6 -6
  237. package/dist/generators/context-md.js.map +1 -1
  238. package/dist/generators/manifest.d.ts +76 -0
  239. package/dist/generators/manifest.d.ts.map +1 -1
  240. package/dist/generators/manifest.js +125 -14
  241. package/dist/generators/manifest.js.map +1 -1
  242. package/dist/generators/portable-knowledge.d.ts +6 -12
  243. package/dist/generators/portable-knowledge.d.ts.map +1 -1
  244. package/dist/generators/portable-knowledge.js +2 -19
  245. package/dist/generators/portable-knowledge.js.map +1 -1
  246. package/dist/generators/region-projections.d.ts +18 -0
  247. package/dist/generators/region-projections.d.ts.map +1 -0
  248. package/dist/generators/region-projections.js +49 -0
  249. package/dist/generators/region-projections.js.map +1 -0
  250. package/dist/generators/region-projections.test.d.ts +2 -0
  251. package/dist/generators/region-projections.test.d.ts.map +1 -0
  252. package/dist/generators/region-projections.test.js +63 -0
  253. package/dist/generators/region-projections.test.js.map +1 -0
  254. package/dist/generators/region.d.ts +24 -0
  255. package/dist/generators/region.d.ts.map +1 -0
  256. package/dist/generators/region.js +87 -0
  257. package/dist/generators/region.js.map +1 -0
  258. package/dist/generators/region.test.d.ts +2 -0
  259. package/dist/generators/region.test.d.ts.map +1 -0
  260. package/dist/generators/region.test.js +126 -0
  261. package/dist/generators/region.test.js.map +1 -0
  262. package/dist/generators/surface-profiles.d.ts +1 -2
  263. package/dist/generators/surface-profiles.d.ts.map +1 -1
  264. package/dist/generators/surface-profiles.js.map +1 -1
  265. package/dist/index.js +142 -27
  266. package/dist/index.js.map +1 -1
  267. package/dist/lib/activation.d.ts.map +1 -1
  268. package/dist/lib/activation.js +3 -3
  269. package/dist/lib/activation.js.map +1 -1
  270. package/dist/lib/activation.test.js +3 -3
  271. package/dist/lib/activation.test.js.map +1 -1
  272. package/dist/lib/canonicalRefs.d.ts +72 -0
  273. package/dist/lib/canonicalRefs.d.ts.map +1 -1
  274. package/dist/lib/canonicalRefs.js +67 -0
  275. package/dist/lib/canonicalRefs.js.map +1 -1
  276. package/dist/lib/client.d.ts.map +1 -1
  277. package/dist/lib/client.js +14 -4
  278. package/dist/lib/client.js.map +1 -1
  279. package/dist/lib/config.d.ts +70 -4
  280. package/dist/lib/config.d.ts.map +1 -1
  281. package/dist/lib/config.js +151 -11
  282. package/dist/lib/config.js.map +1 -1
  283. package/dist/lib/connectKeyLabel.d.ts +9 -0
  284. package/dist/lib/connectKeyLabel.d.ts.map +1 -0
  285. package/dist/lib/connectKeyLabel.js +12 -0
  286. package/dist/lib/connectKeyLabel.js.map +1 -0
  287. package/dist/lib/constants.d.ts +2 -0
  288. package/dist/lib/constants.d.ts.map +1 -1
  289. package/dist/lib/constants.js +2 -0
  290. package/dist/lib/constants.js.map +1 -1
  291. package/dist/lib/errors.d.ts +3 -0
  292. package/dist/lib/errors.d.ts.map +1 -1
  293. package/dist/lib/errors.js +3 -0
  294. package/dist/lib/errors.js.map +1 -1
  295. package/dist/lib/normalizeMaterializedFilename.d.ts +28 -0
  296. package/dist/lib/normalizeMaterializedFilename.d.ts.map +1 -0
  297. package/dist/lib/normalizeMaterializedFilename.js +56 -0
  298. package/dist/lib/normalizeMaterializedFilename.js.map +1 -0
  299. package/dist/lib/normalizeMaterializedFilename.test.d.ts +16 -0
  300. package/dist/lib/normalizeMaterializedFilename.test.d.ts.map +1 -0
  301. package/dist/lib/normalizeMaterializedFilename.test.js +90 -0
  302. package/dist/lib/normalizeMaterializedFilename.test.js.map +1 -0
  303. package/dist/lib/onboarding-path-b.d.ts.map +1 -1
  304. package/dist/lib/onboarding-path-b.js +0 -1
  305. package/dist/lib/onboarding-path-b.js.map +1 -1
  306. package/dist/lib/onboarding-shared.d.ts +0 -1
  307. package/dist/lib/onboarding-shared.d.ts.map +1 -1
  308. package/dist/lib/onboarding-shared.js +1 -17
  309. package/dist/lib/onboarding-shared.js.map +1 -1
  310. package/dist/lib/profiles.d.ts +3 -1
  311. package/dist/lib/profiles.d.ts.map +1 -1
  312. package/dist/lib/profiles.js +9 -6
  313. package/dist/lib/profiles.js.map +1 -1
  314. package/dist/lib/session.d.ts +10 -0
  315. package/dist/lib/session.d.ts.map +1 -1
  316. package/dist/lib/session.js +14 -0
  317. package/dist/lib/session.js.map +1 -1
  318. package/dist/lib/update-check.d.ts +20 -0
  319. package/dist/lib/update-check.d.ts.map +1 -1
  320. package/dist/lib/update-check.js +122 -21
  321. package/dist/lib/update-check.js.map +1 -1
  322. package/dist/lib/upgrade-runner.d.ts +21 -0
  323. package/dist/lib/upgrade-runner.d.ts.map +1 -0
  324. package/dist/lib/upgrade-runner.js +109 -0
  325. package/dist/lib/upgrade-runner.js.map +1 -0
  326. package/dist/lib/workspaceVocabCache.d.ts +60 -0
  327. package/dist/lib/workspaceVocabCache.d.ts.map +1 -0
  328. package/dist/lib/workspaceVocabCache.js +98 -0
  329. package/dist/lib/workspaceVocabCache.js.map +1 -0
  330. package/dist/setup/__tests__/coach-traces.test.d.ts +2 -0
  331. package/dist/setup/__tests__/coach-traces.test.d.ts.map +1 -0
  332. package/dist/setup/__tests__/coach-traces.test.js +189 -0
  333. package/dist/setup/__tests__/coach-traces.test.js.map +1 -0
  334. package/dist/setup/__tests__/setup-commands.test.d.ts +2 -0
  335. package/dist/setup/__tests__/setup-commands.test.d.ts.map +1 -0
  336. package/dist/setup/__tests__/setup-commands.test.js +177 -0
  337. package/dist/setup/__tests__/setup-commands.test.js.map +1 -0
  338. package/dist/setup/__tests__/state-machine.test.d.ts +2 -0
  339. package/dist/setup/__tests__/state-machine.test.d.ts.map +1 -0
  340. package/dist/setup/__tests__/state-machine.test.js +341 -0
  341. package/dist/setup/__tests__/state-machine.test.js.map +1 -0
  342. package/dist/setup/detect-surfaces.d.ts +21 -0
  343. package/dist/setup/detect-surfaces.d.ts.map +1 -0
  344. package/dist/setup/detect-surfaces.js +39 -0
  345. package/dist/setup/detect-surfaces.js.map +1 -0
  346. package/dist/setup/manifest-writer.d.ts +17 -0
  347. package/dist/setup/manifest-writer.d.ts.map +1 -0
  348. package/dist/setup/manifest-writer.js +153 -0
  349. package/dist/setup/manifest-writer.js.map +1 -0
  350. package/dist/setup/perimeter.d.ts +72 -0
  351. package/dist/setup/perimeter.d.ts.map +1 -0
  352. package/dist/setup/perimeter.js +128 -0
  353. package/dist/setup/perimeter.js.map +1 -0
  354. package/dist/setup/state-machine.d.ts +67 -0
  355. package/dist/setup/state-machine.d.ts.map +1 -0
  356. package/dist/setup/state-machine.js +124 -0
  357. package/dist/setup/state-machine.js.map +1 -0
  358. package/dist/surfaces/__tests__/adapter.test.d.ts +2 -0
  359. package/dist/surfaces/__tests__/adapter.test.d.ts.map +1 -0
  360. package/dist/surfaces/__tests__/adapter.test.js +90 -0
  361. package/dist/surfaces/__tests__/adapter.test.js.map +1 -0
  362. package/dist/surfaces/__tests__/pb-setup-passthrough.test.d.ts +2 -0
  363. package/dist/surfaces/__tests__/pb-setup-passthrough.test.d.ts.map +1 -0
  364. package/dist/surfaces/__tests__/pb-setup-passthrough.test.js +132 -0
  365. package/dist/surfaces/__tests__/pb-setup-passthrough.test.js.map +1 -0
  366. package/dist/surfaces/__tests__/telemetry.test.d.ts +2 -0
  367. package/dist/surfaces/__tests__/telemetry.test.d.ts.map +1 -0
  368. package/dist/surfaces/__tests__/telemetry.test.js +55 -0
  369. package/dist/surfaces/__tests__/telemetry.test.js.map +1 -0
  370. package/dist/surfaces/adapter.d.ts +70 -0
  371. package/dist/surfaces/adapter.d.ts.map +1 -0
  372. package/dist/surfaces/adapter.js +2 -0
  373. package/dist/surfaces/adapter.js.map +1 -0
  374. package/dist/surfaces/adapters/claude.d.ts +3 -0
  375. package/dist/surfaces/adapters/claude.d.ts.map +1 -0
  376. package/dist/surfaces/adapters/claude.js +67 -0
  377. package/dist/surfaces/adapters/claude.js.map +1 -0
  378. package/dist/surfaces/adapters/codex.d.ts +3 -0
  379. package/dist/surfaces/adapters/codex.d.ts.map +1 -0
  380. package/dist/surfaces/adapters/codex.js +61 -0
  381. package/dist/surfaces/adapters/codex.js.map +1 -0
  382. package/dist/surfaces/adapters/copilot.d.ts +3 -0
  383. package/dist/surfaces/adapters/copilot.d.ts.map +1 -0
  384. package/dist/surfaces/adapters/copilot.js +59 -0
  385. package/dist/surfaces/adapters/copilot.js.map +1 -0
  386. package/dist/surfaces/adapters/cursor.d.ts +3 -0
  387. package/dist/surfaces/adapters/cursor.d.ts.map +1 -0
  388. package/dist/surfaces/adapters/cursor.js +78 -0
  389. package/dist/surfaces/adapters/cursor.js.map +1 -0
  390. package/dist/surfaces/registry.d.ts +58 -2
  391. package/dist/surfaces/registry.d.ts.map +1 -1
  392. package/dist/surfaces/registry.js +82 -7
  393. package/dist/surfaces/registry.js.map +1 -1
  394. package/dist/surfaces/telemetry.d.ts +17 -0
  395. package/dist/surfaces/telemetry.d.ts.map +1 -0
  396. package/dist/surfaces/telemetry.js +31 -0
  397. package/dist/surfaces/telemetry.js.map +1 -0
  398. package/package.json +3 -1
  399. package/dist/__tests__/setup.test.d.ts +0 -2
  400. package/dist/__tests__/setup.test.d.ts.map +0 -1
  401. package/dist/__tests__/setup.test.js +0 -141
  402. package/dist/__tests__/setup.test.js.map +0 -1
  403. package/dist/generators/__tests__/surface-profiles.test.d.ts +0 -2
  404. package/dist/generators/__tests__/surface-profiles.test.d.ts.map +0 -1
  405. package/dist/generators/__tests__/surface-profiles.test.js +0 -89
  406. package/dist/generators/__tests__/surface-profiles.test.js.map +0 -1
  407. package/dist/lib/onboarding-phases.d.ts +0 -9
  408. package/dist/lib/onboarding-phases.d.ts.map +0 -1
  409. package/dist/lib/onboarding-phases.js +0 -120
  410. package/dist/lib/onboarding-phases.js.map +0 -1
@@ -25,11 +25,29 @@ interface ProjectConfig {
25
25
  /** Local project config shape — .productbrain/config.local.json (gitignored, machine-local) */
26
26
  interface LocalProjectConfig {
27
27
  profile?: string;
28
+ /** Direct preview API key — set by `npm run pb:preview`, cleared by `npm run pb:real`. */
29
+ apiKey?: string;
30
+ /** Preview site URL — set alongside apiKey by `npm run pb:preview`. */
31
+ siteUrl?: string;
32
+ /** Marks this config as preview-bound; the CLI shows a loud banner on every command. */
33
+ preview?: boolean;
34
+ /** Human-readable preview workspace name for the banner (e.g. "Preview Workspace"). */
35
+ workspaceName?: string;
28
36
  }
29
37
  /**
30
- * Walk up the directory tree (git-style) to find the nearest .productbrain/ directory.
31
- * Stops at home directory or filesystem root.
32
- * Returns the directory containing .productbrain/, or null if not found.
38
+ * Walk up the directory tree (git-style) to find the nearest CLI project root.
39
+ *
40
+ * A `.productbrain/` directory only counts as a CLI project root when it carries
41
+ * CLI configuration — `config.json` (committed siteUrl gateway) or
42
+ * `config.local.json` (machine-local profile pin or preview binding). A
43
+ * projection-only `.productbrain/` written by `pb handshake` (briefing.md,
44
+ * context.md, rules/, etc.) does NOT count — otherwise a subrepo like
45
+ * `packages/cli/.productbrain/` would shadow the real configuring root and
46
+ * `npm run pb:preview` writes (which always land at the repo-root
47
+ * `.productbrain/`) would be invisible to commands run from the subrepo.
48
+ *
49
+ * Stops at home directory or filesystem root. Returns the directory containing
50
+ * a config-bearing `.productbrain/`, or null if not found.
33
51
  */
34
52
  export declare function findProjectRoot(startDir: string): string | null;
35
53
  /**
@@ -41,11 +59,59 @@ export declare function findProjectRoot(startDir: string): string | null;
41
59
  declare function readProjectConfig(): ProjectConfig | null;
42
60
  /**
43
61
  * Read .productbrain/config.local.json from the walked-up project root.
44
- * Only reads profile — machine-local state never committed.
62
+ * Returns the machine-local pin (`profile`) and any preview-binding fields
63
+ * (`apiKey`, `siteUrl`, `preview`, `workspaceName`) written by
64
+ * `npm run pb:preview` — all gitignored, never committed.
45
65
  * Returns null if file missing or project root not found.
46
66
  * Warns to stderr on invalid JSON but does not throw.
47
67
  */
48
68
  export declare function readLocalProjectConfig(): LocalProjectConfig | null;
69
+ /**
70
+ * Returns the preview binding metadata when pb is currently bound to a throwaway preview,
71
+ * or null when bound to the real Chain (the default).
72
+ *
73
+ * Effective-binding mirror: this only reports a preview binding when
74
+ * `resolveConfig()`/`loadEnv()` would actually honor it — `preview === true` AND
75
+ * an atomic apiKey+siteUrl pair (SF-3) AND no `PRODUCTBRAIN_API_KEY` env override
76
+ * (env always wins in resolveConfig step 1). Without these guards the PREVIEW
77
+ * banner could fire while writes still hit the real Chain, defeating the safety
78
+ * warning. Used by the PREVIEW banner (index.ts preAction hook) and the
79
+ * capture/update advisory.
80
+ *
81
+ * Security classification: reads only the gitignored machine-local config.local.json.
82
+ * The preview key in that file is a throwaway preview-scoped key, set by explicit
83
+ * `npm run pb:preview` opt-in and reversed by `npm run pb:real`. Never throws — returns
84
+ * null on any error so the banner/advisory path is never the source of a CLI crash.
85
+ */
86
+ export declare function getPreviewBinding(): {
87
+ workspaceName: string | null;
88
+ } | null;
89
+ /**
90
+ * Write/merge the profile pin into <projectRoot>/.productbrain/config.local.json,
91
+ * preserving any sibling keys. Single source of truth for the local pin write —
92
+ * used by `pb profile use --local`, the default reconcile path, and `pb connect`.
93
+ *
94
+ * Co-writer note (SF-2): scripts/pb-binding.mjs is the OTHER writer of config.local.json — it
95
+ * merges/strips the preview-binding keys (apiKey, siteUrl, preview, workspaceName) for
96
+ * `npm run pb:preview` / `npm run pb:real`. Both writers preserve the `profile` pin. If you add
97
+ * a preview-scoped key here or in readLocalProjectConfig(), update pb-binding.mjs's PREVIEW_KEYS.
98
+ */
99
+ export declare function setLocalProfilePin(projectRoot: string, profile: string): void;
100
+ /** Source of the effective profile, in resolution-precedence order. */
101
+ export type EffectiveProfileSource = 'env' | 'local' | 'global' | 'default' | 'none';
102
+ /**
103
+ * Resolve the effective profile NAME + where it came from. The SOURCE-PRECEDENCE
104
+ * ORDER matches resolveConfig() (env > local pin > global > default), but unlike
105
+ * resolveConfig() this reports the *configured* pin name even when that profile is
106
+ * unresolvable (deleted / missing key). That divergence is intentional: a dangling
107
+ * repo pin must be surfaced by `pb whoami`, not silently masked by the global
108
+ * profile — masking it is the TEN-2163 silent-drift bug. Used by `pb whoami` and
109
+ * the inline "now using" prints.
110
+ */
111
+ export declare function resolveEffectiveProfile(): {
112
+ profile: string | null;
113
+ source: EffectiveProfileSource;
114
+ };
49
115
  /** Config source in resolution priority order. */
50
116
  export type ConfigSource = 'env' | 'project' | 'profile' | 'cwd' | 'default';
51
117
  /** Result of the full config resolution cascade. */
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAWH,QAAA,MAAM,eAAe,QAAgD,CAAC;AACtE,QAAA,MAAM,aAAa,QAAmC,CAAC;AAUvD,iFAAiF;AACjF,UAAU,aAAa;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,+FAA+F;AAC/F,UAAU,kBAAkB;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAS/D;AAED;;;;;GAKG;AACH,iBAAS,iBAAiB,IAAI,aAAa,GAAG,IAAI,CAuBjD;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,kBAAkB,GAAG,IAAI,CAsBlE;AAED,kDAAkD;AAClD,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,CAAC;AAE7E,oDAAoD;AACpD,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,YAAY,CAAC;CACtB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,IAAI,cAAc,CA2E9C;AAwED,2DAA2D;AAC3D,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AA6DD,wBAAgB,SAAS,IAAI;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA0B/D;AAED,MAAM,MAAM,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD,iEAAiE;AACjE,MAAM,MAAM,YAAY,GACpB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GACnE;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAElC;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,IAAI,YAAY,CAiB5C;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAoBzF;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,IAAI;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAmDxE;AAED,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
@@ -21,7 +21,7 @@ import { resolve } from 'path';
21
21
  import { homedir } from 'os';
22
22
  import { DEFAULT_SITE_URL, isDevMode } from './constants.js';
23
23
  import { API_KEY_PREFIX } from './tokenConstants.js';
24
- import { resolveProfileConfig, resolveNamedProfileConfig } from './profiles.js';
24
+ import { resolveProfileConfig, resolveNamedProfileConfig, getGlobalActiveProfile } from './profiles.js';
25
25
  import { CLIError, ErrorCode } from './errors.js';
26
26
  import { confirm as promptConfirm, password as promptPassword } from './prompts.js';
27
27
  const HOME_CONFIG_DIR = resolve(homedir(), '.config', 'productbrain');
@@ -32,16 +32,30 @@ const NON_TTY_MESSAGE = 'No API key. Set PRODUCTBRAIN_API_KEY or run pb login.';
32
32
  /** Track whether env has been loaded to avoid redundant file reads. */
33
33
  let envLoaded = false;
34
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.
35
+ * Walk up the directory tree (git-style) to find the nearest CLI project root.
36
+ *
37
+ * A `.productbrain/` directory only counts as a CLI project root when it carries
38
+ * CLI configuration — `config.json` (committed siteUrl gateway) or
39
+ * `config.local.json` (machine-local profile pin or preview binding). A
40
+ * projection-only `.productbrain/` written by `pb handshake` (briefing.md,
41
+ * context.md, rules/, etc.) does NOT count — otherwise a subrepo like
42
+ * `packages/cli/.productbrain/` would shadow the real configuring root and
43
+ * `npm run pb:preview` writes (which always land at the repo-root
44
+ * `.productbrain/`) would be invisible to commands run from the subrepo.
45
+ *
46
+ * Stops at home directory or filesystem root. Returns the directory containing
47
+ * a config-bearing `.productbrain/`, or null if not found.
38
48
  */
39
49
  export function findProjectRoot(startDir) {
40
50
  let dir = startDir;
41
51
  const home = homedir();
42
52
  while (true) {
43
- if (existsSync(resolve(dir, '.productbrain')))
53
+ const pbDir = resolve(dir, '.productbrain');
54
+ if (existsSync(pbDir) &&
55
+ (existsSync(resolve(pbDir, 'config.json')) ||
56
+ existsSync(resolve(pbDir, 'config.local.json')))) {
44
57
  return dir;
58
+ }
45
59
  const parent = resolve(dir, '..');
46
60
  if (parent === dir || dir === home)
47
61
  return null;
@@ -82,7 +96,9 @@ function readProjectConfig() {
82
96
  }
83
97
  /**
84
98
  * Read .productbrain/config.local.json from the walked-up project root.
85
- * Only reads profile — machine-local state never committed.
99
+ * Returns the machine-local pin (`profile`) and any preview-binding fields
100
+ * (`apiKey`, `siteUrl`, `preview`, `workspaceName`) written by
101
+ * `npm run pb:preview` — all gitignored, never committed.
86
102
  * Returns null if file missing or project root not found.
87
103
  * Warns to stderr on invalid JSON but does not throw.
88
104
  */
@@ -104,6 +120,19 @@ export function readLocalProjectConfig() {
104
120
  if (typeof parsed.profile === 'string' && parsed.profile) {
105
121
  result.profile = parsed.profile;
106
122
  }
123
+ // Preview binding fields — written by `npm run pb:preview`, cleared by `npm run pb:real`.
124
+ if (typeof parsed.apiKey === 'string' && parsed.apiKey.startsWith(API_KEY_PREFIX)) {
125
+ result.apiKey = parsed.apiKey;
126
+ }
127
+ if (typeof parsed.siteUrl === 'string' && parsed.siteUrl) {
128
+ result.siteUrl = parsed.siteUrl;
129
+ }
130
+ if (parsed.preview === true) {
131
+ result.preview = true;
132
+ }
133
+ if (typeof parsed.workspaceName === 'string' && parsed.workspaceName) {
134
+ result.workspaceName = parsed.workspaceName;
135
+ }
107
136
  return result;
108
137
  }
109
138
  catch {
@@ -111,6 +140,85 @@ export function readLocalProjectConfig() {
111
140
  return null;
112
141
  }
113
142
  }
143
+ /**
144
+ * Returns the preview binding metadata when pb is currently bound to a throwaway preview,
145
+ * or null when bound to the real Chain (the default).
146
+ *
147
+ * Effective-binding mirror: this only reports a preview binding when
148
+ * `resolveConfig()`/`loadEnv()` would actually honor it — `preview === true` AND
149
+ * an atomic apiKey+siteUrl pair (SF-3) AND no `PRODUCTBRAIN_API_KEY` env override
150
+ * (env always wins in resolveConfig step 1). Without these guards the PREVIEW
151
+ * banner could fire while writes still hit the real Chain, defeating the safety
152
+ * warning. Used by the PREVIEW banner (index.ts preAction hook) and the
153
+ * capture/update advisory.
154
+ *
155
+ * Security classification: reads only the gitignored machine-local config.local.json.
156
+ * The preview key in that file is a throwaway preview-scoped key, set by explicit
157
+ * `npm run pb:preview` opt-in and reversed by `npm run pb:real`. Never throws — returns
158
+ * null on any error so the banner/advisory path is never the source of a CLI crash.
159
+ */
160
+ export function getPreviewBinding() {
161
+ try {
162
+ if (process.env.PRODUCTBRAIN_API_KEY)
163
+ return null;
164
+ const localConfig = readLocalProjectConfig();
165
+ if (localConfig?.preview === true && localConfig.apiKey && localConfig.siteUrl) {
166
+ return { workspaceName: localConfig.workspaceName ?? null };
167
+ }
168
+ return null;
169
+ }
170
+ catch {
171
+ return null;
172
+ }
173
+ }
174
+ /**
175
+ * Write/merge the profile pin into <projectRoot>/.productbrain/config.local.json,
176
+ * preserving any sibling keys. Single source of truth for the local pin write —
177
+ * used by `pb profile use --local`, the default reconcile path, and `pb connect`.
178
+ *
179
+ * Co-writer note (SF-2): scripts/pb-binding.mjs is the OTHER writer of config.local.json — it
180
+ * merges/strips the preview-binding keys (apiKey, siteUrl, preview, workspaceName) for
181
+ * `npm run pb:preview` / `npm run pb:real`. Both writers preserve the `profile` pin. If you add
182
+ * a preview-scoped key here or in readLocalProjectConfig(), update pb-binding.mjs's PREVIEW_KEYS.
183
+ */
184
+ export function setLocalProfilePin(projectRoot, profile) {
185
+ const configDir = resolve(projectRoot, '.productbrain');
186
+ const localConfigPath = resolve(configDir, 'config.local.json');
187
+ let existing = {};
188
+ if (existsSync(localConfigPath)) {
189
+ try {
190
+ const parsed = JSON.parse(readFileSync(localConfigPath, 'utf8'));
191
+ if (parsed && typeof parsed === 'object' && !Array.isArray(parsed))
192
+ existing = parsed;
193
+ }
194
+ catch { /* ignore parse errors — we overwrite the pin below */ }
195
+ }
196
+ mkdirSync(configDir, { recursive: true });
197
+ writeFileSync(localConfigPath, JSON.stringify({ ...existing, profile }, null, 2) + '\n');
198
+ }
199
+ /**
200
+ * Resolve the effective profile NAME + where it came from. The SOURCE-PRECEDENCE
201
+ * ORDER matches resolveConfig() (env > local pin > global > default), but unlike
202
+ * resolveConfig() this reports the *configured* pin name even when that profile is
203
+ * unresolvable (deleted / missing key). That divergence is intentional: a dangling
204
+ * repo pin must be surfaced by `pb whoami`, not silently masked by the global
205
+ * profile — masking it is the TEN-2163 silent-drift bug. Used by `pb whoami` and
206
+ * the inline "now using" prints.
207
+ */
208
+ export function resolveEffectiveProfile() {
209
+ const envProfile = process.env.PB_PROFILE?.trim();
210
+ if (envProfile)
211
+ return { profile: envProfile, source: 'env' };
212
+ const localProfile = readLocalProjectConfig()?.profile;
213
+ if (localProfile)
214
+ return { profile: localProfile, source: 'local' };
215
+ const globalProfile = getGlobalActiveProfile();
216
+ if (globalProfile)
217
+ return { profile: globalProfile, source: 'global' };
218
+ if (resolveNamedProfileConfig('default'))
219
+ return { profile: 'default', source: 'default' };
220
+ return { profile: null, source: 'none' };
221
+ }
114
222
  /**
115
223
  * Run the full config resolution cascade and return a typed result.
116
224
  * Resolution order:
@@ -134,8 +242,26 @@ export function resolveConfig() {
134
242
  source: 'env',
135
243
  };
136
244
  }
137
- // 2. Local project config — profile pin (config.local.json, gitignored)
245
+ // 2. Local project config — check for direct preview binding first, then profile pin.
138
246
  const localConfig = readLocalProjectConfig();
247
+ // 2a. Direct preview binding (config.local.json apiKey) — set by `npm run pb:preview`.
248
+ // Security classification: gitignored machine-local file; throwaway preview-scoped key;
249
+ // explicit opt-in via `npm run pb:preview`; reversible via `npm run pb:real`;
250
+ // loud PREVIEW banner on every command makes it un-missable (index.ts preAction hook).
251
+ //
252
+ // Atomic apiKey+siteUrl (SF-3): only honor the preview key when its OWN siteUrl is present.
253
+ // Never let a preview key borrow config.json's (real-dev) siteUrl — that would send a
254
+ // preview credential to a non-preview gateway (STD-261). If siteUrl is absent we skip this
255
+ // branch and fall through to the profile pin / default, so it is impossible by construction
256
+ // for a `preview:true` key to be paired with the committed real-dev gateway.
257
+ if (localConfig?.apiKey && localConfig.siteUrl) {
258
+ return {
259
+ apiKey: localConfig.apiKey,
260
+ siteUrl: localConfig.siteUrl.replace(/\/$/, ''),
261
+ source: 'project',
262
+ };
263
+ }
264
+ // 2b. Profile pin (config.local.json profile field, gitignored)
139
265
  if (localConfig?.profile) {
140
266
  const namedConfig = resolveNamedProfileConfig(localConfig.profile);
141
267
  if (namedConfig?.apiKey) {
@@ -216,21 +342,35 @@ function loadEnv() {
216
342
  if (envLoaded)
217
343
  return;
218
344
  envLoaded = true;
219
- // 1. Try local project config first (profile pin, config.local.json)
345
+ // 1. Try local project config first (preview binding or profile pin, config.local.json)
220
346
  const localConfig = readLocalProjectConfig();
347
+ // 1a. Direct preview binding — set by `npm run pb:preview`, takes priority over profile pin.
348
+ // Atomic apiKey+siteUrl (SF-3): only bind the preview key when its OWN siteUrl is present —
349
+ // never let it fall through to config.json's (real-dev) siteUrl (STD-261). Mirror of the
350
+ // resolveConfig() 2a guard so loadEnv() and resolveConfig() agree on what counts as a binding.
351
+ if (localConfig?.apiKey && localConfig.siteUrl && !process.env.PRODUCTBRAIN_API_KEY) {
352
+ process.env.PRODUCTBRAIN_API_KEY = localConfig.apiKey;
353
+ // SF-3 atomic pair: when we accept the preview key, we MUST pair it with
354
+ // its OWN siteUrl — even if CONVEX_SITE_URL is already exported. Otherwise
355
+ // a stale/real exported CONVEX_SITE_URL would silently route the preview
356
+ // credential to a non-preview gateway. Mirror of resolveConfig() step 2a,
357
+ // which returns localConfig.siteUrl unconditionally inside this branch.
358
+ process.env.CONVEX_SITE_URL = localConfig.siteUrl.replace(/\/$/, '');
359
+ }
360
+ // 1b. Profile pin
221
361
  if (localConfig?.profile && !process.env.PRODUCTBRAIN_API_KEY) {
222
362
  const namedConfig = resolveNamedProfileConfig(localConfig.profile);
223
363
  if (namedConfig?.apiKey) {
224
364
  process.env.PRODUCTBRAIN_API_KEY = namedConfig.apiKey;
225
365
  if (!process.env.CONVEX_SITE_URL && namedConfig.siteUrl) {
226
- process.env.CONVEX_SITE_URL = namedConfig.siteUrl;
366
+ process.env.CONVEX_SITE_URL = namedConfig.siteUrl.replace(/\/$/, '');
227
367
  }
228
368
  }
229
369
  }
230
370
  // 1b. Apply siteUrl from config.json (gateway override — no apiKey reading here)
231
371
  const projectConfig = readProjectConfig();
232
372
  if (projectConfig?.siteUrl && !process.env.CONVEX_SITE_URL) {
233
- process.env.CONVEX_SITE_URL = projectConfig.siteUrl;
373
+ process.env.CONVEX_SITE_URL = projectConfig.siteUrl.replace(/\/$/, '');
234
374
  }
235
375
  // 2. Try profile system (handles auto-migration from legacy .env)
236
376
  const profileConfig = resolveProfileConfig();
@@ -240,7 +380,7 @@ function loadEnv() {
240
380
  process.env.PRODUCTBRAIN_API_KEY = profileConfig.apiKey;
241
381
  }
242
382
  if (!process.env.CONVEX_SITE_URL && profileConfig.siteUrl) {
243
- process.env.CONVEX_SITE_URL = profileConfig.siteUrl;
383
+ process.env.CONVEX_SITE_URL = profileConfig.siteUrl.replace(/\/$/, '');
244
384
  }
245
385
  }
246
386
  // 3. Legacy home config (in case profiles didn't find it)
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
@@ -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"}
@@ -4,6 +4,8 @@
4
4
  */
5
5
  /** Production Convex HTTP Actions endpoint. */
6
6
  export declare const DEFAULT_SITE_URL = "https://gateway.productbrain.io";
7
+ /** Canonical self-upgrade command. WP-425 fixes the stale @latest dist-tag trap. */
8
+ export declare const UPGRADE_COMMAND = "npm install -g @productbrain/cli@beta";
7
9
  /**
8
10
  * Resolve the Convex site URL based on PB_ENV.
9
11
  * - PB_ENV=dev → DEV_SITE_URL (localhost — see caveat on DEV_SITE_URL)
@@ -1 +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"}
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;AAElE,oFAAoF;AACpF,eAAO,MAAM,eAAe,0CAA0C,CAAC;AAiBvE;;;;;;;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"}
@@ -4,6 +4,8 @@
4
4
  */
5
5
  /** Production Convex HTTP Actions endpoint. */
6
6
  export const DEFAULT_SITE_URL = 'https://gateway.productbrain.io';
7
+ /** Canonical self-upgrade command. WP-425 fixes the stale @latest dist-tag trap. */
8
+ export const UPGRADE_COMMAND = 'npm install -g @productbrain/cli@beta';
7
9
  /** Hostname lists for banners + admin seed gates live in `deployment.ts` (PRODUCTION_HOSTS, DEV_CLOUD_HOSTS). */
8
10
  /** Production web app URL. */
9
11
  const PROD_APP_URL = 'https://work.productbrain.io';
@@ -1 +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"}
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,oFAAoF;AACpF,MAAM,CAAC,MAAM,eAAe,GAAG,uCAAuC,CAAC;AAEvE,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"}
@@ -19,12 +19,15 @@ export declare const ErrorCode: {
19
19
  readonly CONFIG_INVALID: "CONFIG_INVALID";
20
20
  readonly SESSION_REQUIRED: "SESSION_REQUIRED";
21
21
  readonly VALIDATION_FAILED: "VALIDATION_FAILED";
22
+ /** Kernel / MCP quality gate (e.g. verify-before-commit). */
23
+ readonly QUALITY_GATE_BLOCKED: "QUALITY_GATE_BLOCKED";
22
24
  readonly PROFILE_NOT_FOUND: "PROFILE_NOT_FOUND";
23
25
  readonly PROFILE_ALREADY_EXISTS: "PROFILE_ALREADY_EXISTS";
24
26
  readonly PROFILE_IS_ACTIVE: "PROFILE_IS_ACTIVE";
25
27
  readonly PROFILE_IS_LAST: "PROFILE_IS_LAST";
26
28
  readonly PROFILE_NAME_INVALID: "PROFILE_NAME_INVALID";
27
29
  readonly NON_INTERACTIVE: "NON_INTERACTIVE";
30
+ readonly UPGRADE_FAILED: "UPGRADE_FAILED";
28
31
  readonly INTERNAL: "INTERNAL";
29
32
  };
30
33
  export type ErrorCodeValue = (typeof ErrorCode)[keyof typeof ErrorCode];
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,0DAA0D;AAC1D,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;AAE9G,sEAAsE;AACtE,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;CAyBZ,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAExE;;;;;;;;;GASG;AACH,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;gBAGzB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,cAAc,CAAC;QACtB,QAAQ,CAAC,EAAE,aAAa,CAAC;QACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;IASH,uCAAuC;IACvC,MAAM,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;CAQ/E"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,0DAA0D;AAC1D,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;AAE9G,sEAAsE;AACtE,eAAO,MAAM,SAAS;;;;;;;;;;IAepB,6DAA6D;;;;;;;;;;CAarD,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAExE;;;;;;;;;GASG;AACH,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;gBAGzB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,cAAc,CAAC;QACtB,QAAQ,CAAC,EAAE,aAAa,CAAC;QACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;IASH,uCAAuC;IACvC,MAAM,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;CAQ/E"}
@@ -22,6 +22,8 @@ export const ErrorCode = {
22
22
  SESSION_REQUIRED: 'SESSION_REQUIRED',
23
23
  // Validation
24
24
  VALIDATION_FAILED: 'VALIDATION_FAILED',
25
+ /** Kernel / MCP quality gate (e.g. verify-before-commit). */
26
+ QUALITY_GATE_BLOCKED: 'QUALITY_GATE_BLOCKED',
25
27
  // Profile (WP-302 S2)
26
28
  PROFILE_NOT_FOUND: 'PROFILE_NOT_FOUND',
27
29
  PROFILE_ALREADY_EXISTS: 'PROFILE_ALREADY_EXISTS',
@@ -31,6 +33,7 @@ export const ErrorCode = {
31
33
  // Interactive
32
34
  NON_INTERACTIVE: 'NON_INTERACTIVE',
33
35
  // Internal
36
+ UPGRADE_FAILED: 'UPGRADE_FAILED',
34
37
  INTERNAL: 'INTERNAL',
35
38
  };
36
39
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,sEAAsE;AACtE,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,OAAO;IACP,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,WAAW,EAAE,aAAa;IAC1B,UAAU;IACV,mBAAmB,EAAE,qBAAqB;IAC1C,eAAe,EAAE,iBAAiB;IAClC,SAAS;IACT,cAAc,EAAE,gBAAgB;IAChC,cAAc,EAAE,gBAAgB;IAChC,UAAU;IACV,gBAAgB,EAAE,kBAAkB;IACpC,aAAa;IACb,iBAAiB,EAAE,mBAAmB;IACtC,sBAAsB;IACtB,iBAAiB,EAAE,mBAAmB;IACtC,sBAAsB,EAAE,wBAAwB;IAChD,iBAAiB,EAAE,mBAAmB;IACtC,eAAe,EAAE,iBAAiB;IAClC,oBAAoB,EAAE,sBAAsB;IAC5C,cAAc;IACd,eAAe,EAAE,iBAAiB;IAClC,WAAW;IACX,QAAQ,EAAE,UAAU;CACZ,CAAC;AAIX;;;;;;;;;GASG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,IAAI,CAAiB;IACrB,QAAQ,CAAgB;IACxB,QAAQ,CAAU;IAE3B,YACE,OAAe,EACf,OAIC;QAED,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC;QAChD,IAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,UAAU,CAAC;QAChD,IAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,QAAQ,CAAC;IACpC,CAAC;IAED,uCAAuC;IACvC,MAAM;QACJ,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,OAAO;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtD,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,sEAAsE;AACtE,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,OAAO;IACP,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,WAAW,EAAE,aAAa;IAC1B,UAAU;IACV,mBAAmB,EAAE,qBAAqB;IAC1C,eAAe,EAAE,iBAAiB;IAClC,SAAS;IACT,cAAc,EAAE,gBAAgB;IAChC,cAAc,EAAE,gBAAgB;IAChC,UAAU;IACV,gBAAgB,EAAE,kBAAkB;IACpC,aAAa;IACb,iBAAiB,EAAE,mBAAmB;IACtC,6DAA6D;IAC7D,oBAAoB,EAAE,sBAAsB;IAC5C,sBAAsB;IACtB,iBAAiB,EAAE,mBAAmB;IACtC,sBAAsB,EAAE,wBAAwB;IAChD,iBAAiB,EAAE,mBAAmB;IACtC,eAAe,EAAE,iBAAiB;IAClC,oBAAoB,EAAE,sBAAsB;IAC5C,cAAc;IACd,eAAe,EAAE,iBAAiB;IAClC,WAAW;IACX,cAAc,EAAE,gBAAgB;IAChC,QAAQ,EAAE,UAAU;CACZ,CAAC;AAIX;;;;;;;;;GASG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,IAAI,CAAiB;IACrB,QAAQ,CAAgB;IACxB,QAAQ,CAAU;IAE3B,YACE,OAAe,EACf,OAIC;QAED,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC;QAChD,IAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,UAAU,CAAC;QAChD,IAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,QAAQ,CAAC;IACpC,CAAC;IAED,uCAAuC;IACvC,MAAM;QACJ,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,OAAO;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtD,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * normalizeMaterializedFilename — WP-379 S5b
3
+ *
4
+ * Produces a lowercase, slug-friendly filename from an asset name.
5
+ * Used by resolveProjectionCollision to compare on-disk filenames (which may
6
+ * have been projected with a non-normalized case) against the canonical
7
+ * lowercase form that handshake now writes.
8
+ *
9
+ * Contract:
10
+ * - Output is lowercase.
11
+ * - Non-alphanumeric, non-dot characters are replaced with hyphens.
12
+ * - Leading dots (hidden-file convention) are stripped.
13
+ * - Multiple consecutive hyphens are collapsed to a single hyphen.
14
+ * - Leading and trailing hyphens are trimmed.
15
+ * - Unicode characters that don't map to ASCII letters/digits are dropped.
16
+ * - Idempotent: applying the function twice yields the same result.
17
+ * - Empty input → empty output.
18
+ *
19
+ * Chain: WP-379 S5b.
20
+ */
21
+ /**
22
+ * Normalize a materializedFilename to its canonical lowercase slug form.
23
+ *
24
+ * @param name The raw filename (e.g. "Setup-ProductBrain.mdc").
25
+ * @returns The normalized filename (e.g. "setup-productbrain.mdc").
26
+ */
27
+ export declare function normalizeMaterializedFilename(name: string): string;
28
+ //# sourceMappingURL=normalizeMaterializedFilename.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizeMaterializedFilename.d.ts","sourceRoot":"","sources":["../../src/lib/normalizeMaterializedFilename.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAkClE"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * normalizeMaterializedFilename — WP-379 S5b
3
+ *
4
+ * Produces a lowercase, slug-friendly filename from an asset name.
5
+ * Used by resolveProjectionCollision to compare on-disk filenames (which may
6
+ * have been projected with a non-normalized case) against the canonical
7
+ * lowercase form that handshake now writes.
8
+ *
9
+ * Contract:
10
+ * - Output is lowercase.
11
+ * - Non-alphanumeric, non-dot characters are replaced with hyphens.
12
+ * - Leading dots (hidden-file convention) are stripped.
13
+ * - Multiple consecutive hyphens are collapsed to a single hyphen.
14
+ * - Leading and trailing hyphens are trimmed.
15
+ * - Unicode characters that don't map to ASCII letters/digits are dropped.
16
+ * - Idempotent: applying the function twice yields the same result.
17
+ * - Empty input → empty output.
18
+ *
19
+ * Chain: WP-379 S5b.
20
+ */
21
+ /**
22
+ * Normalize a materializedFilename to its canonical lowercase slug form.
23
+ *
24
+ * @param name The raw filename (e.g. "Setup-ProductBrain.mdc").
25
+ * @returns The normalized filename (e.g. "setup-productbrain.mdc").
26
+ */
27
+ export function normalizeMaterializedFilename(name) {
28
+ if (!name)
29
+ return '';
30
+ // 1. Strip leading dots (hidden-file prefix, e.g. ".cursor/rules/.hidden.mdc").
31
+ // We only strip a single leading dot cluster at the start of the basename,
32
+ // not dots that are part of extensions or internal names.
33
+ const stripped = name.startsWith('.') ? name.replace(/^\.+/, '') : name;
34
+ if (!stripped)
35
+ return '';
36
+ // 2. Lowercase the entire name (covers ASCII + Unicode basic-latin).
37
+ const lowered = stripped.toLowerCase();
38
+ // 3. Normalize Unicode: decompose then remove non-ASCII code points that
39
+ // didn't map cleanly (e.g. accented chars become their base form via NFD
40
+ // decomposition, then the combining diacritics are removed).
41
+ // NFKD decomposes ligatures and compatibility forms as well.
42
+ const ascii = lowered
43
+ .normalize('NFKD')
44
+ .replace(/[̀-ͯ]/g, '') // strip combining diacritics
45
+ .replace(/[^\x00-\x7F]/g, ''); // drop remaining non-ASCII
46
+ // 4. Replace any sequence of non-alphanumeric + non-dot characters with a
47
+ // single hyphen. We preserve dots so that ".mdc" and ".md" extensions
48
+ // are maintained in the output.
49
+ const slugged = ascii.replace(/[^a-z0-9.]+/g, '-');
50
+ // 5. Collapse consecutive hyphens → single hyphen.
51
+ const collapsed = slugged.replace(/-{2,}/g, '-');
52
+ // 6. Trim leading and trailing hyphens.
53
+ const trimmed = collapsed.replace(/^-+|-+$/g, '');
54
+ return trimmed;
55
+ }
56
+ //# sourceMappingURL=normalizeMaterializedFilename.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizeMaterializedFilename.js","sourceRoot":"","sources":["../../src/lib/normalizeMaterializedFilename.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,6BAA6B,CAAC,IAAY;IACxD,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAErB,gFAAgF;IAChF,8EAA8E;IAC9E,6DAA6D;IAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAExE,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IAEzB,qEAAqE;IACrE,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IAEvC,yEAAyE;IACzE,4EAA4E;IAC5E,gEAAgE;IAChE,gEAAgE;IAChE,MAAM,KAAK,GAAG,OAAO;SAClB,SAAS,CAAC,MAAM,CAAC;SACjB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,6BAA6B;SACnD,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,CAAG,2BAA2B;IAE9D,0EAA0E;IAC1E,0EAA0E;IAC1E,mCAAmC;IACnC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IAEnD,mDAAmD;IACnD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAEjD,wCAAwC;IACxC,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAElD,OAAO,OAAO,CAAC;AACjB,CAAC"}