@unbrained/pm-cli 2026.10.4 → 2026.10.6

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 (751) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/CHANGELOG.md +37 -1
  3. package/dist/cli/after-command-context-usage.js +1 -1
  4. package/dist/cli/argv-utils.js +1 -1
  5. package/dist/cli/bootstrap-args.js +1 -1
  6. package/dist/cli/bundle-integrity.js +2 -2
  7. package/dist/cli/command-namespaces.js +1 -1
  8. package/dist/cli/commander-usage.d.ts +1 -1
  9. package/dist/cli/commander-usage.js +7 -4
  10. package/dist/cli/commands/annotations/comments.js +1 -1
  11. package/dist/cli/commands/annotations/docs.js +1 -1
  12. package/dist/cli/commands/annotations/files.js +1 -1
  13. package/dist/cli/commands/annotations/learnings.js +1 -1
  14. package/dist/cli/commands/annotations/notes.js +1 -1
  15. package/dist/cli/commands/extension/describe.js +1 -1
  16. package/dist/cli/commands/extension/extension.js +1 -1
  17. package/dist/cli/commands/extension/scaffold.js +1 -1
  18. package/dist/cli/commands/extension/shared.js +1 -1
  19. package/dist/cli/commands/governance/gc.js +1 -1
  20. package/dist/cli/commands/governance/health.js +1 -1
  21. package/dist/cli/commands/governance/telemetry.js +1 -1
  22. package/dist/cli/commands/governance/validate.js +1 -1
  23. package/dist/cli/commands/history/activity.js +1 -1
  24. package/dist/cli/commands/history/history-compact.js +1 -1
  25. package/dist/cli/commands/history/history-redact.js +1 -1
  26. package/dist/cli/commands/history/history-repair.js +1 -1
  27. package/dist/cli/commands/history/history.js +1 -1
  28. package/dist/cli/commands/history/restore.js +1 -1
  29. package/dist/cli/commands/lifecycle/append.js +1 -1
  30. package/dist/cli/commands/lifecycle/claim.js +1 -1
  31. package/dist/cli/commands/lifecycle/close-many.js +1 -1
  32. package/dist/cli/commands/lifecycle/close.js +1 -1
  33. package/dist/cli/commands/lifecycle/copy.js +1 -1
  34. package/dist/cli/commands/lifecycle/create.js +1 -1
  35. package/dist/cli/commands/lifecycle/delete.js +1 -1
  36. package/dist/cli/commands/lifecycle/focus.js +1 -1
  37. package/dist/cli/commands/lifecycle/plan.js +1 -1
  38. package/dist/cli/commands/lifecycle/update-many.js +1 -1
  39. package/dist/cli/commands/lifecycle/update.js +1 -1
  40. package/dist/cli/commands/query/aggregate.js +1 -1
  41. package/dist/cli/commands/query/context.js +1 -1
  42. package/dist/cli/commands/query/deps.js +1 -1
  43. package/dist/cli/commands/query/duplicates.js +1 -1
  44. package/dist/cli/commands/query/eval.js +1 -1
  45. package/dist/cli/commands/query/get.js +1 -1
  46. package/dist/cli/commands/query/graph.js +1 -1
  47. package/dist/cli/commands/query/list.js +1 -1
  48. package/dist/cli/commands/query/next.js +1 -1
  49. package/dist/cli/commands/query/search.js +1 -1
  50. package/dist/cli/commands/query/stats.js +1 -1
  51. package/dist/cli/commands/test/test-all.js +1 -1
  52. package/dist/cli/commands/test/test-runs.js +1 -1
  53. package/dist/cli/commands/test/test.js +1 -1
  54. package/dist/cli/commands/workspace/config.js +1 -1
  55. package/dist/cli/commands/workspace/contracts.js +1 -1
  56. package/dist/cli/commands/workspace/init.js +1 -1
  57. package/dist/cli/commands/workspace/merge.js +1 -1
  58. package/dist/cli/commands/workspace/profile.js +1 -1
  59. package/dist/cli/commands/workspace/schema.js +1 -1
  60. package/dist/cli/commands/workspace/upgrade.js +1 -1
  61. package/dist/cli/context-intent-invocation.js +1 -1
  62. package/dist/cli/description-stdin.js +1 -1
  63. package/dist/cli/error-guidance.js +3 -1
  64. package/dist/cli/extension-command-help.js +5 -3
  65. package/dist/cli/extension-command-options.js +1 -1
  66. package/dist/cli/extension-recovery.js +1 -1
  67. package/dist/cli/help-content.js +5 -2
  68. package/dist/cli/help-json-payload.js +6 -3
  69. package/dist/cli/invocation-profile.js +2 -2
  70. package/dist/cli/main.js +5 -5
  71. package/dist/cli/migration-gates.js +1 -1
  72. package/dist/cli/option-values.js +1 -1
  73. package/dist/cli/public.js +1 -1
  74. package/dist/cli/register-annotations.js +1 -1
  75. package/dist/cli/register-assurance.js +1 -1
  76. package/dist/cli/register-files-lookup.js +1 -1
  77. package/dist/cli/register-history-activity.js +1 -1
  78. package/dist/cli/register-history-author.js +1 -1
  79. package/dist/cli/register-history-maintenance.js +2 -2
  80. package/dist/cli/register-list-query.js +10 -10
  81. package/dist/cli/register-mutation-options.js +1 -1
  82. package/dist/cli/register-mutation.js +2 -2
  83. package/dist/cli/register-operations.js +1 -1
  84. package/dist/cli/register-setup.js +1 -1
  85. package/dist/cli/register-structured-mutation.js +1 -1
  86. package/dist/cli/registration-helpers.js +1 -1
  87. package/dist/cli/runtime/activation.js +1 -1
  88. package/dist/cli/runtime/invocation-options.js +1 -1
  89. package/dist/cli/runtime/projection-retry.js +1 -1
  90. package/dist/cli/runtime/selection.js +1 -1
  91. package/dist/cli/runtime/telemetry-outcome.js +1 -1
  92. package/dist/cli/runtime-compatibility-boundary.js +4 -4
  93. package/dist/cli/schema/registration.js +2 -2
  94. package/dist/cli/schema-registration-helpers.js +1 -1
  95. package/dist/cli/search-refresh.js +1 -1
  96. package/dist/cli/stats-analytics-json.js +1 -1
  97. package/dist/cli/telemetry-flush.js +1 -1
  98. package/dist/cli-bundle/bundle-manifest.json +163 -163
  99. package/dist/cli-bundle/chunks/{chunk-SMKHR6BM.js → chunk-25EW53VO.js} +89 -88
  100. package/dist/cli-bundle/chunks/chunk-3CCVTV6Q.js +8 -0
  101. package/dist/cli-bundle/chunks/chunk-3REXBTST.js +3 -0
  102. package/dist/cli-bundle/chunks/chunk-4WB55TBC.js +80 -0
  103. package/dist/cli-bundle/chunks/{chunk-7CE2DJMA.js → chunk-6STTPXOC.js} +2 -2
  104. package/dist/cli-bundle/chunks/chunk-ATB4ZZBQ.js +20 -0
  105. package/dist/cli-bundle/chunks/chunk-D4G43LBV.js +238 -0
  106. package/dist/cli-bundle/chunks/chunk-K6D6DMRT.js +31 -0
  107. package/dist/cli-bundle/chunks/chunk-KIRHWPZB.js +2 -0
  108. package/dist/cli-bundle/chunks/chunk-O67BH435.js +6 -0
  109. package/dist/cli-bundle/chunks/chunk-R7CG2DB7.js +2 -0
  110. package/dist/cli-bundle/chunks/chunk-RJHLD64E.js +3 -0
  111. package/dist/cli-bundle/chunks/chunk-TUKO5NF7.js +2 -0
  112. package/dist/cli-bundle/chunks/chunk-UZ7BIUCI.js +2 -0
  113. package/dist/cli-bundle/chunks/{chunk-GZMWISWW.js → chunk-XJD47LUH.js} +3 -3
  114. package/dist/cli-bundle/chunks/{register-list-query-QBGXO5JJ.js → register-list-query-53WYLNZT.js} +11 -11
  115. package/dist/cli-bundle/chunks/register-mutation-34XXUBVI.js +20 -0
  116. package/dist/cli-bundle/chunks/register-operations-WANO6EIM.js +2 -0
  117. package/dist/cli-bundle/chunks/register-setup-WT37UPBQ.js +2 -0
  118. package/dist/cli-bundle/focused-chunks/chunk-6KFKQD2D.js +165 -0
  119. package/dist/cli-bundle/focused-chunks/chunk-FOHRPFIT.js +2 -0
  120. package/dist/cli-bundle/focused-chunks/chunk-GRQXL5G5.js +8 -0
  121. package/dist/cli-bundle/focused-chunks/{chunk-467EW5RL.js → chunk-JZ4WGUVH.js} +3 -3
  122. package/dist/cli-bundle/focused-chunks/chunk-NM3PM6O6.js +3 -0
  123. package/dist/cli-bundle/focused-chunks/chunk-OT7HK7SG.js +2 -0
  124. package/dist/cli-bundle/focused-chunks/{chunk-Q6DJ5DFQ.js → chunk-PCLU34KB.js} +2 -2
  125. package/dist/cli-bundle/focused-chunks/{chunk-HFAW3FJQ.js → chunk-PSXFFQFT.js} +2 -2
  126. package/dist/cli-bundle/focused-chunks/chunk-QQIE4L42.js +2 -0
  127. package/dist/cli-bundle/focused-chunks/chunk-RPUNVKXK.js +2 -0
  128. package/dist/cli-bundle/focused-chunks/chunk-RXSVJPZ7.js +3 -0
  129. package/dist/cli-bundle/focused-chunks/chunk-SPN5QTZ3.js +30 -0
  130. package/dist/cli-bundle/focused-chunks/chunk-SUZJNPGB.js +6 -0
  131. package/dist/cli-bundle/focused-chunks/chunk-W4BG5HHS.js +2 -0
  132. package/dist/cli-bundle/focused-chunks/chunk-Y5HXFDTZ.js +20 -0
  133. package/dist/cli-bundle/focused-chunks/chunk-ZK5SOOPC.js +75 -0
  134. package/dist/cli-bundle/focused-chunks/chunk-ZQK2XUSS.js +12 -0
  135. package/dist/cli-bundle/main.js +25 -25
  136. package/dist/cli-bundle/sdk-authoring.js +1 -1
  137. package/dist/cli-bundle/sdk-contracts.js +2 -2
  138. package/dist/cli-bundle/sdk-core.js +25 -24
  139. package/dist/cli-bundle/sdk-governance.js +1 -1
  140. package/dist/cli-bundle/sdk-graph.js +1 -1
  141. package/dist/cli-bundle/sdk-merge.js +55 -55
  142. package/dist/cli-bundle/sdk-query.js +1 -1
  143. package/dist/cli-bundle/sdk-runtime.js +1 -1
  144. package/dist/cli-bundle/sdk-testing.js +1 -1
  145. package/dist/cli-bundle/sdk.js +10 -10
  146. package/dist/cli.js +1 -1
  147. package/dist/core/checkpoint/checkpoint-gc.js +1 -1
  148. package/dist/core/checkpoint/mutation-checkpoint.js +2 -2
  149. package/dist/core/config/nested-settings.js +1 -1
  150. package/dist/core/config/positional-value.js +1 -1
  151. package/dist/core/diagnostics/remediation.js +1 -1
  152. package/dist/core/extensions/activation-summary-markdown.js +2 -1
  153. package/dist/core/extensions/activation-summary.js +1 -1
  154. package/dist/core/extensions/activation-transaction.js +1 -1
  155. package/dist/core/extensions/capability-usage.js +1 -1
  156. package/dist/core/extensions/command-hook-context.js +1 -1
  157. package/dist/core/extensions/command-metadata-contract.js +1 -1
  158. package/dist/core/extensions/command-visibility-tier.js +1 -1
  159. package/dist/core/extensions/contribution-inventory.js +1 -1
  160. package/dist/core/extensions/exporter-output-contract.js +1 -1
  161. package/dist/core/extensions/extension-candidate.js +1 -1
  162. package/dist/core/extensions/extension-capability-aliases.js +1 -1
  163. package/dist/core/extensions/extension-hook-runtime.js +1 -1
  164. package/dist/core/extensions/extension-policy.js +1 -1
  165. package/dist/core/extensions/extension-registries.js +1 -1
  166. package/dist/core/extensions/extension-runtime-helpers.js +1 -1
  167. package/dist/core/extensions/extension-types.d.ts +2 -0
  168. package/dist/core/extensions/extension-types.js +1 -1
  169. package/dist/core/extensions/flag-definition-validation.js +1 -1
  170. package/dist/core/extensions/flag-value-types.js +1 -1
  171. package/dist/core/extensions/index.js +1 -1
  172. package/dist/core/extensions/item-field-types.js +1 -1
  173. package/dist/core/extensions/item-fields.js +1 -1
  174. package/dist/core/extensions/loader.js +1 -1
  175. package/dist/core/extensions/manifest-parser.js +1 -1
  176. package/dist/core/extensions/manifest-schema.js +1 -1
  177. package/dist/core/extensions/module-graph-snapshot.js +1 -1
  178. package/dist/core/extensions/preflight-ownership.js +1 -1
  179. package/dist/core/extensions/registration-contracts.js +1 -1
  180. package/dist/core/extensions/registration-validation.js +1 -1
  181. package/dist/core/extensions/registration-values.js +1 -1
  182. package/dist/core/extensions/reserved-host-flags.js +1 -1
  183. package/dist/core/extensions/runtime-registrations.js +1 -1
  184. package/dist/core/extensions/service-ownership.js +1 -1
  185. package/dist/core/extensions/version-compat.js +1 -1
  186. package/dist/core/fs/atomic-create.js +1 -1
  187. package/dist/core/fs/fs-utils.js +2 -2
  188. package/dist/core/fs/host-environment-errors.js +1 -1
  189. package/dist/core/fs/index.js +1 -1
  190. package/dist/core/fs/path-utils.js +1 -1
  191. package/dist/core/governance/content-fields.js +1 -1
  192. package/dist/core/governance/issue-codes.js +1 -1
  193. package/dist/core/governance/metadata-coverage.js +1 -1
  194. package/dist/core/history/digest.js +1 -1
  195. package/dist/core/history/drift-cache.js +3 -3
  196. package/dist/core/history/drift-scan.d.ts +4 -0
  197. package/dist/core/history/drift-scan.js +1 -1
  198. package/dist/core/history/event-classification.js +1 -1
  199. package/dist/core/history/event-index.js +8 -7
  200. package/dist/core/history/history-compact-bulk.js +1 -1
  201. package/dist/core/history/history-diff.js +1 -1
  202. package/dist/core/history/history-rewrite.js +1 -1
  203. package/dist/core/history/history-storage-stats.js +1 -1
  204. package/dist/core/history/history-stream-policy.js +1 -1
  205. package/dist/core/history/history.js +2 -2
  206. package/dist/core/history/identity.js +1 -1
  207. package/dist/core/history/index.js +1 -1
  208. package/dist/core/history/operation-contract.js +1 -1
  209. package/dist/core/history/projection.js +1 -1
  210. package/dist/core/history/read.js +1 -1
  211. package/dist/core/history/replay.js +2 -1
  212. package/dist/core/history/tombstone.js +1 -1
  213. package/dist/core/history/version-address.js +1 -1
  214. package/dist/core/history/workspace-history.js +2 -2
  215. package/dist/core/io/body-file.js +1 -1
  216. package/dist/core/io/bulk-ids-input.js +2 -1
  217. package/dist/core/item/actionability.js +1 -1
  218. package/dist/core/item/dependency-reference.js +1 -1
  219. package/dist/core/item/id.js +1 -1
  220. package/dist/core/item/index.js +1 -1
  221. package/dist/core/item/item-format-version.js +1 -1
  222. package/dist/core/item/item-format.js +6 -4
  223. package/dist/core/item/item-record.js +1 -1
  224. package/dist/core/item/item-type-definition.js +1 -1
  225. package/dist/core/item/parent-reference-policy.js +1 -1
  226. package/dist/core/item/parse.js +8 -2
  227. package/dist/core/item/plan-lifecycle.js +1 -1
  228. package/dist/core/item/priority.js +1 -1
  229. package/dist/core/item/sprint-release-format.js +1 -1
  230. package/dist/core/item/status-filter.js +1 -1
  231. package/dist/core/item/status.js +1 -1
  232. package/dist/core/item/toon-decode.js +1 -1
  233. package/dist/core/item/type-registry.js +1 -1
  234. package/dist/core/item/type-synonyms.js +1 -1
  235. package/dist/core/lock/index.js +1 -1
  236. package/dist/core/lock/lock-gc.js +1 -1
  237. package/dist/core/lock/lock.js +3 -3
  238. package/dist/core/output/mutation-projection.js +1 -1
  239. package/dist/core/output/output-control.js +1 -1
  240. package/dist/core/output/output.js +22 -10
  241. package/dist/core/output/query-summary.js +1 -1
  242. package/dist/core/output/tabular.js +3 -1
  243. package/dist/core/packages/manifest.js +1 -1
  244. package/dist/core/packages/root.js +1 -1
  245. package/dist/core/policy/workflow-policy-schema.js +1 -1
  246. package/dist/core/policy/workflow-policy-store.js +1 -1
  247. package/dist/core/policy/workflow-policy.js +1 -1
  248. package/dist/core/profile/profile-describe.js +1 -1
  249. package/dist/core/profile/profile-lint.js +1 -1
  250. package/dist/core/profile/profile-plan.js +1 -1
  251. package/dist/core/profile/profile-presets.js +25 -1
  252. package/dist/core/reproducibility/context.js +1 -1
  253. package/dist/core/schema/fields-file.js +2 -2
  254. package/dist/core/schema/item-types-file.js +2 -2
  255. package/dist/core/schema/runtime-field-filters.js +1 -1
  256. package/dist/core/schema/runtime-field-values.js +1 -1
  257. package/dist/core/schema/runtime-schema.js +2 -2
  258. package/dist/core/schema/status-defs-file.js +2 -2
  259. package/dist/core/schema/status-token.js +1 -1
  260. package/dist/core/schema/type-inference.js +1 -1
  261. package/dist/core/schema/type-presets.js +1 -1
  262. package/dist/core/schema/type-workflows.js +1 -1
  263. package/dist/core/search/background-refresh.js +2 -2
  264. package/dist/core/search/bm25.js +1 -1
  265. package/dist/core/search/cache.js +2 -2
  266. package/dist/core/search/corpus.js +1 -1
  267. package/dist/core/search/embedding-batches.js +1 -1
  268. package/dist/core/search/eval-thresholds.js +1 -1
  269. package/dist/core/search/eval.js +1 -1
  270. package/dist/core/search/http-client.js +1 -1
  271. package/dist/core/search/providers.js +1 -1
  272. package/dist/core/search/relevance.js +1 -1
  273. package/dist/core/search/semantic-defaults.js +1 -1
  274. package/dist/core/search/staleness.js +1 -1
  275. package/dist/core/search/vector-stores.js +2 -2
  276. package/dist/core/search/vectorization-metadata.js +1 -1
  277. package/dist/core/sentry/helpers.js +1 -1
  278. package/dist/core/sentry/instrument.js +1 -1
  279. package/dist/core/session/session-state.js +1 -1
  280. package/dist/core/shared/agent-session-context.js +1 -1
  281. package/dist/core/shared/author.js +5 -1
  282. package/dist/core/shared/command-line.js +1 -1
  283. package/dist/core/shared/command-types.js +1 -1
  284. package/dist/core/shared/conflict-markers.js +1 -1
  285. package/dist/core/shared/constants.js +1 -1
  286. package/dist/core/shared/errors.js +1 -1
  287. package/dist/core/shared/html-entity-decode.js +1 -1
  288. package/dist/core/shared/index.js +1 -1
  289. package/dist/core/shared/item-metadata-contract.js +1 -1
  290. package/dist/core/shared/lazy-module.js +1 -1
  291. package/dist/core/shared/levenshtein.js +1 -1
  292. package/dist/core/shared/memo.js +1 -1
  293. package/dist/core/shared/numeric-parsers.js +1 -1
  294. package/dist/core/shared/option-alias-visibility.js +1 -1
  295. package/dist/core/shared/primitives.js +1 -1
  296. package/dist/core/shared/secret-rules.js +1 -1
  297. package/dist/core/shared/serial-queue.js +1 -1
  298. package/dist/core/shared/serialization.js +1 -1
  299. package/dist/core/shared/split-comma-list.js +1 -1
  300. package/dist/core/shared/text-normalization.js +1 -1
  301. package/dist/core/shared/time.js +2 -1
  302. package/dist/core/store/index.js +1 -1
  303. package/dist/core/store/item-format-migration.js +1 -1
  304. package/dist/core/store/item-metadata-cache.js +1 -1
  305. package/dist/core/store/item-metadata-query-index.js +7 -7
  306. package/dist/core/store/item-metadata-read-work.js +1 -1
  307. package/dist/core/store/item-store.js +1 -1
  308. package/dist/core/store/paths.js +1 -1
  309. package/dist/core/store/settings-concurrency.js +1 -1
  310. package/dist/core/store/settings-read-cache.js +1 -1
  311. package/dist/core/store/settings-validator.js +1 -1
  312. package/dist/core/store/settings.js +3 -3
  313. package/dist/core/store/tracker-preflight.js +1 -1
  314. package/dist/core/telemetry/consent.js +2 -2
  315. package/dist/core/telemetry/observability.js +1 -1
  316. package/dist/core/telemetry/policy.js +1 -1
  317. package/dist/core/telemetry/read-sampling.js +2 -2
  318. package/dist/core/telemetry/runtime.js +9 -5
  319. package/dist/core/test/background-runs.js +3 -3
  320. package/dist/core/test/item-test-run-tracking.js +1 -1
  321. package/dist/core/test/run-selectors.js +1 -1
  322. package/dist/core/validate/estimate-defaults.js +1 -1
  323. package/dist/core/validate/fix-planning.js +1 -1
  324. package/dist/core/validate/linked-artifact-reference.js +1 -1
  325. package/dist/core/validate/missing-by-type.js +1 -1
  326. package/dist/core/validate/missing-link-owners.js +1 -1
  327. package/dist/core/validate/stale-file-classification.js +1 -1
  328. package/dist/mcp/http-server.js +6 -4
  329. package/dist/mcp/legacy-adapter.js +1 -1
  330. package/dist/mcp/runtime-capabilities.js +1 -1
  331. package/dist/mcp/server.js +4 -4
  332. package/dist/mcp/tool-definitions.js +1 -1
  333. package/dist/sdk/actionability.js +1 -1
  334. package/dist/sdk/agent/closed-domain-contracts.js +1 -1
  335. package/dist/sdk/agent/command-recovery.js +1 -1
  336. package/dist/sdk/agent/command-suggestions.js +1 -1
  337. package/dist/sdk/agent/create-option-policy.js +1 -1
  338. package/dist/sdk/agent/identity-config.js +1 -1
  339. package/dist/sdk/agent/item-addressing.js +1 -1
  340. package/dist/sdk/agent/refusal-closure-census.js +2 -1
  341. package/dist/sdk/agent/refusal-closure.js +1 -1
  342. package/dist/sdk/agent/refusal-corpus-contracts.js +1 -1
  343. package/dist/sdk/agent/refusal-reachability.js +3 -1
  344. package/dist/sdk/agent/subcommand-recovery.js +1 -1
  345. package/dist/sdk/agent/task-transcript-contracts.js +1 -1
  346. package/dist/sdk/agent/tracker-preflight-contracts.js +1 -1
  347. package/dist/sdk/agent-capability-contracts.js +3 -1
  348. package/dist/sdk/agent-session-context.js +1 -1
  349. package/dist/sdk/annotations.js +1 -1
  350. package/dist/sdk/author-attribution.js +1 -1
  351. package/dist/sdk/authoring.js +1 -1
  352. package/dist/sdk/cli-bootstrap.d.ts +5 -1
  353. package/dist/sdk/cli-bootstrap.js +1 -1
  354. package/dist/sdk/cli-contracts/agent-output-contracts.js +5 -3
  355. package/dist/sdk/cli-contracts/bootstrap-command-scanner.js +1 -1
  356. package/dist/sdk/cli-contracts/command-aliases.js +1 -1
  357. package/dist/sdk/cli-contracts/command-exit-contracts.js +1 -1
  358. package/dist/sdk/cli-contracts/commander-mutation-options.js +1 -1
  359. package/dist/sdk/cli-contracts/commander-types.js +1 -1
  360. package/dist/sdk/cli-contracts/completeness.js +1 -1
  361. package/dist/sdk/cli-contracts/enum-contracts.js +1 -1
  362. package/dist/sdk/cli-contracts/flag-contracts.js +1 -1
  363. package/dist/sdk/cli-contracts/flag-lexicon-contracts.js +2 -1
  364. package/dist/sdk/cli-contracts/grammar-contracts.js +1 -1
  365. package/dist/sdk/cli-contracts/registration-helpers.js +7 -7
  366. package/dist/sdk/cli-contracts/runtime-contracts.js +1 -1
  367. package/dist/sdk/cli-contracts/schemas/assurance-definition.js +1 -1
  368. package/dist/sdk/cli-contracts/string-lists.js +1 -1
  369. package/dist/sdk/cli-contracts/tool-option-contracts.js +1 -1
  370. package/dist/sdk/cli-contracts/tool-parameter-tables.js +1 -1
  371. package/dist/sdk/cli-contracts/tool-schema.d.ts +2 -2
  372. package/dist/sdk/cli-contracts/tool-schema.js +1 -1
  373. package/dist/sdk/cli-contracts/typed-action-inputs.js +1 -1
  374. package/dist/sdk/cli-contracts.js +1 -1
  375. package/dist/sdk/cli-program.js +1 -1
  376. package/dist/sdk/command-line.js +1 -1
  377. package/dist/sdk/comments.js +1 -1
  378. package/dist/sdk/compile-cache.js +1 -1
  379. package/dist/sdk/completion/bash.js +2 -1
  380. package/dist/sdk/completion/fish.js +13 -7
  381. package/dist/sdk/completion/shared.js +1 -1
  382. package/dist/sdk/completion/zsh.js +14 -8
  383. package/dist/sdk/completion.js +1 -1
  384. package/dist/sdk/compose.js +1 -1
  385. package/dist/sdk/config.js +1 -1
  386. package/dist/sdk/context/recency.js +1 -1
  387. package/dist/sdk/context/semantic-session-attribution.js +1 -1
  388. package/dist/sdk/context/usage-egress.js +1 -1
  389. package/dist/sdk/context/usage-ledger.js +6 -3
  390. package/dist/sdk/context-intent-contracts.js +1 -1
  391. package/dist/sdk/context-intent-runtime.js +1 -1
  392. package/dist/sdk/context-packing.js +1 -1
  393. package/dist/sdk/context-relevance.js +1 -1
  394. package/dist/sdk/context-signal-store.js +2 -2
  395. package/dist/sdk/context-usage.js +1 -1
  396. package/dist/sdk/contracts.js +1 -1
  397. package/dist/sdk/core-governance.js +1 -1
  398. package/dist/sdk/core.js +1 -1
  399. package/dist/sdk/corpus-shape.js +1 -1
  400. package/dist/sdk/define.js +1 -1
  401. package/dist/sdk/dependencies.js +1 -1
  402. package/dist/sdk/dependency-flag-validation.js +1 -1
  403. package/dist/sdk/dependency-provenance.js +1 -1
  404. package/dist/sdk/docs.js +1 -1
  405. package/dist/sdk/duplicates.js +1 -1
  406. package/dist/sdk/environment/agent-environment.js +1 -1
  407. package/dist/sdk/environment/host-environment-errors.js +1 -1
  408. package/dist/sdk/environment/project-runtime-compatibility.js +2 -1
  409. package/dist/sdk/environment/source-context.js +1 -1
  410. package/dist/sdk/environment/tracker-preflight.js +1 -1
  411. package/dist/sdk/error-code-catalog.js +1 -1
  412. package/dist/sdk/error-runtime.js +1 -1
  413. package/dist/sdk/errors.js +1 -1
  414. package/dist/sdk/eval.js +1 -1
  415. package/dist/sdk/extension/author-manifest.js +1 -1
  416. package/dist/sdk/extension/bundled-catalog.js +1 -1
  417. package/dist/sdk/extension/concurrency.js +1 -1
  418. package/dist/sdk/extension/copy-scope.js +1 -1
  419. package/dist/sdk/extension/custom-field-collisions.js +1 -1
  420. package/dist/sdk/extension/describe.js +4 -2
  421. package/dist/sdk/extension/doctor.js +1 -1
  422. package/dist/sdk/extension/install-plan.js +1 -1
  423. package/dist/sdk/extension/install-receipts.js +1 -1
  424. package/dist/sdk/extension/install-runtime.js +3 -3
  425. package/dist/sdk/extension/install-snapshot.js +1 -1
  426. package/dist/sdk/extension/install-sources.js +5 -5
  427. package/dist/sdk/extension/managed-state.d.ts +2 -0
  428. package/dist/sdk/extension/managed-state.js +2 -2
  429. package/dist/sdk/extension/managed-update-status.d.ts +3 -0
  430. package/dist/sdk/extension/managed-update-status.js +2 -0
  431. package/dist/sdk/extension/migrations.js +2 -2
  432. package/dist/sdk/extension/output-ownership.js +1 -1
  433. package/dist/sdk/extension/runtime-summary.js +1 -1
  434. package/dist/sdk/extension/scaffold.js +11 -4
  435. package/dist/sdk/extension/shared.js +1 -1
  436. package/dist/sdk/extension/source-resolution.d.ts +2 -6
  437. package/dist/sdk/extension/source-resolution.js +1 -1
  438. package/dist/sdk/extension/static-inventory.js +1 -1
  439. package/dist/sdk/extension/update-check.d.ts +10 -0
  440. package/dist/sdk/extension/update-check.js +1 -1
  441. package/dist/sdk/extension-command-context.js +2 -1
  442. package/dist/sdk/extension-contracts.js +1 -1
  443. package/dist/sdk/extension.d.ts +4 -0
  444. package/dist/sdk/extension.js +1 -1
  445. package/dist/sdk/files.js +1 -1
  446. package/dist/sdk/flag-invocation-contracts.js +1 -1
  447. package/dist/sdk/generated/generated-error-code-catalog-part-1.js +1 -1
  448. package/dist/sdk/generated/generated-error-code-catalog-part-2.js +1 -1
  449. package/dist/sdk/generated-error-code-catalog.js +1 -1
  450. package/dist/sdk/governance/assurance-action-contracts.js +1 -1
  451. package/dist/sdk/governance/assurance-action.js +1 -1
  452. package/dist/sdk/governance/assurance-limits.js +1 -1
  453. package/dist/sdk/governance/assurance-mutation-error.js +1 -1
  454. package/dist/sdk/governance/assurance-presets.js +1 -1
  455. package/dist/sdk/governance/assurance-runtime.js +1 -1
  456. package/dist/sdk/governance/assurance.js +4 -4
  457. package/dist/sdk/governance/boundary-fixtures.js +1 -1
  458. package/dist/sdk/governance/closure-timestamps.js +1 -1
  459. package/dist/sdk/governance/coverage-assurance.js +1 -1
  460. package/dist/sdk/governance/defect-recurrence-coverage.js +1 -1
  461. package/dist/sdk/governance/defect-recurrence-graph.js +1 -1
  462. package/dist/sdk/governance/defect-recurrence-signals.js +1 -1
  463. package/dist/sdk/governance/defect-recurrence.js +1 -1
  464. package/dist/sdk/governance/extension-host-version.js +1 -1
  465. package/dist/sdk/governance/gc.js +1 -1
  466. package/dist/sdk/governance/health-merge-evidence.js +1 -1
  467. package/dist/sdk/governance/health.js +2 -1
  468. package/dist/sdk/governance/hierarchy-validation.js +1 -1
  469. package/dist/sdk/governance/linked-file-report.js +1 -1
  470. package/dist/sdk/governance/merge-receipt-history.js +1 -1
  471. package/dist/sdk/governance/provenance-health.js +4 -1
  472. package/dist/sdk/governance/reindex.js +5 -4
  473. package/dist/sdk/governance/stale-work.js +1 -1
  474. package/dist/sdk/governance/status-role-diagnostics.js +1 -1
  475. package/dist/sdk/governance/storage-integrity.js +1 -1
  476. package/dist/sdk/governance/tracked-runtime-cache.js +1 -1
  477. package/dist/sdk/governance/upgrade.js +2 -2
  478. package/dist/sdk/governance/validate-history-drift.js +1 -1
  479. package/dist/sdk/governance/validate-item-reader.js +1 -1
  480. package/dist/sdk/governance/validate-normalization.js +1 -1
  481. package/dist/sdk/governance/validate.js +1 -1
  482. package/dist/sdk/governance/workflow-completeness.js +1 -1
  483. package/dist/sdk/governance/workflow-policy.js +3 -3
  484. package/dist/sdk/governance/workspace-position.js +2 -1
  485. package/dist/sdk/governance.js +1 -1
  486. package/dist/sdk/graph/adapter.js +1 -1
  487. package/dist/sdk/graph/analytics.js +1 -1
  488. package/dist/sdk/graph/assembly.js +1 -1
  489. package/dist/sdk/graph/cache.js +1 -1
  490. package/dist/sdk/graph/centrality.js +1 -1
  491. package/dist/sdk/graph/conformance.js +1 -1
  492. package/dist/sdk/graph/deadline-scheduling.js +1 -1
  493. package/dist/sdk/graph/durable-cache.js +1 -1
  494. package/dist/sdk/graph/governance-contracts.js +1 -1
  495. package/dist/sdk/graph/governance.js +1 -1
  496. package/dist/sdk/graph/hierarchy-integrity.js +1 -1
  497. package/dist/sdk/graph/index.js +1 -1
  498. package/dist/sdk/graph/lifecycle-coverage.js +1 -1
  499. package/dist/sdk/graph/mutation-advisory.js +1 -1
  500. package/dist/sdk/graph/query-contracts.js +1 -1
  501. package/dist/sdk/graph/remediation.js +1 -1
  502. package/dist/sdk/graph/run.js +1 -1
  503. package/dist/sdk/graph/scheduling.js +1 -1
  504. package/dist/sdk/graph/traversal.js +1 -1
  505. package/dist/sdk/graph/workspace-relationship-kind-registry.js +1 -1
  506. package/dist/sdk/graph.js +1 -1
  507. package/dist/sdk/guide-topics.js +1 -1
  508. package/dist/sdk/guide.js +8 -1
  509. package/dist/sdk/history/attestation-command.js +1 -1
  510. package/dist/sdk/history/attestation-contract.js +1 -1
  511. package/dist/sdk/history/attestation-scan.js +1 -1
  512. package/dist/sdk/history/attestation.js +1 -1
  513. package/dist/sdk/history/maintenance.js +1 -1
  514. package/dist/sdk/history/salvage.js +3 -2
  515. package/dist/sdk/history/subject.js +1 -1
  516. package/dist/sdk/history-analytics.js +1 -1
  517. package/dist/sdk/history-compact.js +1 -1
  518. package/dist/sdk/history-mcp.js +1 -1
  519. package/dist/sdk/history-provenance.js +1 -1
  520. package/dist/sdk/history-read.js +1 -1
  521. package/dist/sdk/history-redact.js +1 -1
  522. package/dist/sdk/history-repair.js +1 -1
  523. package/dist/sdk/improvement-ledger-validation.js +1 -1
  524. package/dist/sdk/improvement-ledger.js +2 -2
  525. package/dist/sdk/index.js +1 -1
  526. package/dist/sdk/init-agent-guidance.js +16 -2
  527. package/dist/sdk/init.js +16 -2
  528. package/dist/sdk/invocation-author.js +1 -1
  529. package/dist/sdk/item-children.js +1 -1
  530. package/dist/sdk/item-metadata-index.js +1 -1
  531. package/dist/sdk/item-schedule.js +1 -1
  532. package/dist/sdk/item-transaction.js +1 -1
  533. package/dist/sdk/learnings.js +1 -1
  534. package/dist/sdk/lifecycle/append.js +4 -2
  535. package/dist/sdk/lifecycle/claim.js +1 -1
  536. package/dist/sdk/lifecycle/close-many.js +1 -1
  537. package/dist/sdk/lifecycle/close.js +1 -1
  538. package/dist/sdk/lifecycle/copy.js +1 -1
  539. package/dist/sdk/lifecycle/create.js +1 -1
  540. package/dist/sdk/lifecycle/delete.js +1 -1
  541. package/dist/sdk/lifecycle/event-validation-messages.js +1 -1
  542. package/dist/sdk/lifecycle/focus.js +1 -1
  543. package/dist/sdk/lifecycle/hierarchy-mutation-lock.js +1 -1
  544. package/dist/sdk/lifecycle/legacy-none-tokens.js +1 -1
  545. package/dist/sdk/lifecycle/lifecycle-transitions.js +1 -1
  546. package/dist/sdk/lifecycle/mcp-actions.js +1 -1
  547. package/dist/sdk/lifecycle/metadata-normalizers.js +1 -1
  548. package/dist/sdk/lifecycle/mutation-command-options.js +1 -1
  549. package/dist/sdk/lifecycle/plan-mutation-receipt.js +1 -1
  550. package/dist/sdk/lifecycle/plan.js +1 -1
  551. package/dist/sdk/lifecycle/recurrence-parsers.js +1 -1
  552. package/dist/sdk/lifecycle/reopen.js +1 -1
  553. package/dist/sdk/lifecycle/repeatable-metadata-parsers.js +2 -1
  554. package/dist/sdk/lifecycle/restore.js +1 -1
  555. package/dist/sdk/lifecycle/shared-unset-fields.js +1 -1
  556. package/dist/sdk/lifecycle/task-composition.js +1 -1
  557. package/dist/sdk/lifecycle/update-many.js +1 -1
  558. package/dist/sdk/lifecycle/update.js +2 -1
  559. package/dist/sdk/lifecycle-completion.js +1 -1
  560. package/dist/sdk/lifecycle-policy.js +1 -1
  561. package/dist/sdk/linked-artifacts.js +2 -1
  562. package/dist/sdk/mcp/apps.js +1 -1
  563. package/dist/sdk/mcp/authorization.js +1 -1
  564. package/dist/sdk/mcp/discovery.js +1 -1
  565. package/dist/sdk/mcp/interactions.js +1 -1
  566. package/dist/sdk/mcp/protocol.js +1 -1
  567. package/dist/sdk/mcp/skills.js +3 -1
  568. package/dist/sdk/mcp/subscriptions.js +1 -1
  569. package/dist/sdk/mcp/tasks.js +2 -2
  570. package/dist/sdk/mcp/transport.js +1 -1
  571. package/dist/sdk/merge/abandoned-receipts.js +1 -1
  572. package/dist/sdk/merge/driver.js +1 -1
  573. package/dist/sdk/merge/index.js +1 -1
  574. package/dist/sdk/merge/install.js +4 -2
  575. package/dist/sdk/merge/receipt-file-boundary.js +1 -1
  576. package/dist/sdk/merge/receipt-operation.js +1 -1
  577. package/dist/sdk/merge/receipt-schema.js +1 -1
  578. package/dist/sdk/merge/receipts.js +4 -4
  579. package/dist/sdk/merge/reconcile.js +1 -1
  580. package/dist/sdk/merge/three-way.js +3 -2
  581. package/dist/sdk/merge/worktree-config.js +1 -1
  582. package/dist/sdk/merge.js +1 -1
  583. package/dist/sdk/mutation-events.js +1 -1
  584. package/dist/sdk/mutation-guard.js +1 -1
  585. package/dist/sdk/notes.js +1 -1
  586. package/dist/sdk/output-contracts.js +1 -1
  587. package/dist/sdk/output-projection.js +1 -1
  588. package/dist/sdk/output-token-accounting.js +1 -1
  589. package/dist/sdk/output.js +2 -1
  590. package/dist/sdk/ownership-source.js +1 -1
  591. package/dist/sdk/package-import-adapters.js +1 -1
  592. package/dist/sdk/package-migrations.js +1 -1
  593. package/dist/sdk/package-runtime-options.js +1 -1
  594. package/dist/sdk/pagination.js +1 -1
  595. package/dist/sdk/profile.js +5 -1
  596. package/dist/sdk/provenance.js +1 -1
  597. package/dist/sdk/public-surface.json +1 -1
  598. package/dist/sdk/query/activity.js +1 -1
  599. package/dist/sdk/query/aggregate.js +1 -1
  600. package/dist/sdk/query/calendar.js +4 -1
  601. package/dist/sdk/query/complete-list.js +1 -1
  602. package/dist/sdk/query/context.js +2 -1
  603. package/dist/sdk/query/duplicate-candidates.js +1 -1
  604. package/dist/sdk/query/get.d.ts +14 -2
  605. package/dist/sdk/query/get.js +1 -1
  606. package/dist/sdk/query/history.js +1 -1
  607. package/dist/sdk/query/item-filter-options.js +1 -1
  608. package/dist/sdk/query/light-metadata.js +1 -1
  609. package/dist/sdk/query/list-filter-shared.js +1 -1
  610. package/dist/sdk/query/list.js +1 -1
  611. package/dist/sdk/query/multi-value-filters.js +1 -1
  612. package/dist/sdk/query/next-ready-budget.js +1 -1
  613. package/dist/sdk/query/next.js +2 -1
  614. package/dist/sdk/query/parsers.js +1 -1
  615. package/dist/sdk/query/projection-contracts.js +1 -1
  616. package/dist/sdk/query/search/corpus.js +2 -1
  617. package/dist/sdk/query/search/filters.js +1 -1
  618. package/dist/sdk/query/search/input.js +1 -1
  619. package/dist/sdk/query/search/lexical.js +1 -1
  620. package/dist/sdk/query/search/response.js +1 -1
  621. package/dist/sdk/query/search/semantic.js +3 -2
  622. package/dist/sdk/query/search/types.js +1 -1
  623. package/dist/sdk/query/search-contracts.js +1 -1
  624. package/dist/sdk/query/search-pagination.js +1 -1
  625. package/dist/sdk/query/search-rendering.js +1 -1
  626. package/dist/sdk/query/search.js +1 -1
  627. package/dist/sdk/query/workspace-contracts.js +1 -1
  628. package/dist/sdk/query.js +1 -1
  629. package/dist/sdk/read-output/continuation.js +1 -1
  630. package/dist/sdk/read-output/options.js +1 -1
  631. package/dist/sdk/read-output/provenance.js +1 -1
  632. package/dist/sdk/read-output-budget.js +1 -1
  633. package/dist/sdk/read-output-contracts.js +1 -1
  634. package/dist/sdk/read-output-rows.js +1 -1
  635. package/dist/sdk/read-output-session.js +1 -1
  636. package/dist/sdk/relationship-analytics.js +1 -1
  637. package/dist/sdk/relationship-context.js +1 -1
  638. package/dist/sdk/relationship-history.js +7 -4
  639. package/dist/sdk/relationship-kinds/contract.js +1 -1
  640. package/dist/sdk/relationship-migration.js +1 -1
  641. package/dist/sdk/relationships.js +1 -1
  642. package/dist/sdk/reproducibility/process.js +1 -1
  643. package/dist/sdk/runtime/actions.js +1 -1
  644. package/dist/sdk/runtime/context.js +1 -1
  645. package/dist/sdk/runtime/schema-preview.js +1 -1
  646. package/dist/sdk/runtime/schema.js +1 -1
  647. package/dist/sdk/runtime-action-aliases.js +1 -1
  648. package/dist/sdk/runtime-extended-actions.js +1 -1
  649. package/dist/sdk/runtime-input.js +1 -1
  650. package/dist/sdk/runtime-primitives.js +1 -1
  651. package/dist/sdk/runtime-public-contracts.js +1 -1
  652. package/dist/sdk/runtime-stats-options.js +1 -1
  653. package/dist/sdk/runtime.js +1 -1
  654. package/dist/sdk/scheduling-shortcuts.js +1 -1
  655. package/dist/sdk/schema-migration.js +4 -3
  656. package/dist/sdk/schema.js +7 -1
  657. package/dist/sdk/search-refresh-worker.js +1 -1
  658. package/dist/sdk/similarity-scoring.js +1 -1
  659. package/dist/sdk/similarity.js +1 -1
  660. package/dist/sdk/start-task-status.js +1 -1
  661. package/dist/sdk/stats.js +1 -1
  662. package/dist/sdk/structured-mutations.js +1 -1
  663. package/dist/sdk/telemetry-flush.js +1 -1
  664. package/dist/sdk/telemetry.js +4 -3
  665. package/dist/sdk/templates.js +26 -2
  666. package/dist/sdk/test/batch.js +2 -2
  667. package/dist/sdk/test/entry.js +1 -1
  668. package/dist/sdk/test/execution.d.ts +2 -1
  669. package/dist/sdk/test/execution.js +6 -5
  670. package/dist/sdk/test/json-path.js +1 -1
  671. package/dist/sdk/test/linked-command-detection.js +1 -1
  672. package/dist/sdk/test/measurements.js +1 -1
  673. package/dist/sdk/test/parsers.js +1 -1
  674. package/dist/sdk/test/runs.js +1 -1
  675. package/dist/sdk/test/trust.js +2 -2
  676. package/dist/sdk/test/workspace-snapshot.js +1 -1
  677. package/dist/sdk/testing.js +7 -4
  678. package/dist/sdk/traceability/runtime-files-lookup.js +1 -1
  679. package/dist/sdk/traceability/source-traceability.js +2 -1
  680. package/dist/sdk/tracker-root-discovery.js +1 -1
  681. package/dist/sdk/workspace-contracts-cache.js +1 -1
  682. package/dist/sdk/workspace-contracts.js +1 -1
  683. package/dist/sdk/workspace-memory.js +2 -2
  684. package/dist/sdk/workspace-recipe.js +1 -1
  685. package/dist/sdk/workspace-snapshot.js +5 -4
  686. package/dist/sdk/workspace-transaction-gc.js +1 -1
  687. package/dist/sdk/workspace-transaction.js +2 -2
  688. package/dist/sdk/workspace.js +3 -2
  689. package/dist/types/index.js +1 -1
  690. package/dist/types.js +1 -1
  691. package/docs/AGENT_EVIDENCE_CONSISTENCY.md +88 -0
  692. package/docs/DEVELOPMENT_DEPENDENCY_SECURITY.md +36 -0
  693. package/docs/GET_READ_EVIDENCE.md +84 -0
  694. package/docs/OUTPUT_PROJECTION_CONTRACTS.md +23 -0
  695. package/docs/PR_REVIEW_LOOP.md +21 -4
  696. package/docs/README.md +3 -0
  697. package/docs/RELEASING.md +18 -0
  698. package/docs/SDK_CONFIGURATION_SAFETY.md +123 -0
  699. package/docs/generated/FLAG_LEXICON_BUDGETS.md +3 -3
  700. package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +4 -3
  701. package/marketplace.json +2 -2
  702. package/package.json +3 -3
  703. package/packages/pm-beads/package.json +1 -1
  704. package/packages/pm-calendar/package.json +1 -1
  705. package/packages/pm-command-kit/package.json +1 -1
  706. package/packages/pm-digital-twin/package.json +1 -1
  707. package/packages/pm-governance-audit/package.json +1 -1
  708. package/packages/pm-guide-shell/package.json +1 -1
  709. package/packages/pm-kanban/package.json +1 -1
  710. package/packages/pm-lifecycle-hooks/package.json +1 -1
  711. package/packages/pm-linked-test-adapters/package.json +1 -1
  712. package/packages/pm-search-advanced/package.json +1 -1
  713. package/packages/pm-templates/package.json +1 -1
  714. package/packages/pm-todos/package.json +1 -1
  715. package/packages/pm-vcs/extensions/vcs/index.ts +4 -2
  716. package/packages/pm-vcs/package.json +1 -1
  717. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  718. package/plugins/pm-claude/package.json +2 -2
  719. package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
  720. package/plugins/pm-codex/package.json +2 -2
  721. package/plugins/pm-codex/plugin.json +1 -1
  722. package/scripts/finalize-build.mjs +3 -2
  723. package/dist/cli-bundle/chunks/chunk-7UVXKI7K.js +0 -2
  724. package/dist/cli-bundle/chunks/chunk-D7Z2ZMJL.js +0 -3
  725. package/dist/cli-bundle/chunks/chunk-DEZPZOQ7.js +0 -2
  726. package/dist/cli-bundle/chunks/chunk-J52QIRRZ.js +0 -80
  727. package/dist/cli-bundle/chunks/chunk-JDKD3WGG.js +0 -6
  728. package/dist/cli-bundle/chunks/chunk-JQ7DW663.js +0 -2
  729. package/dist/cli-bundle/chunks/chunk-QXIDOOWT.js +0 -20
  730. package/dist/cli-bundle/chunks/chunk-SGFQQXFD.js +0 -2
  731. package/dist/cli-bundle/chunks/chunk-V3U77H3V.js +0 -31
  732. package/dist/cli-bundle/chunks/chunk-XZDWAYJC.js +0 -3
  733. package/dist/cli-bundle/chunks/chunk-Y6VRBTP3.js +0 -238
  734. package/dist/cli-bundle/chunks/chunk-YAAFYFS4.js +0 -8
  735. package/dist/cli-bundle/chunks/register-mutation-53ZLT4RX.js +0 -20
  736. package/dist/cli-bundle/chunks/register-operations-OBK2FXUU.js +0 -2
  737. package/dist/cli-bundle/chunks/register-setup-HM3OCBH2.js +0 -2
  738. package/dist/cli-bundle/focused-chunks/chunk-2JFYR56O.js +0 -2
  739. package/dist/cli-bundle/focused-chunks/chunk-32EVUSS4.js +0 -8
  740. package/dist/cli-bundle/focused-chunks/chunk-5GUSO2P4.js +0 -20
  741. package/dist/cli-bundle/focused-chunks/chunk-6XBRADQQ.js +0 -3
  742. package/dist/cli-bundle/focused-chunks/chunk-7O4NUJVO.js +0 -2
  743. package/dist/cli-bundle/focused-chunks/chunk-CURTIIQT.js +0 -2
  744. package/dist/cli-bundle/focused-chunks/chunk-IJUWEEEB.js +0 -6
  745. package/dist/cli-bundle/focused-chunks/chunk-JCVMOSWQ.js +0 -2
  746. package/dist/cli-bundle/focused-chunks/chunk-JMJK2L4Z.js +0 -3
  747. package/dist/cli-bundle/focused-chunks/chunk-KG3H4UZZ.js +0 -30
  748. package/dist/cli-bundle/focused-chunks/chunk-MHQ2XICU.js +0 -2
  749. package/dist/cli-bundle/focused-chunks/chunk-RJV6QVJE.js +0 -75
  750. package/dist/cli-bundle/focused-chunks/chunk-ZE2JZ7R6.js +0 -12
  751. package/dist/cli-bundle/focused-chunks/chunk-ZLEN4HZD.js +0 -165
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="8192f2f3-b5a0-510e-a7d4-963041cce389")}catch(e2){}})();import{createHash}from"node:crypto";import{existsSync,promises as fs,readFileSync}from"node:fs";import path from"node:path";import{writeFileAtomic}from"../fs/fs-utils.js";import{acquireLock}from"../lock/lock.js";import{SETTINGS_DEFAULTS}from"../shared/constants.js";import{getRuntimePath}from"../store/paths.js";const SESSION_FILENAME="session.json";function isBoundedNonEmptyString(value,maximum){return typeof value==="string"&&value.length>0&&value.length<=maximum}function parseSemanticAttribution(value){if(value===null||typeof value!=="object"||Array.isArray(value)){return void 0}const record=value;const validRole=["implementer","planner","release-operator"].includes(String(record.role));const validConfidence=["high","medium"].includes(String(record.confidence));const validTopic=isBoundedNonEmptyString(record.topic,256);const validEvidence=Array.isArray(record.evidence)&&record.evidence.length<=32&&record.evidence.every(entry=>typeof entry==="string"&&entry.length<=128);const validActiveItems=Array.isArray(record.active_item_ids)&&record.active_item_ids.length<=64&&record.active_item_ids.every(entry=>isBoundedNonEmptyString(entry,128));const validFocus=record.focused_item_id===void 0||isBoundedNonEmptyString(record.focused_item_id,128);if(![validRole,validConfidence,validTopic,validEvidence,validActiveItems,validFocus,record.rule_version==="v2"].every(Boolean)){return void 0}return record}function parseSemanticAttributionMap(value){if(value===null||typeof value!=="object"||Array.isArray(value)){return void 0}const entries=Object.entries(value).slice(0,128).flatMap(([key,attribution])=>{const parsed=parseSemanticAttribution(attribution);return parsed&&key.length<=128?[[key,parsed]]:[]});return entries.length>0?Object.fromEntries(entries):void 0}function getSessionStatePath(pmRoot){return path.join(getRuntimePath(pmRoot),SESSION_FILENAME)}async function readSessionState(pmRoot){try{const raw=await fs.readFile(getSessionStatePath(pmRoot),"utf8");const parsed=JSON.parse(raw);if(parsed===null||typeof parsed!=="object"||Array.isArray(parsed)){return{}}const record=parsed;const focused=record.focused_item;const semanticAttribution=parseSemanticAttributionMap(record.semantic_attribution);if(typeof focused==="string"&&focused.trim().length>0){return{focused_item:focused,...semanticAttribution?{semantic_attribution:semanticAttribution}:{}}}return semanticAttribution?{semantic_attribution:semanticAttribution}:{}}catch{return{}}}async function mutateSessionState(pmRoot,mutate){const release=await acquireLock(pmRoot,"session-state",SETTINGS_DEFAULTS.locks.ttl_seconds,"session-state",false,true,SETTINGS_DEFAULTS.locks.wait_ms);try{const state=await readSessionState(pmRoot);mutate(state);const target=getSessionStatePath(pmRoot);await fs.mkdir(path.dirname(target),{recursive:true});await writeFileAtomic(target,JSON.stringify(state))}finally{await release()}}function semanticAttributionKey(principal){const instance=/#([a-f0-9]{24})$/u.exec(principal.trim())?.[1];return instance??`author-${createHash("sha256").update(principal).digest("hex").slice(0,24)}`}function normalizedEvidence(values){return[...new Set(values.map(value=>value.trim()).filter(Boolean))].slice(0,32).map(value=>value.slice(0,128))}function worksetTopic(activeItemIds){const ids=[...new Set(activeItemIds)].sort((left,right)=>left.localeCompare(right));if(ids.length===1)return ids[0];const complete=`workset:${ids.join("+")}`;if(complete.length<=256)return complete;const visible=ids.join("+").slice(0,230);return`workset:${visible}+${createHash("sha256").update(ids.join("\0")).digest("hex").slice(0,12)}`}async function updateSemanticAttribution(pmRoot,key,mutate){await mutateSessionState(pmRoot,state=>{const attributions={...state.semantic_attribution};const next=mutate(attributions[key]);if(next===void 0)delete attributions[key];else attributions[key]=next;if(Object.keys(attributions).length===0){delete state.semantic_attribution}else{state.semantic_attribution=attributions}})}async function recordClaimedWorkAttribution(params){const key=semanticAttributionKey(params.principal);await updateSemanticAttribution(params.pmRoot,key,current=>{const activeItemIds=[...new Set([...current?.active_item_ids??[],params.itemId])].slice(-64).sort((left,right)=>left.localeCompare(right));const focusedItemId=current?.focused_item_id;return{role:"implementer",topic:focusedItemId??worksetTopic(activeItemIds),confidence:focusedItemId?"high":"medium",rule_version:"v2",evidence:normalizedEvidence([...activeItemIds.map(id=>`claim:${id}`),...focusedItemId?[`focus:${focusedItemId}`]:[],...(params.lineageIds??[]).map(id=>`lineage:${id}`)]),active_item_ids:activeItemIds,...focusedItemId?{focused_item_id:focusedItemId}:{}}})}async function releaseClaimedWorkAttribution(params){const key=semanticAttributionKey(params.principal);await updateSemanticAttribution(params.pmRoot,key,current=>{if(!current)return void 0;const activeItemIds=current.active_item_ids.filter(id=>id!==params.itemId);if(activeItemIds.length===0&&!current.focused_item_id)return void 0;const focusedItemId=current.focused_item_id;return{...current,role:"release-operator",topic:focusedItemId??worksetTopic(activeItemIds),confidence:focusedItemId?"high":"medium",evidence:normalizedEvidence([...activeItemIds.map(id=>`claim:${id}`),...focusedItemId?[`focus:${focusedItemId}`]:[],`release:${params.itemId}`]),active_item_ids:activeItemIds}})}async function recordFocusedWorkAttribution(params){const key=semanticAttributionKey(params.principal);await updateSemanticAttribution(params.pmRoot,key,current=>{const activeItemIds=current?.active_item_ids??[];if(!params.itemId&&activeItemIds.length===0)return void 0;const focusedItemId=params.itemId;return{role:focusedItemId?"planner":current.role,topic:focusedItemId??worksetTopic(activeItemIds),confidence:focusedItemId?"high":"medium",rule_version:"v2",evidence:normalizedEvidence([...activeItemIds.map(id=>`claim:${id}`),...focusedItemId?[`focus:${focusedItemId}`]:[],...(params.lineageIds??[]).map(id=>`lineage:${id}`)]),active_item_ids:activeItemIds,...focusedItemId?{focused_item_id:focusedItemId}:{}}})}function resolveAttributionRoot(cwd,env){const configured=env.PM_PATH?.trim();if(configured){const resolved=path.resolve(cwd,configured);if(existsSync(path.join(resolved,"settings.json")))return resolved;const nested=path.join(resolved,".agents","pm");if(existsSync(path.join(nested,"settings.json")))return nested}let cursor=path.resolve(cwd);for(let depth=0;depth<32;depth+=1){const candidate=path.join(cursor,".agents","pm");if(existsSync(path.join(candidate,"settings.json")))return candidate;const parent=path.dirname(cursor);if(parent===cursor)break;cursor=parent}return void 0}function readAgentSemanticAttributionSync(params){if(!params.key)return void 0;const pmRoot=resolveAttributionRoot(params.cwd,params.env);if(!pmRoot)return void 0;try{const parsed=JSON.parse(readFileSync(getSessionStatePath(pmRoot),"utf8"));return parseSemanticAttribution(parsed.semantic_attribution?.[params.key])}catch{return void 0}}async function getFocusedItem(pmRoot){const state=await readSessionState(pmRoot);return state.focused_item}async function setFocusedItem(pmRoot,id){await mutateSessionState(pmRoot,state=>{state.focused_item=id})}async function clearFocusedItem(pmRoot){await mutateSessionState(pmRoot,state=>{delete state.focused_item})}export{clearFocusedItem,getFocusedItem,getSessionStatePath,readAgentSemanticAttributionSync,readSessionState,recordClaimedWorkAttribution,recordFocusedWorkAttribution,releaseClaimedWorkAttribution,semanticAttributionKey,setFocusedItem};
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]="06c9f6f4-c2f0-549c-9a0f-4f4269cc5f49")}catch{}})();import{createHash}from"node:crypto";import{existsSync,promises as fs,readFileSync}from"node:fs";import path from"node:path";import{writeFileAtomic}from"../fs/fs-utils.js";import{acquireLock}from"../lock/lock.js";import{SETTINGS_DEFAULTS}from"../shared/constants.js";import{getRuntimePath}from"../store/paths.js";const SESSION_FILENAME="session.json";function isBoundedNonEmptyString(value,maximum){return typeof value=="string"&&value.length>0&&value.length<=maximum}function parseSemanticAttribution(value){if(value===null||typeof value!="object"||Array.isArray(value))return;const record=value,validRole=["implementer","planner","release-operator"].includes(String(record.role)),validConfidence=["high","medium"].includes(String(record.confidence)),validTopic=isBoundedNonEmptyString(record.topic,256),validEvidence=Array.isArray(record.evidence)&&record.evidence.length<=32&&record.evidence.every(entry=>typeof entry=="string"&&entry.length<=128),validActiveItems=Array.isArray(record.active_item_ids)&&record.active_item_ids.length<=64&&record.active_item_ids.every(entry=>isBoundedNonEmptyString(entry,128)),validFocus=record.focused_item_id===void 0||isBoundedNonEmptyString(record.focused_item_id,128);if([validRole,validConfidence,validTopic,validEvidence,validActiveItems,validFocus,record.rule_version==="v2"].every(Boolean))return record}function parseSemanticAttributionMap(value){if(value===null||typeof value!="object"||Array.isArray(value))return;const entries=Object.entries(value).slice(0,128).flatMap(([key,attribution])=>{const parsed=parseSemanticAttribution(attribution);return parsed&&key.length<=128?[[key,parsed]]:[]});return entries.length>0?Object.fromEntries(entries):void 0}function getSessionStatePath(pmRoot){return path.join(getRuntimePath(pmRoot),SESSION_FILENAME)}async function readSessionState(pmRoot){try{const raw=await fs.readFile(getSessionStatePath(pmRoot),"utf8"),parsed=JSON.parse(raw);if(parsed===null||typeof parsed!="object"||Array.isArray(parsed))return{};const record=parsed,focused=record.focused_item,semanticAttribution=parseSemanticAttributionMap(record.semantic_attribution);return typeof focused=="string"&&focused.trim().length>0?{focused_item:focused,...semanticAttribution?{semantic_attribution:semanticAttribution}:{}}:semanticAttribution?{semantic_attribution:semanticAttribution}:{}}catch{return{}}}async function mutateSessionState(pmRoot,mutate){const release=await acquireLock(pmRoot,"session-state",SETTINGS_DEFAULTS.locks.ttl_seconds,"session-state",!1,!0,SETTINGS_DEFAULTS.locks.wait_ms);try{const state=await readSessionState(pmRoot);mutate(state);const target=getSessionStatePath(pmRoot);await fs.mkdir(path.dirname(target),{recursive:!0}),await writeFileAtomic(target,JSON.stringify(state))}finally{await release()}}function semanticAttributionKey(principal){return/#([a-f0-9]{24})$/u.exec(principal.trim())?.[1]??`author-${createHash("sha256").update(principal).digest("hex").slice(0,24)}`}function normalizedEvidence(values){return[...new Set(values.map(value=>value.trim()).filter(Boolean))].slice(0,32).map(value=>value.slice(0,128))}function worksetTopic(activeItemIds){const ids=[...new Set(activeItemIds)].sort((left,right)=>left.localeCompare(right));if(ids.length===1)return ids[0];const complete=`workset:${ids.join("+")}`;return complete.length<=256?complete:`workset:${ids.join("+").slice(0,230)}+${createHash("sha256").update(ids.join("\0")).digest("hex").slice(0,12)}`}async function updateSemanticAttribution(pmRoot,key,mutate){await mutateSessionState(pmRoot,state=>{const attributions={...state.semantic_attribution},next=mutate(attributions[key]);next===void 0?delete attributions[key]:attributions[key]=next,Object.keys(attributions).length===0?delete state.semantic_attribution:state.semantic_attribution=attributions})}async function recordClaimedWorkAttribution(params){const key=semanticAttributionKey(params.principal);await updateSemanticAttribution(params.pmRoot,key,current=>{const activeItemIds=[...new Set([...current?.active_item_ids??[],params.itemId])].slice(-64).sort((left,right)=>left.localeCompare(right)),focusedItemId=current?.focused_item_id;return{role:"implementer",topic:focusedItemId??worksetTopic(activeItemIds),confidence:focusedItemId?"high":"medium",rule_version:"v2",evidence:normalizedEvidence([...activeItemIds.map(id=>`claim:${id}`),...focusedItemId?[`focus:${focusedItemId}`]:[],...(params.lineageIds??[]).map(id=>`lineage:${id}`)]),active_item_ids:activeItemIds,...focusedItemId?{focused_item_id:focusedItemId}:{}}})}async function releaseClaimedWorkAttribution(params){const key=semanticAttributionKey(params.principal);await updateSemanticAttribution(params.pmRoot,key,current=>{if(!current)return;const activeItemIds=current.active_item_ids.filter(id=>id!==params.itemId);if(activeItemIds.length===0&&!current.focused_item_id)return;const focusedItemId=current.focused_item_id;return{...current,role:"release-operator",topic:focusedItemId??worksetTopic(activeItemIds),confidence:focusedItemId?"high":"medium",evidence:normalizedEvidence([...activeItemIds.map(id=>`claim:${id}`),...focusedItemId?[`focus:${focusedItemId}`]:[],`release:${params.itemId}`]),active_item_ids:activeItemIds}})}async function recordFocusedWorkAttribution(params){const key=semanticAttributionKey(params.principal);await updateSemanticAttribution(params.pmRoot,key,current=>{const activeItemIds=current?.active_item_ids??[];if(!params.itemId&&activeItemIds.length===0)return;const focusedItemId=params.itemId;return{role:focusedItemId?"planner":current.role,topic:focusedItemId??worksetTopic(activeItemIds),confidence:focusedItemId?"high":"medium",rule_version:"v2",evidence:normalizedEvidence([...activeItemIds.map(id=>`claim:${id}`),...focusedItemId?[`focus:${focusedItemId}`]:[],...(params.lineageIds??[]).map(id=>`lineage:${id}`)]),active_item_ids:activeItemIds,...focusedItemId?{focused_item_id:focusedItemId}:{}}})}function resolveAttributionRoot(cwd,env){const configured=env.PM_PATH?.trim();if(configured){const resolved=path.resolve(cwd,configured);if(existsSync(path.join(resolved,"settings.json")))return resolved;const nested=path.join(resolved,".agents","pm");if(existsSync(path.join(nested,"settings.json")))return nested}let cursor=path.resolve(cwd);for(let depth=0;depth<32;depth+=1){const candidate=path.join(cursor,".agents","pm");if(existsSync(path.join(candidate,"settings.json")))return candidate;const parent=path.dirname(cursor);if(parent===cursor)break;cursor=parent}}function readAgentSemanticAttributionSync(params){if(!params.key)return;const pmRoot=resolveAttributionRoot(params.cwd,params.env);if(pmRoot)try{const parsed=JSON.parse(readFileSync(getSessionStatePath(pmRoot),"utf8"));return parseSemanticAttribution(parsed.semantic_attribution?.[params.key])}catch{return}}async function getFocusedItem(pmRoot){return(await readSessionState(pmRoot)).focused_item}async function setFocusedItem(pmRoot,id){await mutateSessionState(pmRoot,state=>{state.focused_item=id})}async function clearFocusedItem(pmRoot){await mutateSessionState(pmRoot,state=>{delete state.focused_item})}export{clearFocusedItem,getFocusedItem,getSessionStatePath,readAgentSemanticAttributionSync,readSessionState,recordClaimedWorkAttribution,recordFocusedWorkAttribution,releaseClaimedWorkAttribution,semanticAttributionKey,setFocusedItem};
2
2
  //# sourceMappingURL=session-state.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="27a9b88e-ee47-55c8-b511-07ce9754346c")}catch(e2){}})();import{AsyncLocalStorage}from"node:async_hooks";const agentSessionContextStorage=new AsyncLocalStorage;const EPISODE_ID_PATTERN=/^[A-Za-z0-9](?:[A-Za-z0-9._:-]{0,127})$/u;function boundedText(value,limit){const trimmed=typeof value==="string"?value.trim():"";return trimmed.length>0?trimmed.slice(0,limit):void 0}function boundAgentEpisodeIdentity(value,strict){if(value===void 0)return void 0;const record=typeof value==="object"&&value!==null?value:{};const id=boundedText(record.id,128);const parentId=boundedText(record.parent_id,128);if(id===void 0||!EPISODE_ID_PATTERN.test(id)||parentId!==void 0&&!EPISODE_ID_PATTERN.test(parentId)){if(strict){throw new Error("Agent episode ids must be 1-128 letters, digits, dots, underscores, colons, or hyphens.")}return void 0}const label=boundedText(record.label,256);return{id,...label===void 0?{}:{label},...parentId===void 0?{}:{parent_id:parentId}}}function normalizedProvenance(value){const result={};for(const[key,rawValue]of Object.entries(value??{}).slice(0,32)){const normalizedKey=key.trim().toLowerCase().slice(0,64);const normalizedValue=boundedText(rawValue,256);if(/^[a-z][a-z0-9_-]{0,63}$/u.test(normalizedKey)&&normalizedValue!==void 0){result[normalizedKey]=normalizedValue}}return result}function resolveAgentSessionContext(explicit,env,fallbackEpisode){const ambient=agentSessionContextStorage.getStore();const environmentProvenance=normalizedProvenance({role:env.PM_AGENT_SESSION_ROLE,topic:env.PM_AGENT_SESSION_TOPIC});const environmentEpisode=boundAgentEpisodeIdentity(env.PM_AGENT_EPISODE_ID===void 0?void 0:{id:env.PM_AGENT_EPISODE_ID,label:env.PM_AGENT_EPISODE_LABEL,parent_id:env.PM_AGENT_EPISODE_PARENT_ID},false);const provenance={...normalizedProvenance(ambient?.provenance),...environmentProvenance,...normalizedProvenance(explicit?.provenance)};const episode=boundAgentEpisodeIdentity(explicit?.episode,false)??boundAgentEpisodeIdentity(fallbackEpisode,false)??environmentEpisode??boundAgentEpisodeIdentity(ambient?.episode,false);return Object.keys(provenance).length===0&&episode===void 0?void 0:{...Object.keys(provenance).length===0?{}:{provenance},...episode===void 0?{}:{episode}}}function resolveAgentSessionContextFromSignals(signals,env){return resolveAgentSessionContext(signals.session_context,env,signals.client_info?.episode)??{}}function runWithAgentSessionContext(context,callback){const ambient=agentSessionContextStorage.getStore();const episode=boundAgentEpisodeIdentity(context.episode,true);const parentEpisode=boundAgentEpisodeIdentity(ambient?.episode,false);const nestedEpisode=episode!==void 0&&episode.parent_id===void 0&&parentEpisode!==void 0?{...episode,parent_id:parentEpisode.id}:episode;const provenance={...normalizedProvenance(ambient?.provenance),...normalizedProvenance(context.provenance)};return agentSessionContextStorage.run({...Object.keys(provenance).length===0?{}:{provenance},...nestedEpisode===void 0?parentEpisode===void 0?{}:{episode:parentEpisode}:{episode:nestedEpisode}},callback)}function agentSessionEnvironment(context){const provenance=normalizedProvenance(context.provenance);const episode=boundAgentEpisodeIdentity(context.episode,true);return{...episode===void 0?{}:{PM_AGENT_EPISODE_ID:episode.id,...episode.label===void 0?{}:{PM_AGENT_EPISODE_LABEL:episode.label},...episode.parent_id===void 0?{}:{PM_AGENT_EPISODE_PARENT_ID:episode.parent_id}},...provenance.role===void 0?{}:{PM_AGENT_SESSION_ROLE:provenance.role},...provenance.topic===void 0?{}:{PM_AGENT_SESSION_TOPIC:provenance.topic}}}export{agentSessionEnvironment,boundAgentEpisodeIdentity,resolveAgentSessionContext,resolveAgentSessionContextFromSignals,runWithAgentSessionContext};
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]="1fbb183b-c6d8-5834-b4cb-e4fb515572b9")}catch{}})();import{AsyncLocalStorage}from"node:async_hooks";const agentSessionContextStorage=new AsyncLocalStorage,EPISODE_ID_PATTERN=/^[A-Za-z0-9](?:[A-Za-z0-9._:-]{0,127})$/u;function boundedText(value,limit){const trimmed=typeof value=="string"?value.trim():"";return trimmed.length>0?trimmed.slice(0,limit):void 0}function boundAgentEpisodeIdentity(value,strict){if(value===void 0)return;const record=typeof value=="object"&&value!==null?value:{},id=boundedText(record.id,128),parentId=boundedText(record.parent_id,128);if(id===void 0||!EPISODE_ID_PATTERN.test(id)||parentId!==void 0&&!EPISODE_ID_PATTERN.test(parentId)){if(strict)throw new Error("Agent episode ids must be 1-128 letters, digits, dots, underscores, colons, or hyphens.");return}const label=boundedText(record.label,256);return{id,...label===void 0?{}:{label},...parentId===void 0?{}:{parent_id:parentId}}}function normalizedProvenance(value){const result={};for(const[key,rawValue]of Object.entries(value??{}).slice(0,32)){const normalizedKey=key.trim().toLowerCase().slice(0,64),normalizedValue=boundedText(rawValue,256);/^[a-z][a-z0-9_-]{0,63}$/u.test(normalizedKey)&&normalizedValue!==void 0&&(result[normalizedKey]=normalizedValue)}return result}function resolveAgentSessionContext(explicit,env,fallbackEpisode){const ambient=agentSessionContextStorage.getStore(),environmentProvenance=normalizedProvenance({role:env.PM_AGENT_SESSION_ROLE,topic:env.PM_AGENT_SESSION_TOPIC}),environmentEpisode=boundAgentEpisodeIdentity(env.PM_AGENT_EPISODE_ID===void 0?void 0:{id:env.PM_AGENT_EPISODE_ID,label:env.PM_AGENT_EPISODE_LABEL,parent_id:env.PM_AGENT_EPISODE_PARENT_ID},!1),provenance={...normalizedProvenance(ambient?.provenance),...environmentProvenance,...normalizedProvenance(explicit?.provenance)},episode=boundAgentEpisodeIdentity(explicit?.episode,!1)??boundAgentEpisodeIdentity(fallbackEpisode,!1)??environmentEpisode??boundAgentEpisodeIdentity(ambient?.episode,!1);return Object.keys(provenance).length===0&&episode===void 0?void 0:{...Object.keys(provenance).length===0?{}:{provenance},...episode===void 0?{}:{episode}}}function resolveAgentSessionContextFromSignals(signals,env){return resolveAgentSessionContext(signals.session_context,env,signals.client_info?.episode)??{}}function runWithAgentSessionContext(context,callback){const ambient=agentSessionContextStorage.getStore(),episode=boundAgentEpisodeIdentity(context.episode,!0),parentEpisode=boundAgentEpisodeIdentity(ambient?.episode,!1),nestedEpisode=episode!==void 0&&episode.parent_id===void 0&&parentEpisode!==void 0?{...episode,parent_id:parentEpisode.id}:episode,provenance={...normalizedProvenance(ambient?.provenance),...normalizedProvenance(context.provenance)};return agentSessionContextStorage.run({...Object.keys(provenance).length===0?{}:{provenance},...nestedEpisode===void 0?parentEpisode===void 0?{}:{episode:parentEpisode}:{episode:nestedEpisode}},callback)}function agentSessionEnvironment(context){const provenance=normalizedProvenance(context.provenance),episode=boundAgentEpisodeIdentity(context.episode,!0);return{...episode===void 0?{}:{PM_AGENT_EPISODE_ID:episode.id,...episode.label===void 0?{}:{PM_AGENT_EPISODE_LABEL:episode.label},...episode.parent_id===void 0?{}:{PM_AGENT_EPISODE_PARENT_ID:episode.parent_id}},...provenance.role===void 0?{}:{PM_AGENT_SESSION_ROLE:provenance.role},...provenance.topic===void 0?{}:{PM_AGENT_SESSION_TOPIC:provenance.topic}}}export{agentSessionEnvironment,boundAgentEpisodeIdentity,resolveAgentSessionContext,resolveAgentSessionContextFromSignals,runWithAgentSessionContext};
2
2
  //# sourceMappingURL=agent-session-context.js.map
@@ -1,2 +1,6 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="c39d3d14-b0b5-5309-b89a-9da08e1a939a")}catch(e2){}})();import{AsyncLocalStorage}from"node:async_hooks";import{createHash}from"node:crypto";import fs from"node:fs";import os from"node:os";import path from"node:path";import{resolveAgentSessionContextFromSignals}from"./agent-session-context.js";import{readAgentSemanticAttributionSync}from"../session/session-state.js";import{isFileAbsentError}from"../fs/fs-utils.js";const AGENT_PROVENANCE_DIMENSIONS=["model","effort","role","topic","version"];const authorIdentityStorage=new AsyncLocalStorage;const harnessDetectionStorage=new AsyncLocalStorage;const workspaceHarnessSignalsStorage=new AsyncLocalStorage;const BUILTIN_HARNESS_SIGNAL_DESCRIPTORS=[{harness:"claude-code",environment_keys:["CLAUDE_CODE","CLAUDECODE"],model_environment_keys:["ANTHROPIC_MODEL","CLAUDE_MODEL"],session_environment_keys:["CLAUDE_CODE_SESSION_ID"],provenance_environment_keys:{effort:["CLAUDE_EFFORT"]},provenance_resolvers:{model:"claude_session_file",version:"claude_session_file"},provenance_unavailable_dimensions:["role","topic"],argv_markers:["claude","claude-code"],client_names:["claude","claude-code","claude code"]},{harness:"codex",environment_keys:["CODEX_HOME","CODEX_CI","CODEX_THREAD_ID"],model_environment_keys:["CODEX_MODEL"],session_environment_keys:["CODEX_THREAD_ID"],provenance_environment_keys:{effort:["CODEX_REASONING_EFFORT","CODEX_EFFORT"],role:["CODEX_SESSION_ROLE"]},provenance_resolvers:{model:"codex_session_file",effort:"codex_session_file",version:"ai_agent_version"},provenance_unavailable_dimensions:["topic"],argv_markers:["codex"],client_names:["codex"]},{harness:"pi",environment_keys:["PI_AGENT","PI_CODING_AGENT"],model_environment_keys:["PI_MODEL"],session_environment_keys:["PI_SESSION_ID"],provenance_unavailable_dimensions:["effort","role","topic"],argv_markers:["pi"],client_names:["pi"]},{harness:"opencode",environment_keys:["OPENCODE","OPENCODE_SESSION_ID"],model_environment_keys:["OPENCODE_MODEL"],session_environment_keys:["OPENCODE_SESSION_ID"],provenance_unavailable_dimensions:["effort","role","topic"],argv_markers:["opencode"],client_names:["opencode"]},{harness:"cursor",environment_keys:["CURSOR_AGENT","CURSOR_TRACE_ID"],model_environment_keys:["CURSOR_MODEL"],session_environment_keys:["CURSOR_TRACE_ID"],provenance_unavailable_dimensions:["effort","role","topic"],argv_markers:["cursor"],client_names:["cursor"]},{harness:"aider",environment_keys:["AIDER","AIDER_MODEL"],model_environment_keys:["AIDER_MODEL"],session_environment_keys:["AIDER_SESSION_ID"],provenance_unavailable_dimensions:["effort","role","topic"],argv_markers:["aider"],client_names:["aider"]},{harness:"gemini-cli",environment_keys:["GEMINI_CLI","GEMINI_CLI_HOME"],model_environment_keys:["GEMINI_MODEL"],session_environment_keys:["GEMINI_CLI_SESSION_ID"],provenance_unavailable_dimensions:["effort","role","topic"],argv_markers:["gemini","gemini-cli"],client_names:["gemini","gemini-cli","gemini cli"]},{harness:"ci",environment_keys:["CI","GITHUB_ACTIONS","BUILDKITE","GITLAB_CI"],provenance_unavailable_dimensions:["model","effort","role","topic"],argv_markers:[],client_names:[]}];const PROVENANCE_PROBE_POLICY=Object.freeze({max_bytes:1048576,max_lines:4096,network_access:false,subprocess_access:false});const CODEX_PROVENANCE_PROBE_POLICY=Object.freeze({...PROVENANCE_PROBE_POLICY,max_bytes:4194304});const HARNESS_NAMESPACE_PATTERN=/^[a-z0-9]+(?:-[a-z0-9]+)*$/u;function buildBuiltinProvenanceAdapter(descriptor){const unavailableDimensions=normalizeHarnessSignalDescriptor(descriptor).provenance_unavailable_dimensions;const dimensions=new Set(["model","version",...Object.keys(descriptor.provenance_environment_keys??{}),...Object.keys(descriptor.provenance_resolvers??{})]);return Object.freeze({contract_version:1,adapter_version:"v1",priority:0,harness:descriptor.harness,descriptor,supported_dimensions:Object.freeze([...dimensions].sort()),native_sources:Object.freeze(["environment","argv","mcp_client",...Object.values(descriptor.provenance_resolvers??{}).some(resolver=>resolver?.endsWith("session_file"))?["session_file"]:[]]),probe_policy:descriptor.harness==="codex"?CODEX_PROVENANCE_PROBE_POLICY:PROVENANCE_PROBE_POLICY,normalization:Object.freeze({model_family:"v1",effort:"v1",preserve_raw:true}),confidence:"high",waivers:Object.freeze(Object.fromEntries(unavailableDimensions.map(dimension=>[dimension,"Harness does not expose this dimension."])))})}const BUILTIN_AGENT_PROVENANCE_ADAPTERS=Object.freeze(BUILTIN_HARNESS_SIGNAL_DESCRIPTORS.filter(descriptor=>descriptor.harness!=="ci").map(buildBuiltinProvenanceAdapter).sort((left,right)=>left.harness.localeCompare(right.harness)));const registeredAgentProvenanceAdapters=new Map;const registeredHarnessSignalDescriptors=new Map;function nonBlank(value){const trimmed=typeof value==="string"?value.trim():void 0;return trimmed&&trimmed.length>0?trimmed:void 0}function boundedUniqueStrings(values){return[...new Set((values??[]).slice(0,64).map(value=>value.trim()).filter(value=>value.length>0).map(value=>value.slice(0,128)))]}function normalizeHarnessSignalDescriptor(descriptor){const harness=descriptor.harness.trim().toLowerCase();if(!HARNESS_NAMESPACE_PATTERN.test(harness)){throw new Error(`Invalid harness signal descriptor namespace: ${descriptor.harness}`)}return{harness,environment_keys:boundedUniqueStrings(descriptor.environment_keys),model_environment_keys:boundedUniqueStrings(descriptor.model_environment_keys),session_environment_keys:boundedUniqueStrings(descriptor.session_environment_keys),provenance_environment_keys:Object.fromEntries(Object.entries(descriptor.provenance_environment_keys??{}).slice(0,32).map(([dimension,keys])=>[dimension.trim().toLowerCase().slice(0,64),boundedUniqueStrings(keys)]).filter(([dimension])=>HARNESS_NAMESPACE_PATTERN.test(dimension))),provenance_resolvers:Object.fromEntries(Object.entries(descriptor.provenance_resolvers??{}).slice(0,32).map(([dimension,resolver])=>[dimension.trim().toLowerCase().slice(0,64),resolver]).filter(entry=>typeof entry[0]==="string"&&HARNESS_NAMESPACE_PATTERN.test(entry[0])&&(entry[1]==="ai_agent_version"||entry[1]==="claude_session_file"||entry[1]==="codex_session_file"))),provenance_unavailable_dimensions:boundedUniqueStrings(descriptor.provenance_unavailable_dimensions).map(value=>value.toLowerCase()),argv_markers:boundedUniqueStrings(descriptor.argv_markers).map(value=>value.toLowerCase()),client_names:boundedUniqueStrings(descriptor.client_names).map(value=>value.toLowerCase())}}const NORMALIZED_BUILTIN_HARNESS_SIGNAL_DESCRIPTORS=BUILTIN_HARNESS_SIGNAL_DESCRIPTORS.map(normalizeHarnessSignalDescriptor);function descriptorEquals(left,right){return JSON.stringify(left)===JSON.stringify(right)}function literalSignalMatches(value,marker){const segments=value.toLowerCase().slice(0,512).split(/[/\\\s:=]+/u).filter(segment=>segment.length>0);return segments.includes(marker)||value.trim().toLowerCase()===marker}function currentHarnessSignalDescriptors(localDescriptors=[]){const adapterDescriptors=new Map(BUILTIN_HARNESS_SIGNAL_DESCRIPTORS.filter(descriptor=>descriptor.harness!=="ci").map(descriptor=>[descriptor.harness,normalizeHarnessSignalDescriptor(descriptor)]));for(const{adapter}of registeredAgentProvenanceAdapters.values()){adapterDescriptors.set(adapter.harness,normalizeHarnessSignalDescriptor(adapter.descriptor))}const descriptors=[...adapterDescriptors.values(),...NORMALIZED_BUILTIN_HARNESS_SIGNAL_DESCRIPTORS.filter(descriptor=>descriptor.harness==="ci"),...[...registeredHarnessSignalDescriptors.values()].map(entry=>entry.descriptor),...workspaceHarnessSignalsStorage.getStore()?.descriptors??[],...localDescriptors.map(normalizeHarnessSignalDescriptor)];const seen=new Set;for(const descriptor of descriptors){if(seen.has(descriptor.harness)){throw new Error(`Harness signal descriptor collision for "${descriptor.harness}"`)}seen.add(descriptor.harness)}return descriptors}function firstEnvironmentValue(env,keys){for(const key of keys??[]){const value=nonBlank(env[key]);if(value)return value.slice(0,256)}return void 0}function provenanceFromArgv(argv,dimension){if(dimension==="role"){const command=argv.slice(0,8).map(token=>token.trim().toLowerCase()).find(token=>["claim","create","update","close","release","review"].includes(token));if(command==="review")return"reviewer";if(command)return"implementer"}return void 0}function provenanceFlagValue(argv,dimension){const acceptedFlags=dimension==="model"?["--model","--agent-model"]:[`--agent-${dimension}`];const tokens=argv.slice(0,8);for(let index=0;index<tokens.length;index+=1){const token=tokens[index].slice(0,512);if(acceptedFlags.includes(token)){return nonBlank(tokens[index+1])?.slice(0,256)}const prefix=acceptedFlags.find(flag=>token.startsWith(`${flag}=`));if(prefix){return nonBlank(token.slice(prefix.length+1))?.slice(0,256)}}return void 0}const AGENT_ROLE_VALUES=new Set(["implementation","implementer","investigator","orchestrator","planner","release-operator","reviewer"]);function normalizeProvenanceValue(dimension,value){if(dimension!=="role"||value===void 0)return value;const normalized=value.trim().toLowerCase().replaceAll(/[_\s]+/gu,"-");return AGENT_ROLE_VALUES.has(normalized)?normalized:void 0}function boundedProvenanceValue(provenance,dimension){return nonBlank(provenance?.[dimension])?.slice(0,256)}const MAX_PROVENANCE_PROBE_BYTES=1048576;const MAX_CODEX_PROVENANCE_PROBE_BYTES=4194304;const codexProvenanceSnapshotCache=new Map;const EMPTY_CODEX_PROVENANCE_SNAPSHOT=Object.freeze({});const claudeProvenanceSnapshotCache=new Map;const EMPTY_CLAUDE_PROVENANCE_SNAPSHOT=Object.freeze({});function asProvenanceRecord(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)?value:void 0}function parseClaudeProvenanceLine(line){let parsed;try{parsed=JSON.parse(line)}catch{return EMPTY_CLAUDE_PROVENANCE_SNAPSHOT}const record=asProvenanceRecord(parsed);if(!record)return EMPTY_CLAUDE_PROVENANCE_SNAPSHOT;const queue=[{value:record,depth:0}];let visited=0;let model;let version;while(queue.length>0&&visited<64){const current=queue.shift();visited+=1;model??=nonBlank(current.value.model)?.slice(0,256);version??=nonBlank(current.value.version)?.slice(0,256);if(model&&version)break;if(current.depth>=4)continue;for(const value of Object.values(current.value)){const nested=asProvenanceRecord(value);if(nested){queue.push({value:nested,depth:current.depth+1})}}}return Object.freeze({model,version})}function claudeTranscriptCandidateStatus(candidate){try{return fs.lstatSync(candidate).isFile()?"available":"missing"}catch(error){return isFileAbsentError(error)?"missing":"failed"}}function discoverClaudeSessionFile(projectsRoot,session){let discovered;try{discovered=fs.readdirSync(projectsRoot,{withFileTypes:true}).filter(entry=>entry.isDirectory()).sort((left,right)=>left.name.localeCompare(right.name)).slice(0,512).map(entry=>{const candidate=path.join(projectsRoot,entry.name,`${session}.jsonl`);return{candidate,status:claudeTranscriptCandidateStatus(candidate)}})}catch(error){return{status:isFileAbsentError(error)?"missing":"failed"}}const matches=discovered.filter(({status})=>status==="available").map(({candidate})=>candidate);if(matches.length===0){return{status:discovered.some(({status})=>status==="failed")?"failed":"missing"}}if(matches.length>1)return{status:"ambiguous"};return{status:"available",path:matches[0]}}function resolveClaudeSessionFile(signals,env){const session=nonBlank(env.CLAUDE_CODE_SESSION_ID);if(!session||!/^[A-Za-z0-9_-]{1,128}$/u.test(session)){return{status:"unavailable"}}const workspace=path.resolve(signals.cwd??process.cwd());const encodedWorkspace=workspace.replaceAll(/[^A-Za-z0-9-]/gu,"-");const projectsRoot=path.join(signals.home_dir??os.homedir(),".claude","projects");const directPath=path.join(projectsRoot,encodedWorkspace,`${session}.jsonl`);const explicitPath=nonBlank(signals.session_file);const suppliedPath=explicitPath&&path.basename(explicitPath)===`${session}.jsonl`?explicitPath:void 0;for(const candidate of[suppliedPath,directPath]){if(!candidate)continue;const status=claudeTranscriptCandidateStatus(candidate);if(status==="available")return{status,path:candidate};if(status==="failed")return{status}}return discoverClaudeSessionFile(projectsRoot,session)}function readClaudeSessionProvenance(dimension,signals,env){const resolution=resolveClaudeSessionFile(signals,env);if(resolution.status!=="available")return void 0;try{const file=fs.openSync(resolution.path,fs.constants.O_RDONLY|fs.constants.O_NOFOLLOW);try{const stats=fs.fstatSync(file);const cacheKey=`${resolution.path}\0${stats.size}\0${stats.mtimeMs}`;const cached=claudeProvenanceSnapshotCache.get(cacheKey);if(cached)return cached[dimension];const probeLength=Math.min(stats.size,MAX_PROVENANCE_PROBE_BYTES);const headLength=Math.min(probeLength,Math.ceil(probeLength/2));const tailLength=Math.min(probeLength-headLength,stats.size-headLength);const head=Buffer.alloc(headLength);fs.readSync(file,head,0,headLength,0);const tail=Buffer.alloc(tailLength);if(tailLength>0){fs.readSync(file,tail,0,tailLength,stats.size-tailLength)}const snapshot={};const lines=stats.size<=probeLength?Buffer.concat([head,tail]).toString("utf8").split("\n"):[...head.toString("utf8").split("\n").slice(0,4096),...tail.toString("utf8").split("\n").slice(-4096)];for(const line of lines){if(line.length===0||line.length>262144)continue;const parsed=parseClaudeProvenanceLine(line);snapshot.model??=parsed.model;snapshot.version??=parsed.version;if(snapshot.model&&snapshot.version)break}const frozen=Object.freeze(snapshot);claudeProvenanceSnapshotCache.clear();claudeProvenanceSnapshotCache.set(cacheKey,frozen);return frozen[dimension]}finally{fs.closeSync(file)}}catch{return void 0}}function findCodexSessionFile(root,session){let visited=0;const visit=(directory,depth)=>{if(depth>4||visited>=512)return void 0;let entries;try{entries=fs.readdirSync(directory,{withFileTypes:true}).sort((left,right)=>right.name.localeCompare(left.name))}catch{return void 0}for(const entry of entries){visited+=1;if(visited>512)return void 0;const entryPath=path.join(directory,entry.name);if(entry.isFile()&&entry.name.endsWith(`-${session}.jsonl`)){return entryPath}if(entry.isDirectory()){const found=visit(entryPath,depth+1);if(found)return found}}return void 0};return visit(root,0)}function codexProvenanceWindows(size){if(size<=MAX_CODEX_PROVENANCE_PROBE_BYTES){return[{offset:0,length:size}]}const halfBudget=Math.floor(MAX_CODEX_PROVENANCE_PROBE_BYTES/2);return[{offset:size-halfBudget,length:halfBudget},{offset:0,length:halfBudget}]}function mergeCodexTurnContext(snapshot,line){if(line.length===0||line.length>262144)return;let parsed;try{parsed=JSON.parse(line)}catch{return}if(typeof parsed!=="object"||parsed===null||Array.isArray(parsed)){return}const record=parsed;if(record.type!=="turn_context")return;const payload=typeof record.payload==="object"&&record.payload!==null?record.payload:void 0;snapshot.model??=nonBlank(payload?.model)?.slice(0,256);snapshot.effort??=nonBlank(payload?.effort)?.slice(0,256)}function readCodexProvenanceSnapshot(file,size){const snapshot={};let linesRemaining=4096;for(const window2 of codexProvenanceWindows(size)){const buffer=Buffer.alloc(window2.length);fs.readSync(file,buffer,0,window2.length,window2.offset);const lines=buffer.toString("utf8").split("\n").reverse().slice(0,linesRemaining);linesRemaining-=lines.length;for(const line of lines){mergeCodexTurnContext(snapshot,line);if(snapshot.model&&snapshot.effort)break}if(snapshot.model&&snapshot.effort||linesRemaining<=0)break}return snapshot}function readCodexSessionProvenance(dimension,signals,env){const session=nonBlank(env.CODEX_THREAD_ID);if(!session||!/^[A-Za-z0-9_-]{1,128}$/u.test(session))return void 0;const sessionsRoot=path.join(signals.home_dir??os.homedir(),".codex","sessions");const cacheKey=`${sessionsRoot}\0${session}`;const cached=codexProvenanceSnapshotCache.get(cacheKey);if(cached)return cached[dimension];const sessionPath=findCodexSessionFile(sessionsRoot,session);if(!sessionPath){codexProvenanceSnapshotCache.set(cacheKey,EMPTY_CODEX_PROVENANCE_SNAPSHOT);return void 0}try{const file=fs.openSync(sessionPath,"r");try{const size=fs.fstatSync(file).size;const snapshot=readCodexProvenanceSnapshot(file,size);codexProvenanceSnapshotCache.set(cacheKey,snapshot);return snapshot[dimension]}finally{fs.closeSync(file)}}catch{codexProvenanceSnapshotCache.set(cacheKey,EMPTY_CODEX_PROVENANCE_SNAPSHOT);return void 0}}function resolveProvenanceProbe(dimension,signals,env,descriptor){const workspaceSignals=workspaceHarnessSignalsStorage.getStore();const enabled=signals.probes_enabled!==false&&workspaceSignals?.probesEnabled!==false&&!["0","false","off"].includes(nonBlank(env.PM_AGENT_PROBES)?.toLowerCase()??"");if(!enabled)return void 0;const resolver=descriptor?.provenance_resolvers[dimension];if(resolver==="claude_session_file"){return readClaudeSessionProvenance(dimension,signals,env)}if(resolver==="codex_session_file"){return readCodexSessionProvenance(dimension,signals,env)}if(resolver==="ai_agent_version"){const value=nonBlank(env.AI_AGENT);if(!value||!descriptor||!literalSignalMatches(value,descriptor.harness)){return void 0}const match=/(?:^|[@/\s])v?(\d+\.\d+(?:\.\d+)?(?:[-+][A-Za-z0-9.-]+)?)$/u.exec(value);return match?.[1]?.slice(0,256)}return void 0}function provenanceResolverHasInput(resolver,descriptor,signals,env){if(resolver==="ai_agent_version"){const value=nonBlank(env.AI_AGENT);return value!==void 0&&literalSignalMatches(value,descriptor.harness)?"available":"unavailable"}if(resolver==="codex_session_file"){return nonBlank(env.CODEX_THREAD_ID)!==void 0?"available":"unavailable"}return resolveClaudeSessionFile(signals,env).status}function effectiveHarnessDetectionSignals(signals){if(signals)return signals;return harnessDetectionStorage.getStore()??{env:process.env,argv:process.argv}}function descriptorMatchesSignals(descriptor,env,labels,clientName){const environmentMatch=descriptor.environment_keys.some(key=>nonBlank(env[key])!==void 0);const argvMatch=descriptor.argv_markers.some(marker=>labels.some(label=>{const normalizedPath=label.replaceAll("\\","/");return literalSignalMatches(normalizedPath.slice(normalizedPath.lastIndexOf("/")+1),marker)}));const clientMatch=descriptor.client_names.some(name=>clientName===name||literalSignalMatches(clientName,name));return environmentMatch||argvMatch||clientMatch}function inferredProvenanceObservation(dimension,semanticAttribution){if(!semanticAttribution)return void 0;let value;if(dimension==="topic")value=semanticAttribution.topic;if(dimension==="role")value=semanticAttribution.role;if(!value)return void 0;return{value,source:"inferred",confidence:semanticAttribution.confidence,rule_version:semanticAttribution.rule_version,evidence:semanticAttribution.evidence}}function firstProvenanceObservation(candidates){const observed=candidates.find(([value])=>value!==void 0);return observed?.[0]?{value:observed[0],source:observed[1]}:void 0}function resolveAgentProvenanceObservation(dimension,signals,env,descriptor,sessionContext,semanticAttribution){const overrideKey=`PM_AGENT_${dimension.toUpperCase().replaceAll("-","_")}`;const hostResolvedDimensions=new Set([...AGENT_PROVENANCE_DIMENSIONS,...Object.keys(descriptor?.provenance_environment_keys??{})]);let overrideValue;let argvValue;let argvFlagValue;if(hostResolvedDimensions.has(dimension)){overrideValue=normalizeProvenanceValue(dimension,nonBlank(env[overrideKey])?.slice(0,256));argvFlagValue=normalizeProvenanceValue(dimension,provenanceFlagValue(signals.argv??[],dimension));argvValue=normalizeProvenanceValue(dimension,provenanceFromArgv(signals.argv??[],dimension))}const environmentKeysByDimension={...descriptor?.provenance_environment_keys,model:descriptor?.model_environment_keys};const clientProvenance={...signals.client_info?.provenance,model:signals.client_info?.model};const sessionValue=boundedProvenanceValue(sessionContext?.provenance,dimension);const environmentValue=normalizeProvenanceValue(dimension,firstEnvironmentValue(env,environmentKeysByDimension[dimension]));const clientValue=normalizeProvenanceValue(dimension,boundedProvenanceValue(clientProvenance,dimension));const hostValue=normalizeProvenanceValue(dimension,boundedProvenanceValue(signals.provenance,dimension));const probeValue=resolveProvenanceProbe(dimension,signals,env,descriptor);const observed=firstProvenanceObservation([[overrideValue,"override"],[sessionValue,"session"],[argvFlagValue,"argv"],[environmentValue,"environment"],[clientValue,"mcp_client"],[hostValue,"host"],[probeValue,"probe"]]);return observed??inferredProvenanceObservation(dimension,semanticAttribution)??(argvValue?{value:argvValue,source:"argv"}:void 0)}function resolveAgentInstance(harness,session){if(!harness||!session)return void 0;return createHash("sha256").update(`pm-agent-instance:v1\0${harness}\0${session}`).digest("hex").slice(0,24)}function resolveAgentProvenance(signals,env,descriptor,sessionContext,semanticAttribution){const descriptorDimensions=Object.keys(descriptor?.provenance_environment_keys??{});const dimensions=new Set([...AGENT_PROVENANCE_DIMENSIONS,...descriptorDimensions,...Object.keys(descriptor?.provenance_resolvers??{}),...Object.keys(signals.provenance??{}),...Object.keys(signals.client_info?.provenance??{}),...Object.keys(sessionContext?.provenance??{})]);const observations={};for(const dimension of dimensions){const observed=resolveAgentProvenanceObservation(dimension,signals,env,descriptor,sessionContext,semanticAttribution);if(observed){observations[dimension]=observed}else if(descriptor&&(dimension!=="version"||descriptor.provenance_unavailable_dimensions.includes(dimension))){observations[dimension]=null}}return observations}function registerHarnessSignalDescriptors(descriptors){const normalized=descriptors.map(normalizeHarnessSignalDescriptor);const builtins=new Map(NORMALIZED_BUILTIN_HARNESS_SIGNAL_DESCRIPTORS.map(descriptor=>[descriptor.harness,descriptor]));const seen=new Set;for(const descriptor of normalized){if(seen.has(descriptor.harness)||builtins.has(descriptor.harness)){throw new Error(`Harness signal descriptor collision for "${descriptor.harness}"`)}const registered=registeredHarnessSignalDescriptors.get(descriptor.harness);if(registered&&!descriptorEquals(registered.descriptor,descriptor)){throw new Error(`Harness signal descriptor collision for "${descriptor.harness}"`)}seen.add(descriptor.harness)}for(const descriptor of normalized){const registered=registeredHarnessSignalDescriptors.get(descriptor.harness);registeredHarnessSignalDescriptors.set(descriptor.harness,{descriptor,registrations:(registered?.registrations??0)+1})}let active=true;return()=>{if(!active)return;active=false;for(const descriptor of normalized){const registered=registeredHarnessSignalDescriptors.get(descriptor.harness);if(!registered||registered.registrations<=1){registeredHarnessSignalDescriptors.delete(descriptor.harness)}else{registered.registrations-=1}}}}function normalizeAgentProvenanceAdapter(adapter){const descriptor=normalizeHarnessSignalDescriptor(adapter.descriptor);const harness=adapter.harness.trim().toLowerCase();if(adapter.contract_version!==1){throw new Error(`Unsupported provenance adapter contract for "${harness}": ${adapter.contract_version}`)}if(descriptor.harness!==harness){throw new Error(`Provenance adapter harness "${harness}" does not match descriptor "${descriptor.harness}".`)}const adapterVersion=nonBlank(adapter.adapter_version)?.slice(0,64);if(!adapterVersion){throw new Error(`Provenance adapter "${harness}" requires a version.`)}if(!Number.isSafeInteger(adapter.priority)){throw new Error(`Provenance adapter "${harness}" requires an integer priority.`)}if(adapter.probe_policy.network_access!==false||adapter.probe_policy.subprocess_access!==false||adapter.probe_policy.max_bytes>MAX_CODEX_PROVENANCE_PROBE_BYTES||adapter.probe_policy.max_lines>4096){throw new Error(`Provenance adapter "${harness}" exceeds the bounded local probe policy.`)}return Object.freeze({...adapter,adapter_version:adapterVersion,harness,descriptor,supported_dimensions:Object.freeze(boundedUniqueStrings(adapter.supported_dimensions).map(dimension=>dimension.toLowerCase()).sort()),native_sources:Object.freeze([...new Set(adapter.native_sources)]),probe_policy:Object.freeze({...adapter.probe_policy}),normalization:Object.freeze({...adapter.normalization}),...adapter.waivers?{waivers:Object.freeze(Object.fromEntries(Object.entries(adapter.waivers).slice(0,32).map(([dimension,reason])=>[dimension.slice(0,64),reason.slice(0,256)])))}:{}})}function listAgentProvenanceAdapters(){const effective=new Map(BUILTIN_AGENT_PROVENANCE_ADAPTERS.map(adapter=>[adapter.harness,adapter]));for(const{adapter}of registeredAgentProvenanceAdapters.values()){effective.set(adapter.harness,adapter)}return Object.freeze([...effective.values()].sort((left,right)=>left.harness.localeCompare(right.harness)))}function registerAgentProvenanceAdapters(adapters){const normalized=adapters.map(normalizeAgentProvenanceAdapter);const builtins=new Map(BUILTIN_AGENT_PROVENANCE_ADAPTERS.map(adapter=>[adapter.harness,adapter]));const seen=new Set;for(const adapter of normalized){if(seen.has(adapter.harness)){throw new Error(`Provenance adapter collision for "${adapter.harness}".`)}const builtin=builtins.get(adapter.harness);if(builtin&&adapter.priority<=builtin.priority){throw new Error(`Provenance adapter override for "${adapter.harness}" requires priority greater than ${builtin.priority}.`)}const registered=registeredAgentProvenanceAdapters.get(adapter.harness);if(registered&&JSON.stringify(registered.adapter)!==JSON.stringify(adapter)){throw new Error(`Provenance adapter collision for "${adapter.harness}".`)}seen.add(adapter.harness)}for(const adapter of normalized){const registered=registeredAgentProvenanceAdapters.get(adapter.harness);registeredAgentProvenanceAdapters.set(adapter.harness,{adapter,registrations:(registered?.registrations??0)+1})}let active=true;return()=>{if(!active)return;active=false;for(const adapter of normalized){const registered=registeredAgentProvenanceAdapters.get(adapter.harness);if(!registered||registered.registrations<=1){registeredAgentProvenanceAdapters.delete(adapter.harness)}else{registered.registrations-=1}}}}function normalizeAgentProvenanceAdapterValue(dimension,value){const raw=value.trim().slice(0,256);let normalized=raw.toLowerCase();if(dimension==="model"){const family=/^(gpt-\d+(?:\.\d+)?)/u.exec(normalized)?.[1];if(family)normalized=family}else{normalized=normalized.replaceAll(/[_\s-]+/gu,"");const effortAliases={minimal:"low",low:"low",medium:"medium",high:"high",xhigh:"xhigh",max:"max",ultra:"ultra"};normalized=effortAliases[normalized]??normalized}return{raw,normalized,vocabulary:"v1"}}function runWithHarnessDetectionSignals(signals,callback){return harnessDetectionStorage.run(signals,callback)}function runWithWorkspaceHarnessSignalDescriptors(descriptors,callback,options={}){const normalized=descriptors.map(normalizeHarnessSignalDescriptor);currentHarnessSignalDescriptors(normalized);return workspaceHarnessSignalsStorage.run({descriptors:normalized,probesEnabled:options.probesEnabled!==false},callback)}function detectAgentIdentity(signals){const effectiveSignals=effectiveHarnessDetectionSignals(signals);const env=effectiveSignals.env??{};const descriptors=currentHarnessSignalDescriptors(effectiveSignals.descriptors);const labels=[...(effectiveSignals.argv??[]).slice(0,3),...effectiveSignals.process_labels??[]].slice(0,64).map(token=>token.slice(0,512));const clientName=effectiveSignals.client_info?.name.trim().toLowerCase()??"";const descriptor=descriptors.find(candidate=>descriptorMatchesSignals(candidate,env,labels,clientName));const sessionContext=resolveAgentSessionContextFromSignals(effectiveSignals,env);const session=[firstEnvironmentValue(env,descriptor?.session_environment_keys),nonBlank(effectiveSignals.client_info?.session)?.slice(0,256)].find(candidate=>candidate!==void 0);const instance=resolveAgentInstance(descriptor?.harness,session);const semanticAttribution=readAgentSemanticAttributionSync({cwd:effectiveSignals.cwd??process.cwd(),env,key:instance});const provenance=resolveAgentProvenance(effectiveSignals,env,descriptor,sessionContext,semanticAttribution);const modelCandidate=provenance.model;const entries=[["harness",descriptor?.harness],["model",modelCandidate?.value],["model_source",modelCandidate?.source],["session",session],["instance",instance],["provenance",Object.keys(provenance).length>0?provenance:void 0],["episode",sessionContext.episode]];return Object.fromEntries(entries.filter(entry=>entry[1]!==void 0))}function provenanceResolverAbsence(resolverInput){if(resolverInput==="unavailable"){return{status:"unavailable",reason:"harness_unavailable"}}if(resolverInput==="missing"){return{status:"unavailable",reason:"resolver_input_missing"}}return{status:"failed",reason:"resolver_failed"}}function resolveProvenanceOutcome(dimension,identity,descriptor,signals,env,probesEnabled,invalidValue){const resolver=descriptor?.provenance_resolvers[dimension];if(identity.provenance?.[dimension]){return{status:"resolved",...resolver?{resolver}:{},rule_version:"v1"}}if(invalidValue){return{status:"unavailable",reason:"invalid_value",rule_version:"v1"}}if(resolver){if(!probesEnabled){return{status:"unavailable",reason:"probes_disabled",resolver,rule_version:"v1"}}const resolverInput=provenanceResolverHasInput(resolver,descriptor,signals,env);return{...provenanceResolverAbsence(resolverInput),resolver,rule_version:"v1"}}return{status:descriptor?.provenance_unavailable_dimensions.includes(dimension)?"unavailable":"not_configured",reason:descriptor?.provenance_unavailable_dimensions.includes(dimension)?"harness_unavailable":"resolver_not_configured",rule_version:"v1"}}function diagnoseAgentIdentity(signals){const effectiveSignals=effectiveHarnessDetectionSignals(signals);const identity=detectAgentIdentity(effectiveSignals);const descriptor=currentHarnessSignalDescriptors(effectiveSignals.descriptors).find(candidate=>candidate.harness===identity.harness);const env=effectiveSignals.env??{};const probesEnabled=effectiveSignals.probes_enabled!==false&&workspaceHarnessSignalsStorage.getStore()?.probesEnabled!==false&&!["0","false","off"].includes(nonBlank(env.PM_AGENT_PROBES)?.toLowerCase()??"");const sessionContext=resolveAgentSessionContextFromSignals(effectiveSignals,env);const invalidRoleValue=[env.PM_AGENT_ROLE,sessionContext.provenance?.role,firstEnvironmentValue(env,descriptor?.provenance_environment_keys.role),effectiveSignals.client_info?.provenance?.role,effectiveSignals.provenance?.role,provenanceFlagValue(effectiveSignals.argv??[],"role")].some(candidate=>{const value=nonBlank(candidate)?.slice(0,256);return value!==void 0&&normalizeProvenanceValue("role",value)===void 0});const outcomes=Object.fromEntries(AGENT_PROVENANCE_DIMENSIONS.map(dimension=>[dimension,resolveProvenanceOutcome(dimension,identity,descriptor,effectiveSignals,env,probesEnabled,dimension==="role"&&invalidRoleValue)]));return{...identity,provenance_outcomes:outcomes}}function readAuthorEnvironment(){return process.env.PM_AUTHOR}function writeAuthorEnvironment(author){if(author===void 0)delete process.env.PM_AUTHOR;else process.env.PM_AUTHOR=author}function detectHarnessIdentity(signals){return detectAgentIdentity(signals).harness}function resolveAuthorIdentity(candidate,fallback,signals){const effectiveSignals=effectiveHarnessDetectionSignals(signals);const detected=detectAgentIdentity(effectiveSignals);if(candidate!==void 0){const explicit=nonBlank(candidate);return explicit?{author:explicit,source:"asserted",...detected}:{author:"unknown",source:"unknown",...detected}}if(effectiveSignals.env?.PM_AUTHOR!==void 0){const environment=nonBlank(effectiveSignals.env.PM_AUTHOR);return environment?{author:environment,source:"asserted",...detected}:{author:"unknown",source:"unknown",...detected}}const configured=nonBlank(fallback);if(configured){return{author:configured,source:"configured",...detected}}if(detected.harness){return{author:`harness:${detected.harness}`,source:"detected",...detected}}return{author:"unknown",source:"unknown",...detected}}function resolveHistoryAuthorSource(author){const active=authorIdentityStorage.getStore();if(active?.author===author){return active.source}if(author.startsWith("harness:")){return"detected"}return author==="unknown"?"unknown":"asserted"}function resolveHistoryAgentIdentity(author){const active=authorIdentityStorage.getStore();if(active?.author!==author){return author.startsWith("harness:")?{harness:author.slice("harness:".length)}:{}}return{...active.harness?{harness:active.harness}:{},...active.model?{model:active.model}:{},...active.model_source?{model_source:active.model_source}:{},...active.session?{session:active.session}:{},...active.instance?{instance:active.instance}:{},...active.provenance?{provenance:active.provenance}:{},...active.episode?{episode:active.episode}:{}}}function resolveClaimPrincipal(author){const active=authorIdentityStorage.getStore();return active?.author===author&&active.source==="detected"&&active.instance?`${author}#${active.instance}`:author}function resolveAuthor(candidate,fallback){const identity=resolveAuthorIdentity(candidate,fallback);authorIdentityStorage.enterWith(identity);return identity.author}export{AGENT_PROVENANCE_DIMENSIONS,BUILTIN_AGENT_PROVENANCE_ADAPTERS,BUILTIN_HARNESS_SIGNAL_DESCRIPTORS,detectAgentIdentity,detectHarnessIdentity,diagnoseAgentIdentity,listAgentProvenanceAdapters,normalizeAgentProvenanceAdapterValue,readAuthorEnvironment,registerAgentProvenanceAdapters,registerHarnessSignalDescriptors,resolveAuthor,resolveAuthorIdentity,resolveClaimPrincipal,resolveHistoryAgentIdentity,resolveHistoryAuthorSource,runWithHarnessDetectionSignals,runWithWorkspaceHarnessSignalDescriptors,writeAuthorEnvironment};
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]="a69b86e2-6633-5abc-81b7-6a54a592d36c")}catch{}})();import{AsyncLocalStorage}from"node:async_hooks";import{createHash}from"node:crypto";import fs from"node:fs";import os from"node:os";import path from"node:path";import{resolveAgentSessionContextFromSignals}from"./agent-session-context.js";import{readAgentSemanticAttributionSync}from"../session/session-state.js";import{isFileAbsentError}from"../fs/fs-utils.js";const AGENT_PROVENANCE_DIMENSIONS=["model","effort","role","topic","version"],authorIdentityStorage=new AsyncLocalStorage,harnessDetectionStorage=new AsyncLocalStorage,workspaceHarnessSignalsStorage=new AsyncLocalStorage,BUILTIN_HARNESS_SIGNAL_DESCRIPTORS=[{harness:"claude-code",environment_keys:["CLAUDE_CODE","CLAUDECODE"],model_environment_keys:["ANTHROPIC_MODEL","CLAUDE_MODEL"],session_environment_keys:["CLAUDE_CODE_SESSION_ID"],provenance_environment_keys:{effort:["CLAUDE_EFFORT"]},provenance_resolvers:{model:"claude_session_file",version:"claude_session_file"},provenance_unavailable_dimensions:["role","topic"],argv_markers:["claude","claude-code"],client_names:["claude","claude-code","claude code"]},{harness:"codex",environment_keys:["CODEX_HOME","CODEX_CI","CODEX_THREAD_ID"],model_environment_keys:["CODEX_MODEL"],session_environment_keys:["CODEX_THREAD_ID"],provenance_environment_keys:{effort:["CODEX_REASONING_EFFORT","CODEX_EFFORT"],role:["CODEX_SESSION_ROLE"]},provenance_resolvers:{model:"codex_session_file",effort:"codex_session_file",version:"ai_agent_version"},provenance_unavailable_dimensions:["topic"],argv_markers:["codex"],client_names:["codex"]},{harness:"pi",environment_keys:["PI_AGENT","PI_CODING_AGENT"],model_environment_keys:["PI_MODEL"],session_environment_keys:["PI_SESSION_ID"],provenance_unavailable_dimensions:["effort","role","topic"],argv_markers:["pi"],client_names:["pi"]},{harness:"opencode",environment_keys:["OPENCODE","OPENCODE_SESSION_ID"],model_environment_keys:["OPENCODE_MODEL"],session_environment_keys:["OPENCODE_SESSION_ID"],provenance_unavailable_dimensions:["effort","role","topic"],argv_markers:["opencode"],client_names:["opencode"]},{harness:"cursor",environment_keys:["CURSOR_AGENT","CURSOR_TRACE_ID"],model_environment_keys:["CURSOR_MODEL"],session_environment_keys:["CURSOR_TRACE_ID"],provenance_unavailable_dimensions:["effort","role","topic"],argv_markers:["cursor"],client_names:["cursor"]},{harness:"aider",environment_keys:["AIDER","AIDER_MODEL"],model_environment_keys:["AIDER_MODEL"],session_environment_keys:["AIDER_SESSION_ID"],provenance_unavailable_dimensions:["effort","role","topic"],argv_markers:["aider"],client_names:["aider"]},{harness:"gemini-cli",environment_keys:["GEMINI_CLI","GEMINI_CLI_HOME"],model_environment_keys:["GEMINI_MODEL"],session_environment_keys:["GEMINI_CLI_SESSION_ID"],provenance_unavailable_dimensions:["effort","role","topic"],argv_markers:["gemini","gemini-cli"],client_names:["gemini","gemini-cli","gemini cli"]},{harness:"ci",environment_keys:["CI","GITHUB_ACTIONS","BUILDKITE","GITLAB_CI"],provenance_unavailable_dimensions:["model","effort","role","topic"],argv_markers:[],client_names:[]}],PROVENANCE_PROBE_POLICY=Object.freeze({max_bytes:1048576,max_lines:4096,network_access:!1,subprocess_access:!1}),CODEX_PROVENANCE_PROBE_POLICY=Object.freeze({...PROVENANCE_PROBE_POLICY,max_bytes:4194304}),HARNESS_NAMESPACE_PATTERN=/^[a-z0-9]+(?:-[a-z0-9]+)*$/u;function buildBuiltinProvenanceAdapter(descriptor){const unavailableDimensions=normalizeHarnessSignalDescriptor(descriptor).provenance_unavailable_dimensions,dimensions=new Set(["model","version",...Object.keys(descriptor.provenance_environment_keys??{}),...Object.keys(descriptor.provenance_resolvers??{})]);return Object.freeze({contract_version:1,adapter_version:"v1",priority:0,harness:descriptor.harness,descriptor,supported_dimensions:Object.freeze([...dimensions].sort()),native_sources:Object.freeze(["environment","argv","mcp_client",...Object.values(descriptor.provenance_resolvers??{}).some(resolver=>resolver?.endsWith("session_file"))?["session_file"]:[]]),probe_policy:descriptor.harness==="codex"?CODEX_PROVENANCE_PROBE_POLICY:PROVENANCE_PROBE_POLICY,normalization:Object.freeze({model_family:"v1",effort:"v1",preserve_raw:!0}),confidence:"high",waivers:Object.freeze(Object.fromEntries(unavailableDimensions.map(dimension=>[dimension,"Harness does not expose this dimension."])))})}const BUILTIN_AGENT_PROVENANCE_ADAPTERS=Object.freeze(BUILTIN_HARNESS_SIGNAL_DESCRIPTORS.filter(descriptor=>descriptor.harness!=="ci").map(buildBuiltinProvenanceAdapter).sort((left,right)=>left.harness.localeCompare(right.harness))),registeredAgentProvenanceAdapters=new Map,registeredHarnessSignalDescriptors=new Map;function nonBlank(value){const trimmed=typeof value=="string"?value.trim():void 0;return trimmed&&trimmed.length>0?trimmed:void 0}function boundedUniqueStrings(values){return[...new Set((values??[]).slice(0,64).map(value=>value.trim()).filter(value=>value.length>0).map(value=>value.slice(0,128)))]}function normalizeHarnessSignalDescriptor(descriptor){const harness=descriptor.harness.trim().toLowerCase();if(!HARNESS_NAMESPACE_PATTERN.test(harness))throw new Error(`Invalid harness signal descriptor namespace: ${descriptor.harness}`);return{harness,environment_keys:boundedUniqueStrings(descriptor.environment_keys),model_environment_keys:boundedUniqueStrings(descriptor.model_environment_keys),session_environment_keys:boundedUniqueStrings(descriptor.session_environment_keys),provenance_environment_keys:Object.fromEntries(Object.entries(descriptor.provenance_environment_keys??{}).slice(0,32).map(([dimension,keys])=>[dimension.trim().toLowerCase().slice(0,64),boundedUniqueStrings(keys)]).filter(([dimension])=>HARNESS_NAMESPACE_PATTERN.test(dimension))),provenance_resolvers:Object.fromEntries(Object.entries(descriptor.provenance_resolvers??{}).slice(0,32).map(([dimension,resolver])=>[dimension.trim().toLowerCase().slice(0,64),resolver]).filter(entry=>typeof entry[0]=="string"&&HARNESS_NAMESPACE_PATTERN.test(entry[0])&&(entry[1]==="ai_agent_version"||entry[1]==="claude_session_file"||entry[1]==="codex_session_file"))),provenance_unavailable_dimensions:boundedUniqueStrings(descriptor.provenance_unavailable_dimensions).map(value=>value.toLowerCase()),argv_markers:boundedUniqueStrings(descriptor.argv_markers).map(value=>value.toLowerCase()),client_names:boundedUniqueStrings(descriptor.client_names).map(value=>value.toLowerCase())}}const NORMALIZED_BUILTIN_HARNESS_SIGNAL_DESCRIPTORS=BUILTIN_HARNESS_SIGNAL_DESCRIPTORS.map(normalizeHarnessSignalDescriptor);function descriptorEquals(left,right){return JSON.stringify(left)===JSON.stringify(right)}function literalSignalMatches(value,marker){return value.toLowerCase().slice(0,512).split(/[/\\\s:=]+/u).filter(segment=>segment.length>0).includes(marker)||value.trim().toLowerCase()===marker}function currentHarnessSignalDescriptors(localDescriptors=[]){const adapterDescriptors=new Map(BUILTIN_HARNESS_SIGNAL_DESCRIPTORS.filter(descriptor=>descriptor.harness!=="ci").map(descriptor=>[descriptor.harness,normalizeHarnessSignalDescriptor(descriptor)]));for(const{adapter}of registeredAgentProvenanceAdapters.values())adapterDescriptors.set(adapter.harness,normalizeHarnessSignalDescriptor(adapter.descriptor));const descriptors=[...adapterDescriptors.values(),...NORMALIZED_BUILTIN_HARNESS_SIGNAL_DESCRIPTORS.filter(descriptor=>descriptor.harness==="ci"),...[...registeredHarnessSignalDescriptors.values()].map(entry=>entry.descriptor),...workspaceHarnessSignalsStorage.getStore()?.descriptors??[],...localDescriptors.map(normalizeHarnessSignalDescriptor)],seen=new Set;for(const descriptor of descriptors){if(seen.has(descriptor.harness))throw new Error(`Harness signal descriptor collision for "${descriptor.harness}"`);seen.add(descriptor.harness)}return descriptors}function firstEnvironmentValue(env,keys){for(const key of keys??[]){const value=nonBlank(env[key]);if(value)return value.slice(0,256)}}function provenanceFromArgv(argv,dimension){if(dimension==="role"){const command=argv.slice(0,8).map(token=>token.trim().toLowerCase()).find(token=>["claim","create","update","close","release","review"].includes(token));if(command==="review")return"reviewer";if(command)return"implementer"}}function provenanceFlagValue(argv,dimension){const acceptedFlags=dimension==="model"?["--model","--agent-model"]:[`--agent-${dimension}`],tokens=argv.slice(0,8);for(let index=0;index<tokens.length;index+=1){const token=tokens[index].slice(0,512);if(acceptedFlags.includes(token))return nonBlank(tokens[index+1])?.slice(0,256);const prefix=acceptedFlags.find(flag=>token.startsWith(`${flag}=`));if(prefix)return nonBlank(token.slice(prefix.length+1))?.slice(0,256)}}const AGENT_ROLE_VALUES=new Set(["implementation","implementer","investigator","orchestrator","planner","release-operator","reviewer"]);function normalizeProvenanceValue(dimension,value){if(dimension!=="role"||value===void 0)return value;const normalized=value.trim().toLowerCase().replaceAll(/[_\s]+/gu,"-");return AGENT_ROLE_VALUES.has(normalized)?normalized:void 0}function boundedProvenanceValue(provenance,dimension){return nonBlank(provenance?.[dimension])?.slice(0,256)}const MAX_PROVENANCE_PROBE_BYTES=1048576,MAX_CODEX_PROVENANCE_PROBE_BYTES=4194304,codexProvenanceSnapshotCache=new Map,EMPTY_CODEX_PROVENANCE_SNAPSHOT=Object.freeze({}),claudeProvenanceSnapshotCache=new Map,EMPTY_CLAUDE_PROVENANCE_SNAPSHOT=Object.freeze({});function asProvenanceRecord(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)?value:void 0}function parseClaudeProvenanceLine(line){let parsed;try{parsed=JSON.parse(line)}catch{return EMPTY_CLAUDE_PROVENANCE_SNAPSHOT}const record=asProvenanceRecord(parsed);if(!record)return EMPTY_CLAUDE_PROVENANCE_SNAPSHOT;const queue=[{value:record,depth:0}];let visited=0,model,version;for(;queue.length>0&&visited<64;){const current=queue.shift();if(visited+=1,model??=nonBlank(current.value.model)?.slice(0,256),version??=nonBlank(current.value.version)?.slice(0,256),model&&version)break;if(!(current.depth>=4))for(const value of Object.values(current.value)){const nested=asProvenanceRecord(value);nested&&queue.push({value:nested,depth:current.depth+1})}}return Object.freeze({model,version})}function claudeTranscriptCandidateStatus(candidate){try{return fs.lstatSync(candidate).isFile()?"available":"missing"}catch(error){return isFileAbsentError(error)?"missing":"failed"}}function discoverClaudeSessionFile(projectsRoot,session){let discovered;try{discovered=fs.readdirSync(projectsRoot,{withFileTypes:!0}).filter(entry=>entry.isDirectory()).sort((left,right)=>left.name.localeCompare(right.name)).slice(0,512).map(entry=>{const candidate=path.join(projectsRoot,entry.name,`${session}.jsonl`);return{candidate,status:claudeTranscriptCandidateStatus(candidate)}})}catch(error){return{status:isFileAbsentError(error)?"missing":"failed"}}const matches=discovered.filter(({status})=>status==="available").map(({candidate})=>candidate);return matches.length===0?{status:discovered.some(({status})=>status==="failed")?"failed":"missing"}:matches.length>1?{status:"ambiguous"}:{status:"available",path:matches[0]}}function resolveClaudeSessionFile(signals,env){const session=nonBlank(env.CLAUDE_CODE_SESSION_ID);if(!session||!/^[A-Za-z0-9_-]{1,128}$/u.test(session))return{status:"unavailable"};const encodedWorkspace=path.resolve(signals.cwd??process.cwd()).replaceAll(/[^A-Za-z0-9-]/gu,"-"),projectsRoot=path.join(signals.home_dir??os.homedir(),".claude","projects"),directPath=path.join(projectsRoot,encodedWorkspace,`${session}.jsonl`),explicitPath=nonBlank(signals.session_file),suppliedPath=explicitPath&&path.basename(explicitPath)===`${session}.jsonl`?explicitPath:void 0;for(const candidate of[suppliedPath,directPath]){if(!candidate)continue;const status=claudeTranscriptCandidateStatus(candidate);if(status==="available")return{status,path:candidate};if(status==="failed")return{status}}return discoverClaudeSessionFile(projectsRoot,session)}function readClaudeSessionProvenance(dimension,signals,env){const resolution=resolveClaudeSessionFile(signals,env);if(resolution.status==="available")try{const file=fs.openSync(resolution.path,fs.constants.O_RDONLY|fs.constants.O_NOFOLLOW);try{const stats=fs.fstatSync(file),cacheKey=`${resolution.path}\0${stats.size}\0${stats.mtimeMs}`,cached=claudeProvenanceSnapshotCache.get(cacheKey);if(cached)return cached[dimension];const probeLength=Math.min(stats.size,MAX_PROVENANCE_PROBE_BYTES),headLength=Math.min(probeLength,Math.ceil(probeLength/2)),tailLength=Math.min(probeLength-headLength,stats.size-headLength),head=Buffer.alloc(headLength);fs.readSync(file,head,0,headLength,0);const tail=Buffer.alloc(tailLength);tailLength>0&&fs.readSync(file,tail,0,tailLength,stats.size-tailLength);const snapshot={},lines=stats.size<=probeLength?Buffer.concat([head,tail]).toString("utf8").split(`
2
+ `):[...head.toString("utf8").split(`
3
+ `).slice(0,4096),...tail.toString("utf8").split(`
4
+ `).slice(-4096)];for(const line of lines){if(line.length===0||line.length>262144)continue;const parsed=parseClaudeProvenanceLine(line);if(snapshot.model??=parsed.model,snapshot.version??=parsed.version,snapshot.model&&snapshot.version)break}const frozen=Object.freeze(snapshot);return claudeProvenanceSnapshotCache.clear(),claudeProvenanceSnapshotCache.set(cacheKey,frozen),frozen[dimension]}finally{fs.closeSync(file)}}catch{return}}function findCodexSessionFile(root,session){let visited=0;const visit=(directory,depth)=>{if(depth>4||visited>=512)return;let entries;try{entries=fs.readdirSync(directory,{withFileTypes:!0}).sort((left,right)=>right.name.localeCompare(left.name))}catch{return}for(const entry of entries){if(visited+=1,visited>512)return;const entryPath=path.join(directory,entry.name);if(entry.isFile()&&entry.name.endsWith(`-${session}.jsonl`))return entryPath;if(entry.isDirectory()){const found=visit(entryPath,depth+1);if(found)return found}}};return visit(root,0)}function codexProvenanceWindows(size){if(size<=MAX_CODEX_PROVENANCE_PROBE_BYTES)return[{offset:0,length:size}];const halfBudget=Math.floor(MAX_CODEX_PROVENANCE_PROBE_BYTES/2);return[{offset:size-halfBudget,length:halfBudget},{offset:0,length:halfBudget}]}function mergeCodexTurnContext(snapshot,line){if(line.length===0||line.length>262144)return;let parsed;try{parsed=JSON.parse(line)}catch{return}if(typeof parsed!="object"||parsed===null||Array.isArray(parsed))return;const record=parsed;if(record.type!=="turn_context")return;const payload=typeof record.payload=="object"&&record.payload!==null?record.payload:void 0;snapshot.model??=nonBlank(payload?.model)?.slice(0,256),snapshot.effort??=nonBlank(payload?.effort)?.slice(0,256)}function readCodexProvenanceSnapshot(file,size){const snapshot={};let linesRemaining=4096;for(const window2 of codexProvenanceWindows(size)){const buffer=Buffer.alloc(window2.length);fs.readSync(file,buffer,0,window2.length,window2.offset);const lines=buffer.toString("utf8").split(`
5
+ `).reverse().slice(0,linesRemaining);linesRemaining-=lines.length;for(const line of lines)if(mergeCodexTurnContext(snapshot,line),snapshot.model&&snapshot.effort)break;if(snapshot.model&&snapshot.effort||linesRemaining<=0)break}return snapshot}function readCodexSessionProvenance(dimension,signals,env){const session=nonBlank(env.CODEX_THREAD_ID);if(!session||!/^[A-Za-z0-9_-]{1,128}$/u.test(session))return;const sessionsRoot=path.join(signals.home_dir??os.homedir(),".codex","sessions"),cacheKey=`${sessionsRoot}\0${session}`,cached=codexProvenanceSnapshotCache.get(cacheKey);if(cached)return cached[dimension];const sessionPath=findCodexSessionFile(sessionsRoot,session);if(!sessionPath){codexProvenanceSnapshotCache.set(cacheKey,EMPTY_CODEX_PROVENANCE_SNAPSHOT);return}try{const file=fs.openSync(sessionPath,"r");try{const size=fs.fstatSync(file).size,snapshot=readCodexProvenanceSnapshot(file,size);return codexProvenanceSnapshotCache.set(cacheKey,snapshot),snapshot[dimension]}finally{fs.closeSync(file)}}catch{codexProvenanceSnapshotCache.set(cacheKey,EMPTY_CODEX_PROVENANCE_SNAPSHOT);return}}function resolveProvenanceProbe(dimension,signals,env,descriptor){const workspaceSignals=workspaceHarnessSignalsStorage.getStore();if(!(signals.probes_enabled!==!1&&workspaceSignals?.probesEnabled!==!1&&!["0","false","off"].includes(nonBlank(env.PM_AGENT_PROBES)?.toLowerCase()??"")))return;const resolver=descriptor?.provenance_resolvers[dimension];if(resolver==="claude_session_file")return readClaudeSessionProvenance(dimension,signals,env);if(resolver==="codex_session_file")return readCodexSessionProvenance(dimension,signals,env);if(resolver==="ai_agent_version"){const value=nonBlank(env.AI_AGENT);return!value||!descriptor||!literalSignalMatches(value,descriptor.harness)?void 0:/(?:^|[@/\s])v?(\d+\.\d+(?:\.\d+)?(?:[-+][A-Za-z0-9.-]+)?)$/u.exec(value)?.[1]?.slice(0,256)}}function provenanceResolverHasInput(resolver,descriptor,signals,env){if(resolver==="ai_agent_version"){const value=nonBlank(env.AI_AGENT);return value!==void 0&&literalSignalMatches(value,descriptor.harness)?"available":"unavailable"}return resolver==="codex_session_file"?nonBlank(env.CODEX_THREAD_ID)!==void 0?"available":"unavailable":resolveClaudeSessionFile(signals,env).status}function effectiveHarnessDetectionSignals(signals){return signals||(harnessDetectionStorage.getStore()??{env:process.env,argv:process.argv})}function descriptorMatchesSignals(descriptor,env,labels,clientName){const environmentMatch=descriptor.environment_keys.some(key=>nonBlank(env[key])!==void 0),argvMatch=descriptor.argv_markers.some(marker=>labels.some(label=>{const normalizedPath=label.replaceAll("\\","/");return literalSignalMatches(normalizedPath.slice(normalizedPath.lastIndexOf("/")+1),marker)})),clientMatch=descriptor.client_names.some(name=>clientName===name||literalSignalMatches(clientName,name));return environmentMatch||argvMatch||clientMatch}function inferredProvenanceObservation(dimension,semanticAttribution){if(!semanticAttribution)return;let value;if(dimension==="topic"&&(value=semanticAttribution.topic),dimension==="role"&&(value=semanticAttribution.role),!!value)return{value,source:"inferred",confidence:semanticAttribution.confidence,rule_version:semanticAttribution.rule_version,evidence:semanticAttribution.evidence}}function firstProvenanceObservation(candidates){const observed=candidates.find(([value])=>value!==void 0);return observed?.[0]?{value:observed[0],source:observed[1]}:void 0}function resolveAgentProvenanceObservation(dimension,signals,env,descriptor,sessionContext,semanticAttribution){const overrideKey=`PM_AGENT_${dimension.toUpperCase().replaceAll("-","_")}`,hostResolvedDimensions=new Set([...AGENT_PROVENANCE_DIMENSIONS,...Object.keys(descriptor?.provenance_environment_keys??{})]);let overrideValue,argvValue,argvFlagValue;hostResolvedDimensions.has(dimension)&&(overrideValue=normalizeProvenanceValue(dimension,nonBlank(env[overrideKey])?.slice(0,256)),argvFlagValue=normalizeProvenanceValue(dimension,provenanceFlagValue(signals.argv??[],dimension)),argvValue=normalizeProvenanceValue(dimension,provenanceFromArgv(signals.argv??[],dimension)));const environmentKeysByDimension={...descriptor?.provenance_environment_keys,model:descriptor?.model_environment_keys},clientProvenance={...signals.client_info?.provenance,model:signals.client_info?.model},sessionValue=boundedProvenanceValue(sessionContext?.provenance,dimension),environmentValue=normalizeProvenanceValue(dimension,firstEnvironmentValue(env,environmentKeysByDimension[dimension])),clientValue=normalizeProvenanceValue(dimension,boundedProvenanceValue(clientProvenance,dimension)),hostValue=normalizeProvenanceValue(dimension,boundedProvenanceValue(signals.provenance,dimension)),probeValue=resolveProvenanceProbe(dimension,signals,env,descriptor);return firstProvenanceObservation([[overrideValue,"override"],[sessionValue,"session"],[argvFlagValue,"argv"],[environmentValue,"environment"],[clientValue,"mcp_client"],[hostValue,"host"],[probeValue,"probe"]])??inferredProvenanceObservation(dimension,semanticAttribution)??(argvValue?{value:argvValue,source:"argv"}:void 0)}function resolveAgentInstance(harness,session){if(!(!harness||!session))return createHash("sha256").update(`pm-agent-instance:v1\0${harness}\0${session}`).digest("hex").slice(0,24)}function resolveAgentProvenance(signals,env,descriptor,sessionContext,semanticAttribution){const descriptorDimensions=Object.keys(descriptor?.provenance_environment_keys??{}),dimensions=new Set([...AGENT_PROVENANCE_DIMENSIONS,...descriptorDimensions,...Object.keys(descriptor?.provenance_resolvers??{}),...Object.keys(signals.provenance??{}),...Object.keys(signals.client_info?.provenance??{}),...Object.keys(sessionContext?.provenance??{})]),observations={};for(const dimension of dimensions){const observed=resolveAgentProvenanceObservation(dimension,signals,env,descriptor,sessionContext,semanticAttribution);observed?observations[dimension]=observed:descriptor&&(dimension!=="version"||descriptor.provenance_unavailable_dimensions.includes(dimension))&&(observations[dimension]=null)}return observations}function registerHarnessSignalDescriptors(descriptors){const normalized=descriptors.map(normalizeHarnessSignalDescriptor),builtins=new Map(NORMALIZED_BUILTIN_HARNESS_SIGNAL_DESCRIPTORS.map(descriptor=>[descriptor.harness,descriptor])),seen=new Set;for(const descriptor of normalized){if(seen.has(descriptor.harness)||builtins.has(descriptor.harness))throw new Error(`Harness signal descriptor collision for "${descriptor.harness}"`);const registered=registeredHarnessSignalDescriptors.get(descriptor.harness);if(registered&&!descriptorEquals(registered.descriptor,descriptor))throw new Error(`Harness signal descriptor collision for "${descriptor.harness}"`);seen.add(descriptor.harness)}for(const descriptor of normalized){const registered=registeredHarnessSignalDescriptors.get(descriptor.harness);registeredHarnessSignalDescriptors.set(descriptor.harness,{descriptor,registrations:(registered?.registrations??0)+1})}let active=!0;return()=>{if(active){active=!1;for(const descriptor of normalized){const registered=registeredHarnessSignalDescriptors.get(descriptor.harness);!registered||registered.registrations<=1?registeredHarnessSignalDescriptors.delete(descriptor.harness):registered.registrations-=1}}}}function normalizeAgentProvenanceAdapter(adapter){const descriptor=normalizeHarnessSignalDescriptor(adapter.descriptor),harness=adapter.harness.trim().toLowerCase();if(adapter.contract_version!==1)throw new Error(`Unsupported provenance adapter contract for "${harness}": ${adapter.contract_version}`);if(descriptor.harness!==harness)throw new Error(`Provenance adapter harness "${harness}" does not match descriptor "${descriptor.harness}".`);const adapterVersion=nonBlank(adapter.adapter_version)?.slice(0,64);if(!adapterVersion)throw new Error(`Provenance adapter "${harness}" requires a version.`);if(!Number.isSafeInteger(adapter.priority))throw new Error(`Provenance adapter "${harness}" requires an integer priority.`);if(adapter.probe_policy.network_access!==!1||adapter.probe_policy.subprocess_access!==!1||adapter.probe_policy.max_bytes>MAX_CODEX_PROVENANCE_PROBE_BYTES||adapter.probe_policy.max_lines>4096)throw new Error(`Provenance adapter "${harness}" exceeds the bounded local probe policy.`);return Object.freeze({...adapter,adapter_version:adapterVersion,harness,descriptor,supported_dimensions:Object.freeze(boundedUniqueStrings(adapter.supported_dimensions).map(dimension=>dimension.toLowerCase()).sort()),native_sources:Object.freeze([...new Set(adapter.native_sources)]),probe_policy:Object.freeze({...adapter.probe_policy}),normalization:Object.freeze({...adapter.normalization}),...adapter.waivers?{waivers:Object.freeze(Object.fromEntries(Object.entries(adapter.waivers).slice(0,32).map(([dimension,reason])=>[dimension.slice(0,64),reason.slice(0,256)])))}:{}})}function listAgentProvenanceAdapters(){const effective=new Map(BUILTIN_AGENT_PROVENANCE_ADAPTERS.map(adapter=>[adapter.harness,adapter]));for(const{adapter}of registeredAgentProvenanceAdapters.values())effective.set(adapter.harness,adapter);return Object.freeze([...effective.values()].sort((left,right)=>left.harness.localeCompare(right.harness)))}function registerAgentProvenanceAdapters(adapters){const normalized=adapters.map(normalizeAgentProvenanceAdapter),builtins=new Map(BUILTIN_AGENT_PROVENANCE_ADAPTERS.map(adapter=>[adapter.harness,adapter])),seen=new Set;for(const adapter of normalized){if(seen.has(adapter.harness))throw new Error(`Provenance adapter collision for "${adapter.harness}".`);const builtin=builtins.get(adapter.harness);if(builtin&&adapter.priority<=builtin.priority)throw new Error(`Provenance adapter override for "${adapter.harness}" requires priority greater than ${builtin.priority}.`);const registered=registeredAgentProvenanceAdapters.get(adapter.harness);if(registered&&JSON.stringify(registered.adapter)!==JSON.stringify(adapter))throw new Error(`Provenance adapter collision for "${adapter.harness}".`);seen.add(adapter.harness)}for(const adapter of normalized){const registered=registeredAgentProvenanceAdapters.get(adapter.harness);registeredAgentProvenanceAdapters.set(adapter.harness,{adapter,registrations:(registered?.registrations??0)+1})}let active=!0;return()=>{if(active){active=!1;for(const adapter of normalized){const registered=registeredAgentProvenanceAdapters.get(adapter.harness);!registered||registered.registrations<=1?registeredAgentProvenanceAdapters.delete(adapter.harness):registered.registrations-=1}}}}function normalizeAgentProvenanceAdapterValue(dimension,value){const raw=value.trim().slice(0,256);let normalized=raw.toLowerCase();if(dimension==="model"){const family=/^(gpt-\d+(?:\.\d+)?)/u.exec(normalized)?.[1];family&&(normalized=family)}else normalized=normalized.replaceAll(/[_\s-]+/gu,""),normalized={minimal:"low",low:"low",medium:"medium",high:"high",xhigh:"xhigh",max:"max",ultra:"ultra"}[normalized]??normalized;return{raw,normalized,vocabulary:"v1"}}function runWithHarnessDetectionSignals(signals,callback){return harnessDetectionStorage.run(signals,callback)}function runWithWorkspaceHarnessSignalDescriptors(descriptors,callback,options={}){const normalized=descriptors.map(normalizeHarnessSignalDescriptor);return currentHarnessSignalDescriptors(normalized),workspaceHarnessSignalsStorage.run({descriptors:normalized,probesEnabled:options.probesEnabled!==!1},callback)}function detectAgentIdentity(signals){const effectiveSignals=effectiveHarnessDetectionSignals(signals),env=effectiveSignals.env??{},descriptors=currentHarnessSignalDescriptors(effectiveSignals.descriptors),labels=[...(effectiveSignals.argv??[]).slice(0,3),...effectiveSignals.process_labels??[]].slice(0,64).map(token=>token.slice(0,512)),clientName=effectiveSignals.client_info?.name.trim().toLowerCase()??"",descriptor=descriptors.find(candidate=>descriptorMatchesSignals(candidate,env,labels,clientName)),sessionContext=resolveAgentSessionContextFromSignals(effectiveSignals,env),session=[firstEnvironmentValue(env,descriptor?.session_environment_keys),nonBlank(effectiveSignals.client_info?.session)?.slice(0,256)].find(candidate=>candidate!==void 0),instance=resolveAgentInstance(descriptor?.harness,session),semanticAttribution=readAgentSemanticAttributionSync({cwd:effectiveSignals.cwd??process.cwd(),env,key:instance}),provenance=resolveAgentProvenance(effectiveSignals,env,descriptor,sessionContext,semanticAttribution),modelCandidate=provenance.model,entries=[["harness",descriptor?.harness],["model",modelCandidate?.value],["model_source",modelCandidate?.source],["session",session],["instance",instance],["provenance",Object.keys(provenance).length>0?provenance:void 0],["episode",sessionContext.episode]];return Object.fromEntries(entries.filter(entry=>entry[1]!==void 0))}function provenanceResolverAbsence(resolverInput){return resolverInput==="unavailable"?{status:"unavailable",reason:"harness_unavailable"}:resolverInput==="missing"?{status:"unavailable",reason:"resolver_input_missing"}:{status:"failed",reason:"resolver_failed"}}function resolveProvenanceOutcome(dimension,identity,descriptor,signals,env,probesEnabled,invalidValue){const resolver=descriptor?.provenance_resolvers[dimension];if(identity.provenance?.[dimension])return{status:"resolved",...resolver?{resolver}:{},rule_version:"v1"};if(invalidValue)return{status:"unavailable",reason:"invalid_value",rule_version:"v1"};if(resolver){if(!probesEnabled)return{status:"unavailable",reason:"probes_disabled",resolver,rule_version:"v1"};const resolverInput=provenanceResolverHasInput(resolver,descriptor,signals,env);return{...provenanceResolverAbsence(resolverInput),resolver,rule_version:"v1"}}return{status:descriptor?.provenance_unavailable_dimensions.includes(dimension)?"unavailable":"not_configured",reason:descriptor?.provenance_unavailable_dimensions.includes(dimension)?"harness_unavailable":"resolver_not_configured",rule_version:"v1"}}function diagnoseAgentIdentity(signals){const effectiveSignals=effectiveHarnessDetectionSignals(signals),identity=detectAgentIdentity(effectiveSignals),descriptor=currentHarnessSignalDescriptors(effectiveSignals.descriptors).find(candidate=>candidate.harness===identity.harness),env=effectiveSignals.env??{},probesEnabled=effectiveSignals.probes_enabled!==!1&&workspaceHarnessSignalsStorage.getStore()?.probesEnabled!==!1&&!["0","false","off"].includes(nonBlank(env.PM_AGENT_PROBES)?.toLowerCase()??""),sessionContext=resolveAgentSessionContextFromSignals(effectiveSignals,env),invalidRoleValue=[env.PM_AGENT_ROLE,sessionContext.provenance?.role,firstEnvironmentValue(env,descriptor?.provenance_environment_keys.role),effectiveSignals.client_info?.provenance?.role,effectiveSignals.provenance?.role,provenanceFlagValue(effectiveSignals.argv??[],"role")].some(candidate=>{const value=nonBlank(candidate)?.slice(0,256);return value!==void 0&&normalizeProvenanceValue("role",value)===void 0}),outcomes=Object.fromEntries(AGENT_PROVENANCE_DIMENSIONS.map(dimension=>[dimension,resolveProvenanceOutcome(dimension,identity,descriptor,effectiveSignals,env,probesEnabled,dimension==="role"&&invalidRoleValue)]));return{...identity,provenance_outcomes:outcomes}}function readAuthorEnvironment(){return process.env.PM_AUTHOR}function writeAuthorEnvironment(author){author===void 0?delete process.env.PM_AUTHOR:process.env.PM_AUTHOR=author}function detectHarnessIdentity(signals){return detectAgentIdentity(signals).harness}function resolveAuthorIdentity(candidate,fallback,signals){const effectiveSignals=effectiveHarnessDetectionSignals(signals),detected=detectAgentIdentity(effectiveSignals);if(candidate!==void 0){const explicit=nonBlank(candidate);return explicit?{author:explicit,source:"asserted",...detected}:{author:"unknown",source:"unknown",...detected}}if(effectiveSignals.env?.PM_AUTHOR!==void 0){const environment=nonBlank(effectiveSignals.env.PM_AUTHOR);return environment?{author:environment,source:"asserted",...detected}:{author:"unknown",source:"unknown",...detected}}const configured=nonBlank(fallback);return configured?{author:configured,source:"configured",...detected}:detected.harness?{author:`harness:${detected.harness}`,source:"detected",...detected}:{author:"unknown",source:"unknown",...detected}}function resolveHistoryAuthorSource(author){const active=authorIdentityStorage.getStore();return active?.author===author?active.source:author.startsWith("harness:")?"detected":author==="unknown"?"unknown":"asserted"}function resolveHistoryAgentIdentity(author){const active=authorIdentityStorage.getStore();return active?.author!==author?author.startsWith("harness:")?{harness:author.slice(8)}:{}:{...active.harness?{harness:active.harness}:{},...active.model?{model:active.model}:{},...active.model_source?{model_source:active.model_source}:{},...active.session?{session:active.session}:{},...active.instance?{instance:active.instance}:{},...active.provenance?{provenance:active.provenance}:{},...active.episode?{episode:active.episode}:{}}}function resolveClaimPrincipal(author){const active=authorIdentityStorage.getStore();return active?.author===author&&active.source==="detected"&&active.instance?`${author}#${active.instance}`:author}function resolveAuthor(candidate,fallback){const identity=resolveAuthorIdentity(candidate,fallback);return authorIdentityStorage.enterWith(identity),identity.author}export{AGENT_PROVENANCE_DIMENSIONS,BUILTIN_AGENT_PROVENANCE_ADAPTERS,BUILTIN_HARNESS_SIGNAL_DESCRIPTORS,detectAgentIdentity,detectHarnessIdentity,diagnoseAgentIdentity,listAgentProvenanceAdapters,normalizeAgentProvenanceAdapterValue,readAuthorEnvironment,registerAgentProvenanceAdapters,registerHarnessSignalDescriptors,resolveAuthor,resolveAuthorIdentity,resolveClaimPrincipal,resolveHistoryAgentIdentity,resolveHistoryAuthorSource,runWithHarnessDetectionSignals,runWithWorkspaceHarnessSignalDescriptors,writeAuthorEnvironment};
2
6
  //# sourceMappingURL=author.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="4f014bd9-39b6-5017-93ed-f0e7fba8497a")}catch(e2){}})();const quoteWindowsCommandArg=arg=>{let escaped='"';let pendingBackslashes=0;for(const character of arg){if(character==="\\"){pendingBackslashes+=1;continue}escaped+="\\".repeat(character==='"'?pendingBackslashes*2+1:pendingBackslashes);escaped+=character;pendingBackslashes=0}return`${escaped}${"\\".repeat(pendingBackslashes*2)}"`};const quoteCommandArg=(arg,platform=process.platform)=>{const safePattern=platform==="win32"?/^[A-Za-z0-9._:/\\@=-]+$/:/^[A-Za-z0-9._:/@=-]+$/;if(safePattern.test(arg)){return arg}if(platform==="win32"){return quoteWindowsCommandArg(arg)}return`"${arg.replace(/(["\\$`])/g,"\\$1")}"`};const renderPmCommand=(argv,platform=process.platform)=>{const args=argv.map(token=>quoteCommandArg(token,platform)).join(" ");return args.length>0?`pm ${args}`:"pm"};export{quoteCommandArg,quoteWindowsCommandArg,renderPmCommand};
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]="86412887-5659-5892-beaa-bdd15a02ff4c")}catch{}})();const quoteWindowsCommandArg=arg=>{let escaped='"',pendingBackslashes=0;for(const character of arg){if(character==="\\"){pendingBackslashes+=1;continue}escaped+="\\".repeat(character==='"'?pendingBackslashes*2+1:pendingBackslashes),escaped+=character,pendingBackslashes=0}return`${escaped}${"\\".repeat(pendingBackslashes*2)}"`},quoteCommandArg=(arg,platform=process.platform)=>(platform==="win32"?/^[A-Za-z0-9._:/\\@=-]+$/:/^[A-Za-z0-9._:/@=-]+$/).test(arg)?arg:platform==="win32"?quoteWindowsCommandArg(arg):`"${arg.replace(/(["\\$`])/g,"\\$1")}"`,renderPmCommand=(argv,platform=process.platform)=>{const args=argv.map(token=>quoteCommandArg(token,platform)).join(" ");return args.length>0?`pm ${args}`:"pm"};export{quoteCommandArg,quoteWindowsCommandArg,renderPmCommand};
2
2
  //# sourceMappingURL=command-line.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="40feb89e-a797-5d1d-8797-957fa490add4")}catch(e2){}})();
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]="40feb89e-a797-5d1d-8797-957fa490add4")}catch{}})();
2
2
  //# sourceMappingURL=command-types.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="45fa31ba-dea9-56db-b971-84c11e8a1c88")}catch(e2){}})();const CONFLICT_MARKER_PATTERN=/^\s*(<<<<<<<|=======|>>>>>>>)(?:\s.*)?$/;function findMergeConflictMarkers(content){if(content.length===0){return[]}const lines=content.split(/\r?\n/);const matches=[];for(let index=0;index<lines.length;index+=1){const line=lines[index]??"";const markerMatch=line.match(CONFLICT_MARKER_PATTERN);if(!markerMatch){continue}const marker=markerMatch[1];matches.push({line:index+1,marker,text:line})}return matches}function findFirstMergeConflictMarker(content){const matches=findMergeConflictMarkers(content);return matches[0]}export{findFirstMergeConflictMarker,findMergeConflictMarkers};
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]="79626299-17a8-573a-9b66-ce37c65e2f5d")}catch{}})();const CONFLICT_MARKER_PATTERN=/^\s*(<<<<<<<|=======|>>>>>>>)(?:\s.*)?$/;function findMergeConflictMarkers(content){if(content.length===0)return[];const lines=content.split(/\r?\n/),matches=[];for(let index=0;index<lines.length;index+=1){const line=lines[index]??"",markerMatch=line.match(CONFLICT_MARKER_PATTERN);if(!markerMatch)continue;const marker=markerMatch[1];matches.push({line:index+1,marker,text:line})}return matches}function findFirstMergeConflictMarker(content){return findMergeConflictMarkers(content)[0]}export{findFirstMergeConflictMarker,findMergeConflictMarkers};
2
2
  //# sourceMappingURL=conflict-markers.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="6e329ab1-f22d-5749-b8a4-0a6e7a1c8023")}catch(e2){}})();import{createDefaultExtensionGovernancePolicy}from"../extensions/extension-types.js";import{ITEM_METADATA_KEY_ORDER,ITEM_PROJECT_CONTEXT_KEYS}from"./item-metadata-contract.js";const DEFAULT_STATUS_DEFINITIONS=Object.freeze([{id:"draft",roles:["draft"]},{id:"open",roles:["active","default_open"]},{id:"in_progress",aliases:["in-progress"],roles:["active"]},{id:"blocked",roles:["blocked"]},{id:"closed",roles:["terminal","terminal_done","default_close"]},{id:"canceled",aliases:["cancelled"],roles:["terminal","terminal_canceled","default_cancel"]}]);const DEFAULT_WORKFLOW_DEFINITION=Object.freeze({draft_status:"draft",open_status:"open",in_progress_status:"in_progress",blocked_status:"blocked",close_status:"closed",canceled_status:"canceled"});const PM_DIRNAME=".agents/pm";const SETTINGS_FILENAME="settings.json";const CREATE_DIRECT_CLOSE_REASON_DEFAULT="Closed at creation via pm create";const PM_CORE_REQUIRED_SUBDIRS=["","epics","features","tasks","chores","issues","schema","history","search","extensions","locks"];const PM_OPTIONAL_TYPE_SUBDIRS=["decisions","events","reminders","milestones","meetings","plans"];const PM_REQUIRED_SUBDIRS=[...PM_CORE_REQUIRED_SUBDIRS,...PM_OPTIONAL_TYPE_SUBDIRS];const TYPE_TO_FOLDER={Epic:"epics",Feature:"features",Task:"tasks",Chore:"chores",Issue:"issues",Decision:"decisions",Event:"events",Reminder:"reminders",Milestone:"milestones",Meeting:"meetings",Plan:"plans"};const GOVERNANCE_PRESET_DEFAULTS={minimal:{ownership_enforcement:"none",create_mode_default:"progressive",close_validation_default:"off",require_close_reason:true,parent_reference:"strict_error",metadata_profile:"core",force_required_for_stale_lock:false,duplicate_detection_mode:"off",duplicate_detection_threshold:.8,duplicate_detection_limit:3},default:{ownership_enforcement:"warn",create_mode_default:"progressive",close_validation_default:"warn",require_close_reason:true,parent_reference:"strict_error",metadata_profile:"core",force_required_for_stale_lock:true,duplicate_detection_mode:"strict",duplicate_detection_threshold:.8,duplicate_detection_limit:3},strict:{ownership_enforcement:"strict",create_mode_default:"strict",close_validation_default:"strict",require_close_reason:true,parent_reference:"strict_error",metadata_profile:"strict",force_required_for_stale_lock:true,duplicate_detection_mode:"strict",duplicate_detection_threshold:.8,duplicate_detection_limit:3}};const DEFAULT_VALIDATE_STALE_BLOCKER_REASON_PATTERNS=["no active blocker","ready for planned execution sequencing","work completed","work is closed"];const DEFAULT_VALIDATE_CLOSURE_LIKE_METADATA_FIELD_PATTERNS={blocked_reason:["no active blocker because work is closed","work is closed"],resolution:["closed with implementation evidence","closed with verification evidence","work completed and recorded","work is closed"],actual_result:["closed and recorded","work completed","work completed and recorded"]};function cloneOptionalArray(values){return values?[...values]:void 0}const SETTINGS_DEFAULTS={version:1,id_prefix:"pm-",ids:{token_length:4},author_default:"",agent_identity:{probes_enabled:true,identity_vocabulary:{version:1,aliases:{}},harness_signals:[]},mutation_guard:{require_attributed_author:false,secret_guard:"advise",stale_in_progress_hours:72},item_format:"toon",locks:{ttl_seconds:1800,wait_ms:3e3},checkpoints:{retention_days:14},output:{default_format:"toon"},ux:{deprecation_hints:true},history:{missing_stream:"auto_create",compact_policy:{enabled:false,max_entries:500,trigger:"health_warn"}},validation:{sprint_release_format:"warn",parent_reference:"warn",metadata_profile:"core",metadata_required_fields:[],lifecycle_stale_blocker_reason_patterns:[...DEFAULT_VALIDATE_STALE_BLOCKER_REASON_PATTERNS],lifecycle_closure_like_blocked_reason_patterns:[...DEFAULT_VALIDATE_CLOSURE_LIKE_METADATA_FIELD_PATTERNS.blocked_reason],lifecycle_closure_like_resolution_patterns:[...DEFAULT_VALIDATE_CLOSURE_LIKE_METADATA_FIELD_PATTERNS.resolution],lifecycle_closure_like_actual_result_patterns:[...DEFAULT_VALIDATE_CLOSURE_LIKE_METADATA_FIELD_PATTERNS.actual_result],estimate_defaults_by_type:{}},governance:{preset:"minimal",...GOVERNANCE_PRESET_DEFAULTS.minimal},workflow:{definition_of_done:[]},testing:{record_results_to_items:false,allow_untrusted_linked_tests:false},telemetry:{enabled:true,first_run_prompt_completed:false,capture_level:"redacted",endpoint:"https://pm-cli.unbrained.dev/v1/events",installation_id:"",retention_days:365},agent_guidance:{prompt_completed:false,declined:false,declined_at:"",template_version:1,last_checked_files:[]},item_types:{definitions:[]},schema:{version:1,files:{types:"schema/types.json",statuses:"schema/statuses.json",fields:"schema/fields.json",workflows:"schema/workflows.json"},statuses:DEFAULT_STATUS_DEFINITIONS.map(definition=>({...definition,aliases:cloneOptionalArray(definition.aliases),roles:cloneOptionalArray(definition.roles)})),fields:[],workflow:{...DEFAULT_WORKFLOW_DEFINITION},unknown_field_policy:"allow"},extensions:{enabled:[],disabled:[],policy:createDefaultExtensionGovernancePolicy()},search:{score_threshold:0,hybrid_semantic_weight:.7,max_results:50,embedding_model:"",embedding_batch_size:32,embedding_timeout_ms:3e4,scanner_max_batch_retries:3,provider:"",default_mode:"auto",mutation_refresh_policy:"semantic_configured",query_expansion:{enabled:false,provider:""},rerank:{enabled:false,model:"",top_k:20}},providers:{openai:{base_url:"",api_key:"",model:""},ollama:{base_url:"",model:""}},context:{default_depth:"brief",activity_limit:10,stale_threshold_days:7,sections:{hierarchy:true,activity:true,progress:true,recently_created:true,unparented:true,blockers:true,files:true,workload:true,staleness:true,tests:true}},vector_store:{adapter:"",collection_name:"pm_items",qdrant:{url:"",api_key:""},lancedb:{path:""}}};const EMPTY_CANONICAL_DOCUMENT={metadata:{},body:""};const EXIT_CODE={SUCCESS:0,GENERIC_FAILURE:1,USAGE:2,NOT_FOUND:3,CONFLICT:4,DEPENDENCY_FAILED:5,NO_EFFECT:6,PARTIAL_EFFECT:7};const TELEMETRY_ERROR_CATEGORY_BY_CODE=Object.freeze({unknown_command:"usage",unknown_option:"usage",missing_required_option:"usage",missing_required_argument:"usage",invalid_command_usage:"usage",linked_test_value_not_quoted:"usage",invalid_argument_value:"validation",health_findings:"validation",validation_findings:"validation",close_through_update:"validation",no_update_fields:"validation",unsupported_update_option:"validation",tracker_not_initialized:"validation",item_not_found:"validation",ownership_conflict:"conflict",lock_conflict:"conflict",terminal_state_conflict:"conflict",dependency_failed:"runtime",init_gitignore_unwritable:"runtime",merge_git_config_unwritable:"runtime",command_failed:"runtime",unknown_error:"runtime"});function resolveTelemetryErrorCategory(errorCode){const normalized=(errorCode??"").trim().toLowerCase();if(normalized.length===0){return"unknown"}const explicit=TELEMETRY_ERROR_CATEGORY_BY_CODE[normalized];if(typeof explicit==="string"){return explicit}if(normalized.includes("conflict")||normalized.includes("locked")){return"conflict"}if(normalized.startsWith("unknown_")||normalized.startsWith("missing_required_")){return"usage"}if(normalized.startsWith("invalid_")||normalized.endsWith("_not_found")||normalized.includes("validation")){return"validation"}if(normalized.endsWith("_error")||normalized.endsWith("_failed")){return"runtime"}return"unknown"}export{CREATE_DIRECT_CLOSE_REASON_DEFAULT,DEFAULT_STATUS_DEFINITIONS,DEFAULT_VALIDATE_CLOSURE_LIKE_METADATA_FIELD_PATTERNS,DEFAULT_VALIDATE_STALE_BLOCKER_REASON_PATTERNS,DEFAULT_WORKFLOW_DEFINITION,EMPTY_CANONICAL_DOCUMENT,EXIT_CODE,GOVERNANCE_PRESET_DEFAULTS,ITEM_METADATA_KEY_ORDER,ITEM_PROJECT_CONTEXT_KEYS,PM_CORE_REQUIRED_SUBDIRS,PM_DIRNAME,PM_OPTIONAL_TYPE_SUBDIRS,PM_REQUIRED_SUBDIRS,SETTINGS_DEFAULTS,SETTINGS_FILENAME,TELEMETRY_ERROR_CATEGORY_BY_CODE,TYPE_TO_FOLDER,resolveTelemetryErrorCategory};
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]="9a92abe3-1900-5a69-a35d-6aa592c83da0")}catch{}})();import{createDefaultExtensionGovernancePolicy}from"../extensions/extension-types.js";import{ITEM_METADATA_KEY_ORDER,ITEM_PROJECT_CONTEXT_KEYS}from"./item-metadata-contract.js";const DEFAULT_STATUS_DEFINITIONS=Object.freeze([{id:"draft",roles:["draft"]},{id:"open",roles:["active","default_open"]},{id:"in_progress",aliases:["in-progress"],roles:["active"]},{id:"blocked",roles:["blocked"]},{id:"closed",roles:["terminal","terminal_done","default_close"]},{id:"canceled",aliases:["cancelled"],roles:["terminal","terminal_canceled","default_cancel"]}]),DEFAULT_WORKFLOW_DEFINITION=Object.freeze({draft_status:"draft",open_status:"open",in_progress_status:"in_progress",blocked_status:"blocked",close_status:"closed",canceled_status:"canceled"}),PM_DIRNAME=".agents/pm",SETTINGS_FILENAME="settings.json",CREATE_DIRECT_CLOSE_REASON_DEFAULT="Closed at creation via pm create",PM_CORE_REQUIRED_SUBDIRS=["","epics","features","tasks","chores","issues","schema","history","search","extensions","locks"],PM_OPTIONAL_TYPE_SUBDIRS=["decisions","events","reminders","milestones","meetings","plans"],PM_REQUIRED_SUBDIRS=[...PM_CORE_REQUIRED_SUBDIRS,...PM_OPTIONAL_TYPE_SUBDIRS],TYPE_TO_FOLDER={Epic:"epics",Feature:"features",Task:"tasks",Chore:"chores",Issue:"issues",Decision:"decisions",Event:"events",Reminder:"reminders",Milestone:"milestones",Meeting:"meetings",Plan:"plans"},GOVERNANCE_PRESET_DEFAULTS={minimal:{ownership_enforcement:"none",create_mode_default:"progressive",close_validation_default:"off",require_close_reason:!0,parent_reference:"strict_error",metadata_profile:"core",force_required_for_stale_lock:!1,duplicate_detection_mode:"off",duplicate_detection_threshold:.8,duplicate_detection_limit:3},default:{ownership_enforcement:"warn",create_mode_default:"progressive",close_validation_default:"warn",require_close_reason:!0,parent_reference:"strict_error",metadata_profile:"core",force_required_for_stale_lock:!0,duplicate_detection_mode:"strict",duplicate_detection_threshold:.8,duplicate_detection_limit:3},strict:{ownership_enforcement:"strict",create_mode_default:"strict",close_validation_default:"strict",require_close_reason:!0,parent_reference:"strict_error",metadata_profile:"strict",force_required_for_stale_lock:!0,duplicate_detection_mode:"strict",duplicate_detection_threshold:.8,duplicate_detection_limit:3}},DEFAULT_VALIDATE_STALE_BLOCKER_REASON_PATTERNS=["no active blocker","ready for planned execution sequencing","work completed","work is closed"],DEFAULT_VALIDATE_CLOSURE_LIKE_METADATA_FIELD_PATTERNS={blocked_reason:["no active blocker because work is closed","work is closed"],resolution:["closed with implementation evidence","closed with verification evidence","work completed and recorded","work is closed"],actual_result:["closed and recorded","work completed","work completed and recorded"]};function cloneOptionalArray(values){return values?[...values]:void 0}const SETTINGS_DEFAULTS={version:1,id_prefix:"pm-",ids:{token_length:4},author_default:"",agent_identity:{probes_enabled:!0,identity_vocabulary:{version:1,aliases:{}},harness_signals:[]},mutation_guard:{require_attributed_author:!1,secret_guard:"advise",stale_in_progress_hours:72},item_format:"toon",locks:{ttl_seconds:1800,wait_ms:3e3},checkpoints:{retention_days:14},output:{default_format:"toon"},ux:{deprecation_hints:!0},history:{missing_stream:"auto_create",compact_policy:{enabled:!1,max_entries:500,trigger:"health_warn"}},validation:{sprint_release_format:"warn",parent_reference:"warn",metadata_profile:"core",metadata_required_fields:[],lifecycle_stale_blocker_reason_patterns:[...DEFAULT_VALIDATE_STALE_BLOCKER_REASON_PATTERNS],lifecycle_closure_like_blocked_reason_patterns:[...DEFAULT_VALIDATE_CLOSURE_LIKE_METADATA_FIELD_PATTERNS.blocked_reason],lifecycle_closure_like_resolution_patterns:[...DEFAULT_VALIDATE_CLOSURE_LIKE_METADATA_FIELD_PATTERNS.resolution],lifecycle_closure_like_actual_result_patterns:[...DEFAULT_VALIDATE_CLOSURE_LIKE_METADATA_FIELD_PATTERNS.actual_result],estimate_defaults_by_type:{}},governance:{preset:"minimal",...GOVERNANCE_PRESET_DEFAULTS.minimal},workflow:{definition_of_done:[]},testing:{record_results_to_items:!1,allow_untrusted_linked_tests:!1},telemetry:{enabled:!0,first_run_prompt_completed:!1,capture_level:"redacted",endpoint:"https://pm-cli.unbrained.dev/v1/events",installation_id:"",retention_days:365},agent_guidance:{prompt_completed:!1,declined:!1,declined_at:"",template_version:1,last_checked_files:[]},item_types:{definitions:[]},schema:{version:1,files:{types:"schema/types.json",statuses:"schema/statuses.json",fields:"schema/fields.json",workflows:"schema/workflows.json"},statuses:DEFAULT_STATUS_DEFINITIONS.map(definition=>({...definition,aliases:cloneOptionalArray(definition.aliases),roles:cloneOptionalArray(definition.roles)})),fields:[],workflow:{...DEFAULT_WORKFLOW_DEFINITION},unknown_field_policy:"allow"},extensions:{enabled:[],disabled:[],policy:createDefaultExtensionGovernancePolicy()},search:{score_threshold:0,hybrid_semantic_weight:.7,max_results:50,embedding_model:"",embedding_batch_size:32,embedding_timeout_ms:3e4,scanner_max_batch_retries:3,provider:"",default_mode:"auto",mutation_refresh_policy:"semantic_configured",query_expansion:{enabled:!1,provider:""},rerank:{enabled:!1,model:"",top_k:20}},providers:{openai:{base_url:"",api_key:"",model:""},ollama:{base_url:"",model:""}},context:{default_depth:"brief",activity_limit:10,stale_threshold_days:7,sections:{hierarchy:!0,activity:!0,progress:!0,recently_created:!0,unparented:!0,blockers:!0,files:!0,workload:!0,staleness:!0,tests:!0}},vector_store:{adapter:"",collection_name:"pm_items",qdrant:{url:"",api_key:""},lancedb:{path:""}}},EMPTY_CANONICAL_DOCUMENT={metadata:{},body:""},EXIT_CODE={SUCCESS:0,GENERIC_FAILURE:1,USAGE:2,NOT_FOUND:3,CONFLICT:4,DEPENDENCY_FAILED:5,NO_EFFECT:6,PARTIAL_EFFECT:7},TELEMETRY_ERROR_CATEGORY_BY_CODE=Object.freeze({unknown_command:"usage",unknown_option:"usage",missing_required_option:"usage",missing_required_argument:"usage",invalid_command_usage:"usage",linked_test_value_not_quoted:"usage",invalid_argument_value:"validation",health_findings:"validation",validation_findings:"validation",close_through_update:"validation",no_update_fields:"validation",unsupported_update_option:"validation",tracker_not_initialized:"validation",item_not_found:"validation",ownership_conflict:"conflict",lock_conflict:"conflict",terminal_state_conflict:"conflict",dependency_failed:"runtime",init_gitignore_unwritable:"runtime",merge_git_config_unwritable:"runtime",command_failed:"runtime",unknown_error:"runtime"});function resolveTelemetryErrorCategory(errorCode){const normalized=(errorCode??"").trim().toLowerCase();if(normalized.length===0)return"unknown";const explicit=TELEMETRY_ERROR_CATEGORY_BY_CODE[normalized];return typeof explicit=="string"?explicit:normalized.includes("conflict")||normalized.includes("locked")?"conflict":normalized.startsWith("unknown_")||normalized.startsWith("missing_required_")?"usage":normalized.startsWith("invalid_")||normalized.endsWith("_not_found")||normalized.includes("validation")?"validation":normalized.endsWith("_error")||normalized.endsWith("_failed")?"runtime":"unknown"}export{CREATE_DIRECT_CLOSE_REASON_DEFAULT,DEFAULT_STATUS_DEFINITIONS,DEFAULT_VALIDATE_CLOSURE_LIKE_METADATA_FIELD_PATTERNS,DEFAULT_VALIDATE_STALE_BLOCKER_REASON_PATTERNS,DEFAULT_WORKFLOW_DEFINITION,EMPTY_CANONICAL_DOCUMENT,EXIT_CODE,GOVERNANCE_PRESET_DEFAULTS,ITEM_METADATA_KEY_ORDER,ITEM_PROJECT_CONTEXT_KEYS,PM_CORE_REQUIRED_SUBDIRS,PM_DIRNAME,PM_OPTIONAL_TYPE_SUBDIRS,PM_REQUIRED_SUBDIRS,SETTINGS_DEFAULTS,SETTINGS_FILENAME,TELEMETRY_ERROR_CATEGORY_BY_CODE,TYPE_TO_FOLDER,resolveTelemetryErrorCategory};
2
2
  //# sourceMappingURL=constants.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="8f35f236-50cd-5a76-9633-33f836694a5e")}catch(e2){}})();class PmCliError extends Error{exitCode;code;context;constructor(message,exitCode,context={}){super(message);this.name="PmCliError";this.exitCode=exitCode;this.context=context;this.code=context.code}}export{PmCliError};
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]="25e7f564-061f-5409-89a6-d2ae7c573ad3")}catch{}})();class PmCliError extends Error{exitCode;code;context;constructor(message,exitCode,context={}){super(message),this.name="PmCliError",this.exitCode=exitCode,this.context=context,this.code=context.code}}export{PmCliError};
2
2
  //# sourceMappingURL=errors.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="eb1afbe5-eb0a-56d2-bb94-80fd427325f7")}catch(e2){}})();const ENTITY_MAP=Object.freeze({"&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'","&amp;":"&"});const ENTITY_PATTERN=/&(?:lt|gt|quot|#39|amp);/g;function decodeHtmlEntitiesIfEscaped(input){if(typeof input!=="string"){return input}if(!input.includes("&lt;")&&!input.includes("&gt;")){return input}return input.replace(ENTITY_PATTERN,match=>ENTITY_MAP[match])}function decodeHtmlEntitiesInOptions(options){return decodeValue(options,new WeakMap)}function decodeValue(value,seen){if(typeof value==="string"){return decodeHtmlEntitiesIfEscaped(value)}if(Array.isArray(value)){if(seen.has(value)){return seen.get(value)}const result=[];seen.set(value,result);for(const entry of value){result.push(decodeValue(entry,seen))}return result}if(value!==null&&typeof value==="object"){if(!isPlainObject(value)){return value}if(seen.has(value)){return seen.get(value)}const source=value;const result=Object.create(Object.getPrototypeOf(value));seen.set(value,result);for(const[key,entry]of Object.entries(source)){Object.defineProperty(result,key,{value:decodeValue(entry,seen),enumerable:true,writable:true,configurable:true})}return result}return value}function isPlainObject(value){const proto=Object.getPrototypeOf(value);return proto===Object.prototype||proto===null}export{decodeHtmlEntitiesIfEscaped,decodeHtmlEntitiesInOptions};
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]="ab644545-f072-53c0-9ebf-72a62c237a2f")}catch{}})();const ENTITY_MAP=Object.freeze({"&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'","&amp;":"&"}),ENTITY_PATTERN=/&(?:lt|gt|quot|#39|amp);/g;function decodeHtmlEntitiesIfEscaped(input){return typeof input!="string"||!input.includes("&lt;")&&!input.includes("&gt;")?input:input.replace(ENTITY_PATTERN,match=>ENTITY_MAP[match])}function decodeHtmlEntitiesInOptions(options){return decodeValue(options,new WeakMap)}function decodeValue(value,seen){if(typeof value=="string")return decodeHtmlEntitiesIfEscaped(value);if(Array.isArray(value)){if(seen.has(value))return seen.get(value);const result=[];seen.set(value,result);for(const entry of value)result.push(decodeValue(entry,seen));return result}if(value!==null&&typeof value=="object"){if(!isPlainObject(value))return value;if(seen.has(value))return seen.get(value);const source=value,result=Object.create(Object.getPrototypeOf(value));seen.set(value,result);for(const[key,entry]of Object.entries(source))Object.defineProperty(result,key,{value:decodeValue(entry,seen),enumerable:!0,writable:!0,configurable:!0});return result}return value}function isPlainObject(value){const proto=Object.getPrototypeOf(value);return proto===Object.prototype||proto===null}export{decodeHtmlEntitiesIfEscaped,decodeHtmlEntitiesInOptions};
2
2
  //# sourceMappingURL=html-entity-decode.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="c351b7f8-5ad4-57cf-9a67-bdb39d5b53a8")}catch(e2){}})();export*from"./command-types.js";export*from"./constants.js";export*from"./errors.js";export*from"./primitives.js";
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]="c351b7f8-5ad4-57cf-9a67-bdb39d5b53a8")}catch{}})();export*from"./command-types.js";export*from"./constants.js";export*from"./errors.js";export*from"./primitives.js";
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="89d6c349-10d7-596d-90a1-65afcc65eb91")}catch(e2){}})();const ITEM_PROJECT_CONTEXT_KEYS=["goal","objective","value","impact","outcome","why_now","parent","reviewer","risk","confidence","sprint","release","blocked_by","blocked_reason","unblock_note","reporter","severity","environment","repro_steps","resolution","expected_result","actual_result"];const ITEM_METADATA_KEY_ORDER_VALUES=["id","title","description","type","pm_format_version","source_type","type_options","status","priority","tags","created_at","updated_at","deadline","reminders","events","closed_at","completed_at","assignee","claim_principal","source_owner","author","estimated_minutes","acceptance_criteria","design","external_ref","definition_of_ready","order",...ITEM_PROJECT_CONTEXT_KEYS,"affected_version","fixed_version","component","regression","customer_impact","dependencies","comments","notes","learnings","files","tests","test_runs","docs","close_reason","duplicate_of","plan_mode","plan_scope","plan_harness","plan_resume_context","plan_validation","plan_decisions","plan_discoveries","plan_steps"];const ITEM_METADATA_KEY_ORDER=ITEM_METADATA_KEY_ORDER_VALUES;export{ITEM_METADATA_KEY_ORDER,ITEM_PROJECT_CONTEXT_KEYS};
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]="3d6df465-e82e-57d8-a687-6c2e720c99c1")}catch{}})();const ITEM_PROJECT_CONTEXT_KEYS=["goal","objective","value","impact","outcome","why_now","parent","reviewer","risk","confidence","sprint","release","blocked_by","blocked_reason","unblock_note","reporter","severity","environment","repro_steps","resolution","expected_result","actual_result"],ITEM_METADATA_KEY_ORDER_VALUES=["id","title","description","type","pm_format_version","source_type","type_options","status","priority","tags","created_at","updated_at","deadline","reminders","events","closed_at","completed_at","assignee","claim_principal","source_owner","author","estimated_minutes","acceptance_criteria","design","external_ref","definition_of_ready","order",...ITEM_PROJECT_CONTEXT_KEYS,"affected_version","fixed_version","component","regression","customer_impact","dependencies","comments","notes","learnings","files","tests","test_runs","docs","close_reason","duplicate_of","plan_mode","plan_scope","plan_harness","plan_resume_context","plan_validation","plan_decisions","plan_discoveries","plan_steps"],ITEM_METADATA_KEY_ORDER=ITEM_METADATA_KEY_ORDER_VALUES;export{ITEM_METADATA_KEY_ORDER,ITEM_PROJECT_CONTEXT_KEYS};
2
2
  //# sourceMappingURL=item-metadata-contract.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="4873876d-67b4-5f79-a984-756b7e539e9b")}catch(e2){}})();function createLazyModule(importer){let promise=null;return()=>{promise??=importer();return promise}}export{createLazyModule};
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]="e7deff0d-d9c9-5250-b172-ab752ddd64a4")}catch{}})();function createLazyModule(importer){let promise=null;return()=>(promise??=importer(),promise)}export{createLazyModule};
2
2
  //# sourceMappingURL=lazy-module.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="de2a2a0e-8a39-5569-9af9-cbf557bce2a9")}catch(e2){}})();function levenshteinDistanceWithinLimit(left,right,limit){if(left===right){return 0}if(Math.abs(left.length-right.length)>limit){return null}const width=right.length+1;const beforePrevious=new Array(width);const previous=new Array(width);const current=new Array(width);for(let column=0;column<width;column+=1){beforePrevious[column]=0;previous[column]=column}for(let row=1;row<=left.length;row+=1){current[0]=row;let rowMin=current[0];for(let column=1;column<=right.length;column+=1){const cost=left[row-1]===right[column-1]?0:1;const substitution=previous[column-1]+cost;const insertion=current[column-1]+1;const deletion=previous[column]+1;let candidate=Math.min(substitution,insertion,deletion);if(row>1&&column>1&&left[row-1]===right[column-2]&&left[row-2]===right[column-1]){candidate=Math.min(candidate,beforePrevious[column-2]+1)}current[column]=candidate;if(candidate<rowMin){rowMin=candidate}}if(rowMin>limit){return null}for(let column=0;column<width;column+=1){beforePrevious[column]=previous[column];previous[column]=current[column]}}const result=previous[right.length];return result<=limit?result:null}export{levenshteinDistanceWithinLimit};
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]="628615ea-5be3-5753-a6c5-3eba8400a8da")}catch{}})();function levenshteinDistanceWithinLimit(left,right,limit){if(left===right)return 0;if(Math.abs(left.length-right.length)>limit)return null;const width=right.length+1,beforePrevious=new Array(width),previous=new Array(width),current=new Array(width);for(let column=0;column<width;column+=1)beforePrevious[column]=0,previous[column]=column;for(let row=1;row<=left.length;row+=1){current[0]=row;let rowMin=current[0];for(let column=1;column<=right.length;column+=1){const cost=left[row-1]===right[column-1]?0:1,substitution=previous[column-1]+cost,insertion=current[column-1]+1,deletion=previous[column]+1;let candidate=Math.min(substitution,insertion,deletion);row>1&&column>1&&left[row-1]===right[column-2]&&left[row-2]===right[column-1]&&(candidate=Math.min(candidate,beforePrevious[column-2]+1)),current[column]=candidate,candidate<rowMin&&(rowMin=candidate)}if(rowMin>limit)return null;for(let column=0;column<width;column+=1)beforePrevious[column]=previous[column],previous[column]=current[column]}const result=previous[right.length];return result<=limit?result:null}export{levenshteinDistanceWithinLimit};
2
2
  //# sourceMappingURL=levenshtein.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="43f7bd27-7874-56f9-a497-e6f67a3ae9be")}catch(e2){}})();function evictOldestMemoEntries(memo){let remaining=Math.ceil(memo.size/2);for(const key of memo.keys()){if(remaining===0){return}memo.delete(key);remaining-=1}}export{evictOldestMemoEntries};
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]="92573990-a040-526d-a0b1-b91d2ef401f1")}catch{}})();function evictOldestMemoEntries(memo){let remaining=Math.ceil(memo.size/2);for(const key of memo.keys()){if(remaining===0)return;memo.delete(key),remaining-=1}}export{evictOldestMemoEntries};
2
2
  //# sourceMappingURL=memo.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="df9abedd-6e84-5712-8e5e-4e510ec3ed60")}catch(e2){}})();import{EXIT_CODE}from"./constants.js";import{PmCliError}from"./errors.js";function parseLimit(raw,label="--limit"){if(raw===void 0)return void 0;const parsed=Number(raw);if(!Number.isFinite(parsed)||parsed<0){throw new PmCliError(`${label} must be a non-negative number`,EXIT_CODE.USAGE)}return Math.floor(parsed)}export{parseLimit};
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]="b84fee06-5bbd-57f9-9643-f283d6c87afa")}catch{}})();import{EXIT_CODE}from"./constants.js";import{PmCliError}from"./errors.js";function parseLimit(raw,label="--limit"){if(raw===void 0)return;const parsed=Number(raw);if(!Number.isFinite(parsed)||parsed<0)throw new PmCliError(`${label} must be a non-negative number`,EXIT_CODE.USAGE);return Math.floor(parsed)}export{parseLimit};
2
2
  //# sourceMappingURL=numeric-parsers.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="3940f646-f84d-5eb0-8db1-de64ca0a5985")}catch(e2){}})();function extractLongFlags(flagSpec){return flagSpec.split(/[\s,|]+/).map(token=>token.trim()).filter(token=>token.startsWith("--"))}function extractLongFlag(flagSpec){return extractLongFlags(flagSpec)[0]??null}function isPureSnakeCaseAlias(canonicalFlagSpec,aliasFlagSpec){const aliasLong=extractLongFlag(aliasFlagSpec);if(aliasLong===null){return false}const normalize=long=>long.slice(2).replaceAll("-","_");return extractLongFlags(canonicalFlagSpec).some(canonicalLong=>{if(!canonicalLong.slice(2).includes("-")){return false}if(aliasLong===canonicalLong){return false}return normalize(aliasLong)===normalize(canonicalLong)})}export{extractLongFlag,extractLongFlags,isPureSnakeCaseAlias};
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]="bc9e1b59-21cb-5dda-91c0-36e123734cd3")}catch{}})();function extractLongFlags(flagSpec){return flagSpec.split(/[\s,|]+/).map(token=>token.trim()).filter(token=>token.startsWith("--"))}function extractLongFlag(flagSpec){return extractLongFlags(flagSpec)[0]??null}function isPureSnakeCaseAlias(canonicalFlagSpec,aliasFlagSpec){const aliasLong=extractLongFlag(aliasFlagSpec);if(aliasLong===null)return!1;const normalize=long=>long.slice(2).replaceAll("-","_");return extractLongFlags(canonicalFlagSpec).some(canonicalLong=>!canonicalLong.slice(2).includes("-")||aliasLong===canonicalLong?!1:normalize(aliasLong)===normalize(canonicalLong))}export{extractLongFlag,extractLongFlags,isPureSnakeCaseAlias};
2
2
  //# sourceMappingURL=option-alias-visibility.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="49fe564d-671f-5425-96fe-517cb323f773")}catch(e2){}})();function toNonEmptyString(value){if(typeof value!=="string"){return null}const normalized=value.trim();return normalized.length>0?normalized:null}function toNonEmptyStringOrUndefined(value){const result=toNonEmptyString(value);return result??void 0}function trimTrailingSlashes(value){let end=value.length;while(end>0&&value.charCodeAt(end-1)===47){end-=1}return end===value.length?value:value.slice(0,end)}function isFiniteNumberArray(value){return Array.isArray(value)&&value.every(entry=>typeof entry==="number"&&Number.isFinite(entry))}function toErrorMessage(error){if(error instanceof Error){const message=error.message.trim();return message.length>0?message:error.name}return String(error)}function coerceFiniteNumber(value){const parsed=typeof value==="number"?value:typeof value==="string"&&value.trim().length>0?Number(value.trim()):Number.NaN;return Number.isFinite(parsed)?parsed:null}function coercePositiveInteger(value){const parsed=coerceFiniteNumber(value);if(parsed===null||parsed<=0||!Number.isInteger(parsed)){return null}return parsed}function coerceNumberInRange(value,min,max){const parsed=coerceFiniteNumber(value);if(parsed===null||parsed<min||parsed>max){return null}return parsed}function asRecordOrNull(value){if(typeof value!=="object"||value===null||Array.isArray(value)){return null}return value}function asRecordLoose(value){if(typeof value!=="object"||value===null){return null}return value}function asPropertyRecord(value){if(typeof value!=="object"&&typeof value!=="function"||value===null){return null}return value}function resolveActivatablePropertyRecord(value){const moduleRecord=asPropertyRecord(value);if(!moduleRecord){return null}if(typeof moduleRecord.activate==="function"){return moduleRecord}const defaultExport=asPropertyRecord(moduleRecord.default);return typeof defaultExport?.activate==="function"?defaultExport:null}function asRecordClone(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)?{...value}:{}}export{asPropertyRecord,asRecordClone,asRecordLoose,asRecordOrNull,coerceFiniteNumber,coerceNumberInRange,coercePositiveInteger,isFiniteNumberArray,resolveActivatablePropertyRecord,toErrorMessage,toNonEmptyString,toNonEmptyStringOrUndefined,trimTrailingSlashes};
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]="a797572f-fbc6-5e62-a9b5-5a0bd6ef22b4")}catch{}})();function toNonEmptyString(value){if(typeof value!="string")return null;const normalized=value.trim();return normalized.length>0?normalized:null}function toNonEmptyStringOrUndefined(value){return toNonEmptyString(value)??void 0}function trimTrailingSlashes(value){let end=value.length;for(;end>0&&value.charCodeAt(end-1)===47;)end-=1;return end===value.length?value:value.slice(0,end)}function isFiniteNumberArray(value){return Array.isArray(value)&&value.every(entry=>typeof entry=="number"&&Number.isFinite(entry))}function toErrorMessage(error){if(error instanceof Error){const message=error.message.trim();return message.length>0?message:error.name}return String(error)}function coerceFiniteNumber(value){const parsed=typeof value=="number"?value:typeof value=="string"&&value.trim().length>0?Number(value.trim()):Number.NaN;return Number.isFinite(parsed)?parsed:null}function coercePositiveInteger(value){const parsed=coerceFiniteNumber(value);return parsed===null||parsed<=0||!Number.isInteger(parsed)?null:parsed}function coerceNumberInRange(value,min,max){const parsed=coerceFiniteNumber(value);return parsed===null||parsed<min||parsed>max?null:parsed}function asRecordOrNull(value){return typeof value!="object"||value===null||Array.isArray(value)?null:value}function asRecordLoose(value){return typeof value!="object"||value===null?null:value}function asPropertyRecord(value){return typeof value!="object"&&typeof value!="function"||value===null?null:value}function resolveActivatablePropertyRecord(value){const moduleRecord=asPropertyRecord(value);if(!moduleRecord)return null;if(typeof moduleRecord.activate=="function")return moduleRecord;const defaultExport=asPropertyRecord(moduleRecord.default);return typeof defaultExport?.activate=="function"?defaultExport:null}function asRecordClone(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)?{...value}:{}}export{asPropertyRecord,asRecordClone,asRecordLoose,asRecordOrNull,coerceFiniteNumber,coerceNumberInRange,coercePositiveInteger,isFiniteNumberArray,resolveActivatablePropertyRecord,toErrorMessage,toNonEmptyString,toNonEmptyStringOrUndefined,trimTrailingSlashes};
2
2
  //# sourceMappingURL=primitives.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="e5e43a96-6711-5777-8d65-06ae99eb008f")}catch(e2){}})();const SECRET_RULES=[{name:"private-key",mutationRule:"private_key",regex:/-----BEGIN [A-Z0-9 ]*PRIVATE KEY-----/g},{name:"github-token",mutationRule:"github_token",regex:/\b(?:gh[opsru]_[A-Za-z0-9]{20,}|github_pat_[A-Za-z0-9_]{20,})\b/g},{name:"npm-token",mutationRule:"npm_token",regex:/\bnpm_[A-Za-z0-9]{20,}\b/g},{name:"aws-access-key",mutationRule:"aws_access_key",regex:/\b(?:AKIA|ASIA)[0-9A-Z]{16}\b/g},{name:"google-api-key",mutationRule:"google_api_key",regex:/\bAIza[0-9A-Za-z_-]{35}\b/g},{name:"slack-token",mutationRule:"slack_token",regex:/\bxox[baprs]-[A-Za-z0-9-]{10,}\b/g},{name:"anthropic-api-key",mutationRule:"anthropic_api_key",regex:/\bsk-ant-[A-Za-z0-9_-]{20,}\b/g},{name:"openai-api-key",mutationRule:"openai_api_key",regex:/\bsk-(?!ant-)[A-Za-z0-9_-]{20,}\b/g},{name:"gitlab-token",mutationRule:"gitlab_token",regex:/\bglpat-[A-Za-z0-9_.-]{20,}\b/g},{name:"jwt-like-token",mutationRule:"jwt_like_token",regex:/\beyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\b/g},{name:"npm-auth-token-assignment",mutationRule:"npm_auth_token_assignment",regex:/_authToken\s*=\s*\S+/g},{name:"sentry-user-token",mutationRule:"sentry_user_token",regex:/\bsntryu_[A-Za-z0-9]{20,}\b/g},{name:"sentry-org-token",mutationRule:"sentry_org_token",regex:/\bsntrys_[A-Za-z0-9_-]{20,}\b/g},{name:"private-ip",mutationRule:"private_ip",regex:/\b(?:10\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)|172\.(?:1[6-9]|2\d|3[01])\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)|192\.168\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d))\b/g},{name:"private-ssh-target",mutationRule:"private_ssh_target",regex:/\b(?:ssh|scp|rsync)\s+[A-Za-z0-9._-]+@(?:10\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)|172\.(?:1[6-9]|2\d|3[01])\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)|192\.168\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d))\b/g},{name:"sshpass-inline-password",mutationRule:"sshpass_inline_password",regex:/\bsshpass\s+-p\s+["'][^"']{6,}["']/g},{name:"password-assignment",mutationRule:"password_assignment",regex:/\b(?:password|passphrase)\s*[:=]\s*(?:(?!<|\$\{|\$\(|config\.auth\.password\s*(?:\|\|\s*(?:''|"")|\?\s*unescape\(encodeURIComponent\(config\.auth\.password\)\)\s*:\s*(?:''|""))(?=[ \t]*(?:\/\*(?:[^*]|\*(?!\/))*\*\/[ \t]*)*(?:;|$|\/\/[^\r\n\u2028\u2029]*(?:\r\n)?$)))[A-Za-z0-9!@#$%^&*._+\-=]{8,}|"(?!<|\$\{|\$\()[^"]{8,}"|'(?!<|\$\{|\$\()[^']{8,}')/gi},{name:"absolute-home-path",mutationRule:"absolute_home_path",regex:/(?:^|[\s"'`(=])\/home\/[A-Za-z0-9._-]+\/[^\s"'`),;]+/g,excludeFiles:/^(?:tests\/|examples\/)/},{name:"user-at-private-host",mutationRule:"user_at_private_host",regex:/\b[A-Za-z0-9._-]+@(?:10\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)|172\.(?:1[6-9]|2\d|3[01])\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)|192\.168\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d))\b/g,excludeFiles:/^(?:tests\/|examples\/)/},{name:"high-entropy-assignment",mutationRule:"high_entropy_assignment",regex:/\b(?:token|secret|password|passwd|api[_-]?key)\s*[:=]\s*["']?([A-Za-z0-9+/=_-]{24,})/gi,mutationOnlyReason:"Generic assignments in source code are not credentials; preserve the existing mutation heuristic without treating source identifiers as secrets.",minimumEntropy:3.5}];function acceptsSecretMatch(rule,match){if(rule.minimumEntropy===void 0)return true;const value=match[1];const counts=new Map;for(const character of value){counts.set(character,(counts.get(character)??0)+1)}let entropy=0;for(const count of counts.values()){const probability=count/value.length;entropy-=probability*Math.log2(probability)}return entropy>=rule.minimumEntropy}export{SECRET_RULES,acceptsSecretMatch};
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]="4835aae2-a525-5683-abc0-0ba3c5781c95")}catch{}})();const SECRET_RULES=[{name:"private-key",mutationRule:"private_key",regex:/-----BEGIN [A-Z0-9 ]*PRIVATE KEY-----/g},{name:"github-token",mutationRule:"github_token",regex:/\b(?:gh[opsru]_[A-Za-z0-9]{20,}|github_pat_[A-Za-z0-9_]{20,})\b/g},{name:"npm-token",mutationRule:"npm_token",regex:/\bnpm_[A-Za-z0-9]{20,}\b/g},{name:"aws-access-key",mutationRule:"aws_access_key",regex:/\b(?:AKIA|ASIA)[0-9A-Z]{16}\b/g},{name:"google-api-key",mutationRule:"google_api_key",regex:/\bAIza[0-9A-Za-z_-]{35}\b/g},{name:"slack-token",mutationRule:"slack_token",regex:/\bxox[baprs]-[A-Za-z0-9-]{10,}\b/g},{name:"anthropic-api-key",mutationRule:"anthropic_api_key",regex:/\bsk-ant-[A-Za-z0-9_-]{20,}\b/g},{name:"openai-api-key",mutationRule:"openai_api_key",regex:/\bsk-(?!ant-)[A-Za-z0-9_-]{20,}\b/g},{name:"gitlab-token",mutationRule:"gitlab_token",regex:/\bglpat-[A-Za-z0-9_.-]{20,}\b/g},{name:"jwt-like-token",mutationRule:"jwt_like_token",regex:/\beyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\b/g},{name:"npm-auth-token-assignment",mutationRule:"npm_auth_token_assignment",regex:/_authToken\s*=\s*\S+/g},{name:"sentry-user-token",mutationRule:"sentry_user_token",regex:/\bsntryu_[A-Za-z0-9]{20,}\b/g},{name:"sentry-org-token",mutationRule:"sentry_org_token",regex:/\bsntrys_[A-Za-z0-9_-]{20,}\b/g},{name:"private-ip",mutationRule:"private_ip",regex:/\b(?:10\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)|172\.(?:1[6-9]|2\d|3[01])\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)|192\.168\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d))\b/g},{name:"private-ssh-target",mutationRule:"private_ssh_target",regex:/\b(?:ssh|scp|rsync)\s+[A-Za-z0-9._-]+@(?:10\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)|172\.(?:1[6-9]|2\d|3[01])\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)|192\.168\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d))\b/g},{name:"sshpass-inline-password",mutationRule:"sshpass_inline_password",regex:/\bsshpass\s+-p\s+["'][^"']{6,}["']/g},{name:"password-assignment",mutationRule:"password_assignment",regex:/\b(?:password|passphrase)\s*[:=]\s*(?:(?!<|\$\{|\$\(|config\.auth\.password\s*(?:\|\|\s*(?:''|"")|\?\s*unescape\(encodeURIComponent\(config\.auth\.password\)\)\s*:\s*(?:''|""))(?=[ \t]*(?:\/\*(?:[^*]|\*(?!\/))*\*\/[ \t]*)*(?:;|$|\/\/[^\r\n\u2028\u2029]*(?:\r\n)?$)))[A-Za-z0-9!@#$%^&*._+\-=]{8,}|"(?!<|\$\{|\$\()[^"]{8,}"|'(?!<|\$\{|\$\()[^']{8,}')/gi},{name:"absolute-home-path",mutationRule:"absolute_home_path",regex:/(?:^|[\s"'`(=])\/home\/[A-Za-z0-9._-]+\/[^\s"'`),;]+/g,excludeFiles:/^(?:tests\/|examples\/)/},{name:"user-at-private-host",mutationRule:"user_at_private_host",regex:/\b[A-Za-z0-9._-]+@(?:10\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)|172\.(?:1[6-9]|2\d|3[01])\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)|192\.168\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d))\b/g,excludeFiles:/^(?:tests\/|examples\/)/},{name:"high-entropy-assignment",mutationRule:"high_entropy_assignment",regex:/\b(?:token|secret|password|passwd|api[_-]?key)\s*[:=]\s*["']?([A-Za-z0-9+/=_-]{24,})/gi,mutationOnlyReason:"Generic assignments in source code are not credentials; preserve the existing mutation heuristic without treating source identifiers as secrets.",minimumEntropy:3.5}];function acceptsSecretMatch(rule,match){if(rule.minimumEntropy===void 0)return!0;const value=match[1],counts=new Map;for(const character of value)counts.set(character,(counts.get(character)??0)+1);let entropy=0;for(const count of counts.values()){const probability=count/value.length;entropy-=probability*Math.log2(probability)}return entropy>=rule.minimumEntropy}export{SECRET_RULES,acceptsSecretMatch};
2
2
  //# sourceMappingURL=secret-rules.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="07566a0b-2917-5ed8-828a-d811ae48dfaf")}catch(e2){}})();function createAsyncReadWriteGate(){let writerBarrier=Promise.resolve();const readers=new Set;return{async read(task){const precedingWriters=writerBarrier;let finishReader;const readerDone=new Promise(resolve=>{finishReader=resolve});readers.add(readerDone);await precedingWriters;try{return await task()}finally{readers.delete(readerDone);finishReader()}},write(task){const precedingWork=Promise.all([writerBarrier,...readers]);const run=precedingWork.then(()=>task());writerBarrier=run.then(()=>void 0,()=>void 0);return run}}}function createSerialQueue(){let tail=Promise.resolve();let pending=0;const idleWaiters=[];const notifyIdle=()=>{if(pending!==0){return}const waiters=idleWaiters.splice(0);for(const resolve of waiters){resolve()}};return{enqueue(task){pending++;const run=tail.then(()=>task());tail=run.then(()=>void 0,()=>void 0).finally(()=>{pending--;notifyIdle()});return run},idle(){return pending===0?Promise.resolve():new Promise(resolve=>idleWaiters.push(resolve))}}}export{createAsyncReadWriteGate,createSerialQueue};
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]="4da25248-2914-5bc5-aa42-87f677ef4ea8")}catch{}})();function createAsyncReadWriteGate(){let writerBarrier=Promise.resolve();const readers=new Set;return{async read(task){const precedingWriters=writerBarrier;let finishReader;const readerDone=new Promise(resolve=>{finishReader=resolve});readers.add(readerDone),await precedingWriters;try{return await task()}finally{readers.delete(readerDone),finishReader()}},write(task){const run=Promise.all([writerBarrier,...readers]).then(()=>task());return writerBarrier=run.then(()=>{},()=>{}),run}}}function createSerialQueue(){let tail=Promise.resolve(),pending=0;const idleWaiters=[],notifyIdle=()=>{if(pending!==0)return;const waiters=idleWaiters.splice(0);for(const resolve of waiters)resolve()};return{enqueue(task){pending++;const run=tail.then(()=>task());return tail=run.then(()=>{},()=>{}).finally(()=>{pending--,notifyIdle()}),run},idle(){return pending===0?Promise.resolve():new Promise(resolve=>idleWaiters.push(resolve))}}}export{createAsyncReadWriteGate,createSerialQueue};
2
2
  //# sourceMappingURL=serial-queue.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="c036d6cf-6a10-5c74-9e2f-e7c953339e2c")}catch(e2){}})();import crypto from"node:crypto";function sortScalarValue(value){if(value===null)return null;if(typeof value==="string"||typeof value==="number"||typeof value==="boolean"){return value}if(typeof value==="bigint"){return value.toString()}if(value===void 0){return"undefined"}if(typeof value==="symbol"){return value.toString()}if(typeof value==="function"){return`[function:${value.name||"anonymous"}]`}return void 0}function sortPlainObjectKeys(value){const sortedKeys=Object.keys(value).sort();const result={};for(const key of sortedKeys){const nested=value[key];if(nested===void 0){continue}result[key]=sortObjectKeys(nested)}return result}function sortObjectKeys(value){const scalarValue=sortScalarValue(value);if(scalarValue!==void 0){return scalarValue}if(Array.isArray(value)){return value.map(entry=>sortObjectKeys(entry))}if(value instanceof Date){return value.toISOString()}const maybeJson=value;if(typeof maybeJson.toJSON==="function"){const normalized=maybeJson.toJSON();if(normalized!==value){return sortObjectKeys(normalized)}}return sortPlainObjectKeys(value)}function stableStringify(value){return JSON.stringify(sortObjectKeys(value))}function hasUnmatchedEquivalent(leftValue,rightValues,matchedIndexes,equals){for(let index=0;index<rightValues.length;index+=1){if(matchedIndexes.has(index)){continue}if(equals(leftValue,rightValues[index])){matchedIndexes.add(index);return true}}return false}function compareRegExpValues(left,right){if(!(left instanceof RegExp||right instanceof RegExp)){return void 0}return left instanceof RegExp&&right instanceof RegExp&&left.toString()===right.toString()}function compareDateValues(left,right){if(!(left instanceof Date||right instanceof Date)){return void 0}return left instanceof Date&&right instanceof Date&&left.getTime()===right.getTime()}function compareSetValues(left,right){if(!(left instanceof Set||right instanceof Set)){return void 0}if(!(left instanceof Set&&right instanceof Set)||left.size!==right.size){return false}const rightValues=[...right];const matched=new Set;for(const leftValue of left){if(!hasUnmatchedEquivalent(leftValue,rightValues,matched,stableValueEquals)){return false}}return true}function compareMapValues(left,right){if(!(left instanceof Map||right instanceof Map)){return void 0}if(!(left instanceof Map&&right instanceof Map)||left.size!==right.size){return false}const rightEntries=[...right.entries()];const matched=new Set;for(const[leftKey,leftValue]of left.entries()){const leftEntry=[leftKey,leftValue];if(!hasUnmatchedEquivalent(leftEntry,rightEntries,matched,([candidateKey,candidateValue],[rightKey,rightValue])=>stableValueEquals(candidateKey,rightKey)&&stableValueEquals(candidateValue,rightValue))){return false}}return true}function compareArrayValues(left,right){if(!(Array.isArray(left)||Array.isArray(right))){return void 0}if(!Array.isArray(left)||!Array.isArray(right)||left.length!==right.length){return false}return left.every((value,index)=>stableValueEquals(value,right[index]))}function comparePlainObjectValues(left,right){const leftKeys=Object.keys(left).sort((a,b)=>a.localeCompare(b));const rightKeys=Object.keys(right).sort((a,b)=>a.localeCompare(b));if(leftKeys.length!==rightKeys.length){return false}for(let index=0;index<leftKeys.length;index+=1){const leftKey=leftKeys[index];if(leftKey!==rightKeys[index]){return false}if(!stableValueEquals(left[leftKey],right[leftKey])){return false}}return true}const SPECIALIZED_STABLE_VALUE_COMPARISONS=[compareRegExpValues,compareDateValues,compareSetValues,compareMapValues,compareArrayValues];function stableValueEquals(left,right){if(Object.is(left,right)){return true}if(left===null||right===null||typeof left!=="object"||typeof right!=="object"){return false}for(const compare of SPECIALIZED_STABLE_VALUE_COMPARISONS){const result=compare(left,right);if(result!==void 0){return result}}return comparePlainObjectValues(left,right)}function sha256Hex(value){return crypto.createHash("sha256").update(value,"utf8").digest("hex")}function orderObject(value,keyOrder){const ordered={};for(const key of keyOrder){const entry=value[key];if(entry!==void 0){ordered[key]=entry}}const unknownKeys=Object.keys(value).filter(key=>!keyOrder.includes(key)).sort((a,b)=>a.localeCompare(b));for(const key of unknownKeys){const entry=value[key];if(entry!==void 0){ordered[key]=entry}}return ordered}export{orderObject,sha256Hex,stableStringify,stableValueEquals};
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]="77f9d61e-e78b-5b6a-a769-1ad6e5b91777")}catch{}})();import crypto from"node:crypto";function sortScalarValue(value){if(value===null)return null;if(typeof value=="string"||typeof value=="number"||typeof value=="boolean")return value;if(typeof value=="bigint")return value.toString();if(value===void 0)return"undefined";if(typeof value=="symbol")return value.toString();if(typeof value=="function")return`[function:${value.name||"anonymous"}]`}function sortPlainObjectKeys(value){const sortedKeys=Object.keys(value).sort(),result={};for(const key of sortedKeys){const nested=value[key];nested!==void 0&&(result[key]=sortObjectKeys(nested))}return result}function sortObjectKeys(value){const scalarValue=sortScalarValue(value);if(scalarValue!==void 0)return scalarValue;if(Array.isArray(value))return value.map(entry=>sortObjectKeys(entry));if(value instanceof Date)return value.toISOString();const maybeJson=value;if(typeof maybeJson.toJSON=="function"){const normalized=maybeJson.toJSON();if(normalized!==value)return sortObjectKeys(normalized)}return sortPlainObjectKeys(value)}function stableStringify(value){return JSON.stringify(sortObjectKeys(value))}function hasUnmatchedEquivalent(leftValue,rightValues,matchedIndexes,equals){for(let index=0;index<rightValues.length;index+=1)if(!matchedIndexes.has(index)&&equals(leftValue,rightValues[index]))return matchedIndexes.add(index),!0;return!1}function compareRegExpValues(left,right){if(left instanceof RegExp||right instanceof RegExp)return left instanceof RegExp&&right instanceof RegExp&&left.toString()===right.toString()}function compareDateValues(left,right){if(left instanceof Date||right instanceof Date)return left instanceof Date&&right instanceof Date&&left.getTime()===right.getTime()}function compareSetValues(left,right){if(!(left instanceof Set||right instanceof Set))return;if(!(left instanceof Set&&right instanceof Set)||left.size!==right.size)return!1;const rightValues=[...right],matched=new Set;for(const leftValue of left)if(!hasUnmatchedEquivalent(leftValue,rightValues,matched,stableValueEquals))return!1;return!0}function compareMapValues(left,right){if(!(left instanceof Map||right instanceof Map))return;if(!(left instanceof Map&&right instanceof Map)||left.size!==right.size)return!1;const rightEntries=[...right.entries()],matched=new Set;for(const[leftKey,leftValue]of left.entries())if(!hasUnmatchedEquivalent([leftKey,leftValue],rightEntries,matched,([candidateKey,candidateValue],[rightKey,rightValue])=>stableValueEquals(candidateKey,rightKey)&&stableValueEquals(candidateValue,rightValue)))return!1;return!0}function compareArrayValues(left,right){if(Array.isArray(left)||Array.isArray(right))return!Array.isArray(left)||!Array.isArray(right)||left.length!==right.length?!1:left.every((value,index)=>stableValueEquals(value,right[index]))}function comparePlainObjectValues(left,right){const leftKeys=Object.keys(left).sort((a,b)=>a.localeCompare(b)),rightKeys=Object.keys(right).sort((a,b)=>a.localeCompare(b));if(leftKeys.length!==rightKeys.length)return!1;for(let index=0;index<leftKeys.length;index+=1){const leftKey=leftKeys[index];if(leftKey!==rightKeys[index]||!stableValueEquals(left[leftKey],right[leftKey]))return!1}return!0}const SPECIALIZED_STABLE_VALUE_COMPARISONS=[compareRegExpValues,compareDateValues,compareSetValues,compareMapValues,compareArrayValues];function stableValueEquals(left,right){if(Object.is(left,right))return!0;if(left===null||right===null||typeof left!="object"||typeof right!="object")return!1;for(const compare of SPECIALIZED_STABLE_VALUE_COMPARISONS){const result=compare(left,right);if(result!==void 0)return result}return comparePlainObjectValues(left,right)}function sha256Hex(value){return crypto.createHash("sha256").update(value,"utf8").digest("hex")}function orderObject(value,keyOrder){const ordered={};for(const key of keyOrder){const entry=value[key];entry!==void 0&&(ordered[key]=entry)}const unknownKeys=Object.keys(value).filter(key=>!keyOrder.includes(key)).sort((a,b)=>a.localeCompare(b));for(const key of unknownKeys){const entry=value[key];entry!==void 0&&(ordered[key]=entry)}return ordered}export{orderObject,sha256Hex,stableStringify,stableValueEquals};
2
2
  //# sourceMappingURL=serialization.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="f3edff87-6ea5-5108-a749-eeb380870601")}catch(e2){}})();function splitCommaList(raw,options){if(raw===void 0||raw===null){return[]}const separators=options?.separators??/,/;const parts=raw.split(separators);const trimmed=parts.map(entry=>entry.trim()).filter(entry=>entry.length>0);const unique=options?.unique!==false;const deduped=unique?Array.from(new Set(trimmed)):trimmed;if(options?.sort===true){return[...deduped].sort()}return deduped}export{splitCommaList};
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]="4b566486-120f-5aed-8d92-9e62ed996210")}catch{}})();function splitCommaList(raw,options){if(raw==null)return[];const separators=options?.separators??/,/,trimmed=raw.split(separators).map(entry=>entry.trim()).filter(entry=>entry.length>0),deduped=options?.unique!==!1?Array.from(new Set(trimmed)):trimmed;return options?.sort===!0?[...deduped].sort():deduped}export{splitCommaList};
2
2
  //# sourceMappingURL=split-comma-list.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="c18e4dfc-d3e3-5185-9470-9d46b4dca893")}catch(e2){}})();function normalizeLowercaseWhitespace(value){return value.trim().toLowerCase().replace(/\s+/g," ")}function tokenizeAlphaNumeric(value){return normalizeLowercaseWhitespace(value).split(/[^a-z0-9]+/).filter(token=>token.length>0)}function jaccardSimilarity(leftTokens,rightTokens){if(leftTokens.length===0&&rightTokens.length===0){return 1}if(leftTokens.length===0||rightTokens.length===0){return 0}const leftSet=new Set(leftTokens);const rightSet=new Set(rightTokens);let intersection=0;for(const token of leftSet){if(rightSet.has(token)){intersection+=1}}const union=new Set([...leftSet,...rightSet]).size;return intersection/union}export{jaccardSimilarity,normalizeLowercaseWhitespace,tokenizeAlphaNumeric};
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]="6c555c2c-9db2-5c9f-9d69-3456fe8bffaa")}catch{}})();function normalizeLowercaseWhitespace(value){return value.trim().toLowerCase().replace(/\s+/g," ")}function tokenizeAlphaNumeric(value){return normalizeLowercaseWhitespace(value).split(/[^a-z0-9]+/).filter(token=>token.length>0)}function jaccardSimilarity(leftTokens,rightTokens){if(leftTokens.length===0&&rightTokens.length===0)return 1;if(leftTokens.length===0||rightTokens.length===0)return 0;const leftSet=new Set(leftTokens),rightSet=new Set(rightTokens);let intersection=0;for(const token of leftSet)rightSet.has(token)&&(intersection+=1);const union=new Set([...leftSet,...rightSet]).size;return intersection/union}export{jaccardSimilarity,normalizeLowercaseWhitespace,tokenizeAlphaNumeric};
2
2
  //# sourceMappingURL=text-normalization.js.map