@productbrain/cli 0.1.0-beta.86 → 0.1.0-beta.8610

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 (1454) hide show
  1. package/README.md +11 -2
  2. package/dist/__tests__/adapters.test.js +76 -23
  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__/canonicalRefs.vocab.test.d.ts +2 -0
  11. package/dist/__tests__/canonicalRefs.vocab.test.d.ts.map +1 -0
  12. package/dist/__tests__/canonicalRefs.vocab.test.js +251 -0
  13. package/dist/__tests__/canonicalRefs.vocab.test.js.map +1 -0
  14. package/dist/__tests__/capture-receipt-coaching.test.d.ts +2 -0
  15. package/dist/__tests__/capture-receipt-coaching.test.d.ts.map +1 -0
  16. package/dist/__tests__/capture-receipt-coaching.test.js +89 -0
  17. package/dist/__tests__/capture-receipt-coaching.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 +1298 -94
  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 +100 -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 +107 -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.d.ts +1 -1
  45. package/dist/__tests__/config.test.js +845 -18
  46. package/dist/__tests__/config.test.js.map +1 -1
  47. package/dist/__tests__/constants.test.js +6 -1
  48. package/dist/__tests__/constants.test.js.map +1 -1
  49. package/dist/__tests__/constellation.test.js +26 -14
  50. package/dist/__tests__/constellation.test.js.map +1 -1
  51. package/dist/__tests__/conversation.test.d.ts +2 -0
  52. package/dist/__tests__/conversation.test.d.ts.map +1 -0
  53. package/dist/__tests__/conversation.test.js +113 -0
  54. package/dist/__tests__/conversation.test.js.map +1 -0
  55. package/dist/__tests__/entry-formatter.test.d.ts +2 -0
  56. package/dist/__tests__/entry-formatter.test.d.ts.map +1 -0
  57. package/dist/__tests__/entry-formatter.test.js +129 -0
  58. package/dist/__tests__/entry-formatter.test.js.map +1 -0
  59. package/dist/__tests__/entry-preflight.test.d.ts +2 -0
  60. package/dist/__tests__/entry-preflight.test.d.ts.map +1 -0
  61. package/dist/__tests__/entry-preflight.test.js +58 -0
  62. package/dist/__tests__/entry-preflight.test.js.map +1 -0
  63. package/dist/__tests__/entryAccept-batch.test.d.ts +2 -0
  64. package/dist/__tests__/entryAccept-batch.test.d.ts.map +1 -0
  65. package/dist/__tests__/entryAccept-batch.test.js +305 -0
  66. package/dist/__tests__/entryAccept-batch.test.js.map +1 -0
  67. package/dist/__tests__/entryAccept.test.d.ts +2 -0
  68. package/dist/__tests__/entryAccept.test.d.ts.map +1 -0
  69. package/dist/__tests__/entryAccept.test.js +464 -0
  70. package/dist/__tests__/entryAccept.test.js.map +1 -0
  71. package/dist/__tests__/entryDiscardResolve.test.d.ts +2 -0
  72. package/dist/__tests__/entryDiscardResolve.test.d.ts.map +1 -0
  73. package/dist/__tests__/entryDiscardResolve.test.js +28 -0
  74. package/dist/__tests__/entryDiscardResolve.test.js.map +1 -0
  75. package/dist/__tests__/entryOwn.test.d.ts +2 -0
  76. package/dist/__tests__/entryOwn.test.d.ts.map +1 -0
  77. package/dist/__tests__/entryOwn.test.js +50 -0
  78. package/dist/__tests__/entryOwn.test.js.map +1 -0
  79. package/dist/__tests__/entryTick.test.d.ts +2 -0
  80. package/dist/__tests__/entryTick.test.d.ts.map +1 -0
  81. package/dist/__tests__/entryTick.test.js +40 -0
  82. package/dist/__tests__/entryTick.test.js.map +1 -0
  83. package/dist/__tests__/envelope-contract.test.d.ts +15 -0
  84. package/dist/__tests__/envelope-contract.test.d.ts.map +1 -0
  85. package/dist/__tests__/envelope-contract.test.js +154 -0
  86. package/dist/__tests__/envelope-contract.test.js.map +1 -0
  87. package/dist/__tests__/errors.test.js +46 -0
  88. package/dist/__tests__/errors.test.js.map +1 -1
  89. package/dist/__tests__/fields.test.js +14 -3
  90. package/dist/__tests__/fields.test.js.map +1 -1
  91. package/dist/__tests__/gateway-dry-run-timeout.test.d.ts +2 -0
  92. package/dist/__tests__/gateway-dry-run-timeout.test.d.ts.map +1 -0
  93. package/dist/__tests__/gateway-dry-run-timeout.test.js +70 -0
  94. package/dist/__tests__/gateway-dry-run-timeout.test.js.map +1 -0
  95. package/dist/__tests__/gateway-timeout-body-phase.test.d.ts +2 -0
  96. package/dist/__tests__/gateway-timeout-body-phase.test.d.ts.map +1 -0
  97. package/dist/__tests__/gateway-timeout-body-phase.test.js +121 -0
  98. package/dist/__tests__/gateway-timeout-body-phase.test.js.map +1 -0
  99. package/dist/__tests__/handshake-augment.test.d.ts +2 -0
  100. package/dist/__tests__/handshake-augment.test.d.ts.map +1 -0
  101. package/dist/__tests__/handshake-augment.test.js +406 -0
  102. package/dist/__tests__/handshake-augment.test.js.map +1 -0
  103. package/dist/__tests__/handshake-dormancy.test.d.ts +2 -0
  104. package/dist/__tests__/handshake-dormancy.test.d.ts.map +1 -0
  105. package/dist/__tests__/handshake-dormancy.test.js +24 -0
  106. package/dist/__tests__/handshake-dormancy.test.js.map +1 -0
  107. package/dist/__tests__/handshake-formatter.test.d.ts +2 -0
  108. package/dist/__tests__/handshake-formatter.test.d.ts.map +1 -0
  109. package/dist/__tests__/handshake-formatter.test.js +111 -0
  110. package/dist/__tests__/handshake-formatter.test.js.map +1 -0
  111. package/dist/__tests__/handshake-preview.test.d.ts +2 -0
  112. package/dist/__tests__/handshake-preview.test.d.ts.map +1 -0
  113. package/dist/__tests__/handshake-preview.test.js +473 -0
  114. package/dist/__tests__/handshake-preview.test.js.map +1 -0
  115. package/dist/__tests__/handshake-session-threading.test.d.ts +2 -0
  116. package/dist/__tests__/handshake-session-threading.test.d.ts.map +1 -0
  117. package/dist/__tests__/handshake-session-threading.test.js +184 -0
  118. package/dist/__tests__/handshake-session-threading.test.js.map +1 -0
  119. package/dist/__tests__/handshake.e2e.test.d.ts +2 -0
  120. package/dist/__tests__/handshake.e2e.test.d.ts.map +1 -0
  121. package/dist/__tests__/handshake.e2e.test.js +226 -0
  122. package/dist/__tests__/handshake.e2e.test.js.map +1 -0
  123. package/dist/__tests__/handshake.test.js +828 -4
  124. package/dist/__tests__/handshake.test.js.map +1 -1
  125. package/dist/__tests__/health-gap-kinds-drift.test.d.ts +2 -0
  126. package/dist/__tests__/health-gap-kinds-drift.test.d.ts.map +1 -0
  127. package/dist/__tests__/health-gap-kinds-drift.test.js +43 -0
  128. package/dist/__tests__/health-gap-kinds-drift.test.js.map +1 -0
  129. package/dist/__tests__/hook-intents.test.js +2 -2
  130. package/dist/__tests__/hook-intents.test.js.map +1 -1
  131. package/dist/__tests__/ingest.test.js +9 -0
  132. package/dist/__tests__/ingest.test.js.map +1 -1
  133. package/dist/__tests__/init.test.js +51 -14
  134. package/dist/__tests__/init.test.js.map +1 -1
  135. package/dist/__tests__/kernel-value-sets-drift.test.d.ts +2 -0
  136. package/dist/__tests__/kernel-value-sets-drift.test.d.ts.map +1 -0
  137. package/dist/__tests__/kernel-value-sets-drift.test.js +46 -0
  138. package/dist/__tests__/kernel-value-sets-drift.test.js.map +1 -0
  139. package/dist/__tests__/kernel-value-sets-generator.test.d.ts +2 -0
  140. package/dist/__tests__/kernel-value-sets-generator.test.d.ts.map +1 -0
  141. package/dist/__tests__/kernel-value-sets-generator.test.js +108 -0
  142. package/dist/__tests__/kernel-value-sets-generator.test.js.map +1 -0
  143. package/dist/__tests__/manifest.test.js +118 -1
  144. package/dist/__tests__/manifest.test.js.map +1 -1
  145. package/dist/__tests__/method-publish-coherency.test.d.ts +9 -0
  146. package/dist/__tests__/method-publish-coherency.test.d.ts.map +1 -0
  147. package/dist/__tests__/method-publish-coherency.test.js +71 -0
  148. package/dist/__tests__/method-publish-coherency.test.js.map +1 -0
  149. package/dist/__tests__/method-registry.integration.test.js +2 -3
  150. package/dist/__tests__/method-registry.integration.test.js.map +1 -1
  151. package/dist/__tests__/method-registry.test.d.ts +6 -8
  152. package/dist/__tests__/method-registry.test.d.ts.map +1 -1
  153. package/dist/__tests__/method-registry.test.js +22 -70
  154. package/dist/__tests__/method-registry.test.js.map +1 -1
  155. package/dist/__tests__/missingPin.test.d.ts +11 -0
  156. package/dist/__tests__/missingPin.test.d.ts.map +1 -0
  157. package/dist/__tests__/missingPin.test.js +233 -0
  158. package/dist/__tests__/missingPin.test.js.map +1 -0
  159. package/dist/__tests__/notice-marker.test.d.ts +2 -0
  160. package/dist/__tests__/notice-marker.test.d.ts.map +1 -0
  161. package/dist/__tests__/notice-marker.test.js +176 -0
  162. package/dist/__tests__/notice-marker.test.js.map +1 -0
  163. package/dist/__tests__/onboarding-path-b.test.js +4 -4
  164. package/dist/__tests__/onboarding-path-b.test.js.map +1 -1
  165. package/dist/__tests__/onboarding.test.js +29 -5
  166. package/dist/__tests__/onboarding.test.js.map +1 -1
  167. package/dist/__tests__/onboardingFallback.test.d.ts +2 -0
  168. package/dist/__tests__/onboardingFallback.test.d.ts.map +1 -0
  169. package/dist/__tests__/onboardingFallback.test.js +74 -0
  170. package/dist/__tests__/onboardingFallback.test.js.map +1 -0
  171. package/dist/__tests__/orient.test.js +520 -17
  172. package/dist/__tests__/orient.test.js.map +1 -1
  173. package/dist/__tests__/perimeter.test.d.ts +2 -0
  174. package/dist/__tests__/perimeter.test.d.ts.map +1 -0
  175. package/dist/__tests__/perimeter.test.js +165 -0
  176. package/dist/__tests__/perimeter.test.js.map +1 -0
  177. package/dist/__tests__/personal-layer.test.d.ts +1 -2
  178. package/dist/__tests__/personal-layer.test.d.ts.map +1 -1
  179. package/dist/__tests__/personal-layer.test.js +12 -48
  180. package/dist/__tests__/personal-layer.test.js.map +1 -1
  181. package/dist/__tests__/preview-key-refresh.test.d.ts +2 -0
  182. package/dist/__tests__/preview-key-refresh.test.d.ts.map +1 -0
  183. package/dist/__tests__/preview-key-refresh.test.js +126 -0
  184. package/dist/__tests__/preview-key-refresh.test.js.map +1 -0
  185. package/dist/__tests__/profiles.test.js +613 -5
  186. package/dist/__tests__/profiles.test.js.map +1 -1
  187. package/dist/__tests__/proof-run.test.d.ts +2 -0
  188. package/dist/__tests__/proof-run.test.d.ts.map +1 -0
  189. package/dist/__tests__/proof-run.test.js +255 -0
  190. package/dist/__tests__/proof-run.test.js.map +1 -0
  191. package/dist/__tests__/rate-limit-resilience.test.d.ts +7 -0
  192. package/dist/__tests__/rate-limit-resilience.test.d.ts.map +1 -0
  193. package/dist/__tests__/rate-limit-resilience.test.js +209 -0
  194. package/dist/__tests__/rate-limit-resilience.test.js.map +1 -0
  195. package/dist/__tests__/read-target-notice.test.d.ts +2 -0
  196. package/dist/__tests__/read-target-notice.test.d.ts.map +1 -0
  197. package/dist/__tests__/read-target-notice.test.js +129 -0
  198. package/dist/__tests__/read-target-notice.test.js.map +1 -0
  199. package/dist/__tests__/relate.test.js +246 -14
  200. package/dist/__tests__/relate.test.js.map +1 -1
  201. package/dist/__tests__/repo-detect.test.js +18 -38
  202. package/dist/__tests__/repo-detect.test.js.map +1 -1
  203. package/dist/__tests__/reportedProfile.test.d.ts +2 -0
  204. package/dist/__tests__/reportedProfile.test.d.ts.map +1 -0
  205. package/dist/__tests__/reportedProfile.test.js +328 -0
  206. package/dist/__tests__/reportedProfile.test.js.map +1 -0
  207. package/dist/__tests__/restore.test.d.ts +2 -0
  208. package/dist/__tests__/restore.test.d.ts.map +1 -0
  209. package/dist/__tests__/restore.test.js +85 -0
  210. package/dist/__tests__/restore.test.js.map +1 -0
  211. package/dist/__tests__/route-latency-budget.test.d.ts +2 -0
  212. package/dist/__tests__/route-latency-budget.test.d.ts.map +1 -0
  213. package/dist/__tests__/route-latency-budget.test.js +105 -0
  214. package/dist/__tests__/route-latency-budget.test.js.map +1 -0
  215. package/dist/__tests__/runner.test.js +59 -44
  216. package/dist/__tests__/runner.test.js.map +1 -1
  217. package/dist/__tests__/session-binding-refusal-tenant.test.d.ts +2 -0
  218. package/dist/__tests__/session-binding-refusal-tenant.test.d.ts.map +1 -0
  219. package/dist/__tests__/session-binding-refusal-tenant.test.js +112 -0
  220. package/dist/__tests__/session-binding-refusal-tenant.test.js.map +1 -0
  221. package/dist/__tests__/session-close-loop.test.d.ts +2 -0
  222. package/dist/__tests__/session-close-loop.test.d.ts.map +1 -0
  223. package/dist/__tests__/session-close-loop.test.js +213 -0
  224. package/dist/__tests__/session-close-loop.test.js.map +1 -0
  225. package/dist/__tests__/session-label.test.d.ts +2 -0
  226. package/dist/__tests__/session-label.test.d.ts.map +1 -0
  227. package/dist/__tests__/session-label.test.js +46 -0
  228. package/dist/__tests__/session-label.test.js.map +1 -0
  229. package/dist/__tests__/session-list-show.test.d.ts +2 -0
  230. package/dist/__tests__/session-list-show.test.d.ts.map +1 -0
  231. package/dist/__tests__/session-list-show.test.js +174 -0
  232. package/dist/__tests__/session-list-show.test.js.map +1 -0
  233. package/dist/__tests__/session-reset.test.d.ts +2 -0
  234. package/dist/__tests__/session-reset.test.d.ts.map +1 -0
  235. package/dist/__tests__/session-reset.test.js +138 -0
  236. package/dist/__tests__/session-reset.test.js.map +1 -0
  237. package/dist/__tests__/session-resume-backstop.test.d.ts +2 -0
  238. package/dist/__tests__/session-resume-backstop.test.d.ts.map +1 -0
  239. package/dist/__tests__/session-resume-backstop.test.js +139 -0
  240. package/dist/__tests__/session-resume-backstop.test.js.map +1 -0
  241. package/dist/__tests__/session-role-name-sanitize.test.d.ts +2 -0
  242. package/dist/__tests__/session-role-name-sanitize.test.d.ts.map +1 -0
  243. package/dist/__tests__/session-role-name-sanitize.test.js +120 -0
  244. package/dist/__tests__/session-role-name-sanitize.test.js.map +1 -0
  245. package/dist/__tests__/session-start-key-refresh.test.d.ts +2 -0
  246. package/dist/__tests__/session-start-key-refresh.test.d.ts.map +1 -0
  247. package/dist/__tests__/session-start-key-refresh.test.js +191 -0
  248. package/dist/__tests__/session-start-key-refresh.test.js.map +1 -0
  249. package/dist/__tests__/session-state-machine.test.js +235 -10
  250. package/dist/__tests__/session-state-machine.test.js.map +1 -1
  251. package/dist/__tests__/session-switch.test.d.ts +2 -0
  252. package/dist/__tests__/session-switch.test.d.ts.map +1 -0
  253. package/dist/__tests__/session-switch.test.js +267 -0
  254. package/dist/__tests__/session-switch.test.js.map +1 -0
  255. package/dist/__tests__/session-touch.test.js +6 -1
  256. package/dist/__tests__/session-touch.test.js.map +1 -1
  257. package/dist/__tests__/sessionBinding.test.d.ts +2 -0
  258. package/dist/__tests__/sessionBinding.test.d.ts.map +1 -0
  259. package/dist/__tests__/sessionBinding.test.js +118 -0
  260. package/dist/__tests__/sessionBinding.test.js.map +1 -0
  261. package/dist/__tests__/sessionByIdLookup.test.d.ts +2 -0
  262. package/dist/__tests__/sessionByIdLookup.test.d.ts.map +1 -0
  263. package/dist/__tests__/sessionByIdLookup.test.js +63 -0
  264. package/dist/__tests__/sessionByIdLookup.test.js.map +1 -0
  265. package/dist/__tests__/skill-vocabulary.test.d.ts +21 -0
  266. package/dist/__tests__/skill-vocabulary.test.d.ts.map +1 -0
  267. package/dist/__tests__/skill-vocabulary.test.js +192 -0
  268. package/dist/__tests__/skill-vocabulary.test.js.map +1 -0
  269. package/dist/__tests__/state.test.js +21 -1
  270. package/dist/__tests__/state.test.js.map +1 -1
  271. package/dist/__tests__/stillTrue.test.d.ts +2 -0
  272. package/dist/__tests__/stillTrue.test.d.ts.map +1 -0
  273. package/dist/__tests__/stillTrue.test.js +52 -0
  274. package/dist/__tests__/stillTrue.test.js.map +1 -0
  275. package/dist/__tests__/strip.test.js +57 -3
  276. package/dist/__tests__/strip.test.js.map +1 -1
  277. package/dist/__tests__/tenant-notice-write-path.test.d.ts +2 -0
  278. package/dist/__tests__/tenant-notice-write-path.test.d.ts.map +1 -0
  279. package/dist/__tests__/tenant-notice-write-path.test.js +169 -0
  280. package/dist/__tests__/tenant-notice-write-path.test.js.map +1 -0
  281. package/dist/__tests__/update-check.test.d.ts +2 -0
  282. package/dist/__tests__/update-check.test.d.ts.map +1 -0
  283. package/dist/__tests__/update-check.test.js +215 -0
  284. package/dist/__tests__/update-check.test.js.map +1 -0
  285. package/dist/__tests__/update.test.js +434 -7
  286. package/dist/__tests__/update.test.js.map +1 -1
  287. package/dist/__tests__/upgrade-runner.test.d.ts +2 -0
  288. package/dist/__tests__/upgrade-runner.test.d.ts.map +1 -0
  289. package/dist/__tests__/upgrade-runner.test.js +54 -0
  290. package/dist/__tests__/upgrade-runner.test.js.map +1 -0
  291. package/dist/__tests__/upgrade.test.d.ts +2 -0
  292. package/dist/__tests__/upgrade.test.d.ts.map +1 -0
  293. package/dist/__tests__/upgrade.test.js +56 -0
  294. package/dist/__tests__/upgrade.test.js.map +1 -0
  295. package/dist/__tests__/verify-formatter.test.d.ts +2 -0
  296. package/dist/__tests__/verify-formatter.test.d.ts.map +1 -0
  297. package/dist/__tests__/verify-formatter.test.js +85 -0
  298. package/dist/__tests__/verify-formatter.test.js.map +1 -0
  299. package/dist/__tests__/vocabulary-leak.test.d.ts +33 -0
  300. package/dist/__tests__/vocabulary-leak.test.d.ts.map +1 -0
  301. package/dist/__tests__/vocabulary-leak.test.js +430 -0
  302. package/dist/__tests__/vocabulary-leak.test.js.map +1 -0
  303. package/dist/__tests__/workspace.test.js +32 -12
  304. package/dist/__tests__/workspace.test.js.map +1 -1
  305. package/dist/__tests__/workspaceNotice.test.d.ts +2 -0
  306. package/dist/__tests__/workspaceNotice.test.d.ts.map +1 -0
  307. package/dist/__tests__/workspaceNotice.test.js +571 -0
  308. package/dist/__tests__/workspaceNotice.test.js.map +1 -0
  309. package/dist/commands/__tests__/connect-handoff.test.d.ts +11 -0
  310. package/dist/commands/__tests__/connect-handoff.test.d.ts.map +1 -0
  311. package/dist/commands/__tests__/connect-handoff.test.js +111 -0
  312. package/dist/commands/__tests__/connect-handoff.test.js.map +1 -0
  313. package/dist/commands/__tests__/quality.test.d.ts +2 -0
  314. package/dist/commands/__tests__/quality.test.d.ts.map +1 -0
  315. package/dist/commands/__tests__/quality.test.js +156 -0
  316. package/dist/commands/__tests__/quality.test.js.map +1 -0
  317. package/dist/commands/__tests__/rework.test.d.ts +2 -0
  318. package/dist/commands/__tests__/rework.test.d.ts.map +1 -0
  319. package/dist/commands/__tests__/rework.test.js +149 -0
  320. package/dist/commands/__tests__/rework.test.js.map +1 -0
  321. package/dist/commands/__tests__/tensionsList.test.d.ts +2 -0
  322. package/dist/commands/__tests__/tensionsList.test.d.ts.map +1 -0
  323. package/dist/commands/__tests__/tensionsList.test.js +63 -0
  324. package/dist/commands/__tests__/tensionsList.test.js.map +1 -0
  325. package/dist/commands/accept-policy.d.ts +10 -0
  326. package/dist/commands/accept-policy.d.ts.map +1 -0
  327. package/dist/commands/accept-policy.js +107 -0
  328. package/dist/commands/accept-policy.js.map +1 -0
  329. package/dist/commands/admin/cockpit.d.ts +2 -13
  330. package/dist/commands/admin/cockpit.d.ts.map +1 -1
  331. package/dist/commands/admin/cockpit.js +5 -5
  332. package/dist/commands/admin/cockpit.js.map +1 -1
  333. package/dist/commands/admin/index.d.ts +49 -0
  334. package/dist/commands/admin/index.d.ts.map +1 -1
  335. package/dist/commands/admin/index.js +148 -29
  336. package/dist/commands/admin/index.js.map +1 -1
  337. package/dist/commands/admin/index.test.d.ts +2 -0
  338. package/dist/commands/admin/index.test.d.ts.map +1 -0
  339. package/dist/commands/admin/index.test.js +94 -0
  340. package/dist/commands/admin/index.test.js.map +1 -0
  341. package/dist/commands/admin/inspect.js +1 -1
  342. package/dist/commands/admin/inspect.js.map +1 -1
  343. package/dist/commands/admin/probe.d.ts +75 -0
  344. package/dist/commands/admin/probe.d.ts.map +1 -0
  345. package/dist/commands/admin/probe.js +224 -0
  346. package/dist/commands/admin/probe.js.map +1 -0
  347. package/dist/commands/admin/probe.test.d.ts +2 -0
  348. package/dist/commands/admin/probe.test.d.ts.map +1 -0
  349. package/dist/commands/admin/probe.test.js +193 -0
  350. package/dist/commands/admin/probe.test.js.map +1 -0
  351. package/dist/commands/admin/run.d.ts +43 -0
  352. package/dist/commands/admin/run.d.ts.map +1 -0
  353. package/dist/commands/admin/run.js +78 -0
  354. package/dist/commands/admin/run.js.map +1 -0
  355. package/dist/commands/admin/run.test.d.ts +18 -0
  356. package/dist/commands/admin/run.test.d.ts.map +1 -0
  357. package/dist/commands/admin/run.test.js +168 -0
  358. package/dist/commands/admin/run.test.js.map +1 -0
  359. package/dist/commands/admin/seed.d.ts +32 -3
  360. package/dist/commands/admin/seed.d.ts.map +1 -1
  361. package/dist/commands/admin/seed.js +308 -107
  362. package/dist/commands/admin/seed.js.map +1 -1
  363. package/dist/commands/admin/seed.test.d.ts +4 -0
  364. package/dist/commands/admin/seed.test.d.ts.map +1 -1
  365. package/dist/commands/admin/seed.test.js +30 -9
  366. package/dist/commands/admin/seed.test.js.map +1 -1
  367. package/dist/commands/admin/seedRegistryEntries.generated.d.ts +14 -0
  368. package/dist/commands/admin/seedRegistryEntries.generated.d.ts.map +1 -0
  369. package/dist/commands/admin/seedRegistryEntries.generated.js +81 -0
  370. package/dist/commands/admin/seedRegistryEntries.generated.js.map +1 -0
  371. package/dist/commands/admin/seedRegistryEntries.test.d.ts +13 -0
  372. package/dist/commands/admin/seedRegistryEntries.test.d.ts.map +1 -0
  373. package/dist/commands/admin/seedRegistryEntries.test.js +96 -0
  374. package/dist/commands/admin/seedRegistryEntries.test.js.map +1 -0
  375. package/dist/commands/admin/seedRowType.d.ts +22 -0
  376. package/dist/commands/admin/seedRowType.d.ts.map +1 -0
  377. package/dist/commands/admin/seedRowType.js +2 -0
  378. package/dist/commands/admin/seedRowType.js.map +1 -0
  379. package/dist/commands/admin/seedStatusColor.d.ts +9 -0
  380. package/dist/commands/admin/seedStatusColor.d.ts.map +1 -0
  381. package/dist/commands/admin/seedStatusColor.js +19 -0
  382. package/dist/commands/admin/seedStatusColor.js.map +1 -0
  383. package/dist/commands/admin/seedStatusColor.test.d.ts +2 -0
  384. package/dist/commands/admin/seedStatusColor.test.d.ts.map +1 -0
  385. package/dist/commands/admin/seedStatusColor.test.js +31 -0
  386. package/dist/commands/admin/seedStatusColor.test.js.map +1 -0
  387. package/dist/commands/brief.d.ts.map +1 -1
  388. package/dist/commands/brief.js +24 -2
  389. package/dist/commands/brief.js.map +1 -1
  390. package/dist/commands/capture.d.ts +15 -8
  391. package/dist/commands/capture.d.ts.map +1 -1
  392. package/dist/commands/capture.js +240 -199
  393. package/dist/commands/capture.js.map +1 -1
  394. package/dist/commands/chain-walk.d.ts.map +1 -1
  395. package/dist/commands/chain-walk.js.map +1 -1
  396. package/dist/commands/changes.d.ts.map +1 -1
  397. package/dist/commands/changes.js.map +1 -1
  398. package/dist/commands/codex-prep.d.ts +12 -1
  399. package/dist/commands/codex-prep.d.ts.map +1 -1
  400. package/dist/commands/codex-prep.js +18 -84
  401. package/dist/commands/codex-prep.js.map +1 -1
  402. package/dist/commands/collections.d.ts.map +1 -1
  403. package/dist/commands/collections.js.map +1 -1
  404. package/dist/commands/conflicts.d.ts +40 -0
  405. package/dist/commands/conflicts.d.ts.map +1 -0
  406. package/dist/commands/conflicts.js +267 -0
  407. package/dist/commands/conflicts.js.map +1 -0
  408. package/dist/commands/conflicts.test.d.ts +2 -0
  409. package/dist/commands/conflicts.test.d.ts.map +1 -0
  410. package/dist/commands/conflicts.test.js +219 -0
  411. package/dist/commands/conflicts.test.js.map +1 -0
  412. package/dist/commands/connect-config.test.d.ts +2 -0
  413. package/dist/commands/connect-config.test.d.ts.map +1 -0
  414. package/dist/commands/connect-config.test.js +44 -0
  415. package/dist/commands/connect-config.test.js.map +1 -0
  416. package/dist/commands/connect-context.d.ts +55 -0
  417. package/dist/commands/connect-context.d.ts.map +1 -0
  418. package/dist/commands/connect-context.js +78 -0
  419. package/dist/commands/connect-context.js.map +1 -0
  420. package/dist/commands/connect-context.test.d.ts +2 -0
  421. package/dist/commands/connect-context.test.d.ts.map +1 -0
  422. package/dist/commands/connect-context.test.js +148 -0
  423. package/dist/commands/connect-context.test.js.map +1 -0
  424. package/dist/commands/connect-handoff.d.ts +51 -0
  425. package/dist/commands/connect-handoff.d.ts.map +1 -0
  426. package/dist/commands/connect-handoff.js +70 -0
  427. package/dist/commands/connect-handoff.js.map +1 -0
  428. package/dist/commands/connect-integration.test.js +44 -16
  429. package/dist/commands/connect-integration.test.js.map +1 -1
  430. package/dist/commands/connect-legacy-migration.test.d.ts +2 -0
  431. package/dist/commands/connect-legacy-migration.test.d.ts.map +1 -0
  432. package/dist/commands/connect-legacy-migration.test.js +109 -0
  433. package/dist/commands/connect-legacy-migration.test.js.map +1 -0
  434. package/dist/commands/connect-screens.d.ts +17 -4
  435. package/dist/commands/connect-screens.d.ts.map +1 -1
  436. package/dist/commands/connect-screens.js +83 -19
  437. package/dist/commands/connect-screens.js.map +1 -1
  438. package/dist/commands/connect.d.ts +27 -6
  439. package/dist/commands/connect.d.ts.map +1 -1
  440. package/dist/commands/connect.js +254 -75
  441. package/dist/commands/connect.js.map +1 -1
  442. package/dist/commands/connect.test.js +344 -7
  443. package/dist/commands/connect.test.js.map +1 -1
  444. package/dist/commands/constellation.d.ts.map +1 -1
  445. package/dist/commands/constellation.js.map +1 -1
  446. package/dist/commands/context.d.ts.map +1 -1
  447. package/dist/commands/context.js.map +1 -1
  448. package/dist/commands/cross-cut.d.ts.map +1 -1
  449. package/dist/commands/cross-cut.js.map +1 -1
  450. package/dist/commands/digest.d.ts +17 -0
  451. package/dist/commands/digest.d.ts.map +1 -0
  452. package/dist/commands/digest.js +58 -0
  453. package/dist/commands/digest.js.map +1 -0
  454. package/dist/commands/digest.test.d.ts +2 -0
  455. package/dist/commands/digest.test.d.ts.map +1 -0
  456. package/dist/commands/digest.test.js +36 -0
  457. package/dist/commands/digest.test.js.map +1 -0
  458. package/dist/commands/direction.d.ts +10 -0
  459. package/dist/commands/direction.d.ts.map +1 -0
  460. package/dist/commands/direction.js +79 -0
  461. package/dist/commands/direction.js.map +1 -0
  462. package/dist/commands/doctor.d.ts.map +1 -1
  463. package/dist/commands/doctor.js +173 -38
  464. package/dist/commands/doctor.js.map +1 -1
  465. package/dist/commands/doctor.test.js +352 -6
  466. package/dist/commands/doctor.test.js.map +1 -1
  467. package/dist/commands/entryAccept.d.ts +24 -0
  468. package/dist/commands/entryAccept.d.ts.map +1 -0
  469. package/dist/commands/entryAccept.js +289 -0
  470. package/dist/commands/entryAccept.js.map +1 -0
  471. package/dist/commands/entryDiscardResolve.d.ts +9 -0
  472. package/dist/commands/entryDiscardResolve.d.ts.map +1 -0
  473. package/dist/commands/entryDiscardResolve.js +27 -0
  474. package/dist/commands/entryDiscardResolve.js.map +1 -0
  475. package/dist/commands/entryOwn.d.ts +5 -0
  476. package/dist/commands/entryOwn.d.ts.map +1 -0
  477. package/dist/commands/entryOwn.js +17 -0
  478. package/dist/commands/entryOwn.js.map +1 -0
  479. package/dist/commands/entryPreflight.d.ts +8 -0
  480. package/dist/commands/entryPreflight.d.ts.map +1 -0
  481. package/dist/commands/entryPreflight.js +48 -0
  482. package/dist/commands/entryPreflight.js.map +1 -0
  483. package/dist/commands/entryTick.d.ts +8 -0
  484. package/dist/commands/entryTick.d.ts.map +1 -0
  485. package/dist/commands/entryTick.js +43 -0
  486. package/dist/commands/entryTick.js.map +1 -0
  487. package/dist/commands/feedback.d.ts +36 -0
  488. package/dist/commands/feedback.d.ts.map +1 -0
  489. package/dist/commands/feedback.js +174 -0
  490. package/dist/commands/feedback.js.map +1 -0
  491. package/dist/commands/feedback.test.d.ts +2 -0
  492. package/dist/commands/feedback.test.d.ts.map +1 -0
  493. package/dist/commands/feedback.test.js +109 -0
  494. package/dist/commands/feedback.test.js.map +1 -0
  495. package/dist/commands/fields.d.ts.map +1 -1
  496. package/dist/commands/fields.js +1 -1
  497. package/dist/commands/fields.js.map +1 -1
  498. package/dist/commands/files.d.ts +26 -0
  499. package/dist/commands/files.d.ts.map +1 -0
  500. package/dist/commands/files.js +160 -0
  501. package/dist/commands/files.js.map +1 -0
  502. package/dist/commands/files.test.d.ts +2 -0
  503. package/dist/commands/files.test.d.ts.map +1 -0
  504. package/dist/commands/files.test.js +278 -0
  505. package/dist/commands/files.test.js.map +1 -0
  506. package/dist/commands/handshake.d.ts +59 -9
  507. package/dist/commands/handshake.d.ts.map +1 -1
  508. package/dist/commands/handshake.js +815 -138
  509. package/dist/commands/handshake.js.map +1 -1
  510. package/dist/commands/handshakeCursorSkillCleanup.d.ts +36 -0
  511. package/dist/commands/handshakeCursorSkillCleanup.d.ts.map +1 -0
  512. package/dist/commands/handshakeCursorSkillCleanup.js +110 -0
  513. package/dist/commands/handshakeCursorSkillCleanup.js.map +1 -0
  514. package/dist/commands/handshakeDriftClassification.d.ts +33 -0
  515. package/dist/commands/handshakeDriftClassification.d.ts.map +1 -0
  516. package/dist/commands/handshakeDriftClassification.js +62 -0
  517. package/dist/commands/handshakeDriftClassification.js.map +1 -0
  518. package/dist/commands/history.d.ts +30 -0
  519. package/dist/commands/history.d.ts.map +1 -0
  520. package/dist/commands/history.js +62 -0
  521. package/dist/commands/history.js.map +1 -0
  522. package/dist/commands/history.test.d.ts +2 -0
  523. package/dist/commands/history.test.d.ts.map +1 -0
  524. package/dist/commands/history.test.js +106 -0
  525. package/dist/commands/history.test.js.map +1 -0
  526. package/dist/commands/ingest.d.ts.map +1 -1
  527. package/dist/commands/ingest.js +9 -0
  528. package/dist/commands/ingest.js.map +1 -1
  529. package/dist/commands/init.d.ts +1 -1
  530. package/dist/commands/init.d.ts.map +1 -1
  531. package/dist/commands/init.js +22 -13
  532. package/dist/commands/init.js.map +1 -1
  533. package/dist/commands/method.d.ts +97 -0
  534. package/dist/commands/method.d.ts.map +1 -0
  535. package/dist/commands/method.js +773 -0
  536. package/dist/commands/method.js.map +1 -0
  537. package/dist/commands/organisation.d.ts +16 -0
  538. package/dist/commands/organisation.d.ts.map +1 -0
  539. package/dist/commands/organisation.js +184 -0
  540. package/dist/commands/organisation.js.map +1 -0
  541. package/dist/commands/organisation.test.d.ts +2 -0
  542. package/dist/commands/organisation.test.d.ts.map +1 -0
  543. package/dist/commands/organisation.test.js +198 -0
  544. package/dist/commands/organisation.test.js.map +1 -0
  545. package/dist/commands/organisationHierarchy.d.ts +8 -0
  546. package/dist/commands/organisationHierarchy.d.ts.map +1 -0
  547. package/dist/commands/organisationHierarchy.js +75 -0
  548. package/dist/commands/organisationHierarchy.js.map +1 -0
  549. package/dist/commands/organisationHierarchy.test.d.ts +2 -0
  550. package/dist/commands/organisationHierarchy.test.d.ts.map +1 -0
  551. package/dist/commands/organisationHierarchy.test.js +72 -0
  552. package/dist/commands/organisationHierarchy.test.js.map +1 -0
  553. package/dist/commands/organisationWrite.d.ts +18 -0
  554. package/dist/commands/organisationWrite.d.ts.map +1 -0
  555. package/dist/commands/organisationWrite.js +71 -0
  556. package/dist/commands/organisationWrite.js.map +1 -0
  557. package/dist/commands/orient.d.ts +106 -44
  558. package/dist/commands/orient.d.ts.map +1 -1
  559. package/dist/commands/orient.js +226 -18
  560. package/dist/commands/orient.js.map +1 -1
  561. package/dist/commands/outcome.d.ts +91 -0
  562. package/dist/commands/outcome.d.ts.map +1 -0
  563. package/dist/commands/outcome.js +204 -0
  564. package/dist/commands/outcome.js.map +1 -0
  565. package/dist/commands/outcome.test.d.ts +2 -0
  566. package/dist/commands/outcome.test.d.ts.map +1 -0
  567. package/dist/commands/outcome.test.js +308 -0
  568. package/dist/commands/outcome.test.js.map +1 -0
  569. package/dist/commands/profile.d.ts +34 -2
  570. package/dist/commands/profile.d.ts.map +1 -1
  571. package/dist/commands/profile.js +294 -41
  572. package/dist/commands/profile.js.map +1 -1
  573. package/dist/commands/proof-run.d.ts +51 -0
  574. package/dist/commands/proof-run.d.ts.map +1 -0
  575. package/dist/commands/proof-run.js +209 -0
  576. package/dist/commands/proof-run.js.map +1 -0
  577. package/dist/commands/quality.d.ts +16 -0
  578. package/dist/commands/quality.d.ts.map +1 -0
  579. package/dist/commands/quality.js +29 -0
  580. package/dist/commands/quality.js.map +1 -0
  581. package/dist/commands/questions.d.ts +23 -0
  582. package/dist/commands/questions.d.ts.map +1 -0
  583. package/dist/commands/questions.js +238 -0
  584. package/dist/commands/questions.js.map +1 -0
  585. package/dist/commands/questions.test.d.ts +2 -0
  586. package/dist/commands/questions.test.d.ts.map +1 -0
  587. package/dist/commands/questions.test.js +159 -0
  588. package/dist/commands/questions.test.js.map +1 -0
  589. package/dist/commands/relate.d.ts +1 -0
  590. package/dist/commands/relate.d.ts.map +1 -1
  591. package/dist/commands/relate.js +94 -7
  592. package/dist/commands/relate.js.map +1 -1
  593. package/dist/commands/restore.d.ts +2 -0
  594. package/dist/commands/restore.d.ts.map +1 -0
  595. package/dist/commands/restore.js +83 -0
  596. package/dist/commands/restore.js.map +1 -0
  597. package/dist/commands/rework.d.ts +24 -0
  598. package/dist/commands/rework.d.ts.map +1 -0
  599. package/dist/commands/rework.js +97 -0
  600. package/dist/commands/rework.js.map +1 -0
  601. package/dist/commands/role.d.ts +49 -0
  602. package/dist/commands/role.d.ts.map +1 -0
  603. package/dist/commands/role.js +126 -0
  604. package/dist/commands/role.js.map +1 -0
  605. package/dist/commands/role.test.d.ts +2 -0
  606. package/dist/commands/role.test.d.ts.map +1 -0
  607. package/dist/commands/role.test.js +195 -0
  608. package/dist/commands/role.test.js.map +1 -0
  609. package/dist/commands/scoreboard.d.ts +26 -0
  610. package/dist/commands/scoreboard.d.ts.map +1 -0
  611. package/dist/commands/scoreboard.js +40 -0
  612. package/dist/commands/scoreboard.js.map +1 -0
  613. package/dist/commands/search.d.ts.map +1 -1
  614. package/dist/commands/search.js.map +1 -1
  615. package/dist/commands/session.d.ts +60 -7
  616. package/dist/commands/session.d.ts.map +1 -1
  617. package/dist/commands/session.js +407 -58
  618. package/dist/commands/session.js.map +1 -1
  619. package/dist/commands/shape.d.ts +16 -0
  620. package/dist/commands/shape.d.ts.map +1 -0
  621. package/dist/commands/shape.js +149 -0
  622. package/dist/commands/shape.js.map +1 -0
  623. package/dist/commands/shape.test.d.ts +2 -0
  624. package/dist/commands/shape.test.d.ts.map +1 -0
  625. package/dist/commands/shape.test.js +148 -0
  626. package/dist/commands/shape.test.js.map +1 -0
  627. package/dist/commands/status.d.ts +7 -0
  628. package/dist/commands/status.d.ts.map +1 -0
  629. package/dist/commands/status.js +102 -0
  630. package/dist/commands/status.js.map +1 -0
  631. package/dist/commands/status.test.d.ts +2 -0
  632. package/dist/commands/status.test.d.ts.map +1 -0
  633. package/dist/commands/status.test.js +75 -0
  634. package/dist/commands/status.test.js.map +1 -0
  635. package/dist/commands/stillTrue.d.ts +14 -0
  636. package/dist/commands/stillTrue.d.ts.map +1 -0
  637. package/dist/commands/stillTrue.js +48 -0
  638. package/dist/commands/stillTrue.js.map +1 -0
  639. package/dist/commands/tensionsList.d.ts +5 -0
  640. package/dist/commands/tensionsList.d.ts.map +1 -0
  641. package/dist/commands/tensionsList.js +27 -0
  642. package/dist/commands/tensionsList.js.map +1 -0
  643. package/dist/commands/update.d.ts +21 -0
  644. package/dist/commands/update.d.ts.map +1 -1
  645. package/dist/commands/update.js +146 -36
  646. package/dist/commands/update.js.map +1 -1
  647. package/dist/commands/upgrade.d.ts +5 -0
  648. package/dist/commands/upgrade.d.ts.map +1 -0
  649. package/dist/commands/upgrade.js +110 -0
  650. package/dist/commands/upgrade.js.map +1 -0
  651. package/dist/commands/usage.d.ts.map +1 -1
  652. package/dist/commands/usage.js +0 -18
  653. package/dist/commands/usage.js.map +1 -1
  654. package/dist/commands/verify.d.ts.map +1 -1
  655. package/dist/commands/verify.js +7 -1
  656. package/dist/commands/verify.js.map +1 -1
  657. package/dist/commands/welcome.d.ts.map +1 -1
  658. package/dist/commands/welcome.js +5 -2
  659. package/dist/commands/welcome.js.map +1 -1
  660. package/dist/commands/whoami.d.ts +20 -0
  661. package/dist/commands/whoami.d.ts.map +1 -0
  662. package/dist/commands/whoami.js +126 -0
  663. package/dist/commands/whoami.js.map +1 -0
  664. package/dist/commands/whoami.test.d.ts +2 -0
  665. package/dist/commands/whoami.test.d.ts.map +1 -0
  666. package/dist/commands/whoami.test.js +130 -0
  667. package/dist/commands/whoami.test.js.map +1 -0
  668. package/dist/commands/workspace.d.ts +18 -2
  669. package/dist/commands/workspace.d.ts.map +1 -1
  670. package/dist/commands/workspace.js +5 -2
  671. package/dist/commands/workspace.js.map +1 -1
  672. package/dist/formatters/__tests__/orient-possibleConflict.test.d.ts +2 -0
  673. package/dist/formatters/__tests__/orient-possibleConflict.test.d.ts.map +1 -0
  674. package/dist/formatters/__tests__/orient-possibleConflict.test.js +68 -0
  675. package/dist/formatters/__tests__/orient-possibleConflict.test.js.map +1 -0
  676. package/dist/formatters/__tests__/orient-provenance.test.d.ts +6 -0
  677. package/dist/formatters/__tests__/orient-provenance.test.d.ts.map +1 -0
  678. package/dist/formatters/__tests__/orient-provenance.test.js +394 -0
  679. package/dist/formatters/__tests__/orient-provenance.test.js.map +1 -0
  680. package/dist/formatters/__tests__/orient-ruleLists.test.d.ts +2 -0
  681. package/dist/formatters/__tests__/orient-ruleLists.test.d.ts.map +1 -0
  682. package/dist/formatters/__tests__/orient-ruleLists.test.js +76 -0
  683. package/dist/formatters/__tests__/orient-ruleLists.test.js.map +1 -0
  684. package/dist/formatters/__tests__/session-list-show.test.d.ts +2 -0
  685. package/dist/formatters/__tests__/session-list-show.test.d.ts.map +1 -0
  686. package/dist/formatters/__tests__/session-list-show.test.js +195 -0
  687. package/dist/formatters/__tests__/session-list-show.test.js.map +1 -0
  688. package/dist/formatters/__tests__/session.test.d.ts +2 -0
  689. package/dist/formatters/__tests__/session.test.d.ts.map +1 -0
  690. package/dist/formatters/__tests__/session.test.js +193 -0
  691. package/dist/formatters/__tests__/session.test.js.map +1 -0
  692. package/dist/formatters/__tests__/tensionsList.test.d.ts +2 -0
  693. package/dist/formatters/__tests__/tensionsList.test.d.ts.map +1 -0
  694. package/dist/formatters/__tests__/tensionsList.test.js +30 -0
  695. package/dist/formatters/__tests__/tensionsList.test.js.map +1 -0
  696. package/dist/formatters/brief.d.ts +6 -15
  697. package/dist/formatters/brief.d.ts.map +1 -1
  698. package/dist/formatters/brief.js +16 -14
  699. package/dist/formatters/brief.js.map +1 -1
  700. package/dist/formatters/brief.test.d.ts +2 -0
  701. package/dist/formatters/brief.test.d.ts.map +1 -0
  702. package/dist/formatters/brief.test.js +21 -0
  703. package/dist/formatters/brief.test.js.map +1 -0
  704. package/dist/formatters/capture.d.ts +13 -0
  705. package/dist/formatters/capture.d.ts.map +1 -1
  706. package/dist/formatters/capture.js +20 -1
  707. package/dist/formatters/capture.js.map +1 -1
  708. package/dist/formatters/coaching.d.ts +55 -0
  709. package/dist/formatters/coaching.d.ts.map +1 -0
  710. package/dist/formatters/coaching.js +46 -0
  711. package/dist/formatters/coaching.js.map +1 -0
  712. package/dist/formatters/collections.d.ts.map +1 -1
  713. package/dist/formatters/collections.js +13 -3
  714. package/dist/formatters/collections.js.map +1 -1
  715. package/dist/formatters/conflicts.d.ts +69 -0
  716. package/dist/formatters/conflicts.d.ts.map +1 -0
  717. package/dist/formatters/conflicts.js +87 -0
  718. package/dist/formatters/conflicts.js.map +1 -0
  719. package/dist/formatters/conflicts.test.d.ts +2 -0
  720. package/dist/formatters/conflicts.test.d.ts.map +1 -0
  721. package/dist/formatters/conflicts.test.js +136 -0
  722. package/dist/formatters/conflicts.test.js.map +1 -0
  723. package/dist/formatters/context.d.ts +1 -1
  724. package/dist/formatters/context.d.ts.map +1 -1
  725. package/dist/formatters/context.js.map +1 -1
  726. package/dist/formatters/digest.d.ts +13 -0
  727. package/dist/formatters/digest.d.ts.map +1 -0
  728. package/dist/formatters/digest.js +98 -0
  729. package/dist/formatters/digest.js.map +1 -0
  730. package/dist/formatters/digest.test.d.ts +2 -0
  731. package/dist/formatters/digest.test.d.ts.map +1 -0
  732. package/dist/formatters/digest.test.js +166 -0
  733. package/dist/formatters/digest.test.js.map +1 -0
  734. package/dist/formatters/direction.d.ts +48 -0
  735. package/dist/formatters/direction.d.ts.map +1 -0
  736. package/dist/formatters/direction.js +75 -0
  737. package/dist/formatters/direction.js.map +1 -0
  738. package/dist/formatters/direction.test.d.ts +2 -0
  739. package/dist/formatters/direction.test.d.ts.map +1 -0
  740. package/dist/formatters/direction.test.js +70 -0
  741. package/dist/formatters/direction.test.js.map +1 -0
  742. package/dist/formatters/entry.d.ts +61 -0
  743. package/dist/formatters/entry.d.ts.map +1 -1
  744. package/dist/formatters/entry.js +97 -11
  745. package/dist/formatters/entry.js.map +1 -1
  746. package/dist/formatters/entryAccept.d.ts +73 -0
  747. package/dist/formatters/entryAccept.d.ts.map +1 -0
  748. package/dist/formatters/entryAccept.js +72 -0
  749. package/dist/formatters/entryAccept.js.map +1 -0
  750. package/dist/formatters/feedback.d.ts +56 -0
  751. package/dist/formatters/feedback.d.ts.map +1 -0
  752. package/dist/formatters/feedback.js +89 -0
  753. package/dist/formatters/feedback.js.map +1 -0
  754. package/dist/formatters/feedback.test.d.ts +2 -0
  755. package/dist/formatters/feedback.test.d.ts.map +1 -0
  756. package/dist/formatters/feedback.test.js +112 -0
  757. package/dist/formatters/feedback.test.js.map +1 -0
  758. package/dist/formatters/fields.d.ts +7 -1
  759. package/dist/formatters/fields.d.ts.map +1 -1
  760. package/dist/formatters/fields.js +9 -3
  761. package/dist/formatters/fields.js.map +1 -1
  762. package/dist/formatters/fields.test.d.ts +2 -0
  763. package/dist/formatters/fields.test.d.ts.map +1 -0
  764. package/dist/formatters/fields.test.js +42 -0
  765. package/dist/formatters/fields.test.js.map +1 -0
  766. package/dist/formatters/handshake.d.ts +50 -6
  767. package/dist/formatters/handshake.d.ts.map +1 -1
  768. package/dist/formatters/handshake.js +129 -18
  769. package/dist/formatters/handshake.js.map +1 -1
  770. package/dist/formatters/orient.coherencyCheckTag.test.d.ts +2 -0
  771. package/dist/formatters/orient.coherencyCheckTag.test.d.ts.map +1 -0
  772. package/dist/formatters/orient.coherencyCheckTag.test.js +22 -0
  773. package/dist/formatters/orient.coherencyCheckTag.test.js.map +1 -0
  774. package/dist/formatters/orient.d.ts +200 -49
  775. package/dist/formatters/orient.d.ts.map +1 -1
  776. package/dist/formatters/orient.js +236 -93
  777. package/dist/formatters/orient.js.map +1 -1
  778. package/dist/formatters/orient.rcrtMiss.test.d.ts +2 -0
  779. package/dist/formatters/orient.rcrtMiss.test.d.ts.map +1 -0
  780. package/dist/formatters/orient.rcrtMiss.test.js +82 -0
  781. package/dist/formatters/orient.rcrtMiss.test.js.map +1 -0
  782. package/dist/formatters/orient.rituals.test.d.ts +2 -0
  783. package/dist/formatters/orient.rituals.test.d.ts.map +1 -0
  784. package/dist/formatters/orient.rituals.test.js +76 -0
  785. package/dist/formatters/orient.rituals.test.js.map +1 -0
  786. package/dist/formatters/orient.shapeAdvisorySummary.test.d.ts +2 -0
  787. package/dist/formatters/orient.shapeAdvisorySummary.test.d.ts.map +1 -0
  788. package/dist/formatters/orient.shapeAdvisorySummary.test.js +60 -0
  789. package/dist/formatters/orient.shapeAdvisorySummary.test.js.map +1 -0
  790. package/dist/formatters/orientDegradation.d.ts +38 -0
  791. package/dist/formatters/orientDegradation.d.ts.map +1 -0
  792. package/dist/formatters/orientDegradation.js +50 -0
  793. package/dist/formatters/orientDegradation.js.map +1 -0
  794. package/dist/formatters/orientDegradation.test.d.ts +2 -0
  795. package/dist/formatters/orientDegradation.test.d.ts.map +1 -0
  796. package/dist/formatters/orientDegradation.test.js +28 -0
  797. package/dist/formatters/orientDegradation.test.js.map +1 -0
  798. package/dist/formatters/orientDirection.d.ts +107 -0
  799. package/dist/formatters/orientDirection.d.ts.map +1 -0
  800. package/dist/formatters/orientDirection.js +177 -0
  801. package/dist/formatters/orientDirection.js.map +1 -0
  802. package/dist/formatters/orientDirection.test.d.ts +2 -0
  803. package/dist/formatters/orientDirection.test.d.ts.map +1 -0
  804. package/dist/formatters/orientDirection.test.js +304 -0
  805. package/dist/formatters/orientDirection.test.js.map +1 -0
  806. package/dist/formatters/orientRetrievalMiss.d.ts +22 -0
  807. package/dist/formatters/orientRetrievalMiss.d.ts.map +1 -0
  808. package/dist/formatters/orientRetrievalMiss.js +17 -0
  809. package/dist/formatters/orientRetrievalMiss.js.map +1 -0
  810. package/dist/formatters/questions.d.ts +71 -0
  811. package/dist/formatters/questions.d.ts.map +1 -0
  812. package/dist/formatters/questions.js +117 -0
  813. package/dist/formatters/questions.js.map +1 -0
  814. package/dist/formatters/questions.test.d.ts +2 -0
  815. package/dist/formatters/questions.test.d.ts.map +1 -0
  816. package/dist/formatters/questions.test.js +147 -0
  817. package/dist/formatters/questions.test.js.map +1 -0
  818. package/dist/formatters/relate.d.ts +13 -2
  819. package/dist/formatters/relate.d.ts.map +1 -1
  820. package/dist/formatters/relate.js +10 -5
  821. package/dist/formatters/relate.js.map +1 -1
  822. package/dist/formatters/relate.test.d.ts +2 -0
  823. package/dist/formatters/relate.test.d.ts.map +1 -0
  824. package/dist/formatters/relate.test.js +79 -0
  825. package/dist/formatters/relate.test.js.map +1 -0
  826. package/dist/formatters/scoreboard.d.ts +11 -0
  827. package/dist/formatters/scoreboard.d.ts.map +1 -0
  828. package/dist/formatters/scoreboard.js +162 -0
  829. package/dist/formatters/scoreboard.js.map +1 -0
  830. package/dist/formatters/scoreboard.test.d.ts +2 -0
  831. package/dist/formatters/scoreboard.test.d.ts.map +1 -0
  832. package/dist/formatters/scoreboard.test.js +301 -0
  833. package/dist/formatters/scoreboard.test.js.map +1 -0
  834. package/dist/formatters/search.d.ts.map +1 -1
  835. package/dist/formatters/search.js +11 -1
  836. package/dist/formatters/search.js.map +1 -1
  837. package/dist/formatters/search.test.d.ts +2 -0
  838. package/dist/formatters/search.test.d.ts.map +1 -0
  839. package/dist/formatters/search.test.js +57 -0
  840. package/dist/formatters/search.test.js.map +1 -0
  841. package/dist/formatters/session-feedback.test.d.ts +2 -0
  842. package/dist/formatters/session-feedback.test.d.ts.map +1 -0
  843. package/dist/formatters/session-feedback.test.js +83 -0
  844. package/dist/formatters/session-feedback.test.js.map +1 -0
  845. package/dist/formatters/session.d.ts +127 -5
  846. package/dist/formatters/session.d.ts.map +1 -1
  847. package/dist/formatters/session.js +313 -12
  848. package/dist/formatters/session.js.map +1 -1
  849. package/dist/formatters/shape.d.ts +54 -0
  850. package/dist/formatters/shape.d.ts.map +1 -0
  851. package/dist/formatters/shape.js +97 -0
  852. package/dist/formatters/shape.js.map +1 -0
  853. package/dist/formatters/shape.test.d.ts +2 -0
  854. package/dist/formatters/shape.test.d.ts.map +1 -0
  855. package/dist/formatters/shape.test.js +80 -0
  856. package/dist/formatters/shape.test.js.map +1 -0
  857. package/dist/formatters/spineCheck.d.ts +14 -0
  858. package/dist/formatters/spineCheck.d.ts.map +1 -0
  859. package/dist/formatters/spineCheck.js +113 -0
  860. package/dist/formatters/spineCheck.js.map +1 -0
  861. package/dist/formatters/spineCheck.test.d.ts +2 -0
  862. package/dist/formatters/spineCheck.test.d.ts.map +1 -0
  863. package/dist/formatters/spineCheck.test.js +76 -0
  864. package/dist/formatters/spineCheck.test.js.map +1 -0
  865. package/dist/formatters/tensionsList.d.ts +17 -0
  866. package/dist/formatters/tensionsList.d.ts.map +1 -0
  867. package/dist/formatters/tensionsList.js +33 -0
  868. package/dist/formatters/tensionsList.js.map +1 -0
  869. package/dist/formatters/update.d.ts +20 -0
  870. package/dist/formatters/update.d.ts.map +1 -1
  871. package/dist/formatters/update.js +35 -6
  872. package/dist/formatters/update.js.map +1 -1
  873. package/dist/formatters/update.test.d.ts +2 -0
  874. package/dist/formatters/update.test.d.ts.map +1 -0
  875. package/dist/formatters/update.test.js +59 -0
  876. package/dist/formatters/update.test.js.map +1 -0
  877. package/dist/formatters/verify.d.ts +12 -4
  878. package/dist/formatters/verify.d.ts.map +1 -1
  879. package/dist/formatters/verify.js +20 -2
  880. package/dist/formatters/verify.js.map +1 -1
  881. package/dist/generated/healthGapKinds.generated.d.ts +12 -0
  882. package/dist/generated/healthGapKinds.generated.d.ts.map +1 -0
  883. package/dist/generated/healthGapKinds.generated.js +21 -0
  884. package/dist/generated/healthGapKinds.generated.js.map +1 -0
  885. package/dist/generated/organisationalAuthorityRefusalCodes.generated.d.ts +12 -0
  886. package/dist/generated/organisationalAuthorityRefusalCodes.generated.d.ts.map +1 -0
  887. package/dist/generated/organisationalAuthorityRefusalCodes.generated.js +11 -0
  888. package/dist/generated/organisationalAuthorityRefusalCodes.generated.js.map +1 -0
  889. package/dist/generated/relationTypes.generated.d.ts +12 -0
  890. package/dist/generated/relationTypes.generated.d.ts.map +1 -0
  891. package/dist/generated/relationTypes.generated.js +11 -0
  892. package/dist/generated/relationTypes.generated.js.map +1 -0
  893. package/dist/generated/routeLatencyBudget.generated.d.ts +56 -0
  894. package/dist/generated/routeLatencyBudget.generated.d.ts.map +1 -0
  895. package/dist/generated/routeLatencyBudget.generated.js +290 -0
  896. package/dist/generated/routeLatencyBudget.generated.js.map +1 -0
  897. package/dist/generated/sourceSurfaces.generated.d.ts +12 -0
  898. package/dist/generated/sourceSurfaces.generated.d.ts.map +1 -0
  899. package/dist/generated/sourceSurfaces.generated.js +11 -0
  900. package/dist/generated/sourceSurfaces.generated.js.map +1 -0
  901. package/dist/generators/adapters.d.ts +34 -5
  902. package/dist/generators/adapters.d.ts.map +1 -1
  903. package/dist/generators/adapters.js +81 -29
  904. package/dist/generators/adapters.js.map +1 -1
  905. package/dist/generators/adapters.test.js +0 -2
  906. package/dist/generators/adapters.test.js.map +1 -1
  907. package/dist/generators/boundary-manifest.d.ts +29 -0
  908. package/dist/generators/boundary-manifest.d.ts.map +1 -0
  909. package/dist/generators/boundary-manifest.js +183 -0
  910. package/dist/generators/boundary-manifest.js.map +1 -0
  911. package/dist/generators/boundary-manifest.real-file.test.d.ts +2 -0
  912. package/dist/generators/boundary-manifest.real-file.test.d.ts.map +1 -0
  913. package/dist/generators/boundary-manifest.real-file.test.js +70 -0
  914. package/dist/generators/boundary-manifest.real-file.test.js.map +1 -0
  915. package/dist/generators/boundary-manifest.test.d.ts +2 -0
  916. package/dist/generators/boundary-manifest.test.d.ts.map +1 -0
  917. package/dist/generators/boundary-manifest.test.js +91 -0
  918. package/dist/generators/boundary-manifest.test.js.map +1 -0
  919. package/dist/generators/context-md.d.ts +1 -1
  920. package/dist/generators/context-md.d.ts.map +1 -1
  921. package/dist/generators/context-md.js +17 -46
  922. package/dist/generators/context-md.js.map +1 -1
  923. package/dist/generators/context-md.test.d.ts +2 -0
  924. package/dist/generators/context-md.test.d.ts.map +1 -0
  925. package/dist/generators/context-md.test.js +82 -0
  926. package/dist/generators/context-md.test.js.map +1 -0
  927. package/dist/generators/everyone-rules-md.d.ts +10 -0
  928. package/dist/generators/everyone-rules-md.d.ts.map +1 -0
  929. package/dist/generators/everyone-rules-md.js +27 -0
  930. package/dist/generators/everyone-rules-md.js.map +1 -0
  931. package/dist/generators/manifest.d.ts +78 -0
  932. package/dist/generators/manifest.d.ts.map +1 -1
  933. package/dist/generators/manifest.js +125 -14
  934. package/dist/generators/manifest.js.map +1 -1
  935. package/dist/generators/noProjectionAssets.d.ts +15 -0
  936. package/dist/generators/noProjectionAssets.d.ts.map +1 -0
  937. package/dist/generators/noProjectionAssets.js +6 -0
  938. package/dist/generators/noProjectionAssets.js.map +1 -0
  939. package/dist/generators/portable-knowledge.d.ts +15 -38
  940. package/dist/generators/portable-knowledge.d.ts.map +1 -1
  941. package/dist/generators/portable-knowledge.js +13 -144
  942. package/dist/generators/portable-knowledge.js.map +1 -1
  943. package/dist/generators/portable-knowledge.test.js +82 -267
  944. package/dist/generators/portable-knowledge.test.js.map +1 -1
  945. package/dist/generators/region-projections.d.ts +17 -0
  946. package/dist/generators/region-projections.d.ts.map +1 -0
  947. package/dist/generators/region-projections.js +48 -0
  948. package/dist/generators/region-projections.js.map +1 -0
  949. package/dist/generators/region-projections.test.d.ts +2 -0
  950. package/dist/generators/region-projections.test.d.ts.map +1 -0
  951. package/dist/generators/region-projections.test.js +63 -0
  952. package/dist/generators/region-projections.test.js.map +1 -0
  953. package/dist/generators/region.d.ts +24 -0
  954. package/dist/generators/region.d.ts.map +1 -0
  955. package/dist/generators/region.js +87 -0
  956. package/dist/generators/region.js.map +1 -0
  957. package/dist/generators/region.test.d.ts +2 -0
  958. package/dist/generators/region.test.d.ts.map +1 -0
  959. package/dist/generators/region.test.js +126 -0
  960. package/dist/generators/region.test.js.map +1 -0
  961. package/dist/generators/retired-projections.d.ts +14 -0
  962. package/dist/generators/retired-projections.d.ts.map +1 -0
  963. package/dist/generators/retired-projections.js +79 -0
  964. package/dist/generators/retired-projections.js.map +1 -0
  965. package/dist/generators/retired-projections.test.d.ts +2 -0
  966. package/dist/generators/retired-projections.test.d.ts.map +1 -0
  967. package/dist/generators/retired-projections.test.js +62 -0
  968. package/dist/generators/retired-projections.test.js.map +1 -0
  969. package/dist/generators/surface-profiles.d.ts +1 -2
  970. package/dist/generators/surface-profiles.d.ts.map +1 -1
  971. package/dist/generators/surface-profiles.js.map +1 -1
  972. package/dist/handleCliError.d.ts +2 -0
  973. package/dist/handleCliError.d.ts.map +1 -0
  974. package/dist/handleCliError.js +56 -0
  975. package/dist/handleCliError.js.map +1 -0
  976. package/dist/index.d.ts +0 -5
  977. package/dist/index.d.ts.map +1 -1
  978. package/dist/index.js +261 -309
  979. package/dist/index.js.map +1 -1
  980. package/dist/lib/__tests__/legalRelationTypes.test.d.ts +2 -0
  981. package/dist/lib/__tests__/legalRelationTypes.test.d.ts.map +1 -0
  982. package/dist/lib/__tests__/legalRelationTypes.test.js +98 -0
  983. package/dist/lib/__tests__/legalRelationTypes.test.js.map +1 -0
  984. package/dist/lib/__tests__/parseFields.test.d.ts +2 -0
  985. package/dist/lib/__tests__/parseFields.test.d.ts.map +1 -0
  986. package/dist/lib/__tests__/parseFields.test.js +40 -0
  987. package/dist/lib/__tests__/parseFields.test.js.map +1 -0
  988. package/dist/lib/activation.d.ts.map +1 -1
  989. package/dist/lib/activation.js +7 -3
  990. package/dist/lib/activation.js.map +1 -1
  991. package/dist/lib/activation.test.js +3 -3
  992. package/dist/lib/activation.test.js.map +1 -1
  993. package/dist/lib/adminConfig.d.ts +48 -0
  994. package/dist/lib/adminConfig.d.ts.map +1 -0
  995. package/dist/lib/adminConfig.js +130 -0
  996. package/dist/lib/adminConfig.js.map +1 -0
  997. package/dist/lib/canonicalRefs.d.ts +160 -0
  998. package/dist/lib/canonicalRefs.d.ts.map +1 -0
  999. package/dist/lib/canonicalRefs.js +169 -0
  1000. package/dist/lib/canonicalRefs.js.map +1 -0
  1001. package/dist/lib/captureGrounding.d.ts +43 -0
  1002. package/dist/lib/captureGrounding.d.ts.map +1 -0
  1003. package/dist/lib/captureGrounding.js +99 -0
  1004. package/dist/lib/captureGrounding.js.map +1 -0
  1005. package/dist/lib/captureGrounding.test.d.ts +2 -0
  1006. package/dist/lib/captureGrounding.test.d.ts.map +1 -0
  1007. package/dist/lib/captureGrounding.test.js +116 -0
  1008. package/dist/lib/captureGrounding.test.js.map +1 -0
  1009. package/dist/lib/captureLink.d.ts +26 -0
  1010. package/dist/lib/captureLink.d.ts.map +1 -0
  1011. package/dist/lib/captureLink.js +110 -0
  1012. package/dist/lib/captureLink.js.map +1 -0
  1013. package/dist/lib/captureVersion.d.ts +38 -0
  1014. package/dist/lib/captureVersion.d.ts.map +1 -0
  1015. package/dist/lib/captureVersion.js +81 -0
  1016. package/dist/lib/captureVersion.js.map +1 -0
  1017. package/dist/lib/client.d.ts +46 -19
  1018. package/dist/lib/client.d.ts.map +1 -1
  1019. package/dist/lib/client.js +231 -66
  1020. package/dist/lib/client.js.map +1 -1
  1021. package/dist/lib/collectionRegistry.d.ts +40 -5
  1022. package/dist/lib/collectionRegistry.d.ts.map +1 -1
  1023. package/dist/lib/collectionRegistry.js +70 -39
  1024. package/dist/lib/collectionRegistry.js.map +1 -1
  1025. package/dist/lib/commanderOptions.d.ts +8 -0
  1026. package/dist/lib/commanderOptions.d.ts.map +1 -0
  1027. package/dist/lib/commanderOptions.js +10 -0
  1028. package/dist/lib/commanderOptions.js.map +1 -0
  1029. package/dist/lib/compose-wrapup-view.d.ts +48 -0
  1030. package/dist/lib/compose-wrapup-view.d.ts.map +1 -0
  1031. package/dist/lib/compose-wrapup-view.js +37 -0
  1032. package/dist/lib/compose-wrapup-view.js.map +1 -0
  1033. package/dist/lib/config.d.ts +102 -54
  1034. package/dist/lib/config.d.ts.map +1 -1
  1035. package/dist/lib/config.js +252 -156
  1036. package/dist/lib/config.js.map +1 -1
  1037. package/dist/lib/configResult.d.ts +103 -0
  1038. package/dist/lib/configResult.d.ts.map +1 -0
  1039. package/dist/lib/configResult.js +180 -0
  1040. package/dist/lib/configResult.js.map +1 -0
  1041. package/dist/lib/connectKeyLabel.d.ts +9 -0
  1042. package/dist/lib/connectKeyLabel.d.ts.map +1 -0
  1043. package/dist/lib/connectKeyLabel.js +12 -0
  1044. package/dist/lib/connectKeyLabel.js.map +1 -0
  1045. package/dist/lib/constants.d.ts +5 -1
  1046. package/dist/lib/constants.d.ts.map +1 -1
  1047. package/dist/lib/constants.js +8 -1
  1048. package/dist/lib/constants.js.map +1 -1
  1049. package/dist/lib/conversation.d.ts +36 -0
  1050. package/dist/lib/conversation.d.ts.map +1 -0
  1051. package/dist/lib/conversation.js +66 -0
  1052. package/dist/lib/conversation.js.map +1 -0
  1053. package/dist/lib/createEntryResult.d.ts +34 -0
  1054. package/dist/lib/createEntryResult.d.ts.map +1 -0
  1055. package/dist/lib/createEntryResult.js +12 -0
  1056. package/dist/lib/createEntryResult.js.map +1 -0
  1057. package/dist/lib/deployment.js +2 -2
  1058. package/dist/lib/deployment.js.map +1 -1
  1059. package/dist/lib/deployment.test.js +20 -1
  1060. package/dist/lib/deployment.test.js.map +1 -1
  1061. package/dist/lib/envKeySnapshot.d.ts +10 -0
  1062. package/dist/lib/envKeySnapshot.d.ts.map +1 -0
  1063. package/dist/lib/envKeySnapshot.js +30 -0
  1064. package/dist/lib/envKeySnapshot.js.map +1 -0
  1065. package/dist/lib/errors.d.ts +92 -0
  1066. package/dist/lib/errors.d.ts.map +1 -1
  1067. package/dist/lib/errors.js +83 -0
  1068. package/dist/lib/errors.js.map +1 -1
  1069. package/dist/lib/frontmatter.d.ts +55 -0
  1070. package/dist/lib/frontmatter.d.ts.map +1 -0
  1071. package/dist/lib/frontmatter.js +92 -0
  1072. package/dist/lib/frontmatter.js.map +1 -0
  1073. package/dist/lib/frontmatter.test.d.ts +15 -0
  1074. package/dist/lib/frontmatter.test.d.ts.map +1 -0
  1075. package/dist/lib/frontmatter.test.js +98 -0
  1076. package/dist/lib/frontmatter.test.js.map +1 -0
  1077. package/dist/lib/gatewayTimeout.d.ts +88 -0
  1078. package/dist/lib/gatewayTimeout.d.ts.map +1 -0
  1079. package/dist/lib/gatewayTimeout.js +118 -0
  1080. package/dist/lib/gatewayTimeout.js.map +1 -0
  1081. package/dist/lib/gitEnvLeakKeysParity.test.d.ts +2 -0
  1082. package/dist/lib/gitEnvLeakKeysParity.test.d.ts.map +1 -0
  1083. package/dist/lib/gitEnvLeakKeysParity.test.js +73 -0
  1084. package/dist/lib/gitEnvLeakKeysParity.test.js.map +1 -0
  1085. package/dist/lib/glossary.js +1 -1
  1086. package/dist/lib/glossary.js.map +1 -1
  1087. package/dist/lib/hook-intents.d.ts.map +1 -1
  1088. package/dist/lib/hook-intents.js +2 -3
  1089. package/dist/lib/hook-intents.js.map +1 -1
  1090. package/dist/lib/kernelEnvelope.d.ts +42 -0
  1091. package/dist/lib/kernelEnvelope.d.ts.map +1 -0
  1092. package/dist/lib/kernelEnvelope.js +67 -0
  1093. package/dist/lib/kernelEnvelope.js.map +1 -0
  1094. package/dist/lib/legalRelationTypes.d.ts +26 -0
  1095. package/dist/lib/legalRelationTypes.d.ts.map +1 -0
  1096. package/dist/lib/legalRelationTypes.js +95 -0
  1097. package/dist/lib/legalRelationTypes.js.map +1 -0
  1098. package/dist/lib/localBinding.d.ts +86 -0
  1099. package/dist/lib/localBinding.d.ts.map +1 -0
  1100. package/dist/lib/localBinding.js +173 -0
  1101. package/dist/lib/localBinding.js.map +1 -0
  1102. package/dist/lib/method-registry.d.ts +16 -11
  1103. package/dist/lib/method-registry.d.ts.map +1 -1
  1104. package/dist/lib/method-registry.js +13 -25
  1105. package/dist/lib/method-registry.js.map +1 -1
  1106. package/dist/lib/normalizeMaterializedFilename.d.ts +28 -0
  1107. package/dist/lib/normalizeMaterializedFilename.d.ts.map +1 -0
  1108. package/dist/lib/normalizeMaterializedFilename.js +56 -0
  1109. package/dist/lib/normalizeMaterializedFilename.js.map +1 -0
  1110. package/dist/lib/normalizeMaterializedFilename.test.d.ts +16 -0
  1111. package/dist/lib/normalizeMaterializedFilename.test.d.ts.map +1 -0
  1112. package/dist/lib/normalizeMaterializedFilename.test.js +90 -0
  1113. package/dist/lib/normalizeMaterializedFilename.test.js.map +1 -0
  1114. package/dist/lib/notice-marker.d.ts +3 -0
  1115. package/dist/lib/notice-marker.d.ts.map +1 -0
  1116. package/dist/lib/notice-marker.js +223 -0
  1117. package/dist/lib/notice-marker.js.map +1 -0
  1118. package/dist/lib/onboarding-path-b.d.ts.map +1 -1
  1119. package/dist/lib/onboarding-path-b.js +35 -6
  1120. package/dist/lib/onboarding-path-b.js.map +1 -1
  1121. package/dist/lib/onboarding-shared.d.ts +27 -5
  1122. package/dist/lib/onboarding-shared.d.ts.map +1 -1
  1123. package/dist/lib/onboarding-shared.js +55 -37
  1124. package/dist/lib/onboarding-shared.js.map +1 -1
  1125. package/dist/lib/onboarding-shared.test.d.ts +2 -0
  1126. package/dist/lib/onboarding-shared.test.d.ts.map +1 -0
  1127. package/dist/lib/onboarding-shared.test.js +131 -0
  1128. package/dist/lib/onboarding-shared.test.js.map +1 -0
  1129. package/dist/lib/onboarding-topics.js +1 -1
  1130. package/dist/lib/onboarding.d.ts +5 -1
  1131. package/dist/lib/onboarding.d.ts.map +1 -1
  1132. package/dist/lib/onboarding.js +62 -25
  1133. package/dist/lib/onboarding.js.map +1 -1
  1134. package/dist/lib/ownerLine.d.ts +58 -0
  1135. package/dist/lib/ownerLine.d.ts.map +1 -0
  1136. package/dist/lib/ownerLine.js +46 -0
  1137. package/dist/lib/ownerLine.js.map +1 -0
  1138. package/dist/lib/parseFields.d.ts +19 -0
  1139. package/dist/lib/parseFields.d.ts.map +1 -0
  1140. package/dist/lib/parseFields.js +49 -0
  1141. package/dist/lib/parseFields.js.map +1 -0
  1142. package/dist/lib/previewBanner.d.ts +9 -0
  1143. package/dist/lib/previewBanner.d.ts.map +1 -0
  1144. package/dist/lib/previewBanner.js +37 -0
  1145. package/dist/lib/previewBanner.js.map +1 -0
  1146. package/dist/lib/productbrain-files.d.ts +94 -0
  1147. package/dist/lib/productbrain-files.d.ts.map +1 -0
  1148. package/dist/lib/productbrain-files.js +214 -0
  1149. package/dist/lib/productbrain-files.js.map +1 -0
  1150. package/dist/lib/productbrain-files.test.d.ts +2 -0
  1151. package/dist/lib/productbrain-files.test.d.ts.map +1 -0
  1152. package/dist/lib/productbrain-files.test.js +293 -0
  1153. package/dist/lib/productbrain-files.test.js.map +1 -0
  1154. package/dist/lib/profiles.d.ts +53 -5
  1155. package/dist/lib/profiles.d.ts.map +1 -1
  1156. package/dist/lib/profiles.js +77 -23
  1157. package/dist/lib/profiles.js.map +1 -1
  1158. package/dist/lib/projectConfig.d.ts +81 -0
  1159. package/dist/lib/projectConfig.d.ts.map +1 -0
  1160. package/dist/lib/projectConfig.js +157 -0
  1161. package/dist/lib/projectConfig.js.map +1 -0
  1162. package/dist/lib/proseBody.d.ts +14 -0
  1163. package/dist/lib/proseBody.d.ts.map +1 -0
  1164. package/dist/lib/proseBody.js +25 -0
  1165. package/dist/lib/proseBody.js.map +1 -0
  1166. package/dist/lib/rate-limit.d.ts +38 -0
  1167. package/dist/lib/rate-limit.d.ts.map +1 -0
  1168. package/dist/lib/rate-limit.js +83 -0
  1169. package/dist/lib/rate-limit.js.map +1 -0
  1170. package/dist/lib/readinessNotices.d.ts +12 -0
  1171. package/dist/lib/readinessNotices.d.ts.map +1 -0
  1172. package/dist/lib/readinessNotices.js +15 -0
  1173. package/dist/lib/readinessNotices.js.map +1 -0
  1174. package/dist/lib/repo-detect.d.ts +8 -2
  1175. package/dist/lib/repo-detect.d.ts.map +1 -1
  1176. package/dist/lib/repo-detect.js +11 -6
  1177. package/dist/lib/repo-detect.js.map +1 -1
  1178. package/dist/lib/reportedProfile.d.ts +18 -0
  1179. package/dist/lib/reportedProfile.d.ts.map +1 -0
  1180. package/dist/lib/reportedProfile.js +144 -0
  1181. package/dist/lib/reportedProfile.js.map +1 -0
  1182. package/dist/lib/ruleListRender.d.ts +63 -0
  1183. package/dist/lib/ruleListRender.d.ts.map +1 -0
  1184. package/dist/lib/ruleListRender.js +79 -0
  1185. package/dist/lib/ruleListRender.js.map +1 -0
  1186. package/dist/lib/runner.d.ts +9 -1
  1187. package/dist/lib/runner.d.ts.map +1 -1
  1188. package/dist/lib/runner.js +30 -4
  1189. package/dist/lib/runner.js.map +1 -1
  1190. package/dist/lib/session.d.ts +90 -6
  1191. package/dist/lib/session.d.ts.map +1 -1
  1192. package/dist/lib/session.js +261 -17
  1193. package/dist/lib/session.js.map +1 -1
  1194. package/dist/lib/sessionBinding.d.ts +61 -0
  1195. package/dist/lib/sessionBinding.d.ts.map +1 -0
  1196. package/dist/lib/sessionBinding.js +125 -0
  1197. package/dist/lib/sessionBinding.js.map +1 -0
  1198. package/dist/lib/sessionNotices.d.ts +53 -0
  1199. package/dist/lib/sessionNotices.d.ts.map +1 -0
  1200. package/dist/lib/sessionNotices.js +122 -0
  1201. package/dist/lib/sessionNotices.js.map +1 -0
  1202. package/dist/lib/sessionNotices.test.d.ts +2 -0
  1203. package/dist/lib/sessionNotices.test.d.ts.map +1 -0
  1204. package/dist/lib/sessionNotices.test.js +48 -0
  1205. package/dist/lib/sessionNotices.test.js.map +1 -0
  1206. package/dist/lib/spineVerdictRead.d.ts +70 -0
  1207. package/dist/lib/spineVerdictRead.d.ts.map +1 -0
  1208. package/dist/lib/spineVerdictRead.js +73 -0
  1209. package/dist/lib/spineVerdictRead.js.map +1 -0
  1210. package/dist/lib/spinner.js +2 -2
  1211. package/dist/lib/spinner.js.map +1 -1
  1212. package/dist/lib/startup-resolution-signals.d.ts +34 -0
  1213. package/dist/lib/startup-resolution-signals.d.ts.map +1 -0
  1214. package/dist/lib/startup-resolution-signals.js +116 -0
  1215. package/dist/lib/startup-resolution-signals.js.map +1 -0
  1216. package/dist/lib/startup-resolution-signals.test.d.ts +2 -0
  1217. package/dist/lib/startup-resolution-signals.test.d.ts.map +1 -0
  1218. package/dist/lib/startup-resolution-signals.test.js +113 -0
  1219. package/dist/lib/startup-resolution-signals.test.js.map +1 -0
  1220. package/dist/lib/startup-signals.d.ts +12 -0
  1221. package/dist/lib/startup-signals.d.ts.map +1 -0
  1222. package/dist/lib/startup-signals.js +179 -0
  1223. package/dist/lib/startup-signals.js.map +1 -0
  1224. package/dist/lib/startup-signals.test.d.ts +2 -0
  1225. package/dist/lib/startup-signals.test.d.ts.map +1 -0
  1226. package/dist/lib/startup-signals.test.js +165 -0
  1227. package/dist/lib/startup-signals.test.js.map +1 -0
  1228. package/dist/lib/state.d.ts +11 -2
  1229. package/dist/lib/state.d.ts.map +1 -1
  1230. package/dist/lib/state.js +11 -4
  1231. package/dist/lib/state.js.map +1 -1
  1232. package/dist/lib/statusCategories.d.ts +159 -0
  1233. package/dist/lib/statusCategories.d.ts.map +1 -0
  1234. package/dist/lib/statusCategories.js +284 -0
  1235. package/dist/lib/statusCategories.js.map +1 -0
  1236. package/dist/lib/strip.d.ts +17 -0
  1237. package/dist/lib/strip.d.ts.map +1 -1
  1238. package/dist/lib/strip.js +48 -1
  1239. package/dist/lib/strip.js.map +1 -1
  1240. package/dist/lib/style.d.ts +8 -2
  1241. package/dist/lib/style.d.ts.map +1 -1
  1242. package/dist/lib/style.js +24 -17
  1243. package/dist/lib/style.js.map +1 -1
  1244. package/dist/lib/tokenConstants.d.ts +2 -0
  1245. package/dist/lib/tokenConstants.d.ts.map +1 -1
  1246. package/dist/lib/tokenConstants.js +2 -0
  1247. package/dist/lib/tokenConstants.js.map +1 -1
  1248. package/dist/lib/update-check.d.ts +42 -7
  1249. package/dist/lib/update-check.d.ts.map +1 -1
  1250. package/dist/lib/update-check.js +213 -62
  1251. package/dist/lib/update-check.js.map +1 -1
  1252. package/dist/lib/upgrade-runner.d.ts +22 -0
  1253. package/dist/lib/upgrade-runner.d.ts.map +1 -0
  1254. package/dist/lib/upgrade-runner.js +110 -0
  1255. package/dist/lib/upgrade-runner.js.map +1 -0
  1256. package/dist/lib/versionWrite.d.ts +65 -0
  1257. package/dist/lib/versionWrite.d.ts.map +1 -0
  1258. package/dist/lib/versionWrite.js +32 -0
  1259. package/dist/lib/versionWrite.js.map +1 -0
  1260. package/dist/lib/workspaceNotice.d.ts +202 -0
  1261. package/dist/lib/workspaceNotice.d.ts.map +1 -0
  1262. package/dist/lib/workspaceNotice.js +345 -0
  1263. package/dist/lib/workspaceNotice.js.map +1 -0
  1264. package/dist/lib/workspaceVocabCache.d.ts +60 -0
  1265. package/dist/lib/workspaceVocabCache.d.ts.map +1 -0
  1266. package/dist/lib/workspaceVocabCache.js +98 -0
  1267. package/dist/lib/workspaceVocabCache.js.map +1 -0
  1268. package/dist/lib/writePerimeter.d.ts +72 -0
  1269. package/dist/lib/writePerimeter.d.ts.map +1 -0
  1270. package/dist/lib/writePerimeter.js +128 -0
  1271. package/dist/lib/writePerimeter.js.map +1 -0
  1272. package/dist/registerEntryCommands.d.ts +18 -0
  1273. package/dist/registerEntryCommands.d.ts.map +1 -0
  1274. package/dist/registerEntryCommands.js +123 -0
  1275. package/dist/registerEntryCommands.js.map +1 -0
  1276. package/dist/registerHistoryCommand.d.ts +8 -0
  1277. package/dist/registerHistoryCommand.d.ts.map +1 -0
  1278. package/dist/registerHistoryCommand.js +14 -0
  1279. package/dist/registerHistoryCommand.js.map +1 -0
  1280. package/dist/registerOutcomeCommands.d.ts +27 -0
  1281. package/dist/registerOutcomeCommands.d.ts.map +1 -0
  1282. package/dist/registerOutcomeCommands.js +27 -0
  1283. package/dist/registerOutcomeCommands.js.map +1 -0
  1284. package/dist/registerRoleCommands.d.ts +10 -0
  1285. package/dist/registerRoleCommands.d.ts.map +1 -0
  1286. package/dist/registerRoleCommands.js +14 -0
  1287. package/dist/registerRoleCommands.js.map +1 -0
  1288. package/dist/registerTensionsCommands.d.ts +10 -0
  1289. package/dist/registerTensionsCommands.d.ts.map +1 -0
  1290. package/dist/registerTensionsCommands.js +15 -0
  1291. package/dist/registerTensionsCommands.js.map +1 -0
  1292. package/dist/scoreboard/diagnose.d.ts +190 -0
  1293. package/dist/scoreboard/diagnose.d.ts.map +1 -0
  1294. package/dist/scoreboard/diagnose.js +282 -0
  1295. package/dist/scoreboard/diagnose.js.map +1 -0
  1296. package/dist/scoreboard/diagnose.test.d.ts +15 -0
  1297. package/dist/scoreboard/diagnose.test.d.ts.map +1 -0
  1298. package/dist/scoreboard/diagnose.test.js +288 -0
  1299. package/dist/scoreboard/diagnose.test.js.map +1 -0
  1300. package/dist/scoreboard/floors.d.ts +47 -0
  1301. package/dist/scoreboard/floors.d.ts.map +1 -0
  1302. package/dist/scoreboard/floors.js +33 -0
  1303. package/dist/scoreboard/floors.js.map +1 -0
  1304. package/dist/scoreboard/localDrift.d.ts +23 -0
  1305. package/dist/scoreboard/localDrift.d.ts.map +1 -0
  1306. package/dist/scoreboard/localDrift.js +111 -0
  1307. package/dist/scoreboard/localDrift.js.map +1 -0
  1308. package/dist/scoreboard/localDrift.test.d.ts +9 -0
  1309. package/dist/scoreboard/localDrift.test.d.ts.map +1 -0
  1310. package/dist/scoreboard/localDrift.test.js +82 -0
  1311. package/dist/scoreboard/localDrift.test.js.map +1 -0
  1312. package/dist/surfaces/__tests__/adapter.test.d.ts +2 -0
  1313. package/dist/surfaces/__tests__/adapter.test.d.ts.map +1 -0
  1314. package/dist/surfaces/__tests__/adapter.test.js +86 -0
  1315. package/dist/surfaces/__tests__/adapter.test.js.map +1 -0
  1316. package/dist/surfaces/__tests__/claude-skill-pointer-drift.test.d.ts +2 -0
  1317. package/dist/surfaces/__tests__/claude-skill-pointer-drift.test.d.ts.map +1 -0
  1318. package/dist/surfaces/__tests__/claude-skill-pointer-drift.test.js +179 -0
  1319. package/dist/surfaces/__tests__/claude-skill-pointer-drift.test.js.map +1 -0
  1320. package/dist/surfaces/__tests__/telemetry.test.d.ts +2 -0
  1321. package/dist/surfaces/__tests__/telemetry.test.d.ts.map +1 -0
  1322. package/dist/surfaces/__tests__/telemetry.test.js +55 -0
  1323. package/dist/surfaces/__tests__/telemetry.test.js.map +1 -0
  1324. package/dist/surfaces/adapter.d.ts +70 -0
  1325. package/dist/surfaces/adapter.d.ts.map +1 -0
  1326. package/dist/surfaces/adapter.js +2 -0
  1327. package/dist/surfaces/adapter.js.map +1 -0
  1328. package/dist/surfaces/adapters/claude.d.ts +3 -0
  1329. package/dist/surfaces/adapters/claude.d.ts.map +1 -0
  1330. package/dist/surfaces/adapters/claude.js +72 -0
  1331. package/dist/surfaces/adapters/claude.js.map +1 -0
  1332. package/dist/surfaces/adapters/codex.d.ts +3 -0
  1333. package/dist/surfaces/adapters/codex.d.ts.map +1 -0
  1334. package/dist/surfaces/adapters/codex.js +61 -0
  1335. package/dist/surfaces/adapters/codex.js.map +1 -0
  1336. package/dist/surfaces/adapters/copilot.d.ts +3 -0
  1337. package/dist/surfaces/adapters/copilot.d.ts.map +1 -0
  1338. package/dist/surfaces/adapters/copilot.js +59 -0
  1339. package/dist/surfaces/adapters/copilot.js.map +1 -0
  1340. package/dist/surfaces/adapters/cursor.d.ts +3 -0
  1341. package/dist/surfaces/adapters/cursor.d.ts.map +1 -0
  1342. package/dist/surfaces/adapters/cursor.js +78 -0
  1343. package/dist/surfaces/adapters/cursor.js.map +1 -0
  1344. package/dist/surfaces/registry.d.ts +58 -2
  1345. package/dist/surfaces/registry.d.ts.map +1 -1
  1346. package/dist/surfaces/registry.js +82 -7
  1347. package/dist/surfaces/registry.js.map +1 -1
  1348. package/dist/surfaces/telemetry.d.ts +17 -0
  1349. package/dist/surfaces/telemetry.d.ts.map +1 -0
  1350. package/dist/surfaces/telemetry.js +31 -0
  1351. package/dist/surfaces/telemetry.js.map +1 -0
  1352. package/package.json +9 -5
  1353. package/dist/__tests__/audit.test.d.ts +0 -2
  1354. package/dist/__tests__/audit.test.d.ts.map +0 -1
  1355. package/dist/__tests__/audit.test.js +0 -394
  1356. package/dist/__tests__/audit.test.js.map +0 -1
  1357. package/dist/__tests__/promote.test.d.ts +0 -2
  1358. package/dist/__tests__/promote.test.d.ts.map +0 -1
  1359. package/dist/__tests__/promote.test.js +0 -161
  1360. package/dist/__tests__/promote.test.js.map +0 -1
  1361. package/dist/__tests__/proposals.test.d.ts +0 -2
  1362. package/dist/__tests__/proposals.test.d.ts.map +0 -1
  1363. package/dist/__tests__/proposals.test.js +0 -167
  1364. package/dist/__tests__/proposals.test.js.map +0 -1
  1365. package/dist/__tests__/setup.test.d.ts +0 -2
  1366. package/dist/__tests__/setup.test.d.ts.map +0 -1
  1367. package/dist/__tests__/setup.test.js +0 -141
  1368. package/dist/__tests__/setup.test.js.map +0 -1
  1369. package/dist/commands/accept.d.ts +0 -18
  1370. package/dist/commands/accept.d.ts.map +0 -1
  1371. package/dist/commands/accept.js +0 -76
  1372. package/dist/commands/accept.js.map +0 -1
  1373. package/dist/commands/audit.d.ts +0 -25
  1374. package/dist/commands/audit.d.ts.map +0 -1
  1375. package/dist/commands/audit.js +0 -188
  1376. package/dist/commands/audit.js.map +0 -1
  1377. package/dist/commands/promote.d.ts +0 -12
  1378. package/dist/commands/promote.d.ts.map +0 -1
  1379. package/dist/commands/promote.js +0 -90
  1380. package/dist/commands/promote.js.map +0 -1
  1381. package/dist/commands/proposals.d.ts +0 -9
  1382. package/dist/commands/proposals.d.ts.map +0 -1
  1383. package/dist/commands/proposals.js +0 -24
  1384. package/dist/commands/proposals.js.map +0 -1
  1385. package/dist/commands/reject.d.ts +0 -14
  1386. package/dist/commands/reject.d.ts.map +0 -1
  1387. package/dist/commands/reject.js +0 -43
  1388. package/dist/commands/reject.js.map +0 -1
  1389. package/dist/commands/setup.d.ts +0 -15
  1390. package/dist/commands/setup.d.ts.map +0 -1
  1391. package/dist/commands/setup.js +0 -148
  1392. package/dist/commands/setup.js.map +0 -1
  1393. package/dist/formatters/audit.d.ts +0 -46
  1394. package/dist/formatters/audit.d.ts.map +0 -1
  1395. package/dist/formatters/audit.js +0 -81
  1396. package/dist/formatters/audit.js.map +0 -1
  1397. package/dist/formatters/promote.d.ts +0 -30
  1398. package/dist/formatters/promote.d.ts.map +0 -1
  1399. package/dist/formatters/promote.js +0 -39
  1400. package/dist/formatters/promote.js.map +0 -1
  1401. package/dist/formatters/proposals.d.ts +0 -45
  1402. package/dist/formatters/proposals.d.ts.map +0 -1
  1403. package/dist/formatters/proposals.js +0 -62
  1404. package/dist/formatters/proposals.js.map +0 -1
  1405. package/dist/generators/__tests__/surface-profiles.test.d.ts +0 -2
  1406. package/dist/generators/__tests__/surface-profiles.test.d.ts.map +0 -1
  1407. package/dist/generators/__tests__/surface-profiles.test.js +0 -89
  1408. package/dist/generators/__tests__/surface-profiles.test.js.map +0 -1
  1409. package/dist/generators/archetypes.d.ts +0 -52
  1410. package/dist/generators/archetypes.d.ts.map +0 -1
  1411. package/dist/generators/archetypes.js +0 -153
  1412. package/dist/generators/archetypes.js.map +0 -1
  1413. package/dist/generators/archetypes.test.d.ts +0 -2
  1414. package/dist/generators/archetypes.test.d.ts.map +0 -1
  1415. package/dist/generators/archetypes.test.js +0 -237
  1416. package/dist/generators/archetypes.test.js.map +0 -1
  1417. package/dist/generators/chain-classifier.d.ts +0 -49
  1418. package/dist/generators/chain-classifier.d.ts.map +0 -1
  1419. package/dist/generators/chain-classifier.js +0 -180
  1420. package/dist/generators/chain-classifier.js.map +0 -1
  1421. package/dist/generators/chain-classifier.test.d.ts +0 -2
  1422. package/dist/generators/chain-classifier.test.d.ts.map +0 -1
  1423. package/dist/generators/chain-classifier.test.js +0 -257
  1424. package/dist/generators/chain-classifier.test.js.map +0 -1
  1425. package/dist/generators/chain-rules.d.ts +0 -42
  1426. package/dist/generators/chain-rules.d.ts.map +0 -1
  1427. package/dist/generators/chain-rules.js +0 -144
  1428. package/dist/generators/chain-rules.js.map +0 -1
  1429. package/dist/generators/chain-rules.test.d.ts +0 -2
  1430. package/dist/generators/chain-rules.test.d.ts.map +0 -1
  1431. package/dist/generators/chain-rules.test.js +0 -179
  1432. package/dist/generators/chain-rules.test.js.map +0 -1
  1433. package/dist/generators/handshake-diff.d.ts +0 -67
  1434. package/dist/generators/handshake-diff.d.ts.map +0 -1
  1435. package/dist/generators/handshake-diff.js +0 -183
  1436. package/dist/generators/handshake-diff.js.map +0 -1
  1437. package/dist/generators/handshake-diff.test.d.ts +0 -2
  1438. package/dist/generators/handshake-diff.test.d.ts.map +0 -1
  1439. package/dist/generators/handshake-diff.test.js +0 -264
  1440. package/dist/generators/handshake-diff.test.js.map +0 -1
  1441. package/dist/lib/inferSourceDate.d.ts +0 -12
  1442. package/dist/lib/inferSourceDate.d.ts.map +0 -1
  1443. package/dist/lib/inferSourceDate.js +0 -44
  1444. package/dist/lib/inferSourceDate.js.map +0 -1
  1445. package/dist/lib/onboarding-phases.d.ts +0 -9
  1446. package/dist/lib/onboarding-phases.d.ts.map +0 -1
  1447. package/dist/lib/onboarding-phases.js +0 -120
  1448. package/dist/lib/onboarding-phases.js.map +0 -1
  1449. package/templates/archetypes/boundary.md +0 -23
  1450. package/templates/archetypes/constraint.md +0 -23
  1451. package/templates/archetypes/convention.md +0 -23
  1452. package/templates/archetypes/policy.md +0 -23
  1453. package/templates/archetypes/quality-gate.md +0 -23
  1454. package/templates/archetypes/workflow.md +0 -23
@@ -1,27 +1,45 @@
1
1
  /**
2
2
  * pb handshake — generate context files for AI developer tools.
3
- * The fourth delivery surface: context export (GLO-63, DEC-161).
3
+ * Context export wiring (read-only filesystem bridge; GLO-63, DEC-161) — not a product surface.
4
4
  */
5
- import { mkdirSync, writeFileSync, existsSync, readFileSync, readdirSync, copyFileSync } from 'fs';
6
- import { join, dirname, resolve } from 'path';
5
+ import { mkdirSync, writeFileSync, existsSync, readFileSync, readdirSync, copyFileSync, realpathSync } from 'fs';
6
+ import { join, dirname, resolve, basename, relative, sep } from 'path';
7
7
  import { homedir } from 'os';
8
8
  import { fileURLToPath } from 'url';
9
+ import { execSync } from 'child_process';
9
10
  import { getConfigOrGuide } from '../lib/config.js';
10
- import { select as promptSelect } from '../lib/prompts.js';
11
+ import { select as promptSelect, confirm as promptConfirm } from '../lib/prompts.js';
11
12
  import { composeHooksFromIntents, getHookStatusForSurface } from '../lib/hook-intents.js';
12
13
  import { kernelCall } from '../lib/client.js';
14
+ import { readSession } from '../lib/session.js';
13
15
  import { detectRepo, extractWorkspaceProfile } from '../lib/repo-detect.js';
14
16
  import { generateContextMd } from '../generators/context-md.js';
15
17
  import { generateBriefingMd } from '../generators/briefing-md.js';
16
- import { MARKER, generateAgentsMd, generateClaudeMd, generateCursorMdc, generateCopilotMd } from '../generators/adapters.js';
17
- import { readCanonicalSkills, readCanonicalRules, readPersonalLayer, readPersonalSkillsLayer, generateCursorSkill, generateCursorRule, generateCodexSkill, generateCodexSkillIndex, generateClaudeRule, generateClaudeSkillRouter, shouldEmitToTarget, filterByLevel, validateCodexSkills, evaluateConditions, STAGE_TO_MAX_LEVEL, LEVEL_ORDER, } from '../generators/portable-knowledge.js';
18
- import { generateChainRules } from '../generators/chain-rules.js';
19
- import { saveHandshakeState, loadPreviousState, diffHandshakeState, formatDiff, buildCurrentState, } from '../generators/handshake-diff.js';
18
+ import { MARKER, generateAgentsMd, generateClaudeMd, generateCursorMdc, generateCopilotMd, generateCopilotInstructionFiles } from '../generators/adapters.js';
19
+ import { readCanonicalSkills, readCanonicalRules, readPersonalLayer, readPersonalSkillsLayer, generateCursorSkill, generateCursorRule, generateCodexSkill, generateCodexSkillIndex, shouldEmitToTarget, filterByLevel, validateCodexSkills, evaluateConditions, } from '../generators/portable-knowledge.js';
20
+ import { findNoProjectionAssets } from '../generators/noProjectionAssets.js'; // WP-660 S2 combine
20
21
  import { resolveSurfaceProfile } from '../generators/surface-profiles.js';
22
+ import { generateEveryoneRulesMd } from '../generators/everyone-rules-md.js';
23
+ import { retireGeneratedProjections } from '../generators/retired-projections.js';
24
+ import { formatWorkspaceWideRuleLines } from '../lib/ruleListRender.js';
21
25
  import { formatHandshakeReport } from '../formatters/handshake.js';
22
- import { readManifest, filterByAdoptionState } from '../generators/manifest.js';
26
+ import { classifyAdapterFile, detectEol, spliceAppend, spliceReplace } from '../generators/region.js';
27
+ import { REGION_PROJECTIONS } from '../generators/region-projections.js';
28
+ import { readManifest, readManifestStatus, filterByAdoptionState } from '../generators/manifest.js';
29
+ import { generateBoundaryManifest, getBoundaryEnforcementMode } from '../generators/boundary-manifest.js';
23
30
  import { loadMethodRegistry } from '../lib/method-registry.js';
24
31
  import { CLIError, ErrorCode } from '../lib/errors.js';
32
+ import { isJsonMode } from '../lib/runner.js';
33
+ import { stripConvexInternals } from '../lib/strip.js';
34
+ import { replaceVocabTokens } from '../lib/canonicalRefs.js';
35
+ // WP-436 S3: vocab projector — resolves {{vocab:...}} tokens before writing to disk.
36
+ import { getOrFetchVocabCtx } from '../lib/workspaceVocabCache.js';
37
+ import { normalizeMaterializedFilename } from '../lib/normalizeMaterializedFilename.js';
38
+ import { findLeftoverCursorSkills, LEFTOVER_FILES_MAX } from './handshakeCursorSkillCleanup.js';
39
+ import { classifyDriftBucket } from './handshakeDriftClassification.js';
40
+ import { sanitizeStartupResolutionSignals } from '../lib/startup-resolution-signals.js';
41
+ import { assertSetupWritePath } from '../lib/writePerimeter.js';
42
+ import { SURFACE_GOVERN_NO_SURFACES, SURFACE_REGISTRY, validateSurfacesForMode, } from '../surfaces/registry.js';
25
43
  const LEVELS = {
26
44
  guide: {
27
45
  label: 'Guide me',
@@ -50,8 +68,7 @@ const LEVELS = {
50
68
  };
51
69
  // Explicit ordering — determines menu numbering in promptLevel(). Do not reorder.
52
70
  const LEVEL_KEYS = ['guide', 'work', 'silent', 'full-trust'];
53
- // Hook failure contract (TEN-712): all hook commands MUST end with '2>/dev/null || true'
54
- // so Claude Code always starts even if pb is unavailable. Never remove this suffix.
71
+ // Hook failure contract (TEN-712): every hook command MUST end with '|| true' so Claude Code always starts even if pb is unavailable.
55
72
  const INIT_PERMISSION = 'Bash(pb:*)';
56
73
  function readSettings(filePath) {
57
74
  if (!existsSync(filePath))
@@ -152,8 +169,7 @@ export async function runHandshakeInit(options = {}) {
152
169
  for (const item of teamAdded)
153
170
  console.log(` + ${item}`);
154
171
  }
155
- // Step 2: Personal config — wizard or --level flag
156
- // Cast is safe: LEVEL_KEYS.includes() validated above; invalid level already threw CLIError.
172
+ // Step 2: Personal config — wizard or --level flag. Cast is safe: LEVEL_KEYS.includes() validated above.
157
173
  const levelKey = options.level ? options.level : await promptLevel();
158
174
  const level = LEVELS[levelKey];
159
175
  const personalAdded = writePersonalSettings(levelKey, dryRun);
@@ -175,11 +191,7 @@ export async function runHandshakeInit(options = {}) {
175
191
  if (!dryRun)
176
192
  console.log('Reload /hooks in Claude Code (or restart) to activate.');
177
193
  console.log('Run `pb handshake --init --level <guide|work|silent|full-trust>` to change level.');
178
- // Step 2b: Report multi-surface hook opt-in status (WP-310 E3b)
179
- // Reads manifest.hooks.{cursor,copilot} and prints an informational note for
180
- // each opted-in surface. Silence = no manifest or no hooks flags set.
181
- // DEC-536: Claude-native default is already wired above; this block only fires
182
- // when the user has explicitly opted in via manifest.
194
+ // Step 2b: Report multi-surface hook opt-in status (WP-310 E3b) — manifest.hooks.{cursor,copilot}, silence = no manifest/flags (DEC-536).
183
195
  const pbDirForManifest = join(cwd, '.productbrain');
184
196
  const initManifest = readManifest(pbDirForManifest);
185
197
  const multiSurfaceOptIns = [];
@@ -248,24 +260,239 @@ export async function runHandshakeInit(options = {}) {
248
260
  }
249
261
  }
250
262
  }
251
- /**
252
- * Normalize volatile handshake-only timestamps before comparing generated files.
253
- * This keeps the visible timestamps in generated artifacts while avoiding
254
- * meaningless rewrites when semantic content is unchanged.
255
- */
263
+ const LOCAL_REF_REGEX = /\b(?:WP|TEN|DEC|BET|FEAT|INS|STD|PRI|ARCH)[-\s#]*\d+\b|\bPR\s*#?\s*\d+\b/gi;
264
+ const STARTUP_RESOLUTION_RESOLVER_VERSION = 'startup-resolution-v1';
265
+ // Global cap on collected refs (spec "Contract: StartupResolutionSignals" — arrays are capped).
266
+ const LOCAL_REF_GLOBAL_CAP = 25;
267
+ // Per-source cap so a broad source (context.md) can't starve briefing.md's task-specific refs (Codex@677).
268
+ const LOCAL_REF_PER_SOURCE_CAP = 18;
269
+ // Time-boxed so an unauthed/slow `gh` can't stall session-start (F4).
270
+ const PR_DIFF_TIMEOUT_MS = 4_000;
271
+ // Bounds worst-case `gh` subprocess invocations per handshake.
272
+ const PR_DIFF_MAX_REFS = 5;
273
+ function runGitText(cwd, command) {
274
+ try {
275
+ const value = execSync(command, {
276
+ cwd,
277
+ encoding: 'utf8',
278
+ stdio: ['ignore', 'pipe', 'ignore'],
279
+ }).trim();
280
+ return value.length > 0 ? value : undefined;
281
+ }
282
+ catch {
283
+ return undefined;
284
+ }
285
+ }
286
+ /** Dereference a "PR #N" ref to its changed paths via `gh pr diff <N> --name-only` (F4: server
287
+ * resolver has no git/gh access). Guarded/time-boxed; `run` is injectable for tests. */
288
+ export function dereferencePrRefToPaths(cwd, prNumber, run = runGitTextTimeboxed) {
289
+ if (!Number.isInteger(prNumber) || prNumber <= 0)
290
+ return [];
291
+ const raw = run(cwd, `gh pr diff ${prNumber} --name-only`, PR_DIFF_TIMEOUT_MS);
292
+ if (!raw)
293
+ return [];
294
+ return raw.split(/\r?\n/).map((line) => line.trim()).filter(Boolean);
295
+ }
296
+ /** Time-boxed variant of runGitText for the PR-diff dereference (F4). */
297
+ function runGitTextTimeboxed(cwd, command, timeoutMs) {
298
+ try {
299
+ const value = execSync(command, {
300
+ cwd,
301
+ encoding: 'utf8',
302
+ stdio: ['ignore', 'pipe', 'ignore'],
303
+ timeout: timeoutMs,
304
+ }).trim();
305
+ return value.length > 0 ? value : undefined;
306
+ }
307
+ catch {
308
+ return undefined;
309
+ }
310
+ }
311
+ function readOptionalLocalText(cwd, path) {
312
+ const fullPath = join(cwd, path);
313
+ if (!existsSync(fullPath))
314
+ return undefined;
315
+ try {
316
+ return readFileSync(fullPath, 'utf8');
317
+ }
318
+ catch {
319
+ return undefined;
320
+ }
321
+ }
322
+ function normalizeLocalRef(ref) {
323
+ const trimmed = ref.trim().replace(/\s+/g, ' ');
324
+ const pr = trimmed.match(/^PR\s*#?\s*(\d+)$/i);
325
+ if (pr)
326
+ return `PR #${pr[1]}`;
327
+ const entry = trimmed.match(/^([A-Z]+)[-\s#]*(\d+)$/i);
328
+ if (entry)
329
+ return `${entry[1].toUpperCase()}-${entry[2]}`;
330
+ return trimmed;
331
+ }
332
+ /** Collect normalized local refs across several text sources, deduped. Codex@677: a per-source
333
+ * cap alongside the global one, so a broad source (context.md) can't starve a later,
334
+ * task-specific source (briefing.md); already-collected refs dedupe without spending later quota. */
335
+ function collectLocalRefs(texts) {
336
+ const refs = [];
337
+ const seen = new Set();
338
+ for (const text of texts) {
339
+ if (!text)
340
+ continue;
341
+ let fromThisSource = 0;
342
+ for (const match of text.matchAll(LOCAL_REF_REGEX)) {
343
+ const ref = normalizeLocalRef(match[0]);
344
+ const key = ref.toLowerCase();
345
+ if (seen.has(key))
346
+ continue;
347
+ if (fromThisSource >= LOCAL_REF_PER_SOURCE_CAP)
348
+ break;
349
+ seen.add(key);
350
+ refs.push(ref);
351
+ fromThisSource++;
352
+ if (refs.length >= LOCAL_REF_GLOBAL_CAP)
353
+ return refs;
354
+ }
355
+ }
356
+ return refs;
357
+ }
358
+ function deriveHandshakeStartupTask(refs, changedPaths, callerTask) {
359
+ if (callerTask && callerTask.trim())
360
+ return callerTask.trim();
361
+ const parts = [];
362
+ if (refs.length > 0)
363
+ parts.push(refs.join(' '));
364
+ if (changedPaths.length > 0)
365
+ parts.push(`changed paths ${changedPaths.slice(0, 5).join(' ')}`);
366
+ return parts.length > 0 ? parts.join(' ') : undefined;
367
+ }
368
+ const DEFAULT_HANDSHAKE_SIGNAL_DEPS = {
369
+ runGit: runGitText,
370
+ prDiff: (cwd, prNumber) => dereferencePrRefToPaths(cwd, prNumber),
371
+ };
372
+ /** Extract the PR number from a normalized "PR #N" ref, else null. */
373
+ function prNumberFromRef(ref) {
374
+ const m = ref.match(/^PR\s*#?\s*(\d+)$/i);
375
+ if (!m)
376
+ return null;
377
+ const n = Number(m[1]);
378
+ return Number.isInteger(n) && n > 0 ? n : null;
379
+ }
380
+ export function deriveHandshakeStartupSignals(cwd, callerSignals = {}, deps = DEFAULT_HANDSHAKE_SIGNAL_DEPS) {
381
+ const { runGit, prDiff } = deps;
382
+ const branchName = runGit(cwd, 'git branch --show-current');
383
+ const commitSha = runGit(cwd, 'git rev-parse --short HEAD');
384
+ // Changed paths, unioned + deduped: (1) dirty worktree; (2) committed branch delta vs origin/main's
385
+ // merge-base (Codex@665, invisible once the tree is clean); (3) PR-ref dereference (F4), appended later.
386
+ const dirtyChangedPaths = runGit(cwd, 'git diff --name-only HEAD')?.split(/\r?\n/).filter(Boolean) ?? [];
387
+ const mergeBase = runGit(cwd, 'git merge-base HEAD origin/main');
388
+ const branchChangedPaths = mergeBase
389
+ ? (runGit(cwd, `git diff --name-only ${mergeBase} HEAD`)?.split(/\r?\n/).filter(Boolean) ?? [])
390
+ : [];
391
+ const worktreeName = basename(cwd);
392
+ const contextText = readOptionalLocalText(cwd, '.productbrain/context.md');
393
+ const briefingText = readOptionalLocalText(cwd, '.productbrain/briefing.md');
394
+ const callerRefs = Array.isArray(callerSignals.reviewedArtifactRefs) ? callerSignals.reviewedArtifactRefs.join('\n') : undefined;
395
+ // Codex@677: briefing.md (task-specific) reads BEFORE context.md (broad) so its refs collect first — with the per-source cap, context.md can't starve briefing.
396
+ const refs = collectLocalRefs([
397
+ callerSignals.taskText ?? undefined,
398
+ callerSignals.explicitScope ?? undefined,
399
+ callerRefs,
400
+ branchName,
401
+ worktreeName,
402
+ briefingText,
403
+ contextText,
404
+ ]);
405
+ // F4: dereference "PR #N" refs to diff paths, folded into changedPaths — the only place this can happen (server records dereferenced:false, no git access). Time-boxed; absent/unauthed gh no-ops.
406
+ const prDiffPaths = [];
407
+ if (callerSignals.changedPaths === undefined) {
408
+ let derefed = 0;
409
+ for (const ref of refs) {
410
+ const prNumber = prNumberFromRef(ref);
411
+ if (prNumber === null)
412
+ continue;
413
+ if (derefed >= PR_DIFF_MAX_REFS)
414
+ break;
415
+ derefed++;
416
+ try {
417
+ for (const p of prDiff(cwd, prNumber))
418
+ prDiffPaths.push(p);
419
+ }
420
+ catch {
421
+ // gh absent / unauthed / PR missing — skip gracefully, leave existing behavior.
422
+ }
423
+ }
424
+ }
425
+ // Caller-supplied changedPaths win (backward compat); otherwise union the
426
+ // three local sources, deduped, order-stable.
427
+ const unionedChangedPaths = callerSignals.changedPaths ??
428
+ Array.from(new Set([...dirtyChangedPaths, ...branchChangedPaths, ...prDiffPaths]));
429
+ const baseSignals = sanitizeStartupResolutionSignals({
430
+ ...callerSignals,
431
+ sourceSurface: callerSignals.sourceSurface ?? 'cli',
432
+ resolverVersion: callerSignals.resolverVersion ?? STARTUP_RESOLUTION_RESOLVER_VERSION,
433
+ branchName: callerSignals.branchName ?? branchName,
434
+ worktreeName: callerSignals.worktreeName ?? worktreeName,
435
+ changedPaths: unionedChangedPaths,
436
+ reviewedArtifactRefs: callerSignals.reviewedArtifactRefs ?? refs,
437
+ commitSha: callerSignals.commitSha ?? commitSha,
438
+ });
439
+ const taskText = deriveHandshakeStartupTask(baseSignals.reviewedArtifactRefs ?? [], baseSignals.changedPaths ?? [], baseSignals.taskText);
440
+ const sanitized = sanitizeStartupResolutionSignals({
441
+ ...baseSignals,
442
+ taskText,
443
+ });
444
+ const hasMeaningfulEvidence = Boolean(sanitized.taskText) ||
445
+ (sanitized.changedPaths?.length ?? 0) > 0 ||
446
+ (sanitized.reviewedArtifactRefs?.length ?? 0) > 0 ||
447
+ Boolean(sanitized.explicitScope);
448
+ if (hasMeaningfulEvidence)
449
+ return sanitized;
450
+ // Codex@704: even with no evidence, emit a minimal envelope carrying attribution — {} would
451
+ // drop the whole startup block, losing the loud domain-unresolved signal (spec "Loud Unresolved State", AC #4).
452
+ return sanitizeStartupResolutionSignals({
453
+ sourceSurface: sanitized.sourceSurface ?? 'cli',
454
+ resolverVersion: sanitized.resolverVersion ?? STARTUP_RESOLUTION_RESOLVER_VERSION,
455
+ branchName: sanitized.branchName,
456
+ worktreeName: sanitized.worktreeName,
457
+ commitSha: sanitized.commitSha,
458
+ changeId: sanitized.changeId,
459
+ });
460
+ }
461
+ /** Normalize volatile handshake-only timestamps before comparing generated files — keeps visible
462
+ * timestamps in artifacts while avoiding meaningless rewrites when content is unchanged. */
256
463
  export function normalizeHandshakeContentForComparison(content) {
257
464
  return content
258
465
  .replace(/<!-- auto-generated by pb handshake — [0-9]{4}-[0-9]{2}-[0-9]{2}T[^>]+ -->/g, '<!-- auto-generated by pb handshake — <TIMESTAMP> -->')
259
466
  .replace(/^_Generated: [0-9]{4}-[0-9]{2}-[0-9]{2}T.*_$/gm, '_Generated: <TIMESTAMP>_');
260
467
  }
261
468
  function shouldWriteAdapter(filePath, force) {
262
- if (force)
263
- return true;
469
+ // An absent file at an adapter path is a projection target → materialize it.
264
470
  if (!existsSync(filePath))
265
471
  return true;
266
472
  const content = readFileSync(filePath, 'utf8');
473
+ // No MARKER → user-owned/committed-static (CLAUDE.md, AGENTS.md, Copilot instructions) — never overwritten, not even under --force.
474
+ void force;
267
475
  return content.includes(MARKER);
268
476
  }
477
+ function normalizeSurfaceName(surface) {
478
+ const stripped = surface.startsWith('.') ? surface.slice(1) : surface;
479
+ const normalized = stripped === 'github' ? 'copilot' : stripped;
480
+ return normalized in SURFACE_REGISTRY ? normalized : null;
481
+ }
482
+ function surfacePerimeterRoots(surface) {
483
+ if (surface === 'codex')
484
+ return ['.codex', SURFACE_REGISTRY.codex.hookFilePath];
485
+ if (surface === 'copilot')
486
+ return ['.github', SURFACE_REGISTRY.copilot.hookFilePath];
487
+ if (surface === 'claude')
488
+ return ['.claude', 'CLAUDE.md'];
489
+ return [`.${surface}`];
490
+ }
491
+ // WP-776 S3f: modeRank deleted — its only caller compared authority-mode transitions for the
492
+ // now-deleted setup.recordTransition receipt.
493
+ // ── WP-421 S3: Three-bucket drift classification (doneWhen #17) — now its own module (STD-2/DEC-1504
494
+ // shrink-only offset). Re-exported so existing imports `from '../commands/handshake.js'` keep working.
495
+ export { classifyDriftBucket };
269
496
  function deduplicateEntries(entries) {
270
497
  const seen = new Set();
271
498
  const result = [];
@@ -278,19 +505,127 @@ function deduplicateEntries(entries) {
278
505
  }
279
506
  return result;
280
507
  }
508
+ /**
509
+ * findLeftoverProjections — WP-379 S5b
510
+ *
511
+ * Lists marker-bearing files under .cursor/rules/, .claude/rules/, .claude/skills/, .codex/skills/
512
+ * (plus the nested .cursor/skills/<name>/SKILL.md layout) that look stale: orphan (no canonical
513
+ * asset), stale case/punctuation variant, or a leftover `.dormant` copy. User-owned (no MARKER)
514
+ * files and unselected `allowedTargets` are never reported.
515
+ *
516
+ * Round 12: stops once `LEFTOVER_FILES_MAX + 1` matches are found across the flat + merged
517
+ * nested-Cursor scan combined — bounds read/enumerate I/O, not just the reported list.
518
+ * `truncated` says more exist beyond the capped, returned `files`.
519
+ *
520
+ * @param cursorSkillNames Cursor-specific, SKILL-kind-only canon (falls back to `assetNames`).
521
+ * @param exactRelativePaths Round 11: exact write-plan paths (forward-slash), exempted from both
522
+ * checks — covers asset-less generated files and a canonical raw name not already normalized.
523
+ */
524
+ export function findLeftoverProjections(cwd, assetNames, allowedTargets, cursorSkillNames, exactRelativePaths) {
525
+ const TARGET_DIRS_BY_EXT = [
526
+ { dir: join(cwd, '.cursor', 'rules'), ext: '.mdc', surface: 'cursor' },
527
+ { dir: join(cwd, '.claude', 'rules'), ext: '.md', surface: 'claude' },
528
+ { dir: join(cwd, '.claude', 'skills'), ext: '.md', surface: 'claude' },
529
+ { dir: join(cwd, '.codex', 'skills'), ext: '.md', surface: 'codex' },
530
+ ];
531
+ const canonicalNormalizedStems = new Set(assetNames.map((n) => normalizeMaterializedFilename(n)));
532
+ const exactPaths = exactRelativePaths ?? new Set();
533
+ const leftovers = [];
534
+ let truncated = false;
535
+ scanLoop: for (const { dir, ext, surface } of TARGET_DIRS_BY_EXT) {
536
+ if (!allowedTargets.has(surface))
537
+ continue;
538
+ if (!existsSync(dir))
539
+ continue;
540
+ let files;
541
+ try {
542
+ files = readdirSync(dir);
543
+ }
544
+ catch {
545
+ continue; // unreadable dir — skip
546
+ }
547
+ for (const filename of files) {
548
+ if (!filename.endsWith(ext) && !filename.endsWith(`${ext}.dormant`))
549
+ continue;
550
+ const fullPath = join(dir, filename);
551
+ let content;
552
+ try {
553
+ content = readFileSync(fullPath, 'utf8');
554
+ }
555
+ catch {
556
+ continue; // unreadable file — skip
557
+ }
558
+ if (!content.includes(MARKER))
559
+ continue; // user-owned — never reported
560
+ const isDormant = filename.endsWith('.dormant');
561
+ // A live file the write plan targets by this exact path is canonical by construction.
562
+ if (!isDormant) {
563
+ const relativePath = relative(cwd, fullPath).split(sep).join('/');
564
+ if (exactPaths.has(relativePath))
565
+ continue;
566
+ }
567
+ const stem = basename(isDormant ? filename.slice(0, -'.dormant'.length) : filename, ext);
568
+ const normalizedStem = normalizeMaterializedFilename(stem);
569
+ let entry = null;
570
+ if (!canonicalNormalizedStems.has(normalizedStem)) {
571
+ entry = { path: fullPath, reason: 'orphan — no canonical asset matches this name' };
572
+ }
573
+ else if (isDormant) {
574
+ entry = { path: fullPath, reason: 'leftover .dormant file from an older binary version' };
575
+ }
576
+ else if (stem !== normalizedStem) {
577
+ entry = { path: fullPath, reason: `stale case/punctuation variant — canonical form is "${normalizedStem}${ext}"` };
578
+ }
579
+ if (!entry)
580
+ continue;
581
+ leftovers.push(entry);
582
+ if (leftovers.length > LEFTOVER_FILES_MAX) {
583
+ truncated = true;
584
+ leftovers.pop();
585
+ break scanLoop;
586
+ }
587
+ }
588
+ }
589
+ // Nested Cursor skills — extracted to its own module (STD-2/DEC-1504 shrink-only offset).
590
+ // Skipped once the flat scan already hit the cap; the remaining budget keeps the combined
591
+ // total across both scans stopping at LEFTOVER_FILES_MAX + 1.
592
+ if (!truncated && allowedTargets.has('cursor')) {
593
+ const nested = findLeftoverCursorSkills(cwd, cursorSkillNames ?? assetNames, LEFTOVER_FILES_MAX - leftovers.length);
594
+ leftovers.push(...nested.files);
595
+ truncated = nested.truncated;
596
+ }
597
+ return { files: leftovers, truncated };
598
+ }
599
+ /** Round 13 (Codex P1, security): strips a `user:token@` userinfo segment from an https remote
600
+ * so a credential never reaches JSON output. SSH remotes (`git@host:...`) are untouched — that
601
+ * `git@` is a fixed public username, not a secret. */
602
+ function redactGitRemote(remote) {
603
+ return remote ? remote.replace(/^(https?:\/\/)[^@/]+@/i, '$1') : remote;
604
+ }
605
+ /** Round 13 (Codex P1, security): `pb --json handshake` serialized the report directly — leaking
606
+ * an HTTPS git-remote credential and raw Convex `_id`/`_creationTime` on `matchedEntries` (never
607
+ * went through the shared runner's `stripConvexInternals`). One public shape, both JSON paths. */
608
+ function toPublicJsonReport(report) {
609
+ return stripConvexInternals({ ...report, repo: { ...report.repo, gitRemote: redactGitRemote(report.repo.gitRemote) } });
610
+ }
281
611
  export async function runHandshake(options = {}) {
282
- const config = await getConfigOrGuide(() => runHandshake(options));
612
+ const config = await getConfigOrGuide(async () => { await runHandshake(options); });
283
613
  if (!config)
284
- return;
614
+ return undefined;
285
615
  const cwd = process.cwd();
286
616
  const force = options.force ?? false;
287
617
  const dryRun = options.dryRun ?? false;
618
+ // Preview mode: default when neither --apply nor --dry-run is passed (--dry-run is a backward-compat alias).
619
+ const preview = !options.apply && !dryRun;
620
+ const applyMode = options.apply === true && !dryRun;
288
621
  const level = options.level;
622
+ // `quiet` gates the final report write (`--json` alone still prints). `suppressProgress`
623
+ // also silences stdout log() prose in JSON mode. logErr() stays on `quiet` alone (stderr).
289
624
  const quiet = options.quiet ?? false;
290
- const generate = options.generate ?? false;
625
+ const suppressProgress = quiet || isJsonMode();
291
626
  const timestamp = new Date().toISOString();
292
- // Helper: emit progress line only when not quiet (used when handshake is a sub-step)
293
- const log = (msg) => { if (!quiet)
627
+ // Helper: emit progress line only when not suppressed. logErr is gated on `quiet` alone.
628
+ const log = (msg) => { if (!suppressProgress)
294
629
  process.stdout.write(msg + '\n'); };
295
630
  const logErr = (msg) => { if (!quiet)
296
631
  process.stderr.write(msg + '\n'); };
@@ -309,6 +644,21 @@ export async function runHandshake(options = {}) {
309
644
  if (repo.detectedStack.length > 0) {
310
645
  log(`Stack: ${repo.detectedStack.join(', ')}`);
311
646
  }
647
+ const startupSignals = deriveHandshakeStartupSignals(cwd, options.startupSignals ?? {});
648
+ const orientArgs = { tier: 'standard' };
649
+ if (options.invocationPath)
650
+ orientArgs.invocationPath = options.invocationPath;
651
+ if (Object.keys(startupSignals).length > 0) {
652
+ orientArgs.startupSignals = startupSignals;
653
+ if (startupSignals.taskText)
654
+ orientArgs.task = startupSignals.taskText;
655
+ }
656
+ // Scopes the role rule lists this orient call returns to THIS session, not a sibling's.
657
+ const activeSession = readSession();
658
+ if (activeSession?.sessionId)
659
+ orientArgs.sessionId = activeSession.sessionId;
660
+ if (activeSession?.conversationId)
661
+ orientArgs.conversationId = activeSession.conversationId;
312
662
  // 2. Fetch orient view + workspace readiness in parallel (budget max +200ms added latency)
313
663
  log('Fetching workspace context...');
314
664
  let orientView = null;
@@ -316,7 +666,7 @@ export async function runHandshake(options = {}) {
316
666
  try {
317
667
  const workspaceReadinessPromise = kernelCall('chain.workspaceReadiness', {}).catch(() => null);
318
668
  const [orientResult, readinessRaw] = await Promise.all([
319
- kernelCall('chain.getOrientView', {}).catch((err) => {
669
+ kernelCall('chain.getOrientView', orientArgs).catch((err) => {
320
670
  logErr(`Warning: could not fetch workspace context — ${err instanceof Error ? err.message : err}`);
321
671
  logErr('Continuing with limited context (Chain search + portable knowledge only).');
322
672
  return null;
@@ -331,7 +681,7 @@ export async function runHandshake(options = {}) {
331
681
  logErr('Continuing with limited context (Chain search + portable knowledge only).');
332
682
  }
333
683
  if (workspaceProfile) {
334
- log(`Workspace profile: stage=${workspaceProfile.stage}, entries=${workspaceProfile.totalEntries}, governance=${workspaceProfile.governanceMode}`);
684
+ log(`Workspace profile: entries=${workspaceProfile.totalEntries}`);
335
685
  }
336
686
  // 3. Build search queries from repo context
337
687
  const searchQueries = [];
@@ -353,43 +703,57 @@ export async function runHandshake(options = {}) {
353
703
  const searchResults = await Promise.all(uniqueQueries.map((q) => kernelCall('chain.searchEntries', { query: q }).catch(() => [])));
354
704
  matchedEntries = deduplicateEntries(searchResults.flat());
355
705
  }
356
- // 5. Read canonical skills & rules from .productbrain/
706
+ // 5. Read canonical skills & rules — DB-first (WP-345 S0c, TEN-1459): query setup.listAssetsForUser, FS fallback.
357
707
  const pbDir = join(cwd, '.productbrain');
358
- const allSkills = readCanonicalSkills(pbDir);
359
- const manualRules = readCanonicalRules(pbDir);
360
- // 5a. Optionally fetch and merge Chain-derived rules (--generate flag)
361
- let chainRulesStats = null;
362
- let chainGaps = [];
363
- let allRules = manualRules;
364
- if (generate) {
365
- log('Generating Chain-derived rules...');
366
- const chainResult = await generateChainRules(kernelCall, manualRules);
367
- if (chainResult.sentinel) {
368
- // MCP unavailable — inject sentinel rule and warn
369
- allRules = [...manualRules, chainResult.sentinel];
370
- logErr('Warning: Chain MCP unavailable — generated rules are disabled. Sentinel rule injected.');
708
+ const manifestStatus = readManifestStatus(pbDir);
709
+ const manifest = manifestStatus.manifest;
710
+ const surfaceValidation = validateSurfacesForMode(manifestStatus.mode, manifestStatus.surfaces);
711
+ if (applyMode && surfaceValidation.error === SURFACE_GOVERN_NO_SURFACES) {
712
+ throw new CLIError('materialize: govern requires at least one registered manifest surface.', {
713
+ code: ErrorCode.VALIDATION_FAILED,
714
+ category: 'validation',
715
+ guidance: 'Add surfaces such as `.cursor` or `.claude` to .productbrain/manifest.yaml.',
716
+ });
717
+ }
718
+ for (const surface of surfaceValidation.unregisteredSurfaces) {
719
+ logErr(`Warning: manifest surface "${surface}" is not registered; skipping it.`);
720
+ }
721
+ const manifestTargets = new Set(surfaceValidation.registeredSurfaces);
722
+ const cliTargets = new Set();
723
+ const ignoredCliSurfaces = [];
724
+ for (const surface of options.surfaces ?? []) {
725
+ const normalized = normalizeSurfaceName(surface);
726
+ if (normalized && manifestTargets.has(normalized)) {
727
+ cliTargets.add(normalized);
371
728
  }
372
729
  else {
373
- // Merge generated rules after manual rules (manual takes precedence on dedup)
374
- allRules = [...manualRules, ...chainResult.rules];
375
- chainRulesStats = chainResult.stats;
376
- chainGaps = chainResult.gaps;
377
- const { generatedRules, suppressedByManual, suppressedByZeroEntries } = chainResult.stats;
378
- log(`Chain-derived rules: ${generatedRules} generated, ${suppressedByManual} suppressed by manual, ${suppressedByZeroEntries} gaps`);
379
- if (chainGaps.length > 0) {
380
- log(`Gaps (no matching governance entries): ${chainGaps.join(', ')}`);
381
- }
382
- // Diff: compare current state against previous run
383
- const previousState = loadPreviousState(pbDir);
384
- const currentState = buildCurrentState(chainResult.rules, chainResult.classified);
385
- saveHandshakeState(pbDir, chainResult.rules, chainResult.classified);
386
- const diff = diffHandshakeState(currentState, previousState);
387
- const diffText = formatDiff(diff);
388
- log(diffText);
730
+ ignoredCliSurfaces.push(surface);
389
731
  }
390
732
  }
391
- // 5b. Read personal layer (WP-310 E2) — machine-local rules/skills from .productbrain/.local/
392
- // Returns [] when the directory is absent. All returned entries have persist: 'local'.
733
+ if (ignoredCliSurfaces.length > 0) {
734
+ logErr(`Warning: --surfaces ignored outside manifest.surfaces: ${ignoredCliSurfaces.join(', ')}`);
735
+ }
736
+ const allowedTargets = options.surfaces && options.surfaces.length > 0
737
+ ? cliTargets
738
+ : manifestTargets;
739
+ const perimeterManifest = {
740
+ surfaces: [...manifestTargets].flatMap(surfacePerimeterRoots),
741
+ };
742
+ const authorityCanWrite = manifestStatus.mode === 'project' || manifestStatus.mode === 'govern';
743
+ const authorityPreviewOnly = applyMode && !authorityCanWrite;
744
+ const writeMode = applyMode && authorityCanWrite;
745
+ // WP-776 S3f: the DB-first setup-asset sourcing pipeline (setup.listAssetsForUser +
746
+ // setup.fetchAssetBody + setup.resolveSemanticRefs + setup.ingestSetupAssetWithBody, plus the
747
+ // personal-asset dormancy sync and per-asset projection-hash/drift-detection bookkeeping around
748
+ // it) is deleted along with the rest of the setup-assets system — DEC-1771 (delete, never hide).
749
+ // The filesystem read path below (readCanonicalSkills/readCanonicalRules) was always the
750
+ // fallback when the DB source was unavailable; it is now the only source.
751
+ const allSkills = readCanonicalSkills(pbDir);
752
+ const manualRules = readCanonicalRules(pbDir);
753
+ // The --generate flag and its chain-rules generator are gone: the everyone/team/role rule lists
754
+ // (DEC-1774) are the rule-delivery path (context.md, chain.mdc, everyone-rules.md).
755
+ let allRules = manualRules;
756
+ // 5b. Read personal layer (WP-310 E2) — machine-local rules/skills from .productbrain/.local/, [] if absent, all persist: 'local'.
393
757
  const personalRules = readPersonalLayer(pbDir);
394
758
  if (personalRules.length > 0) {
395
759
  // Name collision detection — warn when a personal rule overrides a team rule
@@ -412,14 +776,12 @@ export async function runHandshake(options = {}) {
412
776
  }
413
777
  allSkills.push(...personalSkills);
414
778
  }
415
- // 5c. Apply manifest-based adoption filter (WP-310 E1)
416
- // readManifest returns null when manifest.yaml is absent → filterByAdoptionState is a no-op.
417
- const manifest = readManifest(pbDir);
418
- // 5d. Load method registry (WP-310 E4) — only when manifest is present.
779
+ // 5d. Load method registry (WP-310 E4) — only when manifest is present. Unrelated to the
780
+ // setup-assets system (WP-329's own "methods" Chain collection, no setup.* coupling) — kept.
419
781
  let registrySource;
420
782
  let registryStale;
421
783
  if (manifest) {
422
- const registryResult = await loadMethodRegistry(manifest.method_source, kernelCall).catch(() => null);
784
+ const registryResult = await loadMethodRegistry().catch(() => null);
423
785
  if (registryResult) {
424
786
  registrySource = registryResult.source;
425
787
  registryStale = registryResult.stale;
@@ -430,24 +792,10 @@ export async function runHandshake(options = {}) {
430
792
  // Compute adoption counts for report (only meaningful when manifest is present)
431
793
  const adoptedRulesCount = manifest ? adoptionFilteredRules.length : undefined;
432
794
  const rejectedRulesCount = manifest ? allRules.length - adoptionFilteredRules.length : undefined;
433
- // Apply level filtering with stage-gating (after adoption filter, before target filtering in write loop)
434
- // Stage caps the effective level: blank→beginner, seed→intermediate, grounded+→expert.
435
- // If stage caps below the requested level, log it so the user knows why items were dropped.
436
- const profileStage = workspaceProfile?.stage;
437
- const levelFilteredSkills = filterByLevel(adoptionFilteredSkills, level, profileStage);
438
- const levelFilteredRules = filterByLevel(adoptionFilteredRules, level, profileStage);
439
- // Log when stage gating changes the effective level
440
- if (profileStage) {
441
- const stageCap = STAGE_TO_MAX_LEVEL[profileStage];
442
- if (stageCap) {
443
- const requestedIdx = level ? LEVEL_ORDER.indexOf(level) : LEVEL_ORDER.length - 1;
444
- const capIdx = LEVEL_ORDER.indexOf(stageCap);
445
- if (capIdx < requestedIdx) {
446
- log(`Stage "${profileStage}" caps level from ${level || 'expert'} to ${stageCap}`);
447
- }
448
- }
449
- }
450
- // Apply when-condition filtering (stage-aware, workspace profile + repo context)
795
+ // Level filtering: requested level only (WP-762 C4e-2, DEC-1800 — no more stage cap).
796
+ const levelFilteredSkills = filterByLevel(adoptionFilteredSkills, level);
797
+ const levelFilteredRules = filterByLevel(adoptionFilteredRules, level);
798
+ // Apply when-condition filtering (workspace profile + repo context)
451
799
  const canonicalSkills = levelFilteredSkills.filter((skill) => {
452
800
  const result = evaluateConditions(skill.conditions ?? {}, workspaceProfile, repo);
453
801
  if (dryRun && !result.included) {
@@ -468,26 +816,23 @@ export async function runHandshake(options = {}) {
468
816
  if (dryRun && canonicalRules.length > 0) {
469
817
  log(` INCLUDED rules: ${canonicalRules.map((r) => r.name).join(', ')}`);
470
818
  }
819
+ const noProjectionAssets = findNoProjectionAssets(canonicalSkills, canonicalRules);
471
820
  if (canonicalSkills.length > 0 || canonicalRules.length > 0) {
472
821
  const levelSuffix = level ? ` (level: ${level})` : '';
473
- const stageSuffix = profileStage ? `, stage: ${profileStage}` : '';
474
822
  const stackSuffix = repo.detectedStack.length > 0 ? `, stack: [${repo.detectedStack.join(', ')}]` : '';
475
823
  const totalSkills = allSkills.length;
476
824
  const totalRules = allRules.length;
477
- log(`Portable knowledge: ${canonicalSkills.length}/${totalSkills} skills, ${canonicalRules.length}/${totalRules} rules${levelSuffix}${stageSuffix}${stackSuffix}`);
825
+ log(`Portable knowledge: ${canonicalSkills.length}/${totalSkills} skills, ${canonicalRules.length}/${totalRules} rules${levelSuffix}${stackSuffix}`);
478
826
  }
479
827
  // 6. Generate file contents
480
- // Build workspace context for AGENTS.md enrichment (stage, focus, governance, entry count)
828
+ // Build workspace context for AGENTS.md enrichment (focus, entry count) — TASK-435 (C4c) deleted `stage` from it.
481
829
  const agentsWorkspaceContext = workspaceProfile
482
830
  ? {
483
- stage: workspaceProfile.stage,
484
- focus: orientView?.strategicContext?.currentBet ?? undefined,
485
- governanceMode: workspaceProfile.governanceMode,
831
+ focus: orientView?.strategicContext?.currentWorkPackage ?? undefined,
486
832
  totalEntries: workspaceProfile.totalEntries,
487
833
  }
488
834
  : undefined;
489
- // Collect codex-targeted skills for AGENTS.md skill directory
490
- // Exclude persist: 'local' rules — committed adapter files must never include local-only rules.
835
+ // Collect codex-targeted skills for AGENTS.md skill directory — persist: 'local' entries included (all projections are local-only now).
491
836
  const agentsCodexSkills = canonicalSkills
492
837
  .filter((s) => shouldEmitToTarget(s, 'codex'))
493
838
  .map((s) => ({
@@ -517,35 +862,75 @@ export async function runHandshake(options = {}) {
517
862
  skills: copilotSkills.length > 0 ? copilotSkills : undefined,
518
863
  rules: copilotRules.length > 0 ? copilotRules : undefined,
519
864
  };
520
- const contextContent = orientView ? generateContextMd(orientView, repo, timestamp, workspaceProfile?.stage) : null;
865
+ const contextContent = orientView ? generateContextMd(orientView, repo, timestamp) : null;
866
+ // TASK-341 (WP-777): the SAME Everyone-bucket lines context.md's own "## Rules" section
867
+ // renders (formatWorkspaceWideRuleLines) — one reader, two projections, never a second
868
+ // re-derivation of "the everyone list".
869
+ const everyoneRuleLines = orientView ? formatWorkspaceWideRuleLines(orientView.ruleLists) : [];
870
+ const everyoneRulesContent = orientView ? generateEveryoneRulesMd(everyoneRuleLines, timestamp) : null;
521
871
  const briefingContent = generateBriefingMd(matchedEntries, repo, uniqueQueries, timestamp);
522
872
  const agentsContent = generateAgentsMd(timestamp, {
523
873
  workspaceContext: agentsWorkspaceContext,
524
874
  skills: agentsCodexSkills.length > 0 ? agentsCodexSkills : undefined,
525
875
  });
526
876
  const claudeContent = generateClaudeMd(timestamp);
527
- const cursorContent = generateCursorMdc(timestamp);
877
+ const cursorContent = generateCursorMdc(timestamp, undefined, everyoneRuleLines);
528
878
  const copilotContent = generateCopilotMd(timestamp, copilotOptions);
879
+ // DEC-1343: one committed .github/instructions/<slug>.instructions.md per copilot rule with applyTo; repo-wide rules stay above.
880
+ const copilotInstructionFiles = generateCopilotInstructionFiles(canonicalRules
881
+ .filter((r) => shouldEmitToTarget(r, 'copilot'))
882
+ // `.github/instructions/` is COMMITTED — never project a machine-local (persist: 'local') rule into it.
883
+ .filter((r) => r.persist !== 'local')
884
+ .map((r) => ({ name: r.name, body: r.body, applyTo: r.applyTo, sourcePath: r.sourcePath })), timestamp);
885
+ const boundaryEnforcementMode = getBoundaryEnforcementMode(manifest);
886
+ const boundaryManifestContent = boundaryEnforcementMode === 'advisory'
887
+ ? null
888
+ : generateBoundaryManifest(pbDir);
529
889
  // 7. Write files
530
890
  const filesWritten = [];
531
891
  const filesSkipped = [];
532
- // Surface filtering: skip adapter writes for targets not in the allowed set
533
- const allowedTargets = options.surfaces && options.surfaces.length > 0
534
- ? new Set(options.surfaces)
535
- : null; // null = write all
892
+ const previewPlan = [];
893
+ // WP-776 S3f: the personal-setup-asset authoring sync block (setup.markPersonalSetupAssetDormantFromSync
894
+ // + setup.updateLastProjectedHash) is deleted along with the DB-asset sourcing pipeline above —
895
+ // there is no DB-sourced personal asset any more to reconcile against .productbrain authoring files.
536
896
  const writes = [
537
897
  ...(contextContent ? [{ path: join(cwd, '.productbrain', 'context.md'), relative: '.productbrain/context.md', content: contextContent, dirs: join(cwd, '.productbrain'), isAdapter: false }] : []),
898
+ ...(everyoneRulesContent
899
+ ? [{
900
+ path: join(cwd, '.productbrain', 'generated', 'everyone-rules.md'),
901
+ relative: '.productbrain/generated/everyone-rules.md',
902
+ content: everyoneRulesContent,
903
+ dirs: join(cwd, '.productbrain', 'generated'),
904
+ isAdapter: false,
905
+ }]
906
+ : []),
538
907
  { path: join(cwd, '.productbrain', 'briefing.md'), relative: '.productbrain/briefing.md', content: briefingContent, isAdapter: false },
539
- { path: join(cwd, 'AGENTS.md'), relative: 'AGENTS.md', content: agentsContent, isAdapter: true, target: 'codex' },
540
- { path: join(cwd, 'CLAUDE.md'), relative: 'CLAUDE.md', content: claudeContent, isAdapter: true, target: 'claude' },
908
+ { path: join(cwd, 'AGENTS.md'), relative: 'AGENTS.md', content: agentsContent, isAdapter: true, target: 'codex', augmentTarget: true },
909
+ { path: join(cwd, 'CLAUDE.md'), relative: 'CLAUDE.md', content: claudeContent, isAdapter: true, target: 'claude', augmentTarget: true },
541
910
  { path: join(cwd, '.cursor', 'rules', 'chain.mdc'), relative: '.cursor/rules/chain.mdc', content: cursorContent, dirs: join(cwd, '.cursor', 'rules'), isAdapter: true, target: 'cursor' },
542
911
  { path: join(cwd, '.github', 'copilot-instructions.md'), relative: '.github/copilot-instructions.md', content: copilotContent, dirs: join(cwd, '.github'), isAdapter: true, target: 'copilot' },
912
+ ...copilotInstructionFiles.map((f) => ({
913
+ path: join(cwd, f.relativePath),
914
+ relative: f.relativePath,
915
+ content: f.content,
916
+ dirs: join(cwd, '.github', 'instructions'),
917
+ isAdapter: true,
918
+ target: 'copilot',
919
+ })),
920
+ ...(boundaryManifestContent ? [{
921
+ path: join(cwd, '.productbrain', 'generated', 'boundaries.json'),
922
+ relative: '.productbrain/generated/boundaries.json',
923
+ content: boundaryManifestContent,
924
+ dirs: join(cwd, '.productbrain', 'generated'),
925
+ isAdapter: false,
926
+ }] : []),
543
927
  ];
544
928
  // Add Cursor skill copies (filtered by target)
545
929
  const cursorProfile = resolveSurfaceProfile('cursor');
546
930
  for (const skill of canonicalSkills) {
547
931
  if (!shouldEmitToTarget(skill, 'cursor'))
548
932
  continue;
933
+ const dbAssetEntryId = skill.sourcePath.startsWith('db:') ? skill.sourcePath.slice(3) : undefined;
549
934
  const skillDir = join(cwd, '.cursor', 'skills', skill.name);
550
935
  writes.push({
551
936
  path: join(skillDir, 'SKILL.md'),
@@ -554,12 +939,14 @@ export async function runHandshake(options = {}) {
554
939
  dirs: skillDir,
555
940
  isAdapter: true,
556
941
  target: 'cursor',
942
+ dbAssetEntryId,
557
943
  });
558
944
  }
559
945
  // Add Codex skill copies (projected markdown + index)
560
946
  const codexProfile = resolveSurfaceProfile('codex');
561
947
  const codexSkills = canonicalSkills.filter((s) => shouldEmitToTarget(s, 'codex'));
562
948
  for (const skill of codexSkills) {
949
+ const dbAssetEntryId = skill.sourcePath.startsWith('db:') ? skill.sourcePath.slice(3) : undefined;
563
950
  writes.push({
564
951
  path: join(cwd, '.codex', 'skills', `${skill.name}.md`),
565
952
  relative: `.codex/skills/${skill.name}.md`,
@@ -567,6 +954,7 @@ export async function runHandshake(options = {}) {
567
954
  dirs: join(cwd, '.codex', 'skills'),
568
955
  isAdapter: true,
569
956
  target: 'codex',
957
+ dbAssetEntryId,
570
958
  });
571
959
  }
572
960
  writes.push({
@@ -583,6 +971,7 @@ export async function runHandshake(options = {}) {
583
971
  for (const rule of canonicalRules) {
584
972
  if (!shouldEmitToTarget(rule, 'cursor'))
585
973
  continue;
974
+ const dbAssetEntryId = rule.sourcePath.startsWith('db:') ? rule.sourcePath.slice(3) : undefined;
586
975
  writes.push({
587
976
  path: join(cwd, '.cursor', 'rules', `${rule.name}.mdc`),
588
977
  relative: `.cursor/rules/${rule.name}.mdc`,
@@ -590,64 +979,335 @@ export async function runHandshake(options = {}) {
590
979
  dirs: join(cwd, '.cursor', 'rules'),
591
980
  isAdapter: true,
592
981
  target: 'cursor',
982
+ dbAssetEntryId,
593
983
  });
594
984
  }
595
- // Add Claude Code rule copies (filtered by target)
596
- const claudeProfile = resolveSurfaceProfile('claude');
597
- for (const rule of canonicalRules) {
598
- if (!shouldEmitToTarget(rule, 'claude'))
599
- continue;
600
- writes.push({
601
- path: join(cwd, '.claude', 'rules', `${rule.name}.md`),
602
- relative: `.claude/rules/${rule.name}.md`,
603
- content: generateClaudeRule(rule, claudeProfile),
604
- dirs: join(cwd, '.claude', 'rules'),
605
- isAdapter: true,
606
- target: 'claude',
607
- });
985
+ // 7a. WP-379 S5b: find leftover projections (apply mode) — REPORT-ONLY (coordinator ruling, PR
986
+ // #912 round 10), see findLeftoverProjections's own header. WP-776 S3f: gated on writeMode
987
+ // alone now — the DB source (dbQuerySucceeded) is gone, so activeAssetNames comes from the
988
+ // filesystem-sourced allSkills/allRules (which already include the personal layer, merged in
989
+ // above) instead of dbAssetRows.
990
+ let leftoverFiles = [];
991
+ let leftoverFilesTruncated = false;
992
+ if (writeMode) {
993
+ retireGeneratedProjections(cwd, orientView !== null, log, logErr);
994
+ const activeAssetNames = [
995
+ ...allSkills.map((s) => s.name),
996
+ ...allRules.map((r) => r.name),
997
+ ];
998
+ // Nested .cursor/skills scan gets its OWN canon: canonicalSkills is SKILL-kind only and
999
+ // shouldEmitToTarget(_, 'cursor') respects per-skill target routing.
1000
+ const cursorSkillNames = canonicalSkills.filter((s) => shouldEmitToTarget(s, 'cursor')).map((s) => s.name);
1001
+ // Round 11: exempt exact write-plan paths from the leftover scan (see findLeftoverProjections's own doc).
1002
+ const exactRelativePaths = new Set(writes.map((w) => w.relative));
1003
+ const scanResult = findLeftoverProjections(cwd, activeAssetNames, allowedTargets, cursorSkillNames, exactRelativePaths);
1004
+ leftoverFiles = scanResult.files;
1005
+ leftoverFilesTruncated = scanResult.truncated;
608
1006
  }
609
- // Add Claude Code skill router (filtered by target)
610
- const claudeSkills = canonicalSkills.filter((s) => shouldEmitToTarget(s, 'claude'));
611
- const skillRouterContent = generateClaudeSkillRouter(claudeSkills, claudeProfile);
612
- if (skillRouterContent) {
613
- writes.push({
614
- path: join(cwd, '.claude', 'rules', 'skill-router.md'),
615
- relative: '.claude/rules/skill-router.md',
616
- content: skillRouterContent,
617
- dirs: join(cwd, '.claude', 'rules'),
618
- isAdapter: true,
619
- target: 'claude',
620
- });
1007
+ // ── WP-436 S3: Vocab projector — fetch workspace vocab context once per handshake. Source-side
1008
+ // stays tokenized; resolves {{vocab:...}} before writing. Fail-open: a failed fetch writes the raw token.
1009
+ const handshakeVocabCtx = await getOrFetchVocabCtx(config.apiKey, async () => {
1010
+ try {
1011
+ const vocab = await kernelCall('chain.getVocabulary', {});
1012
+ if (vocab?.collectionLabels || vocab?.collectionDefaults) {
1013
+ return {
1014
+ ...(vocab.collectionLabels ? { collectionLabels: vocab.collectionLabels } : {}),
1015
+ ...(vocab.collectionDefaults ? { collectionDefaults: vocab.collectionDefaults } : {}),
1016
+ };
1017
+ }
1018
+ return null;
1019
+ }
1020
+ catch {
1021
+ return null; // fail-open
1022
+ }
1023
+ });
1024
+ const userOwnedSkipped = [];
1025
+ const cleanBucketPaths = [];
1026
+ const tamperedBucket = [];
1027
+ // TEN-2155: region augmentation context + symlink dedupe — codexActive gates the AGENTS.md skills-index pointer.
1028
+ const regionCtx = { codexActive: allowedTargets.has('codex') };
1029
+ const malformedRegionPaths = [];
1030
+ // Same inode for two augment targets (e.g. CLAUDE.md symlinked to AGENTS.md): augment only first-seen.
1031
+ const seenAugmentRealpaths = new Set();
1032
+ const augmentTargetSkip = new Set();
1033
+ for (const w of writes) {
1034
+ if (!w.augmentTarget || !w.target || !allowedTargets.has(w.target) || !existsSync(w.path))
1035
+ continue;
1036
+ let real;
1037
+ try {
1038
+ real = realpathSync(w.path);
1039
+ }
1040
+ catch {
1041
+ real = w.path;
1042
+ }
1043
+ if (seenAugmentRealpaths.has(real))
1044
+ augmentTargetSkip.add(w.path);
1045
+ else
1046
+ seenAugmentRealpaths.add(real);
621
1047
  }
622
1048
  for (const w of writes) {
623
1049
  // Surface filtering: skip adapter writes for targets not in the allowed set
624
- if (allowedTargets && w.target && !allowedTargets.has(w.target)) {
1050
+ if (w.target && !allowedTargets.has(w.target)) {
625
1051
  filesSkipped.push({ path: w.relative, reason: `filtered (surface: ${w.target})` });
1052
+ if (preview)
1053
+ previewPlan.push({ path: w.relative, status: 'filtered' });
626
1054
  continue;
627
1055
  }
1056
+ // ── TEN-2155: augment user-owned CLAUDE.md / AGENTS.md with a marked PB region — runs ahead
1057
+ // of the legacy MARKER gates; absent/legacy-pb-managed fall through to the legacy path.
1058
+ if (w.augmentTarget) {
1059
+ const projection = REGION_PROJECTIONS[w.target];
1060
+ if (projection && existsSync(w.path)) {
1061
+ if (augmentTargetSkip.has(w.path)) {
1062
+ filesSkipped.push({ path: w.relative, reason: 'symlinked to another augment target — augmented once' });
1063
+ continue;
1064
+ }
1065
+ const disk = readFileSync(w.path, 'utf8');
1066
+ const cls = classifyAdapterFile(disk);
1067
+ if (cls === 'augmentable' || cls === 'region-present') {
1068
+ const eol = detectEol(disk);
1069
+ const region = replaceVocabTokens(projection.build(regionCtx, eol), handshakeVocabCtx);
1070
+ // Defense-in-depth: the composed region (post vocab-token resolution) must itself be a
1071
+ // single well-formed region. v1 content has no vocab tokens so this is a no-op, but it
1072
+ // guards the documented future override/vocab seam from injecting a stray sentinel/MARKER.
1073
+ if (classifyAdapterFile(region) !== 'region-present') {
1074
+ filesSkipped.push({ path: w.relative, reason: 'internal: composed PB region malformed — skipped to protect your file' });
1075
+ if (preview)
1076
+ previewPlan.push({ path: w.relative, status: 'needs-attention' });
1077
+ continue;
1078
+ }
1079
+ const candidate = cls === 'augmentable' ? spliceAppend(disk, region, eol) : spliceReplace(disk, region);
1080
+ if (candidate === disk) {
1081
+ filesSkipped.push({ path: w.relative, reason: 'unchanged' });
1082
+ if (preview)
1083
+ previewPlan.push({ path: w.relative, status: 'unchanged' });
1084
+ continue;
1085
+ }
1086
+ if (preview || dryRun) {
1087
+ filesWritten.push(w.relative + (dryRun ? ' (dry run)' : ''));
1088
+ if (preview)
1089
+ previewPlan.push({ path: w.relative, status: 'would-augment' });
1090
+ continue;
1091
+ }
1092
+ if (authorityPreviewOnly) {
1093
+ // apply + materialize observe/off: honor authority — do NOT write; mirror the legacy
1094
+ // preview-only skip so the report does not falsely list it as written.
1095
+ filesSkipped.push({ path: w.relative, reason: `preview-only (materialize: ${manifestStatus.mode})` });
1096
+ continue;
1097
+ }
1098
+ assertSetupWritePath(w.path, perimeterManifest);
1099
+ writeFileSync(w.path, candidate);
1100
+ filesWritten.push(w.relative);
1101
+ continue;
1102
+ }
1103
+ if (cls === 'malformed') {
1104
+ filesSkipped.push({ path: w.relative, reason: 'malformed PB region — left untouched; fix the pb:region sentinels' });
1105
+ if (preview)
1106
+ previewPlan.push({ path: w.relative, status: 'needs-attention' });
1107
+ malformedRegionPaths.push(w.relative);
1108
+ continue;
1109
+ }
1110
+ // cls 'pb-managed' falls through to legacy re-projection; 'opt-out' (pb:no-augment) falls through to the user-owned skip.
1111
+ }
1112
+ // absent file → fall through to legacy whole-file CREATE.
1113
+ }
628
1114
  if (w.isAdapter && !shouldWriteAdapter(w.path, force)) {
629
- filesSkipped.push({ path: w.relative, reason: 'exists without auto-generated marker (use --force to overwrite)' });
1115
+ // User-owned: a file at an adapter path without our auto-gen MARKER is the
1116
+ // user's own file. Leave it untouched — never overwrite, never treat as drift
1117
+ // or log a TEN (TEN-2150). Relayed to the connect screen via userOwnedSkipped.
1118
+ filesSkipped.push({ path: w.relative, reason: 'user-owned — left untouched (pb won\'t overwrite your file)' });
1119
+ if (preview) {
1120
+ previewPlan.push({ path: w.relative, status: 'user-owned' });
1121
+ }
1122
+ else {
1123
+ userOwnedSkipped.push(w.relative);
1124
+ }
630
1125
  continue;
631
1126
  }
632
- if (dryRun) {
633
- filesWritten.push(w.relative + ' (dry run)');
1127
+ if (authorityPreviewOnly) {
1128
+ filesSkipped.push({
1129
+ path: w.relative,
1130
+ reason: `preview-only (materialize: ${manifestStatus.mode})`,
1131
+ });
1132
+ continue;
1133
+ }
1134
+ if (preview || dryRun) {
1135
+ // In preview/dry-run mode: check content to distinguish new/update/unchanged
1136
+ if (existsSync(w.path)) {
1137
+ const current = readFileSync(w.path, 'utf8');
1138
+ const nextNormalized = normalizeHandshakeContentForComparison(w.content);
1139
+ const currentNormalized = normalizeHandshakeContentForComparison(current);
1140
+ if (nextNormalized === currentNormalized) {
1141
+ filesSkipped.push({ path: w.relative, reason: 'unchanged' });
1142
+ if (preview)
1143
+ previewPlan.push({ path: w.relative, status: 'unchanged' });
1144
+ }
1145
+ else {
1146
+ filesWritten.push(w.relative + (dryRun ? ' (dry run)' : ''));
1147
+ if (preview)
1148
+ previewPlan.push({ path: w.relative, status: 'would-update' });
1149
+ }
1150
+ }
1151
+ else {
1152
+ filesWritten.push(w.relative + (dryRun ? ' (dry run)' : ''));
1153
+ if (preview)
1154
+ previewPlan.push({ path: w.relative, status: 'would-write' });
1155
+ }
634
1156
  continue;
635
1157
  }
1158
+ // ── WP-421 S3: defer tampered adapter writes (doneWhen #17) — classify pb-managed-clean vs
1159
+ // pb-managed-tampered, deferred not overwritten; post-loop resolves. --force bypasses the defer.
1160
+ if (w.isAdapter && !force) {
1161
+ const drift = classifyDriftBucket(w.path);
1162
+ if (drift && drift.bucket === 'pb-managed-tampered') {
1163
+ tamperedBucket.push({
1164
+ path: w.path,
1165
+ relative: w.relative,
1166
+ content: w.content,
1167
+ expectedHash: drift.expectedHash,
1168
+ actualHash: drift.actualHash,
1169
+ dirs: w.dirs,
1170
+ });
1171
+ // Do NOT write — defer until prompt/refusal resolves the file.
1172
+ continue;
1173
+ }
1174
+ if (drift && drift.bucket === 'pb-managed-clean') {
1175
+ cleanBucketPaths.push(w.relative);
1176
+ }
1177
+ }
1178
+ assertSetupWritePath(w.path, perimeterManifest);
636
1179
  if (w.dirs)
637
1180
  mkdirSync(w.dirs, { recursive: true });
1181
+ // WP-436 S3: resolve {{vocab:...}} tokens before writing projected adapter files only
1182
+ // (source-side stays tokenized). Fail-open: undefined vocabCtx falls back to canonicalKey literals.
1183
+ const resolvedContent = w.isAdapter
1184
+ ? replaceVocabTokens(w.content, handshakeVocabCtx)
1185
+ : w.content;
638
1186
  if (existsSync(w.path)) {
639
1187
  const current = readFileSync(w.path, 'utf8');
640
- const nextNormalized = normalizeHandshakeContentForComparison(w.content);
1188
+ const nextNormalized = normalizeHandshakeContentForComparison(resolvedContent);
641
1189
  const currentNormalized = normalizeHandshakeContentForComparison(current);
642
1190
  if (nextNormalized === currentNormalized) {
643
1191
  filesSkipped.push({ path: w.relative, reason: 'unchanged' });
644
1192
  continue;
645
1193
  }
646
1194
  }
647
- writeFileSync(w.path, w.content);
1195
+ writeFileSync(w.path, resolvedContent);
648
1196
  filesWritten.push(w.relative);
649
1197
  }
650
- // 8. Report
1198
+ // WP-776 S3f: the projected-hash flush back to the DB (setup.updateLastProjectedHash) is
1199
+ // deleted along with the rest of the setup-assets gateway routes — there is no DB-sourced
1200
+ // asset any more whose lastProjectedHash needs updating (dbAssetEntryId is always undefined
1201
+ // now that allSkills/allRules are filesystem-sourced).
1202
+ // Runs AFTER the hash flush (malformed files were never written, nothing to record). TEN-2155:
1203
+ // non-interactive apply refuses on a malformed region — gated on applyMode per STD-263 vi.
1204
+ if (applyMode && malformedRegionPaths.length > 0 && (options.noPrompt || !process.stdout.isTTY)) {
1205
+ throw new CLIError(`Malformed PB region in: ${malformedRegionPaths.join(', ')}`, {
1206
+ code: ErrorCode.VALIDATION_FAILED,
1207
+ category: 'validation',
1208
+ guidance: 'Fix the `<!-- pb:region:start -->` / `<!-- pb:region:end -->` sentinels (one balanced pair), then re-run `pb handshake`.',
1209
+ });
1210
+ }
1211
+ // ── WP-421 S3: tampered-bucket resolution (doneWhen #17), apply mode only — headless (--no-prompt
1212
+ // / non-TTY) refuses, exit non-zero. WP-776 S3d/S3f: the setup-assets system this resolution used
1213
+ // to offer as an "adopt" alternative (capture tampered edits as a personal-scoped draft via
1214
+ // setup.ingestSetupAsset) is deleted, and with it the only OTHER option besides overwriting —
1215
+ // per DEC-1771 (delete, never hide) there is no shim standing in for that capability. Revert
1216
+ // (re-project canonical content) is the only resolution left; this is a real capability loss
1217
+ // for anyone who was relying on "adopt" to preserve hand-edits, named here rather than silently
1218
+ // dropped. The refusal receipt (`setup.recordTamperRefusal`) is deleted along with the rest of
1219
+ // the setup-assets gateway routes — headless mode still refuses and reports, it just no longer
1220
+ // writes an audit row for the refusal.
1221
+ const revertedTamperedPaths = [];
1222
+ if (writeMode && tamperedBucket.length > 0) {
1223
+ const headless = options.noPrompt === true || !process.stdout.isTTY;
1224
+ if (headless) {
1225
+ // ── Headless refusal path (doneWhen #17) ────────────────────────────────
1226
+ logErr('');
1227
+ logErr(`pb handshake: ${tamperedBucket.length} PB-managed projection file(s) were edited downstream of the auto-gen marker.`);
1228
+ logErr('Headless mode (--no-prompt or no TTY) cannot confirm an overwrite — refusing.');
1229
+ logErr('');
1230
+ const refusedTamperedFiles = tamperedBucket.map((t) => ({
1231
+ path: t.relative,
1232
+ expectedHash: t.expectedHash,
1233
+ actualHash: t.actualHash,
1234
+ }));
1235
+ for (const refused of refusedTamperedFiles) {
1236
+ // Per #17: stderr enumerates each tampered file as
1237
+ // {path, expectedHash, actualHash, bucket}.
1238
+ logErr(` ${JSON.stringify({ ...refused, bucket: 'pb-managed-tampered' })}`);
1239
+ }
1240
+ logErr('');
1241
+ logErr('Re-run interactively to resolve, or use --force to overwrite (data loss).');
1242
+ // Surface the report counts before exit (visibility for CI logs).
1243
+ if (!quiet) {
1244
+ const refusalReport = {
1245
+ filesWritten,
1246
+ filesSkipped,
1247
+ matchedEntries,
1248
+ searchQueries: uniqueQueries,
1249
+ repo,
1250
+ codexWarnings: codexWarnings.length > 0 ? codexWarnings : undefined,
1251
+ adoptedCount: adoptedRulesCount,
1252
+ rejectedCount: rejectedRulesCount,
1253
+ personalRuleCount: personalRules.length > 0 ? personalRules.length : undefined,
1254
+ personalSkillCount: personalSkills.length > 0 ? personalSkills.length : undefined,
1255
+ registrySource,
1256
+ registryStale,
1257
+ userOwnedSkipped: userOwnedSkipped.length > 0 ? userOwnedSkipped : undefined,
1258
+ managedCleanCount: cleanBucketPaths.length || undefined,
1259
+ tamperedFiles: refusedTamperedFiles,
1260
+ leftoverFiles: leftoverFiles.length > 0 ? leftoverFiles : undefined,
1261
+ leftoverFilesTruncated: leftoverFilesTruncated || undefined, noProjectionAssets: noProjectionAssets.length > 0 ? noProjectionAssets : undefined, // same-line combine, shrink-only budget
1262
+ };
1263
+ process.stdout.write('\n');
1264
+ process.stdout.write(isJsonMode() ? JSON.stringify(toPublicJsonReport(refusalReport)) + '\n' : formatHandshakeReport(refusalReport) + '\n');
1265
+ }
1266
+ // Exit non-zero per #17.
1267
+ process.exit(1);
1268
+ }
1269
+ // ── Interactive path: confirm, then revert every tampered file ─────────────
1270
+ log('');
1271
+ log(`pb handshake: ${tamperedBucket.length} PB-managed projection file(s) were edited downstream of the auto-gen marker.`);
1272
+ log('These will be REVERTED (overwritten with canonical content) — there is no adopt/draft path any more.');
1273
+ const proceed = await promptConfirm({
1274
+ message: `Overwrite ${tamperedBucket.length} tampered file(s) with canonical content?`,
1275
+ initialValue: false,
1276
+ });
1277
+ if (proceed) {
1278
+ for (const tamper of tamperedBucket) {
1279
+ log('');
1280
+ log(`Reverting: ${tamper.relative}`);
1281
+ log(` expected: ${tamper.expectedHash}`);
1282
+ log(` actual: ${tamper.actualHash}`);
1283
+ // Re-project canonical content over the tampered file.
1284
+ // WP-436 S3: resolve vocab tokens before writing (all tampered files are adapters).
1285
+ if (tamper.dirs)
1286
+ mkdirSync(tamper.dirs, { recursive: true });
1287
+ assertSetupWritePath(tamper.path, perimeterManifest);
1288
+ writeFileSync(tamper.path, replaceVocabTokens(tamper.content, handshakeVocabCtx));
1289
+ revertedTamperedPaths.push(tamper.relative);
1290
+ }
1291
+ }
1292
+ else {
1293
+ logErr('Skipped — tampered files left as-is; re-run to resolve.');
1294
+ process.exit(1); // doneWhen #17: never exit 0 with a tampered file unresolved (codex review round 3)
1295
+ }
1296
+ }
1297
+ // DEC-1690: a dormant (gate-failed) asset is simply not projected — dbAssets already comes
1298
+ // from the server's activeAssets list. The WP-379 S4 / WP-426 E4 on-disk marker/rename/restore
1299
+ // machinery (and its .authoring-sync.json registries) is retired: nothing to reconcile.
1300
+ // 8. User-owned files left untouched are NOT drift (TEN-2150) — a marker-less adapter-path
1301
+ // file is the user's own; handshake never wrote it, so no "sync", no draft TEN, just a benign
1302
+ // "Skipped:" surfaced via report.userOwnedSkipped.
1303
+ // 8. Case-collision and dormant-drift TENs are gone (coordinator ruling, PR #912 round 10) —
1304
+ // they existed only to audit automated deletions that no longer happen; `report.leftoverFiles`
1305
+ // below is the single reporting surface now.
1306
+ // WP-776 S3f: the setup-transition receipt (setup.getCurrentSetupState / setup.recordTransition)
1307
+ // and the setup materialization receipt (setup.materializeSetup) are deleted along with the
1308
+ // rest of the setup-assets gateway routes — both were fail-open advisory writes recording
1309
+ // authority-mode transitions and materialized-asset counts for a system that no longer exists.
1310
+ // 9. Report
651
1311
  const report = {
652
1312
  filesWritten,
653
1313
  filesSkipped,
@@ -655,18 +1315,35 @@ export async function runHandshake(options = {}) {
655
1315
  searchQueries: uniqueQueries,
656
1316
  repo,
657
1317
  codexWarnings: codexWarnings.length > 0 ? codexWarnings : undefined,
658
- chainRulesStats: chainRulesStats ?? undefined,
659
- chainGaps: chainGaps.length > 0 ? chainGaps : undefined,
660
1318
  adoptedCount: adoptedRulesCount,
661
1319
  rejectedCount: rejectedRulesCount,
662
1320
  personalRuleCount: personalRules.length > 0 ? personalRules.length : undefined,
663
1321
  personalSkillCount: personalSkills.length > 0 ? personalSkills.length : undefined,
664
1322
  registrySource,
665
1323
  registryStale,
1324
+ preview: preview ? true : undefined,
1325
+ previewPlan: preview && previewPlan.length > 0 ? previewPlan : undefined,
1326
+ userOwnedSkipped: userOwnedSkipped.length > 0 ? userOwnedSkipped : undefined,
1327
+ // WP-421 S3: three-bucket drift report (doneWhen #17). PB-managed-clean is
1328
+ // the count of files whose marker + hash matched. Tampered files were
1329
+ // resolved (reverted) above and are reported separately. WP-776 S3d/S3f:
1330
+ // adoptedTamperedPaths is gone — "adopt" is no longer an option (see the
1331
+ // tampered-bucket resolution comment above).
1332
+ managedCleanCount: cleanBucketPaths.length > 0 ? cleanBucketPaths.length : undefined,
1333
+ revertedTamperedPaths: revertedTamperedPaths.length > 0 ? revertedTamperedPaths : undefined,
1334
+ // REPORT-ONLY leftover-file listing (coordinator ruling, PR #912 round 10) — the human removes these.
1335
+ leftoverFiles: leftoverFiles.length > 0 ? leftoverFiles : undefined,
1336
+ leftoverFilesTruncated: leftoverFilesTruncated || undefined, noProjectionAssets: noProjectionAssets.length > 0 ? noProjectionAssets : undefined, // WP-660 S2 combine
666
1337
  };
667
1338
  if (!quiet) {
668
1339
  process.stdout.write('\n');
669
- process.stdout.write(formatHandshakeReport(report) + '\n');
1340
+ process.stdout.write(isJsonMode() ? JSON.stringify(toPublicJsonReport(report)) + '\n' : formatHandshakeReport(report) + '\n');
670
1341
  }
1342
+ // Return the report so non-UI callers (e.g. prepareConnectContext) can surface
1343
+ // skipped/user-owned files without re-deriving the skip logic (TEN-2107).
1344
+ return report;
671
1345
  }
1346
+ // WP-426 E3/E4: exported test-only surface (not part of the public CLI API). setupAuthoringPath
1347
+ // and loadAuthoringSyncState are gone with the setup-authoring sync machinery (WP-776 S3d/S3f).
1348
+ export const __test = { MARKER };
672
1349
  //# sourceMappingURL=handshake.js.map