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

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 (422) 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__/notice-marker.test.d.ts +2 -0
  40. package/dist/__tests__/notice-marker.test.d.ts.map +1 -0
  41. package/dist/__tests__/notice-marker.test.js +41 -0
  42. package/dist/__tests__/notice-marker.test.js.map +1 -0
  43. package/dist/__tests__/onboarding-path-b.test.js +4 -4
  44. package/dist/__tests__/onboarding-path-b.test.js.map +1 -1
  45. package/dist/__tests__/orient.test.js +184 -7
  46. package/dist/__tests__/orient.test.js.map +1 -1
  47. package/dist/__tests__/perimeter.test.d.ts +2 -0
  48. package/dist/__tests__/perimeter.test.d.ts.map +1 -0
  49. package/dist/__tests__/perimeter.test.js +165 -0
  50. package/dist/__tests__/perimeter.test.js.map +1 -0
  51. package/dist/__tests__/personal-layer.test.d.ts +1 -2
  52. package/dist/__tests__/personal-layer.test.d.ts.map +1 -1
  53. package/dist/__tests__/personal-layer.test.js +12 -48
  54. package/dist/__tests__/personal-layer.test.js.map +1 -1
  55. package/dist/__tests__/profiles.test.js +122 -7
  56. package/dist/__tests__/profiles.test.js.map +1 -1
  57. package/dist/__tests__/promote.test.js +2 -2
  58. package/dist/__tests__/promote.test.js.map +1 -1
  59. package/dist/__tests__/session-state-machine.test.js +45 -1
  60. package/dist/__tests__/session-state-machine.test.js.map +1 -1
  61. package/dist/__tests__/session-switch.test.d.ts +2 -0
  62. package/dist/__tests__/session-switch.test.d.ts.map +1 -0
  63. package/dist/__tests__/session-switch.test.js +129 -0
  64. package/dist/__tests__/session-switch.test.js.map +1 -0
  65. package/dist/__tests__/setup-ingest.test.js +16 -0
  66. package/dist/__tests__/setup-ingest.test.js.map +1 -1
  67. package/dist/__tests__/skill-vocabulary.test.d.ts +21 -0
  68. package/dist/__tests__/skill-vocabulary.test.d.ts.map +1 -0
  69. package/dist/__tests__/skill-vocabulary.test.js +187 -0
  70. package/dist/__tests__/skill-vocabulary.test.js.map +1 -0
  71. package/dist/__tests__/update-check.test.d.ts +2 -0
  72. package/dist/__tests__/update-check.test.d.ts.map +1 -0
  73. package/dist/__tests__/update-check.test.js +215 -0
  74. package/dist/__tests__/update-check.test.js.map +1 -0
  75. package/dist/__tests__/upgrade-runner.test.d.ts +2 -0
  76. package/dist/__tests__/upgrade-runner.test.d.ts.map +1 -0
  77. package/dist/__tests__/upgrade-runner.test.js +54 -0
  78. package/dist/__tests__/upgrade-runner.test.js.map +1 -0
  79. package/dist/__tests__/upgrade.test.d.ts +2 -0
  80. package/dist/__tests__/upgrade.test.d.ts.map +1 -0
  81. package/dist/__tests__/upgrade.test.js +56 -0
  82. package/dist/__tests__/upgrade.test.js.map +1 -0
  83. package/dist/__tests__/vocabulary-leak.test.d.ts +39 -0
  84. package/dist/__tests__/vocabulary-leak.test.d.ts.map +1 -0
  85. package/dist/__tests__/vocabulary-leak.test.js +534 -0
  86. package/dist/__tests__/vocabulary-leak.test.js.map +1 -0
  87. package/dist/__tests__/workspace.test.js +32 -12
  88. package/dist/__tests__/workspace.test.js.map +1 -1
  89. package/dist/commands/__tests__/connect-handoff.test.d.ts +11 -0
  90. package/dist/commands/__tests__/connect-handoff.test.d.ts.map +1 -0
  91. package/dist/commands/__tests__/connect-handoff.test.js +111 -0
  92. package/dist/commands/__tests__/connect-handoff.test.js.map +1 -0
  93. package/dist/commands/__tests__/setup-detect-surfaces.test.d.ts +15 -0
  94. package/dist/commands/__tests__/setup-detect-surfaces.test.d.ts.map +1 -0
  95. package/dist/commands/__tests__/setup-detect-surfaces.test.js +149 -0
  96. package/dist/commands/__tests__/setup-detect-surfaces.test.js.map +1 -0
  97. package/dist/commands/__tests__/setup-state.test.d.ts +2 -0
  98. package/dist/commands/__tests__/setup-state.test.d.ts.map +1 -0
  99. package/dist/commands/__tests__/setup-state.test.js +194 -0
  100. package/dist/commands/__tests__/setup-state.test.js.map +1 -0
  101. package/dist/commands/admin/seed.d.ts +46 -2
  102. package/dist/commands/admin/seed.d.ts.map +1 -1
  103. package/dist/commands/admin/seed.js +475 -33
  104. package/dist/commands/admin/seed.js.map +1 -1
  105. package/dist/commands/admin/seed.test.d.ts +5 -0
  106. package/dist/commands/admin/seed.test.d.ts.map +1 -1
  107. package/dist/commands/admin/seed.test.js +67 -2
  108. package/dist/commands/admin/seed.test.js.map +1 -1
  109. package/dist/commands/admin/seedRegistryEntries.generated.d.ts +14 -0
  110. package/dist/commands/admin/seedRegistryEntries.generated.d.ts.map +1 -0
  111. package/dist/commands/admin/seedRegistryEntries.generated.js +117 -0
  112. package/dist/commands/admin/seedRegistryEntries.generated.js.map +1 -0
  113. package/dist/commands/admin/seedRegistryEntries.test.d.ts +11 -0
  114. package/dist/commands/admin/seedRegistryEntries.test.d.ts.map +1 -0
  115. package/dist/commands/admin/seedRegistryEntries.test.js +67 -0
  116. package/dist/commands/admin/seedRegistryEntries.test.js.map +1 -0
  117. package/dist/commands/audit.d.ts.map +1 -1
  118. package/dist/commands/audit.js +30 -3
  119. package/dist/commands/audit.js.map +1 -1
  120. package/dist/commands/authority-domains.d.ts +25 -1
  121. package/dist/commands/authority-domains.d.ts.map +1 -1
  122. package/dist/commands/authority-domains.js +51 -4
  123. package/dist/commands/authority-domains.js.map +1 -1
  124. package/dist/commands/capture.d.ts.map +1 -1
  125. package/dist/commands/capture.js +3 -2
  126. package/dist/commands/capture.js.map +1 -1
  127. package/dist/commands/codex-prep.d.ts +1 -0
  128. package/dist/commands/codex-prep.d.ts.map +1 -1
  129. package/dist/commands/codex-prep.js +10 -7
  130. package/dist/commands/codex-prep.js.map +1 -1
  131. package/dist/commands/connect-config.test.d.ts +2 -0
  132. package/dist/commands/connect-config.test.d.ts.map +1 -0
  133. package/dist/commands/connect-config.test.js +44 -0
  134. package/dist/commands/connect-config.test.js.map +1 -0
  135. package/dist/commands/connect-context.d.ts +45 -0
  136. package/dist/commands/connect-context.d.ts.map +1 -0
  137. package/dist/commands/connect-context.js +64 -0
  138. package/dist/commands/connect-context.js.map +1 -0
  139. package/dist/commands/connect-context.test.d.ts +2 -0
  140. package/dist/commands/connect-context.test.d.ts.map +1 -0
  141. package/dist/commands/connect-context.test.js +110 -0
  142. package/dist/commands/connect-context.test.js.map +1 -0
  143. package/dist/commands/connect-handoff.d.ts +51 -0
  144. package/dist/commands/connect-handoff.d.ts.map +1 -0
  145. package/dist/commands/connect-handoff.js +70 -0
  146. package/dist/commands/connect-handoff.js.map +1 -0
  147. package/dist/commands/connect-integration.test.js +29 -12
  148. package/dist/commands/connect-integration.test.js.map +1 -1
  149. package/dist/commands/connect-screens.d.ts +6 -4
  150. package/dist/commands/connect-screens.d.ts.map +1 -1
  151. package/dist/commands/connect-screens.js +30 -19
  152. package/dist/commands/connect-screens.js.map +1 -1
  153. package/dist/commands/connect.d.ts +21 -6
  154. package/dist/commands/connect.d.ts.map +1 -1
  155. package/dist/commands/connect.js +65 -58
  156. package/dist/commands/connect.js.map +1 -1
  157. package/dist/commands/connect.test.js +17 -1
  158. package/dist/commands/connect.test.js.map +1 -1
  159. package/dist/commands/doctor.d.ts.map +1 -1
  160. package/dist/commands/doctor.js +68 -3
  161. package/dist/commands/doctor.js.map +1 -1
  162. package/dist/commands/doctor.test.js +150 -0
  163. package/dist/commands/doctor.test.js.map +1 -1
  164. package/dist/commands/handshake.d.ts +194 -2
  165. package/dist/commands/handshake.d.ts.map +1 -1
  166. package/dist/commands/handshake.js +1537 -46
  167. package/dist/commands/handshake.js.map +1 -1
  168. package/dist/commands/method.d.ts.map +1 -1
  169. package/dist/commands/method.js +3 -0
  170. package/dist/commands/method.js.map +1 -1
  171. package/dist/commands/orient.d.ts +63 -2
  172. package/dist/commands/orient.d.ts.map +1 -1
  173. package/dist/commands/orient.js +106 -4
  174. package/dist/commands/orient.js.map +1 -1
  175. package/dist/commands/profile.d.ts +1 -14
  176. package/dist/commands/profile.d.ts.map +1 -1
  177. package/dist/commands/profile.js +89 -72
  178. package/dist/commands/profile.js.map +1 -1
  179. package/dist/commands/promote.js +1 -1
  180. package/dist/commands/promote.js.map +1 -1
  181. package/dist/commands/relate.d.ts.map +1 -1
  182. package/dist/commands/relate.js +13 -0
  183. package/dist/commands/relate.js.map +1 -1
  184. package/dist/commands/session.d.ts.map +1 -1
  185. package/dist/commands/session.js +51 -14
  186. package/dist/commands/session.js.map +1 -1
  187. package/dist/commands/setup-audit.d.ts +59 -0
  188. package/dist/commands/setup-audit.d.ts.map +1 -0
  189. package/dist/commands/setup-audit.js +250 -0
  190. package/dist/commands/setup-audit.js.map +1 -0
  191. package/dist/commands/setup-detect-surfaces.d.ts +38 -0
  192. package/dist/commands/setup-detect-surfaces.d.ts.map +1 -0
  193. package/dist/commands/setup-detect-surfaces.js +76 -0
  194. package/dist/commands/setup-detect-surfaces.js.map +1 -0
  195. package/dist/commands/setup-ingest.d.ts.map +1 -1
  196. package/dist/commands/setup-ingest.js +4 -2
  197. package/dist/commands/setup-ingest.js.map +1 -1
  198. package/dist/commands/setup-state.d.ts +42 -0
  199. package/dist/commands/setup-state.d.ts.map +1 -0
  200. package/dist/commands/setup-state.js +93 -0
  201. package/dist/commands/setup-state.js.map +1 -0
  202. package/dist/commands/setup.d.ts +17 -9
  203. package/dist/commands/setup.d.ts.map +1 -1
  204. package/dist/commands/setup.js +52 -131
  205. package/dist/commands/setup.js.map +1 -1
  206. package/dist/commands/upgrade.d.ts +5 -0
  207. package/dist/commands/upgrade.d.ts.map +1 -0
  208. package/dist/commands/upgrade.js +110 -0
  209. package/dist/commands/upgrade.js.map +1 -0
  210. package/dist/commands/whoami.d.ts +12 -0
  211. package/dist/commands/whoami.d.ts.map +1 -0
  212. package/dist/commands/whoami.js +70 -0
  213. package/dist/commands/whoami.js.map +1 -0
  214. package/dist/commands/whoami.test.d.ts +2 -0
  215. package/dist/commands/whoami.test.d.ts.map +1 -0
  216. package/dist/commands/whoami.test.js +50 -0
  217. package/dist/commands/whoami.test.js.map +1 -0
  218. package/dist/commands/workspace.d.ts +23 -2
  219. package/dist/commands/workspace.d.ts.map +1 -1
  220. package/dist/commands/workspace.js +2 -2
  221. package/dist/commands/workspace.js.map +1 -1
  222. package/dist/formatters/__tests__/orient-provenance.test.d.ts +7 -0
  223. package/dist/formatters/__tests__/orient-provenance.test.d.ts.map +1 -0
  224. package/dist/formatters/__tests__/orient-provenance.test.js +454 -0
  225. package/dist/formatters/__tests__/orient-provenance.test.js.map +1 -0
  226. package/dist/formatters/audit.d.ts +6 -0
  227. package/dist/formatters/audit.d.ts.map +1 -1
  228. package/dist/formatters/audit.js.map +1 -1
  229. package/dist/formatters/entry.d.ts +21 -0
  230. package/dist/formatters/entry.d.ts.map +1 -1
  231. package/dist/formatters/entry.js +46 -5
  232. package/dist/formatters/entry.js.map +1 -1
  233. package/dist/formatters/handshake.d.ts +19 -3
  234. package/dist/formatters/handshake.d.ts.map +1 -1
  235. package/dist/formatters/handshake.js +48 -13
  236. package/dist/formatters/handshake.js.map +1 -1
  237. package/dist/formatters/orient.d.ts +79 -4
  238. package/dist/formatters/orient.d.ts.map +1 -1
  239. package/dist/formatters/orient.js +119 -18
  240. package/dist/formatters/orient.js.map +1 -1
  241. package/dist/formatters/session.js +1 -1
  242. package/dist/formatters/session.js.map +1 -1
  243. package/dist/generators/adapters.js +2 -2
  244. package/dist/generators/context-md.js +6 -6
  245. package/dist/generators/context-md.js.map +1 -1
  246. package/dist/generators/manifest.d.ts +76 -0
  247. package/dist/generators/manifest.d.ts.map +1 -1
  248. package/dist/generators/manifest.js +125 -14
  249. package/dist/generators/manifest.js.map +1 -1
  250. package/dist/generators/portable-knowledge.d.ts +6 -12
  251. package/dist/generators/portable-knowledge.d.ts.map +1 -1
  252. package/dist/generators/portable-knowledge.js +2 -19
  253. package/dist/generators/portable-knowledge.js.map +1 -1
  254. package/dist/generators/region-projections.d.ts +18 -0
  255. package/dist/generators/region-projections.d.ts.map +1 -0
  256. package/dist/generators/region-projections.js +49 -0
  257. package/dist/generators/region-projections.js.map +1 -0
  258. package/dist/generators/region-projections.test.d.ts +2 -0
  259. package/dist/generators/region-projections.test.d.ts.map +1 -0
  260. package/dist/generators/region-projections.test.js +63 -0
  261. package/dist/generators/region-projections.test.js.map +1 -0
  262. package/dist/generators/region.d.ts +24 -0
  263. package/dist/generators/region.d.ts.map +1 -0
  264. package/dist/generators/region.js +87 -0
  265. package/dist/generators/region.js.map +1 -0
  266. package/dist/generators/region.test.d.ts +2 -0
  267. package/dist/generators/region.test.d.ts.map +1 -0
  268. package/dist/generators/region.test.js +126 -0
  269. package/dist/generators/region.test.js.map +1 -0
  270. package/dist/generators/surface-profiles.d.ts +1 -2
  271. package/dist/generators/surface-profiles.d.ts.map +1 -1
  272. package/dist/generators/surface-profiles.js.map +1 -1
  273. package/dist/index.js +142 -27
  274. package/dist/index.js.map +1 -1
  275. package/dist/lib/activation.d.ts.map +1 -1
  276. package/dist/lib/activation.js +3 -3
  277. package/dist/lib/activation.js.map +1 -1
  278. package/dist/lib/activation.test.js +3 -3
  279. package/dist/lib/activation.test.js.map +1 -1
  280. package/dist/lib/canonicalRefs.d.ts +72 -0
  281. package/dist/lib/canonicalRefs.d.ts.map +1 -1
  282. package/dist/lib/canonicalRefs.js +67 -0
  283. package/dist/lib/canonicalRefs.js.map +1 -1
  284. package/dist/lib/client.d.ts.map +1 -1
  285. package/dist/lib/client.js +14 -4
  286. package/dist/lib/client.js.map +1 -1
  287. package/dist/lib/config.d.ts +70 -4
  288. package/dist/lib/config.d.ts.map +1 -1
  289. package/dist/lib/config.js +151 -11
  290. package/dist/lib/config.js.map +1 -1
  291. package/dist/lib/connectKeyLabel.d.ts +9 -0
  292. package/dist/lib/connectKeyLabel.d.ts.map +1 -0
  293. package/dist/lib/connectKeyLabel.js +12 -0
  294. package/dist/lib/connectKeyLabel.js.map +1 -0
  295. package/dist/lib/constants.d.ts +2 -0
  296. package/dist/lib/constants.d.ts.map +1 -1
  297. package/dist/lib/constants.js +2 -0
  298. package/dist/lib/constants.js.map +1 -1
  299. package/dist/lib/errors.d.ts +3 -0
  300. package/dist/lib/errors.d.ts.map +1 -1
  301. package/dist/lib/errors.js +3 -0
  302. package/dist/lib/errors.js.map +1 -1
  303. package/dist/lib/normalizeMaterializedFilename.d.ts +28 -0
  304. package/dist/lib/normalizeMaterializedFilename.d.ts.map +1 -0
  305. package/dist/lib/normalizeMaterializedFilename.js +56 -0
  306. package/dist/lib/normalizeMaterializedFilename.js.map +1 -0
  307. package/dist/lib/normalizeMaterializedFilename.test.d.ts +16 -0
  308. package/dist/lib/normalizeMaterializedFilename.test.d.ts.map +1 -0
  309. package/dist/lib/normalizeMaterializedFilename.test.js +90 -0
  310. package/dist/lib/normalizeMaterializedFilename.test.js.map +1 -0
  311. package/dist/lib/notice-marker.d.ts +3 -0
  312. package/dist/lib/notice-marker.d.ts.map +1 -0
  313. package/dist/lib/notice-marker.js +53 -0
  314. package/dist/lib/notice-marker.js.map +1 -0
  315. package/dist/lib/onboarding-path-b.d.ts.map +1 -1
  316. package/dist/lib/onboarding-path-b.js +0 -1
  317. package/dist/lib/onboarding-path-b.js.map +1 -1
  318. package/dist/lib/onboarding-shared.d.ts +0 -1
  319. package/dist/lib/onboarding-shared.d.ts.map +1 -1
  320. package/dist/lib/onboarding-shared.js +1 -17
  321. package/dist/lib/onboarding-shared.js.map +1 -1
  322. package/dist/lib/profiles.d.ts +3 -1
  323. package/dist/lib/profiles.d.ts.map +1 -1
  324. package/dist/lib/profiles.js +9 -6
  325. package/dist/lib/profiles.js.map +1 -1
  326. package/dist/lib/session.d.ts +10 -0
  327. package/dist/lib/session.d.ts.map +1 -1
  328. package/dist/lib/session.js +14 -0
  329. package/dist/lib/session.js.map +1 -1
  330. package/dist/lib/update-check.d.ts +42 -7
  331. package/dist/lib/update-check.d.ts.map +1 -1
  332. package/dist/lib/update-check.js +213 -62
  333. package/dist/lib/update-check.js.map +1 -1
  334. package/dist/lib/upgrade-runner.d.ts +22 -0
  335. package/dist/lib/upgrade-runner.d.ts.map +1 -0
  336. package/dist/lib/upgrade-runner.js +110 -0
  337. package/dist/lib/upgrade-runner.js.map +1 -0
  338. package/dist/lib/workspaceVocabCache.d.ts +60 -0
  339. package/dist/lib/workspaceVocabCache.d.ts.map +1 -0
  340. package/dist/lib/workspaceVocabCache.js +98 -0
  341. package/dist/lib/workspaceVocabCache.js.map +1 -0
  342. package/dist/setup/__tests__/coach-traces.test.d.ts +2 -0
  343. package/dist/setup/__tests__/coach-traces.test.d.ts.map +1 -0
  344. package/dist/setup/__tests__/coach-traces.test.js +189 -0
  345. package/dist/setup/__tests__/coach-traces.test.js.map +1 -0
  346. package/dist/setup/__tests__/setup-commands.test.d.ts +2 -0
  347. package/dist/setup/__tests__/setup-commands.test.d.ts.map +1 -0
  348. package/dist/setup/__tests__/setup-commands.test.js +177 -0
  349. package/dist/setup/__tests__/setup-commands.test.js.map +1 -0
  350. package/dist/setup/__tests__/state-machine.test.d.ts +2 -0
  351. package/dist/setup/__tests__/state-machine.test.d.ts.map +1 -0
  352. package/dist/setup/__tests__/state-machine.test.js +341 -0
  353. package/dist/setup/__tests__/state-machine.test.js.map +1 -0
  354. package/dist/setup/detect-surfaces.d.ts +21 -0
  355. package/dist/setup/detect-surfaces.d.ts.map +1 -0
  356. package/dist/setup/detect-surfaces.js +39 -0
  357. package/dist/setup/detect-surfaces.js.map +1 -0
  358. package/dist/setup/manifest-writer.d.ts +17 -0
  359. package/dist/setup/manifest-writer.d.ts.map +1 -0
  360. package/dist/setup/manifest-writer.js +153 -0
  361. package/dist/setup/manifest-writer.js.map +1 -0
  362. package/dist/setup/perimeter.d.ts +72 -0
  363. package/dist/setup/perimeter.d.ts.map +1 -0
  364. package/dist/setup/perimeter.js +128 -0
  365. package/dist/setup/perimeter.js.map +1 -0
  366. package/dist/setup/state-machine.d.ts +67 -0
  367. package/dist/setup/state-machine.d.ts.map +1 -0
  368. package/dist/setup/state-machine.js +124 -0
  369. package/dist/setup/state-machine.js.map +1 -0
  370. package/dist/surfaces/__tests__/adapter.test.d.ts +2 -0
  371. package/dist/surfaces/__tests__/adapter.test.d.ts.map +1 -0
  372. package/dist/surfaces/__tests__/adapter.test.js +90 -0
  373. package/dist/surfaces/__tests__/adapter.test.js.map +1 -0
  374. package/dist/surfaces/__tests__/pb-setup-passthrough.test.d.ts +2 -0
  375. package/dist/surfaces/__tests__/pb-setup-passthrough.test.d.ts.map +1 -0
  376. package/dist/surfaces/__tests__/pb-setup-passthrough.test.js +132 -0
  377. package/dist/surfaces/__tests__/pb-setup-passthrough.test.js.map +1 -0
  378. package/dist/surfaces/__tests__/telemetry.test.d.ts +2 -0
  379. package/dist/surfaces/__tests__/telemetry.test.d.ts.map +1 -0
  380. package/dist/surfaces/__tests__/telemetry.test.js +55 -0
  381. package/dist/surfaces/__tests__/telemetry.test.js.map +1 -0
  382. package/dist/surfaces/adapter.d.ts +70 -0
  383. package/dist/surfaces/adapter.d.ts.map +1 -0
  384. package/dist/surfaces/adapter.js +2 -0
  385. package/dist/surfaces/adapter.js.map +1 -0
  386. package/dist/surfaces/adapters/claude.d.ts +3 -0
  387. package/dist/surfaces/adapters/claude.d.ts.map +1 -0
  388. package/dist/surfaces/adapters/claude.js +67 -0
  389. package/dist/surfaces/adapters/claude.js.map +1 -0
  390. package/dist/surfaces/adapters/codex.d.ts +3 -0
  391. package/dist/surfaces/adapters/codex.d.ts.map +1 -0
  392. package/dist/surfaces/adapters/codex.js +61 -0
  393. package/dist/surfaces/adapters/codex.js.map +1 -0
  394. package/dist/surfaces/adapters/copilot.d.ts +3 -0
  395. package/dist/surfaces/adapters/copilot.d.ts.map +1 -0
  396. package/dist/surfaces/adapters/copilot.js +59 -0
  397. package/dist/surfaces/adapters/copilot.js.map +1 -0
  398. package/dist/surfaces/adapters/cursor.d.ts +3 -0
  399. package/dist/surfaces/adapters/cursor.d.ts.map +1 -0
  400. package/dist/surfaces/adapters/cursor.js +78 -0
  401. package/dist/surfaces/adapters/cursor.js.map +1 -0
  402. package/dist/surfaces/registry.d.ts +58 -2
  403. package/dist/surfaces/registry.d.ts.map +1 -1
  404. package/dist/surfaces/registry.js +82 -7
  405. package/dist/surfaces/registry.js.map +1 -1
  406. package/dist/surfaces/telemetry.d.ts +17 -0
  407. package/dist/surfaces/telemetry.d.ts.map +1 -0
  408. package/dist/surfaces/telemetry.js +31 -0
  409. package/dist/surfaces/telemetry.js.map +1 -0
  410. package/package.json +3 -1
  411. package/dist/__tests__/setup.test.d.ts +0 -2
  412. package/dist/__tests__/setup.test.d.ts.map +0 -1
  413. package/dist/__tests__/setup.test.js +0 -141
  414. package/dist/__tests__/setup.test.js.map +0 -1
  415. package/dist/generators/__tests__/surface-profiles.test.d.ts +0 -2
  416. package/dist/generators/__tests__/surface-profiles.test.d.ts.map +0 -1
  417. package/dist/generators/__tests__/surface-profiles.test.js +0 -89
  418. package/dist/generators/__tests__/surface-profiles.test.js.map +0 -1
  419. package/dist/lib/onboarding-phases.d.ts +0 -9
  420. package/dist/lib/onboarding-phases.d.ts.map +0 -1
  421. package/dist/lib/onboarding-phases.js +0 -120
  422. package/dist/lib/onboarding-phases.js.map +0 -1
@@ -0,0 +1,98 @@
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
+ const TTL_MS = 5 * 60 * 1000; // 5 minutes
20
+ const STALE_WARN_MS = 4 * 60 * 1000; // warn after 4 minutes (1 minute before expiry)
21
+ /** In-memory cache: cacheKey (CLI: apiKey; Cortex would use workspaceId) → CacheEntry. */
22
+ const cache = new Map();
23
+ /**
24
+ * Get a cached WorkspaceVocabCtx by cacheKey, or null if expired/missing.
25
+ * Prints a staleness warning when the entry is older than STALE_WARN_MS.
26
+ */
27
+ export function getCachedVocabCtx(cacheKey) {
28
+ const entry = cache.get(cacheKey);
29
+ if (!entry)
30
+ return null;
31
+ const now = Date.now();
32
+ if (now >= entry.expiresAt) {
33
+ cache.delete(cacheKey);
34
+ return null;
35
+ }
36
+ if (now - (entry.expiresAt - TTL_MS) >= STALE_WARN_MS) {
37
+ // Staleness hint: labels were fetched > 4 min ago, will refresh within 1 min.
38
+ process.stderr.write(`[pb] Workspace vocabulary context is almost stale — will refresh on next invocation.\n`);
39
+ }
40
+ return entry.ctx;
41
+ }
42
+ /**
43
+ * Store a WorkspaceVocabCtx under cacheKey with a 5-min TTL.
44
+ */
45
+ export function setCachedVocabCtx(cacheKey, ctx) {
46
+ cache.set(cacheKey, { ctx, expiresAt: Date.now() + TTL_MS });
47
+ }
48
+ /**
49
+ * Explicitly invalidate a cached vocab context by cacheKey.
50
+ * Call this when `updateCollectionLabels` mutation succeeds (e.g. after `pb handshake`).
51
+ */
52
+ export function invalidateVocabCtx(cacheKey) {
53
+ cache.delete(cacheKey);
54
+ }
55
+ /**
56
+ * Clear all cached entries (useful for testing or `pb handshake --refresh`).
57
+ */
58
+ export function clearVocabCache() {
59
+ cache.clear();
60
+ }
61
+ /**
62
+ * Get the cached vocab context, or fetch it via the provided async fetcher on cache miss.
63
+ *
64
+ * Usage pattern at CLI command sites:
65
+ * ```ts
66
+ * const vocabCtx = await getOrFetchVocabCtx(config.apiKey, async () => {
67
+ * type VocabResult = { collectionLabels?: Record<string, unknown> };
68
+ * const vocab = await kernelCall<VocabResult>('chain.getVocabulary', {});
69
+ * return vocab?.collectionLabels
70
+ * ? { collectionLabels: vocab.collectionLabels as WorkspaceVocabCtx['collectionLabels'] }
71
+ * : null;
72
+ * });
73
+ * ```
74
+ *
75
+ * - `cacheKey`: use the API key as a surrogate for cacheKey (1:1 mapping at CLI layer).
76
+ * - `fetcher`: async function that resolves the vocab ctx; returns null on failure to signal
77
+ * "don't cache, fall back to resolver literal". Fetcher errors are swallowed — vocabulary
78
+ * labels are advisory (PAT-230 / fail-open principle).
79
+ *
80
+ * Returns WorkspaceVocabCtx on cache hit or successful fetch; undefined on error/null fetcher result.
81
+ */
82
+ export async function getOrFetchVocabCtx(cacheKey, fetcher) {
83
+ const cached = getCachedVocabCtx(cacheKey);
84
+ if (cached)
85
+ return cached;
86
+ try {
87
+ const ctx = await fetcher();
88
+ if (ctx) {
89
+ setCachedVocabCtx(cacheKey, ctx);
90
+ return ctx;
91
+ }
92
+ }
93
+ catch {
94
+ // fail-open — vocabulary labels are advisory, never block the command
95
+ }
96
+ return undefined;
97
+ }
98
+ //# sourceMappingURL=workspaceVocabCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspaceVocabCache.js","sourceRoot":"","sources":["../../src/lib/workspaceVocabCache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAUH,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;AAC1C,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,gDAAgD;AAErF,0FAA0F;AAC1F,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;AAE5C;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,IAAI,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QAC3B,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QACtD,8EAA8E;QAC9E,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wFAAwF,CACzF,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,GAAG,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB,EAAE,GAAsB;IACxE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAgB,EAChB,OAAgD;IAEhD,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,OAAO,EAAE,CAAC;QAC5B,IAAI,GAAG,EAAE,CAAC;YACR,iBAAiB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACjC,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sEAAsE;IACxE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=coach-traces.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coach-traces.test.d.ts","sourceRoot":"","sources":["../../../src/setup/__tests__/coach-traces.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,189 @@
1
+ /**
2
+ * Cross-model coach validation harness — WP-431 S4 (doneWhen #16).
3
+ *
4
+ * Mock harness chosen for cross-model validation per TEN-1962 — deterministic,
5
+ * runs in CI without API keys. Live trace via dev-only Cursor Desktop documented
6
+ * separately if needed. The harness does NOT call any model; it simulates the
7
+ * criteria-progression loop encoded in `.productbrain/skills/pb-setup.md`
8
+ * Phase 3 and asserts convergence within 3 turns OR correct fallback to the
9
+ * FLO-72 Path C wizard (DEC-991).
10
+ *
11
+ * The fixture set covers cross-model behaviour by encoding three response
12
+ * shapes that any reasonable instruction-following model produces — the user's
13
+ * answer is the variable, the agent's response loop is the constant. The
14
+ * skill body is the universal SSOT (DEC-997); this harness exercises it.
15
+ */
16
+ import { describe, expect, it } from 'vitest';
17
+ /**
18
+ * Criteria check (verbatim from `.productbrain/skills/pb-setup.md` Phase 3):
19
+ * "answer mentions a verb + a thing they do regularly".
20
+ *
21
+ * The criteria predicate keeps the test honest: it deterministically maps a
22
+ * user utterance to met/not-met. The tokeniser is intentionally simple — the
23
+ * skill text says "verb + thing", and that's what we look for.
24
+ */
25
+ const VERB_HINTS = [
26
+ 'ship',
27
+ 'shipping',
28
+ 'fix',
29
+ 'fixing',
30
+ 'write',
31
+ 'writing',
32
+ 'review',
33
+ 'reviewing',
34
+ 'build',
35
+ 'building',
36
+ 'integrate',
37
+ 'integrating',
38
+ 'design',
39
+ 'designing',
40
+ 'debug',
41
+ 'debugging',
42
+ 'refactor',
43
+ 'refactoring',
44
+ 'document',
45
+ 'documenting',
46
+ ];
47
+ const THING_HINTS = [
48
+ 'feature',
49
+ 'features',
50
+ 'bug',
51
+ 'bugs',
52
+ 'copy',
53
+ 'integration',
54
+ 'integrations',
55
+ 'review',
56
+ 'reviews',
57
+ 'issue',
58
+ 'issues',
59
+ 'doc',
60
+ 'docs',
61
+ 'api',
62
+ 'apis',
63
+ 'endpoint',
64
+ 'endpoints',
65
+ 'workflow',
66
+ 'workflows',
67
+ 'page',
68
+ 'pages',
69
+ 'rule',
70
+ 'rules',
71
+ ];
72
+ function meetsCriteria(answer) {
73
+ const lower = answer.toLowerCase();
74
+ const hasVerb = VERB_HINTS.some((v) => new RegExp(`\\b${v}\\b`).test(lower));
75
+ const hasThing = THING_HINTS.some((t) => new RegExp(`\\b${t}\\b`).test(lower));
76
+ return hasVerb && hasThing;
77
+ }
78
+ /**
79
+ * Run the coach loop encoded in pb-setup.md against a scripted user.
80
+ *
81
+ * Loop (verbatim from the skill):
82
+ * 1. Ask the open question.
83
+ * 2. If answer meets criteria -> progress.
84
+ * 3. If vague, ask one follow-up.
85
+ * 4. If 2 follow-ups don't yield, fall back to wizard (DEC-991).
86
+ *
87
+ * Convergence target (doneWhen #16): within 3 turns. Three turns means: the
88
+ * open question + at most two follow-ups. After the third turn without
89
+ * criteria-met, the agent MUST fall back to the wizard.
90
+ */
91
+ function runCoachLoop(turns) {
92
+ const trace = [];
93
+ let followUps = 0;
94
+ for (let i = 0; i < turns.length; i++) {
95
+ const turn = turns[i];
96
+ const met = meetsCriteria(turn.user);
97
+ trace.push({ turn: i + 1, user: turn.user, met });
98
+ if (met) {
99
+ return {
100
+ state: 'criteria-met',
101
+ turnsUsed: i + 1,
102
+ finalAnswer: turn.user,
103
+ trace,
104
+ };
105
+ }
106
+ followUps += 1;
107
+ if (followUps >= 2) {
108
+ // Skill behaviour: "if 2 follow-ups don't yield, suggest a default
109
+ // catalog and let them pick (DEC-991 fallback path)".
110
+ return {
111
+ state: 'wizard-fallback',
112
+ turnsUsed: i + 1,
113
+ finalAnswer: turn.user,
114
+ trace,
115
+ };
116
+ }
117
+ }
118
+ // Out of scripted turns without convergence — treat as wizard-fallback so
119
+ // the test surfaces a faulty fixture rather than silently passing.
120
+ return {
121
+ state: 'wizard-fallback',
122
+ turnsUsed: turns.length,
123
+ finalAnswer: turns[turns.length - 1]?.user ?? '',
124
+ trace,
125
+ };
126
+ }
127
+ describe('Phase 3 coach loop — cross-model trace harness (TEN-1962)', () => {
128
+ it('Scenario A — happy path (specific answer, 1 turn)', () => {
129
+ const turns = [
130
+ { user: 'Mostly shipping new features for our SvelteKit app.' },
131
+ ];
132
+ const outcome = runCoachLoop(turns);
133
+ expect(outcome.state).toBe('criteria-met');
134
+ expect(outcome.turnsUsed).toBe(1);
135
+ expect(outcome.turnsUsed).toBeLessThanOrEqual(3);
136
+ });
137
+ it('Scenario B — vague then specific (follow-up, 2 turns)', () => {
138
+ const turns = [
139
+ { user: 'I dunno, various stuff.' },
140
+ { user: 'Last week I spent the most time fixing customer bugs.' },
141
+ ];
142
+ const outcome = runCoachLoop(turns);
143
+ expect(outcome.state).toBe('criteria-met');
144
+ expect(outcome.turnsUsed).toBe(2);
145
+ expect(outcome.turnsUsed).toBeLessThanOrEqual(3);
146
+ });
147
+ it('Scenario C — 2 vague turns triggers wizard fallback (DEC-991 path)', () => {
148
+ const turns = [
149
+ { user: 'Just code, you know how it is.' },
150
+ { user: 'Stuff. Things. The usual.' },
151
+ ];
152
+ const outcome = runCoachLoop(turns);
153
+ expect(outcome.state).toBe('wizard-fallback');
154
+ expect(outcome.turnsUsed).toBe(2);
155
+ // Convergence to a deterministic outcome (criteria-met OR wizard) within
156
+ // the 3-turn budget defends KEY-32 generalisation across surfaces.
157
+ expect(outcome.turnsUsed).toBeLessThanOrEqual(3);
158
+ });
159
+ it('Scenario D — marketing copy answer (non-engineering domain, criteria still met)', () => {
160
+ const turns = [
161
+ { user: 'I write marketing copy and review pages from the design team.' },
162
+ ];
163
+ const outcome = runCoachLoop(turns);
164
+ expect(outcome.state).toBe('criteria-met');
165
+ expect(outcome.turnsUsed).toBe(1);
166
+ });
167
+ it('Scenario E — every fixture converges within the 3-turn budget', () => {
168
+ // Roll-up assertion across all scenarios so a future fixture addition that
169
+ // exceeds the budget surfaces here as a single named failure.
170
+ const fixtures = [
171
+ [{ user: 'Mostly shipping new features for our SvelteKit app.' }],
172
+ [
173
+ { user: 'I dunno, various stuff.' },
174
+ { user: 'Last week I spent the most time fixing customer bugs.' },
175
+ ],
176
+ [
177
+ { user: 'Just code, you know how it is.' },
178
+ { user: 'Stuff. Things. The usual.' },
179
+ ],
180
+ [{ user: 'I write marketing copy and review pages from the design team.' }],
181
+ ];
182
+ for (const turns of fixtures) {
183
+ const outcome = runCoachLoop(turns);
184
+ expect(outcome.turnsUsed).toBeLessThanOrEqual(3);
185
+ expect(['criteria-met', 'wizard-fallback']).toContain(outcome.state);
186
+ }
187
+ });
188
+ });
189
+ //# sourceMappingURL=coach-traces.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coach-traces.test.js","sourceRoot":"","sources":["../../../src/setup/__tests__/coach-traces.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=setup-commands.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-commands.test.d.ts","sourceRoot":"","sources":["../../../src/setup/__tests__/setup-commands.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,177 @@
1
+ /**
2
+ * WP-431 S3 — CLI surface-detect + manifest-writer + setup-state tests.
3
+ *
4
+ * Uses real temp directories so the perimeter guard, atomic rename, and YAML
5
+ * round-trip are exercised end-to-end. Convex queries / mutations are mocked
6
+ * at the kernelCall boundary.
7
+ */
8
+ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
9
+ import { mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync, existsSync } from 'fs';
10
+ import { join } from 'path';
11
+ import { tmpdir } from 'os';
12
+ import { detectSurfaces, unionSurfaces } from '../detect-surfaces.js';
13
+ import { readManifestSurfaces, writeManifestSurfaces, } from '../manifest-writer.js';
14
+ import { runSetupDetectSurfaces } from '../../commands/setup-detect-surfaces.js';
15
+ let scratch;
16
+ let originalCwd;
17
+ function freshScratch() {
18
+ return mkdtempSync(join(tmpdir(), 'pb-setup-s3-'));
19
+ }
20
+ beforeEach(() => {
21
+ originalCwd = process.cwd();
22
+ scratch = freshScratch();
23
+ process.chdir(scratch);
24
+ });
25
+ afterEach(() => {
26
+ process.chdir(originalCwd);
27
+ rmSync(scratch, { recursive: true, force: true });
28
+ });
29
+ describe('detectSurfaces()', () => {
30
+ it('returns [] for an empty repo', async () => {
31
+ const result = await detectSurfaces(scratch);
32
+ expect(result).toEqual([]);
33
+ });
34
+ it('detects claude when .claude/ exists', async () => {
35
+ mkdirSync(join(scratch, '.claude'));
36
+ const result = await detectSurfaces(scratch);
37
+ expect(result).toContain('claude');
38
+ expect(result).not.toContain('cursor');
39
+ });
40
+ it('detects claude + cursor when both directories exist', async () => {
41
+ mkdirSync(join(scratch, '.claude'));
42
+ mkdirSync(join(scratch, '.cursor'));
43
+ const result = await detectSurfaces(scratch);
44
+ expect(result).toContain('claude');
45
+ expect(result).toContain('cursor');
46
+ });
47
+ it('detects copilot via .github/copilot-instructions.md', async () => {
48
+ mkdirSync(join(scratch, '.github'), { recursive: true });
49
+ writeFileSync(join(scratch, '.github', 'copilot-instructions.md'), '# instructions\n');
50
+ const result = await detectSurfaces(scratch);
51
+ expect(result).toContain('copilot');
52
+ });
53
+ it('detects codex via .codex/ directory', async () => {
54
+ mkdirSync(join(scratch, '.codex'));
55
+ const result = await detectSurfaces(scratch);
56
+ expect(result).toContain('codex');
57
+ });
58
+ it('detects codex via AGENTS.md fallback', async () => {
59
+ writeFileSync(join(scratch, 'AGENTS.md'), '# agents\n');
60
+ const result = await detectSurfaces(scratch);
61
+ expect(result).toContain('codex');
62
+ });
63
+ });
64
+ describe('unionSurfaces()', () => {
65
+ it('union-merges existing and detected (sorted, deduped)', () => {
66
+ expect(unionSurfaces(['copilot'], ['claude'])).toEqual(['claude', 'copilot']);
67
+ });
68
+ it('preserves existing when nothing new is detected (forward-only)', () => {
69
+ expect(unionSurfaces(['cursor'], [])).toEqual(['cursor']);
70
+ });
71
+ it('skips empty / non-string entries defensively', () => {
72
+ // intentionally pass an empty string to confirm it is dropped
73
+ expect(unionSurfaces(['claude', ''], ['cursor'])).toEqual(['claude', 'cursor']);
74
+ });
75
+ });
76
+ describe('writeManifestSurfaces()', () => {
77
+ it('STD-234 perimeter is invoked before any disk write', async () => {
78
+ // Verify the writer routes through assertSetupWritePath. We assert the
79
+ // observable behaviour: writeManifestSurfaces does write to .productbrain/
80
+ // (which the perimeter explicitly allows) and never to a path outside it.
81
+ const result = await writeManifestSurfaces(scratch, ['claude']);
82
+ expect(result.path).toContain('.productbrain/manifest.yaml');
83
+ expect(result.path).not.toContain('..');
84
+ });
85
+ it('writes a fresh manifest when none exists', async () => {
86
+ const result = await writeManifestSurfaces(scratch, ['claude']);
87
+ expect(result.written).toBe(true);
88
+ expect(existsSync(result.path)).toBe(true);
89
+ const raw = readFileSync(result.path, 'utf8');
90
+ expect(raw).toContain('surfaces:');
91
+ expect(raw).toContain('- claude');
92
+ });
93
+ it('preserves other top-level manifest keys when replacing surfaces', async () => {
94
+ const pbDir = join(scratch, '.productbrain');
95
+ mkdirSync(pbDir, { recursive: true });
96
+ writeFileSync(join(pbDir, 'manifest.yaml'), 'version: "0.1"\nmaterialize: observe\nadopted:\n - rule-a\n');
97
+ await writeManifestSurfaces(scratch, ['claude']);
98
+ const raw = readFileSync(join(pbDir, 'manifest.yaml'), 'utf8');
99
+ expect(raw).toContain('version: "0.1"');
100
+ expect(raw).toContain('materialize: observe');
101
+ expect(raw).toContain('- rule-a');
102
+ expect(raw).toContain('- claude');
103
+ });
104
+ it('round-trip: write then read returns the same surfaces', async () => {
105
+ await writeManifestSurfaces(scratch, ['claude', 'cursor']);
106
+ expect(readManifestSurfaces(scratch).sort()).toEqual(['claude', 'cursor']);
107
+ });
108
+ it('idempotent: second call with same surfaces is a no-op (written=false)', async () => {
109
+ await writeManifestSurfaces(scratch, ['claude']);
110
+ const second = await writeManifestSurfaces(scratch, ['claude']);
111
+ expect(second.written).toBe(false);
112
+ });
113
+ it('atomic: tmp file is cleaned up when rename throws (orig left untouched)', async () => {
114
+ const pbDir = join(scratch, '.productbrain');
115
+ mkdirSync(pbDir, { recursive: true });
116
+ const manifestPath = join(pbDir, 'manifest.yaml');
117
+ writeFileSync(manifestPath, 'version: "0.1"\nsurfaces:\n - copilot\n');
118
+ // Make the destination a directory — renameSync(file, dirPath) fails on most
119
+ // platforms, exercising the catch+unlink path in writeManifestSurfaces.
120
+ rmSync(manifestPath);
121
+ mkdirSync(manifestPath); // now a dir, not a file
122
+ await expect(writeManifestSurfaces(scratch, ['claude'])).rejects.toThrow();
123
+ rmSync(manifestPath, { recursive: true, force: true });
124
+ // tmp file should have been cleaned up by the catch block.
125
+ expect(existsSync(`${manifestPath}.tmp`)).toBe(false);
126
+ });
127
+ });
128
+ describe('runSetupDetectSurfaces()', () => {
129
+ it('empty repo → manifest unchanged, surfaces empty', async () => {
130
+ const result = await runSetupDetectSurfaces({ cwd: scratch });
131
+ expect(result.detected).toEqual([]);
132
+ expect(result.union).toEqual([]);
133
+ // a fresh empty repo with no markers writes a fresh manifest with surfaces:[].
134
+ // Subsequent runs are no-ops; first run records the empty state explicitly.
135
+ const second = await runSetupDetectSurfaces({ cwd: scratch });
136
+ expect(second.manifestUpdated).toBe(false);
137
+ });
138
+ it('repo with .claude/ only → surfaces:[claude]', async () => {
139
+ mkdirSync(join(scratch, '.claude'));
140
+ const result = await runSetupDetectSurfaces({ cwd: scratch });
141
+ expect(result.detected).toEqual(['claude']);
142
+ expect(result.union).toEqual(['claude']);
143
+ expect(result.manifestUpdated).toBe(true);
144
+ });
145
+ it('repo with .claude + .cursor → surfaces sorted [claude, cursor]', async () => {
146
+ mkdirSync(join(scratch, '.claude'));
147
+ mkdirSync(join(scratch, '.cursor'));
148
+ const result = await runSetupDetectSurfaces({ cwd: scratch });
149
+ expect(result.union).toEqual(['claude', 'cursor']);
150
+ });
151
+ it('pre-existing surfaces:[copilot] + new .claude/ → union sorted', async () => {
152
+ const pbDir = join(scratch, '.productbrain');
153
+ mkdirSync(pbDir, { recursive: true });
154
+ writeFileSync(join(pbDir, 'manifest.yaml'), 'version: "0.1"\nsurfaces:\n - copilot\n');
155
+ mkdirSync(join(scratch, '.claude'));
156
+ const result = await runSetupDetectSurfaces({ cwd: scratch });
157
+ expect(result.union).toEqual(['claude', 'copilot']);
158
+ expect(result.newlyAdded).toEqual(['claude']);
159
+ });
160
+ it('idempotent: second run after no FS changes is a manifest no-op', async () => {
161
+ mkdirSync(join(scratch, '.claude'));
162
+ await runSetupDetectSurfaces({ cwd: scratch });
163
+ const second = await runSetupDetectSurfaces({ cwd: scratch });
164
+ expect(second.manifestUpdated).toBe(false);
165
+ expect(second.union).toEqual(['claude']);
166
+ });
167
+ it('STD-235 forward-only: pre-existing surfaces survive when marker is absent', async () => {
168
+ const pbDir = join(scratch, '.productbrain');
169
+ mkdirSync(pbDir, { recursive: true });
170
+ writeFileSync(join(pbDir, 'manifest.yaml'), 'version: "0.1"\nsurfaces:\n - cursor\n');
171
+ // No .cursor/ directory in scratch
172
+ const result = await runSetupDetectSurfaces({ cwd: scratch });
173
+ expect(result.union).toContain('cursor');
174
+ expect(result.union).not.toEqual([]);
175
+ });
176
+ });
177
+ //# sourceMappingURL=setup-commands.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-commands.test.js","sourceRoot":"","sources":["../../../src/setup/__tests__/setup-commands.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=state-machine.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-machine.test.d.ts","sourceRoot":"","sources":["../../../src/setup/__tests__/state-machine.test.ts"],"names":[],"mappings":""}