@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
package/dist/sdk/notes.js CHANGED
@@ -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]="4e85b9bc-3387-5fb8-ac8b-c8f115c82b60")}catch(e2){}})();import{EXIT_CODE,PmCliError,parseLimit,stableStringify}from"./runtime-primitives.js";import{limitAnnotationEntries,parseAnnotationTextInput,resolveAnnotationInput,runAnnotationCommand}from"./annotations.js";function parseStructuredEventPayload(raw){if(raw===void 0)return void 0;if(raw.trim().length===0){throw new PmCliError("--add-json must contain a JSON value",EXIT_CODE.USAGE,{code:"structured_event_json_empty"})}let parsed;try{parsed=JSON.parse(raw)}catch{throw new PmCliError("--add-json must be valid JSON",EXIT_CODE.USAGE,{code:"structured_event_json_invalid"})}return parsed}function structuredEventType(value){if(typeof value!=="object"||value===null||Array.isArray(value)){return void 0}const candidate=value.type;return typeof candidate==="string"&&candidate.trim().length>0?candidate.trim():void 0}function parseSinceTimestamp(value){if(value===void 0)return void 0;const timestamp=Date.parse(value);if(!Number.isFinite(timestamp)){throw new PmCliError("--since must be a valid ISO timestamp",EXIT_CODE.USAGE,{code:"structured_event_since_invalid"})}return timestamp}async function runNotes(id,options,global2){const structuredPayload=parseStructuredEventPayload(options.addJson);const conflictingStructuredInputs=[options.add!==void 0,options.stdin===true,options.file!==void 0,options.edit!==void 0,options.delete!==void 0].includes(true);if(structuredPayload!==void 0&&conflictingStructuredInputs){throw new PmCliError("--add-json cannot be combined with text, edit, delete, stdin, or file inputs",EXIT_CODE.USAGE,{code:"structured_event_input_conflict"})}const canonicalJson=structuredPayload===void 0?void 0:stableStringify(structuredPayload);const filteringEvents=[options.since,options.eventType].some(value=>value!==void 0);const sinceTimestamp=parseSinceTimestamp(options.since);const limit=parseLimit(options.limit);const result=await runAnnotationCommand(id,{...options,...filteringEvents?{limit:void 0}:{},includeMeta:[options.includeMeta===true,filteringEvents].includes(true)},global2,{input:await resolveAnnotationInput(canonicalJson===void 0?options:{add:canonicalJson},"note"),collectionKey:"notes",op:"note_add",editOp:"note_edit",deleteOp:"note_delete",parseText:raw=>parseAnnotationTextInput(raw),createEntry:entry=>structuredPayload===void 0?entry:{...entry,format:"json",data:structuredPayload,event_type:structuredEventType(structuredPayload)},bypassOwnershipConflict:Boolean([options.edit===void 0,options.delete===void 0,options.ownershipAppendBypass===true].every(Boolean)),conflictGuidance:{required:"Strict ownership also protects annotations. Ask the current owner to run pm release <id>, then run pm claim <id>; use --force only for an explicitly approved override.",examples:["pm claim <id>"],nextSteps:["For an approved append without reassignment: pm package install governance-audit --project; then pm notes --help lists the package-owned append bypass. Edit/delete still require ownership.","For a non-terminal handoff, the current owner runs pm release <id>; then you run pm claim <id> before retrying. Claim refuses work still held by another owner; --force requires an explicitly approved override."]}});const eventType=options.eventType?.trim();const matching=result.notes.filter(note=>{const isStructured=[note.format==="json",note.data!==void 0].every(Boolean);const matchesSince=[sinceTimestamp===void 0,Date.parse(note.created_at)>=(sinceTimestamp??Number.POSITIVE_INFINITY)].includes(true);const matchesType=[!eventType,note.event_type===eventType].includes(true);return[!filteringEvents,[isStructured,matchesSince,matchesType].every(Boolean)].includes(true)});const filtered=filteringEvents?limitAnnotationEntries(matching,limit):matching;const structuredEventCount=filtered.filter(note=>note.format==="json").length;return{...result,notes:filtered,count:filtered.length,...filteringEvents?{total_count:matching.length,returned_count:filtered.length,has_more:filtered.length<matching.length,...limit===void 0?{}:{limit},structured_event_count:structuredEventCount}:options.includeMeta===true?{structured_event_count:structuredEventCount}:{}}}export{runNotes};
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]="6263346a-08ee-5eb9-81b9-47e933793c07")}catch{}})();import{EXIT_CODE,PmCliError,parseLimit,stableStringify}from"./runtime-primitives.js";import{limitAnnotationEntries,parseAnnotationTextInput,resolveAnnotationInput,runAnnotationCommand}from"./annotations.js";function parseStructuredEventPayload(raw){if(raw===void 0)return;if(raw.trim().length===0)throw new PmCliError("--add-json must contain a JSON value",EXIT_CODE.USAGE,{code:"structured_event_json_empty"});let parsed;try{parsed=JSON.parse(raw)}catch{throw new PmCliError("--add-json must be valid JSON",EXIT_CODE.USAGE,{code:"structured_event_json_invalid"})}return parsed}function structuredEventType(value){if(typeof value!="object"||value===null||Array.isArray(value))return;const candidate=value.type;return typeof candidate=="string"&&candidate.trim().length>0?candidate.trim():void 0}function parseSinceTimestamp(value){if(value===void 0)return;const timestamp=Date.parse(value);if(!Number.isFinite(timestamp))throw new PmCliError("--since must be a valid ISO timestamp",EXIT_CODE.USAGE,{code:"structured_event_since_invalid"});return timestamp}async function runNotes(id,options,global2){const structuredPayload=parseStructuredEventPayload(options.addJson),conflictingStructuredInputs=[options.add!==void 0,options.stdin===!0,options.file!==void 0,options.edit!==void 0,options.delete!==void 0].includes(!0);if(structuredPayload!==void 0&&conflictingStructuredInputs)throw new PmCliError("--add-json cannot be combined with text, edit, delete, stdin, or file inputs",EXIT_CODE.USAGE,{code:"structured_event_input_conflict"});const canonicalJson=structuredPayload===void 0?void 0:stableStringify(structuredPayload),filteringEvents=[options.since,options.eventType].some(value=>value!==void 0),sinceTimestamp=parseSinceTimestamp(options.since),limit=parseLimit(options.limit),result=await runAnnotationCommand(id,{...options,...filteringEvents?{limit:void 0}:{},includeMeta:[options.includeMeta===!0,filteringEvents].includes(!0)},global2,{input:await resolveAnnotationInput(canonicalJson===void 0?options:{add:canonicalJson},"note"),collectionKey:"notes",op:"note_add",editOp:"note_edit",deleteOp:"note_delete",parseText:raw=>parseAnnotationTextInput(raw),createEntry:entry=>structuredPayload===void 0?entry:{...entry,format:"json",data:structuredPayload,event_type:structuredEventType(structuredPayload)},bypassOwnershipConflict:!![options.edit===void 0,options.delete===void 0,options.ownershipAppendBypass===!0].every(Boolean),conflictGuidance:{required:"Strict ownership also protects annotations. Ask the current owner to run pm release <id>, then run pm claim <id>; use --force only for an explicitly approved override.",examples:["pm claim <id>"],nextSteps:["For an approved append without reassignment: pm package install governance-audit --project; then pm notes --help lists the package-owned append bypass. Edit/delete still require ownership.","For a non-terminal handoff, the current owner runs pm release <id>; then you run pm claim <id> before retrying. Claim refuses work still held by another owner; --force requires an explicitly approved override."]}}),eventType=options.eventType?.trim(),matching=result.notes.filter(note=>{const isStructured=[note.format==="json",note.data!==void 0].every(Boolean),matchesSince=[sinceTimestamp===void 0,Date.parse(note.created_at)>=(sinceTimestamp??Number.POSITIVE_INFINITY)].includes(!0),matchesType=[!eventType,note.event_type===eventType].includes(!0);return[!filteringEvents,[isStructured,matchesSince,matchesType].every(Boolean)].includes(!0)}),filtered=filteringEvents?limitAnnotationEntries(matching,limit):matching,structuredEventCount=filtered.filter(note=>note.format==="json").length;return{...result,notes:filtered,count:filtered.length,...filteringEvents?{total_count:matching.length,returned_count:filtered.length,has_more:filtered.length<matching.length,...limit===void 0?{}:{limit},structured_event_count:structuredEventCount}:options.includeMeta===!0?{structured_event_count:structuredEventCount}:{}}}export{runNotes};
2
2
  //# sourceMappingURL=notes.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]="49e76519-d1f8-58ef-818f-927c563aa006")}catch(e2){}})();import{resolvePmHistoryOperation}from"./cli-contracts/command-aliases.js";import{PM_CORE_COMMAND_NAMES}from"./cli-contracts/enum-contracts.js";const PM_OUTPUT_ENVELOPE_KINDS=["mutation_receipt","entity","collection","diagnostic","stream"];const MUTATION_COMMANDS=new Set(["append","claim","close","close-task","copy","create","delete","focus","pause-task","release","restore","start-task","update"]);const COLLECTION_MUTATION_COMMANDS=new Set(["close-many","update-many"]);const COLLECTION_COMMANDS=new Set(["activity","comments","contracts","events","history","learnings","list","notes","search"]);const DIAGNOSTIC_COMMANDS=new Set(["aggregate","deps","graph","health","history-redact","history-repair","history-compact","stats","validate"]);function definePmCommandOutputEnvelope(contract){if(contract.command.trim().length===0){throw new TypeError("command must be a non-empty command path")}if(!PM_OUTPUT_ENVELOPE_KINDS.includes(contract.kind)){throw new TypeError(`Unsupported output envelope kind: ${contract.kind}`)}return contract}function createOutputEnvelopeContract(command){const normalizedCommand=command.trim().replace(/\s+/gu," ");const[rootCommand=normalizedCommand]=normalizedCommand.split(" ");if(COLLECTION_MUTATION_COMMANDS.has(rootCommand)){return definePmCommandOutputEnvelope({command:normalizedCommand,kind:"collection",wrapper_key:"rows",cardinality:"many",format_flag:"--json"})}if(MUTATION_COMMANDS.has(rootCommand)){return definePmCommandOutputEnvelope({command:normalizedCommand,kind:"mutation_receipt",wrapper_key:null,cardinality:"one",format_flag:"--json"})}if(COLLECTION_COMMANDS.has(rootCommand)){return definePmCommandOutputEnvelope({command:normalizedCommand,kind:"collection",wrapper_key:rootCommand==="contracts"?null:"items",cardinality:"many",format_flag:"--json"})}if(DIAGNOSTIC_COMMANDS.has(rootCommand)){return definePmCommandOutputEnvelope({command:normalizedCommand,kind:"diagnostic",wrapper_key:null,cardinality:"none",format_flag:"--json"})}return definePmCommandOutputEnvelope({command:normalizedCommand,kind:rootCommand==="get"?"entity":"diagnostic",wrapper_key:rootCommand==="get"?"item":null,cardinality:rootCommand==="get"?"one":"none",format_flag:"--json"})}const PM_COMMAND_OUTPUT_ENVELOPE_CONTRACTS=PM_CORE_COMMAND_NAMES.map(command=>createOutputEnvelopeContract(command));const OUTPUT_ENVELOPE_BY_COMMAND=new Map(PM_COMMAND_OUTPUT_ENVELOPE_CONTRACTS.map(contract=>[contract.command,contract]));function resolvePmCommandOutputEnvelope(command){const normalized=command.trim().replace(/\s+/gu," ");if(normalized.length===0){throw new TypeError("command must be a non-empty command path")}const[rootCommand=normalized]=resolvePmHistoryOperation(normalized).split(" ");const declared=OUTPUT_ENVELOPE_BY_COMMAND.get(rootCommand);return declared?{...declared,command:normalized}:createOutputEnvelopeContract(normalized)}function isRecord(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)}function isPmMutationReceipt(value){return isRecord(value)&&typeof value.id==="string"&&value.id.length>0&&typeof value.status==="string"&&value.status.length>0&&Number.isSafeInteger(value.changed_field_count)&&Number(value.changed_field_count)>=0&&(value.close_reason===void 0||typeof value.close_reason==="string")&&(value.deleted===void 0||typeof value.deleted==="boolean")&&(value.previous_status===void 0||typeof value.previous_status==="string")&&(value.warnings===void 0||Array.isArray(value.warnings))}function parseMutationReceipt(input){let value=input;if(typeof input==="string"){try{value=JSON.parse(input)}catch(error){throw new TypeError(`Mutation receipt must be valid JSON: ${String(error)}`,{cause:error})}}if(!isPmMutationReceipt(value)){throw new TypeError("Mutation receipt must be a flat object with top-level id, status, and changed_field_count fields")}return{id:value.id,status:value.status,changedFieldCount:value.changed_field_count,...typeof value.close_reason==="string"?{closeReason:value.close_reason}:{},...typeof value.deleted==="boolean"?{deleted:value.deleted}:{},...typeof value.previous_status==="string"?{previousStatus:value.previous_status}:{},...Array.isArray(value.warnings)?{warnings:value.warnings}:{}}}export{PM_COMMAND_OUTPUT_ENVELOPE_CONTRACTS,PM_OUTPUT_ENVELOPE_KINDS,definePmCommandOutputEnvelope,isPmMutationReceipt,parseMutationReceipt,resolvePmCommandOutputEnvelope};
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]="76c420db-b520-5fde-bd43-16a7324feb0a")}catch{}})();import{resolvePmHistoryOperation}from"./cli-contracts/command-aliases.js";import{PM_CORE_COMMAND_NAMES}from"./cli-contracts/enum-contracts.js";const PM_OUTPUT_ENVELOPE_KINDS=["mutation_receipt","entity","collection","diagnostic","stream"],MUTATION_COMMANDS=new Set(["append","claim","close","close-task","copy","create","delete","focus","pause-task","release","restore","start-task","update"]),COLLECTION_MUTATION_COMMANDS=new Set(["close-many","update-many"]),COLLECTION_COMMANDS=new Set(["activity","comments","contracts","events","history","learnings","list","notes","search"]),DIAGNOSTIC_COMMANDS=new Set(["aggregate","deps","graph","health","history-redact","history-repair","history-compact","stats","validate"]);function definePmCommandOutputEnvelope(contract){if(contract.command.trim().length===0)throw new TypeError("command must be a non-empty command path");if(!PM_OUTPUT_ENVELOPE_KINDS.includes(contract.kind))throw new TypeError(`Unsupported output envelope kind: ${contract.kind}`);return contract}function createOutputEnvelopeContract(command){const normalizedCommand=command.trim().replace(/\s+/gu," "),[rootCommand=normalizedCommand]=normalizedCommand.split(" ");return COLLECTION_MUTATION_COMMANDS.has(rootCommand)?definePmCommandOutputEnvelope({command:normalizedCommand,kind:"collection",wrapper_key:"rows",cardinality:"many",format_flag:"--json"}):MUTATION_COMMANDS.has(rootCommand)?definePmCommandOutputEnvelope({command:normalizedCommand,kind:"mutation_receipt",wrapper_key:null,cardinality:"one",format_flag:"--json"}):COLLECTION_COMMANDS.has(rootCommand)?definePmCommandOutputEnvelope({command:normalizedCommand,kind:"collection",wrapper_key:rootCommand==="contracts"?null:"items",cardinality:"many",format_flag:"--json"}):DIAGNOSTIC_COMMANDS.has(rootCommand)?definePmCommandOutputEnvelope({command:normalizedCommand,kind:"diagnostic",wrapper_key:null,cardinality:"none",format_flag:"--json"}):definePmCommandOutputEnvelope({command:normalizedCommand,kind:rootCommand==="get"?"entity":"diagnostic",wrapper_key:rootCommand==="get"?"item":null,cardinality:rootCommand==="get"?"one":"none",format_flag:"--json"})}const PM_COMMAND_OUTPUT_ENVELOPE_CONTRACTS=PM_CORE_COMMAND_NAMES.map(command=>createOutputEnvelopeContract(command)),OUTPUT_ENVELOPE_BY_COMMAND=new Map(PM_COMMAND_OUTPUT_ENVELOPE_CONTRACTS.map(contract=>[contract.command,contract]));function resolvePmCommandOutputEnvelope(command){const normalized=command.trim().replace(/\s+/gu," ");if(normalized.length===0)throw new TypeError("command must be a non-empty command path");const[rootCommand=normalized]=resolvePmHistoryOperation(normalized).split(" "),declared=OUTPUT_ENVELOPE_BY_COMMAND.get(rootCommand);return declared?{...declared,command:normalized}:createOutputEnvelopeContract(normalized)}function isRecord(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function isPmMutationReceipt(value){return isRecord(value)&&typeof value.id=="string"&&value.id.length>0&&typeof value.status=="string"&&value.status.length>0&&Number.isSafeInteger(value.changed_field_count)&&Number(value.changed_field_count)>=0&&(value.close_reason===void 0||typeof value.close_reason=="string")&&(value.deleted===void 0||typeof value.deleted=="boolean")&&(value.previous_status===void 0||typeof value.previous_status=="string")&&(value.warnings===void 0||Array.isArray(value.warnings))}function parseMutationReceipt(input){let value=input;if(typeof input=="string")try{value=JSON.parse(input)}catch(error){throw new TypeError(`Mutation receipt must be valid JSON: ${String(error)}`,{cause:error})}if(!isPmMutationReceipt(value))throw new TypeError("Mutation receipt must be a flat object with top-level id, status, and changed_field_count fields");return{id:value.id,status:value.status,changedFieldCount:value.changed_field_count,...typeof value.close_reason=="string"?{closeReason:value.close_reason}:{},...typeof value.deleted=="boolean"?{deleted:value.deleted}:{},...typeof value.previous_status=="string"?{previousStatus:value.previous_status}:{},...Array.isArray(value.warnings)?{warnings:value.warnings}:{}}}export{PM_COMMAND_OUTPUT_ENVELOPE_CONTRACTS,PM_OUTPUT_ENVELOPE_KINDS,definePmCommandOutputEnvelope,isPmMutationReceipt,parseMutationReceipt,resolvePmCommandOutputEnvelope};
2
2
  //# sourceMappingURL=output-contracts.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]="b3353f90-b9b8-5ef5-918c-b56ec8e747c2")}catch(e2){}})();import{EXIT_CODE}from"../core/shared/constants.js";import{PmCliError}from"../core/shared/errors.js";const MATERIAL_FIELD_GROUPS_BY_RESULT=new WeakMap;function registerOutputMaterialFieldGroups(result,fieldGroups){MATERIAL_FIELD_GROUPS_BY_RESULT.set(result,new Set(fieldGroups))}const PM_READ_ROW_JQ_SELECTOR='.row_contract.row_keys[] as $key | getpath($key | split(".")) | if type == "array" then .[] else if type == "object" then to_entries[] else empty end end';const PM_READ_ROW_CONTRACTS={context:{row_keys:["high_level","low_level"],fields:"supported"},get:{row_keys:["children"],fields:"supported"},list:{row_keys:["items"],fields:"supported"},next:{row_keys:["recommended","ready","decision_needed","gate_needed","containers","blocked","held_by_others"],fields:"unsupported"},search:{row_keys:["items"],fields:"supported"},activity:{row_keys:["activity_digest","compact_activity","provenance_activity","activity"],fields:"unsupported"},history:{row_keys:["compact_history","provenance_history","history","diff"],fields:"unsupported"},deps:{row_keys:["graph.nodes","graph.edges","context.nodes","context.edges"],fields:"unsupported"},health:{row_keys:["checks"],fields:"unsupported"},aggregate:{row_keys:["groups"],fields:"unsupported"},duplicates:{row_keys:["clusters"],fields:"unsupported"},stats:{row_keys:["by_type","by_status"],fields:"unsupported"},comments:{row_keys:["comments"],fields:"unsupported"},notes:{row_keys:["notes"],fields:"unsupported"},learnings:{row_keys:["learnings"],fields:"unsupported"},files:{row_keys:["files"],fields:"unsupported"},docs:{row_keys:["docs"],fields:"unsupported"},validate:{row_keys:["checks","warnings"],fields:"unsupported"},contracts:{row_keys:["command_summaries","commands"],fields:"unsupported"}};const PM_MODE_PAIRED_OUTPUT_PROJECTION_CONTRACTS=[{command:"activity",complete_mode:"full",omissions_by_mode:{digest:[{name:"event_rows",restore_with:"--raw"}],compact:[{name:"provenance",restore_with:"--full"}],provenance:[{name:"patch_and_hashes",restore_with:"--full"}]}},{command:"history",complete_mode:"full",omissions_by_mode:{compact:[{name:"raw_history",restore_with:"--full"}],provenance:[{name:"patch_and_hashes",restore_with:"--full"}]}}];function assertProjectionModeChoice(compactRequested,fullRequested,compactFlag){if(compactRequested&&fullRequested){throw new PmCliError(`${compactFlag} cannot be combined with --full`,EXIT_CODE.USAGE)}}function createOutputOmissionReceipt(declaredGroups,includedGroupNames=new Set){const omittedFieldGroups=declaredGroups.filter(group=>!includedGroupNames.has(group.name)).map(group=>({...group}));return{has_omissions:omittedFieldGroups.length>0,omitted_field_group_count:omittedFieldGroups.length,omitted_field_groups:omittedFieldGroups}}function resolveModePairedOutputOmissionReceipt(command,mode){const contract=PM_MODE_PAIRED_OUTPUT_PROJECTION_CONTRACTS.find(candidate=>candidate.command===command);if(contract===void 0){throw new TypeError(`Unknown mode-paired output command: ${command}`)}if(mode===contract.complete_mode){return createOutputOmissionReceipt([])}const groups=contract.omissions_by_mode[mode];if(groups===void 0){throw new TypeError(`Unknown ${command} output mode: ${mode}`)}return createOutputOmissionReceipt(groups)}const CONTEXT_FIELD_GROUPS=[{name:"hierarchy",restore_with:"--section hierarchy"},{name:"activity",restore_with:"--section activity"},{name:"progress",restore_with:"--section progress"},{name:"blockers",restore_with:"--section blockers"},{name:"recently_created",restore_with:"--section recently_created"},{name:"unparented",restore_with:"--section unparented"},{name:"files",restore_with:"--section files"},{name:"workload",restore_with:"--section workload"},{name:"staleness",restore_with:"--section staleness"},{name:"tests",restore_with:"--section tests"}];function isRecord(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)}const READ_ROW_TOON_ENCODINGS=new Set([void 0,"tabular_when_uniform"]);const READ_ROW_KINDS=new Set(["collection","none"]);const READ_ROW_FIELD_MODES=new Set(["supported","unsupported"]);function isUniqueNonEmptyStringArray(value,allowEmpty){return Array.isArray(value)&&(allowEmpty||value.length>0)&&value.every(entry=>typeof entry==="string"&&entry.length>0)&&new Set(value).size===value.length}function isReadRowContract(value){return isRecord(value)&&typeof value.command==="string"&&value.command.trim().length>0&&READ_ROW_KINDS.has(value.row_kind)&&isUniqueNonEmptyStringArray(value.row_keys,true)&&(value.continuation_row_keys===void 0||isUniqueNonEmptyStringArray(value.continuation_row_keys,false))&&READ_ROW_FIELD_MODES.has(value.fields)&&READ_ROW_TOON_ENCODINGS.has(value.toon_encoding)&&(value.row_kind==="collection"?value.row_keys.length>0&&typeof value.jq_selector==="string"&&value.jq_selector.trim().length>0:value.row_keys.length===0&&value.jq_selector===void 0)}const GRAPH_ROW_KEYS={ancestors:["ids"],descendants:["ids"],predecessors:["ids"],successors:["ids"],paths:["paths"],impact:["affected"],audit:["findings"],communities:["communities"],redundancy:["redundant"],dominators:["bottlenecks"],slack:["rows"],centrality:["rows"],articulation:["articulation_points","bridges"],plan:["steps"]};const READ_RESULT_SENTINEL_KEYS={context:["sections_included","high_level","low_level"],get:["item"],list:["items","projection"],next:["recommended","ready","decision_needed","gate_needed","containers","blocked","held_by_others"],search:["items","projection"],activity:["activity_digest","compact_activity","provenance_activity","activity"],history:["compact_history","provenance_history","history","diff"],deps:["tree","graph","projection"],health:["checks"],aggregate:["groups"],duplicates:["clusters"],stats:["totals","by_type","by_status"],comments:["comments"],notes:["notes"],learnings:["learnings"],files:["files"],docs:["docs"],validate:["checks","warnings"],contracts:["command_summaries","commands","selected"]};function resolveReadRowContract(command,result){const rawRootCommand=command.trim().toLowerCase().split(/\s+/u,1)[0];const rootCommand=rawRootCommand?.startsWith("list-")?"list":rawRootCommand;if(rootCommand==="graph"){const subcommand=typeof result.subcommand==="string"?result.subcommand:"";if(subcommand.length===0)return void 0;const rowKeys=GRAPH_ROW_KEYS[subcommand];if(rowKeys===void 0)return void 0;const activeRowKeys=rowKeys.filter(key=>Array.isArray(result[key])||isRecord(result[key]));return{command:"graph",row_kind:activeRowKeys.length>0?"collection":"none",row_keys:activeRowKeys,fields:"unsupported",...activeRowKeys.length>0?{jq_selector:PM_READ_ROW_JQ_SELECTOR}:{},toon_encoding:"tabular_when_uniform"}}const declaration=PM_READ_ROW_CONTRACTS[rootCommand];const sentinelKeys=READ_RESULT_SENTINEL_KEYS[rootCommand];return declaration===void 0||sentinelKeys===void 0||!sentinelKeys.some(key=>Object.hasOwn(result,key))?void 0:(()=>{const rowKeys=declaration.row_keys.filter(key=>{const value=key.split(".").reduce((current,segment)=>isRecord(current)?current[segment]:void 0,result);return Array.isArray(value)||isRecord(value)});return{command:rootCommand,row_kind:rowKeys.length>0?"collection":"none",row_keys:rowKeys,fields:declaration.fields,...rowKeys.length>0?{jq_selector:PM_READ_ROW_JQ_SELECTOR}:{},toon_encoding:"tabular_when_uniform"}})()}function resolveDeclaredProjectionReceipt(result){if(!isRecord(result.projection))return void 0;if(typeof result.projection.mode!=="string"||result.projection.mode.trim().length===0){return void 0}const declared=result.projection.declared_field_groups;const included=result.projection.included_field_groups;if(!Array.isArray(declared)||!Array.isArray(included))return void 0;const declaredGroups=declared.filter(entry=>isRecord(entry)&&typeof entry.name==="string"&&entry.name.trim().length>0&&typeof entry.restore_with==="string"&&entry.restore_with.trim().length>0);const includedNames=included.filter(entry=>typeof entry==="string");if(declaredGroups.length!==declared.length||includedNames.length!==included.length){return void 0}const declaredNames=new Set(declaredGroups.map(group=>group.name));if(declaredNames.size!==declaredGroups.length||new Set(includedNames).size!==includedNames.length||includedNames.some(name=>!declaredNames.has(name))){return void 0}return createOutputOmissionReceipt(declaredGroups,new Set(includedNames))}function resolveContextReceipt(result){if(!Array.isArray(result.sections_included))return void 0;const receipt=createOutputOmissionReceipt(CONTEXT_FIELD_GROUPS,new Set(result.sections_included.filter(section=>typeof section==="string")));if(isRecord(result.summary)&&result.summary.scope==="matching_items"){receipt.summary_scope="matching_items"}return receipt}function resolveGetReceipt(result){if(!isRecord(result.item))return void 0;const item=result.item;const itemGroups=["comments","notes","learnings","files","tests","docs","reminders","events"];const resultGroups=["body","children","claim_state","linked","schedule"];const materialGroups=MATERIAL_FIELD_GROUPS_BY_RESULT.get(result);const ownerFor=name=>itemGroups.includes(name)||name==="body"?item:result;const groups=["body",...itemGroups,...resultGroups.slice(1)].filter(name=>materialGroups===void 0||materialGroups.has(name)||Object.hasOwn(ownerFor(name),name)).map(name=>({name,restore_with:`--fields ${name}`}));return createOutputOmissionReceipt(groups,new Set(groups.flatMap(({name})=>!Object.hasOwn(ownerFor(name),name)?[]:[name])))}function resolveListOrSearchReceipt(result){if(!isRecord(result.projection))return void 0;return createOutputOmissionReceipt([{name:"full_item_fields",restore_with:"--full"}],new Set(result.projection.mode==="full"?["full_item_fields"]:[]))}function resolveHealthReceipt(result){if(!isRecord(result.projection))return createOutputOmissionReceipt([]);if(typeof result.projection.mode!=="string")return void 0;return createOutputOmissionReceipt([{name:"full_check_details",restore_with:"--full"}],new Set(result.projection.mode==="full"?["full_check_details"]:[]))}function resolveContractsReceipt(result){if(!isRecord(result.selected)||typeof result.selected.summary!=="boolean"){return void 0}return createOutputOmissionReceipt([{name:"full_contract_catalog",restore_with:"--full"}],new Set(result.selected.summary?[]:["full_contract_catalog"]))}function resolveOutputOmissionReceipt(command,result){const declaredReceipt=resolveDeclaredProjectionReceipt(result);if(declaredReceipt!==void 0)return declaredReceipt;const[rootCommand]=command.split(/\s+/u,1);if(rootCommand==="context")return resolveContextReceipt(result);if(rootCommand==="get")return resolveGetReceipt(result);if(rootCommand==="list"||rootCommand.startsWith("list-")){return resolveListOrSearchReceipt(result)}if(rootCommand==="search"){return resolveListOrSearchReceipt(result)??createOutputOmissionReceipt([{name:"projection_metadata",restore_with:"--full"}])}if(rootCommand==="health")return resolveHealthReceipt(result);if(rootCommand==="contracts")return resolveContractsReceipt(result);return void 0}function attachOutputOmissionReceipt(command,result){if(command===void 0||!isRecord(result)){return result}const receipt=resolveOutputOmissionReceipt(command,result);const declaredRowContract=result.row_contract;const rowContract=isReadRowContract(declaredRowContract)?declaredRowContract:resolveReadRowContract(command,result);const disclosedResult=rowContract!==void 0?{...result,row_contract:rowContract}:Object.hasOwn(result,"row_contract")?Object.fromEntries(Object.entries(result).filter(([key])=>key!=="row_contract")):result;if(isRecord(disclosedResult.omission_receipt))return disclosedResult;return receipt===void 0?disclosedResult:{...disclosedResult,omission_receipt:receipt}}export{PM_MODE_PAIRED_OUTPUT_PROJECTION_CONTRACTS,PM_READ_ROW_CONTRACTS,PM_READ_ROW_JQ_SELECTOR,assertProjectionModeChoice,attachOutputOmissionReceipt,createOutputOmissionReceipt,isReadRowContract,registerOutputMaterialFieldGroups,resolveModePairedOutputOmissionReceipt,resolveOutputOmissionReceipt,resolveReadRowContract};
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]="3a66ccfd-51fb-5d4a-b9cd-257c49997d52")}catch{}})();import{EXIT_CODE}from"../core/shared/constants.js";import{PmCliError}from"../core/shared/errors.js";const MATERIAL_FIELD_GROUPS_BY_RESULT=new WeakMap;function registerOutputMaterialFieldGroups(result,fieldGroups){MATERIAL_FIELD_GROUPS_BY_RESULT.set(result,new Set(fieldGroups))}const PM_READ_ROW_JQ_SELECTOR='.row_contract.row_keys[] as $key | getpath($key | split(".")) | if type == "array" then .[] else if type == "object" then to_entries[] else empty end end',PM_READ_ROW_CONTRACTS={context:{row_keys:["high_level","low_level"],fields:"supported"},get:{row_keys:["children"],fields:"supported"},list:{row_keys:["items"],fields:"supported"},next:{row_keys:["recommended","ready","decision_needed","gate_needed","containers","blocked","held_by_others"],fields:"unsupported"},search:{row_keys:["items"],fields:"supported"},activity:{row_keys:["activity_digest","compact_activity","provenance_activity","activity"],fields:"unsupported"},history:{row_keys:["compact_history","provenance_history","history","diff"],fields:"unsupported"},deps:{row_keys:["graph.nodes","graph.edges","context.nodes","context.edges"],fields:"unsupported"},health:{row_keys:["checks"],fields:"unsupported"},aggregate:{row_keys:["groups"],fields:"unsupported"},duplicates:{row_keys:["clusters"],fields:"unsupported"},stats:{row_keys:["by_type","by_status"],fields:"unsupported"},comments:{row_keys:["comments"],fields:"unsupported"},notes:{row_keys:["notes"],fields:"unsupported"},learnings:{row_keys:["learnings"],fields:"unsupported"},files:{row_keys:["files"],fields:"unsupported"},docs:{row_keys:["docs"],fields:"unsupported"},validate:{row_keys:["checks","warnings"],fields:"unsupported"},contracts:{row_keys:["command_summaries","commands"],fields:"unsupported"}},PM_MODE_PAIRED_OUTPUT_PROJECTION_CONTRACTS=[{command:"activity",complete_mode:"full",omissions_by_mode:{digest:[{name:"event_rows",restore_with:"--raw"}],compact:[{name:"provenance",restore_with:"--full"}],provenance:[{name:"patch_and_hashes",restore_with:"--full"}]}},{command:"history",complete_mode:"full",omissions_by_mode:{compact:[{name:"raw_history",restore_with:"--full"}],provenance:[{name:"patch_and_hashes",restore_with:"--full"}]}}];function assertProjectionModeChoice(compactRequested,fullRequested,compactFlag){if(compactRequested&&fullRequested)throw new PmCliError(`${compactFlag} cannot be combined with --full`,EXIT_CODE.USAGE)}function createOutputOmissionReceipt(declaredGroups,includedGroupNames=new Set){const omittedFieldGroups=declaredGroups.filter(group=>!includedGroupNames.has(group.name)).map(group=>({...group}));return{has_omissions:omittedFieldGroups.length>0,omitted_field_group_count:omittedFieldGroups.length,omitted_field_groups:omittedFieldGroups}}function resolveModePairedOutputOmissionReceipt(command,mode){const contract=PM_MODE_PAIRED_OUTPUT_PROJECTION_CONTRACTS.find(candidate=>candidate.command===command);if(contract===void 0)throw new TypeError(`Unknown mode-paired output command: ${command}`);if(mode===contract.complete_mode)return createOutputOmissionReceipt([]);const groups=contract.omissions_by_mode[mode];if(groups===void 0)throw new TypeError(`Unknown ${command} output mode: ${mode}`);return createOutputOmissionReceipt(groups)}const CONTEXT_FIELD_GROUPS=[{name:"hierarchy",restore_with:"--section hierarchy"},{name:"activity",restore_with:"--section activity"},{name:"progress",restore_with:"--section progress"},{name:"blockers",restore_with:"--section blockers"},{name:"recently_created",restore_with:"--section recently_created"},{name:"unparented",restore_with:"--section unparented"},{name:"files",restore_with:"--section files"},{name:"workload",restore_with:"--section workload"},{name:"staleness",restore_with:"--section staleness"},{name:"tests",restore_with:"--section tests"}];function isRecord(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}const READ_ROW_TOON_ENCODINGS=new Set([void 0,"tabular_when_uniform"]),READ_ROW_KINDS=new Set(["collection","none"]),READ_ROW_FIELD_MODES=new Set(["supported","unsupported"]);function isUniqueNonEmptyStringArray(value,allowEmpty){return Array.isArray(value)&&(allowEmpty||value.length>0)&&value.every(entry=>typeof entry=="string"&&entry.length>0)&&new Set(value).size===value.length}function isReadRowContract(value){return isRecord(value)&&typeof value.command=="string"&&value.command.trim().length>0&&READ_ROW_KINDS.has(value.row_kind)&&isUniqueNonEmptyStringArray(value.row_keys,!0)&&(value.continuation_row_keys===void 0||isUniqueNonEmptyStringArray(value.continuation_row_keys,!1))&&READ_ROW_FIELD_MODES.has(value.fields)&&READ_ROW_TOON_ENCODINGS.has(value.toon_encoding)&&(value.row_kind==="collection"?value.row_keys.length>0&&typeof value.jq_selector=="string"&&value.jq_selector.trim().length>0:value.row_keys.length===0&&value.jq_selector===void 0)}const GRAPH_ROW_KEYS={ancestors:["ids"],descendants:["ids"],predecessors:["ids"],successors:["ids"],paths:["paths"],impact:["affected"],audit:["findings"],communities:["communities"],redundancy:["redundant"],dominators:["bottlenecks"],slack:["rows"],centrality:["rows"],articulation:["articulation_points","bridges"],plan:["steps"]},READ_RESULT_SENTINEL_KEYS={context:["sections_included","high_level","low_level"],get:["item"],list:["items","projection"],next:["recommended","ready","decision_needed","gate_needed","containers","blocked","held_by_others"],search:["items","projection"],activity:["activity_digest","compact_activity","provenance_activity","activity"],history:["compact_history","provenance_history","history","diff"],deps:["tree","graph","projection"],health:["checks"],aggregate:["groups"],duplicates:["clusters"],stats:["totals","by_type","by_status"],comments:["comments"],notes:["notes"],learnings:["learnings"],files:["files"],docs:["docs"],validate:["checks","warnings"],contracts:["command_summaries","commands","selected"]};function resolveReadRowContract(command,result){const rawRootCommand=command.trim().toLowerCase().split(/\s+/u,1)[0],rootCommand=rawRootCommand?.startsWith("list-")?"list":rawRootCommand;if(rootCommand==="graph"){const subcommand=typeof result.subcommand=="string"?result.subcommand:"";if(subcommand.length===0)return;const rowKeys=GRAPH_ROW_KEYS[subcommand];if(rowKeys===void 0)return;const activeRowKeys=rowKeys.filter(key=>Array.isArray(result[key])||isRecord(result[key]));return{command:"graph",row_kind:activeRowKeys.length>0?"collection":"none",row_keys:activeRowKeys,fields:"unsupported",...activeRowKeys.length>0?{jq_selector:PM_READ_ROW_JQ_SELECTOR}:{},toon_encoding:"tabular_when_uniform"}}const declaration=PM_READ_ROW_CONTRACTS[rootCommand],sentinelKeys=READ_RESULT_SENTINEL_KEYS[rootCommand];return declaration===void 0||sentinelKeys===void 0||!sentinelKeys.some(key=>Object.hasOwn(result,key))?void 0:(()=>{const rowKeys=declaration.row_keys.filter(key=>{const value=key.split(".").reduce((current,segment)=>isRecord(current)?current[segment]:void 0,result);return Array.isArray(value)||isRecord(value)});return{command:rootCommand,row_kind:rowKeys.length>0?"collection":"none",row_keys:rowKeys,fields:declaration.fields,...rowKeys.length>0?{jq_selector:PM_READ_ROW_JQ_SELECTOR}:{},toon_encoding:"tabular_when_uniform"}})()}function resolveDeclaredProjectionReceipt(result){if(!isRecord(result.projection)||typeof result.projection.mode!="string"||result.projection.mode.trim().length===0)return;const declared=result.projection.declared_field_groups,included=result.projection.included_field_groups;if(!Array.isArray(declared)||!Array.isArray(included))return;const declaredGroups=declared.filter(entry=>isRecord(entry)&&typeof entry.name=="string"&&entry.name.trim().length>0&&typeof entry.restore_with=="string"&&entry.restore_with.trim().length>0),includedNames=included.filter(entry=>typeof entry=="string");if(declaredGroups.length!==declared.length||includedNames.length!==included.length)return;const declaredNames=new Set(declaredGroups.map(group=>group.name));if(!(declaredNames.size!==declaredGroups.length||new Set(includedNames).size!==includedNames.length||includedNames.some(name=>!declaredNames.has(name))))return createOutputOmissionReceipt(declaredGroups,new Set(includedNames))}function resolveContextReceipt(result){if(!Array.isArray(result.sections_included))return;const receipt=createOutputOmissionReceipt(CONTEXT_FIELD_GROUPS,new Set(result.sections_included.filter(section=>typeof section=="string")));return isRecord(result.summary)&&result.summary.scope==="matching_items"&&(receipt.summary_scope="matching_items"),receipt}function isGetFieldGroupIncluded(name,owner,result){return name==="dependency_provenance"?!1:Object.hasOwn(owner,name)||(name==="reminders"||name==="events")&&isRecord(result.schedule)&&Object.hasOwn(result.schedule,name)||["files","tests","docs"].includes(name)&&isRecord(result.linked)&&Array.isArray(result.linked[name])&&result.linked[name].length>0}function resolveGetReceipt(result){if(!isRecord(result.item))return;const item=result.item,itemGroups=["comments","notes","learnings","files","tests","docs","reminders","events"],resultGroups=["body","children","claim_state","linked","schedule"],materialGroups=MATERIAL_FIELD_GROUPS_BY_RESULT.get(result),ownerFor=name=>itemGroups.includes(name)||name==="body"||name==="dependency_provenance"?item:result,groups=["body",...itemGroups,...resultGroups.slice(1),...materialGroups?.has("dependency_provenance")?["dependency_provenance"]:[],...materialGroups?.has("blockers")||Object.hasOwn(result,"blockers")?["blockers"]:[]].filter(name=>materialGroups===void 0||materialGroups.has(name)||Object.hasOwn(ownerFor(name),name)).map(name=>({name,restore_with:name==="blockers"?"--full":name==="dependency_provenance"?"--fields dependencies":`--fields ${name}`}));return createOutputOmissionReceipt(groups,new Set(groups.flatMap(({name})=>isGetFieldGroupIncluded(name,ownerFor(name),result)?[name]:[])))}function resolveListOrSearchReceipt(result){if(isRecord(result.projection))return createOutputOmissionReceipt([{name:"full_item_fields",restore_with:"--full"}],new Set(result.projection.mode==="full"?["full_item_fields"]:[]))}function resolveHealthReceipt(result){if(!isRecord(result.projection))return createOutputOmissionReceipt([]);if(typeof result.projection.mode=="string")return createOutputOmissionReceipt([{name:"full_check_details",restore_with:"--full"}],new Set(result.projection.mode==="full"?["full_check_details"]:[]))}function resolveContractsReceipt(result){if(!(!isRecord(result.selected)||typeof result.selected.summary!="boolean"))return createOutputOmissionReceipt([{name:"full_contract_catalog",restore_with:"--full"}],new Set(result.selected.summary?[]:["full_contract_catalog"]))}function resolveOutputOmissionReceipt(command,result){const declaredReceipt=resolveDeclaredProjectionReceipt(result);if(declaredReceipt!==void 0)return declaredReceipt;const[rootCommand]=command.split(/\s+/u,1);if(rootCommand==="context")return resolveContextReceipt(result);if(rootCommand==="get")return resolveGetReceipt(result);if(rootCommand==="list"||rootCommand.startsWith("list-"))return resolveListOrSearchReceipt(result);if(rootCommand==="search")return resolveListOrSearchReceipt(result)??createOutputOmissionReceipt([{name:"projection_metadata",restore_with:"--full"}]);if(rootCommand==="health")return resolveHealthReceipt(result);if(rootCommand==="contracts")return resolveContractsReceipt(result)}function attachOutputOmissionReceipt(command,result){if(command===void 0||!isRecord(result))return result;const receipt=resolveOutputOmissionReceipt(command,result),declaredRowContract=result.row_contract,rowContract=isReadRowContract(declaredRowContract)?declaredRowContract:resolveReadRowContract(command,result),disclosedResult=rowContract!==void 0?{...result,row_contract:rowContract}:Object.hasOwn(result,"row_contract")?Object.fromEntries(Object.entries(result).filter(([key])=>key!=="row_contract")):result;return isRecord(disclosedResult.omission_receipt)||receipt===void 0?disclosedResult:{...disclosedResult,omission_receipt:receipt}}export{PM_MODE_PAIRED_OUTPUT_PROJECTION_CONTRACTS,PM_READ_ROW_CONTRACTS,PM_READ_ROW_JQ_SELECTOR,assertProjectionModeChoice,attachOutputOmissionReceipt,createOutputOmissionReceipt,isReadRowContract,registerOutputMaterialFieldGroups,resolveModePairedOutputOmissionReceipt,resolveOutputOmissionReceipt,resolveReadRowContract};
2
2
  //# sourceMappingURL=output-projection.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]="83c82348-64f8-5f10-9396-b03add0b7932")}catch(e2){}})();import{estimatePmOutputTokens}from"./cli-contracts/agent-output-contracts.js";const SECTION_ORDER=["result_rows","envelope","diagnostics","hints"];const ROW_KEYS=/^(?:items|results|rows|ready|blocked|recommended|decision_needed|children|dependencies|events|matches|commands|tools)$/u;const DIAGNOSTIC_KEYS=/^(?:diagnostics|errors?|warnings?|findings|violations|failures?)$/u;const HINT_KEYS=/^(?:hints?|suggestions?|next_steps?|recovery|remediation|examples?)$/u;const MAX_RECEIPT_STABILIZATION_PASSES=8;function utf8Bytes(value){return Buffer.byteLength(value,"utf8")}function canonicalJsonBytes(value){return utf8Bytes(JSON.stringify(value)??"null")}function sectionForEntry(key,value){if(DIAGNOSTIC_KEYS.test(key))return"diagnostics";if(HINT_KEYS.test(key))return"hints";if(ROW_KEYS.test(key)||Array.isArray(value))return"result_rows";return"envelope"}function collectSectionWeights(result){const weights={result_rows:0,envelope:0,diagnostics:0,hints:0};if(typeof result!=="object"||result===null||Array.isArray(result)){weights[Array.isArray(result)?"result_rows":"envelope"]=canonicalJsonBytes(result);return weights}for(const[key,value]of Object.entries(result)){weights[sectionForEntry(key,value)]+=canonicalJsonBytes({[key]:value})}if(Object.values(weights).every(weight=>weight===0)){weights.envelope=1}return weights}function allocateExactBytes(totalBytes,weights){const weightTotal=SECTION_ORDER.reduce((total,section)=>total+weights[section],0);const exact=SECTION_ORDER.map(section=>({section,value:totalBytes*weights[section]/weightTotal}));const allocated={result_rows:0,envelope:0,diagnostics:0,hints:0};for(const entry of exact)allocated[entry.section]=Math.floor(entry.value);let remainder=totalBytes-SECTION_ORDER.reduce((total,section)=>total+allocated[section],0);for(const entry of[...exact].sort((left,right)=>right.value-Math.floor(right.value)-(left.value-Math.floor(left.value))||SECTION_ORDER.indexOf(left.section)-SECTION_ORDER.indexOf(right.section))){if(remainder===0)break;allocated[entry.section]+=1;remainder-=1}return allocated}function attachReceipt(result,receipt){if(typeof result==="object"&&result!==null&&!Array.isArray(result)){return{...result,token_accounting:receipt}}return{result,token_accounting:receipt}}function attachOutputTokenAccounting(result,render){const originalBytes=utf8Bytes(render(result));const allocatedBytes=allocateExactBytes(originalBytes,collectSectionWeights(result));const sections=Object.fromEntries(SECTION_ORDER.map(section=>[section,{bytes:allocatedBytes[section],estimated_tokens:estimatePmOutputTokens(allocatedBytes[section])}]));let receipt={version:1,measurement_scope:"output_before_token_accounting",estimator:"ceil(utf8_bytes / 4)",total_bytes:originalBytes,total_estimated_tokens:estimatePmOutputTokens(originalBytes),sections,accounting_receipt_bytes:0,accounting_receipt_estimated_tokens:0,excluded_fields:["token_accounting"],section_allocation:"proportional_canonical_json"};let accounted=attachReceipt(result,receipt);for(let pass=0;pass<MAX_RECEIPT_STABILIZATION_PASSES;pass+=1){const measuredReceiptBytes=utf8Bytes(render(accounted))-originalBytes;if(measuredReceiptBytes===receipt.accounting_receipt_bytes)return accounted;receipt={...receipt,accounting_receipt_bytes:measuredReceiptBytes,accounting_receipt_estimated_tokens:estimatePmOutputTokens(measuredReceiptBytes)};accounted=attachReceipt(result,receipt)}return accounted}export{attachOutputTokenAccounting};
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]="cb1266f3-8375-586f-87c6-356cf7843969")}catch{}})();import{estimatePmOutputTokens}from"./cli-contracts/agent-output-contracts.js";const SECTION_ORDER=["result_rows","envelope","diagnostics","hints"],ROW_KEYS=/^(?:items|results|rows|ready|blocked|recommended|decision_needed|children|dependencies|events|matches|commands|tools)$/u,DIAGNOSTIC_KEYS=/^(?:diagnostics|errors?|warnings?|findings|violations|failures?)$/u,HINT_KEYS=/^(?:hints?|suggestions?|next_steps?|recovery|remediation|examples?)$/u,MAX_RECEIPT_STABILIZATION_PASSES=8;function utf8Bytes(value){return Buffer.byteLength(value,"utf8")}function canonicalJsonBytes(value){return utf8Bytes(JSON.stringify(value)??"null")}function sectionForEntry(key,value){return DIAGNOSTIC_KEYS.test(key)?"diagnostics":HINT_KEYS.test(key)?"hints":ROW_KEYS.test(key)||Array.isArray(value)?"result_rows":"envelope"}function collectSectionWeights(result){const weights={result_rows:0,envelope:0,diagnostics:0,hints:0};if(typeof result!="object"||result===null||Array.isArray(result))return weights[Array.isArray(result)?"result_rows":"envelope"]=canonicalJsonBytes(result),weights;for(const[key,value]of Object.entries(result))weights[sectionForEntry(key,value)]+=canonicalJsonBytes({[key]:value});return Object.values(weights).every(weight=>weight===0)&&(weights.envelope=1),weights}function allocateExactBytes(totalBytes,weights){const weightTotal=SECTION_ORDER.reduce((total,section)=>total+weights[section],0),exact=SECTION_ORDER.map(section=>({section,value:totalBytes*weights[section]/weightTotal})),allocated={result_rows:0,envelope:0,diagnostics:0,hints:0};for(const entry of exact)allocated[entry.section]=Math.floor(entry.value);let remainder=totalBytes-SECTION_ORDER.reduce((total,section)=>total+allocated[section],0);for(const entry of[...exact].sort((left,right)=>right.value-Math.floor(right.value)-(left.value-Math.floor(left.value))||SECTION_ORDER.indexOf(left.section)-SECTION_ORDER.indexOf(right.section))){if(remainder===0)break;allocated[entry.section]+=1,remainder-=1}return allocated}function attachReceipt(result,receipt){return typeof result=="object"&&result!==null&&!Array.isArray(result)?{...result,token_accounting:receipt}:{result,token_accounting:receipt}}function attachOutputTokenAccounting(result,render){const originalBytes=utf8Bytes(render(result)),allocatedBytes=allocateExactBytes(originalBytes,collectSectionWeights(result)),sections=Object.fromEntries(SECTION_ORDER.map(section=>[section,{bytes:allocatedBytes[section],estimated_tokens:estimatePmOutputTokens(allocatedBytes[section])}]));let receipt={version:1,measurement_scope:"output_before_token_accounting",estimator:"ceil(utf8_bytes / 4)",total_bytes:originalBytes,total_estimated_tokens:estimatePmOutputTokens(originalBytes),sections,accounting_receipt_bytes:0,accounting_receipt_estimated_tokens:0,excluded_fields:["token_accounting"],section_allocation:"proportional_canonical_json"},accounted=attachReceipt(result,receipt);for(let pass=0;pass<MAX_RECEIPT_STABILIZATION_PASSES;pass+=1){const measuredReceiptBytes=utf8Bytes(render(accounted))-originalBytes;if(measuredReceiptBytes===receipt.accounting_receipt_bytes)return accounted;receipt={...receipt,accounting_receipt_bytes:measuredReceiptBytes,accounting_receipt_estimated_tokens:estimatePmOutputTokens(measuredReceiptBytes)},accounted=attachReceipt(result,receipt)}return accounted}export{attachOutputTokenAccounting};
2
2
  //# sourceMappingURL=output-token-accounting.js.map
@@ -1,2 +1,3 @@
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]="c56ec8fb-56b5-57a6-9d77-843c774dcc20")}catch(e2){}})();import{SUPPRESS_HOST_OUTPUT_MARKER,isHostOutputSuppressed,suppressHostOutput}from"../core/output/output-control.js";function serializeNdjsonRows(rows){return rows.map((row,index)=>{if(typeof row!=="object"||row===null||Array.isArray(row)){throw new TypeError(`NDJSON row ${index} must be a non-null object.`)}const serialized=JSON.stringify(row);if(serialized===void 0){throw new TypeError(`NDJSON row ${index} must serialize to a non-null object.`)}const projected=JSON.parse(serialized);if(typeof projected!=="object"||projected===null||Array.isArray(projected)){throw new TypeError(`NDJSON row ${index} must serialize to a non-null object.`)}return serialized}).join("\n")}function serializeNdjsonStream(rows,trailer){if(trailer.count!==rows.length){throw new TypeError(`NDJSON trailer count ${trailer.count} does not match ${rows.length} ${rows.length===1?"row":"rows"}.`)}for(const[index,row]of rows.entries()){if(typeof row==="object"&&row!==null&&!Array.isArray(row)&&Reflect.get(row,"record_type")==="pm.stream.trailer"){throw new TypeError(`NDJSON row ${index} uses reserved record_type pm.stream.trailer`)}}return serializeNdjsonRows([...rows,{...trailer,record_type:"pm.stream.trailer"}])}export{SUPPRESS_HOST_OUTPUT_MARKER,isHostOutputSuppressed,serializeNdjsonRows,serializeNdjsonStream,suppressHostOutput};
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]="0b246b9c-4fb8-50ed-9fa9-c7d90f8ba87f")}catch{}})();import{SUPPRESS_HOST_OUTPUT_MARKER,isHostOutputSuppressed,suppressHostOutput}from"../core/output/output-control.js";function serializeNdjsonRows(rows){return rows.map((row,index)=>{if(typeof row!="object"||row===null||Array.isArray(row))throw new TypeError(`NDJSON row ${index} must be a non-null object.`);const serialized=JSON.stringify(row);if(serialized===void 0)throw new TypeError(`NDJSON row ${index} must serialize to a non-null object.`);const projected=JSON.parse(serialized);if(typeof projected!="object"||projected===null||Array.isArray(projected))throw new TypeError(`NDJSON row ${index} must serialize to a non-null object.`);return serialized}).join(`
2
+ `)}function serializeNdjsonStream(rows,trailer){if(trailer.count!==rows.length)throw new TypeError(`NDJSON trailer count ${trailer.count} does not match ${rows.length} ${rows.length===1?"row":"rows"}.`);for(const[index,row]of rows.entries())if(typeof row=="object"&&row!==null&&!Array.isArray(row)&&Reflect.get(row,"record_type")==="pm.stream.trailer")throw new TypeError(`NDJSON row ${index} uses reserved record_type pm.stream.trailer`);return serializeNdjsonRows([...rows,{...trailer,record_type:"pm.stream.trailer"}])}export{SUPPRESS_HOST_OUTPUT_MARKER,isHostOutputSuppressed,serializeNdjsonRows,serializeNdjsonStream,suppressHostOutput};
2
3
  //# sourceMappingURL=output.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]="f366dd76-73b4-55c4-8c63-2913d0a0c380")}catch(e2){}})();import{readHistoryEntries}from"../core/history/read.js";import{getHistoryPath}from"../core/store/paths.js";async function describeItemOwnershipConflict(pmRoot,itemId,assignee){const history=await Promise.resolve().then(()=>readHistoryEntries(getHistoryPath(pmRoot,itemId),itemId)).catch(()=>[]);const latestOwnershipOperation=[...history].reverse().find(entry=>entry.patch.some(operation=>operation.path==="/metadata/assignee"))?.op;return latestOwnershipOperation==="claim"?`claimed by ${assignee}`:`assigned to ${assignee}`}export{describeItemOwnershipConflict};
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]="56177893-3ccb-5b3f-aa82-9365c26c5d34")}catch{}})();import{readHistoryEntries}from"../core/history/read.js";import{getHistoryPath}from"../core/store/paths.js";async function describeItemOwnershipConflict(pmRoot,itemId,assignee){return[...await Promise.resolve().then(()=>readHistoryEntries(getHistoryPath(pmRoot,itemId),itemId)).catch(()=>[])].reverse().find(entry=>entry.patch.some(operation=>operation.path==="/metadata/assignee"))?.op==="claim"?`claimed by ${assignee}`:`assigned to ${assignee}`}export{describeItemOwnershipConflict};
2
2
  //# sourceMappingURL=ownership-source.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]="aba4af26-98d3-53aa-8b23-1be7c90a38d1")}catch(e2){}})();import{appendHistoryEntry,createHistoryEntry}from"../core/history/history.js";import{acquireLock}from"../core/lock/lock.js";import{enforceWorkflowMutation}from"../core/policy/workflow-policy-store.js";import{parseTags}from"../core/item/parse.js";import{normalizeStatusInput}from"../core/item/status.js";import{serializeItemDocument}from"../core/item/item-format.js";import{getHistoryPath}from"../core/store/paths.js";import{removeFileIfExists,writeFileAtomic}from"../core/fs/fs-utils.js";import{runActiveOnWriteHooks}from"../core/extensions/index.js";import{EXIT_CODE}from"../core/shared/constants.js";import{PmCliError}from"../core/shared/errors.js";import{resolveAuthor}from"../core/shared/author.js";import{nowIso}from"../core/shared/time.js";import{assertInitializedTracker}from"./environment/tracker-preflight.js";function toNonEmptyImportString(value){if(typeof value!=="string"){return void 0}const trimmed=value.trim();return trimmed.length>0?trimmed:void 0}function toEstimatedMinutesValue(value){if(typeof value==="number"&&Number.isFinite(value)&&value>=0){return value}if(typeof value==="string"&&value.trim().length>0){const parsed=Number(value);if(Number.isFinite(parsed)&&parsed>=0){return parsed}}return void 0}function toImportPriority(value){if(typeof value==="number"&&Number.isInteger(value)&&value>=0&&value<=4){return value}if(typeof value==="string"&&value.trim().length>0){const parsed=Number(value);if(Number.isInteger(parsed)&&parsed>=0&&parsed<=4){return parsed}}return 2}function toImportTags(value){if(Array.isArray(value)){const tags=value.filter(entry=>typeof entry==="string").map(entry=>entry.trim().toLowerCase()).filter(entry=>entry.length>0);return Array.from(new Set(tags)).sort((left,right)=>left.localeCompare(right))}if(typeof value==="string"){return parseTags(value)}return[]}function toImportStatus(value){const normalized=toNonEmptyImportString(value);if(normalized){const canonical=normalizeStatusInput(normalized);if(canonical){return canonical}}return"open"}function toImportInteger(value){if(typeof value==="number"&&Number.isInteger(value)){return value}if(typeof value!=="string"||value.trim().length===0){return void 0}const parsed=Number(value);return Number.isInteger(parsed)?parsed:void 0}function toImportBoolean(value){if(typeof value==="boolean"){return value}if(typeof value==="number"){return value===1?true:value===0?false:void 0}if(typeof value!=="string"){return void 0}const normalized=value.trim().toLowerCase();if(normalized==="true"||normalized==="1"){return true}return normalized==="false"||normalized==="0"?false:void 0}function toImportStringList(value){if(!Array.isArray(value)){return void 0}const entries=value.map(entry=>toNonEmptyImportString(entry)).filter(entry=>entry!==void 0);return entries.length>0?entries:void 0}function toImportStringMap(value){return toImportValueMap(value,toNonEmptyImportString)}function toImportNumberMap(value){return toImportValueMap(value,toImportFiniteNumber)}function toImportConfidence(value,allowedTextValues){if(typeof value==="number"&&Number.isInteger(value)&&value>=0&&value<=100){return value}const normalized=toNonEmptyImportString(value)?.toLowerCase();if(!normalized){return void 0}const candidate=normalized==="med"?"medium":normalized;if(allowedTextValues.some(entry=>entry===candidate)){return candidate}const parsed=Number(candidate);return Number.isInteger(parsed)&&parsed>=0&&parsed<=100?parsed:void 0}function toImportNormalizedEnum(value,allowed){const normalized=toNonEmptyImportString(value)?.toLowerCase();if(!normalized){return void 0}const candidate=normalized==="med"?"medium":normalized;return allowed.includes(candidate)?candidate:void 0}function toImportLinkScope(value){return toNonEmptyImportString(value)?.toLowerCase()==="global"?"global":"project"}function toImportLogEntries(value,options){const values=normalizeImportCollection(value,options.allowScalar===true);if(!values){return void 0}const entries=values.map(entry=>toImportLogEntry(entry,options)).filter(entry=>entry!==void 0);return entries.length>0?entries:void 0}function toImportLinkedFiles(value,options={}){return toImportLinkedArtifacts(value,options,(pathValue,record)=>({path:pathValue,scope:toImportLinkScope(record?.scope),note:toNonEmptyImportString(record?.note)}))}function toImportLinkedDocs(value,options={}){return toImportLinkedArtifacts(value,options,(pathValue,record)=>({path:pathValue,scope:toImportLinkScope(record?.scope),note:toNonEmptyImportString(record?.note)}))}function toImportLinkedTests(value,options={}){const values=normalizeImportCollection(value,options.allowScalar===true);if(!values){return void 0}const entries=values.map(entry=>toImportLinkedTest(entry,options)).filter(entry=>entry!==void 0);return entries.length>0?entries:void 0}function selectImportAuthor(explicitAuthor,settingsAuthor){return resolveAuthor(explicitAuthor,settingsAuthor)}function isImportRecord(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)}function normalizeImportCollection(value,allowScalar){if(Array.isArray(value)){return value}return allowScalar?[value]:void 0}function firstNonEmptyImportString(record,keys){for(const key of keys){const value=toNonEmptyImportString(record[key]);if(value){return value}}return void 0}function toImportValueMap(value,coerce){if(!isImportRecord(value)){return void 0}const entries=Object.entries(value).map(([key,entryValue])=>[key.trim(),coerce(entryValue)]).filter(entry=>entry[0].length>0&&entry[1]!==void 0);return entries.length>0?Object.fromEntries(entries):void 0}function toImportLogEntry(entry,options){if(typeof entry==="string"){return toImportLogEntryFromText(entry,options)}if(!isImportRecord(entry)){return void 0}const text=firstNonEmptyImportString(entry,options.textKeys??["text"]);if(!text){return void 0}const createdAtKey=options.createdAtKey??"created_at";const authorKey=options.authorKey??"author";const createdAt=(options.toIsoString?options.toIsoString(entry[createdAtKey]):toNonEmptyImportString(entry[createdAtKey]))??options.fallbackCreatedAt;return{created_at:createdAt,author:toNonEmptyImportString(entry[authorKey])??options.fallbackAuthor,text}}function toImportLogEntryFromText(entry,options){const text=toNonEmptyImportString(entry);return text?{created_at:options.fallbackCreatedAt,author:options.fallbackAuthor,text}:void 0}function toImportLinkedArtifacts(value,options,build){const values=normalizeImportCollection(value,options.allowScalar===true);if(!values){return void 0}const pathKeys=options.pathKeys??["path"];const entries=values.map(entry=>toImportLinkedArtifact(entry,pathKeys,build)).filter(entry=>entry!==void 0);return entries.length>0?entries:void 0}function toImportLinkedArtifact(entry,pathKeys,build){if(typeof entry==="string"){const pathValue2=toNonEmptyImportString(entry);return pathValue2?build(pathValue2):void 0}if(!isImportRecord(entry)){return void 0}const pathValue=firstNonEmptyImportString(entry,pathKeys);return pathValue?build(pathValue,entry):void 0}function toImportLinkedTest(entry,options){if(typeof entry==="string"){const command2=toNonEmptyImportString(entry);return command2?{command:command2,scope:"project"}:void 0}if(!isImportRecord(entry)){return void 0}const command=firstNonEmptyImportString(entry,options.commandKeys??["command"]);const testPath=firstNonEmptyImportString(entry,options.pathKeys??["path"]);if(!command&&(options.requireCommand===true||!testPath)){return void 0}return{...command?{command}:{},...testPath?{path:testPath}:{},scope:toImportLinkScope(entry.scope),timeout_seconds:toImportLinkedTestTimeout(entry.timeout_seconds,options),note:toNonEmptyImportString(entry.note),...options.includeExtendedAssertions===true?toImportLinkedTestAssertions(entry):{}}}function toImportLinkedTestTimeout(value,options){const parsed=options.integerTimeout===true?toImportInteger(value):toImportFiniteNumber(value);if(parsed===void 0){return void 0}const minimum=options.timeoutMinimum??0;return options.timeoutExclusiveMinimum===true?parsed>minimum?parsed:void 0:parsed>=minimum?parsed:void 0}function toImportFiniteNumber(value){if(typeof value==="number"&&Number.isFinite(value)){return value}if(typeof value!=="string"||value.trim().length===0){return void 0}const parsed=Number(value);return Number.isFinite(parsed)?parsed:void 0}function toImportLinkedTestAssertions(entry){return{pm_context_mode:toImportNormalizedEnum(entry.pm_context_mode,["schema","tracker","auto"]),env_set:toImportStringMap(entry.env_set),env_clear:toImportStringList(entry.env_clear),shared_host_safe:toImportBoolean(entry.shared_host_safe),assert_stdout_contains:toImportStringList(entry.assert_stdout_contains),assert_stdout_regex:toImportStringList(entry.assert_stdout_regex),assert_stderr_contains:toImportStringList(entry.assert_stderr_contains),assert_stderr_regex:toImportStringList(entry.assert_stderr_regex),assert_stdout_min_lines:toImportInteger(entry.assert_stdout_min_lines),assert_json_field_equals:toImportStringMap(entry.assert_json_field_equals),assert_json_field_gte:toImportNumberMap(entry.assert_json_field_gte)}}async function ensureTrackerInitialized(pmRoot){await assertInitializedTracker(pmRoot)}function emptyImportedDocument(){return{metadata:{},body:""}}async function commitImportedItem(params){const{pmRoot,id,itemPath,document,author,message,settings,conflictWarningPrefix}=params;const historyPath=getHistoryPath(pmRoot,id);const beforeDocument=emptyImportedDocument();try{const releaseLock=await acquireLock(pmRoot,id,settings.locks.ttl_seconds,author,false,settings.governance.force_required_for_stale_lock,settings.locks.wait_ms);try{const workflowPolicy=await enforceWorkflowMutation({pmRoot,settings,operation:"import",author,before:null,after:document});await writeFileAtomic(itemPath,serializeItemDocument(document,{format:"toon"}));try{const entry=createHistoryEntry({nowIso:nowIso(),author,op:"import",before:beforeDocument,after:document,message,context:workflowPolicy.decisions.length===0?void 0:{workflow_policies:workflowPolicy.decisions}});await appendHistoryEntry(historyPath,entry);const writeWarnings=[...workflowPolicy.warnings,...await runActiveOnWriteHooks({path:itemPath,scope:"project",op:"import",item_id:document.metadata.id,item_type:document.metadata.type,before:beforeDocument,after:document,changed_fields:["imported"]}),...await runActiveOnWriteHooks({path:historyPath,scope:"project",op:"import:history",item_id:document.metadata.id,item_type:document.metadata.type,before:beforeDocument,after:document,changed_fields:["imported"]})];return{committed:true,writeWarnings}}catch(error){await removeFileIfExists(itemPath);throw error}}finally{await releaseLock()}}catch(error){if(error instanceof PmCliError&&error.exitCode===EXIT_CODE.CONFLICT&&!error.code?.startsWith("workflow_policy_")){return{committed:false,conflictWarning:`${conflictWarningPrefix}:${id}`}}throw error}}export{commitImportedItem,emptyImportedDocument,ensureTrackerInitialized,selectImportAuthor,toEstimatedMinutesValue,toImportBoolean,toImportConfidence,toImportInteger,toImportLinkScope,toImportLinkedDocs,toImportLinkedFiles,toImportLinkedTests,toImportLogEntries,toImportNormalizedEnum,toImportNumberMap,toImportPriority,toImportStatus,toImportStringList,toImportStringMap,toImportTags,toNonEmptyImportString};
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]="0f06f072-47a7-560e-9291-72e47225a73c")}catch{}})();import{appendHistoryEntry,createHistoryEntry}from"../core/history/history.js";import{acquireLock}from"../core/lock/lock.js";import{enforceWorkflowMutation}from"../core/policy/workflow-policy-store.js";import{parseTags}from"../core/item/parse.js";import{normalizeStatusInput}from"../core/item/status.js";import{serializeItemDocument}from"../core/item/item-format.js";import{getHistoryPath}from"../core/store/paths.js";import{removeFileIfExists,writeFileAtomic}from"../core/fs/fs-utils.js";import{runActiveOnWriteHooks}from"../core/extensions/index.js";import{EXIT_CODE}from"../core/shared/constants.js";import{PmCliError}from"../core/shared/errors.js";import{resolveAuthor}from"../core/shared/author.js";import{nowIso}from"../core/shared/time.js";import{assertInitializedTracker}from"./environment/tracker-preflight.js";function toNonEmptyImportString(value){if(typeof value!="string")return;const trimmed=value.trim();return trimmed.length>0?trimmed:void 0}function toEstimatedMinutesValue(value){if(typeof value=="number"&&Number.isFinite(value)&&value>=0)return value;if(typeof value=="string"&&value.trim().length>0){const parsed=Number(value);if(Number.isFinite(parsed)&&parsed>=0)return parsed}}function toImportPriority(value){if(typeof value=="number"&&Number.isInteger(value)&&value>=0&&value<=4)return value;if(typeof value=="string"&&value.trim().length>0){const parsed=Number(value);if(Number.isInteger(parsed)&&parsed>=0&&parsed<=4)return parsed}return 2}function toImportTags(value){if(Array.isArray(value)){const tags=value.filter(entry=>typeof entry=="string").map(entry=>entry.trim().toLowerCase()).filter(entry=>entry.length>0);return Array.from(new Set(tags)).sort((left,right)=>left.localeCompare(right))}return typeof value=="string"?parseTags(value):[]}function toImportStatus(value){const normalized=toNonEmptyImportString(value);if(normalized){const canonical=normalizeStatusInput(normalized);if(canonical)return canonical}return"open"}function toImportInteger(value){if(typeof value=="number"&&Number.isInteger(value))return value;if(typeof value!="string"||value.trim().length===0)return;const parsed=Number(value);return Number.isInteger(parsed)?parsed:void 0}function toImportBoolean(value){if(typeof value=="boolean")return value;if(typeof value=="number")return value===1?!0:value===0?!1:void 0;if(typeof value!="string")return;const normalized=value.trim().toLowerCase();return normalized==="true"||normalized==="1"?!0:normalized==="false"||normalized==="0"?!1:void 0}function toImportStringList(value){if(!Array.isArray(value))return;const entries=value.map(entry=>toNonEmptyImportString(entry)).filter(entry=>entry!==void 0);return entries.length>0?entries:void 0}function toImportStringMap(value){return toImportValueMap(value,toNonEmptyImportString)}function toImportNumberMap(value){return toImportValueMap(value,toImportFiniteNumber)}function toImportConfidence(value,allowedTextValues){if(typeof value=="number"&&Number.isInteger(value)&&value>=0&&value<=100)return value;const normalized=toNonEmptyImportString(value)?.toLowerCase();if(!normalized)return;const candidate=normalized==="med"?"medium":normalized;if(allowedTextValues.some(entry=>entry===candidate))return candidate;const parsed=Number(candidate);return Number.isInteger(parsed)&&parsed>=0&&parsed<=100?parsed:void 0}function toImportNormalizedEnum(value,allowed){const normalized=toNonEmptyImportString(value)?.toLowerCase();if(!normalized)return;const candidate=normalized==="med"?"medium":normalized;return allowed.includes(candidate)?candidate:void 0}function toImportLinkScope(value){return toNonEmptyImportString(value)?.toLowerCase()==="global"?"global":"project"}function toImportLogEntries(value,options){const values=normalizeImportCollection(value,options.allowScalar===!0);if(!values)return;const entries=values.map(entry=>toImportLogEntry(entry,options)).filter(entry=>entry!==void 0);return entries.length>0?entries:void 0}function toImportLinkedFiles(value,options={}){return toImportLinkedArtifacts(value,options,(pathValue,record)=>({path:pathValue,scope:toImportLinkScope(record?.scope),note:toNonEmptyImportString(record?.note)}))}function toImportLinkedDocs(value,options={}){return toImportLinkedArtifacts(value,options,(pathValue,record)=>({path:pathValue,scope:toImportLinkScope(record?.scope),note:toNonEmptyImportString(record?.note)}))}function toImportLinkedTests(value,options={}){const values=normalizeImportCollection(value,options.allowScalar===!0);if(!values)return;const entries=values.map(entry=>toImportLinkedTest(entry,options)).filter(entry=>entry!==void 0);return entries.length>0?entries:void 0}function selectImportAuthor(explicitAuthor,settingsAuthor){return resolveAuthor(explicitAuthor,settingsAuthor)}function isImportRecord(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function normalizeImportCollection(value,allowScalar){return Array.isArray(value)?value:allowScalar?[value]:void 0}function firstNonEmptyImportString(record,keys){for(const key of keys){const value=toNonEmptyImportString(record[key]);if(value)return value}}function toImportValueMap(value,coerce){if(!isImportRecord(value))return;const entries=Object.entries(value).map(([key,entryValue])=>[key.trim(),coerce(entryValue)]).filter(entry=>entry[0].length>0&&entry[1]!==void 0);return entries.length>0?Object.fromEntries(entries):void 0}function toImportLogEntry(entry,options){if(typeof entry=="string")return toImportLogEntryFromText(entry,options);if(!isImportRecord(entry))return;const text=firstNonEmptyImportString(entry,options.textKeys??["text"]);if(!text)return;const createdAtKey=options.createdAtKey??"created_at",authorKey=options.authorKey??"author";return{created_at:(options.toIsoString?options.toIsoString(entry[createdAtKey]):toNonEmptyImportString(entry[createdAtKey]))??options.fallbackCreatedAt,author:toNonEmptyImportString(entry[authorKey])??options.fallbackAuthor,text}}function toImportLogEntryFromText(entry,options){const text=toNonEmptyImportString(entry);return text?{created_at:options.fallbackCreatedAt,author:options.fallbackAuthor,text}:void 0}function toImportLinkedArtifacts(value,options,build){const values=normalizeImportCollection(value,options.allowScalar===!0);if(!values)return;const pathKeys=options.pathKeys??["path"],entries=values.map(entry=>toImportLinkedArtifact(entry,pathKeys,build)).filter(entry=>entry!==void 0);return entries.length>0?entries:void 0}function toImportLinkedArtifact(entry,pathKeys,build){if(typeof entry=="string"){const pathValue2=toNonEmptyImportString(entry);return pathValue2?build(pathValue2):void 0}if(!isImportRecord(entry))return;const pathValue=firstNonEmptyImportString(entry,pathKeys);return pathValue?build(pathValue,entry):void 0}function toImportLinkedTest(entry,options){if(typeof entry=="string"){const command2=toNonEmptyImportString(entry);return command2?{command:command2,scope:"project"}:void 0}if(!isImportRecord(entry))return;const command=firstNonEmptyImportString(entry,options.commandKeys??["command"]),testPath=firstNonEmptyImportString(entry,options.pathKeys??["path"]);if(!(!command&&(options.requireCommand===!0||!testPath)))return{...command?{command}:{},...testPath?{path:testPath}:{},scope:toImportLinkScope(entry.scope),timeout_seconds:toImportLinkedTestTimeout(entry.timeout_seconds,options),note:toNonEmptyImportString(entry.note),...options.includeExtendedAssertions===!0?toImportLinkedTestAssertions(entry):{}}}function toImportLinkedTestTimeout(value,options){const parsed=options.integerTimeout===!0?toImportInteger(value):toImportFiniteNumber(value);if(parsed===void 0)return;const minimum=options.timeoutMinimum??0;return options.timeoutExclusiveMinimum===!0?parsed>minimum?parsed:void 0:parsed>=minimum?parsed:void 0}function toImportFiniteNumber(value){if(typeof value=="number"&&Number.isFinite(value))return value;if(typeof value!="string"||value.trim().length===0)return;const parsed=Number(value);return Number.isFinite(parsed)?parsed:void 0}function toImportLinkedTestAssertions(entry){return{pm_context_mode:toImportNormalizedEnum(entry.pm_context_mode,["schema","tracker","auto"]),env_set:toImportStringMap(entry.env_set),env_clear:toImportStringList(entry.env_clear),shared_host_safe:toImportBoolean(entry.shared_host_safe),assert_stdout_contains:toImportStringList(entry.assert_stdout_contains),assert_stdout_regex:toImportStringList(entry.assert_stdout_regex),assert_stderr_contains:toImportStringList(entry.assert_stderr_contains),assert_stderr_regex:toImportStringList(entry.assert_stderr_regex),assert_stdout_min_lines:toImportInteger(entry.assert_stdout_min_lines),assert_json_field_equals:toImportStringMap(entry.assert_json_field_equals),assert_json_field_gte:toImportNumberMap(entry.assert_json_field_gte)}}async function ensureTrackerInitialized(pmRoot){await assertInitializedTracker(pmRoot)}function emptyImportedDocument(){return{metadata:{},body:""}}async function commitImportedItem(params){const{pmRoot,id,itemPath,document,author,message,settings,conflictWarningPrefix}=params,historyPath=getHistoryPath(pmRoot,id),beforeDocument=emptyImportedDocument();try{const releaseLock=await acquireLock(pmRoot,id,settings.locks.ttl_seconds,author,!1,settings.governance.force_required_for_stale_lock,settings.locks.wait_ms);try{const workflowPolicy=await enforceWorkflowMutation({pmRoot,settings,operation:"import",author,before:null,after:document});await writeFileAtomic(itemPath,serializeItemDocument(document,{format:"toon"}));try{const entry=createHistoryEntry({nowIso:nowIso(),author,op:"import",before:beforeDocument,after:document,message,context:workflowPolicy.decisions.length===0?void 0:{workflow_policies:workflowPolicy.decisions}});return await appendHistoryEntry(historyPath,entry),{committed:!0,writeWarnings:[...workflowPolicy.warnings,...await runActiveOnWriteHooks({path:itemPath,scope:"project",op:"import",item_id:document.metadata.id,item_type:document.metadata.type,before:beforeDocument,after:document,changed_fields:["imported"]}),...await runActiveOnWriteHooks({path:historyPath,scope:"project",op:"import:history",item_id:document.metadata.id,item_type:document.metadata.type,before:beforeDocument,after:document,changed_fields:["imported"]})]}}catch(error){throw await removeFileIfExists(itemPath),error}}finally{await releaseLock()}}catch(error){if(error instanceof PmCliError&&error.exitCode===EXIT_CODE.CONFLICT&&!error.code?.startsWith("workflow_policy_"))return{committed:!1,conflictWarning:`${conflictWarningPrefix}:${id}`};throw error}}export{commitImportedItem,emptyImportedDocument,ensureTrackerInitialized,selectImportAuthor,toEstimatedMinutesValue,toImportBoolean,toImportConfidence,toImportInteger,toImportLinkScope,toImportLinkedDocs,toImportLinkedFiles,toImportLinkedTests,toImportLogEntries,toImportNormalizedEnum,toImportNumberMap,toImportPriority,toImportStatus,toImportStringList,toImportStringMap,toImportTags,toNonEmptyImportString};
2
2
  //# sourceMappingURL=package-import-adapters.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]="14bbf3be-03a5-5ff3-888f-6e8b9a68ac73")}catch(e2){}})();import{PmClient}from"./runtime.js";function extensionMigrate(options={},clientOptions={}){return new PmClient(clientOptions).extension(void 0,{...options,migrate:true})}function packageMigrate(options={},clientOptions={}){return new PmClient(clientOptions).packageMigrate(options)}export{extensionMigrate,packageMigrate};
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]="68ca9ab1-91e0-5020-859e-fc1f1f6dcc56")}catch{}})();import{PmClient}from"./runtime.js";function extensionMigrate(options={},clientOptions={}){return new PmClient(clientOptions).extension(void 0,{...options,migrate:!0})}function packageMigrate(options={},clientOptions={}){return new PmClient(clientOptions).packageMigrate(options)}export{extensionMigrate,packageMigrate};
2
2
  //# sourceMappingURL=package-migrations.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]="4277a72c-f012-55d2-9e18-c9a836d829d6")}catch(e2){}})();const BOOLEAN_TRUE_VALUES=new Set(["true","1","yes","on"]);const BOOLEAN_FALSE_VALUES=new Set(["false","0","no","off"]);function readStringOption(options,key,aliases=[]){const keys=[key,...aliases];for(const candidate of keys){const value=options[candidate];if(typeof value==="string"&&value.trim().length>0){return value.trim()}}return void 0}function readBooleanOption(options,key,aliases=[]){const keys=[key,...aliases];for(const candidate of keys){const value=options[candidate];if(value===void 0){continue}if(typeof value==="boolean"){return value}if(typeof value==="string"){const normalized=value.trim().toLowerCase();if(BOOLEAN_TRUE_VALUES.has(normalized)){return true}if(BOOLEAN_FALSE_VALUES.has(normalized)){return false}}}return void 0}function readCsvListOption(options,key,aliases=[]){for(const candidate of[key,...aliases]){const value=options[candidate];const entries=typeof value==="string"?value.split(","):Array.isArray(value)?value.flatMap(entry=>typeof entry==="string"?entry.split(","):[]):[];const normalized=entries.map(entry=>entry.trim()).filter(entry=>entry.length>0);if(normalized.length>0){return normalized}}return[]}export{readBooleanOption,readCsvListOption,readStringOption};
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]="ba66cac9-25d6-559e-95d1-71db5c404807")}catch{}})();const BOOLEAN_TRUE_VALUES=new Set(["true","1","yes","on"]),BOOLEAN_FALSE_VALUES=new Set(["false","0","no","off"]);function readStringOption(options,key,aliases=[]){const keys=[key,...aliases];for(const candidate of keys){const value=options[candidate];if(typeof value=="string"&&value.trim().length>0)return value.trim()}}function readBooleanOption(options,key,aliases=[]){const keys=[key,...aliases];for(const candidate of keys){const value=options[candidate];if(value!==void 0){if(typeof value=="boolean")return value;if(typeof value=="string"){const normalized=value.trim().toLowerCase();if(BOOLEAN_TRUE_VALUES.has(normalized))return!0;if(BOOLEAN_FALSE_VALUES.has(normalized))return!1}}}}function readCsvListOption(options,key,aliases=[]){for(const candidate of[key,...aliases]){const value=options[candidate],normalized=(typeof value=="string"?value.split(","):Array.isArray(value)?value.flatMap(entry=>typeof entry=="string"?entry.split(","):[]):[]).map(entry=>entry.trim()).filter(entry=>entry.length>0);if(normalized.length>0)return normalized}return[]}export{readBooleanOption,readCsvListOption,readStringOption};
2
2
  //# sourceMappingURL=package-runtime-options.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]="43f9050c-5daa-57e3-bc5d-529216dd0ee7")}catch(e2){}})();import{READ_OUTPUT_DIMENSION_FLAGS,READ_OUTPUT_COMPOSITION_FLAGS}from"./read-output/options.js";import{createHash}from"node:crypto";import{PmCliError}from"../core/shared/errors.js";import{EXIT_CODE}from"../core/shared/constants.js";import{stableStringify}from"../core/shared/serialization.js";const QUERY_CURSOR_VERSION=1;const MAX_CURSOR_LENGTH=4096;const BASE64URL_PATTERN=/^[A-Za-z0-9_-]+$/;function optionKeyForFlag(flag){return flag.replace(/^--/u,"").replace(/[-_]([a-z0-9])/gu,(_,character)=>character.toUpperCase())}function selectCursorSemanticOptions(options,contracts){const universalFlags=[...Object.values(READ_OUTPUT_DIMENSION_FLAGS),...READ_OUTPUT_COMPOSITION_FLAGS];const presentationKeys=new Set(universalFlags.flatMap(flag=>[optionKeyForFlag(flag),flag.slice(2).replaceAll("-","_")]));for(const contract of contracts){if(contract.cursor_semantics==="presentation"){presentationKeys.add(optionKeyForFlag(contract.flag));for(const alias of contract.aliases??[]){presentationKeys.add(optionKeyForFlag(alias))}}}return Object.fromEntries(Object.entries(options).filter(([key])=>!presentationKeys.has(key)))}function createQueryFingerprint(command,contract){return createHash("sha256").update(command).update("\0").update(stableStringify(contract)).digest("hex").slice(0,24)}function encodeQueryCursor(fingerprint,afterId,afterIndex,snapshot){return Buffer.from(JSON.stringify({version:QUERY_CURSOR_VERSION,fingerprint,after_id:afterId,...afterIndex===void 0?{}:{after_index:afterIndex},...snapshot===void 0?{}:{snapshot}})).toString("base64url")}function invalidCursor(message){return new PmCliError(message,EXIT_CODE.USAGE,{code:"invalid_query_cursor",nextSteps:["Repeat the original query without --after to obtain a fresh cursor."]})}function isQueryCursorEnvelope(value){if(typeof value!=="object"||value===null||Array.isArray(value)){return false}const envelope=value;return envelope.version===QUERY_CURSOR_VERSION&&typeof envelope.fingerprint==="string"&&typeof envelope.after_id==="string"&&envelope.after_id.length>0&&(envelope.after_index===void 0||Number.isSafeInteger(envelope.after_index)&&envelope.after_index>=0)&&(envelope.snapshot===void 0||typeof envelope.snapshot==="string"&&envelope.snapshot.length>0)}function decodeQueryCursorEnvelope(cursor){if(typeof cursor!=="string"){throw invalidCursor("Query cursor is malformed.")}const normalized=cursor.trim();if(normalized.length===0||normalized.length>MAX_CURSOR_LENGTH||!BASE64URL_PATTERN.test(normalized)){throw invalidCursor("Query cursor is malformed.")}let parsed;try{parsed=JSON.parse(Buffer.from(normalized,"base64url").toString("utf8"))}catch{throw invalidCursor("Query cursor is malformed.")}if(!isQueryCursorEnvelope(parsed)){throw invalidCursor("Query cursor version or payload is unsupported.")}return parsed}function decodeQueryCursorState(cursor,expectedFingerprint){const envelope=decodeQueryCursorEnvelope(cursor);if(envelope.fingerprint!==expectedFingerprint){throw invalidCursor(`Query cursor does not match the current filters, sort, or query (${envelope.fingerprint} != ${expectedFingerprint}).`)}return{after_id:envelope.after_id,...envelope.after_index===void 0?{}:{after_index:envelope.after_index},...envelope.snapshot===void 0?{}:{snapshot:envelope.snapshot}}}function decodeQueryCursor(cursor,expectedFingerprint){return decodeQueryCursorState(cursor,expectedFingerprint).after_id}function resolveQueryCursorStart(rows,cursor,fingerprint,readId){if(cursor===void 0){return 0}const state=decodeQueryCursorState(cursor,fingerprint);const index=rows.findIndex(row=>readId(row)===state.after_id);if(index<0){if(state.after_index!==void 0){return Math.min(state.after_index,rows.length)}throw invalidCursor(`Query cursor item ${state.after_id} is no longer present in this result set.`)}return index+1}function paginateQueryRows(rows,options){if(options.cursor!==void 0&&decodeQueryCursorState(options.cursor,options.fingerprint).snapshot!==options.snapshot)throw invalidCursor("Query cursor does not match the requested snapshot.");const pageStart=resolveQueryCursorStart(rows,options.cursor,options.fingerprint,options.readId);const pageRows=rows.slice(pageStart,pageStart+options.limit);const hasMore=pageRows.length>0&&pageStart+pageRows.length<rows.length;const lastRow=pageRows.at(-1);return{rows:pageRows,has_more:hasMore,...hasMore&&lastRow!==void 0?{next_cursor:encodeQueryCursor(options.fingerprint,options.readId(lastRow),pageStart+pageRows.length-1,options.snapshot)}:{}}}const QUERY_CURSOR_CONTRACT=Object.freeze({version:QUERY_CURSOR_VERSION,max_length:MAX_CURSOR_LENGTH});export{QUERY_CURSOR_CONTRACT,createQueryFingerprint,decodeQueryCursor,decodeQueryCursorEnvelope,decodeQueryCursorState,encodeQueryCursor,paginateQueryRows,resolveQueryCursorStart,selectCursorSemanticOptions};
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]="d60ea0a7-96d4-5a22-92bd-ac64eece5a51")}catch{}})();import{READ_OUTPUT_DIMENSION_FLAGS,READ_OUTPUT_COMPOSITION_FLAGS}from"./read-output/options.js";import{createHash}from"node:crypto";import{PmCliError}from"../core/shared/errors.js";import{EXIT_CODE}from"../core/shared/constants.js";import{stableStringify}from"../core/shared/serialization.js";const QUERY_CURSOR_VERSION=1,MAX_CURSOR_LENGTH=4096,BASE64URL_PATTERN=/^[A-Za-z0-9_-]+$/;function optionKeyForFlag(flag){return flag.replace(/^--/u,"").replace(/[-_]([a-z0-9])/gu,(_,character)=>character.toUpperCase())}function selectCursorSemanticOptions(options,contracts){const universalFlags=[...Object.values(READ_OUTPUT_DIMENSION_FLAGS),...READ_OUTPUT_COMPOSITION_FLAGS],presentationKeys=new Set(universalFlags.flatMap(flag=>[optionKeyForFlag(flag),flag.slice(2).replaceAll("-","_")]));for(const contract of contracts)if(contract.cursor_semantics==="presentation"){presentationKeys.add(optionKeyForFlag(contract.flag));for(const alias of contract.aliases??[])presentationKeys.add(optionKeyForFlag(alias))}return Object.fromEntries(Object.entries(options).filter(([key])=>!presentationKeys.has(key)))}function createQueryFingerprint(command,contract){return createHash("sha256").update(command).update("\0").update(stableStringify(contract)).digest("hex").slice(0,24)}function encodeQueryCursor(fingerprint,afterId,afterIndex,snapshot){return Buffer.from(JSON.stringify({version:QUERY_CURSOR_VERSION,fingerprint,after_id:afterId,...afterIndex===void 0?{}:{after_index:afterIndex},...snapshot===void 0?{}:{snapshot}})).toString("base64url")}function invalidCursor(message){return new PmCliError(message,EXIT_CODE.USAGE,{code:"invalid_query_cursor",nextSteps:["Repeat the original query without --after to obtain a fresh cursor."]})}function isQueryCursorEnvelope(value){if(typeof value!="object"||value===null||Array.isArray(value))return!1;const envelope=value;return envelope.version===QUERY_CURSOR_VERSION&&typeof envelope.fingerprint=="string"&&typeof envelope.after_id=="string"&&envelope.after_id.length>0&&(envelope.after_index===void 0||Number.isSafeInteger(envelope.after_index)&&envelope.after_index>=0)&&(envelope.snapshot===void 0||typeof envelope.snapshot=="string"&&envelope.snapshot.length>0)}function decodeQueryCursorEnvelope(cursor){if(typeof cursor!="string")throw invalidCursor("Query cursor is malformed.");const normalized=cursor.trim();if(normalized.length===0||normalized.length>MAX_CURSOR_LENGTH||!BASE64URL_PATTERN.test(normalized))throw invalidCursor("Query cursor is malformed.");let parsed;try{parsed=JSON.parse(Buffer.from(normalized,"base64url").toString("utf8"))}catch{throw invalidCursor("Query cursor is malformed.")}if(!isQueryCursorEnvelope(parsed))throw invalidCursor("Query cursor version or payload is unsupported.");return parsed}function decodeQueryCursorState(cursor,expectedFingerprint){const envelope=decodeQueryCursorEnvelope(cursor);if(envelope.fingerprint!==expectedFingerprint)throw invalidCursor(`Query cursor does not match the current filters, sort, or query (${envelope.fingerprint} != ${expectedFingerprint}).`);return{after_id:envelope.after_id,...envelope.after_index===void 0?{}:{after_index:envelope.after_index},...envelope.snapshot===void 0?{}:{snapshot:envelope.snapshot}}}function decodeQueryCursor(cursor,expectedFingerprint){return decodeQueryCursorState(cursor,expectedFingerprint).after_id}function resolveQueryCursorStart(rows,cursor,fingerprint,readId){if(cursor===void 0)return 0;const state=decodeQueryCursorState(cursor,fingerprint),index=rows.findIndex(row=>readId(row)===state.after_id);if(index<0){if(state.after_index!==void 0)return Math.min(state.after_index,rows.length);throw invalidCursor(`Query cursor item ${state.after_id} is no longer present in this result set.`)}return index+1}function paginateQueryRows(rows,options){if(options.cursor!==void 0&&decodeQueryCursorState(options.cursor,options.fingerprint).snapshot!==options.snapshot)throw invalidCursor("Query cursor does not match the requested snapshot.");const pageStart=resolveQueryCursorStart(rows,options.cursor,options.fingerprint,options.readId),pageRows=rows.slice(pageStart,pageStart+options.limit),hasMore=pageRows.length>0&&pageStart+pageRows.length<rows.length,lastRow=pageRows.at(-1);return{rows:pageRows,has_more:hasMore,...hasMore&&lastRow!==void 0?{next_cursor:encodeQueryCursor(options.fingerprint,options.readId(lastRow),pageStart+pageRows.length-1,options.snapshot)}:{}}}const QUERY_CURSOR_CONTRACT=Object.freeze({version:QUERY_CURSOR_VERSION,max_length:MAX_CURSOR_LENGTH});export{QUERY_CURSOR_CONTRACT,createQueryFingerprint,decodeQueryCursor,decodeQueryCursorEnvelope,decodeQueryCursorState,encodeQueryCursor,paginateQueryRows,resolveQueryCursorStart,selectCursorSemanticOptions};
2
2
  //# sourceMappingURL=pagination.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]="5529deea-21db-509b-9562-d5e08dfc004a")}catch(e2){}})();import{assertInitializedTracker}from"./environment/tracker-preflight.js";import path from"node:path";import{readFileIfExists}from"../core/fs/fs-utils.js";import{writeWorkspaceJsonWithHistory}from"../core/history/workspace-history.js";import{acquireLock}from"../core/lock/lock.js";import{EXIT_CODE}from"../core/shared/constants.js";import{PmCliError}from"../core/shared/errors.js";import{resolveAuthor}from"../core/shared/author.js";import{nowIso}from"../core/shared/time.js";import{resolvePmRoot}from"../core/store/paths.js";import{readSettings,resolveGovernanceKnobs,writeSettings}from"../core/store/settings.js";import{DEFAULT_RUNTIME_SCHEMA_FILE_PATHS,filePathForSchemaSection,normalizeRuntimeSchemaSettings}from"../core/schema/runtime-schema.js";import{normalizeAddTypeInput,serializeItemTypesFile}from"../core/schema/item-types-file.js";import{serializeStatusDefsFile}from"../core/schema/status-defs-file.js";import{serializeFieldsFile}from"../core/schema/fields-file.js";import{resolveNestedSettingDescriptor,writeNestedSettingValue}from"../core/config/nested-settings.js";import{getActiveExtensionRegistrations,runActiveOnWriteHooks}from"../core/extensions/index.js";import{resolveProfileCatalog,resolveProfileEntry}from"../core/profile/profile-presets.js";import{describeProfileComposition,describeProjectProfile}from"../core/profile/profile-describe.js";import{lintProjectProfile}from"../core/profile/profile-lint.js";import{planProfileApplication}from"../core/profile/profile-plan.js";import{ensureTypeFolderScaffold}from"./schema.js";import{runTemplatesSave}from"./templates.js";const PROFILE_SUBCOMMANDS=["list","show","apply","lint"];const PROFILE_TYPES_LOCK_ID="schema-types";const PROFILE_STATUSES_LOCK_ID="schema-statuses";const PROFILE_FIELDS_LOCK_ID="schema-fields";function collectExtensionProfileContributions(){const registrations=getActiveExtensionRegistrations();if(registrations===null){return[]}return registrations.profiles.map(entry=>({name:entry.name,profile:entry.profile}))}function runProfileList(){const{profiles,warnings}=resolveProfileCatalog(collectExtensionProfileContributions());return{action:"list",profiles:profiles.map(resolved=>({name:resolved.definition.name,title:resolved.definition.title,summary:resolved.definition.summary,source:resolved.source,...resolved.package!==void 0?{package:resolved.package}:{},composition:describeProfileComposition(resolved.definition)})),warnings,generated_at:nowIso()}}function runProfileShow(name){let entry;try{entry=resolveProfileEntry(name,collectExtensionProfileContributions())}catch(error){throw new PmCliError(error instanceof Error?error.message:String(error),EXIT_CODE.USAGE)}const{resolved}=entry;return{action:"show",...describeProjectProfile(resolved.definition),source:resolved.source,...resolved.package!==void 0?{package:resolved.package}:{},warnings:entry.warnings,generated_at:nowIso()}}function runProfileLint(name){let entry;try{entry=resolveProfileEntry(name,collectExtensionProfileContributions())}catch(error){throw new PmCliError(error instanceof Error?error.message:String(error),EXIT_CODE.USAGE)}const{resolved}=entry;const report=lintProjectProfile(resolved.definition);return{action:"lint",name:resolved.definition.name,title:resolved.definition.title,source:resolved.source,...resolved.package!==void 0?{package:resolved.package}:{},ok:report.ok,error_count:report.errorCount,warning_count:report.warningCount,findings:report.findings,warnings:entry.warnings,generated_at:nowIso()}}function templateFilePath(pmRoot,name){return path.join(pmRoot,"templates",`${name}.json`)}async function readStoredTemplateOptions(pmRoot,name){const raw=await readFileIfExists(templateFilePath(pmRoot,name));if(raw===null){return void 0}try{const parsed=JSON.parse(raw);if(parsed!==null&&typeof parsed==="object"&&!Array.isArray(parsed)){const options=parsed.options;if(options!==null&&typeof options==="object"&&!Array.isArray(options)){return options}}}catch{}return void 0}async function loadProfileCurrentState(pmRoot,schema,settings,profile){const templates=new Map;for(const template of profile.templates){const stored=await readStoredTemplateOptions(pmRoot,template.name);if(stored!==void 0){templates.set(template.name,stored)}}return{typesRaw:await readFileIfExists(filePathForSchemaSection(pmRoot,schema.files.types,DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.types)),statusesRaw:await readFileIfExists(filePathForSchemaSection(pmRoot,schema.files.statuses,DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.statuses)),fieldsRaw:await readFileIfExists(filePathForSchemaSection(pmRoot,schema.files.fields,DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.fields)),workflows:settings.schema.type_workflows??[],settings,templates,installedPackages:new Set}}function dimensionFrom(changes){const added=[];const updated=[];const unchanged=[];for(const change of changes){(change.status==="add"?added:change.status==="update"?updated:unchanged).push(change.key)}return{added,updated,unchanged}}function buildApplyResult(profile,plan,applied,dryRun,warnings){return{action:"apply",name:profile.name,title:profile.title,applied,dry_run:dryRun,changed:plan.changed,types:dimensionFrom(plan.types.changes),statuses:dimensionFrom(plan.statuses.changes),fields:dimensionFrom(plan.fields.changes),workflows:dimensionFrom(plan.workflows.changes.map(change=>({key:change.type,status:change.status}))),config:dimensionFrom(plan.config.changes),templates:dimensionFrom(plan.templates.changes.map(change=>({key:change.name,status:change.status}))),packages:plan.packages,warnings:[...new Set(warnings)].sort((left,right)=>left.localeCompare(right)),generated_at:nowIso()}}async function assertProfileTrackerInitialized(pmRoot){await assertInitializedTracker(pmRoot)}function resolveProfileForCommand(name){try{const entry=resolveProfileEntry(name,collectExtensionProfileContributions());return{profile:entry.resolved.definition,warnings:entry.warnings}}catch(error){throw new PmCliError(error instanceof Error?error.message:String(error),EXIT_CODE.USAGE)}}async function runProfileApply(name,options,global2){const pmRoot=resolvePmRoot(process.cwd(),global2.path);await assertProfileTrackerInitialized(pmRoot);const resolvedProfile=resolveProfileForCommand(name);const profile=resolvedProfile.profile;const mergeWarnings=resolvedProfile.warnings;const dryRun=options.dryRun===true;const settings=await readSettings(pmRoot);const schema=normalizeRuntimeSchemaSettings(settings.schema);if(dryRun){const state=await loadProfileCurrentState(pmRoot,schema,settings,profile);const plan2=planProfile(profile,state);return buildApplyResult(profile,plan2,false,true,[...mergeWarnings])}const author=resolveAuthor(options.author,settings.author_default);const governance=resolveGovernanceKnobs(settings);const force=Boolean(options.force);const warnings=[...mergeWarnings];const releasers=[];const acquire=async lockId=>{releasers.push(await acquireLock(pmRoot,lockId,settings.locks.ttl_seconds,author,force,governance.force_required_for_stale_lock,settings.locks.wait_ms))};let plan;try{await acquire(PROFILE_TYPES_LOCK_ID);await acquire(PROFILE_STATUSES_LOCK_ID);await acquire(PROFILE_FIELDS_LOCK_ID);const state=await loadProfileCurrentState(pmRoot,schema,settings,profile);plan=planProfile(profile,state);if(plan.types.changed){const typesPath=filePathForSchemaSection(pmRoot,schema.files.types,DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.types);await writeWorkspaceJsonWithHistory({pmRoot,filePath:typesPath,raw:serializeItemTypesFile(plan.types.file),op:"profile:apply-types",author,lockTtlSeconds:settings.locks.ttl_seconds,lockWaitMs:settings.locks.wait_ms});const stagedNames=new Set(profile.types.map(type=>normalizeAddTypeInput(type).name));const stagedDefinitions=plan.types.file.definitions.filter(definition=>stagedNames.has(definition.name));await ensureTypeFolderScaffold(pmRoot,stagedDefinitions,warnings,"profile:apply-type-folder");warnings.push(...await runActiveOnWriteHooks({path:typesPath,scope:"project",op:"profile:apply-types"}))}if(plan.statuses.changed){const statusesPath=filePathForSchemaSection(pmRoot,schema.files.statuses,DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.statuses);await writeWorkspaceJsonWithHistory({pmRoot,filePath:statusesPath,raw:serializeStatusDefsFile(plan.statuses.file),op:"profile:apply-statuses",author,lockTtlSeconds:settings.locks.ttl_seconds,lockWaitMs:settings.locks.wait_ms});warnings.push(...await runActiveOnWriteHooks({path:statusesPath,scope:"project",op:"profile:apply-statuses"}))}if(plan.fields.changed){const fieldsPath=filePathForSchemaSection(pmRoot,schema.files.fields,DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.fields);await writeWorkspaceJsonWithHistory({pmRoot,filePath:fieldsPath,raw:serializeFieldsFile(plan.fields.file),op:"profile:apply-fields",author,lockTtlSeconds:settings.locks.ttl_seconds,lockWaitMs:settings.locks.wait_ms});warnings.push(...await runActiveOnWriteHooks({path:fieldsPath,scope:"project",op:"profile:apply-fields"}))}if(plan.config.changed||plan.workflows.changed){for(const change of plan.config.changes){if(change.status==="unchanged"){continue}const descriptor=resolveNestedSettingDescriptor(change.key);if(descriptor!==void 0){writeNestedSettingValue(settings,descriptor,change.value)}}settings.schema.type_workflows=plan.workflows.result;await writeSettings(pmRoot,settings,"profile:apply-config")}for(const change of plan.templates.changes){if(change.status==="unchanged"){continue}await runTemplatesSave(change.name,{...change.options},global2)}}finally{for(const release of releasers.reverse()){try{await release()}catch{}}}return buildApplyResult(profile,plan,plan.changed,false,warnings)}function planProfile(profile,state){try{return planProfileApplication(profile,state)}catch(error){throw new PmCliError(error instanceof Error?error.message:String(error),EXIT_CODE.USAGE)}}function formatDimensionLine(label,dimension){const segments=[];if(dimension.added.length>0){segments.push(`+${dimension.added.join(", ")}`)}if(dimension.updated.length>0){segments.push(`~${dimension.updated.join(", ")}`)}if(segments.length===0){return void 0}return` ${label}: ${segments.join(" ")}`}function formatProfileListHuman(result){const lines=["Project profiles:"];for(const profile of result.profiles){const origin=profile.source==="extension"?` [${profile.package??"extension"}]`:"";lines.push(` ${profile.name} \u2014 ${profile.title}: ${profile.summary}${origin}`)}for(const warning of result.warnings){lines.push(` warning: ${warning}`)}return lines.join("\n")}function formatProfileShowHuman(result){const origin=result.source==="extension"?` [${result.package??"extension"}]`:"";const lines=[`${result.name} \u2014 ${result.title}${origin}`,result.summary,""];lines.push(`types: ${result.types.join(", ")||"(none)"}`);lines.push(`statuses: ${result.statuses.join(", ")||"(none)"}`);lines.push(`fields: ${result.fields.join(", ")||"(none)"}`);lines.push(`workflows: ${result.workflows.join(", ")||"(none)"}`);lines.push(`config: ${result.config.join(", ")||"(none)"}`);lines.push(`templates: ${result.templates.join(", ")||"(none)"}`);lines.push(`packages: ${result.packages.map(pkg=>pkg.spec).join(", ")||"(none)"}`);for(const warning of result.warnings){lines.push(`warning: ${warning}`)}return lines.join("\n")}function formatProfileLintHuman(result){const origin=result.source==="extension"?` [${result.package??"extension"}]`:"";const totalWarningCount=result.warning_count+result.warnings.length;const verdict=result.ok?`Profile ${result.name}${origin}: ok (${totalWarningCount} warning${totalWarningCount===1?"":"s"})`:`Profile ${result.name}${origin}: ${result.error_count} error${result.error_count===1?"":"s"}, ${totalWarningCount} warning${totalWarningCount===1?"":"s"}`;const lines=[verdict];for(const finding of result.findings){const target=finding.target!==void 0?` (${finding.target})`:"";lines.push(` ${finding.severity} [${finding.code}] ${finding.dimension}${target}: ${finding.message}`)}for(const warning of result.warnings){lines.push(` warning: ${warning}`)}return lines.join("\n")}function formatProfileApplyHuman(result){const mode=result.dry_run?"dry-run":result.applied?"applied":"no changes";const lines=[`Profile ${result.name} (${mode})`];if(!result.changed){lines.push(" already up to date")}else{for(const[label,dimension]of[["types",result.types],["statuses",result.statuses],["fields",result.fields],["workflows",result.workflows],["config",result.config],["templates",result.templates]]){const line=formatDimensionLine(label,dimension);if(line!==void 0){lines.push(line)}}}const recommended=result.packages.filter(pkg=>pkg.status==="recommended");if(recommended.length>0){lines.push(` recommended packages: ${recommended.map(pkg=>pkg.spec).join(", ")}`)}for(const warning of result.warnings){lines.push(` warning: ${warning}`)}return lines.join("\n")}export{PROFILE_SUBCOMMANDS,formatProfileApplyHuman,formatProfileLintHuman,formatProfileListHuman,formatProfileShowHuman,runProfileApply,runProfileLint,runProfileList,runProfileShow};
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]="aa4e2ff3-dc3b-5688-bf40-bdd71c65320b")}catch{}})();import{assertInitializedTracker}from"./environment/tracker-preflight.js";import path from"node:path";import{readFileIfExists}from"../core/fs/fs-utils.js";import{writeWorkspaceJsonWithHistory}from"../core/history/workspace-history.js";import{acquireLock}from"../core/lock/lock.js";import{EXIT_CODE}from"../core/shared/constants.js";import{PmCliError}from"../core/shared/errors.js";import{resolveAuthor}from"../core/shared/author.js";import{nowIso}from"../core/shared/time.js";import{resolvePmRoot}from"../core/store/paths.js";import{readSettings,resolveGovernanceKnobs,writeSettings}from"../core/store/settings.js";import{DEFAULT_RUNTIME_SCHEMA_FILE_PATHS,filePathForSchemaSection,normalizeRuntimeSchemaSettings}from"../core/schema/runtime-schema.js";import{normalizeAddTypeInput,serializeItemTypesFile}from"../core/schema/item-types-file.js";import{serializeStatusDefsFile}from"../core/schema/status-defs-file.js";import{serializeFieldsFile}from"../core/schema/fields-file.js";import{resolveNestedSettingDescriptor,writeNestedSettingValue}from"../core/config/nested-settings.js";import{getActiveExtensionRegistrations,runActiveOnWriteHooks}from"../core/extensions/index.js";import{resolveProfileCatalog,resolveProfileEntry}from"../core/profile/profile-presets.js";import{describeProfileComposition,describeProjectProfile}from"../core/profile/profile-describe.js";import{lintProjectProfile}from"../core/profile/profile-lint.js";import{planProfileApplication}from"../core/profile/profile-plan.js";import{ensureTypeFolderScaffold}from"./schema.js";import{runTemplatesSave}from"./templates.js";const PROFILE_SUBCOMMANDS=["list","show","apply","lint"],PROFILE_TYPES_LOCK_ID="schema-types",PROFILE_STATUSES_LOCK_ID="schema-statuses",PROFILE_FIELDS_LOCK_ID="schema-fields";function collectExtensionProfileContributions(){const registrations=getActiveExtensionRegistrations();return registrations===null?[]:registrations.profiles.map(entry=>({name:entry.name,profile:entry.profile}))}function runProfileList(){const{profiles,warnings}=resolveProfileCatalog(collectExtensionProfileContributions());return{action:"list",profiles:profiles.map(resolved=>({name:resolved.definition.name,title:resolved.definition.title,summary:resolved.definition.summary,source:resolved.source,...resolved.package!==void 0?{package:resolved.package}:{},composition:describeProfileComposition(resolved.definition)})),warnings,generated_at:nowIso()}}function runProfileShow(name){let entry;try{entry=resolveProfileEntry(name,collectExtensionProfileContributions())}catch(error){throw new PmCliError(error instanceof Error?error.message:String(error),EXIT_CODE.USAGE)}const{resolved}=entry;return{action:"show",...describeProjectProfile(resolved.definition),source:resolved.source,...resolved.package!==void 0?{package:resolved.package}:{},warnings:entry.warnings,generated_at:nowIso()}}function runProfileLint(name){let entry;try{entry=resolveProfileEntry(name,collectExtensionProfileContributions())}catch(error){throw new PmCliError(error instanceof Error?error.message:String(error),EXIT_CODE.USAGE)}const{resolved}=entry,report=lintProjectProfile(resolved.definition);return{action:"lint",name:resolved.definition.name,title:resolved.definition.title,source:resolved.source,...resolved.package!==void 0?{package:resolved.package}:{},ok:report.ok,error_count:report.errorCount,warning_count:report.warningCount,findings:report.findings,warnings:entry.warnings,generated_at:nowIso()}}function templateFilePath(pmRoot,name){return path.join(pmRoot,"templates",`${name}.json`)}async function readStoredTemplateOptions(pmRoot,name){const raw=await readFileIfExists(templateFilePath(pmRoot,name));if(raw!==null)try{const parsed=JSON.parse(raw);if(parsed!==null&&typeof parsed=="object"&&!Array.isArray(parsed)){const options=parsed.options;if(options!==null&&typeof options=="object"&&!Array.isArray(options))return options}}catch{}}async function loadProfileCurrentState(pmRoot,schema,settings,profile){const templates=new Map;for(const template of profile.templates){const stored=await readStoredTemplateOptions(pmRoot,template.name);stored!==void 0&&templates.set(template.name,stored)}return{typesRaw:await readFileIfExists(filePathForSchemaSection(pmRoot,schema.files.types,DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.types)),statusesRaw:await readFileIfExists(filePathForSchemaSection(pmRoot,schema.files.statuses,DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.statuses)),fieldsRaw:await readFileIfExists(filePathForSchemaSection(pmRoot,schema.files.fields,DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.fields)),workflows:settings.schema.type_workflows??[],settings,templates,installedPackages:new Set}}function dimensionFrom(changes){const added=[],updated=[],unchanged=[];for(const change of changes)(change.status==="add"?added:change.status==="update"?updated:unchanged).push(change.key);return{added,updated,unchanged}}function buildApplyResult(profile,plan,applied,dryRun,warnings){return{action:"apply",name:profile.name,title:profile.title,applied,dry_run:dryRun,changed:plan.changed,types:dimensionFrom(plan.types.changes),statuses:dimensionFrom(plan.statuses.changes),fields:dimensionFrom(plan.fields.changes),workflows:dimensionFrom(plan.workflows.changes.map(change=>({key:change.type,status:change.status}))),config:dimensionFrom(plan.config.changes),templates:dimensionFrom(plan.templates.changes.map(change=>({key:change.name,status:change.status}))),packages:plan.packages,warnings:[...new Set(warnings)].sort((left,right)=>left.localeCompare(right)),generated_at:nowIso()}}async function assertProfileTrackerInitialized(pmRoot){await assertInitializedTracker(pmRoot)}function resolveProfileForCommand(name){try{const entry=resolveProfileEntry(name,collectExtensionProfileContributions());return{profile:entry.resolved.definition,warnings:entry.warnings}}catch(error){throw new PmCliError(error instanceof Error?error.message:String(error),EXIT_CODE.USAGE)}}async function runProfileApply(name,options,global2){const pmRoot=resolvePmRoot(process.cwd(),global2.path);await assertProfileTrackerInitialized(pmRoot);const resolvedProfile=resolveProfileForCommand(name),profile=resolvedProfile.profile,mergeWarnings=resolvedProfile.warnings,dryRun=options.dryRun===!0,settings=await readSettings(pmRoot),schema=normalizeRuntimeSchemaSettings(settings.schema);if(dryRun){const state=await loadProfileCurrentState(pmRoot,schema,settings,profile),plan2=planProfile(profile,state);return buildApplyResult(profile,plan2,!1,!0,[...mergeWarnings])}const author=resolveAuthor(options.author,settings.author_default),governance=resolveGovernanceKnobs(settings),force=!!options.force,warnings=[...mergeWarnings],releasers=[],acquire=async lockId=>{releasers.push(await acquireLock(pmRoot,lockId,settings.locks.ttl_seconds,author,force,governance.force_required_for_stale_lock,settings.locks.wait_ms))};let plan;try{await acquire(PROFILE_TYPES_LOCK_ID),await acquire(PROFILE_STATUSES_LOCK_ID),await acquire(PROFILE_FIELDS_LOCK_ID);const state=await loadProfileCurrentState(pmRoot,schema,settings,profile);if(plan=planProfile(profile,state),plan.types.changed){const typesPath=filePathForSchemaSection(pmRoot,schema.files.types,DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.types);await writeWorkspaceJsonWithHistory({pmRoot,filePath:typesPath,raw:serializeItemTypesFile(plan.types.file),op:"profile:apply-types",author,lockTtlSeconds:settings.locks.ttl_seconds,lockWaitMs:settings.locks.wait_ms});const stagedNames=new Set(profile.types.map(type=>normalizeAddTypeInput(type).name)),stagedDefinitions=plan.types.file.definitions.filter(definition=>stagedNames.has(definition.name));await ensureTypeFolderScaffold(pmRoot,stagedDefinitions,warnings,"profile:apply-type-folder"),warnings.push(...await runActiveOnWriteHooks({path:typesPath,scope:"project",op:"profile:apply-types"}))}if(plan.statuses.changed){const statusesPath=filePathForSchemaSection(pmRoot,schema.files.statuses,DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.statuses);await writeWorkspaceJsonWithHistory({pmRoot,filePath:statusesPath,raw:serializeStatusDefsFile(plan.statuses.file),op:"profile:apply-statuses",author,lockTtlSeconds:settings.locks.ttl_seconds,lockWaitMs:settings.locks.wait_ms}),warnings.push(...await runActiveOnWriteHooks({path:statusesPath,scope:"project",op:"profile:apply-statuses"}))}if(plan.fields.changed){const fieldsPath=filePathForSchemaSection(pmRoot,schema.files.fields,DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.fields);await writeWorkspaceJsonWithHistory({pmRoot,filePath:fieldsPath,raw:serializeFieldsFile(plan.fields.file),op:"profile:apply-fields",author,lockTtlSeconds:settings.locks.ttl_seconds,lockWaitMs:settings.locks.wait_ms}),warnings.push(...await runActiveOnWriteHooks({path:fieldsPath,scope:"project",op:"profile:apply-fields"}))}if(plan.config.changed||plan.workflows.changed){for(const change of plan.config.changes){if(change.status==="unchanged")continue;const descriptor=resolveNestedSettingDescriptor(change.key);descriptor!==void 0&&writeNestedSettingValue(settings,descriptor,change.value)}settings.schema.type_workflows=plan.workflows.result,await writeSettings(pmRoot,settings,"profile:apply-config")}for(const change of plan.templates.changes)change.status!=="unchanged"&&await runTemplatesSave(change.name,{...change.options},global2)}finally{for(const release of releasers.reverse())try{await release()}catch{}}return buildApplyResult(profile,plan,plan.changed,!1,warnings)}function planProfile(profile,state){try{return planProfileApplication(profile,state)}catch(error){throw new PmCliError(error instanceof Error?error.message:String(error),EXIT_CODE.USAGE)}}function formatDimensionLine(label,dimension){const segments=[];if(dimension.added.length>0&&segments.push(`+${dimension.added.join(", ")}`),dimension.updated.length>0&&segments.push(`~${dimension.updated.join(", ")}`),segments.length!==0)return` ${label}: ${segments.join(" ")}`}function formatProfileListHuman(result){const lines=["Project profiles:"];for(const profile of result.profiles){const origin=profile.source==="extension"?` [${profile.package??"extension"}]`:"";lines.push(` ${profile.name} \u2014 ${profile.title}: ${profile.summary}${origin}`)}for(const warning of result.warnings)lines.push(` warning: ${warning}`);return lines.join(`
2
+ `)}function formatProfileShowHuman(result){const origin=result.source==="extension"?` [${result.package??"extension"}]`:"",lines=[`${result.name} \u2014 ${result.title}${origin}`,result.summary,""];lines.push(`types: ${result.types.join(", ")||"(none)"}`),lines.push(`statuses: ${result.statuses.join(", ")||"(none)"}`),lines.push(`fields: ${result.fields.join(", ")||"(none)"}`),lines.push(`workflows: ${result.workflows.join(", ")||"(none)"}`),lines.push(`config: ${result.config.join(", ")||"(none)"}`),lines.push(`templates: ${result.templates.join(", ")||"(none)"}`),lines.push(`packages: ${result.packages.map(pkg=>pkg.spec).join(", ")||"(none)"}`);for(const warning of result.warnings)lines.push(`warning: ${warning}`);return lines.join(`
3
+ `)}function formatProfileLintHuman(result){const origin=result.source==="extension"?` [${result.package??"extension"}]`:"",totalWarningCount=result.warning_count+result.warnings.length,lines=[result.ok?`Profile ${result.name}${origin}: ok (${totalWarningCount} warning${totalWarningCount===1?"":"s"})`:`Profile ${result.name}${origin}: ${result.error_count} error${result.error_count===1?"":"s"}, ${totalWarningCount} warning${totalWarningCount===1?"":"s"}`];for(const finding of result.findings){const target=finding.target!==void 0?` (${finding.target})`:"";lines.push(` ${finding.severity} [${finding.code}] ${finding.dimension}${target}: ${finding.message}`)}for(const warning of result.warnings)lines.push(` warning: ${warning}`);return lines.join(`
4
+ `)}function formatProfileApplyHuman(result){const mode=result.dry_run?"dry-run":result.applied?"applied":"no changes",lines=[`Profile ${result.name} (${mode})`];if(!result.changed)lines.push(" already up to date");else for(const[label,dimension]of[["types",result.types],["statuses",result.statuses],["fields",result.fields],["workflows",result.workflows],["config",result.config],["templates",result.templates]]){const line=formatDimensionLine(label,dimension);line!==void 0&&lines.push(line)}const recommended=result.packages.filter(pkg=>pkg.status==="recommended");recommended.length>0&&lines.push(` recommended packages: ${recommended.map(pkg=>pkg.spec).join(", ")}`);for(const warning of result.warnings)lines.push(` warning: ${warning}`);return lines.join(`
5
+ `)}export{PROFILE_SUBCOMMANDS,formatProfileApplyHuman,formatProfileLintHuman,formatProfileListHuman,formatProfileShowHuman,runProfileApply,runProfileLint,runProfileList,runProfileShow};
2
6
  //# sourceMappingURL=profile.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]="2e7a7f40-523d-590f-8aea-90b65535506e")}catch(e2){}})();import{AGENT_PROVENANCE_DIMENSIONS,BUILTIN_HARNESS_SIGNAL_DESCRIPTORS}from"../core/shared/author.js";function resolveHistoryEpisodeGroupIdentity(entry){if(entry.agent_episode!==void 0){return{id:entry.agent_episode.id,source:"declared"}}return{id:entry.agent_instance?`inferred:instance:${entry.agent_instance}`:`inferred:author:${entry.author}:${entry.ts.slice(0,13)}`,source:"inferred"}}function episodeParentIsAcyclic(group,parent,declaredGroups){let cursor=parent;const seen=new Set([group.id]);while(cursor!==void 0&&!seen.has(cursor.id)){seen.add(cursor.id);cursor=cursor.parent_id?declaredGroups.get(cursor.parent_id):void 0}return cursor===void 0}function sortAgentEpisodeForest(roots){const pending=[roots];while(pending.length>0){const values=pending.pop();values.sort((left,right)=>left.entries[0].ts.localeCompare(right.entries[0].ts)||left.id.localeCompare(right.id));pending.push(...values.map(value=>value.children))}}function analyzeAgentProvenanceDescriptorCoverage(descriptors=BUILTIN_HARNESS_SIGNAL_DESCRIPTORS,dimensions=AGENT_PROVENANCE_DIMENSIONS){return dimensions.map(dimension=>{const harnesses=descriptors.filter(descriptor=>{const keys=dimension==="model"?descriptor.model_environment_keys:descriptor.provenance_environment_keys?.[dimension];return(keys?.length??0)>0||descriptor.provenance_resolvers?.[dimension]!==void 0}).map(descriptor=>descriptor.harness).sort();return{dimension,harnesses,covered:harnesses.length>0}})}function summarizeAgentModelProvenance(entries,minimumExplicitSample=1){const byHarness=new Map;for(const entry of entries){if(!entry.agent_harness)continue;const row=byHarness.get(entry.agent_harness)??{harness:entry.agent_harness,entries:0,observed:0,unavailable:0,legacy_missing:0};row.entries+=1;if(entry.agent_model||entry.agent_provenance?.model&&entry.agent_provenance.model.value.length>0){row.observed+=1}else if(entry.agent_provenance?.model===null){row.unavailable+=1}else{row.legacy_missing+=1}byHarness.set(entry.agent_harness,row)}return[...byHarness.values()].map(row=>{const explicit=row.observed+row.unavailable;return{...row,coverage:explicit===0?null:row.observed/explicit,inert:explicit>=minimumExplicitSample&&row.observed===0}}).sort((left,right)=>left.harness.localeCompare(right.harness))}function summarizeAgentProvenance(entries,dimensions=AGENT_PROVENANCE_DIMENSIONS,minimumExplicitSample=1){const rows=new Map;for(const entry of entries){if(!entry.agent_harness)continue;for(const dimension of dimensions){const key=`${entry.agent_harness}\0${dimension}`;const row=rows.get(key)??{harness:entry.agent_harness,dimension,entries:0,observed:0,unavailable:0,legacy_missing:0};row.entries+=1;const observation=entry.agent_provenance?.[dimension];if(observation!==void 0&&observation!==null&&observation.value.length>0){row.observed+=1}else if(observation===null){row.unavailable+=1}else{row.legacy_missing+=1}rows.set(key,row)}}return[...rows.values()].map(row=>{const explicit=row.observed+row.unavailable;return{...row,coverage:explicit===0?null:row.observed/explicit,inert:explicit>=minimumExplicitSample&&row.observed===0}}).sort((left,right)=>left.harness.localeCompare(right.harness)||left.dimension.localeCompare(right.dimension))}function evaluateSemanticAttributionCoverage(entries,options={}){const minimumCoverage=options.minimumCoverage??.8;const minimumEntries=options.minimumEntries??5;if(![Number.isFinite(minimumCoverage),minimumCoverage>=0,minimumCoverage<=1].every(Boolean)){throw new RangeError("Semantic attribution minimum coverage must be from 0 to 1.")}if(![Number.isSafeInteger(minimumEntries),minimumEntries>=1].every(Boolean)){throw new RangeError("Semantic attribution minimum entries must be a positive integer.")}const rows=new Map;for(const entry of entries){if(!entry.agent_harness)continue;for(const dimension of["role","topic"]){const key=`${entry.agent_harness}\0${dimension}`;const row=rows.get(key)??{harness:entry.agent_harness,dimension,entries:0,observed:0,by_source:{},coverage:0};row.entries+=1;const observation=entry.agent_provenance?.[dimension];if(observation?.value){row.observed+=1;row.by_source[observation.source]=(row.by_source[observation.source]??0)+1}rows.set(key,row)}}const ordered=[...rows.values()].map(row=>({...row,coverage:row.observed/row.entries,by_source:Object.fromEntries(Object.entries(row.by_source).sort(([left],[right])=>left.localeCompare(right)))})).sort((left,right)=>left.harness.localeCompare(right.harness)||left.dimension.localeCompare(right.dimension));const eligible=ordered.filter(row=>row.entries>=minimumEntries);const failures=eligible.filter(row=>row.coverage<minimumCoverage).map(row=>`${row.harness}:${row.dimension}`);return{passed:eligible.length>0&&failures.length===0,minimum_coverage:minimumCoverage,minimum_entries:minimumEntries,rows:ordered,failures}}function groupHistoryByEpisode(entries){const sorted=[...entries].sort((left,right)=>left.ts.localeCompare(right.ts)||left.author.localeCompare(right.author)||left.op.localeCompare(right.op)||left.before_hash.localeCompare(right.before_hash)||left.after_hash.localeCompare(right.after_hash));const groups=new Map;const declaredGroups=new Map;for(const entry of sorted){const episode=entry.agent_episode;const identity=resolveHistoryEpisodeGroupIdentity(entry);const groupKey=`${identity.source}:${identity.id}`;const existing=groups.get(groupKey);if(existing){existing.entries.push(entry);continue}const group={id:identity.id,...episode?.label===void 0?{}:{label:episode.label},...episode?.parent_id===void 0?{}:{parent_id:episode.parent_id},source:identity.source,entries:[entry],children:[]};groups.set(groupKey,group);if(episode!==void 0)declaredGroups.set(identity.id,group)}const roots=[];for(const group of groups.values()){const parent=group.parent_id?declaredGroups.get(group.parent_id):void 0;if(parent&&episodeParentIsAcyclic(group,parent,declaredGroups)){parent.children.push(group)}else roots.push(group)}sortAgentEpisodeForest(roots);return roots}export{analyzeAgentProvenanceDescriptorCoverage,evaluateSemanticAttributionCoverage,groupHistoryByEpisode,resolveHistoryEpisodeGroupIdentity,summarizeAgentModelProvenance,summarizeAgentProvenance};
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]="28dd16ac-2e3b-55ed-98a6-db5f6786cbd7")}catch{}})();import{AGENT_PROVENANCE_DIMENSIONS,BUILTIN_HARNESS_SIGNAL_DESCRIPTORS}from"../core/shared/author.js";function resolveHistoryEpisodeGroupIdentity(entry){return entry.agent_episode!==void 0?{id:entry.agent_episode.id,source:"declared"}:{id:entry.agent_instance?`inferred:instance:${entry.agent_instance}`:`inferred:author:${entry.author}:${entry.ts.slice(0,13)}`,source:"inferred"}}function episodeParentIsAcyclic(group,parent,declaredGroups){let cursor=parent;const seen=new Set([group.id]);for(;cursor!==void 0&&!seen.has(cursor.id);)seen.add(cursor.id),cursor=cursor.parent_id?declaredGroups.get(cursor.parent_id):void 0;return cursor===void 0}function sortAgentEpisodeForest(roots){const pending=[roots];for(;pending.length>0;){const values=pending.pop();values.sort((left,right)=>left.entries[0].ts.localeCompare(right.entries[0].ts)||left.id.localeCompare(right.id)),pending.push(...values.map(value=>value.children))}}function analyzeAgentProvenanceDescriptorCoverage(descriptors=BUILTIN_HARNESS_SIGNAL_DESCRIPTORS,dimensions=AGENT_PROVENANCE_DIMENSIONS){return dimensions.map(dimension=>{const harnesses=descriptors.filter(descriptor=>((dimension==="model"?descriptor.model_environment_keys:descriptor.provenance_environment_keys?.[dimension])?.length??0)>0||descriptor.provenance_resolvers?.[dimension]!==void 0).map(descriptor=>descriptor.harness).sort();return{dimension,harnesses,covered:harnesses.length>0}})}function summarizeAgentModelProvenance(entries,minimumExplicitSample=1){const byHarness=new Map;for(const entry of entries){if(!entry.agent_harness)continue;const row=byHarness.get(entry.agent_harness)??{harness:entry.agent_harness,entries:0,observed:0,unavailable:0,legacy_missing:0};row.entries+=1,entry.agent_model||entry.agent_provenance?.model&&entry.agent_provenance.model.value.length>0?row.observed+=1:entry.agent_provenance?.model===null?row.unavailable+=1:row.legacy_missing+=1,byHarness.set(entry.agent_harness,row)}return[...byHarness.values()].map(row=>{const explicit=row.observed+row.unavailable;return{...row,coverage:explicit===0?null:row.observed/explicit,inert:explicit>=minimumExplicitSample&&row.observed===0}}).sort((left,right)=>left.harness.localeCompare(right.harness))}function summarizeAgentProvenance(entries,dimensions=AGENT_PROVENANCE_DIMENSIONS,minimumExplicitSample=1){const rows=new Map;for(const entry of entries)if(entry.agent_harness)for(const dimension of dimensions){const key=`${entry.agent_harness}\0${dimension}`,row=rows.get(key)??{harness:entry.agent_harness,dimension,entries:0,observed:0,unavailable:0,legacy_missing:0};row.entries+=1;const observation=entry.agent_provenance?.[dimension];observation!=null&&observation.value.length>0?row.observed+=1:observation===null?row.unavailable+=1:row.legacy_missing+=1,rows.set(key,row)}return[...rows.values()].map(row=>{const explicit=row.observed+row.unavailable;return{...row,coverage:explicit===0?null:row.observed/explicit,inert:explicit>=minimumExplicitSample&&row.observed===0}}).sort((left,right)=>left.harness.localeCompare(right.harness)||left.dimension.localeCompare(right.dimension))}function evaluateSemanticAttributionCoverage(entries,options={}){const minimumCoverage=options.minimumCoverage??.8,minimumEntries=options.minimumEntries??5;if(![Number.isFinite(minimumCoverage),minimumCoverage>=0,minimumCoverage<=1].every(Boolean))throw new RangeError("Semantic attribution minimum coverage must be from 0 to 1.");if(![Number.isSafeInteger(minimumEntries),minimumEntries>=1].every(Boolean))throw new RangeError("Semantic attribution minimum entries must be a positive integer.");const rows=new Map;for(const entry of entries)if(entry.agent_harness)for(const dimension of["role","topic"]){const key=`${entry.agent_harness}\0${dimension}`,row=rows.get(key)??{harness:entry.agent_harness,dimension,entries:0,observed:0,by_source:{},coverage:0};row.entries+=1;const observation=entry.agent_provenance?.[dimension];observation?.value&&(row.observed+=1,row.by_source[observation.source]=(row.by_source[observation.source]??0)+1),rows.set(key,row)}const ordered=[...rows.values()].map(row=>({...row,coverage:row.observed/row.entries,by_source:Object.fromEntries(Object.entries(row.by_source).sort(([left],[right])=>left.localeCompare(right)))})).sort((left,right)=>left.harness.localeCompare(right.harness)||left.dimension.localeCompare(right.dimension)),eligible=ordered.filter(row=>row.entries>=minimumEntries),failures=eligible.filter(row=>row.coverage<minimumCoverage).map(row=>`${row.harness}:${row.dimension}`);return{passed:eligible.length>0&&failures.length===0,minimum_coverage:minimumCoverage,minimum_entries:minimumEntries,rows:ordered,failures}}function groupHistoryByEpisode(entries){const sorted=[...entries].sort((left,right)=>left.ts.localeCompare(right.ts)||left.author.localeCompare(right.author)||left.op.localeCompare(right.op)||left.before_hash.localeCompare(right.before_hash)||left.after_hash.localeCompare(right.after_hash)),groups=new Map,declaredGroups=new Map;for(const entry of sorted){const episode=entry.agent_episode,identity=resolveHistoryEpisodeGroupIdentity(entry),groupKey=`${identity.source}:${identity.id}`,existing=groups.get(groupKey);if(existing){existing.entries.push(entry);continue}const group={id:identity.id,...episode?.label===void 0?{}:{label:episode.label},...episode?.parent_id===void 0?{}:{parent_id:episode.parent_id},source:identity.source,entries:[entry],children:[]};groups.set(groupKey,group),episode!==void 0&&declaredGroups.set(identity.id,group)}const roots=[];for(const group of groups.values()){const parent=group.parent_id?declaredGroups.get(group.parent_id):void 0;parent&&episodeParentIsAcyclic(group,parent,declaredGroups)?parent.children.push(group):roots.push(group)}return sortAgentEpisodeForest(roots),roots}export{analyzeAgentProvenanceDescriptorCoverage,evaluateSemanticAttributionCoverage,groupHistoryByEpisode,resolveHistoryEpisodeGroupIdentity,summarizeAgentModelProvenance,summarizeAgentProvenance};
2
2
  //# sourceMappingURL=provenance.js.map