@unbrained/pm-cli 2026.10.12 → 2026.10.13

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 (708) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +27 -0
  3. package/dist/cli/after-command-context-usage.d.ts +8 -8
  4. package/dist/cli/bundle-integrity.d.ts +23 -23
  5. package/dist/cli/commander-usage.d.ts +26 -26
  6. package/dist/cli/commander-usage.js +2 -2
  7. package/dist/cli/error-guidance.d.ts +158 -163
  8. package/dist/cli/error-guidance.js +2 -2
  9. package/dist/cli/extension-command-help.d.ts +68 -68
  10. package/dist/cli/extension-command-options.d.ts +20 -20
  11. package/dist/cli/extension-recovery.d.ts +20 -20
  12. package/dist/cli/help-content.d.ts +16 -16
  13. package/dist/cli/help-content.js +2 -2
  14. package/dist/cli/help-json-payload.d.ts +40 -40
  15. package/dist/cli/invocation-profile.d.ts +8 -8
  16. package/dist/cli/main.d.ts +165 -165
  17. package/dist/cli/main.js +1 -1
  18. package/dist/cli/migration-gates.d.ts +20 -20
  19. package/dist/cli/register-list-query.d.ts +4 -4
  20. package/dist/cli/register-mutation-options.d.ts +2 -2
  21. package/dist/cli/register-operations.d.ts +66 -66
  22. package/dist/cli/register-setup.d.ts +1 -1
  23. package/dist/cli/register-structured-mutation.d.ts +3 -3
  24. package/dist/cli/register-structured-mutation.js +1 -1
  25. package/dist/cli/runtime/activation.d.ts +3 -3
  26. package/dist/cli/runtime/invocation-options.js +1 -1
  27. package/dist/cli/runtime/selection.d.ts +6 -6
  28. package/dist/cli/runtime-compatibility-boundary.d.ts +12 -12
  29. package/dist/cli-bundle/bundle-manifest.json +1 -1
  30. package/dist/cli-bundle/chunks/{chunk-MHPU2LDF.js → chunk-AM2XOZKE.js} +2 -2
  31. package/dist/cli-bundle/chunks/{chunk-UABZJXIS.js → chunk-APWPC4ZZ.js} +2 -2
  32. package/dist/cli-bundle/chunks/chunk-DJDRHJBP.js +234 -0
  33. package/dist/cli-bundle/chunks/{chunk-B465HPS5.js → chunk-DUK5DHI6.js} +2 -2
  34. package/dist/cli-bundle/chunks/chunk-HXHFKXLV.js +2 -0
  35. package/dist/cli-bundle/chunks/chunk-IFPJDJUM.js +20 -0
  36. package/dist/cli-bundle/chunks/{chunk-QM3M7GB5.js → chunk-LBDWFWPK.js} +2 -2
  37. package/dist/cli-bundle/chunks/{chunk-X2I2EEAS.js → chunk-N5EXRYCZ.js} +2 -2
  38. package/dist/cli-bundle/chunks/chunk-PSNS537F.js +30 -0
  39. package/dist/cli-bundle/chunks/{chunk-3LQTJN4J.js → chunk-RL45OYTL.js} +2 -2
  40. package/dist/cli-bundle/chunks/{chunk-DT3KUUKY.js → chunk-UBTYYZIE.js} +49 -49
  41. package/dist/cli-bundle/chunks/chunk-WYZGZV2M.js +2 -0
  42. package/dist/cli-bundle/chunks/{chunk-GUVKPOY6.js → chunk-YH6H3UVE.js} +10 -10
  43. package/dist/cli-bundle/chunks/{register-list-query-OR33UEML.js → register-list-query-BJ742QOR.js} +2 -2
  44. package/dist/cli-bundle/chunks/{register-mutation-R34EJ3NH.js → register-mutation-GGGBRIH2.js} +3 -3
  45. package/dist/cli-bundle/chunks/{register-operations-UHSMEHSF.js → register-operations-E6HXYHNM.js} +2 -2
  46. package/dist/cli-bundle/chunks/{register-setup-5E3PT22L.js → register-setup-4ZVTVEPY.js} +2 -2
  47. package/dist/cli-bundle/focused-chunks/{chunk-TS46OZD5.js → chunk-3LQEBXU5.js} +12 -12
  48. package/dist/cli-bundle/focused-chunks/{chunk-AJG3DBXR.js → chunk-6BTUISKV.js} +2 -2
  49. package/dist/cli-bundle/focused-chunks/chunk-73UNAJHD.js +2 -0
  50. package/dist/cli-bundle/focused-chunks/{chunk-RNAWRTQV.js → chunk-DVK7VKZL.js} +2 -2
  51. package/dist/cli-bundle/focused-chunks/{chunk-7QIZB2F2.js → chunk-F5J3ATMV.js} +14 -14
  52. package/dist/cli-bundle/focused-chunks/chunk-IIKFTJVC.js +2 -0
  53. package/dist/cli-bundle/focused-chunks/chunk-IOTNG6CN.js +2 -0
  54. package/dist/cli-bundle/focused-chunks/{chunk-Z4T3637Y.js → chunk-KGFRQ34R.js} +2 -2
  55. package/dist/cli-bundle/focused-chunks/chunk-NNW5BS5L.js +3 -0
  56. package/dist/cli-bundle/focused-chunks/{chunk-VBTLX5SN.js → chunk-QMNAY25P.js} +62 -62
  57. package/dist/cli-bundle/focused-chunks/{chunk-CYEZLKLL.js → chunk-R23T7GFZ.js} +2 -2
  58. package/dist/cli-bundle/focused-chunks/chunk-RAA7SVRA.js +8 -0
  59. package/dist/cli-bundle/focused-chunks/{chunk-SV6YYZLR.js → chunk-RU6GCFN3.js} +2 -2
  60. package/dist/cli-bundle/focused-chunks/{chunk-YCOJLIDI.js → chunk-S6ITXQ5T.js} +4 -4
  61. package/dist/cli-bundle/focused-chunks/{chunk-OGOLIS5R.js → chunk-SOB7X4FJ.js} +2 -2
  62. package/dist/cli-bundle/focused-chunks/chunk-UPJA45K7.js +26 -0
  63. package/dist/cli-bundle/main.js +20 -20
  64. package/dist/cli-bundle/sdk-authoring.js +1 -1
  65. package/dist/cli-bundle/sdk-contracts.js +2 -2
  66. package/dist/cli-bundle/sdk-core.js +23 -23
  67. package/dist/cli-bundle/sdk-governance.js +1 -1
  68. package/dist/cli-bundle/sdk-graph.js +1 -1
  69. package/dist/cli-bundle/sdk-merge.js +51 -51
  70. package/dist/cli-bundle/sdk-query.js +1 -1
  71. package/dist/cli-bundle/sdk-runtime.js +1 -1
  72. package/dist/cli-bundle/sdk-testing.js +1 -1
  73. package/dist/cli-bundle/sdk.js +8 -8
  74. package/dist/cli.d.ts +4 -4
  75. package/dist/core/checkpoint/checkpoint-gc.d.ts +32 -32
  76. package/dist/core/checkpoint/mutation-checkpoint.d.ts +34 -34
  77. package/dist/core/config/nested-settings.d.ts +26 -26
  78. package/dist/core/config/positional-value.d.ts +16 -16
  79. package/dist/core/diagnostics/remediation.d.ts +6 -6
  80. package/dist/core/diagnostics/remediation.js +1 -1
  81. package/dist/core/extensions/activation-summary-markdown.d.ts +6 -6
  82. package/dist/core/extensions/activation-summary.d.ts +54 -54
  83. package/dist/core/extensions/activation-transaction.d.ts +7 -7
  84. package/dist/core/extensions/capability-usage.d.ts +26 -26
  85. package/dist/core/extensions/command-hook-context.d.ts +26 -26
  86. package/dist/core/extensions/contribution-inventory.d.ts +21 -21
  87. package/dist/core/extensions/extension-candidate.d.ts +14 -14
  88. package/dist/core/extensions/extension-capability-aliases.d.ts +2 -2
  89. package/dist/core/extensions/extension-policy.d.ts +80 -80
  90. package/dist/core/extensions/extension-types.d.ts +1294 -1285
  91. package/dist/core/extensions/extension-types.js +1 -1
  92. package/dist/core/extensions/flag-definition-validation.d.ts +4 -4
  93. package/dist/core/extensions/item-fields.d.ts +3 -2
  94. package/dist/core/extensions/item-fields.js +1 -1
  95. package/dist/core/extensions/loader.d.ts +36 -36
  96. package/dist/core/extensions/loader.js +1 -1
  97. package/dist/core/extensions/manifest-schema.d.ts +16 -16
  98. package/dist/core/extensions/module-graph-snapshot.d.ts +8 -8
  99. package/dist/core/extensions/read-output-contract.d.ts +5 -0
  100. package/dist/core/extensions/read-output-contract.js +2 -0
  101. package/dist/core/extensions/registration-values.d.ts +1 -1
  102. package/dist/core/extensions/reserved-host-flags.d.ts +6 -6
  103. package/dist/core/extensions/version-compat.d.ts +10 -10
  104. package/dist/core/fs/fs-utils.d.ts +1 -1
  105. package/dist/core/fs/host-environment-errors.d.ts +14 -14
  106. package/dist/core/governance/content-fields.d.ts +31 -31
  107. package/dist/core/governance/issue-codes.d.ts +27 -27
  108. package/dist/core/governance/metadata-coverage.d.ts +91 -91
  109. package/dist/core/history/drift-scan.d.ts +26 -26
  110. package/dist/core/history/event-index.d.ts +41 -41
  111. package/dist/core/history/history-compact-bulk.d.ts +22 -22
  112. package/dist/core/history/history-diff.d.ts +22 -22
  113. package/dist/core/history/history-rewrite.d.ts +66 -66
  114. package/dist/core/history/history-storage-stats.d.ts +31 -31
  115. package/dist/core/history/history-stream-policy.d.ts +12 -12
  116. package/dist/core/history/history.d.ts +22 -22
  117. package/dist/core/history/identity.d.ts +6 -6
  118. package/dist/core/history/operation-contract.d.ts +9 -9
  119. package/dist/core/history/projection.d.ts +15 -15
  120. package/dist/core/history/read.d.ts +4 -4
  121. package/dist/core/history/replay.d.ts +51 -49
  122. package/dist/core/history/replay.js +1 -1
  123. package/dist/core/history/workspace-history.d.ts +101 -101
  124. package/dist/core/io/bulk-ids-input.d.ts +4 -4
  125. package/dist/core/item/actionability.d.ts +40 -40
  126. package/dist/core/item/id.d.ts +3 -3
  127. package/dist/core/item/item-format-version.d.ts +8 -8
  128. package/dist/core/item/item-format.d.ts +35 -35
  129. package/dist/core/item/item-type-definition.d.ts +2 -2
  130. package/dist/core/item/parent-reference-policy.d.ts +1 -1
  131. package/dist/core/item/parse.d.ts +12 -12
  132. package/dist/core/item/sprint-release-format.d.ts +2 -2
  133. package/dist/core/item/status-filter.d.ts +4 -4
  134. package/dist/core/item/toon-decode.d.ts +9 -9
  135. package/dist/core/item/type-registry.d.ts +40 -40
  136. package/dist/core/lock/lock-gc.d.ts +50 -50
  137. package/dist/core/lock/lock.d.ts +37 -37
  138. package/dist/core/output/mutation-projection.d.ts +6 -6
  139. package/dist/core/output/output-control.d.ts +4 -4
  140. package/dist/core/output/output.d.ts +40 -40
  141. package/dist/core/output/query-summary.d.ts +5 -5
  142. package/dist/core/packages/manifest.d.ts +50 -50
  143. package/dist/core/policy/workflow-policy-schema.d.ts +306 -306
  144. package/dist/core/policy/workflow-policy-store.d.ts +7 -7
  145. package/dist/core/policy/workflow-policy.d.ts +81 -81
  146. package/dist/core/profile/profile-describe.d.ts +40 -40
  147. package/dist/core/profile/profile-lint.d.ts +20 -20
  148. package/dist/core/profile/profile-plan.d.ts +84 -84
  149. package/dist/core/profile/profile-presets.d.ts +52 -52
  150. package/dist/core/reproducibility/context.d.ts +6 -6
  151. package/dist/core/schema/fields-file.d.ts +54 -54
  152. package/dist/core/schema/item-types-file.d.ts +36 -36
  153. package/dist/core/schema/runtime-field-values.d.ts +2 -2
  154. package/dist/core/schema/runtime-schema.d.ts +86 -86
  155. package/dist/core/schema/status-defs-file.d.ts +36 -36
  156. package/dist/core/schema/type-inference.d.ts +14 -14
  157. package/dist/core/schema/type-workflows.d.ts +22 -22
  158. package/dist/core/search/background-refresh.d.ts +9 -9
  159. package/dist/core/search/bm25.d.ts +19 -19
  160. package/dist/core/search/cache.d.ts +35 -35
  161. package/dist/core/search/corpus.d.ts +12 -12
  162. package/dist/core/search/embedding-batches.d.ts +48 -48
  163. package/dist/core/search/eval.d.ts +49 -49
  164. package/dist/core/search/http-client.d.ts +38 -38
  165. package/dist/core/search/providers.d.ts +41 -41
  166. package/dist/core/search/relevance.d.ts +20 -20
  167. package/dist/core/search/semantic-defaults.d.ts +8 -8
  168. package/dist/core/search/staleness.d.ts +4 -4
  169. package/dist/core/search/vector-stores.d.ts +78 -78
  170. package/dist/core/search/vectorization-metadata.d.ts +6 -6
  171. package/dist/core/sentry/helpers.d.ts +15 -15
  172. package/dist/core/sentry/instrument.d.ts +40 -40
  173. package/dist/core/session/session-state.d.ts +32 -32
  174. package/dist/core/shared/agent-session-context.d.ts +14 -14
  175. package/dist/core/shared/author.d.ts +128 -128
  176. package/dist/core/shared/command-types.d.ts +40 -40
  177. package/dist/core/shared/conflict-markers.d.ts +6 -6
  178. package/dist/core/shared/constants.d.ts +13 -13
  179. package/dist/core/shared/errors.d.ts +194 -183
  180. package/dist/core/shared/errors.js +1 -1
  181. package/dist/core/shared/secret-rules.d.ts +97 -97
  182. package/dist/core/shared/serial-queue.d.ts +8 -8
  183. package/dist/core/shared/split-comma-list.d.ts +6 -6
  184. package/dist/core/shared/time.d.ts +23 -23
  185. package/dist/core/store/item-format-migration.d.ts +10 -10
  186. package/dist/core/store/item-metadata-cache.d.ts +38 -38
  187. package/dist/core/store/item-metadata-query-index.d.ts +79 -79
  188. package/dist/core/store/item-metadata-read-work.d.ts +6 -6
  189. package/dist/core/store/item-store.d.ts +110 -110
  190. package/dist/core/store/paths.d.ts +2 -2
  191. package/dist/core/store/settings-read-cache.d.ts +12 -12
  192. package/dist/core/store/settings-validator.d.ts +165 -165
  193. package/dist/core/store/settings.d.ts +59 -59
  194. package/dist/core/telemetry/observability.d.ts +17 -17
  195. package/dist/core/telemetry/policy.d.ts +3 -3
  196. package/dist/core/telemetry/runtime.d.ts +241 -241
  197. package/dist/core/test/background-runs.d.ts +185 -185
  198. package/dist/core/test/item-test-run-tracking.d.ts +6 -6
  199. package/dist/core/test/run-selectors.d.ts +18 -18
  200. package/dist/core/validate/fix-planning.d.ts +50 -50
  201. package/dist/core/validate/missing-by-type.d.ts +4 -4
  202. package/dist/core/validate/missing-link-owners.d.ts +30 -30
  203. package/dist/core/validate/stale-file-classification.d.ts +8 -8
  204. package/dist/mcp/http-server.d.ts +28 -28
  205. package/dist/mcp/legacy-adapter.d.ts +33 -33
  206. package/dist/mcp/runtime-capabilities.d.ts +16 -16
  207. package/dist/mcp/server.d.ts +50 -50
  208. package/dist/mcp/tool-definitions.d.ts +36 -36
  209. package/dist/sdk/agent/closed-domain-contracts.d.ts +18 -18
  210. package/dist/sdk/agent/command-recovery.d.ts +4 -0
  211. package/dist/sdk/agent/command-recovery.js +1 -1
  212. package/dist/sdk/agent/identity-config.d.ts +32 -32
  213. package/dist/sdk/agent/item-addressing.d.ts +8 -8
  214. package/dist/sdk/agent/refusal-closure-census.d.ts +34 -34
  215. package/dist/sdk/agent/refusal-closure.d.ts +42 -42
  216. package/dist/sdk/agent/refusal-corpus-contracts.d.ts +46 -46
  217. package/dist/sdk/agent/refusal-reachability.d.ts +112 -112
  218. package/dist/sdk/agent/subcommand-recovery.d.ts +25 -25
  219. package/dist/sdk/agent/task-transcript-contracts.d.ts +30 -30
  220. package/dist/sdk/agent/tracker-preflight-contracts.d.ts +38 -38
  221. package/dist/sdk/agent-capability-contracts.d.ts +37 -37
  222. package/dist/sdk/annotations.d.ts +106 -106
  223. package/dist/sdk/author-attribution.d.ts +76 -76
  224. package/dist/sdk/authoring.d.ts +1 -1
  225. package/dist/sdk/authoring.js +1 -1
  226. package/dist/sdk/cli-bootstrap.d.ts +70 -70
  227. package/dist/sdk/cli-contracts/agent-output-contracts.d.ts +63 -63
  228. package/dist/sdk/cli-contracts/command-aliases.d.ts +14 -14
  229. package/dist/sdk/cli-contracts/command-exit-contracts.d.ts +70 -70
  230. package/dist/sdk/cli-contracts/commander-types.d.ts +17 -17
  231. package/dist/sdk/cli-contracts/completeness.d.ts +26 -26
  232. package/dist/sdk/cli-contracts/enum-contracts.d.ts +5 -5
  233. package/dist/sdk/cli-contracts/flag-contracts.d.ts +32 -32
  234. package/dist/sdk/cli-contracts/flag-contracts.js +1 -1
  235. package/dist/sdk/cli-contracts/flag-lexicon-contracts.d.ts +42 -42
  236. package/dist/sdk/cli-contracts/grammar-contracts.d.ts +84 -84
  237. package/dist/sdk/cli-contracts/grammar-contracts.js +1 -1
  238. package/dist/sdk/cli-contracts/registration-helpers.d.ts +36 -36
  239. package/dist/sdk/cli-contracts/runtime-contracts.d.ts +290 -294
  240. package/dist/sdk/cli-contracts/runtime-contracts.js +1 -1
  241. package/dist/sdk/cli-contracts/schemas/assurance-definition.d.ts +793 -793
  242. package/dist/sdk/cli-contracts/tool-option-contracts.d.ts +391 -391
  243. package/dist/sdk/cli-contracts/tool-parameter-tables.d.ts +6 -6
  244. package/dist/sdk/cli-contracts/tool-schema.d.ts +54 -54
  245. package/dist/sdk/cli-contracts/tool-schema.js +1 -1
  246. package/dist/sdk/cli-contracts/typed-action-inputs.d.ts +24 -24
  247. package/dist/sdk/comments.d.ts +44 -44
  248. package/dist/sdk/compile-cache.d.ts +4 -4
  249. package/dist/sdk/completion/shared.d.ts +22 -22
  250. package/dist/sdk/compose.d.ts +156 -156
  251. package/dist/sdk/config.d.ts +123 -123
  252. package/dist/sdk/context/semantic-session-attribution.d.ts +14 -14
  253. package/dist/sdk/context/usage-ledger.d.ts +20 -20
  254. package/dist/sdk/context-intent-contracts.d.ts +50 -50
  255. package/dist/sdk/context-intent-contracts.js +1 -1
  256. package/dist/sdk/context-intent-runtime.d.ts +8 -8
  257. package/dist/sdk/context-packing.d.ts +78 -78
  258. package/dist/sdk/context-relevance.d.ts +189 -180
  259. package/dist/sdk/context-relevance.js +1 -1
  260. package/dist/sdk/context-signal-store.d.ts +84 -84
  261. package/dist/sdk/context-usage.d.ts +92 -92
  262. package/dist/sdk/corpus-shape.d.ts +101 -101
  263. package/dist/sdk/define.d.ts +2 -2
  264. package/dist/sdk/dependencies.d.ts +116 -116
  265. package/dist/sdk/dependency-flag-validation.d.ts +14 -12
  266. package/dist/sdk/dependency-flag-validation.js +1 -1
  267. package/dist/sdk/dependency-provenance.d.ts +30 -30
  268. package/dist/sdk/docs.d.ts +32 -32
  269. package/dist/sdk/duplicates.d.ts +21 -21
  270. package/dist/sdk/environment/agent-environment.d.ts +196 -196
  271. package/dist/sdk/environment/project-runtime-compatibility.d.ts +56 -56
  272. package/dist/sdk/environment/source-context.d.ts +6 -6
  273. package/dist/sdk/error-code-catalog.d.ts +40 -40
  274. package/dist/sdk/errors.d.ts +29 -29
  275. package/dist/sdk/eval.d.ts +45 -45
  276. package/dist/sdk/extension/author-manifest.d.ts +14 -14
  277. package/dist/sdk/extension/bundled-catalog.d.ts +7 -7
  278. package/dist/sdk/extension/describe.d.ts +36 -36
  279. package/dist/sdk/extension/doctor.d.ts +29 -29
  280. package/dist/sdk/extension/install-plan.d.ts +55 -55
  281. package/dist/sdk/extension/install-receipts.d.ts +2 -2
  282. package/dist/sdk/extension/install-runtime.d.ts +8 -8
  283. package/dist/sdk/extension/install-snapshot.d.ts +14 -14
  284. package/dist/sdk/extension/install-sources.d.ts +96 -96
  285. package/dist/sdk/extension/managed-state.d.ts +66 -66
  286. package/dist/sdk/extension/migrations.d.ts +82 -82
  287. package/dist/sdk/extension/output-ownership.d.ts +24 -24
  288. package/dist/sdk/extension/runtime-summary.d.ts +5 -5
  289. package/dist/sdk/extension/scaffold.d.ts +12 -12
  290. package/dist/sdk/extension/shared.d.ts +15 -15
  291. package/dist/sdk/extension/source-resolution.d.ts +30 -30
  292. package/dist/sdk/extension/static-inventory.d.ts +42 -42
  293. package/dist/sdk/extension/update-check.d.ts +10 -10
  294. package/dist/sdk/extension.d.ts +320 -320
  295. package/dist/sdk/files.d.ts +157 -157
  296. package/dist/sdk/flag-invocation-contracts.d.ts +44 -44
  297. package/dist/sdk/generated/generated-error-code-catalog-part-1.js +1 -1
  298. package/dist/sdk/generated/generated-error-code-catalog-part-2.js +1 -1
  299. package/dist/sdk/governance/artifact-ledgers.d.ts +35 -35
  300. package/dist/sdk/governance/assurance-action.d.ts +68 -68
  301. package/dist/sdk/governance/assurance-action.js +1 -1
  302. package/dist/sdk/governance/assurance-mutation-error.d.ts +36 -36
  303. package/dist/sdk/governance/assurance-presets.d.ts +24 -24
  304. package/dist/sdk/governance/assurance-runtime.d.ts +14 -14
  305. package/dist/sdk/governance/assurance.d.ts +353 -353
  306. package/dist/sdk/governance/boundary-fixtures.d.ts +60 -60
  307. package/dist/sdk/governance/closure-timestamps.d.ts +9 -9
  308. package/dist/sdk/governance/coverage-assurance.d.ts +10 -10
  309. package/dist/sdk/governance/defect-recurrence-coverage.d.ts +75 -75
  310. package/dist/sdk/governance/defect-recurrence-graph.d.ts +18 -18
  311. package/dist/sdk/governance/defect-recurrence.d.ts +186 -181
  312. package/dist/sdk/governance/defect-recurrence.js +1 -1
  313. package/dist/sdk/governance/extension-host-version.d.ts +16 -16
  314. package/dist/sdk/governance/gc.d.ts +48 -48
  315. package/dist/sdk/governance/health-merge-evidence.d.ts +5 -5
  316. package/dist/sdk/governance/health.d.ts +188 -188
  317. package/dist/sdk/governance/hierarchy-validation.d.ts +13 -13
  318. package/dist/sdk/governance/linked-file-report.d.ts +26 -26
  319. package/dist/sdk/governance/merge-receipt-history.d.ts +36 -36
  320. package/dist/sdk/governance/provenance-health.d.ts +64 -64
  321. package/dist/sdk/governance/reindex.d.ts +89 -89
  322. package/dist/sdk/governance/reliability.d.ts +56 -56
  323. package/dist/sdk/governance/stale-work.d.ts +22 -22
  324. package/dist/sdk/governance/status-role-diagnostics.d.ts +12 -12
  325. package/dist/sdk/governance/storage-integrity.d.ts +54 -54
  326. package/dist/sdk/governance/tracked-runtime-cache.d.ts +10 -10
  327. package/dist/sdk/governance/upgrade.d.ts +104 -104
  328. package/dist/sdk/governance/validate-history-drift.d.ts +2 -2
  329. package/dist/sdk/governance/validate-item-reader.d.ts +6 -6
  330. package/dist/sdk/governance/validate.d.ts +191 -191
  331. package/dist/sdk/governance/workflow-completeness.d.ts +15 -15
  332. package/dist/sdk/governance/workflow-policy.d.ts +28 -28
  333. package/dist/sdk/governance/workspace-position.d.ts +46 -46
  334. package/dist/sdk/graph/adapter.d.ts +66 -66
  335. package/dist/sdk/graph/analytics.d.ts +54 -54
  336. package/dist/sdk/graph/assembly.d.ts +80 -80
  337. package/dist/sdk/graph/cache.d.ts +29 -29
  338. package/dist/sdk/graph/cardinality-integrity.d.ts +13 -0
  339. package/dist/sdk/graph/cardinality-integrity.js +2 -0
  340. package/dist/sdk/graph/centrality.d.ts +34 -34
  341. package/dist/sdk/graph/conformance.d.ts +33 -33
  342. package/dist/sdk/graph/deadline-scheduling.d.ts +58 -58
  343. package/dist/sdk/graph/durable-cache.d.ts +26 -26
  344. package/dist/sdk/graph/governance.d.ts +165 -165
  345. package/dist/sdk/graph/hierarchy-integrity.d.ts +52 -52
  346. package/dist/sdk/graph/index.d.ts +1 -0
  347. package/dist/sdk/graph/index.js +1 -1
  348. package/dist/sdk/graph/lifecycle-coverage.d.ts +17 -17
  349. package/dist/sdk/graph/mutation-advisory.d.ts +11 -11
  350. package/dist/sdk/graph/query-contracts.d.ts +10 -10
  351. package/dist/sdk/graph/remediation.d.ts +25 -25
  352. package/dist/sdk/graph/run.d.ts +392 -392
  353. package/dist/sdk/graph/scheduling.d.ts +38 -38
  354. package/dist/sdk/graph/traversal.d.ts +14 -14
  355. package/dist/sdk/guide-topics.d.ts +32 -32
  356. package/dist/sdk/guide.d.ts +62 -62
  357. package/dist/sdk/history/attestation-command.d.ts +12 -12
  358. package/dist/sdk/history/attestation-contract.d.ts +78 -78
  359. package/dist/sdk/history/attestation-scan.d.ts +6 -6
  360. package/dist/sdk/history/maintenance.d.ts +46 -46
  361. package/dist/sdk/history/salvage.d.ts +18 -18
  362. package/dist/sdk/history/subject.d.ts +9 -9
  363. package/dist/sdk/history-analytics.d.ts +84 -84
  364. package/dist/sdk/history-compact.d.ts +103 -103
  365. package/dist/sdk/history-mcp.d.ts +8 -8
  366. package/dist/sdk/history-provenance.d.ts +59 -59
  367. package/dist/sdk/history-read.d.ts +36 -36
  368. package/dist/sdk/history-redact.d.ts +78 -78
  369. package/dist/sdk/history-repair.d.ts +158 -158
  370. package/dist/sdk/history-repair.js +1 -1
  371. package/dist/sdk/improvement-ledger.d.ts +102 -102
  372. package/dist/sdk/init-agent-guidance.d.ts +70 -70
  373. package/dist/sdk/init.d.ts +152 -152
  374. package/dist/sdk/item-children.d.ts +28 -28
  375. package/dist/sdk/item-schedule.d.ts +12 -12
  376. package/dist/sdk/item-transaction.d.ts +100 -100
  377. package/dist/sdk/learnings.d.ts +42 -42
  378. package/dist/sdk/lifecycle/append.d.ts +14 -14
  379. package/dist/sdk/lifecycle/claim.d.ts +60 -60
  380. package/dist/sdk/lifecycle/close-many.d.ts +94 -94
  381. package/dist/sdk/lifecycle/close.d.ts +27 -27
  382. package/dist/sdk/lifecycle/copy.d.ts +18 -18
  383. package/dist/sdk/lifecycle/core-field-recovery.d.ts +7 -0
  384. package/dist/sdk/lifecycle/core-field-recovery.js +2 -0
  385. package/dist/sdk/lifecycle/create.d.ts +82 -82
  386. package/dist/sdk/lifecycle/create.js +1 -1
  387. package/dist/sdk/lifecycle/delete.d.ts +28 -28
  388. package/dist/sdk/lifecycle/focus.d.ts +10 -10
  389. package/dist/sdk/lifecycle/hierarchy-mutation-lock.d.ts +10 -10
  390. package/dist/sdk/lifecycle/hierarchy-mutation-lock.js +1 -1
  391. package/dist/sdk/lifecycle/legacy-none-tokens.d.ts +54 -54
  392. package/dist/sdk/lifecycle/lifecycle-transitions.d.ts +4 -4
  393. package/dist/sdk/lifecycle/mcp-actions.d.ts +10 -10
  394. package/dist/sdk/lifecycle/mutation-command-options.d.ts +116 -116
  395. package/dist/sdk/lifecycle/mutation-facet-contracts.d.ts +6 -0
  396. package/dist/sdk/lifecycle/mutation-facet-contracts.js +2 -0
  397. package/dist/sdk/lifecycle/plan-mutation-receipt.d.ts +42 -42
  398. package/dist/sdk/lifecycle/plan.d.ts +217 -217
  399. package/dist/sdk/lifecycle/reopen.d.ts +29 -24
  400. package/dist/sdk/lifecycle/reopen.js +1 -1
  401. package/dist/sdk/lifecycle/repeatable-metadata-parsers.d.ts +3 -3
  402. package/dist/sdk/lifecycle/restore.d.ts +33 -33
  403. package/dist/sdk/lifecycle/shared-unset-fields.d.ts +19 -19
  404. package/dist/sdk/lifecycle/task-composition.d.ts +4 -4
  405. package/dist/sdk/lifecycle/update-many.d.ts +79 -79
  406. package/dist/sdk/lifecycle/update.d.ts +131 -132
  407. package/dist/sdk/lifecycle/update.js +2 -2
  408. package/dist/sdk/lifecycle-completion.d.ts +22 -22
  409. package/dist/sdk/lifecycle-policy.d.ts +52 -52
  410. package/dist/sdk/linked-artifacts.d.ts +69 -69
  411. package/dist/sdk/mcp/apps.d.ts +32 -32
  412. package/dist/sdk/mcp/authorization.d.ts +76 -76
  413. package/dist/sdk/mcp/discovery.d.ts +111 -111
  414. package/dist/sdk/mcp/interactions.d.ts +61 -61
  415. package/dist/sdk/mcp/protocol.d.ts +78 -78
  416. package/dist/sdk/mcp/skills.d.ts +88 -88
  417. package/dist/sdk/mcp/subscriptions.d.ts +39 -39
  418. package/dist/sdk/mcp/tasks.d.ts +75 -75
  419. package/dist/sdk/mcp/transport.d.ts +11 -11
  420. package/dist/sdk/merge/abandoned-receipts.d.ts +6 -6
  421. package/dist/sdk/merge/driver.d.ts +60 -60
  422. package/dist/sdk/merge/install.d.ts +64 -64
  423. package/dist/sdk/merge/receipt-file-boundary.d.ts +5 -5
  424. package/dist/sdk/merge/receipt-operation.d.ts +6 -6
  425. package/dist/sdk/merge/receipt-schema.d.ts +2 -2
  426. package/dist/sdk/merge/receipts.d.ts +156 -156
  427. package/dist/sdk/merge/reconcile.d.ts +36 -36
  428. package/dist/sdk/merge/reconcile.js +1 -1
  429. package/dist/sdk/merge/three-way.d.ts +77 -76
  430. package/dist/sdk/merge/three-way.js +1 -1
  431. package/dist/sdk/mutation-events.d.ts +84 -84
  432. package/dist/sdk/mutation-guard.d.ts +106 -106
  433. package/dist/sdk/notes.d.ts +52 -52
  434. package/dist/sdk/output/table-rows.d.ts +8 -8
  435. package/dist/sdk/output-contracts.d.ts +38 -38
  436. package/dist/sdk/output-projection.d.ts +142 -142
  437. package/dist/sdk/output-token-accounting.d.ts +27 -27
  438. package/dist/sdk/output.d.ts +28 -28
  439. package/dist/sdk/package-import-adapters.d.ts +54 -54
  440. package/dist/sdk/pagination.d.ts +29 -29
  441. package/dist/sdk/profile.d.ts +123 -123
  442. package/dist/sdk/provenance.d.ts +58 -58
  443. package/dist/sdk/public-surface.json +1 -1
  444. package/dist/sdk/query/activity.d.ts +118 -118
  445. package/dist/sdk/query/aggregate.d.ts +140 -140
  446. package/dist/sdk/query/calendar.d.ts +144 -144
  447. package/dist/sdk/query/complete-list.d.ts +53 -53
  448. package/dist/sdk/query/context.d.ts +395 -395
  449. package/dist/sdk/query/duplicate-candidates.d.ts +1 -1
  450. package/dist/sdk/query/get.d.ts +77 -77
  451. package/dist/sdk/query/history.d.ts +72 -72
  452. package/dist/sdk/query/item-filter-options.d.ts +79 -79
  453. package/dist/sdk/query/list-filter-shared.d.ts +1 -1
  454. package/dist/sdk/query/list.d.ts +188 -188
  455. package/dist/sdk/query/multi-value-filters.d.ts +4 -4
  456. package/dist/sdk/query/next-ready-budget.d.ts +14 -14
  457. package/dist/sdk/query/next.d.ts +137 -137
  458. package/dist/sdk/query/projection-contracts.d.ts +8 -8
  459. package/dist/sdk/query/search/corpus.d.ts +8 -8
  460. package/dist/sdk/query/search/filters.d.ts +5 -5
  461. package/dist/sdk/query/search/input.d.ts +4 -4
  462. package/dist/sdk/query/search/response.d.ts +8 -8
  463. package/dist/sdk/query/search/semantic.d.ts +106 -106
  464. package/dist/sdk/query/search/types.d.ts +85 -85
  465. package/dist/sdk/query/search-contracts.d.ts +65 -65
  466. package/dist/sdk/query/search-pagination.d.ts +19 -19
  467. package/dist/sdk/query/search-rendering.d.ts +25 -25
  468. package/dist/sdk/query/search.d.ts +46 -46
  469. package/dist/sdk/read-output/continuation.d.ts +8 -8
  470. package/dist/sdk/read-output/continuation.js +1 -1
  471. package/dist/sdk/read-output/extension.d.ts +7 -0
  472. package/dist/sdk/read-output/extension.js +2 -0
  473. package/dist/sdk/read-output/options.d.ts +6 -4
  474. package/dist/sdk/read-output/options.js +1 -1
  475. package/dist/sdk/read-output/provenance.d.ts +8 -8
  476. package/dist/sdk/read-output-budget.d.ts +10 -10
  477. package/dist/sdk/read-output-contracts.d.ts +192 -186
  478. package/dist/sdk/read-output-contracts.js +1 -1
  479. package/dist/sdk/read-output-rows.d.ts +6 -6
  480. package/dist/sdk/read-output-session.d.ts +50 -50
  481. package/dist/sdk/relationship-analytics.d.ts +78 -78
  482. package/dist/sdk/relationship-context.d.ts +81 -81
  483. package/dist/sdk/relationship-history.d.ts +109 -109
  484. package/dist/sdk/relationship-kinds/contract.d.ts +34 -34
  485. package/dist/sdk/relationship-migration.d.ts +26 -26
  486. package/dist/sdk/relationships.d.ts +78 -78
  487. package/dist/sdk/reproducibility/process.d.ts +3 -3
  488. package/dist/sdk/runtime/context.d.ts +11 -11
  489. package/dist/sdk/runtime-action-aliases.d.ts +2 -2
  490. package/dist/sdk/runtime-extended-actions.d.ts +8 -8
  491. package/dist/sdk/runtime-input.d.ts +3 -3
  492. package/dist/sdk/runtime-public-contracts.d.ts +78 -78
  493. package/dist/sdk/runtime.d.ts +305 -305
  494. package/dist/sdk/runtime.js +1 -1
  495. package/dist/sdk/scheduling-shortcuts.d.ts +32 -32
  496. package/dist/sdk/schema-migration.d.ts +86 -86
  497. package/dist/sdk/schema.d.ts +355 -355
  498. package/dist/sdk/similarity-scoring.d.ts +10 -10
  499. package/dist/sdk/similarity.d.ts +113 -113
  500. package/dist/sdk/stats.d.ts +108 -108
  501. package/dist/sdk/structured-mutations.d.ts +16 -16
  502. package/dist/sdk/structured-mutations.js +1 -1
  503. package/dist/sdk/telemetry.d.ts +53 -53
  504. package/dist/sdk/templates.d.ts +39 -39
  505. package/dist/sdk/test/batch.d.ts +85 -85
  506. package/dist/sdk/test/execution-receipts.d.ts +3 -3
  507. package/dist/sdk/test/execution.d.ts +277 -277
  508. package/dist/sdk/test/execution.js +2 -2
  509. package/dist/sdk/test/json-path.d.ts +2 -2
  510. package/dist/sdk/test/linked-command-detection.d.ts +10 -10
  511. package/dist/sdk/test/measurements.d.ts +11 -11
  512. package/dist/sdk/test/parsers.d.ts +1 -1
  513. package/dist/sdk/test/parsers.js +1 -1
  514. package/dist/sdk/test/runs.d.ts +52 -52
  515. package/dist/sdk/test/trust.d.ts +12 -12
  516. package/dist/sdk/test/update.d.ts +31 -31
  517. package/dist/sdk/testing.d.ts +319 -319
  518. package/dist/sdk/traceability/source-traceability.d.ts +65 -65
  519. package/dist/sdk/workspace-contracts.d.ts +37 -37
  520. package/dist/sdk/workspace-memory.d.ts +60 -60
  521. package/dist/sdk/workspace-recipe.d.ts +9 -9
  522. package/dist/sdk/workspace-snapshot.d.ts +97 -97
  523. package/dist/sdk/workspace-transaction-gc.d.ts +32 -32
  524. package/dist/sdk/workspace-transaction.d.ts +47 -47
  525. package/dist/sdk/workspace.d.ts +6 -6
  526. package/dist/types.d.ts +978 -978
  527. package/dist/types.js +1 -1
  528. package/docs/BUILD_AND_RELEASE_ACCEPTANCE.md +5 -2
  529. package/docs/DEFECT_RECURRENCE.md +12 -0
  530. package/docs/EXTENSIONS.md +2 -2
  531. package/docs/MERGE_SAFETY.md +27 -1
  532. package/docs/RECURRENCE_RECOVERY_CONTRACTS.md +17 -4
  533. package/docs/RELATIONSHIP_GRAPH.md +26 -0
  534. package/docs/RELEASING.md +6 -0
  535. package/docs/SDK.md +43 -18
  536. package/docs/SDK_CONSUMER_RECEIPTS.md +67 -0
  537. package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +6 -3
  538. package/marketplace.json +1 -1
  539. package/node_modules/@opentelemetry/core/build/esm/version.d.ts +1 -1
  540. package/node_modules/@opentelemetry/core/build/esm/version.js +1 -1
  541. package/node_modules/@opentelemetry/core/build/esnext/version.d.ts +1 -1
  542. package/node_modules/@opentelemetry/core/build/esnext/version.js +1 -1
  543. package/node_modules/@opentelemetry/core/build/src/version.d.ts +1 -1
  544. package/node_modules/@opentelemetry/core/build/src/version.js +1 -1
  545. package/node_modules/@opentelemetry/core/package.json +2 -2
  546. package/node_modules/@opentelemetry/resources/build/esm/version.d.ts +1 -1
  547. package/node_modules/@opentelemetry/resources/build/esm/version.js +1 -1
  548. package/node_modules/@opentelemetry/resources/build/esnext/version.d.ts +1 -1
  549. package/node_modules/@opentelemetry/resources/build/esnext/version.js +1 -1
  550. package/node_modules/@opentelemetry/resources/build/src/version.d.ts +1 -1
  551. package/node_modules/@opentelemetry/resources/build/src/version.js +1 -1
  552. package/node_modules/@opentelemetry/resources/package.json +3 -3
  553. package/node_modules/@opentelemetry/sdk-trace/build/esm/StackContextManager.d.ts +57 -0
  554. package/node_modules/@opentelemetry/sdk-trace/build/esm/StackContextManager.js +105 -0
  555. package/node_modules/@opentelemetry/sdk-trace/build/esm/index.d.ts +1 -0
  556. package/node_modules/@opentelemetry/sdk-trace/build/esm/index.js +1 -0
  557. package/node_modules/@opentelemetry/sdk-trace/build/esm/version.d.ts +1 -1
  558. package/node_modules/@opentelemetry/sdk-trace/build/esm/version.js +1 -1
  559. package/node_modules/@opentelemetry/sdk-trace/build/esnext/StackContextManager.d.ts +57 -0
  560. package/node_modules/@opentelemetry/sdk-trace/build/esnext/StackContextManager.js +105 -0
  561. package/node_modules/@opentelemetry/sdk-trace/build/esnext/index.d.ts +1 -0
  562. package/node_modules/@opentelemetry/sdk-trace/build/esnext/index.js +1 -0
  563. package/node_modules/@opentelemetry/sdk-trace/build/esnext/version.d.ts +1 -1
  564. package/node_modules/@opentelemetry/sdk-trace/build/esnext/version.js +1 -1
  565. package/node_modules/@opentelemetry/sdk-trace/build/src/StackContextManager.d.ts +57 -0
  566. package/node_modules/@opentelemetry/sdk-trace/build/src/StackContextManager.js +109 -0
  567. package/node_modules/@opentelemetry/sdk-trace/build/src/index.d.ts +1 -0
  568. package/node_modules/@opentelemetry/sdk-trace/build/src/index.js +3 -1
  569. package/node_modules/@opentelemetry/sdk-trace/build/src/version.d.ts +1 -1
  570. package/node_modules/@opentelemetry/sdk-trace/build/src/version.js +1 -1
  571. package/node_modules/@opentelemetry/sdk-trace/package.json +5 -5
  572. package/node_modules/@opentelemetry/sdk-trace-base/build/esm/version.d.ts +1 -1
  573. package/node_modules/@opentelemetry/sdk-trace-base/build/esm/version.js +1 -1
  574. package/node_modules/@opentelemetry/sdk-trace-base/build/esnext/version.d.ts +1 -1
  575. package/node_modules/@opentelemetry/sdk-trace-base/build/esnext/version.js +1 -1
  576. package/node_modules/@opentelemetry/sdk-trace-base/build/src/version.d.ts +1 -1
  577. package/node_modules/@opentelemetry/sdk-trace-base/build/src/version.js +1 -1
  578. package/node_modules/@opentelemetry/sdk-trace-base/package.json +7 -7
  579. package/node_modules/@sentry/core/build/cjs/browser.js +3 -0
  580. package/node_modules/@sentry/core/build/cjs/fetch.js +10 -9
  581. package/node_modules/@sentry/core/build/cjs/index.js +3 -0
  582. package/node_modules/@sentry/core/build/cjs/integrations/http/add-outgoing-request-breadcrumb.js +2 -1
  583. package/node_modules/@sentry/core/build/cjs/integrations/http/get-outgoing-span-data.js +3 -2
  584. package/node_modules/@sentry/core/build/cjs/integrations/http/server-subscription.js +7 -3
  585. package/node_modules/@sentry/core/build/cjs/integrations/requestdata.js +23 -9
  586. package/node_modules/@sentry/core/build/cjs/server.js +3 -0
  587. package/node_modules/@sentry/core/build/cjs/utils/data-collection/filterCollectedUrl.js +24 -0
  588. package/node_modules/@sentry/core/build/cjs/utils/data-collection/filterKeyValueData.js +17 -23
  589. package/node_modules/@sentry/core/build/cjs/utils/data-collection/filterQueryParams.js +8 -15
  590. package/node_modules/@sentry/core/build/cjs/utils/data-collection/filterUrlQuery.js +20 -0
  591. package/node_modules/@sentry/core/build/cjs/utils/url.js +4 -3
  592. package/node_modules/@sentry/core/build/cjs/utils/version.js +1 -1
  593. package/node_modules/@sentry/core/build/esm/browser.js +1 -0
  594. package/node_modules/@sentry/core/build/esm/fetch.js +10 -9
  595. package/node_modules/@sentry/core/build/esm/index.js +1 -0
  596. package/node_modules/@sentry/core/build/esm/integrations/http/add-outgoing-request-breadcrumb.js +2 -1
  597. package/node_modules/@sentry/core/build/esm/integrations/http/get-outgoing-span-data.js +3 -2
  598. package/node_modules/@sentry/core/build/esm/integrations/http/server-subscription.js +7 -3
  599. package/node_modules/@sentry/core/build/esm/integrations/requestdata.js +23 -9
  600. package/node_modules/@sentry/core/build/esm/package.json +1 -1
  601. package/node_modules/@sentry/core/build/esm/server.js +1 -0
  602. package/node_modules/@sentry/core/build/esm/utils/data-collection/filterCollectedUrl.js +21 -0
  603. package/node_modules/@sentry/core/build/esm/utils/data-collection/filterKeyValueData.js +18 -25
  604. package/node_modules/@sentry/core/build/esm/utils/data-collection/filterQueryParams.js +9 -16
  605. package/node_modules/@sentry/core/build/esm/utils/data-collection/filterUrlQuery.js +18 -0
  606. package/node_modules/@sentry/core/build/esm/utils/url.js +4 -3
  607. package/node_modules/@sentry/core/build/esm/utils/version.js +1 -1
  608. package/node_modules/@sentry/core/build/types/shared-exports.d.ts +1 -0
  609. package/node_modules/@sentry/core/build/types/utils/data-collection/filterCollectedUrl.d.ts +21 -0
  610. package/node_modules/@sentry/core/build/types/utils/data-collection/filterKeyValueData.d.ts +1 -0
  611. package/node_modules/@sentry/core/build/types/utils/data-collection/filterQueryParams.d.ts +2 -3
  612. package/node_modules/@sentry/core/build/types/utils/data-collection/filterUrlQuery.d.ts +13 -0
  613. package/node_modules/@sentry/core/build/types/utils/url.d.ts +4 -1
  614. package/node_modules/@sentry/core/build/types-ts3.8/shared-exports.d.ts +1 -0
  615. package/node_modules/@sentry/core/build/types-ts3.8/utils/data-collection/filterCollectedUrl.d.ts +21 -0
  616. package/node_modules/@sentry/core/build/types-ts3.8/utils/data-collection/filterKeyValueData.d.ts +1 -0
  617. package/node_modules/@sentry/core/build/types-ts3.8/utils/data-collection/filterQueryParams.d.ts +2 -3
  618. package/node_modules/@sentry/core/build/types-ts3.8/utils/data-collection/filterUrlQuery.d.ts +13 -0
  619. package/node_modules/@sentry/core/build/types-ts3.8/utils/url.d.ts +4 -1
  620. package/node_modules/@sentry/core/package.json +3 -2
  621. package/node_modules/@sentry/node/build/cjs/integrations/tracing/vercelai/instrumentation.js +3 -0
  622. package/node_modules/@sentry/node/build/esm/integrations/tracing/vercelai/instrumentation.js +3 -0
  623. package/node_modules/@sentry/node/build/esm/package.json +1 -1
  624. package/node_modules/@sentry/node/package.json +7 -6
  625. package/node_modules/@sentry/node-core/build/cjs/integrations/anr/index.js +1 -1
  626. package/node_modules/@sentry/node-core/build/cjs/integrations/http/httpServerSpansIntegration.js +6 -3
  627. package/node_modules/@sentry/node-core/build/cjs/integrations/local-variables/local-variables-async.js +1 -1
  628. package/node_modules/@sentry/node-core/build/cjs/integrations/node-fetch/undici-instrumentation.js +2 -2
  629. package/node_modules/@sentry/node-core/build/cjs/light/client.js +7 -0
  630. package/node_modules/@sentry/node-core/build/cjs/sdk/client.js +7 -0
  631. package/node_modules/@sentry/node-core/build/cjs/utils/outgoingFetchRequest.js +1 -1
  632. package/node_modules/@sentry/node-core/build/esm/integrations/anr/index.js +1 -1
  633. package/node_modules/@sentry/node-core/build/esm/integrations/anr/worker-script.js +2 -2
  634. package/node_modules/@sentry/node-core/build/esm/integrations/http/httpServerSpansIntegration.js +7 -4
  635. package/node_modules/@sentry/node-core/build/esm/integrations/local-variables/local-variables-async.js +1 -1
  636. package/node_modules/@sentry/node-core/build/esm/integrations/local-variables/worker-script.js +1 -1
  637. package/node_modules/@sentry/node-core/build/esm/integrations/node-fetch/undici-instrumentation.js +3 -3
  638. package/node_modules/@sentry/node-core/build/esm/light/client.js +8 -1
  639. package/node_modules/@sentry/node-core/build/esm/package.json +1 -1
  640. package/node_modules/@sentry/node-core/build/esm/sdk/client.js +8 -1
  641. package/node_modules/@sentry/node-core/build/esm/utils/outgoingFetchRequest.js +2 -2
  642. package/node_modules/@sentry/node-core/build/types/light/client.d.ts +1 -0
  643. package/node_modules/@sentry/node-core/build/types/sdk/client.d.ts +1 -0
  644. package/node_modules/@sentry/node-core/build/types-ts3.8/light/client.d.ts +1 -0
  645. package/node_modules/@sentry/node-core/build/types-ts3.8/sdk/client.d.ts +1 -0
  646. package/node_modules/@sentry/node-core/package.json +5 -4
  647. package/node_modules/@sentry/opentelemetry/build/cjs/{asyncContextStrategy-BJ5buq_A.js → asyncContextStrategy-BR-l9zjD.js} +8 -6
  648. package/node_modules/@sentry/opentelemetry/build/cjs/index.browser.js +1 -1
  649. package/node_modules/@sentry/opentelemetry/build/cjs/index.js +1 -1
  650. package/node_modules/@sentry/opentelemetry/build/esm/{asyncContextStrategy-Bx5F5tCX.js → asyncContextStrategy-BQfM_LMv.js} +9 -7
  651. package/node_modules/@sentry/opentelemetry/build/esm/index.browser.js +1 -1
  652. package/node_modules/@sentry/opentelemetry/build/esm/index.js +2 -2
  653. package/node_modules/@sentry/opentelemetry/build/esm/package.json +1 -1
  654. package/node_modules/@sentry/opentelemetry/package.json +4 -3
  655. package/node_modules/@sentry/server-utils/build/cjs/tracing-channel.js +1 -0
  656. package/node_modules/@sentry/server-utils/build/esm/package.json +1 -1
  657. package/node_modules/@sentry/server-utils/build/esm/tracing-channel.js +1 -0
  658. package/node_modules/@sentry/server-utils/build/types/tracing-channel.d.ts +3 -1
  659. package/node_modules/@sentry/server-utils/build/types-ts3.8/tracing-channel.d.ts +3 -1
  660. package/node_modules/@sentry/server-utils/package.json +4 -3
  661. package/node_modules/cjs-module-lexer/README.md +8 -3
  662. package/node_modules/cjs-module-lexer/dist/lexer.js +1 -1
  663. package/node_modules/cjs-module-lexer/dist/lexer.mjs +2 -2
  664. package/node_modules/cjs-module-lexer/lexer.js +48 -9
  665. package/node_modules/cjs-module-lexer/package.json +3 -2
  666. package/node_modules/es-module-lexer/dist/lexer.asm.js +2 -2
  667. package/node_modules/es-module-lexer/dist/lexer.cjs +1 -1
  668. package/node_modules/es-module-lexer/dist/lexer.js +2 -2
  669. package/node_modules/es-module-lexer/dist/lexer.minimal.asm.js +2 -2
  670. package/node_modules/es-module-lexer/dist/lexer.minimal.cjs +1 -1
  671. package/node_modules/es-module-lexer/dist/lexer.minimal.js +2 -2
  672. package/node_modules/es-module-lexer/package.json +1 -1
  673. package/node_modules/import-in-the-middle/CHANGELOG.md +7 -0
  674. package/node_modules/import-in-the-middle/lib/get-esm-exports.mjs +7 -0
  675. package/node_modules/import-in-the-middle/package.json +1 -1
  676. package/package.json +2 -2
  677. package/packages/pm-beads/extensions/beads/runtime.ts +2 -2
  678. package/packages/pm-beads/package.json +1 -1
  679. package/packages/pm-calendar/package.json +1 -1
  680. package/packages/pm-command-kit/package.json +1 -1
  681. package/packages/pm-digital-twin/package.json +1 -1
  682. package/packages/pm-governance-audit/package.json +1 -1
  683. package/packages/pm-guide-shell/package.json +1 -1
  684. package/packages/pm-kanban/package.json +1 -1
  685. package/packages/pm-lifecycle-hooks/package.json +1 -1
  686. package/packages/pm-linked-test-adapters/package.json +1 -1
  687. package/packages/pm-search-advanced/package.json +1 -1
  688. package/packages/pm-templates/package.json +1 -1
  689. package/packages/pm-todos/package.json +1 -1
  690. package/packages/pm-vcs/package.json +1 -1
  691. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  692. package/plugins/pm-claude/package.json +1 -1
  693. package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
  694. package/plugins/pm-codex/package.json +1 -1
  695. package/plugins/pm-codex/plugin.json +1 -1
  696. package/runtime-dependencies.json +1 -1
  697. package/scripts/finalize-build.mjs +37 -0
  698. package/dist/cli-bundle/chunks/chunk-6PZPUJW3.js +0 -234
  699. package/dist/cli-bundle/chunks/chunk-ILQEZ4Y6.js +0 -2
  700. package/dist/cli-bundle/chunks/chunk-JRRXWH5B.js +0 -20
  701. package/dist/cli-bundle/chunks/chunk-LH5QDBMN.js +0 -2
  702. package/dist/cli-bundle/chunks/chunk-M5NDSW6E.js +0 -30
  703. package/dist/cli-bundle/focused-chunks/chunk-AXBO53EQ.js +0 -2
  704. package/dist/cli-bundle/focused-chunks/chunk-FXRWJEQ5.js +0 -3
  705. package/dist/cli-bundle/focused-chunks/chunk-IKJFAU32.js +0 -8
  706. package/dist/cli-bundle/focused-chunks/chunk-PPH5N26M.js +0 -2
  707. package/dist/cli-bundle/focused-chunks/chunk-RZVNGUT7.js +0 -26
  708. package/dist/cli-bundle/focused-chunks/chunk-YDJT33JU.js +0 -2
@@ -11,136 +11,136 @@ import { type MergeDecisionReceipt } from "./merge/receipts.js";
11
11
  import { type ProvenanceNormalizationReceipt } from "./governance/provenance-health.js";
12
12
  /** Documents the history repair command options payload exchanged by command, SDK, and package integrations. */
13
13
  export interface HistoryRepairCommandOptions {
14
- /** Remove only an invalid trailing suffix after a verified prefix; never re-anchor or reconcile. */
15
- salvageTail?: boolean;
16
- /** Value that configures or reports dry run for this contract. */
17
- dryRun?: boolean;
18
- /** Value that configures or reports author for this contract. */
19
- author?: string;
20
- /** Human-readable explanation suitable for logs and agent-facing output. */
21
- message?: string;
22
- /** Value that configures or reports force for this contract. */
23
- force?: boolean;
24
- /** Audit operation label used by specialized SDK workflows such as merge reconciliation. */
25
- auditOperation?: string;
26
- /** Structured audit context attached to the synthetic reconciliation event. */
27
- auditContext?: Record<string, unknown>;
28
- /** Per-item audit contexts used by bulk specialized reconciliation workflows. */
29
- auditContextById?: Record<string, Record<string, unknown>>;
30
- /** Add an audit event even when replay and the current item already match. */
31
- forceAuditEntry?: boolean;
32
- /** Remove bounded-domain-invalid provenance observations and record an aggregate privacy-safe audit receipt. */
33
- normalizeProvenance?: boolean;
34
- /** Internal receipt evidence revalidated against the exact item snapshot used by this repair. */
35
- mergeReceiptProof?: {
36
- gitWorkspaceRoot: string | null;
37
- receipts: MergeDecisionReceipt[];
38
- };
39
- /** Internal per-item receipt proof index used by bounded bulk reconciliation. */
40
- mergeReceiptProofById?: Record<string, {
41
- gitWorkspaceRoot: string | null;
42
- receipts: MergeDecisionReceipt[];
43
- }>;
44
- /** Restored-origin evidence checked against the same item snapshot protected by the rewrite transaction. */
45
- mergeAbandonmentProof?: {
46
- /** Git workspace containing the tracked item. */
47
- gitWorkspaceRoot: string;
48
- /** Authoritative receipt whose original rebase state must match. */
49
- receipt: MergeDecisionReceipt;
50
- };
14
+ /** Remove only an invalid trailing suffix after a verified prefix; never re-anchor or reconcile. */
15
+ salvageTail?: boolean;
16
+ /** Value that configures or reports dry run for this contract. */
17
+ dryRun?: boolean;
18
+ /** Value that configures or reports author for this contract. */
19
+ author?: string;
20
+ /** Human-readable explanation suitable for logs and agent-facing output. */
21
+ message?: string;
22
+ /** Value that configures or reports force for this contract. */
23
+ force?: boolean;
24
+ /** Audit operation label used by specialized SDK workflows such as merge reconciliation. */
25
+ auditOperation?: string;
26
+ /** Structured audit context attached to the synthetic reconciliation event. */
27
+ auditContext?: Record<string, unknown>;
28
+ /** Per-item audit contexts used by bulk specialized reconciliation workflows. */
29
+ auditContextById?: Record<string, Record<string, unknown>>;
30
+ /** Add an audit event even when replay and the current item already match. */
31
+ forceAuditEntry?: boolean;
32
+ /** Remove bounded-domain-invalid provenance observations and record an aggregate privacy-safe audit receipt. */
33
+ normalizeProvenance?: boolean;
34
+ /** Internal receipt evidence revalidated against the exact item snapshot used by this repair. */
35
+ mergeReceiptProof?: {
36
+ gitWorkspaceRoot: string | null;
37
+ receipts: MergeDecisionReceipt[];
38
+ };
39
+ /** Internal per-item receipt proof index used by bounded bulk reconciliation. */
40
+ mergeReceiptProofById?: Record<string, {
41
+ gitWorkspaceRoot: string | null;
42
+ receipts: MergeDecisionReceipt[];
43
+ }>;
44
+ /** Restored-origin evidence checked against the same item snapshot protected by the rewrite transaction. */
45
+ mergeAbandonmentProof?: {
46
+ /** Git workspace containing the tracked item. */
47
+ gitWorkspaceRoot: string;
48
+ /** Authoritative receipt whose original rebase state must match. */
49
+ receipt: MergeDecisionReceipt;
50
+ };
51
51
  }
52
52
  /** Documents the history repair result payload exchanged by command, SDK, and package integrations. */
53
53
  export interface HistoryRepairResult {
54
- /** Present when invalid trailing bytes were selected for explicit salvage. */
55
- salvage?: HistorySalvageReceipt;
56
- /** Stable identifier used to reference this record across commands and storage. */
57
- id: string;
58
- /** Value that configures or reports dry run for this contract. */
59
- dry_run: boolean;
60
- /** Value that configures or reports changed for this contract. */
61
- changed: boolean;
62
- /** Value that configures or reports history for this contract. */
63
- history: {
64
- path: string;
65
- entries_scanned: number;
66
- chain_drift_before: boolean;
67
- entries_rehashed: number;
68
- entries_patch_repaired: number;
69
- converted_replace_to_add: number;
70
- skipped_ops: number;
71
- reconciled_with_item: boolean;
72
- audit_entry_added: boolean;
73
- verify_ok: boolean;
74
- verify_errors: string[];
75
- item_hash_version_before: number | null;
76
- item_hash_version_after: number;
77
- version_disposition: "preserved" | "selected_for_ambiguous_stream";
78
- };
79
- /** Value that configures or reports item for this contract. */
80
- item: {
81
- exists: boolean;
82
- path: string | null;
83
- matched_chain_before: boolean | null;
84
- };
85
- /** Privacy-safe receipt for the explicitly requested provenance normalization mode. */
86
- provenance_normalization: ProvenanceNormalizationReceipt & {
87
- requested: boolean;
88
- };
89
- /** Present when reconciling the chain with the on-disk item discards the replayed effect of earlier history events (GH-603): names the reverted fields and the authors whose mutations the reconciliation overwrites, so cross-author data loss after a lossy merge is loud instead of silent. */
90
- reconciliation?: HistoryRepairReconciliationReport;
91
- /** Present when merge reconciliation supplied receipt evidence for this item. */
92
- merge_receipt_proof?: MergeReceiptProofResult;
93
- /** Value that configures or reports warnings for this contract. */
94
- warnings: string[];
95
- /** ISO 8601 timestamp recording when generated occurred. */
96
- generated_at: string;
54
+ /** Present when invalid trailing bytes were selected for explicit salvage. */
55
+ salvage?: HistorySalvageReceipt;
56
+ /** Stable identifier used to reference this record across commands and storage. */
57
+ id: string;
58
+ /** Value that configures or reports dry run for this contract. */
59
+ dry_run: boolean;
60
+ /** Value that configures or reports changed for this contract. */
61
+ changed: boolean;
62
+ /** Value that configures or reports history for this contract. */
63
+ history: {
64
+ path: string;
65
+ entries_scanned: number;
66
+ chain_drift_before: boolean;
67
+ entries_rehashed: number;
68
+ entries_patch_repaired: number;
69
+ converted_replace_to_add: number;
70
+ skipped_ops: number;
71
+ reconciled_with_item: boolean;
72
+ audit_entry_added: boolean;
73
+ verify_ok: boolean;
74
+ verify_errors: string[];
75
+ item_hash_version_before: number | null;
76
+ item_hash_version_after: number;
77
+ version_disposition: "preserved" | "selected_for_ambiguous_stream";
78
+ };
79
+ /** Value that configures or reports item for this contract. */
80
+ item: {
81
+ exists: boolean;
82
+ path: string | null;
83
+ matched_chain_before: boolean | null;
84
+ };
85
+ /** Privacy-safe receipt for the explicitly requested provenance normalization mode. */
86
+ provenance_normalization: ProvenanceNormalizationReceipt & {
87
+ requested: boolean;
88
+ };
89
+ /** Present when reconciling the chain with the on-disk item discards the replayed effect of earlier history events (GH-603): names the reverted fields and the authors whose mutations the reconciliation overwrites, so cross-author data loss after a lossy merge is loud instead of silent. */
90
+ reconciliation?: HistoryRepairReconciliationReport;
91
+ /** Present when merge reconciliation supplied receipt evidence for this item. */
92
+ merge_receipt_proof?: MergeReceiptProofResult;
93
+ /** Value that configures or reports warnings for this contract. */
94
+ warnings: string[];
95
+ /** ISO 8601 timestamp recording when generated occurred. */
96
+ generated_at: string;
97
97
  }
98
98
  /** Fail-closed proof that clone-local driver receipts exactly cover the current reconciliation fields and values. */
99
99
  export interface MergeReceiptProofResult {
100
- /** Whether exact receipt identity, path, field, and value-hash evidence proves the snapshot. */
101
- trusted: boolean;
102
- /** Stable explanation for the trust decision. */
103
- reason: "trusted_merge_driver_hash_evidence" | "git_workspace_unavailable" | "item_path_unavailable" | "no_item_receipts" | "no_receipt_set_proves_snapshot";
104
- /** Exact receipt identities accepted as proof; empty when proof is refused. */
105
- receipt_ids: string[];
100
+ /** Whether exact receipt identity, path, field, and value-hash evidence proves the snapshot. */
101
+ trusted: boolean;
102
+ /** Stable explanation for the trust decision. */
103
+ reason: "trusted_merge_driver_hash_evidence" | "git_workspace_unavailable" | "item_path_unavailable" | "no_item_receipts" | "no_receipt_set_proves_snapshot";
104
+ /** Exact receipt identities accepted as proof; empty when proof is refused. */
105
+ receipt_ids: string[];
106
106
  }
107
107
  /** Documents one history event attributed to fields changed by reconciliation. */
108
108
  export interface HistoryRepairDiscardedEvent {
109
- /** 1-based index of the event in the (re-anchored) history stream. */
110
- index: number;
111
- /** Timestamp of the attributed event. */
112
- ts: string;
113
- /** Author whose mutation is being classified. */
114
- author: string;
115
- /** Operation label of the discarded event. */
116
- op: string;
117
- /** Reconciled fields this event last wrote. */
118
- fields: string[];
109
+ /** 1-based index of the event in the (re-anchored) history stream. */
110
+ index: number;
111
+ /** Timestamp of the attributed event. */
112
+ ts: string;
113
+ /** Author whose mutation is being classified. */
114
+ author: string;
115
+ /** Operation label of the discarded event. */
116
+ op: string;
117
+ /** Reconciled fields this event last wrote. */
118
+ fields: string[];
119
119
  }
120
120
  /** Documents the repair reconciliation data-loss report exchanged by command, SDK, and package integrations. */
121
121
  export interface HistoryRepairReconciliationReport {
122
- /** Total number of fields changed by the reconciliation patch. */
123
- reconciled_field_count: number;
124
- /** Every field changed by the reconciliation patch. */
125
- reconciled_fields: string[];
126
- /** Number of fields the reconciliation patch reverts relative to the replayed chain. */
127
- reverted_field_count: number;
128
- /** Fields whose replayed values the reconciliation overwrites with the on-disk item's values. */
129
- reverted_fields: string[];
130
- /** Newest history events that last wrote each reverted field — the mutations being discarded. */
131
- discarded_events: HistoryRepairDiscardedEvent[];
132
- /** Distinct authors whose mutations the reconciliation discards. */
133
- discarded_authors: string[];
134
- /** Number of changed fields whose replayed value remains present in the on-disk item. */
135
- preserved_field_count: number;
136
- /** Changed fields whose replayed value remains present after reconciliation. */
137
- preserved_fields: string[];
138
- /** Newest history events whose effects remain preserved by reconciliation. */
139
- preserved_events: HistoryRepairDiscardedEvent[];
140
- /** Distinct authors whose reconciled mutations remain preserved. */
141
- preserved_authors: string[];
142
- /** How to recover a discarded mutation instead of accepting the revert. */
143
- recovery_hint: string | null;
122
+ /** Total number of fields changed by the reconciliation patch. */
123
+ reconciled_field_count: number;
124
+ /** Every field changed by the reconciliation patch. */
125
+ reconciled_fields: string[];
126
+ /** Number of fields the reconciliation patch reverts relative to the replayed chain. */
127
+ reverted_field_count: number;
128
+ /** Fields whose replayed values the reconciliation overwrites with the on-disk item's values. */
129
+ reverted_fields: string[];
130
+ /** Newest history events that last wrote each reverted field — the mutations being discarded. */
131
+ discarded_events: HistoryRepairDiscardedEvent[];
132
+ /** Distinct authors whose mutations the reconciliation discards. */
133
+ discarded_authors: string[];
134
+ /** Number of changed fields whose replayed value remains present in the on-disk item. */
135
+ preserved_field_count: number;
136
+ /** Changed fields whose replayed value remains present after reconciliation. */
137
+ preserved_fields: string[];
138
+ /** Newest history events whose effects remain preserved by reconciliation. */
139
+ preserved_events: HistoryRepairDiscardedEvent[];
140
+ /** Distinct authors whose reconciled mutations remain preserved. */
141
+ preserved_authors: string[];
142
+ /** How to recover a discarded mutation instead of accepting the revert. */
143
+ recovery_hint: string | null;
144
144
  }
145
145
  /** Compute which chain-vs-item differences preserve replayed context and which genuinely discard it. */
146
146
  export declare function analyzeReconciliationDiscard(entries: HistoryEntry[], finalReplay: ReplayDocument, currentItemReplay: ReplayDocument): HistoryRepairReconciliationReport | undefined;
@@ -148,49 +148,49 @@ export declare function analyzeReconciliationDiscard(entries: HistoryEntry[], fi
148
148
  export declare function runHistoryRepair(id: string, options: HistoryRepairCommandOptions, global: GlobalOptions): Promise<HistoryRepairResult>;
149
149
  /** Documents the history repair all stream result payload exchanged by command, SDK, and package integrations. */
150
150
  export interface HistoryRepairAllStreamResult {
151
- /** Stable identifier used to reference this record across commands and storage. */
152
- id: string;
153
- /** Value that configures or reports outcome for this contract. */
154
- outcome: "repaired" | "skipped_clean" | "failed";
155
- /** Value that configures or reports entries rehashed for this contract. */
156
- entries_rehashed?: number;
157
- /** Value that configures or reports entries patch repaired for this contract. */
158
- entries_patch_repaired?: number;
159
- /** Value that configures or reports reconciled with item for this contract. */
160
- reconciled_with_item?: boolean;
161
- /** Cross-author data-loss detail when reconciliation overwrites replayed mutations. */
162
- reconciliation?: HistoryRepairReconciliationReport;
163
- /** Exact receipt proof used to authorize this stream, when supplied. */
164
- merge_receipt_proof?: MergeReceiptProofResult;
165
- /** Stream-specific repair warnings retained by the bulk workflow. */
166
- warnings?: string[];
167
- /** Value that configures or reports error for this contract. */
168
- error?: string;
151
+ /** Stable identifier used to reference this record across commands and storage. */
152
+ id: string;
153
+ /** Value that configures or reports outcome for this contract. */
154
+ outcome: "repaired" | "skipped_clean" | "failed";
155
+ /** Value that configures or reports entries rehashed for this contract. */
156
+ entries_rehashed?: number;
157
+ /** Value that configures or reports entries patch repaired for this contract. */
158
+ entries_patch_repaired?: number;
159
+ /** Value that configures or reports reconciled with item for this contract. */
160
+ reconciled_with_item?: boolean;
161
+ /** Cross-author data-loss detail when reconciliation overwrites replayed mutations. */
162
+ reconciliation?: HistoryRepairReconciliationReport;
163
+ /** Exact receipt proof used to authorize this stream, when supplied. */
164
+ merge_receipt_proof?: MergeReceiptProofResult;
165
+ /** Stream-specific repair warnings retained by the bulk workflow. */
166
+ warnings?: string[];
167
+ /** Value that configures or reports error for this contract. */
168
+ error?: string;
169
169
  }
170
170
  /** Documents the history repair all result payload exchanged by command, SDK, and package integrations. */
171
171
  export interface HistoryRepairAllResult {
172
- /** Value that configures or reports all for this contract. */
173
- all: true;
174
- /** Value that configures or reports dry run for this contract. */
175
- dry_run: boolean;
176
- /** Value that configures or reports scanned streams for this contract. */
177
- scanned_streams: number;
178
- /** Value that configures or reports drifted streams for this contract. */
179
- drifted_streams: number;
180
- /** Streams selected only because invalid provenance required normalization. */
181
- provenance_invalid_streams: number;
182
- /** One compact row per drifted or provenance-normalization target. */
183
- streams: HistoryRepairAllStreamResult[];
184
- /** Value that configures or reports totals for this contract. */
185
- totals: {
186
- repaired: number;
187
- skipped_clean: number;
188
- failed: number;
189
- };
190
- /** Value that configures or reports warnings for this contract. */
191
- warnings: string[];
192
- /** ISO 8601 timestamp recording when generated occurred. */
193
- generated_at: string;
172
+ /** Value that configures or reports all for this contract. */
173
+ all: true;
174
+ /** Value that configures or reports dry run for this contract. */
175
+ dry_run: boolean;
176
+ /** Value that configures or reports scanned streams for this contract. */
177
+ scanned_streams: number;
178
+ /** Value that configures or reports drifted streams for this contract. */
179
+ drifted_streams: number;
180
+ /** Streams selected only because invalid provenance required normalization. */
181
+ provenance_invalid_streams: number;
182
+ /** One compact row per drifted or provenance-normalization target. */
183
+ streams: HistoryRepairAllStreamResult[];
184
+ /** Value that configures or reports totals for this contract. */
185
+ totals: {
186
+ repaired: number;
187
+ skipped_clean: number;
188
+ failed: number;
189
+ };
190
+ /** Value that configures or reports warnings for this contract. */
191
+ warnings: string[];
192
+ /** ISO 8601 timestamp recording when generated occurred. */
193
+ generated_at: string;
194
194
  }
195
195
  /** Enforce the `pm history-repair` target contract shared by the CLI and MCP surfaces: exactly one of an item `<id>` or `--all` must be provided. */
196
196
  export declare function assertHistoryRepairTarget(id: string | undefined, all: boolean): void;
@@ -1,2 +1,2 @@
1
- (function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="289c841a-1355-54a5-a3e3-f59de2abd58c")}catch{}})();import{salvageHistoryTail}from"./history/salvage.js";import{resolveHistoryHashAlgorithm}from"../core/history/digest.js";import{realpath}from"node:fs/promises";import path from"node:path";import jsonPatch from"fast-json-patch";import{patchPathToChangedField}from"../core/history/history-diff.js";import{normalizeReplayPatchOps,reanchorHistoryEntries,replayHashVerificationCandidates,resolveHistoryRepairItemHashVersion,toReplayDocument,verifyHistoryChainWithVersion}from"../core/history/replay.js";import{sealHistoryRecord}from"../core/history/history.js";import{classifyHistoryEvent}from"../core/history/event-classification.js";import{scanHistoryDrift}from"../core/history/drift-scan.js";import{invalidateHistoryDriftCache}from"../core/history/drift-cache.js";import{EXIT_CODE}from"../core/shared/constants.js";import{PmCliError}from"../core/shared/errors.js";import{sha256Hex,stableStringify}from"../core/shared/serialization.js";import{resolveAuthor}from"../core/shared/author.js";import{nowIso}from"../core/shared/time.js";import{listAllItemMetadataWithBody}from"../core/store/item-store.js";import{resolveHistoryWorkspace,resolveHistorySubject}from"./history/subject.js";import{runHistoryMaintenance}from"./history/maintenance.js";import{isOriginalGitStateRestored}from"./merge/receipt-operation.js";import{inspectMergeReceiptEvidence,summarizeMergeReceipt}from"./merge/receipts.js";import{encodeItemScalarDecisionValue,hashItemScalarDecisionValue}from"./merge/three-way.js";import{listInvalidProvenanceHistoryStreamIds,normalizeInvalidHistoryProvenance}from"./governance/provenance-health.js";function replayFieldValue(document,field){return field==="body"?document.body:document.metadata[field]}function isReplayValuePreserved(replayed,reconciled){if(replayed===void 0||Object.is(replayed,reconciled))return!0;if(Array.isArray(replayed)){if(!Array.isArray(reconciled))return!1;const matched=new Set;return replayed.every(expected=>{const index=reconciled.findIndex((candidate,candidateIndex)=>!matched.has(candidateIndex)&&isReplayValuePreserved(expected,candidate));return index<0?!1:(matched.add(index),!0)})}if(replayed===null||reconciled===null||typeof replayed!="object"||typeof reconciled!="object"||Array.isArray(reconciled))return!1;const reconciledRecord=reconciled;return Object.entries(replayed).every(([key,value])=>Object.hasOwn(reconciledRecord,key)&&isReplayValuePreserved(value,reconciledRecord[key]))}function collectReconciliationEvents(entries,fields){const remaining=new Set(fields),events=[];for(let index=entries.length-1;index>=0&&remaining.size>0;index-=1){const entry=entries[index],entryFields=new Set;for(const op of normalizeReplayPatchOps(entry.patch))entryFields.add(patchPathToChangedField(op.path)),op.from&&entryFields.add(patchPathToChangedField(op.from));const overlap=[...remaining].filter(field=>entryFields.has(field));if(overlap.length!==0){for(const field of overlap)remaining.delete(field);events.push({index:index+1,ts:entry.ts,author:entry.author,op:entry.op,fields:overlap.sort((left,right)=>left.localeCompare(right))})}}return events.reverse()}function analyzeReconciliationDiscard(entries,finalReplay,currentItemReplay){const reconcilePatch=jsonPatch.compare(finalReplay,currentItemReplay);if(reconcilePatch.length===0)return;const reconciledFields=new Set;for(const op of reconcilePatch)reconciledFields.add(patchPathToChangedField(op.path));const preservedFields=new Set([...reconciledFields].filter(field=>isReplayValuePreserved(replayFieldValue(finalReplay,field),replayFieldValue(currentItemReplay,field)))),revertedFields=new Set([...reconciledFields].filter(field=>!preservedFields.has(field))),discardedEvents=collectReconciliationEvents(entries,revertedFields),preservedEvents=collectReconciliationEvents(entries,preservedFields),sortedReconciledFields=[...reconciledFields].sort((left,right)=>left.localeCompare(right)),sortedRevertedFields=[...revertedFields].sort((left,right)=>left.localeCompare(right)),sortedPreservedFields=[...preservedFields].sort((left,right)=>left.localeCompare(right)),discardedAuthors=[...new Set(discardedEvents.map(event=>event.author))].sort((left,right)=>left.localeCompare(right)),preservedAuthors=[...new Set(preservedEvents.map(event=>event.author))].sort((left,right)=>left.localeCompare(right));return{reconciled_field_count:reconciledFields.size,reconciled_fields:sortedReconciledFields,reverted_field_count:revertedFields.size,reverted_fields:sortedRevertedFields,discarded_events:discardedEvents,discarded_authors:discardedAuthors,preserved_field_count:preservedFields.size,preserved_fields:sortedPreservedFields,preserved_events:preservedEvents,preserved_authors:preservedAuthors,recovery_hint:discardedEvents.length>0?"Reconciliation keeps the on-disk item and overwrites these replayed mutations. To recover one, inspect it with pm history <id> --diff --field <field>, then re-apply the lost value with pm update.":null}}async function canonicalRealPath(value){try{return await realpath(value)}catch{return null}}async function verifyReceiptAgainstSnapshot(params){if(await canonicalRealPath(path.resolve(params.gitWorkspaceRoot,params.receipt.item_path))!==params.currentPath)return null;const declaredFields=[...new Set([...params.receipt.fields_from_theirs,...params.receipt.union_fields,...params.receipt.decisions.map(decision=>decision.field)])].sort(),hashes=params.receipt.merged_field_hashes;if(!hashes||declaredFields.length===0)return null;const hashFields=Object.keys(hashes).sort();if(declaredFields.length!==hashFields.length||declaredFields.some((field,index)=>field!==hashFields[index]))return null;const currentMetadata=params.currentItemReplay.metadata;return declaredFields.every(field=>{const value=field==="body"?params.currentItemReplay.body:currentMetadata[field];return[hashItemScalarDecisionValue(value),sha256Hex(stableStringify(encodeItemScalarDecisionValue(value)))].includes(hashes[field])})?{receipt:params.receipt,declaredFields}:null}async function verifyMergeReceiptProof(params){if(params.proof.gitWorkspaceRoot===null)return{trusted:!1,reason:"git_workspace_unavailable",receipt_ids:[]};if(params.itemPath===null||params.currentItemReplay===null)return{trusted:!1,reason:"item_path_unavailable",receipt_ids:[]};const itemReceipts=params.proof.receipts.filter(receipt=>receipt.item_id===params.id);if(itemReceipts.length===0)return{trusted:!1,reason:"no_item_receipts",receipt_ids:[]};const currentPath=await realpath(params.itemPath),trustedReceipts=[];for(const receipt of itemReceipts){const trusted=await verifyReceiptAgainstSnapshot({receipt,gitWorkspaceRoot:params.proof.gitWorkspaceRoot,currentPath,currentItemReplay:params.currentItemReplay});trusted&&trustedReceipts.push(trusted)}const trustedFields=new Set(trustedReceipts.flatMap(({declaredFields})=>declaredFields)),reconciliationFields=params.reconciliation?.reconciled_fields;return trustedReceipts.length>0&&(reconciliationFields===void 0||reconciliationFields.length>0&&reconciliationFields.every(field=>trustedFields.has(field)))?{trusted:!0,reason:"trusted_merge_driver_hash_evidence",receipt_ids:trustedReceipts.map(({receipt})=>receipt.id)}:{trusted:!1,reason:"no_receipt_set_proves_snapshot",receipt_ids:[]}}async function assertHistoryRepairAbandonmentProof(proof,context,chainOk,reanchor){if(proof===void 0)return;const{receipt,gitWorkspaceRoot}=proof,canonicalPath=context.currentItemPath===null?null:path.relative(gitWorkspaceRoot,context.currentItemPath).split(path.sep).join("/");if(!chainOk||reanchor.entriesRehashed!==0||reanchor.entriesPatchRepaired!==0||context.matchedChainBefore!==!0||context.currentItemRawBeforeLock===null||canonicalPath!==receipt.item_path||receipt.operation===void 0||!await isOriginalGitStateRestored(gitWorkspaceRoot,receipt.item_path,receipt.operation,context.currentItemRawBeforeLock))throw new PmCliError("Restored-origin receipt evidence no longer proves the exact clean item snapshot.",EXIT_CODE.CONFLICT,{code:"merge_reconcile_receipt_evidence_untrusted",recovery:{suggested_retry:"pm merge reconcile --dry-run"}})}async function resolveHistoryRepairMergeEvidence(params){const requestedReceiptIds=new Set(params.options.mergeReceiptProof?.receipts.filter(receipt=>receipt.item_id===params.subjectId).map(receipt=>receipt.id)??[]),subjectMergeReceipts=(params.options.mergeReceiptProof?await inspectMergeReceiptEvidence(params.options.mergeReceiptProof.gitWorkspaceRoot??process.cwd(),{includeReconciled:!0,includeLossless:!0,pmRoot:params.pmRoot}):void 0)?.receipts.filter(receipt=>receipt.item_id===params.subjectId&&requestedReceiptIds.has(receipt.id))??[],mergeReceiptProof=params.options.mergeReceiptProof?await verifyMergeReceiptProof({proof:{...params.options.mergeReceiptProof,receipts:subjectMergeReceipts},id:params.subjectId,itemPath:params.itemReplayContext.currentItemPath,currentItemReplay:params.itemReplayContext.currentItemReplay,reconciliation:params.reconciliation}):void 0;if(mergeReceiptProof&&!mergeReceiptProof.trusted&&params.options.force!==!0)throw new PmCliError(`Merge receipt evidence for ${params.subjectId} does not prove the exact item snapshot (${mergeReceiptProof.reason}).`,EXIT_CODE.CONFLICT,{code:"merge_reconcile_receipt_evidence_untrusted",required:"Use authoritative clone-local or durable receipt evidence whose canonical path, declared fields, and merged-value hashes match the current item, or review the mismatch and rerun with --force.",recovery:{suggested_retry:"pm merge reconcile --dry-run"}});const provenMergeReceipts=mergeReceiptProof?.trusted?subjectMergeReceipts.filter(receipt=>mergeReceiptProof.receipt_ids.includes(receipt.id)):[];return{mergeReceiptProof,effectiveAuditContext:provenMergeReceipts.length>0&&params.options.force!==!0?{...params.options.auditContext,merge:{receipts:provenMergeReceipts.map(summarizeMergeReceipt)}}:params.options.auditContext}}function describeHistoryRepairItemReplay(subject,snapshot,itemHashVersion){const currentItemPath=subject.located?.itemPath??null,loadedItem=snapshot.loadedItem,historyEntries=snapshot.entries;if(!loadedItem)return{currentItemReplay:null,currentItemPath,matchedChainBefore:null,currentItemRawBeforeLock:null,loadedItem:null};const currentItemReplay=toReplayDocument(loadedItem.document),lastOriginalAfterHash=historyEntries[historyEntries.length-1].after_hash;return{currentItemReplay,currentItemPath,matchedChainBefore:replayHashVerificationCandidates(currentItemReplay,itemHashVersion,resolveHistoryHashAlgorithm(historyEntries.at(-1)?.hash_algorithm)).includes(lastOriginalAfterHash),currentItemRawBeforeLock:loadedItem.raw,loadedItem}}function buildHistoryRepairMessage(params){return typeof params.message=="string"&&params.message.trim().length>0?params.message:`history-repair re-anchored ${params.entriesRehashed} entr${params.entriesRehashed===1?"y":"ies"}${params.entriesPatchRepaired>0?`, repaired ${params.entriesPatchRepaired} patch(es)`:""}${params.reconcileNeeded?", reconciled chain with on-disk item":""}.`}function buildHistoryRepairEntries(params){const rewrittenEntries=[...params.reanchorEntries];if(!params.changed)return{rewrittenEntries,auditEntryAdded:!1};const afterReplay=params.reconcileNeeded&&params.currentItemReplay?params.currentItemReplay:params.finalReplay,algorithm=resolveHistoryHashAlgorithm(params.reanchorEntries.at(-1)?.hash_algorithm),beforeHashes=replayHashVerificationCandidates(params.finalReplay,params.itemHashVersion,algorithm),previousAfterHash=params.reanchorEntries[params.reanchorEntries.length-1].after_hash,semanticIndex=beforeHashes.indexOf(previousAfterHash),afterHashes=replayHashVerificationCandidates(afterReplay,params.itemHashVersion,algorithm),auditEntry={hash_algorithm:algorithm,ts:nowIso(),author:params.author,op:params.auditOperation,patch:params.reconcileNeeded&&params.currentItemReplay?jsonPatch.compare(params.finalReplay,params.currentItemReplay):[],before_hash:beforeHashes[semanticIndex],after_hash:afterHashes[semanticIndex],message:params.message,...params.explicitItemHashVersion?{item_hash_version:params.itemHashVersion}:{},...params.auditContext===void 0?{}:{context:params.auditContext}};return rewrittenEntries.push(sealHistoryRecord({...auditEntry,event_class:classifyHistoryEvent(auditEntry)})),{rewrittenEntries,auditEntryAdded:!0}}function collectHistoryRepairWarnings(changed,skippedOps,reconciliation){const warnings=[];return changed||warnings.push("history_repair_no_changes"),skippedOps>0&&warnings.push(`history_repair_skipped_unresolvable_ops:${skippedOps}`),reconciliation&&reconciliation.discarded_events.length>0&&warnings.push(`history_repair_reconcile_discards_events:${reconciliation.discarded_events.length}`,`history_repair_discarded_authors:${reconciliation.discarded_authors.join(",")}`),warnings}async function runHistoryRepair(id,options,global2){const{pmRoot,settings,typeRegistry}=await resolveHistoryWorkspace(global2.path),subject=await resolveHistorySubject(pmRoot,id,settings,typeRegistry.type_to_folder);return options.salvageTail===!0?salvageHistoryTail({pmRoot,subject,settings,typeRegistry,options,author:resolveAuthor(options.author,settings.author_default)}):runHistoryMaintenance({pmRoot,subject,settings,typeRegistry,operation:"history-repair",options,transform:snapshot=>buildHistoryRepairPlan({pmRoot,subject,options},snapshot)})}function shouldAppendForcedHistoryAudit(options,verifiedHistoryEntries,auditContext){const alreadyRecorded=(options.mergeAbandonmentProof!==void 0||options.mergeReceiptProof!==void 0&&options.force!==!0)&&auditContext!==void 0&&verifiedHistoryEntries.some(entry=>entry.record_hash_version!==void 0&&entry.op==="merge_reconcile"&&stableStringify(entry.context)===stableStringify(auditContext));return options.forceAuditEntry===!0&&!alreadyRecorded}async function buildHistoryRepairPlan(params,snapshot){const{pmRoot,subject,options}=params,historyEntries=snapshot.entries,chainBefore=snapshot.verification,chainVersionBefore=verifyHistoryChainWithVersion(historyEntries),provenanceNormalization=options.normalizeProvenance?normalizeInvalidHistoryProvenance(historyEntries):{entries:historyEntries,receipt:{changed:!1,events_changed:0,observations_removed:0,invalid_values:[]}},itemHashVersion=resolveHistoryRepairItemHashVersion(provenanceNormalization.entries),explicitVersionsBefore=new Set(provenanceNormalization.entries.map(entry=>entry.item_hash_version).filter(version=>version!==void 0)),reanchor=reanchorHistoryEntries(provenanceNormalization.entries,itemHashVersion),itemReplayContext=describeHistoryRepairItemReplay(subject,snapshot,itemHashVersion);await assertHistoryRepairAbandonmentProof(options.mergeAbandonmentProof,itemReplayContext,chainBefore.ok,reanchor);const finalReplay=reanchor.finalDocument,finalReplayHashes=replayHashVerificationCandidates(finalReplay,itemHashVersion);let reconcileNeeded=!1;if(itemReplayContext.currentItemReplay!==null){const currentItemReplayHashes=replayHashVerificationCandidates(itemReplayContext.currentItemReplay,itemHashVersion);reconcileNeeded=!finalReplayHashes.some((hash,hashIndex)=>hash===currentItemReplayHashes[hashIndex])}const reconciliation=reconcileNeeded&&itemReplayContext.currentItemReplay?analyzeReconciliationDiscard(reanchor.entries,finalReplay,itemReplayContext.currentItemReplay):void 0,{mergeReceiptProof,effectiveAuditContext}=await resolveHistoryRepairMergeEvidence({options,pmRoot,subjectId:subject.id,itemReplayContext,reconciliation}),changed=[reanchor.entriesRehashed>0,reanchor.entriesPatchRepaired>0,reconcileNeeded,shouldAppendForcedHistoryAudit(options,reanchor.entries,effectiveAuditContext),provenanceNormalization.receipt.changed].some(Boolean),author=snapshot.author,dryRun=!!options.dryRun,repairMessage=buildHistoryRepairMessage({message:options.message,entriesRehashed:reanchor.entriesRehashed,entriesPatchRepaired:reanchor.entriesPatchRepaired,reconcileNeeded}),{rewrittenEntries,auditEntryAdded}=buildHistoryRepairEntries({reanchorEntries:reanchor.entries,changed,reconcileNeeded,currentItemReplay:itemReplayContext.currentItemReplay,finalReplay,author,message:repairMessage,auditOperation:options.auditOperation??"history_repair",auditContext:provenanceNormalization.receipt.changed?{...effectiveAuditContext,provenance_normalization:provenanceNormalization.receipt}:effectiveAuditContext,itemHashVersion,explicitItemHashVersion:reanchor.explicitItemHashVersion}),warnings=collectHistoryRepairWarnings(changed,reanchor.skippedOps,reconciliation);return{changed,rewrittenEntries,beforeWrite:async()=>assertHistoryRepairAbandonmentProof(options.mergeAbandonmentProof,itemReplayContext,chainBefore.ok,reanchor),report:({verification:historyVerify,warnings:writeWarnings})=>({id:subject.id,dry_run:dryRun,changed,history:{path:subject.historyPath,entries_scanned:historyEntries.length,chain_drift_before:!chainBefore.ok,entries_rehashed:reanchor.entriesRehashed,entries_patch_repaired:reanchor.entriesPatchRepaired,converted_replace_to_add:reanchor.convertedReplaceToAdd,skipped_ops:reanchor.skippedOps,reconciled_with_item:reconcileNeeded,audit_entry_added:auditEntryAdded,verify_ok:historyVerify.ok,verify_errors:historyVerify.errors,item_hash_version_before:chainVersionBefore.item_hash_version??null,item_hash_version_after:itemHashVersion,version_disposition:explicitVersionsBefore.size>1?"selected_for_ambiguous_stream":"preserved"},item:{exists:itemReplayContext.currentItemPath!==null,path:itemReplayContext.currentItemPath,matched_chain_before:itemReplayContext.matchedChainBefore},provenance_normalization:{requested:options.normalizeProvenance===!0,...provenanceNormalization.receipt},...reconciliation?{reconciliation}:{},...mergeReceiptProof?{merge_receipt_proof:mergeReceiptProof}:{},warnings:[...new Set([...warnings,...writeWarnings])].sort((left,right)=>left.localeCompare(right)),generated_at:nowIso()})}}function assertHistoryRepairTarget(id,all){if(all&&id!==void 0)throw new PmCliError("history-repair: <id> and --all are mutually exclusive; pass an item id to repair one stream or --all to repair every drifted stream.",EXIT_CODE.USAGE);if(!all&&id===void 0)throw new PmCliError("history-repair: provide an item <id> or pass --all to repair every drifted stream.",EXIT_CODE.USAGE)}async function runHistoryRepairAll(options,global2){if(options.salvageTail===!0)throw new PmCliError("Tail salvage requires one explicit item ID; --all is not supported.",EXIT_CODE.USAGE);const{pmRoot,settings,typeRegistry}=await resolveHistoryWorkspace(global2.path),itemReadWarnings=[],items=await listAllItemMetadataWithBody(pmRoot,settings.item_format,typeRegistry.type_to_folder,itemReadWarnings,settings.schema,{forceSourceScan:!0}),drift=await scanHistoryDrift(pmRoot,items),invalidProvenanceIds=options.normalizeProvenance?await listInvalidProvenanceHistoryStreamIds(pmRoot):[],targetedIds=[...new Set([...drift.driftedItems,...invalidProvenanceIds])].sort((left,right)=>left.localeCompare(right)),streams=[],repairWarnings=[],totals={repaired:0,skipped_clean:0,failed:0};for(const driftedId of targetedIds)try{const result=await runHistoryRepair(driftedId,{...options,auditContext:options.auditContextById?.[driftedId],auditContextById:void 0,mergeReceiptProof:options.mergeReceiptProofById?.[driftedId]??options.mergeReceiptProof,mergeReceiptProofById:void 0},global2),outcome=result.changed?"repaired":"skipped_clean";totals[outcome]+=1,repairWarnings.push(...result.warnings.map(warning=>`${driftedId}:${warning}`)),streams.push({id:driftedId,outcome,entries_rehashed:result.history.entries_rehashed,entries_patch_repaired:result.history.entries_patch_repaired,reconciled_with_item:result.history.reconciled_with_item,...result.reconciliation?{reconciliation:result.reconciliation}:{},...result.merge_receipt_proof?{merge_receipt_proof:result.merge_receipt_proof}:{},warnings:result.warnings})}catch(error){totals.failed+=1,streams.push({id:driftedId,outcome:"failed",error:error instanceof Error?error.message:String(error)})}return options.dryRun||await invalidateHistoryDriftCache(pmRoot),{all:!0,dry_run:!!options.dryRun,scanned_streams:items.length,drifted_streams:drift.driftedItems.length,provenance_invalid_streams:invalidProvenanceIds.length,streams,totals,warnings:[...new Set([...itemReadWarnings,...repairWarnings])].sort((left,right)=>left.localeCompare(right)),generated_at:nowIso()}}export{analyzeReconciliationDiscard,assertHistoryRepairTarget,runHistoryRepair,runHistoryRepairAll};
1
+ (function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="42f8db8f-d659-58e9-84af-21ced6d6a403")}catch{}})();import{salvageHistoryTail}from"./history/salvage.js";import{resolveHistoryHashAlgorithm}from"../core/history/digest.js";import{realpath}from"node:fs/promises";import path from"node:path";import jsonPatch from"fast-json-patch";import{patchPathToChangedField}from"../core/history/history-diff.js";import{normalizeReplayPatchOps,reanchorHistoryEntries,replayHashVerificationCandidates,resolveHistoryRepairItemHashVersion,toReplayDocument,verifyHistoryChainWithVersion}from"../core/history/replay.js";import{sealHistoryRecord}from"../core/history/history.js";import{classifyHistoryEvent}from"../core/history/event-classification.js";import{scanHistoryDrift}from"../core/history/drift-scan.js";import{invalidateHistoryDriftCache}from"../core/history/drift-cache.js";import{EXIT_CODE}from"../core/shared/constants.js";import{PmCliError}from"../core/shared/errors.js";import{sha256Hex,stableStringify}from"../core/shared/serialization.js";import{resolveAuthor}from"../core/shared/author.js";import{nowIso}from"../core/shared/time.js";import{listAllItemMetadataWithBody}from"../core/store/item-store.js";import{resolveHistoryWorkspace,resolveHistorySubject}from"./history/subject.js";import{runHistoryMaintenance}from"./history/maintenance.js";import{isOriginalGitStateRestored}from"./merge/receipt-operation.js";import{inspectMergeReceiptEvidence,summarizeMergeReceipt}from"./merge/receipts.js";import{encodeItemScalarDecisionValue,hashItemScalarDecisionValue}from"./merge/three-way.js";import{listInvalidProvenanceHistoryStreamIds,normalizeInvalidHistoryProvenance}from"./governance/provenance-health.js";function replayFieldValue(document,field){return field==="body"?document.body:document.metadata[field]}function isDiagnosticCollectionRow(field,value){if(value===null||typeof value!="object"||Array.isArray(value))return!1;const row=value;return field==="comments"?typeof row.created_at=="string"&&typeof row.author=="string"&&typeof row.text=="string":typeof row.path=="string"||field==="tests"&&typeof row.command=="string"}function diagnosticLinkedRecord(value){const result={...value};if(result.source_kind==="merge_union"&&(result.source_kind="local_mutation"),result.provenance!==null&&typeof result.provenance=="object"&&!Array.isArray(result.provenance)){const provenance={...result.provenance};provenance.source_kind==="merge_union"&&(provenance.source_kind="local_mutation"),result.provenance=provenance}return result}function diagnosticCollectionValue(field,value){if(!Array.isArray(value)||!["comments","docs","tests"].includes(field)||!value.every(row=>isDiagnosticCollectionRow(field,row)))return value;const rows=value.map(row=>field==="comments"?row:diagnosticLinkedRecord(row));return[...new Map(rows.map(row=>[stableStringify(row),row])).values()]}function isReplayValuePreserved(replayed,reconciled){if(replayed===void 0||Object.is(replayed,reconciled))return!0;if(Array.isArray(replayed)){if(!Array.isArray(reconciled))return!1;const matched=new Set;return replayed.every(expected=>{const index=reconciled.findIndex((candidate,candidateIndex)=>!matched.has(candidateIndex)&&isReplayValuePreserved(expected,candidate));return index<0?!1:(matched.add(index),!0)})}if(replayed===null||reconciled===null||typeof replayed!="object"||typeof reconciled!="object"||Array.isArray(reconciled))return!1;const reconciledRecord=reconciled;return Object.entries(replayed).every(([key,value])=>Object.hasOwn(reconciledRecord,key)&&isReplayValuePreserved(value,reconciledRecord[key]))}function collectReconciliationEvents(entries,fields){const remaining=new Set(fields),events=[];for(let index=entries.length-1;index>=0&&remaining.size>0;index-=1){const entry=entries[index],entryFields=new Set;for(const op of normalizeReplayPatchOps(entry.patch))entryFields.add(patchPathToChangedField(op.path)),op.from&&entryFields.add(patchPathToChangedField(op.from));const overlap=[...remaining].filter(field=>entryFields.has(field));if(overlap.length!==0){for(const field of overlap)remaining.delete(field);events.push({index:index+1,ts:entry.ts,author:entry.author,op:entry.op,fields:overlap.sort((left,right)=>left.localeCompare(right))})}}return events.reverse()}function analyzeReconciliationDiscard(entries,finalReplay,currentItemReplay){const reconcilePatch=jsonPatch.compare(finalReplay,currentItemReplay);if(reconcilePatch.length===0)return;const reconciledFields=new Set;for(const op of reconcilePatch)reconciledFields.add(patchPathToChangedField(op.path));const preservedFields=new Set([...reconciledFields].filter(field=>isReplayValuePreserved(diagnosticCollectionValue(field,replayFieldValue(finalReplay,field)),diagnosticCollectionValue(field,replayFieldValue(currentItemReplay,field))))),revertedFields=new Set([...reconciledFields].filter(field=>!preservedFields.has(field))),discardedEvents=collectReconciliationEvents(entries,revertedFields),preservedEvents=collectReconciliationEvents(entries,preservedFields),sortedReconciledFields=[...reconciledFields].sort((left,right)=>left.localeCompare(right)),sortedRevertedFields=[...revertedFields].sort((left,right)=>left.localeCompare(right)),sortedPreservedFields=[...preservedFields].sort((left,right)=>left.localeCompare(right)),discardedAuthors=[...new Set(discardedEvents.map(event=>event.author))].sort((left,right)=>left.localeCompare(right)),preservedAuthors=[...new Set(preservedEvents.map(event=>event.author))].sort((left,right)=>left.localeCompare(right));return{reconciled_field_count:reconciledFields.size,reconciled_fields:sortedReconciledFields,reverted_field_count:revertedFields.size,reverted_fields:sortedRevertedFields,discarded_events:discardedEvents,discarded_authors:discardedAuthors,preserved_field_count:preservedFields.size,preserved_fields:sortedPreservedFields,preserved_events:preservedEvents,preserved_authors:preservedAuthors,recovery_hint:discardedEvents.length>0?"Reconciliation keeps the on-disk item and overwrites these replayed mutations. To recover one, inspect it with pm history <id> --diff --field <field>, then re-apply the lost value with pm update.":null}}async function canonicalRealPath(value){try{return await realpath(value)}catch{return null}}async function verifyReceiptAgainstSnapshot(params){if(await canonicalRealPath(path.resolve(params.gitWorkspaceRoot,params.receipt.item_path))!==params.currentPath)return null;const declaredFields=[...new Set([...params.receipt.fields_from_theirs,...params.receipt.union_fields,...params.receipt.decisions.map(decision=>decision.field)])].sort(),hashes=params.receipt.merged_field_hashes;if(!hashes||declaredFields.length===0)return null;const hashFields=Object.keys(hashes).sort();if(declaredFields.length!==hashFields.length||declaredFields.some((field,index)=>field!==hashFields[index]))return null;const currentMetadata=params.currentItemReplay.metadata;return declaredFields.every(field=>{const value=field==="body"?params.currentItemReplay.body:currentMetadata[field];return[hashItemScalarDecisionValue(value),sha256Hex(stableStringify(encodeItemScalarDecisionValue(value)))].includes(hashes[field])})?{receipt:params.receipt,declaredFields}:null}async function verifyMergeReceiptProof(params){if(params.proof.gitWorkspaceRoot===null)return{trusted:!1,reason:"git_workspace_unavailable",receipt_ids:[]};if(params.itemPath===null||params.currentItemReplay===null)return{trusted:!1,reason:"item_path_unavailable",receipt_ids:[]};const itemReceipts=params.proof.receipts.filter(receipt=>receipt.item_id===params.id);if(itemReceipts.length===0)return{trusted:!1,reason:"no_item_receipts",receipt_ids:[]};const currentPath=await realpath(params.itemPath),trustedReceipts=[];for(const receipt of itemReceipts){const trusted=await verifyReceiptAgainstSnapshot({receipt,gitWorkspaceRoot:params.proof.gitWorkspaceRoot,currentPath,currentItemReplay:params.currentItemReplay});trusted&&trustedReceipts.push(trusted)}const trustedFields=new Set(trustedReceipts.flatMap(({declaredFields})=>declaredFields)),reconciliationFields=params.reconciliation?.reconciled_fields;return trustedReceipts.length>0&&(reconciliationFields===void 0||reconciliationFields.length>0&&reconciliationFields.every(field=>trustedFields.has(field)))?{trusted:!0,reason:"trusted_merge_driver_hash_evidence",receipt_ids:trustedReceipts.map(({receipt})=>receipt.id)}:{trusted:!1,reason:"no_receipt_set_proves_snapshot",receipt_ids:[]}}async function assertHistoryRepairAbandonmentProof(proof,context,chainOk,reanchor){if(proof===void 0)return;const{receipt,gitWorkspaceRoot}=proof,canonicalPath=context.currentItemPath===null?null:path.relative(gitWorkspaceRoot,context.currentItemPath).split(path.sep).join("/");if(!chainOk||reanchor.entriesRehashed!==0||reanchor.entriesPatchRepaired!==0||context.matchedChainBefore!==!0||context.currentItemRawBeforeLock===null||canonicalPath!==receipt.item_path||receipt.operation===void 0||!await isOriginalGitStateRestored(gitWorkspaceRoot,receipt.item_path,receipt.operation,context.currentItemRawBeforeLock))throw new PmCliError("Restored-origin receipt evidence no longer proves the exact clean item snapshot.",EXIT_CODE.CONFLICT,{code:"merge_reconcile_receipt_evidence_untrusted",recovery:{suggested_retry:"pm merge reconcile --dry-run"}})}async function resolveHistoryRepairMergeEvidence(params){const requestedReceiptIds=new Set(params.options.mergeReceiptProof?.receipts.filter(receipt=>receipt.item_id===params.subjectId).map(receipt=>receipt.id)??[]),subjectMergeReceipts=(params.options.mergeReceiptProof?await inspectMergeReceiptEvidence(params.options.mergeReceiptProof.gitWorkspaceRoot??process.cwd(),{includeReconciled:!0,includeLossless:!0,pmRoot:params.pmRoot}):void 0)?.receipts.filter(receipt=>receipt.item_id===params.subjectId&&requestedReceiptIds.has(receipt.id))??[],mergeReceiptProof=params.options.mergeReceiptProof?await verifyMergeReceiptProof({proof:{...params.options.mergeReceiptProof,receipts:subjectMergeReceipts},id:params.subjectId,itemPath:params.itemReplayContext.currentItemPath,currentItemReplay:params.itemReplayContext.currentItemReplay,reconciliation:params.reconciliation}):void 0;if(mergeReceiptProof&&!mergeReceiptProof.trusted&&params.options.force!==!0)throw new PmCliError(`Merge receipt evidence for ${params.subjectId} does not prove the exact item snapshot (${mergeReceiptProof.reason}).`,EXIT_CODE.CONFLICT,{code:"merge_reconcile_receipt_evidence_untrusted",required:"Use authoritative clone-local or durable receipt evidence whose canonical path, declared fields, and merged-value hashes match the current item, or review the mismatch and rerun with --force.",recovery:{suggested_retry:"pm merge reconcile --dry-run"}});const provenMergeReceipts=mergeReceiptProof?.trusted?subjectMergeReceipts.filter(receipt=>mergeReceiptProof.receipt_ids.includes(receipt.id)):[];return{mergeReceiptProof,effectiveAuditContext:provenMergeReceipts.length>0&&params.options.force!==!0?{...params.options.auditContext,merge:{receipts:provenMergeReceipts.map(summarizeMergeReceipt)}}:params.options.auditContext}}function describeHistoryRepairItemReplay(subject,snapshot,itemHashVersion){const currentItemPath=subject.located?.itemPath??null,loadedItem=snapshot.loadedItem,historyEntries=snapshot.entries;if(!loadedItem)return{currentItemReplay:null,currentItemPath,matchedChainBefore:null,currentItemRawBeforeLock:null,loadedItem:null};const currentItemReplay=toReplayDocument(loadedItem.document),lastOriginalAfterHash=historyEntries[historyEntries.length-1].after_hash;return{currentItemReplay,currentItemPath,matchedChainBefore:replayHashVerificationCandidates(currentItemReplay,itemHashVersion,resolveHistoryHashAlgorithm(historyEntries.at(-1)?.hash_algorithm)).includes(lastOriginalAfterHash),currentItemRawBeforeLock:loadedItem.raw,loadedItem}}function buildHistoryRepairMessage(params){return typeof params.message=="string"&&params.message.trim().length>0?params.message:`history-repair re-anchored ${params.entriesRehashed} entr${params.entriesRehashed===1?"y":"ies"}${params.entriesPatchRepaired>0?`, repaired ${params.entriesPatchRepaired} patch(es)`:""}${params.reconcileNeeded?", reconciled chain with on-disk item":""}.`}function buildHistoryRepairEntries(params){const rewrittenEntries=[...params.reanchorEntries];if(!params.changed)return{rewrittenEntries,auditEntryAdded:!1};const afterReplay=params.reconcileNeeded&&params.currentItemReplay?params.currentItemReplay:params.finalReplay,algorithm=resolveHistoryHashAlgorithm(params.reanchorEntries.at(-1)?.hash_algorithm),beforeHashes=replayHashVerificationCandidates(params.finalReplay,params.itemHashVersion,algorithm),previousAfterHash=params.reanchorEntries[params.reanchorEntries.length-1].after_hash,semanticIndex=beforeHashes.indexOf(previousAfterHash),afterHashes=replayHashVerificationCandidates(afterReplay,params.itemHashVersion,algorithm),auditEntry={hash_algorithm:algorithm,ts:nowIso(),author:params.author,op:params.auditOperation,patch:params.reconcileNeeded&&params.currentItemReplay?jsonPatch.compare(params.finalReplay,params.currentItemReplay):[],before_hash:beforeHashes[semanticIndex],after_hash:afterHashes[semanticIndex],message:params.message,...params.explicitItemHashVersion?{item_hash_version:params.itemHashVersion}:{},...params.auditContext===void 0?{}:{context:params.auditContext}};return rewrittenEntries.push(sealHistoryRecord({...auditEntry,event_class:classifyHistoryEvent(auditEntry)})),{rewrittenEntries,auditEntryAdded:!0}}function collectHistoryRepairWarnings(changed,skippedOps,reconciliation){const warnings=[];return changed||warnings.push("history_repair_no_changes"),skippedOps>0&&warnings.push(`history_repair_skipped_unresolvable_ops:${skippedOps}`),reconciliation&&reconciliation.discarded_events.length>0&&warnings.push(`history_repair_reconcile_discards_events:${reconciliation.discarded_events.length}`,`history_repair_discarded_authors:${reconciliation.discarded_authors.join(",")}`),warnings}async function runHistoryRepair(id,options,global2){const{pmRoot,settings,typeRegistry}=await resolveHistoryWorkspace(global2.path),subject=await resolveHistorySubject(pmRoot,id,settings,typeRegistry.type_to_folder);return options.salvageTail===!0?salvageHistoryTail({pmRoot,subject,settings,typeRegistry,options,author:resolveAuthor(options.author,settings.author_default)}):runHistoryMaintenance({pmRoot,subject,settings,typeRegistry,operation:"history-repair",options,transform:snapshot=>buildHistoryRepairPlan({pmRoot,subject,options},snapshot)})}function shouldAppendForcedHistoryAudit(options,verifiedHistoryEntries,auditContext){const alreadyRecorded=(options.mergeAbandonmentProof!==void 0||options.mergeReceiptProof!==void 0&&options.force!==!0)&&auditContext!==void 0&&verifiedHistoryEntries.some(entry=>entry.record_hash_version!==void 0&&entry.op==="merge_reconcile"&&stableStringify(entry.context)===stableStringify(auditContext));return options.forceAuditEntry===!0&&!alreadyRecorded}async function buildHistoryRepairPlan(params,snapshot){const{pmRoot,subject,options}=params,historyEntries=snapshot.entries,chainBefore=snapshot.verification,chainVersionBefore=verifyHistoryChainWithVersion(historyEntries),provenanceNormalization=options.normalizeProvenance?normalizeInvalidHistoryProvenance(historyEntries):{entries:historyEntries,receipt:{changed:!1,events_changed:0,observations_removed:0,invalid_values:[]}},itemHashVersion=resolveHistoryRepairItemHashVersion(provenanceNormalization.entries),explicitVersionsBefore=new Set(provenanceNormalization.entries.map(entry=>entry.item_hash_version).filter(version=>version!==void 0)),reanchor=reanchorHistoryEntries(provenanceNormalization.entries,itemHashVersion),itemReplayContext=describeHistoryRepairItemReplay(subject,snapshot,itemHashVersion);await assertHistoryRepairAbandonmentProof(options.mergeAbandonmentProof,itemReplayContext,chainBefore.ok,reanchor);const finalReplay=reanchor.finalDocument,finalReplayHashes=replayHashVerificationCandidates(finalReplay,itemHashVersion);let reconcileNeeded=!1;if(itemReplayContext.currentItemReplay!==null){const currentItemReplayHashes=replayHashVerificationCandidates(itemReplayContext.currentItemReplay,itemHashVersion);reconcileNeeded=!finalReplayHashes.some((hash,hashIndex)=>hash===currentItemReplayHashes[hashIndex])}const reconciliation=reconcileNeeded&&itemReplayContext.currentItemReplay?analyzeReconciliationDiscard(reanchor.entries,finalReplay,itemReplayContext.currentItemReplay):void 0,{mergeReceiptProof,effectiveAuditContext}=await resolveHistoryRepairMergeEvidence({options,pmRoot,subjectId:subject.id,itemReplayContext,reconciliation}),changed=[reanchor.entriesRehashed>0,reanchor.entriesPatchRepaired>0,reconcileNeeded,shouldAppendForcedHistoryAudit(options,reanchor.entries,effectiveAuditContext),provenanceNormalization.receipt.changed].some(Boolean),author=snapshot.author,dryRun=!!options.dryRun,repairMessage=buildHistoryRepairMessage({message:options.message,entriesRehashed:reanchor.entriesRehashed,entriesPatchRepaired:reanchor.entriesPatchRepaired,reconcileNeeded}),{rewrittenEntries,auditEntryAdded}=buildHistoryRepairEntries({reanchorEntries:reanchor.entries,changed,reconcileNeeded,currentItemReplay:itemReplayContext.currentItemReplay,finalReplay,author,message:repairMessage,auditOperation:options.auditOperation??"history_repair",auditContext:provenanceNormalization.receipt.changed?{...effectiveAuditContext,provenance_normalization:provenanceNormalization.receipt}:effectiveAuditContext,itemHashVersion,explicitItemHashVersion:reanchor.explicitItemHashVersion}),warnings=collectHistoryRepairWarnings(changed,reanchor.skippedOps,reconciliation);return{changed,rewrittenEntries,beforeWrite:async()=>assertHistoryRepairAbandonmentProof(options.mergeAbandonmentProof,itemReplayContext,chainBefore.ok,reanchor),report:({verification:historyVerify,warnings:writeWarnings})=>({id:subject.id,dry_run:dryRun,changed,history:{path:subject.historyPath,entries_scanned:historyEntries.length,chain_drift_before:!chainBefore.ok,entries_rehashed:reanchor.entriesRehashed,entries_patch_repaired:reanchor.entriesPatchRepaired,converted_replace_to_add:reanchor.convertedReplaceToAdd,skipped_ops:reanchor.skippedOps,reconciled_with_item:reconcileNeeded,audit_entry_added:auditEntryAdded,verify_ok:historyVerify.ok,verify_errors:historyVerify.errors,item_hash_version_before:chainVersionBefore.item_hash_version??null,item_hash_version_after:itemHashVersion,version_disposition:explicitVersionsBefore.size>1?"selected_for_ambiguous_stream":"preserved"},item:{exists:itemReplayContext.currentItemPath!==null,path:itemReplayContext.currentItemPath,matched_chain_before:itemReplayContext.matchedChainBefore},provenance_normalization:{requested:options.normalizeProvenance===!0,...provenanceNormalization.receipt},...reconciliation?{reconciliation}:{},...mergeReceiptProof?{merge_receipt_proof:mergeReceiptProof}:{},warnings:[...new Set([...warnings,...writeWarnings])].sort((left,right)=>left.localeCompare(right)),generated_at:nowIso()})}}function assertHistoryRepairTarget(id,all){if(all&&id!==void 0)throw new PmCliError("history-repair: <id> and --all are mutually exclusive; pass an item id to repair one stream or --all to repair every drifted stream.",EXIT_CODE.USAGE);if(!all&&id===void 0)throw new PmCliError("history-repair: provide an item <id> or pass --all to repair every drifted stream.",EXIT_CODE.USAGE)}async function runHistoryRepairAll(options,global2){if(options.salvageTail===!0)throw new PmCliError("Tail salvage requires one explicit item ID; --all is not supported.",EXIT_CODE.USAGE);const{pmRoot,settings,typeRegistry}=await resolveHistoryWorkspace(global2.path),itemReadWarnings=[],items=await listAllItemMetadataWithBody(pmRoot,settings.item_format,typeRegistry.type_to_folder,itemReadWarnings,settings.schema,{forceSourceScan:!0}),drift=await scanHistoryDrift(pmRoot,items),invalidProvenanceIds=options.normalizeProvenance?await listInvalidProvenanceHistoryStreamIds(pmRoot):[],targetedIds=[...new Set([...drift.driftedItems,...invalidProvenanceIds])].sort((left,right)=>left.localeCompare(right)),streams=[],repairWarnings=[],totals={repaired:0,skipped_clean:0,failed:0};for(const driftedId of targetedIds)try{const result=await runHistoryRepair(driftedId,{...options,auditContext:options.auditContextById?.[driftedId],auditContextById:void 0,mergeReceiptProof:options.mergeReceiptProofById?.[driftedId]??options.mergeReceiptProof,mergeReceiptProofById:void 0},global2),outcome=result.changed?"repaired":"skipped_clean";totals[outcome]+=1,repairWarnings.push(...result.warnings.map(warning=>`${driftedId}:${warning}`)),streams.push({id:driftedId,outcome,entries_rehashed:result.history.entries_rehashed,entries_patch_repaired:result.history.entries_patch_repaired,reconciled_with_item:result.history.reconciled_with_item,...result.reconciliation?{reconciliation:result.reconciliation}:{},...result.merge_receipt_proof?{merge_receipt_proof:result.merge_receipt_proof}:{},warnings:result.warnings})}catch(error){totals.failed+=1,streams.push({id:driftedId,outcome:"failed",error:error instanceof Error?error.message:String(error)})}return options.dryRun||await invalidateHistoryDriftCache(pmRoot),{all:!0,dry_run:!!options.dryRun,scanned_streams:items.length,drifted_streams:drift.driftedItems.length,provenance_invalid_streams:invalidProvenanceIds.length,streams,totals,warnings:[...new Set([...itemReadWarnings,...repairWarnings])].sort((left,right)=>left.localeCompare(right)),generated_at:nowIso()}}export{analyzeReconciliationDiscard,assertHistoryRepairTarget,runHistoryRepair,runHistoryRepairAll};
2
2
  //# sourceMappingURL=history-repair.js.map