@productbrain/cli 0.1.0-beta.997 → 0.1.0-beta.9975

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 (1428) hide show
  1. package/README.md +11 -2
  2. package/dist/__tests__/adapters.test.js +79 -53
  3. package/dist/__tests__/adapters.test.js.map +1 -1
  4. package/dist/__tests__/adminConfig.test.d.ts +18 -0
  5. package/dist/__tests__/adminConfig.test.d.ts.map +1 -0
  6. package/dist/__tests__/adminConfig.test.js +221 -0
  7. package/dist/__tests__/adminConfig.test.js.map +1 -0
  8. package/dist/__tests__/batch-transformations.test.js +2 -26
  9. package/dist/__tests__/batch-transformations.test.js.map +1 -1
  10. package/dist/__tests__/capture-receipt-coaching.test.d.ts +2 -0
  11. package/dist/__tests__/capture-receipt-coaching.test.d.ts.map +1 -0
  12. package/dist/__tests__/capture-receipt-coaching.test.js +109 -0
  13. package/dist/__tests__/capture-receipt-coaching.test.js.map +1 -0
  14. package/dist/__tests__/capture-receipt-role-hint.test.d.ts +2 -0
  15. package/dist/__tests__/capture-receipt-role-hint.test.d.ts.map +1 -0
  16. package/dist/__tests__/capture-receipt-role-hint.test.js +67 -0
  17. package/dist/__tests__/capture-receipt-role-hint.test.js.map +1 -0
  18. package/dist/__tests__/capture-receipt-spine-floor.test.d.ts +2 -0
  19. package/dist/__tests__/capture-receipt-spine-floor.test.d.ts.map +1 -0
  20. package/dist/__tests__/capture-receipt-spine-floor.test.js +45 -0
  21. package/dist/__tests__/capture-receipt-spine-floor.test.js.map +1 -0
  22. package/dist/__tests__/capture.test.js +1337 -181
  23. package/dist/__tests__/capture.test.js.map +1 -1
  24. package/dist/__tests__/client-binding-guard.test.d.ts +2 -0
  25. package/dist/__tests__/client-binding-guard.test.d.ts.map +1 -0
  26. package/dist/__tests__/client-binding-guard.test.js +84 -0
  27. package/dist/__tests__/client-binding-guard.test.js.map +1 -0
  28. package/dist/__tests__/coaching-mirror-drift.test.d.ts +2 -0
  29. package/dist/__tests__/coaching-mirror-drift.test.d.ts.map +1 -0
  30. package/dist/__tests__/coaching-mirror-drift.test.js +47 -0
  31. package/dist/__tests__/coaching-mirror-drift.test.js.map +1 -0
  32. package/dist/__tests__/codex-prep-parity.test.d.ts +2 -0
  33. package/dist/__tests__/codex-prep-parity.test.d.ts.map +1 -0
  34. package/dist/__tests__/codex-prep-parity.test.js +84 -0
  35. package/dist/__tests__/codex-prep-parity.test.js.map +1 -0
  36. package/dist/__tests__/collection-registry-seed-drift.test.d.ts +2 -0
  37. package/dist/__tests__/collection-registry-seed-drift.test.d.ts.map +1 -0
  38. package/dist/__tests__/collection-registry-seed-drift.test.js +102 -0
  39. package/dist/__tests__/collection-registry-seed-drift.test.js.map +1 -0
  40. package/dist/__tests__/config-prod-fallthrough.test.d.ts +2 -0
  41. package/dist/__tests__/config-prod-fallthrough.test.d.ts.map +1 -0
  42. package/dist/__tests__/config-prod-fallthrough.test.js +93 -0
  43. package/dist/__tests__/config-prod-fallthrough.test.js.map +1 -0
  44. package/dist/__tests__/config.test.js +559 -40
  45. package/dist/__tests__/config.test.js.map +1 -1
  46. package/dist/__tests__/constellation.test.js +26 -14
  47. package/dist/__tests__/constellation.test.js.map +1 -1
  48. package/dist/__tests__/conversation.test.d.ts +2 -0
  49. package/dist/__tests__/conversation.test.d.ts.map +1 -0
  50. package/dist/__tests__/conversation.test.js +113 -0
  51. package/dist/__tests__/conversation.test.js.map +1 -0
  52. package/dist/__tests__/entry-formatter.test.d.ts +2 -0
  53. package/dist/__tests__/entry-formatter.test.d.ts.map +1 -0
  54. package/dist/__tests__/entry-formatter.test.js +159 -0
  55. package/dist/__tests__/entry-formatter.test.js.map +1 -0
  56. package/dist/__tests__/entry-preflight.test.d.ts +2 -0
  57. package/dist/__tests__/entry-preflight.test.d.ts.map +1 -0
  58. package/dist/__tests__/entry-preflight.test.js +58 -0
  59. package/dist/__tests__/entry-preflight.test.js.map +1 -0
  60. package/dist/__tests__/entryAccept-batch.test.d.ts +2 -0
  61. package/dist/__tests__/entryAccept-batch.test.d.ts.map +1 -0
  62. package/dist/__tests__/entryAccept-batch.test.js +305 -0
  63. package/dist/__tests__/entryAccept-batch.test.js.map +1 -0
  64. package/dist/__tests__/entryAccept.test.d.ts +2 -0
  65. package/dist/__tests__/entryAccept.test.d.ts.map +1 -0
  66. package/dist/__tests__/entryAccept.test.js +526 -0
  67. package/dist/__tests__/entryAccept.test.js.map +1 -0
  68. package/dist/__tests__/entryDiscardResolve.test.d.ts +2 -0
  69. package/dist/__tests__/entryDiscardResolve.test.d.ts.map +1 -0
  70. package/dist/__tests__/entryDiscardResolve.test.js +28 -0
  71. package/dist/__tests__/entryDiscardResolve.test.js.map +1 -0
  72. package/dist/__tests__/entryOwn.test.d.ts +2 -0
  73. package/dist/__tests__/entryOwn.test.d.ts.map +1 -0
  74. package/dist/__tests__/entryOwn.test.js +50 -0
  75. package/dist/__tests__/entryOwn.test.js.map +1 -0
  76. package/dist/__tests__/entryTick.test.d.ts +2 -0
  77. package/dist/__tests__/entryTick.test.d.ts.map +1 -0
  78. package/dist/__tests__/entryTick.test.js +40 -0
  79. package/dist/__tests__/entryTick.test.js.map +1 -0
  80. package/dist/__tests__/envelope-contract.test.js +2 -0
  81. package/dist/__tests__/envelope-contract.test.js.map +1 -1
  82. package/dist/__tests__/errors.test.js +41 -0
  83. package/dist/__tests__/errors.test.js.map +1 -1
  84. package/dist/__tests__/fields.test.js +14 -3
  85. package/dist/__tests__/fields.test.js.map +1 -1
  86. package/dist/__tests__/gateway-dry-run-timeout.test.d.ts +2 -0
  87. package/dist/__tests__/gateway-dry-run-timeout.test.d.ts.map +1 -0
  88. package/dist/__tests__/gateway-dry-run-timeout.test.js +70 -0
  89. package/dist/__tests__/gateway-dry-run-timeout.test.js.map +1 -0
  90. package/dist/__tests__/gateway-timeout-body-phase.test.d.ts +2 -0
  91. package/dist/__tests__/gateway-timeout-body-phase.test.d.ts.map +1 -0
  92. package/dist/__tests__/gateway-timeout-body-phase.test.js +116 -0
  93. package/dist/__tests__/gateway-timeout-body-phase.test.js.map +1 -0
  94. package/dist/__tests__/handshake-augment.test.js +4 -20
  95. package/dist/__tests__/handshake-augment.test.js.map +1 -1
  96. package/dist/__tests__/handshake-dormancy.test.js +10 -193
  97. package/dist/__tests__/handshake-dormancy.test.js.map +1 -1
  98. package/dist/__tests__/handshake-formatter.test.js +44 -0
  99. package/dist/__tests__/handshake-formatter.test.js.map +1 -1
  100. package/dist/__tests__/handshake-preview.test.js +271 -612
  101. package/dist/__tests__/handshake-preview.test.js.map +1 -1
  102. package/dist/__tests__/handshake-session-threading.test.d.ts +2 -0
  103. package/dist/__tests__/handshake-session-threading.test.d.ts.map +1 -0
  104. package/dist/__tests__/handshake-session-threading.test.js +185 -0
  105. package/dist/__tests__/handshake-session-threading.test.js.map +1 -0
  106. package/dist/__tests__/handshake.e2e.test.js +7 -1033
  107. package/dist/__tests__/handshake.e2e.test.js.map +1 -1
  108. package/dist/__tests__/handshake.test.js +523 -308
  109. package/dist/__tests__/handshake.test.js.map +1 -1
  110. package/dist/__tests__/health-gap-kinds-drift.test.d.ts +2 -0
  111. package/dist/__tests__/health-gap-kinds-drift.test.d.ts.map +1 -0
  112. package/dist/__tests__/health-gap-kinds-drift.test.js +43 -0
  113. package/dist/__tests__/health-gap-kinds-drift.test.js.map +1 -0
  114. package/dist/__tests__/hook-intents.test.js +3 -3
  115. package/dist/__tests__/hook-intents.test.js.map +1 -1
  116. package/dist/__tests__/ingest.test.js +9 -0
  117. package/dist/__tests__/ingest.test.js.map +1 -1
  118. package/dist/__tests__/init.test.js +51 -14
  119. package/dist/__tests__/init.test.js.map +1 -1
  120. package/dist/__tests__/kernel-value-sets-drift.test.d.ts +2 -0
  121. package/dist/__tests__/kernel-value-sets-drift.test.d.ts.map +1 -0
  122. package/dist/__tests__/kernel-value-sets-drift.test.js +46 -0
  123. package/dist/__tests__/kernel-value-sets-drift.test.js.map +1 -0
  124. package/dist/__tests__/kernel-value-sets-generator.test.d.ts +2 -0
  125. package/dist/__tests__/kernel-value-sets-generator.test.d.ts.map +1 -0
  126. package/dist/__tests__/kernel-value-sets-generator.test.js +108 -0
  127. package/dist/__tests__/kernel-value-sets-generator.test.js.map +1 -0
  128. package/dist/__tests__/login.test.js +18 -1
  129. package/dist/__tests__/login.test.js.map +1 -1
  130. package/dist/__tests__/method-registry.integration.test.js +2 -3
  131. package/dist/__tests__/method-registry.integration.test.js.map +1 -1
  132. package/dist/__tests__/method-registry.test.d.ts +6 -8
  133. package/dist/__tests__/method-registry.test.d.ts.map +1 -1
  134. package/dist/__tests__/method-registry.test.js +22 -70
  135. package/dist/__tests__/method-registry.test.js.map +1 -1
  136. package/dist/__tests__/missingPin.test.d.ts +11 -0
  137. package/dist/__tests__/missingPin.test.d.ts.map +1 -0
  138. package/dist/__tests__/missingPin.test.js +232 -0
  139. package/dist/__tests__/missingPin.test.js.map +1 -0
  140. package/dist/__tests__/notice-marker.test.js +146 -11
  141. package/dist/__tests__/notice-marker.test.js.map +1 -1
  142. package/dist/__tests__/onboarding.test.js +29 -5
  143. package/dist/__tests__/onboarding.test.js.map +1 -1
  144. package/dist/__tests__/onboardingFallback.test.d.ts +2 -0
  145. package/dist/__tests__/onboardingFallback.test.d.ts.map +1 -0
  146. package/dist/__tests__/onboardingFallback.test.js +74 -0
  147. package/dist/__tests__/onboardingFallback.test.js.map +1 -0
  148. package/dist/__tests__/orient.test.js +367 -38
  149. package/dist/__tests__/orient.test.js.map +1 -1
  150. package/dist/__tests__/perimeter.test.js +1 -1
  151. package/dist/__tests__/perimeter.test.js.map +1 -1
  152. package/dist/__tests__/preview-key-refresh.test.d.ts +2 -0
  153. package/dist/__tests__/preview-key-refresh.test.d.ts.map +1 -0
  154. package/dist/__tests__/preview-key-refresh.test.js +126 -0
  155. package/dist/__tests__/preview-key-refresh.test.js.map +1 -0
  156. package/dist/__tests__/profiles.test.js +498 -8
  157. package/dist/__tests__/profiles.test.js.map +1 -1
  158. package/dist/__tests__/prompts.test.js +18 -1
  159. package/dist/__tests__/prompts.test.js.map +1 -1
  160. package/dist/__tests__/proof-run.test.d.ts +2 -0
  161. package/dist/__tests__/proof-run.test.d.ts.map +1 -0
  162. package/dist/__tests__/proof-run.test.js +255 -0
  163. package/dist/__tests__/proof-run.test.js.map +1 -0
  164. package/dist/__tests__/rate-limit-resilience.test.d.ts +7 -0
  165. package/dist/__tests__/rate-limit-resilience.test.d.ts.map +1 -0
  166. package/dist/__tests__/rate-limit-resilience.test.js +209 -0
  167. package/dist/__tests__/rate-limit-resilience.test.js.map +1 -0
  168. package/dist/__tests__/read-target-notice.test.d.ts +2 -0
  169. package/dist/__tests__/read-target-notice.test.d.ts.map +1 -0
  170. package/dist/__tests__/read-target-notice.test.js +125 -0
  171. package/dist/__tests__/read-target-notice.test.js.map +1 -0
  172. package/dist/__tests__/relate.test.js +246 -14
  173. package/dist/__tests__/relate.test.js.map +1 -1
  174. package/dist/__tests__/reply-commands-registered.test.d.ts +2 -0
  175. package/dist/__tests__/reply-commands-registered.test.d.ts.map +1 -0
  176. package/dist/__tests__/reply-commands-registered.test.js +81 -0
  177. package/dist/__tests__/reply-commands-registered.test.js.map +1 -0
  178. package/dist/__tests__/repo-detect.test.js +18 -38
  179. package/dist/__tests__/repo-detect.test.js.map +1 -1
  180. package/dist/__tests__/reportedProfile.test.d.ts +2 -0
  181. package/dist/__tests__/reportedProfile.test.d.ts.map +1 -0
  182. package/dist/__tests__/reportedProfile.test.js +328 -0
  183. package/dist/__tests__/reportedProfile.test.js.map +1 -0
  184. package/dist/__tests__/restore.test.d.ts +2 -0
  185. package/dist/__tests__/restore.test.d.ts.map +1 -0
  186. package/dist/__tests__/restore.test.js +85 -0
  187. package/dist/__tests__/restore.test.js.map +1 -0
  188. package/dist/__tests__/route-latency-budget.test.d.ts +2 -0
  189. package/dist/__tests__/route-latency-budget.test.d.ts.map +1 -0
  190. package/dist/__tests__/route-latency-budget.test.js +106 -0
  191. package/dist/__tests__/route-latency-budget.test.js.map +1 -0
  192. package/dist/__tests__/runner.test.js +59 -44
  193. package/dist/__tests__/runner.test.js.map +1 -1
  194. package/dist/__tests__/session-binding-refusal-tenant.test.d.ts +2 -0
  195. package/dist/__tests__/session-binding-refusal-tenant.test.d.ts.map +1 -0
  196. package/dist/__tests__/session-binding-refusal-tenant.test.js +112 -0
  197. package/dist/__tests__/session-binding-refusal-tenant.test.js.map +1 -0
  198. package/dist/__tests__/session-close-loop.test.d.ts +2 -0
  199. package/dist/__tests__/session-close-loop.test.d.ts.map +1 -0
  200. package/dist/__tests__/session-close-loop.test.js +213 -0
  201. package/dist/__tests__/session-close-loop.test.js.map +1 -0
  202. package/dist/__tests__/session-label.test.d.ts +2 -0
  203. package/dist/__tests__/session-label.test.d.ts.map +1 -0
  204. package/dist/__tests__/session-label.test.js +46 -0
  205. package/dist/__tests__/session-label.test.js.map +1 -0
  206. package/dist/__tests__/session-list-show.test.d.ts +2 -0
  207. package/dist/__tests__/session-list-show.test.d.ts.map +1 -0
  208. package/dist/__tests__/session-list-show.test.js +173 -0
  209. package/dist/__tests__/session-list-show.test.js.map +1 -0
  210. package/dist/__tests__/session-pinned-role.test.d.ts +2 -0
  211. package/dist/__tests__/session-pinned-role.test.d.ts.map +1 -0
  212. package/dist/__tests__/session-pinned-role.test.js +257 -0
  213. package/dist/__tests__/session-pinned-role.test.js.map +1 -0
  214. package/dist/__tests__/session-reset.test.d.ts +2 -0
  215. package/dist/__tests__/session-reset.test.d.ts.map +1 -0
  216. package/dist/__tests__/session-reset.test.js +138 -0
  217. package/dist/__tests__/session-reset.test.js.map +1 -0
  218. package/dist/__tests__/session-resume-backstop.test.d.ts +2 -0
  219. package/dist/__tests__/session-resume-backstop.test.d.ts.map +1 -0
  220. package/dist/__tests__/session-resume-backstop.test.js +139 -0
  221. package/dist/__tests__/session-resume-backstop.test.js.map +1 -0
  222. package/dist/__tests__/session-role-name-sanitize.test.d.ts +2 -0
  223. package/dist/__tests__/session-role-name-sanitize.test.d.ts.map +1 -0
  224. package/dist/__tests__/session-role-name-sanitize.test.js +129 -0
  225. package/dist/__tests__/session-role-name-sanitize.test.js.map +1 -0
  226. package/dist/__tests__/session-start-key-refresh.test.d.ts +2 -0
  227. package/dist/__tests__/session-start-key-refresh.test.d.ts.map +1 -0
  228. package/dist/__tests__/session-start-key-refresh.test.js +197 -0
  229. package/dist/__tests__/session-start-key-refresh.test.js.map +1 -0
  230. package/dist/__tests__/session-state-machine.test.js +190 -9
  231. package/dist/__tests__/session-state-machine.test.js.map +1 -1
  232. package/dist/__tests__/session-switch.test.js +218 -4
  233. package/dist/__tests__/session-switch.test.js.map +1 -1
  234. package/dist/__tests__/session-touch.test.js +6 -1
  235. package/dist/__tests__/session-touch.test.js.map +1 -1
  236. package/dist/__tests__/sessionBinding.test.d.ts +2 -0
  237. package/dist/__tests__/sessionBinding.test.d.ts.map +1 -0
  238. package/dist/__tests__/sessionBinding.test.js +118 -0
  239. package/dist/__tests__/sessionBinding.test.js.map +1 -0
  240. package/dist/__tests__/sessionByIdLookup.test.d.ts +2 -0
  241. package/dist/__tests__/sessionByIdLookup.test.d.ts.map +1 -0
  242. package/dist/__tests__/sessionByIdLookup.test.js +63 -0
  243. package/dist/__tests__/sessionByIdLookup.test.js.map +1 -0
  244. package/dist/__tests__/skill-vocabulary.test.d.ts +1 -1
  245. package/dist/__tests__/skill-vocabulary.test.js +7 -2
  246. package/dist/__tests__/skill-vocabulary.test.js.map +1 -1
  247. package/dist/__tests__/state.test.js +21 -1
  248. package/dist/__tests__/state.test.js.map +1 -1
  249. package/dist/__tests__/stillTrue.test.d.ts +2 -0
  250. package/dist/__tests__/stillTrue.test.d.ts.map +1 -0
  251. package/dist/__tests__/stillTrue.test.js +52 -0
  252. package/dist/__tests__/stillTrue.test.js.map +1 -0
  253. package/dist/__tests__/strip.test.js +57 -3
  254. package/dist/__tests__/strip.test.js.map +1 -1
  255. package/dist/__tests__/tenant-notice-write-path.test.d.ts +2 -0
  256. package/dist/__tests__/tenant-notice-write-path.test.d.ts.map +1 -0
  257. package/dist/__tests__/tenant-notice-write-path.test.js +169 -0
  258. package/dist/__tests__/tenant-notice-write-path.test.js.map +1 -0
  259. package/dist/__tests__/update.test.js +458 -8
  260. package/dist/__tests__/update.test.js.map +1 -1
  261. package/dist/__tests__/verify-formatter.test.d.ts +2 -0
  262. package/dist/__tests__/verify-formatter.test.d.ts.map +1 -0
  263. package/dist/__tests__/verify-formatter.test.js +85 -0
  264. package/dist/__tests__/verify-formatter.test.js.map +1 -0
  265. package/dist/__tests__/vocabulary-leak.test.d.ts +1 -7
  266. package/dist/__tests__/vocabulary-leak.test.d.ts.map +1 -1
  267. package/dist/__tests__/vocabulary-leak.test.js +7 -114
  268. package/dist/__tests__/vocabulary-leak.test.js.map +1 -1
  269. package/dist/__tests__/workspace.test.js +11 -72
  270. package/dist/__tests__/workspace.test.js.map +1 -1
  271. package/dist/__tests__/workspaceNotice.test.d.ts +2 -0
  272. package/dist/__tests__/workspaceNotice.test.d.ts.map +1 -0
  273. package/dist/__tests__/workspaceNotice.test.js +571 -0
  274. package/dist/__tests__/workspaceNotice.test.js.map +1 -0
  275. package/dist/commands/__tests__/quality.test.d.ts +2 -0
  276. package/dist/commands/__tests__/quality.test.d.ts.map +1 -0
  277. package/dist/commands/__tests__/quality.test.js +156 -0
  278. package/dist/commands/__tests__/quality.test.js.map +1 -0
  279. package/dist/commands/__tests__/rework.test.d.ts +2 -0
  280. package/dist/commands/__tests__/rework.test.d.ts.map +1 -0
  281. package/dist/commands/__tests__/rework.test.js +149 -0
  282. package/dist/commands/__tests__/rework.test.js.map +1 -0
  283. package/dist/commands/__tests__/tensionsList.test.d.ts +2 -0
  284. package/dist/commands/__tests__/tensionsList.test.d.ts.map +1 -0
  285. package/dist/commands/__tests__/tensionsList.test.js +63 -0
  286. package/dist/commands/__tests__/tensionsList.test.js.map +1 -0
  287. package/dist/commands/accept-policy.d.ts +10 -0
  288. package/dist/commands/accept-policy.d.ts.map +1 -0
  289. package/dist/commands/accept-policy.js +107 -0
  290. package/dist/commands/accept-policy.js.map +1 -0
  291. package/dist/commands/admin/cockpit.d.ts +2 -13
  292. package/dist/commands/admin/cockpit.d.ts.map +1 -1
  293. package/dist/commands/admin/cockpit.js +5 -5
  294. package/dist/commands/admin/cockpit.js.map +1 -1
  295. package/dist/commands/admin/index.d.ts +49 -0
  296. package/dist/commands/admin/index.d.ts.map +1 -1
  297. package/dist/commands/admin/index.js +148 -29
  298. package/dist/commands/admin/index.js.map +1 -1
  299. package/dist/commands/admin/index.test.d.ts +2 -0
  300. package/dist/commands/admin/index.test.d.ts.map +1 -0
  301. package/dist/commands/admin/index.test.js +94 -0
  302. package/dist/commands/admin/index.test.js.map +1 -0
  303. package/dist/commands/admin/inspect.d.ts.map +1 -1
  304. package/dist/commands/admin/inspect.js +2 -7
  305. package/dist/commands/admin/inspect.js.map +1 -1
  306. package/dist/commands/admin/probe.d.ts +75 -0
  307. package/dist/commands/admin/probe.d.ts.map +1 -0
  308. package/dist/commands/admin/probe.js +224 -0
  309. package/dist/commands/admin/probe.js.map +1 -0
  310. package/dist/commands/admin/probe.test.d.ts +2 -0
  311. package/dist/commands/admin/probe.test.d.ts.map +1 -0
  312. package/dist/commands/admin/probe.test.js +193 -0
  313. package/dist/commands/admin/probe.test.js.map +1 -0
  314. package/dist/commands/admin/run.d.ts +43 -0
  315. package/dist/commands/admin/run.d.ts.map +1 -0
  316. package/dist/commands/admin/run.js +78 -0
  317. package/dist/commands/admin/run.js.map +1 -0
  318. package/dist/commands/admin/run.test.d.ts +18 -0
  319. package/dist/commands/admin/run.test.d.ts.map +1 -0
  320. package/dist/commands/admin/run.test.js +168 -0
  321. package/dist/commands/admin/run.test.js.map +1 -0
  322. package/dist/commands/admin/seed.d.ts +6 -21
  323. package/dist/commands/admin/seed.d.ts.map +1 -1
  324. package/dist/commands/admin/seed.js +41 -310
  325. package/dist/commands/admin/seed.js.map +1 -1
  326. package/dist/commands/admin/seed.test.d.ts +3 -4
  327. package/dist/commands/admin/seed.test.d.ts.map +1 -1
  328. package/dist/commands/admin/seed.test.js +26 -76
  329. package/dist/commands/admin/seed.test.js.map +1 -1
  330. package/dist/commands/admin/seedRegistryEntries.generated.d.ts.map +1 -1
  331. package/dist/commands/admin/seedRegistryEntries.generated.js +3 -84
  332. package/dist/commands/admin/seedRegistryEntries.generated.js.map +1 -1
  333. package/dist/commands/admin/seedRegistryEntries.test.d.ts +5 -3
  334. package/dist/commands/admin/seedRegistryEntries.test.d.ts.map +1 -1
  335. package/dist/commands/admin/seedRegistryEntries.test.js +60 -26
  336. package/dist/commands/admin/seedRegistryEntries.test.js.map +1 -1
  337. package/dist/commands/admin/seedRowType.d.ts +22 -0
  338. package/dist/commands/admin/seedRowType.d.ts.map +1 -0
  339. package/dist/commands/admin/seedRowType.js +2 -0
  340. package/dist/commands/admin/seedRowType.js.map +1 -0
  341. package/dist/commands/admin/seedStatusColor.d.ts +9 -0
  342. package/dist/commands/admin/seedStatusColor.d.ts.map +1 -0
  343. package/dist/commands/admin/seedStatusColor.js +19 -0
  344. package/dist/commands/admin/seedStatusColor.js.map +1 -0
  345. package/dist/commands/admin/seedStatusColor.test.d.ts +2 -0
  346. package/dist/commands/admin/seedStatusColor.test.d.ts.map +1 -0
  347. package/dist/commands/admin/seedStatusColor.test.js +31 -0
  348. package/dist/commands/admin/seedStatusColor.test.js.map +1 -0
  349. package/dist/commands/brief.d.ts.map +1 -1
  350. package/dist/commands/brief.js +24 -2
  351. package/dist/commands/brief.js.map +1 -1
  352. package/dist/commands/capture.d.ts +17 -9
  353. package/dist/commands/capture.d.ts.map +1 -1
  354. package/dist/commands/capture.js +173 -227
  355. package/dist/commands/capture.js.map +1 -1
  356. package/dist/commands/chain-walk.d.ts.map +1 -1
  357. package/dist/commands/chain-walk.js.map +1 -1
  358. package/dist/commands/changes.d.ts.map +1 -1
  359. package/dist/commands/changes.js.map +1 -1
  360. package/dist/commands/codex-prep.d.ts +11 -1
  361. package/dist/commands/codex-prep.d.ts.map +1 -1
  362. package/dist/commands/codex-prep.js +14 -83
  363. package/dist/commands/codex-prep.js.map +1 -1
  364. package/dist/commands/collections.d.ts +1 -1
  365. package/dist/commands/collections.d.ts.map +1 -1
  366. package/dist/commands/collections.js +1 -1
  367. package/dist/commands/collections.js.map +1 -1
  368. package/dist/commands/conflicts.d.ts +35 -0
  369. package/dist/commands/conflicts.d.ts.map +1 -0
  370. package/dist/commands/conflicts.js +194 -0
  371. package/dist/commands/conflicts.js.map +1 -0
  372. package/dist/commands/conflicts.test.d.ts +2 -0
  373. package/dist/commands/conflicts.test.d.ts.map +1 -0
  374. package/dist/commands/conflicts.test.js +179 -0
  375. package/dist/commands/conflicts.test.js.map +1 -0
  376. package/dist/commands/connect-config.test.js +11 -3
  377. package/dist/commands/connect-config.test.js.map +1 -1
  378. package/dist/commands/connect-context.d.ts +27 -17
  379. package/dist/commands/connect-context.d.ts.map +1 -1
  380. package/dist/commands/connect-context.js +45 -31
  381. package/dist/commands/connect-context.js.map +1 -1
  382. package/dist/commands/connect-context.test.js +91 -53
  383. package/dist/commands/connect-context.test.js.map +1 -1
  384. package/dist/commands/connect-decline.test.d.ts +2 -0
  385. package/dist/commands/connect-decline.test.d.ts.map +1 -0
  386. package/dist/commands/connect-decline.test.js +70 -0
  387. package/dist/commands/connect-decline.test.js.map +1 -0
  388. package/dist/commands/connect-integration.test.js +24 -7
  389. package/dist/commands/connect-integration.test.js.map +1 -1
  390. package/dist/commands/connect-legacy-migration.test.d.ts +2 -0
  391. package/dist/commands/connect-legacy-migration.test.d.ts.map +1 -0
  392. package/dist/commands/connect-legacy-migration.test.js +109 -0
  393. package/dist/commands/connect-legacy-migration.test.js.map +1 -0
  394. package/dist/commands/connect-redeem-failure.test.d.ts +2 -0
  395. package/dist/commands/connect-redeem-failure.test.d.ts.map +1 -0
  396. package/dist/commands/connect-redeem-failure.test.js +134 -0
  397. package/dist/commands/connect-redeem-failure.test.js.map +1 -0
  398. package/dist/commands/connect-screens.d.ts +14 -3
  399. package/dist/commands/connect-screens.d.ts.map +1 -1
  400. package/dist/commands/connect-screens.js +62 -9
  401. package/dist/commands/connect-screens.js.map +1 -1
  402. package/dist/commands/connect-seal.test.d.ts +2 -0
  403. package/dist/commands/connect-seal.test.d.ts.map +1 -0
  404. package/dist/commands/connect-seal.test.js +55 -0
  405. package/dist/commands/connect-seal.test.js.map +1 -0
  406. package/dist/commands/connect.d.ts +14 -11
  407. package/dist/commands/connect.d.ts.map +1 -1
  408. package/dist/commands/connect.js +236 -69
  409. package/dist/commands/connect.js.map +1 -1
  410. package/dist/commands/connect.test.js +226 -23
  411. package/dist/commands/connect.test.js.map +1 -1
  412. package/dist/commands/constellation.d.ts.map +1 -1
  413. package/dist/commands/constellation.js.map +1 -1
  414. package/dist/commands/context.d.ts.map +1 -1
  415. package/dist/commands/context.js.map +1 -1
  416. package/dist/commands/cross-cut.d.ts.map +1 -1
  417. package/dist/commands/cross-cut.js.map +1 -1
  418. package/dist/commands/digest.d.ts +17 -0
  419. package/dist/commands/digest.d.ts.map +1 -0
  420. package/dist/commands/digest.js +58 -0
  421. package/dist/commands/digest.js.map +1 -0
  422. package/dist/commands/digest.test.d.ts +2 -0
  423. package/dist/commands/digest.test.d.ts.map +1 -0
  424. package/dist/commands/digest.test.js +36 -0
  425. package/dist/commands/digest.test.js.map +1 -0
  426. package/dist/commands/direction.d.ts +10 -0
  427. package/dist/commands/direction.d.ts.map +1 -0
  428. package/dist/commands/direction.js +79 -0
  429. package/dist/commands/direction.js.map +1 -0
  430. package/dist/commands/doctor.d.ts.map +1 -1
  431. package/dist/commands/doctor.js +105 -35
  432. package/dist/commands/doctor.js.map +1 -1
  433. package/dist/commands/doctor.test.js +202 -6
  434. package/dist/commands/doctor.test.js.map +1 -1
  435. package/dist/commands/entryAccept.d.ts +26 -0
  436. package/dist/commands/entryAccept.d.ts.map +1 -0
  437. package/dist/commands/entryAccept.js +308 -0
  438. package/dist/commands/entryAccept.js.map +1 -0
  439. package/dist/commands/entryDiscardResolve.d.ts +9 -0
  440. package/dist/commands/entryDiscardResolve.d.ts.map +1 -0
  441. package/dist/commands/entryDiscardResolve.js +27 -0
  442. package/dist/commands/entryDiscardResolve.js.map +1 -0
  443. package/dist/commands/entryOwn.d.ts +5 -0
  444. package/dist/commands/entryOwn.d.ts.map +1 -0
  445. package/dist/commands/entryOwn.js +17 -0
  446. package/dist/commands/entryOwn.js.map +1 -0
  447. package/dist/commands/entryPreflight.d.ts +8 -0
  448. package/dist/commands/entryPreflight.d.ts.map +1 -0
  449. package/dist/commands/entryPreflight.js +48 -0
  450. package/dist/commands/entryPreflight.js.map +1 -0
  451. package/dist/commands/entryTick.d.ts +8 -0
  452. package/dist/commands/entryTick.d.ts.map +1 -0
  453. package/dist/commands/entryTick.js +43 -0
  454. package/dist/commands/entryTick.js.map +1 -0
  455. package/dist/commands/feedback.d.ts +36 -0
  456. package/dist/commands/feedback.d.ts.map +1 -0
  457. package/dist/commands/feedback.js +174 -0
  458. package/dist/commands/feedback.js.map +1 -0
  459. package/dist/commands/feedback.test.d.ts +2 -0
  460. package/dist/commands/feedback.test.d.ts.map +1 -0
  461. package/dist/commands/feedback.test.js +110 -0
  462. package/dist/commands/feedback.test.js.map +1 -0
  463. package/dist/commands/fields.d.ts.map +1 -1
  464. package/dist/commands/fields.js +1 -1
  465. package/dist/commands/fields.js.map +1 -1
  466. package/dist/commands/files.d.ts +26 -0
  467. package/dist/commands/files.d.ts.map +1 -0
  468. package/dist/commands/files.js +160 -0
  469. package/dist/commands/files.js.map +1 -0
  470. package/dist/commands/files.test.d.ts +2 -0
  471. package/dist/commands/files.test.d.ts.map +1 -0
  472. package/dist/commands/files.test.js +278 -0
  473. package/dist/commands/files.test.js.map +1 -0
  474. package/dist/commands/handshake.d.ts +42 -186
  475. package/dist/commands/handshake.d.ts.map +1 -1
  476. package/dist/commands/handshake.js +469 -1540
  477. package/dist/commands/handshake.js.map +1 -1
  478. package/dist/commands/handshakeCursorSkillCleanup.d.ts +36 -0
  479. package/dist/commands/handshakeCursorSkillCleanup.d.ts.map +1 -0
  480. package/dist/commands/handshakeCursorSkillCleanup.js +110 -0
  481. package/dist/commands/handshakeCursorSkillCleanup.js.map +1 -0
  482. package/dist/commands/handshakeDriftClassification.d.ts +33 -0
  483. package/dist/commands/handshakeDriftClassification.d.ts.map +1 -0
  484. package/dist/commands/handshakeDriftClassification.js +62 -0
  485. package/dist/commands/handshakeDriftClassification.js.map +1 -0
  486. package/dist/commands/history.d.ts +30 -0
  487. package/dist/commands/history.d.ts.map +1 -0
  488. package/dist/commands/history.js +62 -0
  489. package/dist/commands/history.js.map +1 -0
  490. package/dist/commands/history.test.d.ts +2 -0
  491. package/dist/commands/history.test.d.ts.map +1 -0
  492. package/dist/commands/history.test.js +106 -0
  493. package/dist/commands/history.test.js.map +1 -0
  494. package/dist/commands/ingest.d.ts.map +1 -1
  495. package/dist/commands/ingest.js +9 -0
  496. package/dist/commands/ingest.js.map +1 -1
  497. package/dist/commands/init.d.ts +1 -1
  498. package/dist/commands/init.d.ts.map +1 -1
  499. package/dist/commands/init.js +22 -13
  500. package/dist/commands/init.js.map +1 -1
  501. package/dist/commands/login.d.ts.map +1 -1
  502. package/dist/commands/login.js +15 -11
  503. package/dist/commands/login.js.map +1 -1
  504. package/dist/commands/organisation.d.ts +12 -0
  505. package/dist/commands/organisation.d.ts.map +1 -0
  506. package/dist/commands/organisation.js +147 -0
  507. package/dist/commands/organisation.js.map +1 -0
  508. package/dist/commands/organisation.test.d.ts +2 -0
  509. package/dist/commands/organisation.test.d.ts.map +1 -0
  510. package/dist/commands/organisation.test.js +116 -0
  511. package/dist/commands/organisation.test.js.map +1 -0
  512. package/dist/commands/organisationHierarchy.d.ts +8 -0
  513. package/dist/commands/organisationHierarchy.d.ts.map +1 -0
  514. package/dist/commands/organisationHierarchy.js +75 -0
  515. package/dist/commands/organisationHierarchy.js.map +1 -0
  516. package/dist/commands/organisationHierarchy.test.d.ts +2 -0
  517. package/dist/commands/organisationHierarchy.test.d.ts.map +1 -0
  518. package/dist/commands/organisationHierarchy.test.js +72 -0
  519. package/dist/commands/organisationHierarchy.test.js.map +1 -0
  520. package/dist/commands/organisationWrite.d.ts +18 -0
  521. package/dist/commands/organisationWrite.d.ts.map +1 -0
  522. package/dist/commands/organisationWrite.js +71 -0
  523. package/dist/commands/organisationWrite.js.map +1 -0
  524. package/dist/commands/orient.d.ts +45 -96
  525. package/dist/commands/orient.d.ts.map +1 -1
  526. package/dist/commands/orient.js +135 -29
  527. package/dist/commands/orient.js.map +1 -1
  528. package/dist/commands/outcome.d.ts +91 -0
  529. package/dist/commands/outcome.d.ts.map +1 -0
  530. package/dist/commands/outcome.js +204 -0
  531. package/dist/commands/outcome.js.map +1 -0
  532. package/dist/commands/outcome.test.d.ts +2 -0
  533. package/dist/commands/outcome.test.d.ts.map +1 -0
  534. package/dist/commands/outcome.test.js +308 -0
  535. package/dist/commands/outcome.test.js.map +1 -0
  536. package/dist/commands/people.d.ts +6 -0
  537. package/dist/commands/people.d.ts.map +1 -0
  538. package/dist/commands/people.js +22 -0
  539. package/dist/commands/people.js.map +1 -0
  540. package/dist/commands/people.test.d.ts +2 -0
  541. package/dist/commands/people.test.d.ts.map +1 -0
  542. package/dist/commands/people.test.js +61 -0
  543. package/dist/commands/people.test.js.map +1 -0
  544. package/dist/commands/profile.d.ts +23 -2
  545. package/dist/commands/profile.d.ts.map +1 -1
  546. package/dist/commands/profile.js +192 -35
  547. package/dist/commands/profile.js.map +1 -1
  548. package/dist/commands/proof-run.d.ts +51 -0
  549. package/dist/commands/proof-run.d.ts.map +1 -0
  550. package/dist/commands/proof-run.js +209 -0
  551. package/dist/commands/proof-run.js.map +1 -0
  552. package/dist/commands/quality.d.ts +16 -0
  553. package/dist/commands/quality.d.ts.map +1 -0
  554. package/dist/commands/quality.js +29 -0
  555. package/dist/commands/quality.js.map +1 -0
  556. package/dist/commands/questions.d.ts +23 -0
  557. package/dist/commands/questions.d.ts.map +1 -0
  558. package/dist/commands/questions.js +238 -0
  559. package/dist/commands/questions.js.map +1 -0
  560. package/dist/commands/questions.test.d.ts +2 -0
  561. package/dist/commands/questions.test.d.ts.map +1 -0
  562. package/dist/commands/questions.test.js +159 -0
  563. package/dist/commands/questions.test.js.map +1 -0
  564. package/dist/commands/relate.d.ts +1 -0
  565. package/dist/commands/relate.d.ts.map +1 -1
  566. package/dist/commands/relate.js +85 -13
  567. package/dist/commands/relate.js.map +1 -1
  568. package/dist/commands/restore.d.ts +2 -0
  569. package/dist/commands/restore.d.ts.map +1 -0
  570. package/dist/commands/restore.js +83 -0
  571. package/dist/commands/restore.js.map +1 -0
  572. package/dist/commands/rework.d.ts +24 -0
  573. package/dist/commands/rework.d.ts.map +1 -0
  574. package/dist/commands/rework.js +97 -0
  575. package/dist/commands/rework.js.map +1 -0
  576. package/dist/commands/role.d.ts +67 -0
  577. package/dist/commands/role.d.ts.map +1 -0
  578. package/dist/commands/role.js +164 -0
  579. package/dist/commands/role.js.map +1 -0
  580. package/dist/commands/role.test.d.ts +2 -0
  581. package/dist/commands/role.test.d.ts.map +1 -0
  582. package/dist/commands/role.test.js +290 -0
  583. package/dist/commands/role.test.js.map +1 -0
  584. package/dist/commands/scoreboard.d.ts +26 -0
  585. package/dist/commands/scoreboard.d.ts.map +1 -0
  586. package/dist/commands/scoreboard.js +40 -0
  587. package/dist/commands/scoreboard.js.map +1 -0
  588. package/dist/commands/search.d.ts +3 -0
  589. package/dist/commands/search.d.ts.map +1 -1
  590. package/dist/commands/search.js +7 -1
  591. package/dist/commands/search.js.map +1 -1
  592. package/dist/commands/session.d.ts +60 -7
  593. package/dist/commands/session.d.ts.map +1 -1
  594. package/dist/commands/session.js +409 -98
  595. package/dist/commands/session.js.map +1 -1
  596. package/dist/commands/status.d.ts +7 -0
  597. package/dist/commands/status.d.ts.map +1 -0
  598. package/dist/commands/status.js +102 -0
  599. package/dist/commands/status.js.map +1 -0
  600. package/dist/commands/status.test.d.ts +2 -0
  601. package/dist/commands/status.test.d.ts.map +1 -0
  602. package/dist/commands/status.test.js +75 -0
  603. package/dist/commands/status.test.js.map +1 -0
  604. package/dist/commands/stillTrue.d.ts +14 -0
  605. package/dist/commands/stillTrue.d.ts.map +1 -0
  606. package/dist/commands/stillTrue.js +48 -0
  607. package/dist/commands/stillTrue.js.map +1 -0
  608. package/dist/commands/tensionsList.d.ts +5 -0
  609. package/dist/commands/tensionsList.d.ts.map +1 -0
  610. package/dist/commands/tensionsList.js +27 -0
  611. package/dist/commands/tensionsList.js.map +1 -0
  612. package/dist/commands/update.d.ts +21 -0
  613. package/dist/commands/update.d.ts.map +1 -1
  614. package/dist/commands/update.js +155 -41
  615. package/dist/commands/update.js.map +1 -1
  616. package/dist/commands/usage.d.ts.map +1 -1
  617. package/dist/commands/usage.js +0 -18
  618. package/dist/commands/usage.js.map +1 -1
  619. package/dist/commands/verify.d.ts.map +1 -1
  620. package/dist/commands/verify.js +5 -0
  621. package/dist/commands/verify.js.map +1 -1
  622. package/dist/commands/welcome.d.ts.map +1 -1
  623. package/dist/commands/welcome.js +5 -2
  624. package/dist/commands/welcome.js.map +1 -1
  625. package/dist/commands/whoami.d.ts +10 -2
  626. package/dist/commands/whoami.d.ts.map +1 -1
  627. package/dist/commands/whoami.js +76 -20
  628. package/dist/commands/whoami.js.map +1 -1
  629. package/dist/commands/whoami.test.js +86 -6
  630. package/dist/commands/whoami.test.js.map +1 -1
  631. package/dist/commands/workspace.d.ts +7 -74
  632. package/dist/commands/workspace.d.ts.map +1 -1
  633. package/dist/commands/workspace.js +9 -70
  634. package/dist/commands/workspace.js.map +1 -1
  635. package/dist/formatters/__tests__/orient-plannedWorkCut.test.d.ts +2 -0
  636. package/dist/formatters/__tests__/orient-plannedWorkCut.test.d.ts.map +1 -0
  637. package/dist/formatters/__tests__/orient-plannedWorkCut.test.js +49 -0
  638. package/dist/formatters/__tests__/orient-plannedWorkCut.test.js.map +1 -0
  639. package/dist/formatters/__tests__/orient-provenance.test.d.ts +2 -3
  640. package/dist/formatters/__tests__/orient-provenance.test.d.ts.map +1 -1
  641. package/dist/formatters/__tests__/orient-provenance.test.js +39 -174
  642. package/dist/formatters/__tests__/orient-provenance.test.js.map +1 -1
  643. package/dist/formatters/__tests__/orient-ruleLists.test.d.ts +2 -0
  644. package/dist/formatters/__tests__/orient-ruleLists.test.d.ts.map +1 -0
  645. package/dist/formatters/__tests__/orient-ruleLists.test.js +93 -0
  646. package/dist/formatters/__tests__/orient-ruleLists.test.js.map +1 -0
  647. package/dist/formatters/__tests__/session-list-show.test.d.ts +2 -0
  648. package/dist/formatters/__tests__/session-list-show.test.d.ts.map +1 -0
  649. package/dist/formatters/__tests__/session-list-show.test.js +195 -0
  650. package/dist/formatters/__tests__/session-list-show.test.js.map +1 -0
  651. package/dist/formatters/__tests__/session.test.d.ts +2 -0
  652. package/dist/formatters/__tests__/session.test.d.ts.map +1 -0
  653. package/dist/formatters/__tests__/session.test.js +214 -0
  654. package/dist/formatters/__tests__/session.test.js.map +1 -0
  655. package/dist/formatters/__tests__/tensionsList.test.d.ts +2 -0
  656. package/dist/formatters/__tests__/tensionsList.test.d.ts.map +1 -0
  657. package/dist/formatters/__tests__/tensionsList.test.js +30 -0
  658. package/dist/formatters/__tests__/tensionsList.test.js.map +1 -0
  659. package/dist/formatters/brief.d.ts +6 -15
  660. package/dist/formatters/brief.d.ts.map +1 -1
  661. package/dist/formatters/brief.js +16 -14
  662. package/dist/formatters/brief.js.map +1 -1
  663. package/dist/formatters/brief.test.d.ts +2 -0
  664. package/dist/formatters/brief.test.d.ts.map +1 -0
  665. package/dist/formatters/brief.test.js +21 -0
  666. package/dist/formatters/brief.test.js.map +1 -0
  667. package/dist/formatters/capture.d.ts +17 -10
  668. package/dist/formatters/capture.d.ts.map +1 -1
  669. package/dist/formatters/capture.js +33 -10
  670. package/dist/formatters/capture.js.map +1 -1
  671. package/dist/formatters/coaching.d.ts +53 -0
  672. package/dist/formatters/coaching.d.ts.map +1 -0
  673. package/dist/formatters/coaching.js +51 -0
  674. package/dist/formatters/coaching.js.map +1 -0
  675. package/dist/formatters/collections.d.ts +0 -1
  676. package/dist/formatters/collections.d.ts.map +1 -1
  677. package/dist/formatters/collections.js +14 -5
  678. package/dist/formatters/collections.js.map +1 -1
  679. package/dist/formatters/conflicts.d.ts +69 -0
  680. package/dist/formatters/conflicts.d.ts.map +1 -0
  681. package/dist/formatters/conflicts.js +87 -0
  682. package/dist/formatters/conflicts.js.map +1 -0
  683. package/dist/formatters/conflicts.test.d.ts +2 -0
  684. package/dist/formatters/conflicts.test.d.ts.map +1 -0
  685. package/dist/formatters/conflicts.test.js +136 -0
  686. package/dist/formatters/conflicts.test.js.map +1 -0
  687. package/dist/formatters/context.d.ts +1 -1
  688. package/dist/formatters/context.d.ts.map +1 -1
  689. package/dist/formatters/context.js.map +1 -1
  690. package/dist/formatters/digest.d.ts +13 -0
  691. package/dist/formatters/digest.d.ts.map +1 -0
  692. package/dist/formatters/digest.js +98 -0
  693. package/dist/formatters/digest.js.map +1 -0
  694. package/dist/formatters/digest.test.d.ts +2 -0
  695. package/dist/formatters/digest.test.d.ts.map +1 -0
  696. package/dist/formatters/digest.test.js +166 -0
  697. package/dist/formatters/digest.test.js.map +1 -0
  698. package/dist/formatters/direction.d.ts +48 -0
  699. package/dist/formatters/direction.d.ts.map +1 -0
  700. package/dist/formatters/direction.js +75 -0
  701. package/dist/formatters/direction.js.map +1 -0
  702. package/dist/formatters/direction.test.d.ts +2 -0
  703. package/dist/formatters/direction.test.d.ts.map +1 -0
  704. package/dist/formatters/direction.test.js +70 -0
  705. package/dist/formatters/direction.test.js.map +1 -0
  706. package/dist/formatters/entry.d.ts +46 -3
  707. package/dist/formatters/entry.d.ts.map +1 -1
  708. package/dist/formatters/entry.js +57 -7
  709. package/dist/formatters/entry.js.map +1 -1
  710. package/dist/formatters/entryAccept.d.ts +79 -0
  711. package/dist/formatters/entryAccept.d.ts.map +1 -0
  712. package/dist/formatters/entryAccept.js +78 -0
  713. package/dist/formatters/entryAccept.js.map +1 -0
  714. package/dist/formatters/feedback.d.ts +58 -0
  715. package/dist/formatters/feedback.d.ts.map +1 -0
  716. package/dist/formatters/feedback.js +91 -0
  717. package/dist/formatters/feedback.js.map +1 -0
  718. package/dist/formatters/feedback.test.d.ts +2 -0
  719. package/dist/formatters/feedback.test.d.ts.map +1 -0
  720. package/dist/formatters/feedback.test.js +123 -0
  721. package/dist/formatters/feedback.test.js.map +1 -0
  722. package/dist/formatters/fields.d.ts +7 -1
  723. package/dist/formatters/fields.d.ts.map +1 -1
  724. package/dist/formatters/fields.js +9 -3
  725. package/dist/formatters/fields.js.map +1 -1
  726. package/dist/formatters/fields.test.d.ts +2 -0
  727. package/dist/formatters/fields.test.d.ts.map +1 -0
  728. package/dist/formatters/fields.test.js +42 -0
  729. package/dist/formatters/fields.test.js.map +1 -0
  730. package/dist/formatters/handshake.d.ts +24 -6
  731. package/dist/formatters/handshake.d.ts.map +1 -1
  732. package/dist/formatters/handshake.js +34 -15
  733. package/dist/formatters/handshake.js.map +1 -1
  734. package/dist/formatters/orient.coherencyCheckTag.test.d.ts +2 -0
  735. package/dist/formatters/orient.coherencyCheckTag.test.d.ts.map +1 -0
  736. package/dist/formatters/orient.coherencyCheckTag.test.js +22 -0
  737. package/dist/formatters/orient.coherencyCheckTag.test.js.map +1 -0
  738. package/dist/formatters/orient.d.ts +94 -145
  739. package/dist/formatters/orient.d.ts.map +1 -1
  740. package/dist/formatters/orient.js +144 -183
  741. package/dist/formatters/orient.js.map +1 -1
  742. package/dist/formatters/orient.rcrtMiss.test.d.ts +2 -0
  743. package/dist/formatters/orient.rcrtMiss.test.d.ts.map +1 -0
  744. package/dist/formatters/orient.rcrtMiss.test.js +77 -0
  745. package/dist/formatters/orient.rcrtMiss.test.js.map +1 -0
  746. package/dist/formatters/orient.rituals.test.d.ts +2 -0
  747. package/dist/formatters/orient.rituals.test.d.ts.map +1 -0
  748. package/dist/formatters/orient.rituals.test.js +73 -0
  749. package/dist/formatters/orient.rituals.test.js.map +1 -0
  750. package/dist/formatters/orientDegradation.d.ts +38 -0
  751. package/dist/formatters/orientDegradation.d.ts.map +1 -0
  752. package/dist/formatters/orientDegradation.js +50 -0
  753. package/dist/formatters/orientDegradation.js.map +1 -0
  754. package/dist/formatters/orientDegradation.test.d.ts +2 -0
  755. package/dist/formatters/orientDegradation.test.d.ts.map +1 -0
  756. package/dist/formatters/orientDegradation.test.js +28 -0
  757. package/dist/formatters/orientDegradation.test.js.map +1 -0
  758. package/dist/formatters/orientDirection.d.ts +25 -0
  759. package/dist/formatters/orientDirection.d.ts.map +1 -0
  760. package/dist/formatters/orientDirection.js +7 -0
  761. package/dist/formatters/orientDirection.js.map +1 -0
  762. package/dist/formatters/orientDirection.test.d.ts +2 -0
  763. package/dist/formatters/orientDirection.test.d.ts.map +1 -0
  764. package/dist/formatters/orientDirection.test.js +48 -0
  765. package/dist/formatters/orientDirection.test.js.map +1 -0
  766. package/dist/formatters/orientRetrievalMiss.d.ts +22 -0
  767. package/dist/formatters/orientRetrievalMiss.d.ts.map +1 -0
  768. package/dist/formatters/orientRetrievalMiss.js +17 -0
  769. package/dist/formatters/orientRetrievalMiss.js.map +1 -0
  770. package/dist/formatters/plannedWorkCounts.d.ts +19 -0
  771. package/dist/formatters/plannedWorkCounts.d.ts.map +1 -0
  772. package/dist/formatters/plannedWorkCounts.js +17 -0
  773. package/dist/formatters/plannedWorkCounts.js.map +1 -0
  774. package/dist/formatters/questions.d.ts +72 -0
  775. package/dist/formatters/questions.d.ts.map +1 -0
  776. package/dist/formatters/questions.js +116 -0
  777. package/dist/formatters/questions.js.map +1 -0
  778. package/dist/formatters/questions.test.d.ts +2 -0
  779. package/dist/formatters/questions.test.d.ts.map +1 -0
  780. package/dist/formatters/questions.test.js +144 -0
  781. package/dist/formatters/questions.test.js.map +1 -0
  782. package/dist/formatters/relate.d.ts +13 -2
  783. package/dist/formatters/relate.d.ts.map +1 -1
  784. package/dist/formatters/relate.js +15 -5
  785. package/dist/formatters/relate.js.map +1 -1
  786. package/dist/formatters/relate.test.d.ts +2 -0
  787. package/dist/formatters/relate.test.d.ts.map +1 -0
  788. package/dist/formatters/relate.test.js +91 -0
  789. package/dist/formatters/relate.test.js.map +1 -0
  790. package/dist/formatters/scoreboard.d.ts +11 -0
  791. package/dist/formatters/scoreboard.d.ts.map +1 -0
  792. package/dist/formatters/scoreboard.js +162 -0
  793. package/dist/formatters/scoreboard.js.map +1 -0
  794. package/dist/formatters/scoreboard.test.d.ts +2 -0
  795. package/dist/formatters/scoreboard.test.d.ts.map +1 -0
  796. package/dist/formatters/scoreboard.test.js +301 -0
  797. package/dist/formatters/scoreboard.test.js.map +1 -0
  798. package/dist/formatters/search.d.ts +3 -0
  799. package/dist/formatters/search.d.ts.map +1 -1
  800. package/dist/formatters/search.js +15 -1
  801. package/dist/formatters/search.js.map +1 -1
  802. package/dist/formatters/search.test.d.ts +2 -0
  803. package/dist/formatters/search.test.d.ts.map +1 -0
  804. package/dist/formatters/search.test.js +76 -0
  805. package/dist/formatters/search.test.js.map +1 -0
  806. package/dist/formatters/session-feedback.test.d.ts +2 -0
  807. package/dist/formatters/session-feedback.test.d.ts.map +1 -0
  808. package/dist/formatters/session-feedback.test.js +146 -0
  809. package/dist/formatters/session-feedback.test.js.map +1 -0
  810. package/dist/formatters/session.d.ts +126 -5
  811. package/dist/formatters/session.d.ts.map +1 -1
  812. package/dist/formatters/session.js +321 -21
  813. package/dist/formatters/session.js.map +1 -1
  814. package/dist/formatters/spineCheck.d.ts +14 -0
  815. package/dist/formatters/spineCheck.d.ts.map +1 -0
  816. package/dist/formatters/spineCheck.js +113 -0
  817. package/dist/formatters/spineCheck.js.map +1 -0
  818. package/dist/formatters/spineCheck.test.d.ts +2 -0
  819. package/dist/formatters/spineCheck.test.d.ts.map +1 -0
  820. package/dist/formatters/spineCheck.test.js +76 -0
  821. package/dist/formatters/spineCheck.test.js.map +1 -0
  822. package/dist/formatters/tensionsList.d.ts +17 -0
  823. package/dist/formatters/tensionsList.d.ts.map +1 -0
  824. package/dist/formatters/tensionsList.js +33 -0
  825. package/dist/formatters/tensionsList.js.map +1 -0
  826. package/dist/formatters/update.d.ts +22 -0
  827. package/dist/formatters/update.d.ts.map +1 -1
  828. package/dist/formatters/update.js +36 -7
  829. package/dist/formatters/update.js.map +1 -1
  830. package/dist/formatters/update.test.d.ts +2 -0
  831. package/dist/formatters/update.test.d.ts.map +1 -0
  832. package/dist/formatters/update.test.js +59 -0
  833. package/dist/formatters/update.test.js.map +1 -0
  834. package/dist/formatters/verify.d.ts +12 -4
  835. package/dist/formatters/verify.d.ts.map +1 -1
  836. package/dist/formatters/verify.js +20 -2
  837. package/dist/formatters/verify.js.map +1 -1
  838. package/dist/generated/healthGapKinds.generated.d.ts +12 -0
  839. package/dist/generated/healthGapKinds.generated.d.ts.map +1 -0
  840. package/dist/generated/healthGapKinds.generated.js +16 -0
  841. package/dist/generated/healthGapKinds.generated.js.map +1 -0
  842. package/dist/generated/organisationalAuthorityRefusalCodes.generated.d.ts +12 -0
  843. package/dist/generated/organisationalAuthorityRefusalCodes.generated.d.ts.map +1 -0
  844. package/dist/generated/organisationalAuthorityRefusalCodes.generated.js +11 -0
  845. package/dist/generated/organisationalAuthorityRefusalCodes.generated.js.map +1 -0
  846. package/dist/generated/relationTypes.generated.d.ts +12 -0
  847. package/dist/generated/relationTypes.generated.d.ts.map +1 -0
  848. package/dist/generated/relationTypes.generated.js +11 -0
  849. package/dist/generated/relationTypes.generated.js.map +1 -0
  850. package/dist/generated/routeLatencyBudget.generated.d.ts +56 -0
  851. package/dist/generated/routeLatencyBudget.generated.d.ts.map +1 -0
  852. package/dist/generated/routeLatencyBudget.generated.js +275 -0
  853. package/dist/generated/routeLatencyBudget.generated.js.map +1 -0
  854. package/dist/generated/sourceSurfaces.generated.d.ts +12 -0
  855. package/dist/generated/sourceSurfaces.generated.d.ts.map +1 -0
  856. package/dist/generated/sourceSurfaces.generated.js +11 -0
  857. package/dist/generated/sourceSurfaces.generated.js.map +1 -0
  858. package/dist/generators/adapters.d.ts +39 -6
  859. package/dist/generators/adapters.d.ts.map +1 -1
  860. package/dist/generators/adapters.js +88 -89
  861. package/dist/generators/adapters.js.map +1 -1
  862. package/dist/generators/adapters.test.js +14 -6
  863. package/dist/generators/adapters.test.js.map +1 -1
  864. package/dist/generators/boundary-manifest.real-file.test.d.ts +2 -0
  865. package/dist/generators/boundary-manifest.real-file.test.d.ts.map +1 -0
  866. package/dist/generators/boundary-manifest.real-file.test.js +70 -0
  867. package/dist/generators/boundary-manifest.real-file.test.js.map +1 -0
  868. package/dist/generators/briefing-projections.test.d.ts +2 -0
  869. package/dist/generators/briefing-projections.test.d.ts.map +1 -0
  870. package/dist/generators/briefing-projections.test.js +98 -0
  871. package/dist/generators/briefing-projections.test.js.map +1 -0
  872. package/dist/generators/context-md.d.ts +7 -2
  873. package/dist/generators/context-md.d.ts.map +1 -1
  874. package/dist/generators/context-md.js +14 -53
  875. package/dist/generators/context-md.js.map +1 -1
  876. package/dist/generators/everyone-rules-md.d.ts +9 -0
  877. package/dist/generators/everyone-rules-md.d.ts.map +1 -0
  878. package/dist/generators/everyone-rules-md.js +21 -0
  879. package/dist/generators/everyone-rules-md.js.map +1 -0
  880. package/dist/generators/noProjectionAssets.d.ts +15 -0
  881. package/dist/generators/noProjectionAssets.d.ts.map +1 -0
  882. package/dist/generators/noProjectionAssets.js +6 -0
  883. package/dist/generators/noProjectionAssets.js.map +1 -0
  884. package/dist/generators/portable-knowledge.d.ts +9 -26
  885. package/dist/generators/portable-knowledge.d.ts.map +1 -1
  886. package/dist/generators/portable-knowledge.js +11 -125
  887. package/dist/generators/portable-knowledge.js.map +1 -1
  888. package/dist/generators/portable-knowledge.test.js +82 -267
  889. package/dist/generators/portable-knowledge.test.js.map +1 -1
  890. package/dist/generators/region-projections.d.ts +0 -1
  891. package/dist/generators/region-projections.d.ts.map +1 -1
  892. package/dist/generators/region-projections.js +7 -5
  893. package/dist/generators/region-projections.js.map +1 -1
  894. package/dist/generators/region-projections.test.js +10 -15
  895. package/dist/generators/region-projections.test.js.map +1 -1
  896. package/dist/generators/retired-projections.d.ts +12 -0
  897. package/dist/generators/retired-projections.d.ts.map +1 -0
  898. package/dist/generators/retired-projections.js +75 -0
  899. package/dist/generators/retired-projections.js.map +1 -0
  900. package/dist/generators/retired-projections.test.d.ts +2 -0
  901. package/dist/generators/retired-projections.test.d.ts.map +1 -0
  902. package/dist/generators/retired-projections.test.js +64 -0
  903. package/dist/generators/retired-projections.test.js.map +1 -0
  904. package/dist/handleCliError.d.ts +2 -0
  905. package/dist/handleCliError.d.ts.map +1 -0
  906. package/dist/handleCliError.js +56 -0
  907. package/dist/handleCliError.js.map +1 -0
  908. package/dist/index.d.ts +0 -5
  909. package/dist/index.d.ts.map +1 -1
  910. package/dist/index.js +183 -541
  911. package/dist/index.js.map +1 -1
  912. package/dist/lib/__tests__/legalRelationTypes.test.d.ts +2 -0
  913. package/dist/lib/__tests__/legalRelationTypes.test.d.ts.map +1 -0
  914. package/dist/lib/__tests__/legalRelationTypes.test.js +61 -0
  915. package/dist/lib/__tests__/legalRelationTypes.test.js.map +1 -0
  916. package/dist/lib/__tests__/parseFields.test.d.ts +2 -0
  917. package/dist/lib/__tests__/parseFields.test.d.ts.map +1 -0
  918. package/dist/lib/__tests__/parseFields.test.js +40 -0
  919. package/dist/lib/__tests__/parseFields.test.js.map +1 -0
  920. package/dist/lib/adminConfig.d.ts +48 -0
  921. package/dist/lib/adminConfig.d.ts.map +1 -0
  922. package/dist/lib/adminConfig.js +130 -0
  923. package/dist/lib/adminConfig.js.map +1 -0
  924. package/dist/lib/canonicalRefs.d.ts +27 -8
  925. package/dist/lib/canonicalRefs.d.ts.map +1 -1
  926. package/dist/lib/canonicalRefs.js +25 -6
  927. package/dist/lib/canonicalRefs.js.map +1 -1
  928. package/dist/lib/captureGrounding.d.ts +48 -0
  929. package/dist/lib/captureGrounding.d.ts.map +1 -0
  930. package/dist/lib/captureGrounding.js +54 -0
  931. package/dist/lib/captureGrounding.js.map +1 -0
  932. package/dist/lib/captureGrounding.test.d.ts +2 -0
  933. package/dist/lib/captureGrounding.test.d.ts.map +1 -0
  934. package/dist/lib/captureGrounding.test.js +74 -0
  935. package/dist/lib/captureGrounding.test.js.map +1 -0
  936. package/dist/lib/captureLink.d.ts +26 -0
  937. package/dist/lib/captureLink.d.ts.map +1 -0
  938. package/dist/lib/captureLink.js +110 -0
  939. package/dist/lib/captureLink.js.map +1 -0
  940. package/dist/lib/checklist.d.ts +32 -0
  941. package/dist/lib/checklist.d.ts.map +1 -0
  942. package/dist/lib/checklist.js +77 -0
  943. package/dist/lib/checklist.js.map +1 -0
  944. package/dist/lib/client.d.ts +32 -19
  945. package/dist/lib/client.d.ts.map +1 -1
  946. package/dist/lib/client.js +211 -66
  947. package/dist/lib/client.js.map +1 -1
  948. package/dist/lib/collectionRegistry.d.ts +40 -5
  949. package/dist/lib/collectionRegistry.d.ts.map +1 -1
  950. package/dist/lib/collectionRegistry.js +71 -48
  951. package/dist/lib/collectionRegistry.js.map +1 -1
  952. package/dist/lib/commanderOptions.d.ts +8 -0
  953. package/dist/lib/commanderOptions.d.ts.map +1 -0
  954. package/dist/lib/commanderOptions.js +10 -0
  955. package/dist/lib/commanderOptions.js.map +1 -0
  956. package/dist/lib/compose-wrapup-view.d.ts +56 -0
  957. package/dist/lib/compose-wrapup-view.d.ts.map +1 -0
  958. package/dist/lib/compose-wrapup-view.js +39 -0
  959. package/dist/lib/compose-wrapup-view.js.map +1 -0
  960. package/dist/lib/config.d.ts +65 -102
  961. package/dist/lib/config.d.ts.map +1 -1
  962. package/dist/lib/config.js +164 -286
  963. package/dist/lib/config.js.map +1 -1
  964. package/dist/lib/configResult.d.ts +102 -0
  965. package/dist/lib/configResult.d.ts.map +1 -0
  966. package/dist/lib/configResult.js +179 -0
  967. package/dist/lib/configResult.js.map +1 -0
  968. package/dist/lib/connectProfileName.d.ts +36 -0
  969. package/dist/lib/connectProfileName.d.ts.map +1 -0
  970. package/dist/lib/connectProfileName.js +72 -0
  971. package/dist/lib/connectProfileName.js.map +1 -0
  972. package/dist/lib/connectProfileName.test.d.ts +2 -0
  973. package/dist/lib/connectProfileName.test.d.ts.map +1 -0
  974. package/dist/lib/connectProfileName.test.js +100 -0
  975. package/dist/lib/connectProfileName.test.js.map +1 -0
  976. package/dist/lib/constants.d.ts +3 -1
  977. package/dist/lib/constants.d.ts.map +1 -1
  978. package/dist/lib/constants.js +6 -1
  979. package/dist/lib/constants.js.map +1 -1
  980. package/dist/lib/conversation.d.ts +36 -0
  981. package/dist/lib/conversation.d.ts.map +1 -0
  982. package/dist/lib/conversation.js +66 -0
  983. package/dist/lib/conversation.js.map +1 -0
  984. package/dist/lib/createEntryResult.d.ts +34 -0
  985. package/dist/lib/createEntryResult.d.ts.map +1 -0
  986. package/dist/lib/createEntryResult.js +12 -0
  987. package/dist/lib/createEntryResult.js.map +1 -0
  988. package/dist/lib/deployment.js +2 -2
  989. package/dist/lib/deployment.js.map +1 -1
  990. package/dist/lib/deployment.test.js +20 -1
  991. package/dist/lib/deployment.test.js.map +1 -1
  992. package/dist/lib/envKeySnapshot.d.ts +10 -0
  993. package/dist/lib/envKeySnapshot.d.ts.map +1 -0
  994. package/dist/lib/envKeySnapshot.js +30 -0
  995. package/dist/lib/envKeySnapshot.js.map +1 -0
  996. package/dist/lib/errors.d.ts +90 -0
  997. package/dist/lib/errors.d.ts.map +1 -1
  998. package/dist/lib/errors.js +83 -0
  999. package/dist/lib/errors.js.map +1 -1
  1000. package/dist/lib/frontmatter.d.ts +55 -0
  1001. package/dist/lib/frontmatter.d.ts.map +1 -0
  1002. package/dist/lib/frontmatter.js +92 -0
  1003. package/dist/lib/frontmatter.js.map +1 -0
  1004. package/dist/lib/frontmatter.test.d.ts +15 -0
  1005. package/dist/lib/frontmatter.test.d.ts.map +1 -0
  1006. package/dist/lib/frontmatter.test.js +98 -0
  1007. package/dist/lib/frontmatter.test.js.map +1 -0
  1008. package/dist/lib/gatewayTimeout.d.ts +88 -0
  1009. package/dist/lib/gatewayTimeout.d.ts.map +1 -0
  1010. package/dist/lib/gatewayTimeout.js +118 -0
  1011. package/dist/lib/gatewayTimeout.js.map +1 -0
  1012. package/dist/lib/gitEnvLeakKeysParity.test.d.ts +2 -0
  1013. package/dist/lib/gitEnvLeakKeysParity.test.d.ts.map +1 -0
  1014. package/dist/lib/gitEnvLeakKeysParity.test.js +73 -0
  1015. package/dist/lib/gitEnvLeakKeysParity.test.js.map +1 -0
  1016. package/dist/lib/glossary.js +1 -1
  1017. package/dist/lib/glossary.js.map +1 -1
  1018. package/dist/lib/hook-intents.js +3 -3
  1019. package/dist/lib/hook-intents.js.map +1 -1
  1020. package/dist/lib/judgeWait.d.ts +50 -0
  1021. package/dist/lib/judgeWait.d.ts.map +1 -0
  1022. package/dist/lib/judgeWait.js +64 -0
  1023. package/dist/lib/judgeWait.js.map +1 -0
  1024. package/dist/lib/kernelEnvelope.d.ts +42 -0
  1025. package/dist/lib/kernelEnvelope.d.ts.map +1 -0
  1026. package/dist/lib/kernelEnvelope.js +67 -0
  1027. package/dist/lib/kernelEnvelope.js.map +1 -0
  1028. package/dist/lib/legalRelationTypes.d.ts +19 -0
  1029. package/dist/lib/legalRelationTypes.d.ts.map +1 -0
  1030. package/dist/lib/legalRelationTypes.js +64 -0
  1031. package/dist/lib/legalRelationTypes.js.map +1 -0
  1032. package/dist/lib/localBinding.d.ts +86 -0
  1033. package/dist/lib/localBinding.d.ts.map +1 -0
  1034. package/dist/lib/localBinding.js +173 -0
  1035. package/dist/lib/localBinding.js.map +1 -0
  1036. package/dist/lib/method-registry.d.ts +16 -11
  1037. package/dist/lib/method-registry.d.ts.map +1 -1
  1038. package/dist/lib/method-registry.js +13 -25
  1039. package/dist/lib/method-registry.js.map +1 -1
  1040. package/dist/lib/normalizeMaterializedFilename.d.ts +3 -3
  1041. package/dist/lib/normalizeMaterializedFilename.js +3 -3
  1042. package/dist/lib/notice-marker.d.ts.map +1 -1
  1043. package/dist/lib/notice-marker.js +186 -16
  1044. package/dist/lib/notice-marker.js.map +1 -1
  1045. package/dist/lib/onboarding-path-b.d.ts.map +1 -1
  1046. package/dist/lib/onboarding-path-b.js +39 -14
  1047. package/dist/lib/onboarding-path-b.js.map +1 -1
  1048. package/dist/lib/onboarding-shared.d.ts +27 -4
  1049. package/dist/lib/onboarding-shared.d.ts.map +1 -1
  1050. package/dist/lib/onboarding-shared.js +54 -20
  1051. package/dist/lib/onboarding-shared.js.map +1 -1
  1052. package/dist/lib/onboarding-shared.test.d.ts +2 -0
  1053. package/dist/lib/onboarding-shared.test.d.ts.map +1 -0
  1054. package/dist/lib/onboarding-shared.test.js +131 -0
  1055. package/dist/lib/onboarding-shared.test.js.map +1 -0
  1056. package/dist/lib/onboarding-topics.js +1 -1
  1057. package/dist/lib/onboarding.d.ts +5 -1
  1058. package/dist/lib/onboarding.d.ts.map +1 -1
  1059. package/dist/lib/onboarding.js +62 -25
  1060. package/dist/lib/onboarding.js.map +1 -1
  1061. package/dist/lib/ownerLine.d.ts +73 -0
  1062. package/dist/lib/ownerLine.d.ts.map +1 -0
  1063. package/dist/lib/ownerLine.js +57 -0
  1064. package/dist/lib/ownerLine.js.map +1 -0
  1065. package/dist/lib/parseFields.d.ts +19 -0
  1066. package/dist/lib/parseFields.d.ts.map +1 -0
  1067. package/dist/lib/parseFields.js +49 -0
  1068. package/dist/lib/parseFields.js.map +1 -0
  1069. package/dist/lib/pinnedRole.d.ts +28 -0
  1070. package/dist/lib/pinnedRole.d.ts.map +1 -0
  1071. package/dist/lib/pinnedRole.js +105 -0
  1072. package/dist/lib/pinnedRole.js.map +1 -0
  1073. package/dist/lib/platformGlossary.d.ts +19 -0
  1074. package/dist/lib/platformGlossary.d.ts.map +1 -0
  1075. package/dist/lib/platformGlossary.js +21 -0
  1076. package/dist/lib/platformGlossary.js.map +1 -0
  1077. package/dist/lib/previewBanner.d.ts +9 -0
  1078. package/dist/lib/previewBanner.d.ts.map +1 -0
  1079. package/dist/lib/previewBanner.js +37 -0
  1080. package/dist/lib/previewBanner.js.map +1 -0
  1081. package/dist/lib/productbrain-files.d.ts +108 -0
  1082. package/dist/lib/productbrain-files.d.ts.map +1 -0
  1083. package/dist/lib/productbrain-files.js +240 -0
  1084. package/dist/lib/productbrain-files.js.map +1 -0
  1085. package/dist/lib/productbrain-files.test.d.ts +2 -0
  1086. package/dist/lib/productbrain-files.test.d.ts.map +1 -0
  1087. package/dist/lib/productbrain-files.test.js +518 -0
  1088. package/dist/lib/productbrain-files.test.js.map +1 -0
  1089. package/dist/lib/profiles.d.ts +52 -4
  1090. package/dist/lib/profiles.d.ts.map +1 -1
  1091. package/dist/lib/profiles.js +72 -21
  1092. package/dist/lib/profiles.js.map +1 -1
  1093. package/dist/lib/projectConfig.d.ts +96 -0
  1094. package/dist/lib/projectConfig.d.ts.map +1 -0
  1095. package/dist/lib/projectConfig.js +185 -0
  1096. package/dist/lib/projectConfig.js.map +1 -0
  1097. package/dist/lib/prompts.d.ts +2 -0
  1098. package/dist/lib/prompts.d.ts.map +1 -1
  1099. package/dist/lib/prompts.js +2 -0
  1100. package/dist/lib/prompts.js.map +1 -1
  1101. package/dist/lib/proseBody.d.ts +14 -0
  1102. package/dist/lib/proseBody.d.ts.map +1 -0
  1103. package/dist/lib/proseBody.js +25 -0
  1104. package/dist/lib/proseBody.js.map +1 -0
  1105. package/dist/lib/rate-limit.d.ts +38 -0
  1106. package/dist/lib/rate-limit.d.ts.map +1 -0
  1107. package/dist/lib/rate-limit.js +83 -0
  1108. package/dist/lib/rate-limit.js.map +1 -0
  1109. package/dist/lib/readinessNotices.d.ts +12 -0
  1110. package/dist/lib/readinessNotices.d.ts.map +1 -0
  1111. package/dist/lib/readinessNotices.js +15 -0
  1112. package/dist/lib/readinessNotices.js.map +1 -0
  1113. package/dist/lib/repo-detect.d.ts +8 -2
  1114. package/dist/lib/repo-detect.d.ts.map +1 -1
  1115. package/dist/lib/repo-detect.js +11 -6
  1116. package/dist/lib/repo-detect.js.map +1 -1
  1117. package/dist/lib/reportedProfile.d.ts +18 -0
  1118. package/dist/lib/reportedProfile.d.ts.map +1 -0
  1119. package/dist/lib/reportedProfile.js +144 -0
  1120. package/dist/lib/reportedProfile.js.map +1 -0
  1121. package/dist/lib/ruleListRender.d.ts +193 -0
  1122. package/dist/lib/ruleListRender.d.ts.map +1 -0
  1123. package/dist/lib/ruleListRender.js +274 -0
  1124. package/dist/lib/ruleListRender.js.map +1 -0
  1125. package/dist/lib/runner.d.ts +9 -1
  1126. package/dist/lib/runner.d.ts.map +1 -1
  1127. package/dist/lib/runner.js +30 -4
  1128. package/dist/lib/runner.js.map +1 -1
  1129. package/dist/lib/seatSentence.d.ts +42 -0
  1130. package/dist/lib/seatSentence.d.ts.map +1 -0
  1131. package/dist/lib/seatSentence.js +25 -0
  1132. package/dist/lib/seatSentence.js.map +1 -0
  1133. package/dist/lib/session.d.ts +86 -12
  1134. package/dist/lib/session.d.ts.map +1 -1
  1135. package/dist/lib/session.js +255 -25
  1136. package/dist/lib/session.js.map +1 -1
  1137. package/dist/lib/sessionBinding.d.ts +61 -0
  1138. package/dist/lib/sessionBinding.d.ts.map +1 -0
  1139. package/dist/lib/sessionBinding.js +125 -0
  1140. package/dist/lib/sessionBinding.js.map +1 -0
  1141. package/dist/lib/sessionNotices.d.ts +54 -0
  1142. package/dist/lib/sessionNotices.d.ts.map +1 -0
  1143. package/dist/lib/sessionNotices.js +130 -0
  1144. package/dist/lib/sessionNotices.js.map +1 -0
  1145. package/dist/lib/sessionNotices.test.d.ts +2 -0
  1146. package/dist/lib/sessionNotices.test.d.ts.map +1 -0
  1147. package/dist/lib/sessionNotices.test.js +55 -0
  1148. package/dist/lib/sessionNotices.test.js.map +1 -0
  1149. package/dist/lib/spineVerdictRead.d.ts +70 -0
  1150. package/dist/lib/spineVerdictRead.d.ts.map +1 -0
  1151. package/dist/lib/spineVerdictRead.js +73 -0
  1152. package/dist/lib/spineVerdictRead.js.map +1 -0
  1153. package/dist/lib/spinner.js +2 -2
  1154. package/dist/lib/spinner.js.map +1 -1
  1155. package/dist/lib/startup-resolution-signals.d.ts +34 -0
  1156. package/dist/lib/startup-resolution-signals.d.ts.map +1 -0
  1157. package/dist/lib/startup-resolution-signals.js +116 -0
  1158. package/dist/lib/startup-resolution-signals.js.map +1 -0
  1159. package/dist/lib/startup-resolution-signals.test.d.ts +2 -0
  1160. package/dist/lib/startup-resolution-signals.test.d.ts.map +1 -0
  1161. package/dist/lib/startup-resolution-signals.test.js +113 -0
  1162. package/dist/lib/startup-resolution-signals.test.js.map +1 -0
  1163. package/dist/lib/startup-signals.d.ts +12 -0
  1164. package/dist/lib/startup-signals.d.ts.map +1 -0
  1165. package/dist/lib/startup-signals.js +179 -0
  1166. package/dist/lib/startup-signals.js.map +1 -0
  1167. package/dist/lib/startup-signals.test.d.ts +2 -0
  1168. package/dist/lib/startup-signals.test.d.ts.map +1 -0
  1169. package/dist/lib/startup-signals.test.js +165 -0
  1170. package/dist/lib/startup-signals.test.js.map +1 -0
  1171. package/dist/lib/state.d.ts +11 -2
  1172. package/dist/lib/state.d.ts.map +1 -1
  1173. package/dist/lib/state.js +11 -4
  1174. package/dist/lib/state.js.map +1 -1
  1175. package/dist/lib/statusCategories.d.ts +160 -0
  1176. package/dist/lib/statusCategories.d.ts.map +1 -0
  1177. package/dist/lib/statusCategories.js +284 -0
  1178. package/dist/lib/statusCategories.js.map +1 -0
  1179. package/dist/lib/strip.d.ts +17 -0
  1180. package/dist/lib/strip.d.ts.map +1 -1
  1181. package/dist/lib/strip.js +48 -1
  1182. package/dist/lib/strip.js.map +1 -1
  1183. package/dist/lib/style.d.ts +8 -2
  1184. package/dist/lib/style.d.ts.map +1 -1
  1185. package/dist/lib/style.js +24 -17
  1186. package/dist/lib/style.js.map +1 -1
  1187. package/dist/lib/tokenConstants.d.ts +2 -0
  1188. package/dist/lib/tokenConstants.d.ts.map +1 -1
  1189. package/dist/lib/tokenConstants.js +2 -0
  1190. package/dist/lib/tokenConstants.js.map +1 -1
  1191. package/dist/lib/workspaceNotice.d.ts +202 -0
  1192. package/dist/lib/workspaceNotice.d.ts.map +1 -0
  1193. package/dist/lib/workspaceNotice.js +345 -0
  1194. package/dist/lib/workspaceNotice.js.map +1 -0
  1195. package/dist/{setup/perimeter.d.ts → lib/writePerimeter.d.ts} +11 -11
  1196. package/dist/lib/writePerimeter.d.ts.map +1 -0
  1197. package/dist/{setup/perimeter.js → lib/writePerimeter.js} +11 -11
  1198. package/dist/lib/writePerimeter.js.map +1 -0
  1199. package/dist/registerEntryCommands.d.ts +18 -0
  1200. package/dist/registerEntryCommands.d.ts.map +1 -0
  1201. package/dist/registerEntryCommands.js +123 -0
  1202. package/dist/registerEntryCommands.js.map +1 -0
  1203. package/dist/registerHistoryCommand.d.ts +8 -0
  1204. package/dist/registerHistoryCommand.d.ts.map +1 -0
  1205. package/dist/registerHistoryCommand.js +14 -0
  1206. package/dist/registerHistoryCommand.js.map +1 -0
  1207. package/dist/registerOutcomeCommands.d.ts +27 -0
  1208. package/dist/registerOutcomeCommands.d.ts.map +1 -0
  1209. package/dist/registerOutcomeCommands.js +27 -0
  1210. package/dist/registerOutcomeCommands.js.map +1 -0
  1211. package/dist/registerRoleCommands.d.ts +11 -0
  1212. package/dist/registerRoleCommands.d.ts.map +1 -0
  1213. package/dist/registerRoleCommands.js +38 -0
  1214. package/dist/registerRoleCommands.js.map +1 -0
  1215. package/dist/registerTensionsCommands.d.ts +10 -0
  1216. package/dist/registerTensionsCommands.d.ts.map +1 -0
  1217. package/dist/registerTensionsCommands.js +15 -0
  1218. package/dist/registerTensionsCommands.js.map +1 -0
  1219. package/dist/scoreboard/diagnose.d.ts +190 -0
  1220. package/dist/scoreboard/diagnose.d.ts.map +1 -0
  1221. package/dist/scoreboard/diagnose.js +282 -0
  1222. package/dist/scoreboard/diagnose.js.map +1 -0
  1223. package/dist/scoreboard/diagnose.test.d.ts +15 -0
  1224. package/dist/scoreboard/diagnose.test.d.ts.map +1 -0
  1225. package/dist/scoreboard/diagnose.test.js +288 -0
  1226. package/dist/scoreboard/diagnose.test.js.map +1 -0
  1227. package/dist/scoreboard/floors.d.ts +47 -0
  1228. package/dist/scoreboard/floors.d.ts.map +1 -0
  1229. package/dist/scoreboard/floors.js +33 -0
  1230. package/dist/scoreboard/floors.js.map +1 -0
  1231. package/dist/scoreboard/localDrift.d.ts +23 -0
  1232. package/dist/scoreboard/localDrift.d.ts.map +1 -0
  1233. package/dist/scoreboard/localDrift.js +111 -0
  1234. package/dist/scoreboard/localDrift.js.map +1 -0
  1235. package/dist/scoreboard/localDrift.test.d.ts +9 -0
  1236. package/dist/scoreboard/localDrift.test.d.ts.map +1 -0
  1237. package/dist/scoreboard/localDrift.test.js +82 -0
  1238. package/dist/scoreboard/localDrift.test.js.map +1 -0
  1239. package/dist/surfaces/__tests__/adapter.test.js +2 -6
  1240. package/dist/surfaces/__tests__/adapter.test.js.map +1 -1
  1241. package/dist/surfaces/__tests__/claude-skill-pointer-drift.test.d.ts +2 -0
  1242. package/dist/surfaces/__tests__/claude-skill-pointer-drift.test.d.ts.map +1 -0
  1243. package/dist/surfaces/__tests__/claude-skill-pointer-drift.test.js +179 -0
  1244. package/dist/surfaces/__tests__/claude-skill-pointer-drift.test.js.map +1 -0
  1245. package/dist/surfaces/adapters/claude.d.ts.map +1 -1
  1246. package/dist/surfaces/adapters/claude.js +30 -25
  1247. package/dist/surfaces/adapters/claude.js.map +1 -1
  1248. package/package.json +9 -7
  1249. package/dist/__tests__/audit.test.d.ts +0 -2
  1250. package/dist/__tests__/audit.test.d.ts.map +0 -1
  1251. package/dist/__tests__/audit.test.js +0 -399
  1252. package/dist/__tests__/audit.test.js.map +0 -1
  1253. package/dist/__tests__/authority-domains.test.d.ts +0 -2
  1254. package/dist/__tests__/authority-domains.test.d.ts.map +0 -1
  1255. package/dist/__tests__/authority-domains.test.js +0 -48
  1256. package/dist/__tests__/authority-domains.test.js.map +0 -1
  1257. package/dist/__tests__/promote.test.d.ts +0 -2
  1258. package/dist/__tests__/promote.test.d.ts.map +0 -1
  1259. package/dist/__tests__/promote.test.js +0 -230
  1260. package/dist/__tests__/promote.test.js.map +0 -1
  1261. package/dist/__tests__/proposals.test.d.ts +0 -2
  1262. package/dist/__tests__/proposals.test.d.ts.map +0 -1
  1263. package/dist/__tests__/proposals.test.js +0 -167
  1264. package/dist/__tests__/proposals.test.js.map +0 -1
  1265. package/dist/__tests__/setup-ingest.test.d.ts +0 -2
  1266. package/dist/__tests__/setup-ingest.test.d.ts.map +0 -1
  1267. package/dist/__tests__/setup-ingest.test.js +0 -71
  1268. package/dist/__tests__/setup-ingest.test.js.map +0 -1
  1269. package/dist/__tests__/setup-resolver.test.d.ts +0 -14
  1270. package/dist/__tests__/setup-resolver.test.d.ts.map +0 -1
  1271. package/dist/__tests__/setup-resolver.test.js +0 -228
  1272. package/dist/__tests__/setup-resolver.test.js.map +0 -1
  1273. package/dist/commands/__tests__/setup-detect-surfaces.test.d.ts +0 -15
  1274. package/dist/commands/__tests__/setup-detect-surfaces.test.d.ts.map +0 -1
  1275. package/dist/commands/__tests__/setup-detect-surfaces.test.js +0 -149
  1276. package/dist/commands/__tests__/setup-detect-surfaces.test.js.map +0 -1
  1277. package/dist/commands/__tests__/setup-state.test.d.ts +0 -2
  1278. package/dist/commands/__tests__/setup-state.test.d.ts.map +0 -1
  1279. package/dist/commands/__tests__/setup-state.test.js +0 -194
  1280. package/dist/commands/__tests__/setup-state.test.js.map +0 -1
  1281. package/dist/commands/accept.d.ts +0 -18
  1282. package/dist/commands/accept.d.ts.map +0 -1
  1283. package/dist/commands/accept.js +0 -76
  1284. package/dist/commands/accept.js.map +0 -1
  1285. package/dist/commands/audit.d.ts +0 -25
  1286. package/dist/commands/audit.d.ts.map +0 -1
  1287. package/dist/commands/audit.js +0 -215
  1288. package/dist/commands/audit.js.map +0 -1
  1289. package/dist/commands/authority-domains.d.ts +0 -146
  1290. package/dist/commands/authority-domains.d.ts.map +0 -1
  1291. package/dist/commands/authority-domains.js +0 -283
  1292. package/dist/commands/authority-domains.js.map +0 -1
  1293. package/dist/commands/method.d.ts +0 -99
  1294. package/dist/commands/method.d.ts.map +0 -1
  1295. package/dist/commands/method.js +0 -785
  1296. package/dist/commands/method.js.map +0 -1
  1297. package/dist/commands/migrate-setup.d.ts +0 -18
  1298. package/dist/commands/migrate-setup.d.ts.map +0 -1
  1299. package/dist/commands/migrate-setup.js +0 -198
  1300. package/dist/commands/migrate-setup.js.map +0 -1
  1301. package/dist/commands/promote.d.ts +0 -12
  1302. package/dist/commands/promote.d.ts.map +0 -1
  1303. package/dist/commands/promote.js +0 -113
  1304. package/dist/commands/promote.js.map +0 -1
  1305. package/dist/commands/proposals.d.ts +0 -9
  1306. package/dist/commands/proposals.d.ts.map +0 -1
  1307. package/dist/commands/proposals.js +0 -24
  1308. package/dist/commands/proposals.js.map +0 -1
  1309. package/dist/commands/reject.d.ts +0 -14
  1310. package/dist/commands/reject.d.ts.map +0 -1
  1311. package/dist/commands/reject.js +0 -44
  1312. package/dist/commands/reject.js.map +0 -1
  1313. package/dist/commands/setup-audit.d.ts +0 -59
  1314. package/dist/commands/setup-audit.d.ts.map +0 -1
  1315. package/dist/commands/setup-audit.js +0 -250
  1316. package/dist/commands/setup-audit.js.map +0 -1
  1317. package/dist/commands/setup-detect-surfaces.d.ts +0 -38
  1318. package/dist/commands/setup-detect-surfaces.d.ts.map +0 -1
  1319. package/dist/commands/setup-detect-surfaces.js +0 -76
  1320. package/dist/commands/setup-detect-surfaces.js.map +0 -1
  1321. package/dist/commands/setup-ingest.d.ts +0 -17
  1322. package/dist/commands/setup-ingest.d.ts.map +0 -1
  1323. package/dist/commands/setup-ingest.js +0 -226
  1324. package/dist/commands/setup-ingest.js.map +0 -1
  1325. package/dist/commands/setup-resolver.d.ts +0 -58
  1326. package/dist/commands/setup-resolver.d.ts.map +0 -1
  1327. package/dist/commands/setup-resolver.js +0 -150
  1328. package/dist/commands/setup-resolver.js.map +0 -1
  1329. package/dist/commands/setup-state.d.ts +0 -42
  1330. package/dist/commands/setup-state.d.ts.map +0 -1
  1331. package/dist/commands/setup-state.js +0 -93
  1332. package/dist/commands/setup-state.js.map +0 -1
  1333. package/dist/commands/setup.d.ts +0 -23
  1334. package/dist/commands/setup.d.ts.map +0 -1
  1335. package/dist/commands/setup.js +0 -69
  1336. package/dist/commands/setup.js.map +0 -1
  1337. package/dist/formatters/audit.d.ts +0 -52
  1338. package/dist/formatters/audit.d.ts.map +0 -1
  1339. package/dist/formatters/audit.js +0 -81
  1340. package/dist/formatters/audit.js.map +0 -1
  1341. package/dist/formatters/promote.d.ts +0 -30
  1342. package/dist/formatters/promote.d.ts.map +0 -1
  1343. package/dist/formatters/promote.js +0 -39
  1344. package/dist/formatters/promote.js.map +0 -1
  1345. package/dist/formatters/proposals.d.ts +0 -45
  1346. package/dist/formatters/proposals.d.ts.map +0 -1
  1347. package/dist/formatters/proposals.js +0 -62
  1348. package/dist/formatters/proposals.js.map +0 -1
  1349. package/dist/generators/archetypes.d.ts +0 -52
  1350. package/dist/generators/archetypes.d.ts.map +0 -1
  1351. package/dist/generators/archetypes.js +0 -153
  1352. package/dist/generators/archetypes.js.map +0 -1
  1353. package/dist/generators/archetypes.test.d.ts +0 -2
  1354. package/dist/generators/archetypes.test.d.ts.map +0 -1
  1355. package/dist/generators/archetypes.test.js +0 -237
  1356. package/dist/generators/archetypes.test.js.map +0 -1
  1357. package/dist/generators/chain-classifier.d.ts +0 -49
  1358. package/dist/generators/chain-classifier.d.ts.map +0 -1
  1359. package/dist/generators/chain-classifier.js +0 -180
  1360. package/dist/generators/chain-classifier.js.map +0 -1
  1361. package/dist/generators/chain-classifier.test.d.ts +0 -2
  1362. package/dist/generators/chain-classifier.test.d.ts.map +0 -1
  1363. package/dist/generators/chain-classifier.test.js +0 -257
  1364. package/dist/generators/chain-classifier.test.js.map +0 -1
  1365. package/dist/generators/chain-rules.d.ts +0 -42
  1366. package/dist/generators/chain-rules.d.ts.map +0 -1
  1367. package/dist/generators/chain-rules.js +0 -144
  1368. package/dist/generators/chain-rules.js.map +0 -1
  1369. package/dist/generators/chain-rules.test.d.ts +0 -2
  1370. package/dist/generators/chain-rules.test.d.ts.map +0 -1
  1371. package/dist/generators/chain-rules.test.js +0 -179
  1372. package/dist/generators/chain-rules.test.js.map +0 -1
  1373. package/dist/generators/handshake-diff.d.ts +0 -67
  1374. package/dist/generators/handshake-diff.d.ts.map +0 -1
  1375. package/dist/generators/handshake-diff.js +0 -183
  1376. package/dist/generators/handshake-diff.js.map +0 -1
  1377. package/dist/generators/handshake-diff.test.d.ts +0 -2
  1378. package/dist/generators/handshake-diff.test.d.ts.map +0 -1
  1379. package/dist/generators/handshake-diff.test.js +0 -264
  1380. package/dist/generators/handshake-diff.test.js.map +0 -1
  1381. package/dist/lib/activation.d.ts +0 -28
  1382. package/dist/lib/activation.d.ts.map +0 -1
  1383. package/dist/lib/activation.js +0 -57
  1384. package/dist/lib/activation.js.map +0 -1
  1385. package/dist/lib/activation.test.d.ts +0 -6
  1386. package/dist/lib/activation.test.d.ts.map +0 -1
  1387. package/dist/lib/activation.test.js +0 -121
  1388. package/dist/lib/activation.test.js.map +0 -1
  1389. package/dist/lib/inferSourceDate.d.ts +0 -12
  1390. package/dist/lib/inferSourceDate.d.ts.map +0 -1
  1391. package/dist/lib/inferSourceDate.js +0 -44
  1392. package/dist/lib/inferSourceDate.js.map +0 -1
  1393. package/dist/setup/__tests__/coach-traces.test.d.ts +0 -2
  1394. package/dist/setup/__tests__/coach-traces.test.d.ts.map +0 -1
  1395. package/dist/setup/__tests__/coach-traces.test.js +0 -189
  1396. package/dist/setup/__tests__/coach-traces.test.js.map +0 -1
  1397. package/dist/setup/__tests__/setup-commands.test.d.ts +0 -2
  1398. package/dist/setup/__tests__/setup-commands.test.d.ts.map +0 -1
  1399. package/dist/setup/__tests__/setup-commands.test.js +0 -177
  1400. package/dist/setup/__tests__/setup-commands.test.js.map +0 -1
  1401. package/dist/setup/__tests__/state-machine.test.d.ts +0 -2
  1402. package/dist/setup/__tests__/state-machine.test.d.ts.map +0 -1
  1403. package/dist/setup/__tests__/state-machine.test.js +0 -341
  1404. package/dist/setup/__tests__/state-machine.test.js.map +0 -1
  1405. package/dist/setup/detect-surfaces.d.ts +0 -21
  1406. package/dist/setup/detect-surfaces.d.ts.map +0 -1
  1407. package/dist/setup/detect-surfaces.js +0 -39
  1408. package/dist/setup/detect-surfaces.js.map +0 -1
  1409. package/dist/setup/manifest-writer.d.ts +0 -17
  1410. package/dist/setup/manifest-writer.d.ts.map +0 -1
  1411. package/dist/setup/manifest-writer.js +0 -153
  1412. package/dist/setup/manifest-writer.js.map +0 -1
  1413. package/dist/setup/perimeter.d.ts.map +0 -1
  1414. package/dist/setup/perimeter.js.map +0 -1
  1415. package/dist/setup/state-machine.d.ts +0 -67
  1416. package/dist/setup/state-machine.d.ts.map +0 -1
  1417. package/dist/setup/state-machine.js +0 -124
  1418. package/dist/setup/state-machine.js.map +0 -1
  1419. package/dist/surfaces/__tests__/pb-setup-passthrough.test.d.ts +0 -2
  1420. package/dist/surfaces/__tests__/pb-setup-passthrough.test.d.ts.map +0 -1
  1421. package/dist/surfaces/__tests__/pb-setup-passthrough.test.js +0 -132
  1422. package/dist/surfaces/__tests__/pb-setup-passthrough.test.js.map +0 -1
  1423. package/templates/archetypes/boundary.md +0 -23
  1424. package/templates/archetypes/constraint.md +0 -23
  1425. package/templates/archetypes/convention.md +0 -23
  1426. package/templates/archetypes/policy.md +0 -23
  1427. package/templates/archetypes/quality-gate.md +0 -23
  1428. package/templates/archetypes/workflow.md +0 -23
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
8
8
  import { mkdirSync, writeFileSync, readFileSync, rmSync } from 'fs';
9
- import { resolve } from 'path';
9
+ import { dirname, resolve } from 'path';
10
10
  import { tmpdir } from 'os';
11
11
  import { randomUUID } from 'crypto';
12
12
  // Mock the profiles module to prevent real profile config from leaking in
@@ -30,6 +30,7 @@ describe('config resolution', () => {
30
30
  const envKeys = ['PRODUCTBRAIN_API_KEY', 'CONVEX_SITE_URL', 'PB_PROFILE', 'PB_ENV'];
31
31
  // Import after mock setup
32
32
  let resolveConfig;
33
+ let getConfig;
33
34
  let getConfigSafe;
34
35
  let resetConfigCache;
35
36
  let findProjectRoot;
@@ -49,6 +50,7 @@ describe('config resolution', () => {
49
50
  // Dynamic import to get module with mocks applied
50
51
  const config = await import('../lib/config.js');
51
52
  resolveConfig = config.resolveConfig;
53
+ getConfig = config.getConfig;
52
54
  getConfigSafe = config.getConfigSafe;
53
55
  resetConfigCache = config.resetConfigCache;
54
56
  findProjectRoot = config.findProjectRoot;
@@ -173,19 +175,103 @@ describe('config resolution', () => {
173
175
  expect(result.apiKey).toBe('pb_sk_local_profile_key');
174
176
  expect(result.source).toBe('project');
175
177
  });
176
- it('config.json siteUrl is used as gateway override with global profile', async () => {
177
- const { resolveProfileConfig } = await import('../lib/profiles.js');
178
- resolveProfileConfig.mockReturnValueOnce({
179
- apiKey: 'pb_sk_global_key',
180
- siteUrl: 'https://profile.example.com',
178
+ it('FAILS CLOSED on a dangling repo-local pin — never silently falls through to the global active profile', async () => {
179
+ const { resolveNamedProfileConfig, resolveProfileConfig } = await import('../lib/profiles.js');
180
+ // Pin names a profile that no longer resolves (deleted, or never fully set up).
181
+ resolveNamedProfileConfig.mockReturnValue(null);
182
+ // A perfectly usable global profile is available — and must NOT be adopted.
183
+ resolveProfileConfig.mockReturnValue({
184
+ apiKey: 'pb_sk_global_profile_key',
185
+ siteUrl: 'https://global-profile.example.com',
186
+ });
187
+ const pbDir = resolve(tempDir, '.productbrain');
188
+ mkdirSync(pbDir, { recursive: true });
189
+ writeFileSync(resolve(pbDir, 'config.local.json'), JSON.stringify({ profile: 'deleted-workspace' }));
190
+ expect(() => resolveConfig()).toThrow(/pinned to profile "deleted-workspace"/);
191
+ });
192
+ it('dangling repo-local pin throws AUTH_MISSING rather than returning a foreign credential', async () => {
193
+ const { resolveNamedProfileConfig, resolveProfileConfig } = await import('../lib/profiles.js');
194
+ // Pin resolves to a profile file that exists but carries no API key.
195
+ resolveNamedProfileConfig.mockReturnValue({
196
+ siteUrl: 'https://pinned.example.com',
197
+ });
198
+ resolveProfileConfig.mockReturnValue({
199
+ apiKey: 'pb_sk_global_profile_key',
200
+ siteUrl: 'https://global-profile.example.com',
201
+ });
202
+ const pbDir = resolve(tempDir, '.productbrain');
203
+ mkdirSync(pbDir, { recursive: true });
204
+ writeFileSync(resolve(pbDir, 'config.local.json'), JSON.stringify({ profile: 'keyless-workspace' }));
205
+ let caught;
206
+ try {
207
+ resolveConfig();
208
+ }
209
+ catch (e) {
210
+ caught = e;
211
+ }
212
+ expect(caught?.code).toBe('AUTH_MISSING');
213
+ });
214
+ it('getConfig() refuses a dangling pin — the loadEnv() cascade must not adopt the global profile', async () => {
215
+ // This is the door ~98 command modules use, and it is a SEPARATE cascade from
216
+ // resolveConfig() — loadEnv() mutates process.env rather than returning a value.
217
+ const { resolveNamedProfileConfig, resolveProfileConfig } = await import('../lib/profiles.js');
218
+ resolveNamedProfileConfig.mockReturnValue(null);
219
+ resolveProfileConfig.mockReturnValue({
220
+ apiKey: 'pb_sk_global_profile_key',
221
+ siteUrl: 'https://global-profile.example.com',
222
+ });
223
+ const pbDir = resolve(tempDir, '.productbrain');
224
+ mkdirSync(pbDir, { recursive: true });
225
+ writeFileSync(resolve(pbDir, 'config.local.json'), JSON.stringify({ profile: 'deleted-workspace' }));
226
+ expect(() => getConfig()).toThrow(/pinned to profile "deleted-workspace"/);
227
+ // The foreign credential must never become the live binding.
228
+ expect(process.env.PRODUCTBRAIN_API_KEY).toBeUndefined();
229
+ });
230
+ it('a pin whose profile has a malformed key is a broken pin, not a credential', async () => {
231
+ const { resolveNamedProfileConfig, resolveProfileConfig } = await import('../lib/profiles.js');
232
+ resolveNamedProfileConfig.mockReturnValue({
233
+ apiKey: 'not-a-pb-key',
234
+ siteUrl: 'https://pinned.example.com',
235
+ });
236
+ resolveProfileConfig.mockReturnValue({
237
+ apiKey: 'pb_sk_global_profile_key',
238
+ siteUrl: 'https://global-profile.example.com',
239
+ });
240
+ const pbDir = resolve(tempDir, '.productbrain');
241
+ mkdirSync(pbDir, { recursive: true });
242
+ writeFileSync(resolve(pbDir, 'config.local.json'), JSON.stringify({ profile: 'malformed-workspace' }));
243
+ // Names the pin, rather than deferring to a generic "no API key, run pb login".
244
+ expect(() => resolveConfig()).toThrow(/pinned to profile "malformed-workspace"/);
245
+ });
246
+ it('getConfigSafe() REPORTS a dangling pin instead of throwing — diagnostics must still render', async () => {
247
+ const { resolveNamedProfileConfig, resolveProfileConfig } = await import('../lib/profiles.js');
248
+ resolveNamedProfileConfig.mockReturnValue(null);
249
+ resolveProfileConfig.mockReturnValue({
250
+ apiKey: 'pb_sk_global_profile_key',
251
+ siteUrl: 'https://global-profile.example.com',
252
+ });
253
+ const pbDir = resolve(tempDir, '.productbrain');
254
+ mkdirSync(pbDir, { recursive: true });
255
+ writeFileSync(resolve(pbDir, 'config.local.json'), JSON.stringify({ profile: 'deleted-workspace' }));
256
+ // `pb doctor` and the bare-`pb` dashboard go through here; they must diagnose, not die.
257
+ const result = getConfigSafe();
258
+ expect(result.ok).toBe(false);
259
+ expect(result.reason).toMatch(/pinned to profile "deleted-workspace"/);
260
+ });
261
+ it('a pin with no URL of its own goes to DEFAULT_SITE_URL, never config.json siteUrl (TEN-4500)', async () => {
262
+ const { resolveNamedProfileConfig } = await import('../lib/profiles.js');
263
+ resolveNamedProfileConfig.mockReturnValueOnce({
264
+ apiKey: 'pb_sk_pinned_key',
181
265
  });
182
266
  const pbDir = resolve(tempDir, '.productbrain');
183
267
  mkdirSync(pbDir, { recursive: true });
184
268
  writeFileSync(resolve(pbDir, 'config.json'), JSON.stringify({ siteUrl: 'https://project-gateway.example.com' }));
269
+ writeFileSync(resolve(pbDir, 'config.local.json'), JSON.stringify({ profile: 'product-brain' }));
185
270
  const result = resolveConfig();
186
- expect(result.apiKey).toBe('pb_sk_global_key');
187
- expect(result.siteUrl).toBe('https://project-gateway.example.com');
188
- expect(result.source).toBe('profile');
271
+ expect(result.apiKey).toBe('pb_sk_pinned_key');
272
+ expect(result.siteUrl).toBe('https://gateway.productbrain.io');
273
+ expect(result.siteUrlSource).toBe('default');
274
+ expect(result.source).toBe('project');
189
275
  });
190
276
  it('env vars override project config.local.json', () => {
191
277
  process.env.PRODUCTBRAIN_API_KEY = 'pb_sk_env_key';
@@ -204,24 +290,18 @@ describe('config resolution', () => {
204
290
  expect(result.siteUrl).toBe('https://gateway.productbrain.io');
205
291
  expect(result.source).toBe('default');
206
292
  });
207
- it('ignores profile field in config.json (legacy migration)', () => {
293
+ it('ignores profile field in config.json (legacy migration) — not a pin, so the project has no tenant', () => {
208
294
  const pbDir = resolve(tempDir, '.productbrain');
209
295
  mkdirSync(pbDir, { recursive: true });
210
- // Old config.json with profile field — must be ignored
296
+ // Old config.json with profile field — must be ignored, not treated as a pin
211
297
  writeFileSync(resolve(pbDir, 'config.json'), JSON.stringify({ siteUrl: 'https://project.example.com', profile: 'should-be-ignored' }));
212
- const result = resolveConfig();
213
- // profile in config.json must NOT be resolved — no profile mock set up
214
- expect(result.apiKey).toBeUndefined();
215
- expect(result.source).toBe('default');
298
+ expect(() => resolveConfig()).toThrow(/no tenant pin/i);
216
299
  });
217
- it('handles partial project config (only siteUrl, no apiKey)', () => {
300
+ it('a declared project with only siteUrl and no pin refuses rather than falling through', () => {
218
301
  const pbDir = resolve(tempDir, '.productbrain');
219
302
  mkdirSync(pbDir, { recursive: true });
220
303
  writeFileSync(resolve(pbDir, 'config.json'), JSON.stringify({ siteUrl: 'https://partial.example.com' }));
221
- const result = resolveConfig();
222
- // No apiKey in project config, so it should fall through to default
223
- expect(result.apiKey).toBeUndefined();
224
- expect(result.source).toBe('default');
304
+ expect(() => resolveConfig()).toThrow(/no tenant pin/i);
225
305
  });
226
306
  });
227
307
  describe('getConfigSafe()', () => {
@@ -233,6 +313,211 @@ describe('config resolution', () => {
233
313
  expect(result.reason).toContain('No API key');
234
314
  }
235
315
  });
316
+ it('names the FILE, not CONVEX_SITE_URL, when a file supplied the non-HTTPS URL', () => {
317
+ // A file-sourced siteUrl outranks CONVEX_SITE_URL everywhere except an env-key override, so
318
+ // "set CONVEX_SITE_URL" would send the operator back through the same failure.
319
+ process.env.CONVEX_SITE_URL = 'https://this-would-never-win.example.com';
320
+ const pbDir = resolve(tempDir, '.productbrain');
321
+ mkdirSync(pbDir, { recursive: true });
322
+ writeFileSync(resolve(pbDir, 'config.local.json'), JSON.stringify({
323
+ apiKey: 'pb_sk_preview_key_0123456789abcdef',
324
+ siteUrl: 'http://insecure.example.com',
325
+ preview: true,
326
+ }));
327
+ resetConfigCache();
328
+ const result = getConfigSafe();
329
+ expect(result.ok).toBe(false);
330
+ if (!result.ok) {
331
+ expect(result.kind).toBe('invalid-url');
332
+ expect(result.reason).toMatch(/must use HTTPS/i);
333
+ // The binding supplies its own URL, so the repair is that file alone — naming a profile
334
+ // it may also pin would point at something that does not control this URL.
335
+ expect(result.guidance).toContain('.productbrain/config.local.json');
336
+ expect(result.guidance).not.toMatch(/profile/i);
337
+ expect(result.guidance).not.toMatch(/CONVEX_SITE_URL/);
338
+ }
339
+ });
340
+ it('names CONVEX_SITE_URL when the environment did supply the non-HTTPS URL', () => {
341
+ process.env.PRODUCTBRAIN_API_KEY = 'pb_sk_env_key';
342
+ process.env.CONVEX_SITE_URL = 'http://insecure.example.com';
343
+ resetConfigCache();
344
+ const result = getConfigSafe();
345
+ expect(result.ok).toBe(false);
346
+ if (!result.ok) {
347
+ expect(result.kind).toBe('invalid-url');
348
+ expect(result.guidance).toContain('CONVEX_SITE_URL');
349
+ }
350
+ });
351
+ // ── The URL's origin is NOT the credential's origin ────────────────────────────────────
352
+ //
353
+ // A key travels only with the URL beside it (TEN-4500), so the repair names that source —
354
+ // never config.json, whose siteUrl no longer routes any key, and never a sibling file that
355
+ // happens to sit in the same directory.
356
+ it('a non-HTTPS config.json siteUrl never reaches a pinned key (TEN-4500)', async () => {
357
+ const { resolveNamedProfileConfig } = await import('../lib/profiles.js');
358
+ resolveNamedProfileConfig.mockReturnValue({
359
+ apiKey: 'pb_sk_pinned_key',
360
+ });
361
+ const pbDir = resolve(tempDir, '.productbrain');
362
+ mkdirSync(pbDir, { recursive: true });
363
+ writeFileSync(resolve(pbDir, 'config.json'), JSON.stringify({ siteUrl: 'http://insecure.example.com' }));
364
+ writeFileSync(resolve(pbDir, 'config.local.json'), JSON.stringify({ profile: 'product-brain' }));
365
+ resetConfigCache();
366
+ const result = getConfigSafe();
367
+ expect(result.ok).toBe(true);
368
+ if (result.ok)
369
+ expect(result.siteUrl).toBe('https://gateway.productbrain.io');
370
+ });
371
+ it('names the pin — not config.json or a CWD .env — when the pinned profile supplied the URL', async () => {
372
+ const { resolveNamedProfileConfig } = await import('../lib/profiles.js');
373
+ resolveNamedProfileConfig.mockReturnValue({
374
+ apiKey: 'pb_sk_pinned_key',
375
+ siteUrl: 'http://pin.example.com',
376
+ });
377
+ const pbDir = resolve(tempDir, '.productbrain');
378
+ mkdirSync(pbDir, { recursive: true });
379
+ writeFileSync(resolve(pbDir, 'config.json'), JSON.stringify({ siteUrl: 'http://insecure.example.com' }));
380
+ writeFileSync(resolve(pbDir, 'config.local.json'), JSON.stringify({ profile: 'product-brain' }));
381
+ writeFileSync(resolve(tempDir, '.env'), 'PRODUCTBRAIN_API_KEY=pb_sk_cwd_key\nCONVEX_SITE_URL=https://cwd-would-have-been-fine.example.com\n');
382
+ resetConfigCache();
383
+ const result = getConfigSafe();
384
+ expect(result.ok).toBe(false);
385
+ if (!result.ok) {
386
+ expect(result.kind).toBe('invalid-url');
387
+ expect(result.reason).toContain('http://pin.example.com');
388
+ expect(result.guidance).toContain('pinned by .productbrain/config.local.json');
389
+ expect(result.guidance).not.toContain('.productbrain/config.json');
390
+ expect(result.guidance).not.toMatch(/\.env file/);
391
+ }
392
+ });
393
+ it('names the profile the repo pin points at, not just "the profile it pins"', async () => {
394
+ const { resolveNamedProfileConfig } = await import('../lib/profiles.js');
395
+ resolveNamedProfileConfig.mockReturnValue({
396
+ apiKey: 'pb_sk_pinned_key_0123456789',
397
+ siteUrl: 'http://insecure.example.com',
398
+ });
399
+ const pbDir = resolve(tempDir, '.productbrain');
400
+ mkdirSync(pbDir, { recursive: true });
401
+ writeFileSync(resolve(pbDir, 'config.local.json'), JSON.stringify({ profile: 'pinned-workspace' }));
402
+ resetConfigCache();
403
+ const result = getConfigSafe();
404
+ expect(result.ok).toBe(false);
405
+ if (!result.ok) {
406
+ expect(result.kind).toBe('invalid-url');
407
+ expect(result.guidance).toContain('pinned-workspace');
408
+ }
409
+ });
410
+ it('names the CWD env file that actually won, not the generic .env', () => {
411
+ // CWD_ENV_PATHS scans .env.mcp first, so a generic "the .env file" label would send the
412
+ // operator to edit a file the cascade never read.
413
+ writeFileSync(resolve(tempDir, '.env.mcp'), 'PRODUCTBRAIN_API_KEY=pb_sk_cwd_key\nCONVEX_SITE_URL=http://insecure.example.com\n');
414
+ resetConfigCache();
415
+ const result = getConfigSafe();
416
+ expect(result.ok).toBe(false);
417
+ if (!result.ok) {
418
+ expect(result.kind).toBe('invalid-url');
419
+ expect(result.guidance).toContain('.env.mcp');
420
+ }
421
+ });
422
+ it('tells the operator to unset PRODUCTBRAIN_API_KEY — not to run pb login — for a bad exported key', () => {
423
+ // An exported key wins step 1 of the cascade, and `pb login` writes to a profile or the
424
+ // legacy home file — both of which lose to it. "Run pb login" would loop forever.
425
+ process.env.PRODUCTBRAIN_API_KEY = 'bad_prefix_key';
426
+ resetConfigCache();
427
+ const result = getConfigSafe();
428
+ expect(result.ok).toBe(false);
429
+ if (!result.ok) {
430
+ expect(result.kind).toBe('invalid-key');
431
+ expect(result.guidance).toMatch(/Unset PRODUCTBRAIN_API_KEY|replace it/);
432
+ // `pb login` may only be named to explain why it cannot help — never as the instruction.
433
+ expect(result.guidance).not.toMatch(/Run `pb login`/);
434
+ expect(result.guidance).toMatch(/cannot repair/);
435
+ expect(result.nextCommand).not.toBe('pb login');
436
+ }
437
+ });
438
+ it('still points a stored malformed key at pb login — login CAN repair that one', async () => {
439
+ const { resolveProfileConfig } = await import('../lib/profiles.js');
440
+ resolveProfileConfig.mockReturnValue({
441
+ apiKey: 'bad_prefix_key',
442
+ siteUrl: 'https://profile.example.com',
443
+ });
444
+ resetConfigCache();
445
+ const result = getConfigSafe();
446
+ expect(result.ok).toBe(false);
447
+ if (!result.ok) {
448
+ expect(result.kind).toBe('invalid-key');
449
+ expect(result.guidance).toMatch(/pb login/);
450
+ expect(result.nextCommand).toBe('pb login');
451
+ }
452
+ });
453
+ // ── Which profile actually supplied it ──────────────────────────────────────────────────
454
+ //
455
+ // resolveProfileConfig() reaches a credential four ways — PB_PROFILE, the active-profile
456
+ // marker, a `default` fallback, and the legacy ~/.config/productbrain/.env — and reports the
457
+ // winner's name. A fixed "the active profile" label sends the operator to edit a profile that
458
+ // supplied nothing, so the same failure comes straight back.
459
+ it('names the PB_PROFILE-selected profile, not "the active profile", for its non-HTTPS URL', async () => {
460
+ const { resolveProfileConfig, getGlobalActiveProfile } = await import('../lib/profiles.js');
461
+ // A DIFFERENT profile is globally active. PB_PROFILE outranks it in profiles.ts, which
462
+ // returns the selected name alongside the credential (profiles.ts resolveProfileConfig 1).
463
+ getGlobalActiveProfile.mockReturnValue('main-workspace');
464
+ process.env.PB_PROFILE = 'preview-workspace';
465
+ resolveProfileConfig.mockReturnValue({
466
+ apiKey: 'pb_sk_selected_profile_key',
467
+ siteUrl: 'http://insecure.example.com',
468
+ profileName: 'preview-workspace',
469
+ });
470
+ resetConfigCache();
471
+ const result = getConfigSafe();
472
+ expect(result.ok).toBe(false);
473
+ if (!result.ok) {
474
+ expect(result.kind).toBe('invalid-url');
475
+ expect(result.guidance).toContain('the profile "preview-workspace"');
476
+ expect(result.guidance).not.toContain('the active profile');
477
+ // The globally active profile did not supply this URL and must not be named.
478
+ expect(result.guidance).not.toContain('main-workspace');
479
+ }
480
+ });
481
+ it('names the `default` fallback profile for a malformed stored key', async () => {
482
+ const { resolveProfileConfig } = await import('../lib/profiles.js');
483
+ // No PB_PROFILE and no active-profile marker: profiles.ts falls back to `default`, which is
484
+ // a real file the operator can open — "the active profile" is not.
485
+ resolveProfileConfig.mockReturnValue({
486
+ apiKey: 'bad_prefix_key',
487
+ siteUrl: 'https://profile.example.com',
488
+ profileName: 'default',
489
+ });
490
+ resetConfigCache();
491
+ const result = getConfigSafe();
492
+ expect(result.ok).toBe(false);
493
+ if (!result.ok) {
494
+ expect(result.kind).toBe('invalid-key');
495
+ expect(result.reason).toContain('the profile "default"');
496
+ expect(result.reason).not.toContain('the active profile');
497
+ }
498
+ });
499
+ it('does NOT call the legacy home config "the active profile" — it is not a named profile', async () => {
500
+ // resolveConfig() step 4 labels the legacy ~/.config/productbrain/.env `profile`, but it
501
+ // carries no profile name at all, so naming a profile there would be a fabrication.
502
+ const { HOME_ENV_PATH } = await import('../lib/config.js');
503
+ mkdirSync(dirname(HOME_ENV_PATH), { recursive: true });
504
+ writeFileSync(HOME_ENV_PATH, 'PRODUCTBRAIN_API_KEY=bad_prefix_key\n');
505
+ try {
506
+ resetConfigCache();
507
+ const result = getConfigSafe();
508
+ expect(result.ok).toBe(false);
509
+ if (!result.ok) {
510
+ expect(result.kind).toBe('invalid-key');
511
+ expect(result.reason).not.toContain('the active profile');
512
+ expect(result.reason).toContain('the stored profile configuration');
513
+ }
514
+ }
515
+ finally {
516
+ // The fake home is shared by every test in this file; a stray legacy .env would supply a
517
+ // credential to the cases that assert none is found.
518
+ rmSync(HOME_ENV_PATH, { force: true });
519
+ }
520
+ });
236
521
  it('returns { ok: true } with correct source when key exists in env', () => {
237
522
  process.env.PRODUCTBRAIN_API_KEY = 'pb_sk_test_key';
238
523
  process.env.CONVEX_SITE_URL = 'https://test.example.com';
@@ -285,19 +570,19 @@ describe('config resolution', () => {
285
570
  });
286
571
  });
287
572
  describe('.productbrain/config.json error handling', () => {
288
- it('warns but does not crash on invalid JSON', () => {
573
+ it('warns on invalid JSON, and still refuses — a damaged declaration is not an escape hatch', () => {
289
574
  const pbDir = resolve(tempDir, '.productbrain');
290
575
  mkdirSync(pbDir, { recursive: true });
291
576
  writeFileSync(resolve(pbDir, 'config.json'), '{ invalid json!!!');
292
- // Capture stderr
293
- const stderrWrite = vi.spyOn(process.stderr, 'write').mockImplementation(() => true);
294
- const result = resolveConfig();
295
- // Should have warned
296
- expect(stderrWrite).toHaveBeenCalledWith(expect.stringContaining('invalid JSON'));
297
- // Should fall through to default
298
- expect(result.apiKey).toBeUndefined();
299
- expect(result.source).toBe('default');
300
- stderrWrite.mockRestore();
577
+ // The file is unreadable but PRESENT, so the repo has still declared itself a project.
578
+ // Falling through here would hand the global profile a workspace precisely when the
579
+ // committed declaration is corrupt — the wrong-tenant substitution WP-694 S2 closes.
580
+ //
581
+ // No stderr assertion: the refusal is reached on the file's EXISTENCE, so nothing parses
582
+ // config.json on this path and the "invalid JSON" warning never fires. Refusing outright
583
+ // supersedes warning-then-using-someone-else's-workspace. The sibling test below still
584
+ // covers the warn-and-continue path for a malformed config.local.json.
585
+ expect(() => resolveConfig()).toThrow(/no tenant pin/i);
301
586
  });
302
587
  it('warns but does not crash on invalid config.local.json', () => {
303
588
  const pbDir = resolve(tempDir, '.productbrain');
@@ -379,6 +664,17 @@ describe('config resolution', () => {
379
664
  const { resolveEffectiveProfile } = await import('../lib/config.js');
380
665
  expect(resolveEffectiveProfile()).toEqual({ profile: 'repo-pin', source: 'local' });
381
666
  });
667
+ // The pin's key is bound by resolveConfig() step 2b / loadEnv() step 1b before the profile
668
+ // system reads PB_PROFILE, so the env name never supplies the credential here. Reporting it
669
+ // would label every identity surface with a workspace the CLI is not operating against.
670
+ it('prefers the repo pin over PB_PROFILE, matching which profile supplies the credential', async () => {
671
+ process.env.PB_PROFILE = 'from-env';
672
+ const pbDir = resolve(tempDir, '.productbrain');
673
+ mkdirSync(pbDir, { recursive: true });
674
+ writeFileSync(resolve(pbDir, 'config.local.json'), JSON.stringify({ profile: 'repo-pin' }));
675
+ const { resolveEffectiveProfile } = await import('../lib/config.js');
676
+ expect(resolveEffectiveProfile()).toEqual({ profile: 'repo-pin', source: 'local' });
677
+ });
382
678
  it('returns global source from the active-profile file when no local pin', async () => {
383
679
  const profiles = await import('../lib/profiles.js');
384
680
  profiles.getGlobalActiveProfile.mockReturnValue('global-ws');
@@ -446,7 +742,7 @@ describe('config resolution', () => {
446
742
  expect(result.apiKey).toBe('pb_sk_profile_key');
447
743
  expect(result.source).toBe('project');
448
744
  });
449
- it('rejects apiKey that does not start with API_KEY_PREFIX', () => {
745
+ it('rejects a preview binding whose apiKey does not start with API_KEY_PREFIX', () => {
450
746
  const pbDir = resolve(tempDir, '.productbrain');
451
747
  mkdirSync(pbDir, { recursive: true });
452
748
  writeFileSync(resolve(pbDir, 'config.local.json'), JSON.stringify({
@@ -455,10 +751,9 @@ describe('config resolution', () => {
455
751
  preview: true,
456
752
  }));
457
753
  resetConfigCache();
458
- const result = resolveConfig();
459
- // Should not pick up the invalid-prefix key
460
- expect(result.apiKey).toBeUndefined();
461
- expect(result.source).toBe('default');
754
+ // A present-but-malformed key is unusable, not absent — the refusal must say so, or the
755
+ // operator goes looking for a key that is sitting right there in the file.
756
+ expect(() => resolveConfig()).toThrow(/incomplete preview binding.*not a valid pb_sk_ key/i);
462
757
  });
463
758
  it('SF-3: does NOT bind a preview apiKey that has no siteUrl (never borrows config.json gateway)', () => {
464
759
  const pbDir = resolve(tempDir, '.productbrain');
@@ -468,12 +763,145 @@ describe('config resolution', () => {
468
763
  // Preview key present but its OWN siteUrl is absent (hand-edit / partial preview.json).
469
764
  writeFileSync(resolve(pbDir, 'config.local.json'), JSON.stringify({ apiKey: 'pb_sk_preview_key_0123456789abcdef', preview: true }));
470
765
  resetConfigCache();
766
+ // The preview key must NOT be bound or allowed to fall through. Pairing it with
767
+ // config.json's real-dev gateway would send a preview credential to the wrong deployment.
768
+ expect(() => resolveConfig()).toThrow(/incomplete preview binding.*missing deployment URL/i);
769
+ });
770
+ it('S5: an incomplete preview binding is diagnosed before a sibling profile pin', async () => {
771
+ const { resolveNamedProfileConfig } = await import('../lib/profiles.js');
772
+ resolveNamedProfileConfig.mockReturnValue(null);
773
+ const pbDir = resolve(tempDir, '.productbrain');
774
+ mkdirSync(pbDir, { recursive: true });
775
+ writeFileSync(resolve(pbDir, 'config.local.json'), JSON.stringify({
776
+ profile: 'repo-pin',
777
+ apiKey: 'pb_sk_preview_key_0123456789abcdef',
778
+ preview: true,
779
+ workspaceName: 'Preview Workspace',
780
+ }));
781
+ resetConfigCache();
782
+ expect(() => resolveConfig()).toThrow(/incomplete preview binding.*missing deployment URL/i);
783
+ expect(() => getConfig()).toThrow(/incomplete preview binding.*missing deployment URL/i);
784
+ });
785
+ // ── Marker-less bindings: the claim is the credential, not the `preview` stamp ──────────
786
+ //
787
+ // A config.local.json carrying an apiKey is asserting which workspace this repo talks to
788
+ // whether or not `pb:preview` stamped `preview: true` — a hand-written or partially-scrubbed
789
+ // file is exactly the case that must not be skipped.
790
+ it('binds a marker-less apiKey + siteUrl pair and does NOT defer to a sibling profile pin', async () => {
791
+ const { resolveNamedProfileConfig } = await import('../lib/profiles.js');
792
+ // A perfectly resolvable pin sits in the same file — it names a DIFFERENT tenant, so
793
+ // adopting it would silently retarget every read and write.
794
+ resolveNamedProfileConfig.mockReturnValue({
795
+ apiKey: 'pb_sk_sibling_pin_key',
796
+ siteUrl: 'https://sibling-pin.example.com',
797
+ });
798
+ const pbDir = resolve(tempDir, '.productbrain');
799
+ mkdirSync(pbDir, { recursive: true });
800
+ writeFileSync(resolve(pbDir, 'config.local.json'), JSON.stringify({
801
+ profile: 'sibling-pin',
802
+ apiKey: 'pb_sk_markerless_key_0123456789',
803
+ siteUrl: 'https://markerless.convex.site',
804
+ // no `preview: true` marker
805
+ }));
806
+ resetConfigCache();
471
807
  const result = resolveConfig();
472
- // The preview key must NOT be bound — pairing it with config.json's real-dev gateway would
473
- // send a preview credential to a non-preview deployment (STD-261). Branch is skipped entirely.
474
- expect(result.apiKey).not.toBe('pb_sk_preview_key_0123456789abcdef');
475
- expect(result.apiKey).toBeUndefined();
476
- expect(result.source).toBe('default');
808
+ expect(result.apiKey).toBe('pb_sk_markerless_key_0123456789');
809
+ expect(result.siteUrl).toBe('https://markerless.convex.site');
810
+ expect(result.source).toBe('project');
811
+ });
812
+ it('refuses a marker-less apiKey with no siteUrl instead of resolving to the default gateway', () => {
813
+ const pbDir = resolve(tempDir, '.productbrain');
814
+ mkdirSync(pbDir, { recursive: true });
815
+ writeFileSync(resolve(pbDir, 'config.local.json'), JSON.stringify({ apiKey: 'pb_sk_markerless_key_0123456789' }));
816
+ resetConfigCache();
817
+ // Silently falling through would send this credential to the production gateway (STD-261).
818
+ expect(() => resolveConfig()).toThrow(/incomplete preview binding.*missing deployment URL/i);
819
+ });
820
+ it('S5: the marker-less refusal also holds through the loadEnv() cascade', () => {
821
+ const pbDir = resolve(tempDir, '.productbrain');
822
+ mkdirSync(pbDir, { recursive: true });
823
+ writeFileSync(resolve(pbDir, 'config.local.json'), JSON.stringify({ apiKey: 'pb_sk_markerless_key_0123456789' }));
824
+ resetConfigCache();
825
+ expect(() => getConfig()).toThrow(/incomplete preview binding.*missing deployment URL/i);
826
+ // The refusal must not leave a half-bound credential behind for the next caller.
827
+ expect(process.env.PRODUCTBRAIN_API_KEY).toBeUndefined();
828
+ });
829
+ // A present-but-non-string apiKey is a corrupt or hand-written binding, not an absent one.
830
+ // Treating it as absent would let the sibling profile pin supply a DIFFERENT tenant's
831
+ // credential — the workspace substitution this path exists to prevent.
832
+ it.each([
833
+ ['a number', 12345],
834
+ ['an empty string', ''],
835
+ ['a boolean', true],
836
+ ['an object', { key: 'pb_sk_nested' }],
837
+ ])('refuses a marker-less binding whose apiKey is %s, rather than adopting the sibling pin', async (_label, apiKey) => {
838
+ const { resolveNamedProfileConfig } = await import('../lib/profiles.js');
839
+ // A perfectly resolvable pin naming a DIFFERENT tenant sits in the same file.
840
+ resolveNamedProfileConfig.mockReturnValue({
841
+ apiKey: 'pb_sk_sibling_pin_key',
842
+ siteUrl: 'https://sibling-pin.example.com',
843
+ });
844
+ const pbDir = resolve(tempDir, '.productbrain');
845
+ mkdirSync(pbDir, { recursive: true });
846
+ writeFileSync(resolve(pbDir, 'config.local.json'), JSON.stringify({ profile: 'sibling-pin', apiKey, siteUrl: 'https://markerless.convex.site' }));
847
+ resetConfigCache();
848
+ expect(() => resolveConfig()).toThrow(/not a valid pb_sk_ key/i);
849
+ });
850
+ it('treats an explicitly null apiKey as absent — JSON null means "no value"', async () => {
851
+ const { resolveNamedProfileConfig } = await import('../lib/profiles.js');
852
+ resolveNamedProfileConfig.mockReturnValue({
853
+ apiKey: 'pb_sk_pin_key',
854
+ siteUrl: 'https://pinned.example.com',
855
+ });
856
+ const pbDir = resolve(tempDir, '.productbrain');
857
+ mkdirSync(pbDir, { recursive: true });
858
+ writeFileSync(resolve(pbDir, 'config.local.json'), JSON.stringify({ profile: 'pinned-workspace', apiKey: null }));
859
+ resetConfigCache();
860
+ const result = resolveConfig();
861
+ expect(result.apiKey).toBe('pb_sk_pin_key');
862
+ expect(result.source).toBe('project');
863
+ });
864
+ it('leaves the ordinary pin-only path untouched — the widened claim test must not swallow it', async () => {
865
+ const { resolveNamedProfileConfig } = await import('../lib/profiles.js');
866
+ resolveNamedProfileConfig.mockReturnValue({
867
+ apiKey: 'pb_sk_pin_only_key',
868
+ siteUrl: 'https://pinned-profile.example.com',
869
+ });
870
+ const pbDir = resolve(tempDir, '.productbrain');
871
+ mkdirSync(pbDir, { recursive: true });
872
+ // Committed config.json + a pin whose profile stores its own URL: the pin path's normal
873
+ // shape (pb connect writes the URL into the profile). config.json's siteUrl routes nothing.
874
+ writeFileSync(resolve(pbDir, 'config.json'), JSON.stringify({ siteUrl: 'https://project-gateway.example.com' }));
875
+ writeFileSync(resolve(pbDir, 'config.local.json'), JSON.stringify({ profile: 'pin-only-workspace' }));
876
+ resetConfigCache();
877
+ const result = resolveConfig();
878
+ expect(result.apiKey).toBe('pb_sk_pin_only_key');
879
+ expect(result.siteUrl).toBe('https://pinned-profile.example.com');
880
+ expect(result.source).toBe('project');
881
+ });
882
+ });
883
+ describe('readLocalProjectConfig() — apiKey validity', () => {
884
+ it('withholds a malformed apiKey and flags it so diagnostics can name the fault', async () => {
885
+ const pbDir = resolve(tempDir, '.productbrain');
886
+ mkdirSync(pbDir, { recursive: true });
887
+ writeFileSync(resolve(pbDir, 'config.local.json'), JSON.stringify({ apiKey: 'sk_bad_prefix_key', siteUrl: 'https://my-preview.convex.site' }));
888
+ const { readLocalProjectConfig } = await import('../lib/config.js');
889
+ const local = readLocalProjectConfig();
890
+ // Withheld from `apiKey` so it can never bind, but not reported as absent either.
891
+ expect(local?.apiKey).toBeUndefined();
892
+ expect(local?.apiKeyMalformed).toBe(true);
893
+ });
894
+ it('loads a valid apiKey with no malformed flag', async () => {
895
+ const pbDir = resolve(tempDir, '.productbrain');
896
+ mkdirSync(pbDir, { recursive: true });
897
+ writeFileSync(resolve(pbDir, 'config.local.json'), JSON.stringify({
898
+ apiKey: 'pb_sk_preview_key_0123456789abcdef',
899
+ siteUrl: 'https://my-preview.convex.site',
900
+ }));
901
+ const { readLocalProjectConfig } = await import('../lib/config.js');
902
+ const local = readLocalProjectConfig();
903
+ expect(local?.apiKey).toBe('pb_sk_preview_key_0123456789abcdef');
904
+ expect(local?.apiKeyMalformed).toBeUndefined();
477
905
  });
478
906
  });
479
907
  describe('getPreviewBinding()', () => {
@@ -562,5 +990,96 @@ describe('config resolution', () => {
562
990
  stderrWrite.mockRestore();
563
991
  });
564
992
  });
993
+ // ── TEN-4500 / TASK-640: a key travels only with the site URL stored or exported beside it ──
994
+ //
995
+ // `.productbrain/config.json` is committed, so a cloned repo controls its siteUrl. A key from
996
+ // anywhere else must never be sent there: with no URL of its own it goes to DEFAULT_SITE_URL.
997
+ describe('a key travels only with its own site URL (TEN-4500)', () => {
998
+ const DEFAULT = 'https://gateway.productbrain.io';
999
+ const COMMITTED = 'https://cloned-repo.example.com';
1000
+ function commitProjectSiteUrl() {
1001
+ const pbDir = resolve(tempDir, '.productbrain');
1002
+ mkdirSync(pbDir, { recursive: true });
1003
+ writeFileSync(resolve(pbDir, 'config.json'), JSON.stringify({ siteUrl: COMMITTED }));
1004
+ return pbDir;
1005
+ }
1006
+ it('an exported key with no exported site URL is sent to DEFAULT_SITE_URL, never config.json siteUrl', () => {
1007
+ process.env.PRODUCTBRAIN_API_KEY = 'pb_sk_env_key';
1008
+ commitProjectSiteUrl();
1009
+ expect(getConfig().siteUrl).toBe(DEFAULT);
1010
+ });
1011
+ it('loadEnv and resolveConfig name the same site URL for the same inputs', async () => {
1012
+ const { resolveNamedProfileConfig, resolveProfileConfig } = await import('../lib/profiles.js');
1013
+ const named = resolveNamedProfileConfig;
1014
+ const active = resolveProfileConfig;
1015
+ const cases = [
1016
+ {
1017
+ name: 'env key, no env URL, committed config.json',
1018
+ arrange: () => {
1019
+ process.env.PRODUCTBRAIN_API_KEY = 'pb_sk_env_key';
1020
+ commitProjectSiteUrl();
1021
+ },
1022
+ expected: DEFAULT,
1023
+ },
1024
+ {
1025
+ name: 'env key with env URL, committed config.json',
1026
+ arrange: () => {
1027
+ process.env.PRODUCTBRAIN_API_KEY = 'pb_sk_env_key';
1028
+ process.env.CONVEX_SITE_URL = 'https://env.example.com';
1029
+ commitProjectSiteUrl();
1030
+ },
1031
+ expected: 'https://env.example.com',
1032
+ },
1033
+ {
1034
+ name: 'pinned profile with its own URL, exported URL, committed config.json',
1035
+ arrange: () => {
1036
+ named.mockReturnValue({ apiKey: 'pb_sk_pinned_key', siteUrl: 'https://pinned.example.com' });
1037
+ process.env.CONVEX_SITE_URL = 'https://env.example.com';
1038
+ const pbDir = commitProjectSiteUrl();
1039
+ writeFileSync(resolve(pbDir, 'config.local.json'), JSON.stringify({ profile: 'product-brain' }));
1040
+ },
1041
+ expected: 'https://pinned.example.com',
1042
+ },
1043
+ {
1044
+ name: 'pinned profile with no URL, committed config.json',
1045
+ arrange: () => {
1046
+ named.mockReturnValue({ apiKey: 'pb_sk_pinned_key' });
1047
+ const pbDir = commitProjectSiteUrl();
1048
+ writeFileSync(resolve(pbDir, 'config.local.json'), JSON.stringify({ profile: 'product-brain' }));
1049
+ },
1050
+ expected: DEFAULT,
1051
+ },
1052
+ {
1053
+ name: 'unpinned profile with its own URL, exported URL',
1054
+ arrange: () => {
1055
+ active.mockReturnValue({ apiKey: 'pb_sk_profile_key', siteUrl: 'https://profile.example.com', profileName: 'p' });
1056
+ process.env.CONVEX_SITE_URL = 'https://env.example.com';
1057
+ },
1058
+ expected: 'https://profile.example.com',
1059
+ },
1060
+ {
1061
+ name: 'unpinned profile with no URL, exported URL',
1062
+ arrange: () => {
1063
+ active.mockReturnValue({ apiKey: 'pb_sk_profile_key', profileName: 'p' });
1064
+ process.env.CONVEX_SITE_URL = 'https://env.example.com';
1065
+ },
1066
+ expected: DEFAULT,
1067
+ },
1068
+ ];
1069
+ const observed = cases.map(({ name, arrange }) => {
1070
+ named.mockReset();
1071
+ active.mockReset();
1072
+ delete process.env.PRODUCTBRAIN_API_KEY;
1073
+ delete process.env.CONVEX_SITE_URL;
1074
+ rmSync(resolve(tempDir, '.productbrain'), { recursive: true, force: true });
1075
+ arrange();
1076
+ const resolved = resolveConfig().siteUrl;
1077
+ resetConfigCache();
1078
+ const loaded = getConfig().siteUrl;
1079
+ return { name, resolved, loaded };
1080
+ });
1081
+ expect(observed).toEqual(cases.map(({ name, expected }) => ({ name, resolved: expected, loaded: expected })));
1082
+ });
1083
+ });
565
1084
  });
566
1085
  //# sourceMappingURL=config.test.js.map