@productbrain/cli 0.1.0-beta.98 → 0.1.0-beta.984

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 (406) 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__/canonicalRefs.vocab.test.d.ts +2 -0
  4. package/dist/__tests__/canonicalRefs.vocab.test.d.ts.map +1 -0
  5. package/dist/__tests__/canonicalRefs.vocab.test.js +251 -0
  6. package/dist/__tests__/canonicalRefs.vocab.test.js.map +1 -0
  7. package/dist/__tests__/config.test.js +272 -2
  8. package/dist/__tests__/config.test.js.map +1 -1
  9. package/dist/__tests__/constants.test.js +6 -1
  10. package/dist/__tests__/constants.test.js.map +1 -1
  11. package/dist/__tests__/envelope-contract.test.js +29 -3
  12. package/dist/__tests__/envelope-contract.test.js.map +1 -1
  13. package/dist/__tests__/errors.test.js +1 -0
  14. package/dist/__tests__/errors.test.js.map +1 -1
  15. package/dist/__tests__/handshake-augment.test.d.ts +2 -0
  16. package/dist/__tests__/handshake-augment.test.d.ts.map +1 -0
  17. package/dist/__tests__/handshake-augment.test.js +423 -0
  18. package/dist/__tests__/handshake-augment.test.js.map +1 -0
  19. package/dist/__tests__/handshake-dormancy.test.d.ts +2 -0
  20. package/dist/__tests__/handshake-dormancy.test.d.ts.map +1 -0
  21. package/dist/__tests__/handshake-dormancy.test.js +207 -0
  22. package/dist/__tests__/handshake-dormancy.test.js.map +1 -0
  23. package/dist/__tests__/handshake-formatter.test.d.ts +2 -0
  24. package/dist/__tests__/handshake-formatter.test.d.ts.map +1 -0
  25. package/dist/__tests__/handshake-formatter.test.js +67 -0
  26. package/dist/__tests__/handshake-formatter.test.js.map +1 -0
  27. package/dist/__tests__/handshake-preview.test.js +566 -4
  28. package/dist/__tests__/handshake-preview.test.js.map +1 -1
  29. package/dist/__tests__/handshake.e2e.test.d.ts +2 -0
  30. package/dist/__tests__/handshake.e2e.test.d.ts.map +1 -0
  31. package/dist/__tests__/handshake.e2e.test.js +1252 -0
  32. package/dist/__tests__/handshake.e2e.test.js.map +1 -0
  33. package/dist/__tests__/handshake.test.js +611 -2
  34. package/dist/__tests__/handshake.test.js.map +1 -1
  35. package/dist/__tests__/manifest.test.js +118 -1
  36. package/dist/__tests__/manifest.test.js.map +1 -1
  37. package/dist/__tests__/notice-marker.test.d.ts +2 -0
  38. package/dist/__tests__/notice-marker.test.d.ts.map +1 -0
  39. package/dist/__tests__/notice-marker.test.js +41 -0
  40. package/dist/__tests__/notice-marker.test.js.map +1 -0
  41. package/dist/__tests__/onboarding-path-b.test.js +4 -4
  42. package/dist/__tests__/onboarding-path-b.test.js.map +1 -1
  43. package/dist/__tests__/orient.test.js +184 -7
  44. package/dist/__tests__/orient.test.js.map +1 -1
  45. package/dist/__tests__/perimeter.test.d.ts +2 -0
  46. package/dist/__tests__/perimeter.test.d.ts.map +1 -0
  47. package/dist/__tests__/perimeter.test.js +165 -0
  48. package/dist/__tests__/perimeter.test.js.map +1 -0
  49. package/dist/__tests__/personal-layer.test.d.ts +1 -2
  50. package/dist/__tests__/personal-layer.test.d.ts.map +1 -1
  51. package/dist/__tests__/personal-layer.test.js +12 -48
  52. package/dist/__tests__/personal-layer.test.js.map +1 -1
  53. package/dist/__tests__/profiles.test.js +106 -2
  54. package/dist/__tests__/profiles.test.js.map +1 -1
  55. package/dist/__tests__/promote.test.js +2 -2
  56. package/dist/__tests__/promote.test.js.map +1 -1
  57. package/dist/__tests__/session-state-machine.test.js +45 -1
  58. package/dist/__tests__/session-state-machine.test.js.map +1 -1
  59. package/dist/__tests__/session-switch.test.d.ts +2 -0
  60. package/dist/__tests__/session-switch.test.d.ts.map +1 -0
  61. package/dist/__tests__/session-switch.test.js +129 -0
  62. package/dist/__tests__/session-switch.test.js.map +1 -0
  63. package/dist/__tests__/setup-ingest.test.js +16 -0
  64. package/dist/__tests__/setup-ingest.test.js.map +1 -1
  65. package/dist/__tests__/skill-vocabulary.test.d.ts +21 -0
  66. package/dist/__tests__/skill-vocabulary.test.d.ts.map +1 -0
  67. package/dist/__tests__/skill-vocabulary.test.js +187 -0
  68. package/dist/__tests__/skill-vocabulary.test.js.map +1 -0
  69. package/dist/__tests__/update-check.test.d.ts +2 -0
  70. package/dist/__tests__/update-check.test.d.ts.map +1 -0
  71. package/dist/__tests__/update-check.test.js +215 -0
  72. package/dist/__tests__/update-check.test.js.map +1 -0
  73. package/dist/__tests__/upgrade-runner.test.d.ts +2 -0
  74. package/dist/__tests__/upgrade-runner.test.d.ts.map +1 -0
  75. package/dist/__tests__/upgrade-runner.test.js +54 -0
  76. package/dist/__tests__/upgrade-runner.test.js.map +1 -0
  77. package/dist/__tests__/upgrade.test.d.ts +2 -0
  78. package/dist/__tests__/upgrade.test.d.ts.map +1 -0
  79. package/dist/__tests__/upgrade.test.js +56 -0
  80. package/dist/__tests__/upgrade.test.js.map +1 -0
  81. package/dist/__tests__/vocabulary-leak.test.d.ts +39 -0
  82. package/dist/__tests__/vocabulary-leak.test.d.ts.map +1 -0
  83. package/dist/__tests__/vocabulary-leak.test.js +534 -0
  84. package/dist/__tests__/vocabulary-leak.test.js.map +1 -0
  85. package/dist/__tests__/workspace.test.js +32 -12
  86. package/dist/__tests__/workspace.test.js.map +1 -1
  87. package/dist/commands/__tests__/connect-handoff.test.d.ts +11 -0
  88. package/dist/commands/__tests__/connect-handoff.test.d.ts.map +1 -0
  89. package/dist/commands/__tests__/connect-handoff.test.js +111 -0
  90. package/dist/commands/__tests__/connect-handoff.test.js.map +1 -0
  91. package/dist/commands/__tests__/setup-detect-surfaces.test.d.ts +15 -0
  92. package/dist/commands/__tests__/setup-detect-surfaces.test.d.ts.map +1 -0
  93. package/dist/commands/__tests__/setup-detect-surfaces.test.js +149 -0
  94. package/dist/commands/__tests__/setup-detect-surfaces.test.js.map +1 -0
  95. package/dist/commands/__tests__/setup-state.test.d.ts +2 -0
  96. package/dist/commands/__tests__/setup-state.test.d.ts.map +1 -0
  97. package/dist/commands/__tests__/setup-state.test.js +194 -0
  98. package/dist/commands/__tests__/setup-state.test.js.map +1 -0
  99. package/dist/commands/admin/seed.d.ts +46 -2
  100. package/dist/commands/admin/seed.d.ts.map +1 -1
  101. package/dist/commands/admin/seed.js +475 -33
  102. package/dist/commands/admin/seed.js.map +1 -1
  103. package/dist/commands/admin/seed.test.d.ts +5 -0
  104. package/dist/commands/admin/seed.test.d.ts.map +1 -1
  105. package/dist/commands/admin/seed.test.js +67 -2
  106. package/dist/commands/admin/seed.test.js.map +1 -1
  107. package/dist/commands/admin/seedRegistryEntries.generated.d.ts +14 -0
  108. package/dist/commands/admin/seedRegistryEntries.generated.d.ts.map +1 -0
  109. package/dist/commands/admin/seedRegistryEntries.generated.js +117 -0
  110. package/dist/commands/admin/seedRegistryEntries.generated.js.map +1 -0
  111. package/dist/commands/admin/seedRegistryEntries.test.d.ts +11 -0
  112. package/dist/commands/admin/seedRegistryEntries.test.d.ts.map +1 -0
  113. package/dist/commands/admin/seedRegistryEntries.test.js +67 -0
  114. package/dist/commands/admin/seedRegistryEntries.test.js.map +1 -0
  115. package/dist/commands/audit.d.ts.map +1 -1
  116. package/dist/commands/audit.js +30 -3
  117. package/dist/commands/audit.js.map +1 -1
  118. package/dist/commands/authority-domains.d.ts +7 -1
  119. package/dist/commands/authority-domains.d.ts.map +1 -1
  120. package/dist/commands/authority-domains.js +17 -3
  121. package/dist/commands/authority-domains.js.map +1 -1
  122. package/dist/commands/capture.d.ts.map +1 -1
  123. package/dist/commands/capture.js +3 -2
  124. package/dist/commands/capture.js.map +1 -1
  125. package/dist/commands/codex-prep.d.ts +1 -0
  126. package/dist/commands/codex-prep.d.ts.map +1 -1
  127. package/dist/commands/codex-prep.js +10 -7
  128. package/dist/commands/codex-prep.js.map +1 -1
  129. package/dist/commands/connect-config.test.d.ts +2 -0
  130. package/dist/commands/connect-config.test.d.ts.map +1 -0
  131. package/dist/commands/connect-config.test.js +44 -0
  132. package/dist/commands/connect-config.test.js.map +1 -0
  133. package/dist/commands/connect-context.d.ts +45 -0
  134. package/dist/commands/connect-context.d.ts.map +1 -0
  135. package/dist/commands/connect-context.js +64 -0
  136. package/dist/commands/connect-context.js.map +1 -0
  137. package/dist/commands/connect-context.test.d.ts +2 -0
  138. package/dist/commands/connect-context.test.d.ts.map +1 -0
  139. package/dist/commands/connect-context.test.js +110 -0
  140. package/dist/commands/connect-context.test.js.map +1 -0
  141. package/dist/commands/connect-handoff.d.ts +51 -0
  142. package/dist/commands/connect-handoff.d.ts.map +1 -0
  143. package/dist/commands/connect-handoff.js +70 -0
  144. package/dist/commands/connect-handoff.js.map +1 -0
  145. package/dist/commands/connect-integration.test.js +13 -12
  146. package/dist/commands/connect-integration.test.js.map +1 -1
  147. package/dist/commands/connect-screens.d.ts +6 -4
  148. package/dist/commands/connect-screens.d.ts.map +1 -1
  149. package/dist/commands/connect-screens.js +30 -19
  150. package/dist/commands/connect-screens.js.map +1 -1
  151. package/dist/commands/connect.d.ts +19 -6
  152. package/dist/commands/connect.d.ts.map +1 -1
  153. package/dist/commands/connect.js +31 -56
  154. package/dist/commands/connect.js.map +1 -1
  155. package/dist/commands/doctor.d.ts.map +1 -1
  156. package/dist/commands/doctor.js +68 -3
  157. package/dist/commands/doctor.js.map +1 -1
  158. package/dist/commands/doctor.test.js +150 -0
  159. package/dist/commands/doctor.test.js.map +1 -1
  160. package/dist/commands/handshake.d.ts +194 -2
  161. package/dist/commands/handshake.d.ts.map +1 -1
  162. package/dist/commands/handshake.js +1537 -46
  163. package/dist/commands/handshake.js.map +1 -1
  164. package/dist/commands/method.d.ts.map +1 -1
  165. package/dist/commands/method.js +3 -0
  166. package/dist/commands/method.js.map +1 -1
  167. package/dist/commands/orient.d.ts +63 -2
  168. package/dist/commands/orient.d.ts.map +1 -1
  169. package/dist/commands/orient.js +106 -4
  170. package/dist/commands/orient.js.map +1 -1
  171. package/dist/commands/profile.d.ts +1 -14
  172. package/dist/commands/profile.d.ts.map +1 -1
  173. package/dist/commands/profile.js +89 -72
  174. package/dist/commands/profile.js.map +1 -1
  175. package/dist/commands/session.d.ts.map +1 -1
  176. package/dist/commands/session.js +50 -13
  177. package/dist/commands/session.js.map +1 -1
  178. package/dist/commands/setup-audit.d.ts +59 -0
  179. package/dist/commands/setup-audit.d.ts.map +1 -0
  180. package/dist/commands/setup-audit.js +250 -0
  181. package/dist/commands/setup-audit.js.map +1 -0
  182. package/dist/commands/setup-detect-surfaces.d.ts +38 -0
  183. package/dist/commands/setup-detect-surfaces.d.ts.map +1 -0
  184. package/dist/commands/setup-detect-surfaces.js +76 -0
  185. package/dist/commands/setup-detect-surfaces.js.map +1 -0
  186. package/dist/commands/setup-ingest.d.ts.map +1 -1
  187. package/dist/commands/setup-ingest.js +4 -2
  188. package/dist/commands/setup-ingest.js.map +1 -1
  189. package/dist/commands/setup-state.d.ts +42 -0
  190. package/dist/commands/setup-state.d.ts.map +1 -0
  191. package/dist/commands/setup-state.js +93 -0
  192. package/dist/commands/setup-state.js.map +1 -0
  193. package/dist/commands/setup.d.ts +17 -9
  194. package/dist/commands/setup.d.ts.map +1 -1
  195. package/dist/commands/setup.js +52 -131
  196. package/dist/commands/setup.js.map +1 -1
  197. package/dist/commands/upgrade.d.ts +5 -0
  198. package/dist/commands/upgrade.d.ts.map +1 -0
  199. package/dist/commands/upgrade.js +110 -0
  200. package/dist/commands/upgrade.js.map +1 -0
  201. package/dist/commands/whoami.d.ts +12 -0
  202. package/dist/commands/whoami.d.ts.map +1 -0
  203. package/dist/commands/whoami.js +70 -0
  204. package/dist/commands/whoami.js.map +1 -0
  205. package/dist/commands/whoami.test.d.ts +2 -0
  206. package/dist/commands/whoami.test.d.ts.map +1 -0
  207. package/dist/commands/whoami.test.js +50 -0
  208. package/dist/commands/whoami.test.js.map +1 -0
  209. package/dist/commands/workspace.d.ts +23 -2
  210. package/dist/commands/workspace.d.ts.map +1 -1
  211. package/dist/commands/workspace.js +2 -2
  212. package/dist/commands/workspace.js.map +1 -1
  213. package/dist/formatters/__tests__/orient-provenance.test.d.ts +7 -0
  214. package/dist/formatters/__tests__/orient-provenance.test.d.ts.map +1 -0
  215. package/dist/formatters/__tests__/orient-provenance.test.js +454 -0
  216. package/dist/formatters/__tests__/orient-provenance.test.js.map +1 -0
  217. package/dist/formatters/audit.d.ts +6 -0
  218. package/dist/formatters/audit.d.ts.map +1 -1
  219. package/dist/formatters/audit.js.map +1 -1
  220. package/dist/formatters/entry.d.ts +21 -0
  221. package/dist/formatters/entry.d.ts.map +1 -1
  222. package/dist/formatters/entry.js +46 -5
  223. package/dist/formatters/entry.js.map +1 -1
  224. package/dist/formatters/handshake.d.ts +19 -3
  225. package/dist/formatters/handshake.d.ts.map +1 -1
  226. package/dist/formatters/handshake.js +48 -13
  227. package/dist/formatters/handshake.js.map +1 -1
  228. package/dist/formatters/orient.d.ts +79 -4
  229. package/dist/formatters/orient.d.ts.map +1 -1
  230. package/dist/formatters/orient.js +119 -18
  231. package/dist/formatters/orient.js.map +1 -1
  232. package/dist/generators/context-md.js +6 -6
  233. package/dist/generators/context-md.js.map +1 -1
  234. package/dist/generators/manifest.d.ts +76 -0
  235. package/dist/generators/manifest.d.ts.map +1 -1
  236. package/dist/generators/manifest.js +125 -14
  237. package/dist/generators/manifest.js.map +1 -1
  238. package/dist/generators/portable-knowledge.d.ts +6 -12
  239. package/dist/generators/portable-knowledge.d.ts.map +1 -1
  240. package/dist/generators/portable-knowledge.js +2 -19
  241. package/dist/generators/portable-knowledge.js.map +1 -1
  242. package/dist/generators/region-projections.d.ts +18 -0
  243. package/dist/generators/region-projections.d.ts.map +1 -0
  244. package/dist/generators/region-projections.js +49 -0
  245. package/dist/generators/region-projections.js.map +1 -0
  246. package/dist/generators/region-projections.test.d.ts +2 -0
  247. package/dist/generators/region-projections.test.d.ts.map +1 -0
  248. package/dist/generators/region-projections.test.js +63 -0
  249. package/dist/generators/region-projections.test.js.map +1 -0
  250. package/dist/generators/region.d.ts +24 -0
  251. package/dist/generators/region.d.ts.map +1 -0
  252. package/dist/generators/region.js +87 -0
  253. package/dist/generators/region.js.map +1 -0
  254. package/dist/generators/region.test.d.ts +2 -0
  255. package/dist/generators/region.test.d.ts.map +1 -0
  256. package/dist/generators/region.test.js +126 -0
  257. package/dist/generators/region.test.js.map +1 -0
  258. package/dist/generators/surface-profiles.d.ts +1 -2
  259. package/dist/generators/surface-profiles.d.ts.map +1 -1
  260. package/dist/generators/surface-profiles.js.map +1 -1
  261. package/dist/index.js +134 -26
  262. package/dist/index.js.map +1 -1
  263. package/dist/lib/activation.d.ts.map +1 -1
  264. package/dist/lib/activation.js +3 -3
  265. package/dist/lib/activation.js.map +1 -1
  266. package/dist/lib/activation.test.js +3 -3
  267. package/dist/lib/activation.test.js.map +1 -1
  268. package/dist/lib/canonicalRefs.d.ts +72 -0
  269. package/dist/lib/canonicalRefs.d.ts.map +1 -1
  270. package/dist/lib/canonicalRefs.js +67 -0
  271. package/dist/lib/canonicalRefs.js.map +1 -1
  272. package/dist/lib/client.d.ts.map +1 -1
  273. package/dist/lib/client.js +13 -3
  274. package/dist/lib/client.js.map +1 -1
  275. package/dist/lib/config.d.ts +70 -4
  276. package/dist/lib/config.d.ts.map +1 -1
  277. package/dist/lib/config.js +151 -11
  278. package/dist/lib/config.js.map +1 -1
  279. package/dist/lib/constants.d.ts +2 -0
  280. package/dist/lib/constants.d.ts.map +1 -1
  281. package/dist/lib/constants.js +2 -0
  282. package/dist/lib/constants.js.map +1 -1
  283. package/dist/lib/errors.d.ts +1 -0
  284. package/dist/lib/errors.d.ts.map +1 -1
  285. package/dist/lib/errors.js +1 -0
  286. package/dist/lib/errors.js.map +1 -1
  287. package/dist/lib/normalizeMaterializedFilename.d.ts +28 -0
  288. package/dist/lib/normalizeMaterializedFilename.d.ts.map +1 -0
  289. package/dist/lib/normalizeMaterializedFilename.js +56 -0
  290. package/dist/lib/normalizeMaterializedFilename.js.map +1 -0
  291. package/dist/lib/normalizeMaterializedFilename.test.d.ts +16 -0
  292. package/dist/lib/normalizeMaterializedFilename.test.d.ts.map +1 -0
  293. package/dist/lib/normalizeMaterializedFilename.test.js +90 -0
  294. package/dist/lib/normalizeMaterializedFilename.test.js.map +1 -0
  295. package/dist/lib/notice-marker.d.ts +3 -0
  296. package/dist/lib/notice-marker.d.ts.map +1 -0
  297. package/dist/lib/notice-marker.js +53 -0
  298. package/dist/lib/notice-marker.js.map +1 -0
  299. package/dist/lib/onboarding-path-b.d.ts.map +1 -1
  300. package/dist/lib/onboarding-path-b.js +0 -1
  301. package/dist/lib/onboarding-path-b.js.map +1 -1
  302. package/dist/lib/onboarding-shared.d.ts +0 -1
  303. package/dist/lib/onboarding-shared.d.ts.map +1 -1
  304. package/dist/lib/onboarding-shared.js +1 -17
  305. package/dist/lib/onboarding-shared.js.map +1 -1
  306. package/dist/lib/profiles.d.ts +3 -1
  307. package/dist/lib/profiles.d.ts.map +1 -1
  308. package/dist/lib/profiles.js +9 -6
  309. package/dist/lib/profiles.js.map +1 -1
  310. package/dist/lib/session.d.ts +10 -0
  311. package/dist/lib/session.d.ts.map +1 -1
  312. package/dist/lib/session.js +14 -0
  313. package/dist/lib/session.js.map +1 -1
  314. package/dist/lib/update-check.d.ts +42 -7
  315. package/dist/lib/update-check.d.ts.map +1 -1
  316. package/dist/lib/update-check.js +213 -62
  317. package/dist/lib/update-check.js.map +1 -1
  318. package/dist/lib/upgrade-runner.d.ts +22 -0
  319. package/dist/lib/upgrade-runner.d.ts.map +1 -0
  320. package/dist/lib/upgrade-runner.js +110 -0
  321. package/dist/lib/upgrade-runner.js.map +1 -0
  322. package/dist/lib/workspaceVocabCache.d.ts +60 -0
  323. package/dist/lib/workspaceVocabCache.d.ts.map +1 -0
  324. package/dist/lib/workspaceVocabCache.js +98 -0
  325. package/dist/lib/workspaceVocabCache.js.map +1 -0
  326. package/dist/setup/__tests__/coach-traces.test.d.ts +2 -0
  327. package/dist/setup/__tests__/coach-traces.test.d.ts.map +1 -0
  328. package/dist/setup/__tests__/coach-traces.test.js +189 -0
  329. package/dist/setup/__tests__/coach-traces.test.js.map +1 -0
  330. package/dist/setup/__tests__/setup-commands.test.d.ts +2 -0
  331. package/dist/setup/__tests__/setup-commands.test.d.ts.map +1 -0
  332. package/dist/setup/__tests__/setup-commands.test.js +177 -0
  333. package/dist/setup/__tests__/setup-commands.test.js.map +1 -0
  334. package/dist/setup/__tests__/state-machine.test.d.ts +2 -0
  335. package/dist/setup/__tests__/state-machine.test.d.ts.map +1 -0
  336. package/dist/setup/__tests__/state-machine.test.js +341 -0
  337. package/dist/setup/__tests__/state-machine.test.js.map +1 -0
  338. package/dist/setup/detect-surfaces.d.ts +21 -0
  339. package/dist/setup/detect-surfaces.d.ts.map +1 -0
  340. package/dist/setup/detect-surfaces.js +39 -0
  341. package/dist/setup/detect-surfaces.js.map +1 -0
  342. package/dist/setup/manifest-writer.d.ts +17 -0
  343. package/dist/setup/manifest-writer.d.ts.map +1 -0
  344. package/dist/setup/manifest-writer.js +153 -0
  345. package/dist/setup/manifest-writer.js.map +1 -0
  346. package/dist/setup/perimeter.d.ts +72 -0
  347. package/dist/setup/perimeter.d.ts.map +1 -0
  348. package/dist/setup/perimeter.js +128 -0
  349. package/dist/setup/perimeter.js.map +1 -0
  350. package/dist/setup/state-machine.d.ts +67 -0
  351. package/dist/setup/state-machine.d.ts.map +1 -0
  352. package/dist/setup/state-machine.js +124 -0
  353. package/dist/setup/state-machine.js.map +1 -0
  354. package/dist/surfaces/__tests__/adapter.test.d.ts +2 -0
  355. package/dist/surfaces/__tests__/adapter.test.d.ts.map +1 -0
  356. package/dist/surfaces/__tests__/adapter.test.js +90 -0
  357. package/dist/surfaces/__tests__/adapter.test.js.map +1 -0
  358. package/dist/surfaces/__tests__/pb-setup-passthrough.test.d.ts +2 -0
  359. package/dist/surfaces/__tests__/pb-setup-passthrough.test.d.ts.map +1 -0
  360. package/dist/surfaces/__tests__/pb-setup-passthrough.test.js +132 -0
  361. package/dist/surfaces/__tests__/pb-setup-passthrough.test.js.map +1 -0
  362. package/dist/surfaces/__tests__/telemetry.test.d.ts +2 -0
  363. package/dist/surfaces/__tests__/telemetry.test.d.ts.map +1 -0
  364. package/dist/surfaces/__tests__/telemetry.test.js +55 -0
  365. package/dist/surfaces/__tests__/telemetry.test.js.map +1 -0
  366. package/dist/surfaces/adapter.d.ts +70 -0
  367. package/dist/surfaces/adapter.d.ts.map +1 -0
  368. package/dist/surfaces/adapter.js +2 -0
  369. package/dist/surfaces/adapter.js.map +1 -0
  370. package/dist/surfaces/adapters/claude.d.ts +3 -0
  371. package/dist/surfaces/adapters/claude.d.ts.map +1 -0
  372. package/dist/surfaces/adapters/claude.js +67 -0
  373. package/dist/surfaces/adapters/claude.js.map +1 -0
  374. package/dist/surfaces/adapters/codex.d.ts +3 -0
  375. package/dist/surfaces/adapters/codex.d.ts.map +1 -0
  376. package/dist/surfaces/adapters/codex.js +61 -0
  377. package/dist/surfaces/adapters/codex.js.map +1 -0
  378. package/dist/surfaces/adapters/copilot.d.ts +3 -0
  379. package/dist/surfaces/adapters/copilot.d.ts.map +1 -0
  380. package/dist/surfaces/adapters/copilot.js +59 -0
  381. package/dist/surfaces/adapters/copilot.js.map +1 -0
  382. package/dist/surfaces/adapters/cursor.d.ts +3 -0
  383. package/dist/surfaces/adapters/cursor.d.ts.map +1 -0
  384. package/dist/surfaces/adapters/cursor.js +78 -0
  385. package/dist/surfaces/adapters/cursor.js.map +1 -0
  386. package/dist/surfaces/registry.d.ts +58 -2
  387. package/dist/surfaces/registry.d.ts.map +1 -1
  388. package/dist/surfaces/registry.js +82 -7
  389. package/dist/surfaces/registry.js.map +1 -1
  390. package/dist/surfaces/telemetry.d.ts +17 -0
  391. package/dist/surfaces/telemetry.d.ts.map +1 -0
  392. package/dist/surfaces/telemetry.js +31 -0
  393. package/dist/surfaces/telemetry.js.map +1 -0
  394. package/package.json +3 -1
  395. package/dist/__tests__/setup.test.d.ts +0 -2
  396. package/dist/__tests__/setup.test.d.ts.map +0 -1
  397. package/dist/__tests__/setup.test.js +0 -141
  398. package/dist/__tests__/setup.test.js.map +0 -1
  399. package/dist/generators/__tests__/surface-profiles.test.d.ts +0 -2
  400. package/dist/generators/__tests__/surface-profiles.test.d.ts.map +0 -1
  401. package/dist/generators/__tests__/surface-profiles.test.js +0 -89
  402. package/dist/generators/__tests__/surface-profiles.test.js.map +0 -1
  403. package/dist/lib/onboarding-phases.d.ts +0 -9
  404. package/dist/lib/onboarding-phases.d.ts.map +0 -1
  405. package/dist/lib/onboarding-phases.js +0 -120
  406. package/dist/lib/onboarding-phases.js.map +0 -1
@@ -5,55 +5,172 @@
5
5
  * a one-line notification when a newer version is available.
6
6
  *
7
7
  * Rules:
8
- * - Non-blocking: check fires async, never delays the command
9
- * - 24h cache at ~/.config/productbrain/update-check.json
8
+ * - Synchronous: reads cache only, never awaits network, never delays the command
9
+ * - Multi-source cache at ~/.config/productbrain/update-check.json:
10
+ * server header is authoritative within 48h; npm is an isNewer-gated fallback
10
11
  * - Silent on any error (network down, registry unreachable, etc.)
11
- * - JSON mode: suppress notification entirely
12
+ * - JSON/agent mode: notice goes to stderr (stdout stays bare JSON), throttled once per session
12
13
  * - Does NOT use undici/fetch directly; uses Node.js built-in https
13
14
  */
14
- import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'node:fs';
15
+ import { readFileSync, writeFileSync, mkdirSync, existsSync, unlinkSync } from 'node:fs';
15
16
  import { request } from 'node:https';
16
17
  import { homedir } from 'node:os';
17
- import { join } from 'node:path';
18
+ import { dirname, join } from 'node:path';
19
+ import { fileURLToPath } from 'node:url';
18
20
  import { isJsonMode } from './runner.js';
19
21
  import { dim, yellow } from './style.js';
22
+ import { claimNotice } from './notice-marker.js';
23
+ import { trackEvent } from './telemetry.js';
20
24
  const PKG_NAME = '@productbrain/cli';
21
- const CACHE_TTL_MS = 24 * 60 * 60 * 1000; // 24 hours
25
+ const SERVER_FRESHNESS_MS = 48 * 60 * 60 * 1000;
26
+ // npm fallback freshness — mirrors the single-source 24h cache TTL that existed before the
27
+ // multi-source split, so a cached npm value is revalidated daily instead of served forever.
28
+ const NPM_FRESHNESS_MS = 24 * 60 * 60 * 1000;
22
29
  const CONFIG_DIR = join(homedir(), '.config', 'productbrain');
23
30
  const CACHE_PATH = join(CONFIG_DIR, 'update-check.json');
24
- /** Read the cached latest version if it is still fresh (< 24h). */
25
- function readCache() {
31
+ const UPGRADE_PENDING_PATH = join(CONFIG_DIR, 'upgrade-pending');
32
+ const NPM_BETA_URL = `https://registry.npmjs.org/${PKG_NAME}/beta`;
33
+ const CHANNEL_RANK = { alpha: -3, beta: -2, rc: -1 };
34
+ let pendingUpgradeClearedThisProcess = false;
35
+ let versionSkewReportedThisProcess = false;
36
+ let cachedRunningCliVersion;
37
+ /** Read the running CLI version from the package's package.json (cached after first read). */
38
+ function readRunningCliVersion() {
39
+ if (cachedRunningCliVersion !== undefined)
40
+ return cachedRunningCliVersion;
41
+ try {
42
+ const here = dirname(fileURLToPath(import.meta.url));
43
+ const pkgPath = join(here, '..', '..', 'package.json');
44
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'));
45
+ cachedRunningCliVersion = pkg.version ?? null;
46
+ }
47
+ catch {
48
+ cachedRunningCliVersion = null;
49
+ }
50
+ return cachedRunningCliVersion;
51
+ }
52
+ /**
53
+ * Emit `cli.version_skew.detected` at most once per process when a strictly newer
54
+ * version has been observed. Exported so callers (e.g. doctor's freshness check)
55
+ * can fire it from their own discovery path while sharing the dedup guard.
56
+ */
57
+ export function reportVersionSkewIfNew(latest, current) {
58
+ if (versionSkewReportedThisProcess)
59
+ return;
60
+ if (!latest)
61
+ return;
62
+ const running = current ?? readRunningCliVersion();
63
+ if (!running)
64
+ return;
65
+ if (!isNewer(running, latest))
66
+ return;
67
+ versionSkewReportedThisProcess = true;
68
+ trackEvent('cli.version_skew.detected', { current: running, latest });
69
+ }
70
+ function readCacheFile() {
26
71
  try {
27
72
  if (!existsSync(CACHE_PATH))
28
- return null;
29
- const raw = readFileSync(CACHE_PATH, 'utf8');
30
- const entry = JSON.parse(raw);
31
- if (Date.now() - entry.checkedAt < CACHE_TTL_MS) {
32
- return entry.latestVersion;
33
- }
73
+ return {};
74
+ return JSON.parse(readFileSync(CACHE_PATH, 'utf8'));
34
75
  }
35
76
  catch {
36
- // Corrupt or missing cache — treat as cold
77
+ return {};
37
78
  }
38
- return null;
39
79
  }
40
- /** Write a cache entry with the resolved latest version. */
41
- function writeCache(latestVersion) {
80
+ function writeCacheFile(cache) {
42
81
  try {
43
82
  mkdirSync(CONFIG_DIR, { recursive: true });
44
- const entry = { checkedAt: Date.now(), latestVersion };
45
- writeFileSync(CACHE_PATH, JSON.stringify(entry), 'utf8');
83
+ writeFileSync(CACHE_PATH, JSON.stringify(cache), 'utf8');
84
+ }
85
+ catch { /* non-fatal */ }
86
+ }
87
+ /** Return the newest (highest by semver) of the supplied values, ignoring null/undefined. */
88
+ function newestOf(...values) {
89
+ let best = null;
90
+ for (const v of values) {
91
+ if (!v)
92
+ continue;
93
+ if (best === null || isNewer(best, v))
94
+ best = v;
95
+ }
96
+ return best;
97
+ }
98
+ /**
99
+ * Hot-path resolution from cache only — NEVER fetches. The **newest** in-window source wins: the
100
+ * server header is preferred only when it is actually the highest version, so a server that lags
101
+ * npm (its committed `cliVersion.ts` value trails the run-numbered npm publish — see TEN-2199) can
102
+ * no longer mask a newer npm latest. Returns the best available value even when every source is
103
+ * stale ("better than nothing"), because the hot path (checkForUpdate) cannot block on a refresh.
104
+ */
105
+ export function resolveCachedLatest() {
106
+ if (isVersionCheckDisabled())
107
+ return null;
108
+ const cache = readCacheFile();
109
+ const now = Date.now();
110
+ const serverFresh = cache.server && now - cache.server.recordedAt < SERVER_FRESHNESS_MS ? cache.server.value : null;
111
+ // Hot path: an npm value is usable even when stale ("better than nothing"); the live resolver
112
+ // (resolveLatestVersion) is the one that enforces the npm freshness window and re-fetches.
113
+ const best = newestOf(serverFresh, cache.npm?.value);
114
+ if (best !== null)
115
+ return best;
116
+ return cache.server?.value ?? null; // stale server (>48h) as last resort — better than nothing
117
+ }
118
+ /** The in-window value from each source (null when the source is absent or past its freshness window). */
119
+ function readFreshSources() {
120
+ const cache = readCacheFile();
121
+ const now = Date.now();
122
+ return {
123
+ server: cache.server && now - cache.server.recordedAt < SERVER_FRESHNESS_MS ? cache.server.value : null,
124
+ npm: cache.npm && now - cache.npm.recordedAt < NPM_FRESHNESS_MS ? cache.npm.value : null,
125
+ };
126
+ }
127
+ /** @deprecated use resolveCachedLatest. Kept for callers migrating. */
128
+ export function readCachedLatestVersion() {
129
+ return resolveCachedLatest();
130
+ }
131
+ function isVersionCheckDisabled() {
132
+ return process.env.PB_NO_VERSION_CHECK === '1';
133
+ }
134
+ /** Clear the post-upgrade sentinel and stale update cache on next CLI startup. */
135
+ export function clearPendingUpgradeCache() {
136
+ if (pendingUpgradeClearedThisProcess)
137
+ return;
138
+ pendingUpgradeClearedThisProcess = true;
139
+ try {
140
+ if (!existsSync(UPGRADE_PENDING_PATH))
141
+ return;
142
+ try {
143
+ unlinkSync(UPGRADE_PENDING_PATH);
144
+ }
145
+ catch { /* non-fatal */ }
146
+ try {
147
+ if (existsSync(CACHE_PATH))
148
+ unlinkSync(CACHE_PATH);
149
+ }
150
+ catch { /* non-fatal */ }
46
151
  }
47
152
  catch {
48
- // Cache write failure is non-fatal
153
+ // Sentinel cleanup must never block CLI startup.
49
154
  }
50
155
  }
156
+ /** Written after a successful self-upgrade so the next CLI process drops stale cache. */
157
+ export function writeUpgradePendingSentinel(installedVersion) {
158
+ try {
159
+ mkdirSync(CONFIG_DIR, { recursive: true });
160
+ writeFileSync(UPGRADE_PENDING_PATH, JSON.stringify({ upgradedAt: Date.now(), version: installedVersion ?? null /* version: concrete installed version, recorded for post-upgrade diagnostics/future "upgraded to X" notice */ }), 'utf8');
161
+ }
162
+ catch { /* non-fatal — update checks recover via cache TTL */ }
163
+ }
164
+ /** Test-only: reset module-level per-process guards so each test starts clean. */
165
+ export function _resetProcessGuardsForTest() {
166
+ pendingUpgradeClearedThisProcess = false;
167
+ versionSkewReportedThisProcess = false;
168
+ cachedRunningCliVersion = undefined;
169
+ }
51
170
  /** Fetch latest version from npm registry. Returns null on any error. */
52
171
  function fetchLatestVersion() {
53
172
  return new Promise((resolve) => {
54
- // Use beta dist-tag package publishes with --tag beta; /latest is pinned to beta.1
55
- const url = `https://registry.npmjs.org/${PKG_NAME}/beta`;
56
- const req = request(url, { method: 'GET', headers: { 'Accept': 'application/json' } }, (res) => {
173
+ const req = request(NPM_BETA_URL, { method: 'GET', headers: { 'Accept': 'application/json' } }, (res) => {
57
174
  let body = '';
58
175
  res.on('data', (chunk) => { body += chunk.toString(); });
59
176
  res.on('end', () => {
@@ -79,21 +196,19 @@ function fetchLatestVersion() {
79
196
  * Compare two semver strings. Returns true if `b` is strictly newer than `a`.
80
197
  * Handles standard x.y.z and x.y.z-beta.N formats (numeric comparison per part).
81
198
  */
82
- function isNewer(current, latest) {
199
+ export function isNewer(current, latest) {
83
200
  if (current === latest)
84
201
  return false;
85
202
  const parseVersion = (v) => {
86
- // Strip leading 'v'
87
203
  const clean = v.replace(/^v/, '');
88
- // Split on '-' to handle pre-release like '0.1.0-beta.70'
89
204
  const [release, pre] = clean.split('-');
90
205
  const parts = (release ?? '').split('.').map((n) => parseInt(n, 10) || 0);
91
- // Append pre-release numeric tag as a negative offset so pre < release
92
- if (pre !== undefined) {
93
- const preNum = parseInt(pre.replace(/\D+/, ''), 10) || 0;
94
- parts.push(-1e6 + preNum);
95
- }
96
- return parts;
206
+ if (pre === undefined)
207
+ return [...parts, 0, 0];
208
+ const match = pre.match(/^([a-zA-Z]+)\.?(\d+)?/);
209
+ const channel = match?.[1]?.toLowerCase() ?? '';
210
+ const preNum = match?.[2] ? parseInt(match[2], 10) : 0;
211
+ return [...parts, CHANNEL_RANK[channel] ?? -4, Number.isFinite(preNum) ? preNum : 0];
97
212
  };
98
213
  const a = parseVersion(current);
99
214
  const b = parseVersion(latest);
@@ -108,38 +223,74 @@ function isNewer(current, latest) {
108
223
  }
109
224
  return false;
110
225
  }
226
+ /** Record the server-supplied latest version (authoritative source). */
227
+ export function recordServerLatest(latestVersion) {
228
+ if (isVersionCheckDisabled() || !latestVersion)
229
+ return;
230
+ const cache = readCacheFile();
231
+ cache.server = { value: latestVersion, recordedAt: Date.now() };
232
+ writeCacheFile(cache);
233
+ reportVersionSkewIfNew(latestVersion);
234
+ }
235
+ /** Record an npm-resolved latest version — gated so it never stores <= installed. */
236
+ export function recordNpmLatest(latestVersion, currentVersion) {
237
+ if (isVersionCheckDisabled() || !latestVersion)
238
+ return;
239
+ if (!isNewer(currentVersion, latestVersion))
240
+ return;
241
+ const cache = readCacheFile();
242
+ cache.npm = { value: latestVersion, recordedAt: Date.now() };
243
+ writeCacheFile(cache);
244
+ }
245
+ /** LIVE resolve — fetches npm and records it (gated). Call ONLY from doctor/upgrade, never the hot path. */
246
+ export async function resolveLatestVersion(currentVersion) {
247
+ if (isVersionCheckDisabled())
248
+ return null;
249
+ const fresh = readFreshSources();
250
+ // Skip the network ONLY when npm itself is within its freshness window. A fresh server header
251
+ // alone cannot prove npm isn't newer (the hot path never populates npm, and the server's committed
252
+ // cliVersion.ts value structurally trails the run-numbered npm publish — TEN-2199), so a
253
+ // server-only cache MUST trigger a live npm fetch or the lagging server would mask the true latest.
254
+ if (fresh.npm !== null)
255
+ return newestOf(fresh.server, fresh.npm);
256
+ const fetched = await fetchLatestVersion();
257
+ if (fetched !== null) {
258
+ // The live registry is ground truth. Record only when strictly newer (the cache never stores a
259
+ // value <= installed), but compare against any fresh server header so a genuinely-newer server
260
+ // still wins. A successful fetch REPLACES a stale npm entry rather than falling back to it.
261
+ if (currentVersion)
262
+ recordNpmLatest(fetched, currentVersion);
263
+ return newestOf(fresh.server, fetched);
264
+ }
265
+ // Fetch failed (offline / registry unreachable): fall back to any cached value — better than
266
+ // nothing, and the documented `pb doctor` offline backstop.
267
+ return resolveCachedLatest();
268
+ }
111
269
  /**
112
- * Prints one line to stderr if a newer version is available.
113
- * The check is always non-blocking: it fires async and is not awaited by the caller.
114
- *
115
- * Call once per human-initiated command, just before the command action runs.
270
+ * Synchronously prints at most one update line. Reads cache only never fetches.
271
+ * Reaches agents (JSON mode) on stderr; stdout stays bare JSON. Throttled once per
272
+ * session (agent) / once per UTC day (human TTY) via O_EXCL markers. Never throws.
273
+ * NOTE: a session with no authenticated server call writes no cache and fires no
274
+ * notice; `pb doctor` live-resolves as the backstop. DEC-2.
116
275
  */
117
276
  export function checkForUpdate(currentVersion) {
118
- // Suppress in JSON/agent mode
119
- if (isJsonMode())
277
+ clearPendingUpgradeCache();
278
+ if (isVersionCheckDisabled())
120
279
  return;
121
- // Fire-and-forget: result is printed after command output via process.nextTick trick
122
- void (async () => {
123
- try {
124
- // Try cache first
125
- let latest = readCache();
126
- if (latest === null) {
127
- latest = await fetchLatestVersion();
128
- if (latest)
129
- writeCache(latest);
130
- }
131
- if (!latest)
132
- return;
133
- if (!isNewer(currentVersion, latest))
134
- return;
135
- // Print after current command output (nextTick ensures we don't interleave)
136
- process.nextTick(() => {
137
- process.stderr.write(`\n${yellow('Update available:')} ${dim(currentVersion)} → ${latest} ${dim('run')} pb upgrade ${dim('to update')}\n`);
138
- });
139
- }
140
- catch {
141
- // Never surface update-check errors to the user
142
- }
143
- })();
280
+ try {
281
+ const latest = resolveCachedLatest();
282
+ if (!latest || !isNewer(currentVersion, latest))
283
+ return;
284
+ reportVersionSkewIfNew(latest, currentVersion);
285
+ const channel = isJsonMode() ? 'agent' : 'human';
286
+ if (!claimNotice(channel))
287
+ return;
288
+ const line = `${yellow('pb:')} update available — you're on ${dim(currentVersion)}, latest is ${latest}. ` +
289
+ `Recommended: tell your operator and run ${dim('pb upgrade')}.\n`;
290
+ process.stderr.write('\n' + line);
291
+ }
292
+ catch {
293
+ // Advisory notice — never block or crash a command.
294
+ }
144
295
  }
145
296
  //# sourceMappingURL=update-check.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"update-check.js","sourceRoot":"","sources":["../../src/lib/update-check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update-check.js","sourceRoot":"","sources":["../../src/lib/update-check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ export type InstallChannel = 'npm' | 'pnpm' | 'yarn' | 'bun' | 'brew' | 'unknown';
2
+ export type UpgradeCommand = {
3
+ channel: InstallChannel;
4
+ command: string;
5
+ args: string[];
6
+ display: string;
7
+ };
8
+ export type UpgradeResult = {
9
+ channel: InstallChannel;
10
+ command: string;
11
+ exitCode: number;
12
+ output: string[];
13
+ };
14
+ export type SpawnUpgradeOptions = {
15
+ onOutput?: (line: string) => void;
16
+ env?: NodeJS.ProcessEnv;
17
+ version?: string;
18
+ };
19
+ export declare function detectInstallChannel(execPath?: string, env?: NodeJS.ProcessEnv): InstallChannel;
20
+ export declare function buildUpgradeCommand(channel: InstallChannel, version?: string): UpgradeCommand;
21
+ export declare function spawnUpgrade(channel?: InstallChannel, options?: SpawnUpgradeOptions): Promise<UpgradeResult>;
22
+ //# sourceMappingURL=upgrade-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade-runner.d.ts","sourceRoot":"","sources":["../../src/lib/upgrade-runner.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AAElF,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAYF,wBAAgB,oBAAoB,CAAC,QAAQ,SAAmB,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,cAAc,CActH;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,cAAc,CAe7F;AAaD,wBAAgB,YAAY,CAC1B,OAAO,GAAE,cAAuC,EAChD,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,aAAa,CAAC,CAiDxB"}
@@ -0,0 +1,110 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { basename, dirname } from 'node:path';
3
+ import { CLIError, ErrorCode } from './errors.js';
4
+ import { UPGRADE_COMMAND } from './constants.js';
5
+ import { trackEvent } from './telemetry.js';
6
+ import { writeUpgradePendingSentinel } from './update-check.js';
7
+ function pathSegments(path) {
8
+ const segments = [];
9
+ let current = path;
10
+ while (current && current !== dirname(current)) {
11
+ segments.push(basename(current).toLowerCase());
12
+ current = dirname(current);
13
+ }
14
+ return segments;
15
+ }
16
+ export function detectInstallChannel(execPath = process.execPath, env = process.env) {
17
+ const ua = env.npm_config_user_agent?.toLowerCase() ?? '';
18
+ if (ua.startsWith('pnpm'))
19
+ return 'pnpm';
20
+ if (ua.startsWith('yarn'))
21
+ return 'yarn';
22
+ if (ua.startsWith('bun'))
23
+ return 'bun';
24
+ if (ua.startsWith('npm'))
25
+ return 'npm';
26
+ const segments = pathSegments(execPath);
27
+ if (segments.some((s) => s.includes('pnpm')))
28
+ return 'pnpm';
29
+ if (segments.some((s) => s.includes('yarn')))
30
+ return 'yarn';
31
+ if (segments.some((s) => s.includes('bun')))
32
+ return 'bun';
33
+ if (segments.some((s) => s.includes('homebrew') || s === 'brew' || s === 'cellar'))
34
+ return 'brew';
35
+ if (segments.some((s) => s.includes('npm') || s === 'node_modules'))
36
+ return 'npm';
37
+ return 'unknown';
38
+ }
39
+ export function buildUpgradeCommand(channel, version) {
40
+ const spec = version ? `@productbrain/cli@${version}` : '@productbrain/cli@beta';
41
+ switch (channel) {
42
+ case 'pnpm':
43
+ return { channel, command: 'pnpm', args: ['add', '-g', spec], display: `pnpm add -g ${spec}` };
44
+ case 'yarn':
45
+ return { channel, command: 'yarn', args: ['global', 'add', spec], display: `yarn global add ${spec}` };
46
+ case 'bun':
47
+ return { channel, command: 'bun', args: ['add', '-g', spec], display: `bun add -g ${spec}` };
48
+ case 'brew':
49
+ return { channel, command: 'brew', args: ['upgrade', 'productbrain'], display: 'brew upgrade productbrain' };
50
+ case 'npm':
51
+ case 'unknown':
52
+ return { channel, command: 'npm', args: ['install', '-g', spec], display: version ? `npm install -g ${spec}` : UPGRADE_COMMAND };
53
+ }
54
+ }
55
+ function failureGuidance(message) {
56
+ const lower = message.toLowerCase();
57
+ if (lower.includes('eacces') || lower.includes('permission denied')) {
58
+ return 'Permission denied during global install. Use a Node version manager, fix the global npm prefix, or rerun the install command with the permissions your system requires.';
59
+ }
60
+ if (process.platform === 'win32' && (lower.includes('eperm') || lower.includes('busy') || lower.includes('locked'))) {
61
+ return 'Windows could not replace the active pb executable. Close terminals running pb, then rerun the upgrade command.';
62
+ }
63
+ return 'Run the displayed upgrade command manually, then retry pb doctor.';
64
+ }
65
+ export function spawnUpgrade(channel = detectInstallChannel(), options = {}) {
66
+ const spec = buildUpgradeCommand(channel, options.version);
67
+ const output = [];
68
+ trackEvent('cli.upgrade.initiated', { channel: spec.channel });
69
+ return new Promise((resolve, reject) => {
70
+ const child = spawn(spec.command, spec.args, {
71
+ env: options.env ?? process.env,
72
+ stdio: ['ignore', 'pipe', 'pipe'],
73
+ });
74
+ const emit = (chunk) => {
75
+ const text = chunk.toString();
76
+ for (const line of text.split(/\r?\n/).filter(Boolean)) {
77
+ output.push(line);
78
+ options.onOutput?.(line);
79
+ }
80
+ };
81
+ child.stdout?.on('data', emit);
82
+ child.stderr?.on('data', emit);
83
+ child.on('error', (err) => {
84
+ const message = err.message || `Failed to spawn ${spec.display}`;
85
+ trackEvent('cli.upgrade.failed', { channel: spec.channel, reason: err.code ?? 'spawn_error' });
86
+ reject(new CLIError(`Upgrade failed: ${message}`, {
87
+ code: ErrorCode.UPGRADE_FAILED,
88
+ category: 'internal',
89
+ guidance: failureGuidance(message),
90
+ }));
91
+ });
92
+ child.on('close', (code) => {
93
+ const exitCode = code ?? 1;
94
+ if (exitCode !== 0) {
95
+ const message = output.slice(-4).join('\n') || `${spec.display} exited with code ${exitCode}`;
96
+ trackEvent('cli.upgrade.failed', { channel: spec.channel, exitCode });
97
+ reject(new CLIError(`Upgrade failed: ${message}`, {
98
+ code: ErrorCode.UPGRADE_FAILED,
99
+ category: 'internal',
100
+ guidance: failureGuidance(message),
101
+ }));
102
+ return;
103
+ }
104
+ writeUpgradePendingSentinel(options.version);
105
+ trackEvent('cli.upgrade.succeeded', { channel: spec.channel });
106
+ resolve({ channel: spec.channel, command: spec.display, exitCode, output });
107
+ });
108
+ });
109
+ }
110
+ //# sourceMappingURL=upgrade-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade-runner.js","sourceRoot":"","sources":["../../src/lib/upgrade-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * 5-minute TTL cache for workspace vocabulary context (WP-436 S2).
3
+ *
4
+ * Purpose (R2 mitigation): the CLI resolves vocabulary labels on every invocation.
5
+ * Without a cache, each `pb orient` / `pb get` / `pb capture` would call
6
+ * `chain.getVocabulary` — adding a Convex round-trip overhead and risking
7
+ * handshake-time staleness. A 5-min TTL short-circuits repeat calls within
8
+ * a typical session while staying fresh enough that label changes land quickly.
9
+ *
10
+ * PAT-230: the cache holds WorkspaceVocabCtx (pure data, no Convex imports here).
11
+ * DEC-1021: only Axis 2 (collectionLabels) lives here; Axis 1 (displayNames) is untouched.
12
+ *
13
+ * S4 note: when Cortex UI builds its `vocabularyStore`, it should mirror this
14
+ * contract — a keyed map by workspaceId with an expiresAt field (Cortex has
15
+ * direct access to workspaceId; the CLI uses apiKey as a 1:1 surrogate, since
16
+ * the HTTP gateway server-side injects workspaceId from authResult per
17
+ * convex/http.ts:675).
18
+ */
19
+ import type { WorkspaceVocabCtx } from './canonicalRefs.js';
20
+ /**
21
+ * Get a cached WorkspaceVocabCtx by cacheKey, or null if expired/missing.
22
+ * Prints a staleness warning when the entry is older than STALE_WARN_MS.
23
+ */
24
+ export declare function getCachedVocabCtx(cacheKey: string): WorkspaceVocabCtx | null;
25
+ /**
26
+ * Store a WorkspaceVocabCtx under cacheKey with a 5-min TTL.
27
+ */
28
+ export declare function setCachedVocabCtx(cacheKey: string, ctx: WorkspaceVocabCtx): void;
29
+ /**
30
+ * Explicitly invalidate a cached vocab context by cacheKey.
31
+ * Call this when `updateCollectionLabels` mutation succeeds (e.g. after `pb handshake`).
32
+ */
33
+ export declare function invalidateVocabCtx(cacheKey: string): void;
34
+ /**
35
+ * Clear all cached entries (useful for testing or `pb handshake --refresh`).
36
+ */
37
+ export declare function clearVocabCache(): void;
38
+ /**
39
+ * Get the cached vocab context, or fetch it via the provided async fetcher on cache miss.
40
+ *
41
+ * Usage pattern at CLI command sites:
42
+ * ```ts
43
+ * const vocabCtx = await getOrFetchVocabCtx(config.apiKey, async () => {
44
+ * type VocabResult = { collectionLabels?: Record<string, unknown> };
45
+ * const vocab = await kernelCall<VocabResult>('chain.getVocabulary', {});
46
+ * return vocab?.collectionLabels
47
+ * ? { collectionLabels: vocab.collectionLabels as WorkspaceVocabCtx['collectionLabels'] }
48
+ * : null;
49
+ * });
50
+ * ```
51
+ *
52
+ * - `cacheKey`: use the API key as a surrogate for cacheKey (1:1 mapping at CLI layer).
53
+ * - `fetcher`: async function that resolves the vocab ctx; returns null on failure to signal
54
+ * "don't cache, fall back to resolver literal". Fetcher errors are swallowed — vocabulary
55
+ * labels are advisory (PAT-230 / fail-open principle).
56
+ *
57
+ * Returns WorkspaceVocabCtx on cache hit or successful fetch; undefined on error/null fetcher result.
58
+ */
59
+ export declare function getOrFetchVocabCtx(cacheKey: string, fetcher: () => Promise<WorkspaceVocabCtx | null>): Promise<WorkspaceVocabCtx | undefined>;
60
+ //# sourceMappingURL=workspaceVocabCache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspaceVocabCache.d.ts","sourceRoot":"","sources":["../../src/lib/workspaceVocabCache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAc5D;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAe5E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAEhF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAEzD;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAC/C,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAcxC"}