@unbrained/pm-cli 2026.10.3 → 2026.10.5

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 (742) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/CHANGELOG.md +28 -2
  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.d.ts +1 -1
  93. package/dist/cli/runtime-compatibility-boundary.js +4 -4
  94. package/dist/cli/schema/registration.js +2 -2
  95. package/dist/cli/schema-registration-helpers.js +1 -1
  96. package/dist/cli/search-refresh.js +1 -1
  97. package/dist/cli/stats-analytics-json.js +1 -1
  98. package/dist/cli/telemetry-flush.js +1 -1
  99. package/dist/cli-bundle/bundle-manifest.json +162 -162
  100. package/dist/cli-bundle/chunks/chunk-3CYOBJUK.js +3 -0
  101. package/dist/cli-bundle/chunks/chunk-5MNOWZPN.js +3 -0
  102. package/dist/cli-bundle/chunks/chunk-AJ7H6XUF.js +20 -0
  103. package/dist/cli-bundle/chunks/chunk-D332RXZ7.js +80 -0
  104. package/dist/cli-bundle/chunks/chunk-HRJ6G6ZG.js +31 -0
  105. package/dist/cli-bundle/chunks/chunk-KRVI56QE.js +6 -0
  106. package/dist/cli-bundle/chunks/chunk-N4YGSG6F.js +238 -0
  107. package/dist/cli-bundle/chunks/chunk-OOLYASYJ.js +2 -0
  108. package/dist/cli-bundle/chunks/chunk-R7CG2DB7.js +2 -0
  109. package/dist/cli-bundle/chunks/chunk-TGMONGWX.js +2 -0
  110. package/dist/cli-bundle/chunks/chunk-UZ7BIUCI.js +2 -0
  111. package/dist/cli-bundle/chunks/{chunk-44UGMMQ6.js → chunk-VZ63DEVJ.js} +3 -3
  112. package/dist/cli-bundle/chunks/chunk-WFZ4UEOB.js +2 -0
  113. package/dist/cli-bundle/chunks/chunk-YVBRASXO.js +8 -0
  114. package/dist/cli-bundle/chunks/{chunk-5XKF5SQV.js → chunk-Z66DWDAU.js} +91 -91
  115. package/dist/cli-bundle/chunks/{register-list-query-DYCGUQEW.js → register-list-query-75QXHIFH.js} +11 -11
  116. package/dist/cli-bundle/chunks/register-mutation-YS54SCHG.js +20 -0
  117. package/dist/cli-bundle/chunks/register-operations-6KHZQSYJ.js +2 -0
  118. package/dist/cli-bundle/chunks/register-setup-RTATEN2M.js +2 -0
  119. package/dist/cli-bundle/focused-chunks/{chunk-3BIYG72P.js → chunk-2CVX3KR3.js} +2 -2
  120. package/dist/cli-bundle/focused-chunks/chunk-5C3IDDW7.js +2 -0
  121. package/dist/cli-bundle/focused-chunks/{chunk-DBD4W4QP.js → chunk-ABV67XCC.js} +3 -3
  122. package/dist/cli-bundle/focused-chunks/chunk-B5RSLVE6.js +3 -0
  123. package/dist/cli-bundle/focused-chunks/chunk-C224METM.js +20 -0
  124. package/dist/cli-bundle/focused-chunks/chunk-CLDPTMQY.js +6 -0
  125. package/dist/cli-bundle/focused-chunks/chunk-DDRN42PB.js +8 -0
  126. package/dist/cli-bundle/focused-chunks/{chunk-EJN7DY3B.js → chunk-DOVTUKJQ.js} +2 -2
  127. package/dist/cli-bundle/focused-chunks/chunk-ECBOPEJE.js +75 -0
  128. package/dist/cli-bundle/focused-chunks/chunk-GITOYRUW.js +165 -0
  129. package/dist/cli-bundle/focused-chunks/chunk-GUIF3WVC.js +30 -0
  130. package/dist/cli-bundle/focused-chunks/chunk-LE4JUCRR.js +3 -0
  131. package/dist/cli-bundle/focused-chunks/{chunk-HFAW3FJQ.js → chunk-PSXFFQFT.js} +2 -2
  132. package/dist/cli-bundle/focused-chunks/chunk-RHIH6XIW.js +12 -0
  133. package/dist/cli-bundle/focused-chunks/chunk-UDYRVBOZ.js +2 -0
  134. package/dist/cli-bundle/focused-chunks/chunk-XV5RV4ZT.js +2 -0
  135. package/dist/cli-bundle/focused-chunks/{chunk-XRSCIYHR.js → chunk-YMU42COG.js} +2 -2
  136. package/dist/cli-bundle/main.js +28 -28
  137. package/dist/cli-bundle/sdk-authoring.js +1 -1
  138. package/dist/cli-bundle/sdk-contracts.js +2 -2
  139. package/dist/cli-bundle/sdk-core.js +32 -32
  140. package/dist/cli-bundle/sdk-governance.js +1 -1
  141. package/dist/cli-bundle/sdk-graph.js +1 -1
  142. package/dist/cli-bundle/sdk-merge.js +55 -55
  143. package/dist/cli-bundle/sdk-query.js +1 -1
  144. package/dist/cli-bundle/sdk-runtime.js +1 -1
  145. package/dist/cli-bundle/sdk-testing.js +1 -1
  146. package/dist/cli-bundle/sdk.js +10 -10
  147. package/dist/cli.js +1 -1
  148. package/dist/core/checkpoint/checkpoint-gc.js +1 -1
  149. package/dist/core/checkpoint/mutation-checkpoint.js +2 -2
  150. package/dist/core/config/nested-settings.js +1 -1
  151. package/dist/core/config/positional-value.js +1 -1
  152. package/dist/core/diagnostics/remediation.js +1 -1
  153. package/dist/core/extensions/activation-summary-markdown.js +2 -1
  154. package/dist/core/extensions/activation-summary.js +1 -1
  155. package/dist/core/extensions/activation-transaction.js +1 -1
  156. package/dist/core/extensions/capability-usage.js +1 -1
  157. package/dist/core/extensions/command-hook-context.js +1 -1
  158. package/dist/core/extensions/command-metadata-contract.js +1 -1
  159. package/dist/core/extensions/command-visibility-tier.js +1 -1
  160. package/dist/core/extensions/contribution-inventory.js +1 -1
  161. package/dist/core/extensions/exporter-output-contract.js +1 -1
  162. package/dist/core/extensions/extension-candidate.js +1 -1
  163. package/dist/core/extensions/extension-capability-aliases.js +1 -1
  164. package/dist/core/extensions/extension-hook-runtime.js +1 -1
  165. package/dist/core/extensions/extension-policy.js +1 -1
  166. package/dist/core/extensions/extension-registries.js +1 -1
  167. package/dist/core/extensions/extension-runtime-helpers.js +1 -1
  168. package/dist/core/extensions/extension-types.d.ts +8 -1
  169. package/dist/core/extensions/extension-types.js +1 -1
  170. package/dist/core/extensions/flag-definition-validation.js +1 -1
  171. package/dist/core/extensions/flag-value-types.js +1 -1
  172. package/dist/core/extensions/index.js +1 -1
  173. package/dist/core/extensions/item-field-types.js +1 -1
  174. package/dist/core/extensions/item-fields.js +1 -1
  175. package/dist/core/extensions/loader.js +1 -1
  176. package/dist/core/extensions/manifest-parser.js +1 -1
  177. package/dist/core/extensions/manifest-schema.js +1 -1
  178. package/dist/core/extensions/module-graph-snapshot.js +1 -1
  179. package/dist/core/extensions/preflight-ownership.js +1 -1
  180. package/dist/core/extensions/registration-contracts.js +1 -1
  181. package/dist/core/extensions/registration-validation.js +1 -1
  182. package/dist/core/extensions/registration-values.js +1 -1
  183. package/dist/core/extensions/reserved-host-flags.js +1 -1
  184. package/dist/core/extensions/runtime-registrations.js +1 -1
  185. package/dist/core/extensions/service-ownership.js +1 -1
  186. package/dist/core/extensions/version-compat.js +1 -1
  187. package/dist/core/fs/atomic-create.js +1 -1
  188. package/dist/core/fs/fs-utils.js +2 -2
  189. package/dist/core/fs/host-environment-errors.js +1 -1
  190. package/dist/core/fs/index.js +1 -1
  191. package/dist/core/fs/path-utils.js +1 -1
  192. package/dist/core/governance/content-fields.js +1 -1
  193. package/dist/core/governance/issue-codes.js +1 -1
  194. package/dist/core/governance/metadata-coverage.js +1 -1
  195. package/dist/core/history/digest.js +1 -1
  196. package/dist/core/history/drift-cache.js +3 -3
  197. package/dist/core/history/drift-scan.d.ts +4 -0
  198. package/dist/core/history/drift-scan.js +1 -1
  199. package/dist/core/history/event-classification.js +1 -1
  200. package/dist/core/history/event-index.js +8 -7
  201. package/dist/core/history/history-compact-bulk.js +1 -1
  202. package/dist/core/history/history-diff.js +1 -1
  203. package/dist/core/history/history-rewrite.js +1 -1
  204. package/dist/core/history/history-storage-stats.js +1 -1
  205. package/dist/core/history/history-stream-policy.js +1 -1
  206. package/dist/core/history/history.js +2 -2
  207. package/dist/core/history/identity.js +1 -1
  208. package/dist/core/history/index.js +1 -1
  209. package/dist/core/history/operation-contract.js +1 -1
  210. package/dist/core/history/projection.js +1 -1
  211. package/dist/core/history/read.js +1 -1
  212. package/dist/core/history/replay.js +2 -1
  213. package/dist/core/history/tombstone.js +1 -1
  214. package/dist/core/history/version-address.js +1 -1
  215. package/dist/core/history/workspace-history.js +2 -2
  216. package/dist/core/io/body-file.js +1 -1
  217. package/dist/core/io/bulk-ids-input.js +2 -1
  218. package/dist/core/item/actionability.js +1 -1
  219. package/dist/core/item/dependency-reference.js +1 -1
  220. package/dist/core/item/id.js +1 -1
  221. package/dist/core/item/index.js +1 -1
  222. package/dist/core/item/item-format-version.js +1 -1
  223. package/dist/core/item/item-format.js +6 -4
  224. package/dist/core/item/item-record.js +1 -1
  225. package/dist/core/item/item-type-definition.js +1 -1
  226. package/dist/core/item/parent-reference-policy.js +1 -1
  227. package/dist/core/item/parse.js +8 -2
  228. package/dist/core/item/plan-lifecycle.js +1 -1
  229. package/dist/core/item/priority.js +1 -1
  230. package/dist/core/item/sprint-release-format.js +1 -1
  231. package/dist/core/item/status-filter.js +1 -1
  232. package/dist/core/item/status.js +1 -1
  233. package/dist/core/item/toon-decode.js +1 -1
  234. package/dist/core/item/type-registry.js +1 -1
  235. package/dist/core/item/type-synonyms.js +1 -1
  236. package/dist/core/lock/index.js +1 -1
  237. package/dist/core/lock/lock-gc.js +1 -1
  238. package/dist/core/lock/lock.js +3 -3
  239. package/dist/core/output/mutation-projection.js +1 -1
  240. package/dist/core/output/output-control.js +1 -1
  241. package/dist/core/output/output.js +22 -10
  242. package/dist/core/output/query-summary.js +1 -1
  243. package/dist/core/output/tabular.js +3 -1
  244. package/dist/core/packages/manifest.js +1 -1
  245. package/dist/core/packages/root.js +1 -1
  246. package/dist/core/policy/workflow-policy-schema.js +1 -1
  247. package/dist/core/policy/workflow-policy-store.js +1 -1
  248. package/dist/core/policy/workflow-policy.js +1 -1
  249. package/dist/core/profile/profile-describe.js +1 -1
  250. package/dist/core/profile/profile-lint.js +1 -1
  251. package/dist/core/profile/profile-plan.js +1 -1
  252. package/dist/core/profile/profile-presets.js +25 -1
  253. package/dist/core/reproducibility/context.js +1 -1
  254. package/dist/core/schema/fields-file.js +2 -2
  255. package/dist/core/schema/item-types-file.js +2 -2
  256. package/dist/core/schema/runtime-field-filters.js +1 -1
  257. package/dist/core/schema/runtime-field-values.js +1 -1
  258. package/dist/core/schema/runtime-schema.js +2 -2
  259. package/dist/core/schema/status-defs-file.js +2 -2
  260. package/dist/core/schema/status-token.js +1 -1
  261. package/dist/core/schema/type-inference.js +1 -1
  262. package/dist/core/schema/type-presets.js +1 -1
  263. package/dist/core/schema/type-workflows.js +1 -1
  264. package/dist/core/search/background-refresh.js +2 -2
  265. package/dist/core/search/bm25.js +1 -1
  266. package/dist/core/search/cache.js +2 -2
  267. package/dist/core/search/corpus.js +1 -1
  268. package/dist/core/search/embedding-batches.js +1 -1
  269. package/dist/core/search/eval-thresholds.js +1 -1
  270. package/dist/core/search/eval.js +1 -1
  271. package/dist/core/search/http-client.js +1 -1
  272. package/dist/core/search/providers.js +1 -1
  273. package/dist/core/search/relevance.js +1 -1
  274. package/dist/core/search/semantic-defaults.js +1 -1
  275. package/dist/core/search/staleness.js +1 -1
  276. package/dist/core/search/vector-stores.js +2 -2
  277. package/dist/core/search/vectorization-metadata.js +1 -1
  278. package/dist/core/sentry/helpers.js +1 -1
  279. package/dist/core/sentry/instrument.js +1 -1
  280. package/dist/core/session/session-state.js +1 -1
  281. package/dist/core/shared/agent-session-context.js +1 -1
  282. package/dist/core/shared/author.js +5 -1
  283. package/dist/core/shared/command-line.js +1 -1
  284. package/dist/core/shared/command-types.js +1 -1
  285. package/dist/core/shared/conflict-markers.js +1 -1
  286. package/dist/core/shared/constants.js +1 -1
  287. package/dist/core/shared/errors.js +1 -1
  288. package/dist/core/shared/html-entity-decode.js +1 -1
  289. package/dist/core/shared/index.js +1 -1
  290. package/dist/core/shared/item-metadata-contract.js +1 -1
  291. package/dist/core/shared/lazy-module.js +1 -1
  292. package/dist/core/shared/levenshtein.js +1 -1
  293. package/dist/core/shared/memo.js +1 -1
  294. package/dist/core/shared/numeric-parsers.js +1 -1
  295. package/dist/core/shared/option-alias-visibility.js +1 -1
  296. package/dist/core/shared/primitives.js +1 -1
  297. package/dist/core/shared/secret-rules.js +1 -1
  298. package/dist/core/shared/serial-queue.js +1 -1
  299. package/dist/core/shared/serialization.js +1 -1
  300. package/dist/core/shared/split-comma-list.js +1 -1
  301. package/dist/core/shared/text-normalization.js +1 -1
  302. package/dist/core/shared/time.js +2 -1
  303. package/dist/core/store/index.js +1 -1
  304. package/dist/core/store/item-format-migration.js +1 -1
  305. package/dist/core/store/item-metadata-cache.js +1 -1
  306. package/dist/core/store/item-metadata-query-index.js +7 -7
  307. package/dist/core/store/item-metadata-read-work.js +1 -1
  308. package/dist/core/store/item-store.js +1 -1
  309. package/dist/core/store/paths.js +1 -1
  310. package/dist/core/store/settings-concurrency.js +1 -1
  311. package/dist/core/store/settings-read-cache.js +1 -1
  312. package/dist/core/store/settings-validator.js +1 -1
  313. package/dist/core/store/settings.d.ts +11 -2
  314. package/dist/core/store/settings.js +3 -3
  315. package/dist/core/store/tracker-preflight.js +1 -1
  316. package/dist/core/telemetry/consent.js +2 -2
  317. package/dist/core/telemetry/observability.js +1 -1
  318. package/dist/core/telemetry/policy.js +1 -1
  319. package/dist/core/telemetry/read-sampling.js +2 -2
  320. package/dist/core/telemetry/runtime.js +9 -5
  321. package/dist/core/test/background-runs.js +3 -3
  322. package/dist/core/test/item-test-run-tracking.js +1 -1
  323. package/dist/core/test/run-selectors.js +1 -1
  324. package/dist/core/validate/estimate-defaults.js +1 -1
  325. package/dist/core/validate/fix-planning.js +1 -1
  326. package/dist/core/validate/linked-artifact-reference.js +1 -1
  327. package/dist/core/validate/missing-by-type.js +1 -1
  328. package/dist/core/validate/missing-link-owners.js +1 -1
  329. package/dist/core/validate/stale-file-classification.js +1 -1
  330. package/dist/mcp/http-server.js +6 -4
  331. package/dist/mcp/legacy-adapter.js +1 -1
  332. package/dist/mcp/runtime-capabilities.js +1 -1
  333. package/dist/mcp/server.js +4 -4
  334. package/dist/mcp/tool-definitions.js +1 -1
  335. package/dist/sdk/actionability.js +1 -1
  336. package/dist/sdk/agent/closed-domain-contracts.js +1 -1
  337. package/dist/sdk/agent/command-recovery.js +1 -1
  338. package/dist/sdk/agent/command-suggestions.js +1 -1
  339. package/dist/sdk/agent/create-option-policy.js +1 -1
  340. package/dist/sdk/agent/identity-config.js +1 -1
  341. package/dist/sdk/agent/item-addressing.js +1 -1
  342. package/dist/sdk/agent/refusal-closure-census.js +2 -1
  343. package/dist/sdk/agent/refusal-closure.js +1 -1
  344. package/dist/sdk/agent/refusal-corpus-contracts.js +1 -1
  345. package/dist/sdk/agent/refusal-reachability.js +3 -1
  346. package/dist/sdk/agent/subcommand-recovery.js +1 -1
  347. package/dist/sdk/agent/task-transcript-contracts.js +1 -1
  348. package/dist/sdk/agent/tracker-preflight-contracts.js +1 -1
  349. package/dist/sdk/agent-capability-contracts.js +3 -1
  350. package/dist/sdk/agent-session-context.js +1 -1
  351. package/dist/sdk/annotations.js +1 -1
  352. package/dist/sdk/author-attribution.js +1 -1
  353. package/dist/sdk/authoring.js +1 -1
  354. package/dist/sdk/cli-bootstrap.js +1 -1
  355. package/dist/sdk/cli-contracts/agent-output-contracts.js +5 -3
  356. package/dist/sdk/cli-contracts/bootstrap-command-scanner.js +1 -1
  357. package/dist/sdk/cli-contracts/command-aliases.js +1 -1
  358. package/dist/sdk/cli-contracts/command-exit-contracts.js +1 -1
  359. package/dist/sdk/cli-contracts/commander-mutation-options.js +1 -1
  360. package/dist/sdk/cli-contracts/commander-types.js +1 -1
  361. package/dist/sdk/cli-contracts/completeness.js +1 -1
  362. package/dist/sdk/cli-contracts/enum-contracts.js +1 -1
  363. package/dist/sdk/cli-contracts/flag-contracts.js +1 -1
  364. package/dist/sdk/cli-contracts/flag-lexicon-contracts.js +2 -1
  365. package/dist/sdk/cli-contracts/grammar-contracts.js +1 -1
  366. package/dist/sdk/cli-contracts/registration-helpers.js +7 -7
  367. package/dist/sdk/cli-contracts/runtime-contracts.js +1 -1
  368. package/dist/sdk/cli-contracts/schemas/assurance-definition.js +1 -1
  369. package/dist/sdk/cli-contracts/string-lists.js +1 -1
  370. package/dist/sdk/cli-contracts/tool-option-contracts.js +1 -1
  371. package/dist/sdk/cli-contracts/tool-parameter-tables.js +1 -1
  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.js +2 -2
  428. package/dist/sdk/extension/migrations.js +2 -2
  429. package/dist/sdk/extension/output-ownership.js +1 -1
  430. package/dist/sdk/extension/runtime-summary.js +1 -1
  431. package/dist/sdk/extension/scaffold.js +11 -4
  432. package/dist/sdk/extension/shared.js +1 -1
  433. package/dist/sdk/extension/source-resolution.js +1 -1
  434. package/dist/sdk/extension/static-inventory.js +1 -1
  435. package/dist/sdk/extension/update-check.js +1 -1
  436. package/dist/sdk/extension-command-context.js +1 -1
  437. package/dist/sdk/extension-contracts.js +1 -1
  438. package/dist/sdk/extension.js +1 -1
  439. package/dist/sdk/files.js +1 -1
  440. package/dist/sdk/flag-invocation-contracts.js +1 -1
  441. package/dist/sdk/generated/generated-error-code-catalog-part-1.js +1 -1
  442. package/dist/sdk/generated/generated-error-code-catalog-part-2.js +1 -1
  443. package/dist/sdk/generated-error-code-catalog.js +1 -1
  444. package/dist/sdk/governance/assurance-action-contracts.js +1 -1
  445. package/dist/sdk/governance/assurance-action.js +1 -1
  446. package/dist/sdk/governance/assurance-limits.js +1 -1
  447. package/dist/sdk/governance/assurance-mutation-error.js +1 -1
  448. package/dist/sdk/governance/assurance-presets.js +1 -1
  449. package/dist/sdk/governance/assurance-runtime.js +1 -1
  450. package/dist/sdk/governance/assurance.js +4 -4
  451. package/dist/sdk/governance/boundary-fixtures.js +1 -1
  452. package/dist/sdk/governance/closure-timestamps.js +1 -1
  453. package/dist/sdk/governance/coverage-assurance.js +1 -1
  454. package/dist/sdk/governance/defect-recurrence-coverage.js +1 -1
  455. package/dist/sdk/governance/defect-recurrence-graph.js +1 -1
  456. package/dist/sdk/governance/defect-recurrence-signals.js +1 -1
  457. package/dist/sdk/governance/defect-recurrence.js +1 -1
  458. package/dist/sdk/governance/extension-host-version.js +1 -1
  459. package/dist/sdk/governance/gc.js +1 -1
  460. package/dist/sdk/governance/health-merge-evidence.js +1 -1
  461. package/dist/sdk/governance/health.js +2 -1
  462. package/dist/sdk/governance/hierarchy-validation.js +1 -1
  463. package/dist/sdk/governance/linked-file-report.js +1 -1
  464. package/dist/sdk/governance/merge-receipt-history.js +1 -1
  465. package/dist/sdk/governance/provenance-health.js +4 -1
  466. package/dist/sdk/governance/reindex.js +5 -4
  467. package/dist/sdk/governance/stale-work.js +1 -1
  468. package/dist/sdk/governance/status-role-diagnostics.js +1 -1
  469. package/dist/sdk/governance/storage-integrity.js +1 -1
  470. package/dist/sdk/governance/tracked-runtime-cache.js +1 -1
  471. package/dist/sdk/governance/upgrade.js +2 -2
  472. package/dist/sdk/governance/validate-history-drift.js +1 -1
  473. package/dist/sdk/governance/validate-item-reader.js +1 -1
  474. package/dist/sdk/governance/validate-normalization.js +1 -1
  475. package/dist/sdk/governance/validate.js +1 -1
  476. package/dist/sdk/governance/workflow-completeness.js +1 -1
  477. package/dist/sdk/governance/workflow-policy.js +3 -3
  478. package/dist/sdk/governance/workspace-position.js +2 -1
  479. package/dist/sdk/governance.js +1 -1
  480. package/dist/sdk/graph/adapter.js +1 -1
  481. package/dist/sdk/graph/analytics.js +1 -1
  482. package/dist/sdk/graph/assembly.js +1 -1
  483. package/dist/sdk/graph/cache.js +1 -1
  484. package/dist/sdk/graph/centrality.js +1 -1
  485. package/dist/sdk/graph/conformance.js +1 -1
  486. package/dist/sdk/graph/deadline-scheduling.js +1 -1
  487. package/dist/sdk/graph/durable-cache.js +1 -1
  488. package/dist/sdk/graph/governance-contracts.js +1 -1
  489. package/dist/sdk/graph/governance.js +1 -1
  490. package/dist/sdk/graph/hierarchy-integrity.js +1 -1
  491. package/dist/sdk/graph/index.js +1 -1
  492. package/dist/sdk/graph/lifecycle-coverage.js +1 -1
  493. package/dist/sdk/graph/mutation-advisory.js +1 -1
  494. package/dist/sdk/graph/query-contracts.js +1 -1
  495. package/dist/sdk/graph/remediation.js +1 -1
  496. package/dist/sdk/graph/run.js +1 -1
  497. package/dist/sdk/graph/scheduling.js +1 -1
  498. package/dist/sdk/graph/traversal.js +1 -1
  499. package/dist/sdk/graph/workspace-relationship-kind-registry.js +1 -1
  500. package/dist/sdk/graph.js +1 -1
  501. package/dist/sdk/guide-topics.js +1 -1
  502. package/dist/sdk/guide.js +8 -1
  503. package/dist/sdk/history/attestation-command.js +1 -1
  504. package/dist/sdk/history/attestation-contract.js +1 -1
  505. package/dist/sdk/history/attestation-scan.js +1 -1
  506. package/dist/sdk/history/attestation.js +1 -1
  507. package/dist/sdk/history/maintenance.js +1 -1
  508. package/dist/sdk/history/salvage.js +3 -2
  509. package/dist/sdk/history/subject.js +1 -1
  510. package/dist/sdk/history-analytics.js +1 -1
  511. package/dist/sdk/history-compact.js +1 -1
  512. package/dist/sdk/history-mcp.js +1 -1
  513. package/dist/sdk/history-provenance.js +1 -1
  514. package/dist/sdk/history-read.js +1 -1
  515. package/dist/sdk/history-redact.js +1 -1
  516. package/dist/sdk/history-repair.js +1 -1
  517. package/dist/sdk/improvement-ledger-validation.js +1 -1
  518. package/dist/sdk/improvement-ledger.js +2 -2
  519. package/dist/sdk/index.js +1 -1
  520. package/dist/sdk/init-agent-guidance.js +16 -2
  521. package/dist/sdk/init.js +16 -2
  522. package/dist/sdk/invocation-author.js +1 -1
  523. package/dist/sdk/item-children.js +1 -1
  524. package/dist/sdk/item-metadata-index.js +1 -1
  525. package/dist/sdk/item-schedule.js +1 -1
  526. package/dist/sdk/item-transaction.js +1 -1
  527. package/dist/sdk/learnings.js +1 -1
  528. package/dist/sdk/lifecycle/append.js +4 -2
  529. package/dist/sdk/lifecycle/claim.js +1 -1
  530. package/dist/sdk/lifecycle/close-many.js +1 -1
  531. package/dist/sdk/lifecycle/close.js +1 -1
  532. package/dist/sdk/lifecycle/copy.js +1 -1
  533. package/dist/sdk/lifecycle/create.js +1 -1
  534. package/dist/sdk/lifecycle/delete.js +1 -1
  535. package/dist/sdk/lifecycle/event-validation-messages.js +1 -1
  536. package/dist/sdk/lifecycle/focus.js +1 -1
  537. package/dist/sdk/lifecycle/hierarchy-mutation-lock.js +1 -1
  538. package/dist/sdk/lifecycle/legacy-none-tokens.js +1 -1
  539. package/dist/sdk/lifecycle/lifecycle-transitions.js +1 -1
  540. package/dist/sdk/lifecycle/mcp-actions.js +1 -1
  541. package/dist/sdk/lifecycle/metadata-normalizers.js +1 -1
  542. package/dist/sdk/lifecycle/mutation-command-options.js +1 -1
  543. package/dist/sdk/lifecycle/plan-mutation-receipt.js +1 -1
  544. package/dist/sdk/lifecycle/plan.js +1 -1
  545. package/dist/sdk/lifecycle/recurrence-parsers.js +1 -1
  546. package/dist/sdk/lifecycle/reopen.js +1 -1
  547. package/dist/sdk/lifecycle/repeatable-metadata-parsers.js +2 -1
  548. package/dist/sdk/lifecycle/restore.js +1 -1
  549. package/dist/sdk/lifecycle/shared-unset-fields.js +1 -1
  550. package/dist/sdk/lifecycle/task-composition.js +1 -1
  551. package/dist/sdk/lifecycle/update-many.js +1 -1
  552. package/dist/sdk/lifecycle/update.js +2 -1
  553. package/dist/sdk/lifecycle-completion.js +1 -1
  554. package/dist/sdk/lifecycle-policy.js +1 -1
  555. package/dist/sdk/linked-artifacts.js +2 -1
  556. package/dist/sdk/mcp/apps.js +1 -1
  557. package/dist/sdk/mcp/authorization.js +1 -1
  558. package/dist/sdk/mcp/discovery.js +1 -1
  559. package/dist/sdk/mcp/interactions.js +1 -1
  560. package/dist/sdk/mcp/protocol.js +1 -1
  561. package/dist/sdk/mcp/skills.js +3 -1
  562. package/dist/sdk/mcp/subscriptions.js +1 -1
  563. package/dist/sdk/mcp/tasks.js +2 -2
  564. package/dist/sdk/mcp/transport.js +1 -1
  565. package/dist/sdk/merge/abandoned-receipts.js +1 -1
  566. package/dist/sdk/merge/driver.js +1 -1
  567. package/dist/sdk/merge/index.js +1 -1
  568. package/dist/sdk/merge/install.js +4 -2
  569. package/dist/sdk/merge/receipt-file-boundary.js +1 -1
  570. package/dist/sdk/merge/receipt-operation.js +1 -1
  571. package/dist/sdk/merge/receipt-schema.js +1 -1
  572. package/dist/sdk/merge/receipts.js +4 -4
  573. package/dist/sdk/merge/reconcile.js +1 -1
  574. package/dist/sdk/merge/three-way.js +3 -2
  575. package/dist/sdk/merge/worktree-config.js +1 -1
  576. package/dist/sdk/merge.js +1 -1
  577. package/dist/sdk/mutation-events.js +1 -1
  578. package/dist/sdk/mutation-guard.js +1 -1
  579. package/dist/sdk/notes.js +1 -1
  580. package/dist/sdk/output-contracts.js +1 -1
  581. package/dist/sdk/output-projection.js +1 -1
  582. package/dist/sdk/output-token-accounting.js +1 -1
  583. package/dist/sdk/output.js +2 -1
  584. package/dist/sdk/ownership-source.js +1 -1
  585. package/dist/sdk/package-import-adapters.js +1 -1
  586. package/dist/sdk/package-migrations.js +1 -1
  587. package/dist/sdk/package-runtime-options.js +1 -1
  588. package/dist/sdk/pagination.js +1 -1
  589. package/dist/sdk/profile.js +5 -1
  590. package/dist/sdk/provenance.js +1 -1
  591. package/dist/sdk/public-surface.json +1 -1
  592. package/dist/sdk/query/activity.js +1 -1
  593. package/dist/sdk/query/aggregate.js +1 -1
  594. package/dist/sdk/query/calendar.js +4 -1
  595. package/dist/sdk/query/complete-list.js +1 -1
  596. package/dist/sdk/query/context.js +2 -1
  597. package/dist/sdk/query/duplicate-candidates.js +1 -1
  598. package/dist/sdk/query/get.d.ts +14 -2
  599. package/dist/sdk/query/get.js +1 -1
  600. package/dist/sdk/query/history.js +1 -1
  601. package/dist/sdk/query/item-filter-options.js +1 -1
  602. package/dist/sdk/query/light-metadata.js +1 -1
  603. package/dist/sdk/query/list-filter-shared.js +1 -1
  604. package/dist/sdk/query/list.js +1 -1
  605. package/dist/sdk/query/multi-value-filters.js +1 -1
  606. package/dist/sdk/query/next-ready-budget.js +1 -1
  607. package/dist/sdk/query/next.js +2 -1
  608. package/dist/sdk/query/parsers.js +1 -1
  609. package/dist/sdk/query/projection-contracts.js +1 -1
  610. package/dist/sdk/query/search/corpus.js +2 -1
  611. package/dist/sdk/query/search/filters.js +1 -1
  612. package/dist/sdk/query/search/input.js +1 -1
  613. package/dist/sdk/query/search/lexical.js +1 -1
  614. package/dist/sdk/query/search/response.js +1 -1
  615. package/dist/sdk/query/search/semantic.js +3 -2
  616. package/dist/sdk/query/search/types.js +1 -1
  617. package/dist/sdk/query/search-contracts.js +1 -1
  618. package/dist/sdk/query/search-pagination.d.ts +1 -1
  619. package/dist/sdk/query/search-pagination.js +1 -1
  620. package/dist/sdk/query/search-rendering.js +1 -1
  621. package/dist/sdk/query/search.js +1 -1
  622. package/dist/sdk/query/workspace-contracts.js +1 -1
  623. package/dist/sdk/query.js +1 -1
  624. package/dist/sdk/read-output/continuation.js +1 -1
  625. package/dist/sdk/read-output/options.js +1 -1
  626. package/dist/sdk/read-output/provenance.js +1 -1
  627. package/dist/sdk/read-output-budget.js +1 -1
  628. package/dist/sdk/read-output-contracts.js +1 -1
  629. package/dist/sdk/read-output-rows.js +1 -1
  630. package/dist/sdk/read-output-session.js +1 -1
  631. package/dist/sdk/relationship-analytics.js +1 -1
  632. package/dist/sdk/relationship-context.js +1 -1
  633. package/dist/sdk/relationship-history.js +7 -4
  634. package/dist/sdk/relationship-kinds/contract.js +1 -1
  635. package/dist/sdk/relationship-migration.js +1 -1
  636. package/dist/sdk/relationships.js +1 -1
  637. package/dist/sdk/reproducibility/process.js +1 -1
  638. package/dist/sdk/runtime/actions.js +1 -1
  639. package/dist/sdk/runtime/context.js +1 -1
  640. package/dist/sdk/runtime/schema-preview.js +1 -1
  641. package/dist/sdk/runtime/schema.js +1 -1
  642. package/dist/sdk/runtime-action-aliases.js +1 -1
  643. package/dist/sdk/runtime-extended-actions.js +1 -1
  644. package/dist/sdk/runtime-input.js +1 -1
  645. package/dist/sdk/runtime-primitives.js +1 -1
  646. package/dist/sdk/runtime-public-contracts.js +1 -1
  647. package/dist/sdk/runtime-stats-options.js +1 -1
  648. package/dist/sdk/runtime.js +1 -1
  649. package/dist/sdk/scheduling-shortcuts.js +1 -1
  650. package/dist/sdk/schema-migration.js +4 -3
  651. package/dist/sdk/schema.js +7 -1
  652. package/dist/sdk/search-refresh-worker.js +1 -1
  653. package/dist/sdk/similarity-scoring.js +1 -1
  654. package/dist/sdk/similarity.js +1 -1
  655. package/dist/sdk/start-task-status.js +1 -1
  656. package/dist/sdk/stats.js +1 -1
  657. package/dist/sdk/structured-mutations.js +1 -1
  658. package/dist/sdk/telemetry-flush.js +1 -1
  659. package/dist/sdk/telemetry.js +4 -3
  660. package/dist/sdk/templates.js +26 -2
  661. package/dist/sdk/test/batch.js +2 -2
  662. package/dist/sdk/test/entry.js +1 -1
  663. package/dist/sdk/test/execution.js +6 -5
  664. package/dist/sdk/test/json-path.js +1 -1
  665. package/dist/sdk/test/linked-command-detection.js +1 -1
  666. package/dist/sdk/test/measurements.js +1 -1
  667. package/dist/sdk/test/parsers.js +1 -1
  668. package/dist/sdk/test/runs.js +1 -1
  669. package/dist/sdk/test/trust.js +2 -2
  670. package/dist/sdk/test/workspace-snapshot.js +1 -1
  671. package/dist/sdk/testing.js +7 -4
  672. package/dist/sdk/traceability/runtime-files-lookup.js +1 -1
  673. package/dist/sdk/traceability/source-traceability.js +2 -1
  674. package/dist/sdk/tracker-root-discovery.js +1 -1
  675. package/dist/sdk/workspace-contracts-cache.js +1 -1
  676. package/dist/sdk/workspace-contracts.js +1 -1
  677. package/dist/sdk/workspace-memory.js +2 -2
  678. package/dist/sdk/workspace-recipe.js +1 -1
  679. package/dist/sdk/workspace-snapshot.js +5 -4
  680. package/dist/sdk/workspace-transaction-gc.js +1 -1
  681. package/dist/sdk/workspace-transaction.js +2 -2
  682. package/dist/sdk/workspace.js +3 -2
  683. package/dist/types/index.js +1 -1
  684. package/dist/types.js +1 -1
  685. package/docs/AGENT_EVIDENCE_CONSISTENCY.md +88 -0
  686. package/docs/DIAGNOSTIC_OUTPUT_CONTRACTS.md +25 -0
  687. package/docs/GET_READ_EVIDENCE.md +68 -0
  688. package/docs/OUTPUT_PROJECTION_CONTRACTS.md +23 -0
  689. package/docs/README.md +2 -0
  690. package/docs/SDK_AUDITED_MUTATIONS.md +35 -0
  691. package/docs/TESTING.md +8 -0
  692. package/docs/ecosystem-review-2026-09-28.json +2864 -3157
  693. package/marketplace.json +2 -2
  694. package/package.json +1 -1
  695. package/packages/pm-beads/package.json +1 -1
  696. package/packages/pm-calendar/package.json +1 -1
  697. package/packages/pm-command-kit/package.json +1 -1
  698. package/packages/pm-digital-twin/package.json +1 -1
  699. package/packages/pm-governance-audit/package.json +1 -1
  700. package/packages/pm-guide-shell/package.json +1 -1
  701. package/packages/pm-kanban/package.json +1 -1
  702. package/packages/pm-lifecycle-hooks/package.json +1 -1
  703. package/packages/pm-linked-test-adapters/package.json +1 -1
  704. package/packages/pm-search-advanced/package.json +1 -1
  705. package/packages/pm-templates/package.json +1 -1
  706. package/packages/pm-todos/package.json +1 -1
  707. package/packages/pm-vcs/extensions/vcs/index.ts +4 -2
  708. package/packages/pm-vcs/package.json +1 -1
  709. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  710. package/plugins/pm-claude/package.json +2 -2
  711. package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
  712. package/plugins/pm-codex/package.json +2 -2
  713. package/plugins/pm-codex/plugin.json +1 -1
  714. package/scripts/finalize-build.mjs +3 -2
  715. package/dist/cli-bundle/chunks/chunk-3AF2R3Y6.js +0 -6
  716. package/dist/cli-bundle/chunks/chunk-6ST3SCQ6.js +0 -2
  717. package/dist/cli-bundle/chunks/chunk-6Z4IV2MC.js +0 -8
  718. package/dist/cli-bundle/chunks/chunk-DEZPZOQ7.js +0 -2
  719. package/dist/cli-bundle/chunks/chunk-FW5LJXQY.js +0 -31
  720. package/dist/cli-bundle/chunks/chunk-H2DZW6I6.js +0 -3
  721. package/dist/cli-bundle/chunks/chunk-H7CXQBGQ.js +0 -2
  722. package/dist/cli-bundle/chunks/chunk-KP7NBQK3.js +0 -80
  723. package/dist/cli-bundle/chunks/chunk-MKXBCBAN.js +0 -20
  724. package/dist/cli-bundle/chunks/chunk-QPKQKSQU.js +0 -238
  725. package/dist/cli-bundle/chunks/chunk-SGFQQXFD.js +0 -2
  726. package/dist/cli-bundle/chunks/chunk-YCBGZF3T.js +0 -2
  727. package/dist/cli-bundle/chunks/chunk-YDWKGUQU.js +0 -3
  728. package/dist/cli-bundle/chunks/register-mutation-5PT3NW3A.js +0 -20
  729. package/dist/cli-bundle/chunks/register-operations-QDDQOAAV.js +0 -2
  730. package/dist/cli-bundle/chunks/register-setup-BBX67YMA.js +0 -2
  731. package/dist/cli-bundle/focused-chunks/chunk-4FFPGNCJ.js +0 -6
  732. package/dist/cli-bundle/focused-chunks/chunk-73DA7ISY.js +0 -75
  733. package/dist/cli-bundle/focused-chunks/chunk-E754JDLY.js +0 -2
  734. package/dist/cli-bundle/focused-chunks/chunk-FKK2HI3S.js +0 -2
  735. package/dist/cli-bundle/focused-chunks/chunk-GMYUNHST.js +0 -3
  736. package/dist/cli-bundle/focused-chunks/chunk-HIA2ZF64.js +0 -12
  737. package/dist/cli-bundle/focused-chunks/chunk-UTRSM3ZK.js +0 -8
  738. package/dist/cli-bundle/focused-chunks/chunk-VVWYI2X7.js +0 -2
  739. package/dist/cli-bundle/focused-chunks/chunk-WAJNX4RN.js +0 -20
  740. package/dist/cli-bundle/focused-chunks/chunk-WCY6HRZO.js +0 -30
  741. package/dist/cli-bundle/focused-chunks/chunk-YC32ZSLS.js +0 -165
  742. package/dist/cli-bundle/focused-chunks/chunk-ZIXFMIUL.js +0 -3
@@ -1,3 +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]="420952ed-9a04-55dd-bcb8-804d81582002")}catch(e2){}})();import{runHistoryAttest}from"../sdk/history/attestation-command.js";import{EXIT_CODE,PmCliError,resolveCliBulkIdsInput,splitCommaList}from"../sdk/runtime-primitives.js";import{assertHistoryCompactTarget,runHistoryCompact,runHistoryCompactBulk}from"./commands/history/history-compact.js";import{runHistoryRedact}from"./commands/history/history-redact.js";import{assertHistoryRepairTarget,runHistoryRepair,runHistoryRepairAll}from"./commands/history/history-repair.js";import{runRestore}from"./commands/history/restore.js";import{collect,getGlobalOptions,invalidateSearchCachesForMutation,printError,printResult,readOptionString,setActiveCommandResult,writeStdout}from"./registration-helpers.js";function parseNonNegativeIntFlag(raw,flag){if(typeof raw!=="string"){return void 0}const parsed=Number.parseInt(raw,10);if(!/^\d+$/.test(raw.trim())||!Number.isSafeInteger(parsed)){throw new PmCliError(`history-compact ${flag} must be a non-negative integer.`,EXIT_CODE.USAGE)}return parsed}async function runHistoryCompactAction(id,options,command){const globalOptions=getGlobalOptions(command);const startedAt=Date.now();const idsValue=await resolveCliBulkIdsInput(readOptionString(options,"ids"));const ids=idsValue===void 0?void 0:splitCommaList(idsValue);const allOver=parseNonNegativeIntFlag(options.allOver,"--all-over");const minEntries=parseNonNegativeIntFlag(options.minEntries,"--min-entries");if(options.closed===true&&options.allStreams===true){throw new PmCliError("history-compact: --closed and --all-streams are mutually exclusive; pick one lifecycle scope.",EXIT_CODE.USAGE)}const scope=options.closed===true?"closed":options.allStreams===true?"all-streams":void 0;const isBulk=ids!==void 0||allOver!==void 0||scope!==void 0;if(isBulk&&typeof options.before==="string"){throw new PmCliError("history-compact: --before applies only in single-id mode (bulk mode always compacts full streams).",EXIT_CODE.USAGE)}assertHistoryCompactTarget(id,{ids,allOver,scope});if(id!==void 0&&minEntries!==void 0){throw new PmCliError("history-compact: --min-entries applies only in bulk mode (single-id mode compacts the named stream).",EXIT_CODE.USAGE)}if(id===void 0){const result=await runHistoryCompactBulk({ids,scope,allOver,minEntries,dryRun:options.dryRun===true,author:readOptionString(options,"author"),message:readOptionString(options,"message"),force:Boolean(options.force)},globalOptions);printResult(result,globalOptions);if(result.totals.items_errored>0){process.exitCode=EXIT_CODE.GENERIC_FAILURE}}else{const result=await runHistoryCompact(id,{before:readOptionString(options,"before"),dryRun:options.dryRun===true,author:readOptionString(options,"author"),message:readOptionString(options,"message"),force:Boolean(options.force)},globalOptions);printResult(result,globalOptions)}if(globalOptions.profile){printError(`profile:command=history-compact took_ms=${Date.now()-startedAt}`)}}async function runRestoreAction(id,target,options,command){const globalOptions=getGlobalOptions(command);const startedAt=Date.now();const result=await runRestore(id,target,{author:readOptionString(options,"author"),message:readOptionString(options,"message"),force:Boolean(options.force)},globalOptions);await invalidateSearchCachesForMutation(globalOptions,result);printResult(result,globalOptions);if(globalOptions.profile){printError(`profile:command=restore took_ms=${Date.now()-startedAt}`)}}async function runHistoryAttestAction(options,command){const global2=getGlobalOptions(command);const result=await runHistoryAttest({verify:readOptionString(options,"verify"),output:readOptionString(options,"output"),hashAlgorithm:readOptionString(options,"hashAlgorithm")},global2);if("format"in result){setActiveCommandResult(result);if(!global2.quiet)writeStdout(`${JSON.stringify(result,null,2)}
2
- `)}else{printResult(result,global2)}if("ok"in result&&!result.ok)process.exitCode=EXIT_CODE.GENERIC_FAILURE}function registerHistoryMaintenanceCommands(parent,native){parent.command(native?"attest":"history-attest",{hidden:!native}).summary("Export or verify history proof.").option("--verify <file>","Compare retained streams with a detached JSON proof").option("--output <file>","Create a proof file and return a compact receipt").option("--hash-algorithm <name>","Bundle digest algorithm: sha256 (default) or sha512").description("Export exact-byte history commitments, or verify an independently retained proof without tracker writes.").action(runHistoryAttestAction);parent.command("restore",{hidden:!native}).summary("Restore a version.").argument("<id>","Item id").argument("<target>","Restore target timestamp or version number").option("--author <value>","Mutation author").option("--message <value>","History message").option("--force","Force ownership/lock override").description("Restore an item to an earlier timestamp or version.").action(runRestoreAction);parent.command(native?"redact":"history-redact",{hidden:!native}).summary("Redact sensitive values.").argument("<id>","Item id").option("--literal <value>","Literal string to redact (repeatable)",collect).option("--regex <value>","Regex pattern to redact (repeatable; accepts /pattern/flags or raw pattern)",collect).option("--replacement <value>",'Replacement string (default: "[redacted]")').option("--dry-run","Preview redaction impact without writing item/history files").option("--author <value>","Mutation author").option("--message <value>","Audit history message for the redaction marker entry").option("--force","Force ownership/lock override").description("Redact sensitive literals/patterns from an item history stream and recompute hashes.").action(async(id,options,command)=>{const globalOptions=getGlobalOptions(command);const startedAt=Date.now();const literal=Array.isArray(options.literal)?options.literal:void 0;const regex=Array.isArray(options.regex)?options.regex:void 0;const result=await runHistoryRedact(id,{literal,regex,replacement:readOptionString(options,"replacement"),dryRun:options.dryRun===true,author:readOptionString(options,"author"),message:readOptionString(options,"message"),force:Boolean(options.force)},globalOptions);if(result.changed&&!result.dry_run){await invalidateSearchCachesForMutation(globalOptions,result)}printResult(result,globalOptions);if(globalOptions.profile){printError(`profile:command=history-redact took_ms=${Date.now()-startedAt}`)}});parent.command(native?"repair":"history-repair",{hidden:!native}).summary("Repair drift.").argument("[id]","Item id (omit with --all)").option("--salvage-tail","Recover invalid tail; requires verified prefix").option("--all","Scan every stream for drift and repair each drifted stream in one audited pass").option("--dry-run","Preview the re-anchor impact without writing the history file").option("--normalize-provenance","Remove invalid provenance; return aggregate-only evidence").option("--author <value>","Mutation author").option("--message <value>","Audit history message for the repair marker entry").option("--force","Force ownership/lock override").description("Re-anchor a drifted item history chain (recompute hashes, reconcile with the on-disk item) and record an audit marker. Use --all to repair every drifted stream.").action(async(id,options,command)=>{const globalOptions=getGlobalOptions(command);const startedAt=Date.now();const all=options.all===true;assertHistoryRepairTarget(id,all);const repairOptions={dryRun:options.dryRun===true,author:readOptionString(options,"author"),message:readOptionString(options,"message"),force:Boolean(options.force),normalizeProvenance:options.normalizeProvenance===true,salvageTail:options.salvageTail===true};if(all){const result=await runHistoryRepairAll(repairOptions,globalOptions);printResult(result,globalOptions);if(result.totals.failed>0){process.exitCode=EXIT_CODE.GENERIC_FAILURE}}else{const result=await runHistoryRepair(id,repairOptions,globalOptions);printResult(result,globalOptions)}if(globalOptions.profile){printError(`profile:command=history-repair took_ms=${Date.now()-startedAt}`)}});parent.command(native?"compact":"history-compact",{hidden:!native}).summary("Compact streams.").argument("[id]","Item id (omit when using a bulk selector)").option("--before <value>","Compact entries strictly before this version number or ISO timestamp (single-id mode only)").option("--ids <value>","Bulk IDs: comma/newline text, - stdin, or @path file").option("--all-over <n>","Bulk: compact every stream with more than N entries").option("--closed","Bulk: compact only closed (terminal) items' streams").option("--all-streams","Bulk: compact every history stream regardless of lifecycle state").option("--min-entries <n>","Bulk: skip streams with at most N entries (already compact; default 3)").option("--dry-run","Preview compaction impact without writing the history file").option("--author <value>","Mutation author").option("--message <value>","Audit history message for the compaction marker entry").option("--force","Force ownership/lock override").description("Compact item history streams into a synthetic baseline plus retained tail entries. Pass an item id for one stream, or a bulk selector (--ids/--all-over/--closed/--all-streams) to compact many.").action(runHistoryCompactAction)}export{registerHistoryMaintenanceCommands};
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]="a178bd8b-fc53-5633-84d5-621b61930581")}catch{}})();import{runHistoryAttest}from"../sdk/history/attestation-command.js";import{EXIT_CODE,PmCliError,resolveCliBulkIdsInput,splitCommaList}from"../sdk/runtime-primitives.js";import{assertHistoryCompactTarget,runHistoryCompact,runHistoryCompactBulk}from"./commands/history/history-compact.js";import{runHistoryRedact}from"./commands/history/history-redact.js";import{assertHistoryRepairTarget,runHistoryRepair,runHistoryRepairAll}from"./commands/history/history-repair.js";import{runRestore}from"./commands/history/restore.js";import{collect,getGlobalOptions,invalidateSearchCachesForMutation,printError,printResult,readOptionString,setActiveCommandResult,writeStdout}from"./registration-helpers.js";function parseNonNegativeIntFlag(raw,flag){if(typeof raw!="string")return;const parsed=Number.parseInt(raw,10);if(!/^\d+$/.test(raw.trim())||!Number.isSafeInteger(parsed))throw new PmCliError(`history-compact ${flag} must be a non-negative integer.`,EXIT_CODE.USAGE);return parsed}async function runHistoryCompactAction(id,options,command){const globalOptions=getGlobalOptions(command),startedAt=Date.now(),idsValue=await resolveCliBulkIdsInput(readOptionString(options,"ids")),ids=idsValue===void 0?void 0:splitCommaList(idsValue),allOver=parseNonNegativeIntFlag(options.allOver,"--all-over"),minEntries=parseNonNegativeIntFlag(options.minEntries,"--min-entries");if(options.closed===!0&&options.allStreams===!0)throw new PmCliError("history-compact: --closed and --all-streams are mutually exclusive; pick one lifecycle scope.",EXIT_CODE.USAGE);const scope=options.closed===!0?"closed":options.allStreams===!0?"all-streams":void 0;if((ids!==void 0||allOver!==void 0||scope!==void 0)&&typeof options.before=="string")throw new PmCliError("history-compact: --before applies only in single-id mode (bulk mode always compacts full streams).",EXIT_CODE.USAGE);if(assertHistoryCompactTarget(id,{ids,allOver,scope}),id!==void 0&&minEntries!==void 0)throw new PmCliError("history-compact: --min-entries applies only in bulk mode (single-id mode compacts the named stream).",EXIT_CODE.USAGE);if(id===void 0){const result=await runHistoryCompactBulk({ids,scope,allOver,minEntries,dryRun:options.dryRun===!0,author:readOptionString(options,"author"),message:readOptionString(options,"message"),force:!!options.force},globalOptions);printResult(result,globalOptions),result.totals.items_errored>0&&(process.exitCode=EXIT_CODE.GENERIC_FAILURE)}else{const result=await runHistoryCompact(id,{before:readOptionString(options,"before"),dryRun:options.dryRun===!0,author:readOptionString(options,"author"),message:readOptionString(options,"message"),force:!!options.force},globalOptions);printResult(result,globalOptions)}globalOptions.profile&&printError(`profile:command=history-compact took_ms=${Date.now()-startedAt}`)}async function runRestoreAction(id,target,options,command){const globalOptions=getGlobalOptions(command),startedAt=Date.now(),result=await runRestore(id,target,{author:readOptionString(options,"author"),message:readOptionString(options,"message"),force:!!options.force},globalOptions);await invalidateSearchCachesForMutation(globalOptions,result),printResult(result,globalOptions),globalOptions.profile&&printError(`profile:command=restore took_ms=${Date.now()-startedAt}`)}async function runHistoryAttestAction(options,command){const global2=getGlobalOptions(command),result=await runHistoryAttest({verify:readOptionString(options,"verify"),output:readOptionString(options,"output"),hashAlgorithm:readOptionString(options,"hashAlgorithm")},global2);"format"in result?(setActiveCommandResult(result),global2.quiet||writeStdout(`${JSON.stringify(result,null,2)}
2
+ `)):printResult(result,global2),"ok"in result&&!result.ok&&(process.exitCode=EXIT_CODE.GENERIC_FAILURE)}function registerHistoryMaintenanceCommands(parent,native){parent.command(native?"attest":"history-attest",{hidden:!native}).summary("Export or verify history proof.").option("--verify <file>","Compare retained streams with a detached JSON proof").option("--output <file>","Create a proof file and return a compact receipt").option("--hash-algorithm <name>","Bundle digest algorithm: sha256 (default) or sha512").description("Export exact-byte history commitments, or verify an independently retained proof without tracker writes.").action(runHistoryAttestAction),parent.command("restore",{hidden:!native}).summary("Restore a version.").argument("<id>","Item id").argument("<target>","Restore target timestamp or version number").option("--author <value>","Mutation author").option("--message <value>","History message").option("--force","Force ownership/lock override").description("Restore an item to an earlier timestamp or version.").action(runRestoreAction),parent.command(native?"redact":"history-redact",{hidden:!native}).summary("Redact sensitive values.").argument("<id>","Item id").option("--literal <value>","Literal string to redact (repeatable)",collect).option("--regex <value>","Regex pattern to redact (repeatable; accepts /pattern/flags or raw pattern)",collect).option("--replacement <value>",'Replacement string (default: "[redacted]")').option("--dry-run","Preview redaction impact without writing item/history files").option("--author <value>","Mutation author").option("--message <value>","Audit history message for the redaction marker entry").option("--force","Force ownership/lock override").description("Redact sensitive literals/patterns from an item history stream and recompute hashes.").action(async(id,options,command)=>{const globalOptions=getGlobalOptions(command),startedAt=Date.now(),literal=Array.isArray(options.literal)?options.literal:void 0,regex=Array.isArray(options.regex)?options.regex:void 0,result=await runHistoryRedact(id,{literal,regex,replacement:readOptionString(options,"replacement"),dryRun:options.dryRun===!0,author:readOptionString(options,"author"),message:readOptionString(options,"message"),force:!!options.force},globalOptions);result.changed&&!result.dry_run&&await invalidateSearchCachesForMutation(globalOptions,result),printResult(result,globalOptions),globalOptions.profile&&printError(`profile:command=history-redact took_ms=${Date.now()-startedAt}`)}),parent.command(native?"repair":"history-repair",{hidden:!native}).summary("Repair drift.").argument("[id]","Item id (omit with --all)").option("--salvage-tail","Recover invalid tail; requires verified prefix").option("--all","Scan every stream for drift and repair each drifted stream in one audited pass").option("--dry-run","Preview the re-anchor impact without writing the history file").option("--normalize-provenance","Remove invalid provenance; return aggregate-only evidence").option("--author <value>","Mutation author").option("--message <value>","Audit history message for the repair marker entry").option("--force","Force ownership/lock override").description("Re-anchor a drifted item history chain (recompute hashes, reconcile with the on-disk item) and record an audit marker. Use --all to repair every drifted stream.").action(async(id,options,command)=>{const globalOptions=getGlobalOptions(command),startedAt=Date.now(),all=options.all===!0;assertHistoryRepairTarget(id,all);const repairOptions={dryRun:options.dryRun===!0,author:readOptionString(options,"author"),message:readOptionString(options,"message"),force:!!options.force,normalizeProvenance:options.normalizeProvenance===!0,salvageTail:options.salvageTail===!0};if(all){const result=await runHistoryRepairAll(repairOptions,globalOptions);printResult(result,globalOptions),result.totals.failed>0&&(process.exitCode=EXIT_CODE.GENERIC_FAILURE)}else{const result=await runHistoryRepair(id,repairOptions,globalOptions);printResult(result,globalOptions)}globalOptions.profile&&printError(`profile:command=history-repair took_ms=${Date.now()-startedAt}`)}),parent.command(native?"compact":"history-compact",{hidden:!native}).summary("Compact streams.").argument("[id]","Item id (omit when using a bulk selector)").option("--before <value>","Compact entries strictly before this version number or ISO timestamp (single-id mode only)").option("--ids <value>","Bulk IDs: comma/newline text, - stdin, or @path file").option("--all-over <n>","Bulk: compact every stream with more than N entries").option("--closed","Bulk: compact only closed (terminal) items' streams").option("--all-streams","Bulk: compact every history stream regardless of lifecycle state").option("--min-entries <n>","Bulk: skip streams with at most N entries (already compact; default 3)").option("--dry-run","Preview compaction impact without writing the history file").option("--author <value>","Mutation author").option("--message <value>","Audit history message for the compaction marker entry").option("--force","Force ownership/lock override").description("Compact item history streams into a synthetic baseline plus retained tail entries. Pass an item id for one stream, or a bulk selector (--ids/--all-over/--closed/--all-streams) to compact many.").action(runHistoryCompactAction)}export{registerHistoryMaintenanceCommands};
3
3
  //# sourceMappingURL=register-history-maintenance.js.map
@@ -1,11 +1,11 @@
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]="b87b0c47-74ba-5095-b6b5-a10061d6d45a")}catch(e2){}})();import{EXIT_CODE,PmCliError,readSettings,renderRowsAsCsv,renderRowsAsTable,resolvePmRoot}from"../sdk/runtime-primitives.js";import{renderPmCommandAliasMigrationHint,resolvePmCommandAlias}from"../sdk/cli-contracts.js";import{EVAL_QUERY_SET_SCHEMA_ID}from"../sdk/eval.js";import{applyContextIntentProjection}from"../sdk/context-intent-contracts.js";import{renderPmClosedDomainHelp}from"../sdk/agent/closed-domain-contracts.js";import{serializeNdjsonRows,serializeNdjsonStream}from"../sdk/output.js";import{listMutationEvents,subscribeMutationEventBatches,subscribeMutationEvents}from"../sdk/mutation-events.js";import{registerHistoryActivityCommand}from"./register-history-activity.js";import{registerHistoryMaintenanceCommands}from"./register-history-maintenance.js";import{runAggregate}from"./commands/query/aggregate.js";import{renderContextMarkdown,runContext,resolveContextOutputFormat}from"./commands/query/context.js";import{runEval}from"./commands/query/eval.js";import{runGet}from"./commands/query/get.js";import{runGraph}from"./commands/query/graph.js";import{runHistory}from"./commands/history/history.js";import{runList}from"./commands/query/list.js";import{LIST_COMMAND_DEFAULT_PROJECTIONS}from"../sdk/query/list.js";import{renderNextMarkdown,runNext,resolveNextOutputFormat}from"./commands/query/next.js";import{runSearch}from"./commands/query/search.js";import{addHiddenOption,collect,getGlobalOptions,normalizeAggregateOptions,normalizeContextOptions,normalizeListOptions,normalizeNextOptions,normalizeSearchKeywordsInput,normalizeSearchOptions,printError,printListJsonStream,printResult,setActiveCommandResult,writeStdout}from"./registration-helpers.js";function shouldRegisterListQueryCommand(commandName,commandFilter){if(!commandFilter||commandFilter.size===0){return true}if(commandName==="context"){return commandFilter.has("context")||commandFilter.has("ctx")}return commandFilter.has(commandName)}function parseListFormat(rawFormat){if(rawFormat===void 0){return void 0}if(typeof rawFormat!=="string"){throw new PmCliError("List --format must be one of csv|table|json|ndjson|toon",EXIT_CODE.USAGE)}const normalized=rawFormat.trim().toLowerCase();if(normalized==="csv"||normalized==="table"||normalized==="json"||normalized==="ndjson"||normalized==="toon"){return normalized}throw new PmCliError("List --format must be one of csv|table|json|ndjson|toon",EXIT_CODE.USAGE)}function resolveReadCommandOutputFormat(commandLabel,rawFormat,globalOptions,allowNdjson=false){if(rawFormat===void 0){return globalOptions}if(typeof rawFormat!=="string"){throw new PmCliError(`${commandLabel} --format must be one of ${allowNdjson?"json|ndjson|toon":"json|toon"}`,EXIT_CODE.USAGE)}const normalized=rawFormat.trim().toLowerCase();if(normalized!=="json"&&(normalized!=="ndjson"||!allowNdjson)&&normalized!=="toon"){throw new PmCliError(`${commandLabel} --format must be one of ${allowNdjson?"json|ndjson|toon":"json|toon"}`,EXIT_CODE.USAGE)}if(globalOptions.json===true&&normalized==="toon"){throw new PmCliError(`${commandLabel} cannot combine --json with --format toon`,EXIT_CODE.USAGE)}return{...globalOptions,json:normalized==="json"||normalized==="ndjson"}}function applyDefaultListProjection(listOptions,commandName){if(LIST_COMMAND_DEFAULT_PROJECTIONS[commandName]==="brief"&&listOptions.includeBody!==true&&listOptions.compact!==true&&listOptions.brief!==true&&listOptions.full!==true&&listOptions.fields===void 0){listOptions.brief=true}}function registerContentAndGovernanceFilters(command){command.option("--has-notes","Show only items that have notes").option("--has-learnings","Show only items that have learnings").option("--has-files","Show only items that have linked files").option("--has-docs","Show only items that have linked docs").option("--has-tests","Show only items that have linked tests").option("--has-comments","Show only items that have comments").option("--has-deps","Show only items that have dependencies").option("--has-body","Show only items that have a non-empty body").option("--has-linked-command","Show only items whose linked tests carry a runnable command").option("--no-notes","Show only items that have no notes").option("--no-learnings","Show only items that have no learnings").option("--no-files","Show only items that have no linked files").option("--filter-files-missing","Alias for --no-files").option("--no-docs","Show only items that have no linked docs").option("--filter-docs-missing","Alias for --no-docs").option("--no-tests","Show only items that have no linked tests").option("--no-comments","Show only items that have no comments").option("--no-deps","Show only items that have no dependencies").option("--empty-body","Show only items with an empty body").option("--no-linked-command","Show only items whose linked tests carry no runnable command").option("--filter-reviewer-missing","Show only items missing reviewer").option("--filter-risk-missing","Show only items missing risk").option("--filter-confidence-missing","Show only items missing confidence").option("--filter-sprint-missing","Show only items missing sprint").option("--filter-release-missing","Show only items missing release")}const CANONICAL_LIST_STATUS_VARIANTS={draft:{name:"list-draft",dependencyBlocked:false},open:{name:"list-open",dependencyBlocked:false},in_progress:{name:"list-in-progress",dependencyBlocked:false},blocked:{name:"list-blocked",dependencyBlocked:true},closed:{name:"list-closed",dependencyBlocked:false},canceled:{name:"list-canceled",dependencyBlocked:false}};function resolveRegisteredListOutputContext(options,globalOptions){const streamMode=options.stream===true;const listFormat=parseListFormat(options.format);const tabular=listFormat==="csv"||listFormat==="table";const effectiveGlobal=listFormat==="json"||listFormat==="ndjson"||listFormat==="toon"?resolveReadCommandOutputFormat("List",options.format,globalOptions,true):globalOptions;if(streamMode&&!effectiveGlobal.json){throw new PmCliError("--stream requires --json output mode.",EXIT_CODE.USAGE)}if((tabular||listFormat==="ndjson")&&streamMode){throw new PmCliError("--format csv|table|ndjson cannot be combined with --stream.",EXIT_CODE.USAGE)}return{streamMode,listFormat,effectiveGlobal}}function renderRegisteredListResult(commandName,result,output){if(output.listFormat==="csv"||output.listFormat==="table"){setActiveCommandResult(result);const rows=result.items;const rendered=output.listFormat==="csv"?renderRowsAsCsv(rows):renderRowsAsTable(rows);if(!output.effectiveGlobal.quiet&&rendered.length>0){writeStdout(`${rendered}
2
- `)}}else if(output.listFormat==="ndjson"){setActiveCommandResult(result);const rendered=serializeNdjsonRows(result.items);if(!output.effectiveGlobal.quiet&&rendered.length>0){writeStdout(`${rendered}
3
- `)}}else if(output.streamMode){printListJsonStream(commandName,result,output.effectiveGlobal)}else{printResult(result,output.effectiveGlobal)}}async function runRegisteredListCommand(params){const parsedGlobalOptions=getGlobalOptions(params.actionCommand);const globalOptions=params.aliasContract?{...parsedGlobalOptions,command:params.aliasContract.canonical}:parsedGlobalOptions;const startedAt=Date.now();if(params.aliasContract?.lifecycle==="deprecated"){const deprecationHints=await readSettings(resolvePmRoot(process.cwd(),globalOptions.path)).then(settings=>settings.ux.deprecation_hints);if(deprecationHints){printError(renderPmCommandAliasMigrationHint(params.aliasContract))}}const intentOptions=applyContextIntentProjection("list",params.options);const listOptions=normalizeListOptions(intentOptions);const selection=resolveRegisteredListSelection(params,listOptions);const{effectiveName,effectiveStatus,effectiveDependencyBlocked,effectiveExcludeTerminal}=selection;applyDefaultListProjection(listOptions,effectiveName);Object.assign(listOptions,{projectionCommand:effectiveName});if(effectiveExcludeTerminal)listOptions.excludeTerminal=true;listOptions.dependencyBlocked=effectiveDependencyBlocked;const output=resolveRegisteredListOutputContext(intentOptions,globalOptions);const result=await runList(effectiveDependencyBlocked?void 0:effectiveStatus,listOptions,globalOptions);renderRegisteredListResult("list",result,output);if(globalOptions.profile){printError(`profile:command=list took_ms=${Date.now()-startedAt}`)}}function resolveRegisteredListSelection(params,listOptions){let effectiveName=params.name;let effectiveStatus=params.status;let effectiveDependencyBlocked=params.dependencyBlocked===true;let effectiveExcludeTerminal=params.excludeTerminal===true;const requestedStatus=listOptions.status?.trim().toLowerCase();const requestedVariant=params.name==="list"&&requestedStatus!==void 0?CANONICAL_LIST_STATUS_VARIANTS[requestedStatus]:void 0;if(params.name==="list"){if(params.options.all===true||requestedStatus==="all"){effectiveName="list-all";effectiveExcludeTerminal=false;listOptions.status=void 0}else if(requestedStatus!==void 0&&requestedVariant!==void 0){effectiveName=requestedVariant.name;effectiveStatus=requestedStatus;effectiveDependencyBlocked=requestedVariant.dependencyBlocked;effectiveExcludeTerminal=false;listOptions.status=void 0}}if(effectiveName==="list-open"||effectiveName==="list-in-progress"){listOptions.lifecycleBucket=effectiveName==="list-open"?"open":"in_progress";effectiveStatus=void 0}return{effectiveName,effectiveStatus,effectiveDependencyBlocked,effectiveExcludeTerminal}}function registerListCommand(program,descriptor){const{name,description,status,excludeTerminal,allowStatusFilter,dependencyBlocked,aliasContract}=descriptor;const command=program.command(name,{hidden:aliasContract?.hidden===true}).description(description);if(allowStatusFilter){command.option("--status <value>","Filter by status (repeatable or comma-separated; matches any; all selects every status)",collect)}if(name==="list"){command.option("--all","Include every lifecycle status")}command.option("--for <intent>",`Apply a declared context intent projection. ${renderPmClosedDomainHelp("list","--for")}`).option("--token-budget <n>","Override the selected intent's maximum estimated output tokens").option("--type <value>","Filter by item type (repeatable or comma-separated; matches any)",collect).option("--tag <value>","Filter by tag (repeatable or comma-separated; matches any)",collect).option("--priority <value>","Filter by priority (repeatable or comma-separated; matches any)",collect).option("--deadline-before <value>","Filter by deadline upper bound (ISO/date string or relative)").option("--deadline-after <value>","Filter by deadline lower bound (ISO/date string or relative)").option("--today","Filter to items updated since local midnight today").option("--recent","Filter to items updated in the last 7 days").option("--updated-after <value>","Updated since ISO timestamp or signed relative (-2h/-7d for past); use last-window ISO").option("--updated-before <value>","Filter by updated_at upper bound: ISO timestamp or signed relative (-2h/+1d)").option("--created-after <value>","Filter by created_at lower bound: ISO timestamp or signed relative (-2h/+1d)").option("--created-before <value>","Filter by created_at upper bound: ISO timestamp or signed relative (-2h/+1d)").option("--ids <value>","Filter by explicit item IDs (comma-separated or repeatable)").option("--assignee <value>","Filter by assignee",collect).option("--assignee-filter <value>","Filter assignee presence: assigned|unassigned").option("--parent <value>","Filter by parent item ID").option("--sprint <value>","Filter by sprint",collect).option("--release <value>","Filter by release",collect).option("--filter-ac-missing","Show only items missing acceptance_criteria").option("--filter-estimates-missing","Show only items missing estimated_minutes").option("--filter-resolution-missing","Show only terminal items missing resolution").option("--filter-metadata-missing","Show only items missing any tracked metadata (AC, estimate, or resolution)").option("--limit <n>","Alias for --output-limit; --output-budget may cap rows").option("--offset <n>","Skip the first n matching rows before limit is applied").option("--after <cursor>","Continue after an opaque next_cursor from a previous list response").option("--no-truncate","Return every matched row after the explicit status and field filters").option("--include-body","Include item body in each returned list row").option("--strict-read","Fail closed if any item document or item directory cannot be read").option("--compact","Render compact list projection fields (mutually exclusive with --brief/--full/--fields)").option("--brief","Ultra-compact output: id, status, type, title only (agent-optimized, mutually exclusive with --compact/--full/--fields)").option("--full","Render full list projection fields (mutually exclusive with --compact/--brief/--fields)").option("--fields <value>",`Render custom comma-separated list fields (mutually exclusive with --compact/--brief/--full). ${renderPmClosedDomainHelp(name,"--fields")}`).option("--sort <value>","Sort field: priority|deadline|updated_at|created_at|title|parent (aliases: updated, created)").option("--order <value>","Sort order: asc|desc (requires --sort)").option("--tree","Render rows in parent/child tree order").option("--tree-depth <n>","Maximum recursion depth with --tree (0 keeps root rows only)").option("--format <value>","Output render mode: csv|table (human export) or json|ndjson|toon (machine output override)").option("--stream","Emit line-delimited JSON rows (requires --json)");registerContentAndGovernanceFilters(command);command.action(async(options,actionCommand)=>{await runRegisteredListCommand({name,status,excludeTerminal,dependencyBlocked,options,actionCommand,aliasContract})});addHiddenOption(command,"--tags <value>","Alias for --tag");addHiddenOption(command,"--assignee_filter <value>","Alias for --assignee-filter");addHiddenOption(command,"--tree_depth <n>","Alias for --tree-depth");addHiddenOption(command,"--token_budget <n>","Alias for --token-budget");addHiddenOption(command,"--filter-estimate-missing","Alias for --filter-estimates-missing")}async function runAggregateAction(options,command){const globalOptions=getGlobalOptions(command);const startedAt=Date.now();const result=await runAggregate(normalizeAggregateOptions(options),globalOptions);printResult(result,globalOptions);if(globalOptions.profile){printError(`profile:command=aggregate took_ms=${Date.now()-startedAt}`)}}async function runContextAction(options,actionCommand){const globalOptions=getGlobalOptions(actionCommand);const startedAt=Date.now();const normalized=normalizeContextOptions(applyContextIntentProjection("context",options));const result=await runContext(normalized,globalOptions);const outputFormat=resolveContextOutputFormat(normalized,globalOptions);if(outputFormat==="markdown"){if(!globalOptions.quiet){writeStdout(`${renderContextMarkdown(result)}
4
- `)}}else if(outputFormat==="ndjson"){setActiveCommandResult(result);const rendered=serializeNdjsonRows([...result.high_level,...result.low_level,...result.blocked_fallback]);if(!globalOptions.quiet&&rendered.length>0){writeStdout(`${rendered}
5
- `)}}else{printResult(result,{...globalOptions,json:outputFormat==="json"})}if(globalOptions.profile){printError(`profile:command=context took_ms=${Date.now()-startedAt}`)}}async function runNextAction(options,actionCommand){const globalOptions=getGlobalOptions(actionCommand);const startedAt=Date.now();const nextOptions=normalizeNextOptions(applyContextIntentProjection("next",options));const result=await runNext(nextOptions,globalOptions);const outputFormat=resolveNextOutputFormat(nextOptions,globalOptions);if(outputFormat==="markdown"){if(!globalOptions.quiet){writeStdout(`${renderNextMarkdown(result)}
6
- `)}}else{printResult(result,{...globalOptions,json:outputFormat==="json"})}if(globalOptions.profile){printError(`profile:command=next took_ms=${Date.now()-startedAt}`)}}async function runSearchAction(keywords,options,command){const globalOptions=getGlobalOptions(command);const startedAt=Date.now();const query=normalizeSearchKeywordsInput(keywords);const intentOptions=applyContextIntentProjection("search",options,[query]);const searchOptions=normalizeSearchOptions(intentOptions);const result=await runSearch(query,searchOptions,globalOptions);const outputFormat=typeof intentOptions.format==="string"?intentOptions.format.trim().toLowerCase():void 0;const effectiveGlobal=resolveReadCommandOutputFormat("Search",intentOptions.format,globalOptions,true);if(outputFormat==="ndjson"){setActiveCommandResult(result);const rendered=serializeNdjsonRows(result.items);if(!effectiveGlobal.quiet&&rendered.length>0){writeStdout(`${rendered}
7
- `)}}else{printResult(result,effectiveGlobal)}if(globalOptions.profile){printError(`profile:command=search took_ms=${Date.now()-startedAt}`)}}async function runEvalAction(options,command){const globalOptions=getGlobalOptions(command);const startedAt=Date.now();const result=await runEval({mode:typeof options.mode==="string"?options.mode:void 0,k:typeof options.k==="string"?options.k:void 0,failUnder:typeof options.failUnder==="string"?options.failUnder:void 0,queries:typeof options.queries==="string"?options.queries:void 0,format:typeof options.format==="string"?options.format:void 0},globalOptions);printResult(result,resolveReadCommandOutputFormat("Eval",options.format,globalOptions));if(globalOptions.profile){printError(`profile:command=eval took_ms=${Date.now()-startedAt}`)}if(!result.passed){throw new PmCliError("Eval gate failed: one or more aggregate or per-query thresholds were not met; inspect the metric report",EXIT_CODE.GENERIC_FAILURE)}}async function runGetAction(id,options,command){const globalOptions=getGlobalOptions(command);const startedAt=Date.now();const intentOptions=applyContextIntentProjection("get",options,[id]);const result=await runGet(id,globalOptions,{depth:typeof intentOptions.depth==="string"?intentOptions.depth:void 0,fields:typeof intentOptions.fields==="string"?intentOptions.fields:void 0,full:Boolean(intentOptions.full),tree:intentOptions.tree===true,treeDepth:typeof intentOptions.treeDepth==="string"?intentOptions.treeDepth:typeof intentOptions.tree_depth==="string"?intentOptions.tree_depth:void 0,at:typeof intentOptions.at==="string"?intentOptions.at:void 0});printResult(result,resolveReadCommandOutputFormat("Get",intentOptions.format,globalOptions));if(globalOptions.profile){printError(`profile:command=get took_ms=${Date.now()-startedAt}`)}}async function runHistoryAction(id,options,command){const globalOptions=getGlobalOptions(command);const startedAt=Date.now();if([options.compact,options.raw,options.full,options.provenance].filter(value=>value===true).length>1){throw new PmCliError("History projection options are mutually exclusive. Use --compact, --provenance, or --full.",EXIT_CODE.USAGE)}const field=typeof options.field==="string"?options.field:void 0;const strictExit=Boolean(options.strictExit)||Boolean(options.failOnWarn);if(strictExit&&!options.verify){throw new PmCliError("--strict-exit requires --verify (it gates on the verification result).",EXIT_CODE.USAGE)}const result=await runHistory(id,{limit:typeof options.limit==="string"?options.limit:void 0,compact:options.full===true||options.provenance===true?false:true,provenance:options.provenance===true,provenanceSummary:options.provenanceSummary===true,harness:readRepeatableStringOption(options,"harness"),agentInstance:readRepeatableStringOption(options,"agentInstance"),provenanceFilter:readRepeatableStringOption(options,"provenanceFilter"),diff:Boolean(options.diff)||field!==void 0,field,verify:Boolean(options.verify)},globalOptions);printResult(result,resolveReadCommandOutputFormat("History",options.format,globalOptions));if(strictExit&&result.verification&&!result.verification.ok){process.exitCode=EXIT_CODE.GENERIC_FAILURE}if(globalOptions.profile){printError(`profile:command=history took_ms=${Date.now()-startedAt}`)}}function readRepeatableStringOption(options,key){const value=options[key];return Array.isArray(value)?value:void 0}function buildMutationEventOptions(options,pmRoot){const harness=readRepeatableStringOption(options,"harness");const agentInstance=readRepeatableStringOption(options,"agentInstance");const provenanceFilter=readRepeatableStringOption(options,"provenanceFilter");const rawCursorMode=typeof options.cursorMode==="string"?options.cursorMode:void 0;if(rawCursorMode!==void 0&&rawCursorMode!=="batch"&&rawCursorMode!=="row"){throw new PmCliError("Events --cursor-mode must be batch or row.",EXIT_CODE.USAGE,{code:"invalid_event_cursor_mode"})}const cursorMode=rawCursorMode;return{pmRoot,since:typeof options.since==="string"?options.since:void 0,type:readRepeatableStringOption(options,"type"),author:readRepeatableStringOption(options,"author"),item:readRepeatableStringOption(options,"item"),limit:typeof options.limit==="string"?Number(options.limit):void 0,full:options.full===true,...options.provenance===true?{provenance:true}:{},...options.provenanceSummary===true?{provenanceSummary:true}:{},...harness===void 0?{}:{harness},...agentInstance===void 0?{}:{agentInstance},...provenanceFilter===void 0?{}:{provenanceFilter},cursorMode}}async function followMutationEvents(eventOptions,options,quiet){if(options.provenanceSummary===true){throw new PmCliError("Events --provenance-summary is bounded to one page and cannot be combined with --follow.",EXIT_CODE.USAGE)}const intervalMs=typeof options.intervalMs==="string"?Number(options.intervalMs):void 0;if(eventOptions.cursorMode==="row"){for await(const event of subscribeMutationEvents({...eventOptions,intervalMs})){if(!quiet){writeStdout(`${JSON.stringify(event)}
8
- `)}}return}for await(const page of subscribeMutationEventBatches({...eventOptions,intervalMs})){if(!quiet){writeStdout(`${serializeNdjsonStream(page.events,{count:page.count,has_more:page.has_more,next_cursor:page.next_cursor??null,source:page.source,heartbeat:page.count===0})}
9
- `)}}}function renderMutationEventPage(page){if(page.cursor_mode==="row"){return serializeNdjsonRows(page.events)}return serializeNdjsonStream(page.events,{count:page.count,has_more:page.has_more,next_cursor:page.next_cursor??null,source:page.source,...page.provenance_summary===void 0?{}:{provenance_summary:page.provenance_summary}})}async function runEventsAction(options,command){const globalOptions=getGlobalOptions(command);const startedAt=Date.now();const eventOptions=buildMutationEventOptions(options,globalOptions.path);if(options.follow===true){await followMutationEvents(eventOptions,options,globalOptions.quiet===true);return}const page=await listMutationEvents(eventOptions);setActiveCommandResult(page);if(globalOptions.json){printResult(page,globalOptions);if(globalOptions.profile){printError(`profile:command=events took_ms=${Date.now()-startedAt}`)}return}const rendered=renderMutationEventPage(page);if(!globalOptions.quiet&&rendered.length>0){writeStdout(`${rendered}
10
- `)}if(globalOptions.profile){printError(`profile:command=events took_ms=${Date.now()-startedAt}`)}}async function runGraphAction(subcommand,id,target,options,command){const globalOptions=getGlobalOptions(command);const startedAt=Date.now();const result=await runGraph(subcommand,id,target,{...Array.isArray(options.kind)?{kind:options.kind}:{},maxDepth:typeof options.maxDepth==="string"?options.maxDepth:void 0,limit:typeof options.limit==="string"?options.limit:void 0,after:typeof options.after==="string"?options.after:void 0,direction:typeof options.direction==="string"?options.direction:void 0,maxPaths:typeof options.maxPaths==="string"?options.maxPaths:void 0,sample:typeof options.sample==="string"?options.sample:void 0,...Array.isArray(options.exemptIsolate)?{exemptIsolate:options.exemptIsolate}:{},...Array.isArray(options.exemptIsolateType)?{exemptIsolateType:options.exemptIsolateType}:{},saveBaseline:options.saveBaseline===true,rebuild:options.rebuild===true,clear:options.clear===true,summary:options.summary===true,full:options.full===true},globalOptions);printResult(result,globalOptions);if(globalOptions.profile){printError(`profile:command=graph took_ms=${Date.now()-startedAt}`)}}function registerListQueryCommands(program,options){const commandFilter=options?.commandFilter;const shouldRegister=commandName=>shouldRegisterListQueryCommand(commandName,commandFilter);const listCommandDescriptors=[{name:"list",description:"List active items with optional lifecycle-status and project filters.",excludeTerminal:true,allowStatusFilter:true},{name:"list-all",description:"List all items with optional filters.",excludeTerminal:false,allowStatusFilter:true},{name:"list-draft",description:"List draft items with optional filters.",status:"draft"},{name:"list-open",description:"List open items with optional filters.",status:"open",excludeTerminal:false,allowStatusFilter:false},{name:"list-in-progress",description:"List in-progress items with optional filters.",status:"in_progress",excludeTerminal:false,allowStatusFilter:false},{name:"list-blocked",description:"List blocked items (blocked status or open blocked_by dependencies, matching pm next) with optional filters.",dependencyBlocked:true,excludeTerminal:false,allowStatusFilter:false},{name:"list-closed",description:"List closed items with optional filters.",status:"closed"},{name:"list-canceled",description:"List canceled items with optional filters.",status:"canceled"}];for(const descriptor of listCommandDescriptors){if(shouldRegister(descriptor.name)){const aliasContract=resolvePmCommandAlias(descriptor.name);registerListCommand(program,{...descriptor,...aliasContract?.registration==="commander"?{aliasContract}:{}})}}if(shouldRegister("aggregate")){const aggregateCommand=program.command("aggregate").description("Group item counts and numeric measures.").option("--set-mode <value>","Set grouping: element (default)|tuple").option("--limit <value>","Group page size (default: 50)").option("--after <value>","Continue with next_after cursor").option("--group-by <value>","Fields: parent,type,priority,status,assignee,tags,sprint,release (comma-separated)").option("--count","Counts (default)").option("--completion","Status counts and completion_pct").option("--sum <field>","Group numeric sum").option("--avg <field>","Group numeric average").option("--include-unparented","Keep unparented group").option("--status <value>","Item status").option("--type <value>","Item type").option("--tag <value>","Filter by tag").option("--priority <value>","Filter by priority").option("--deadline-before <value>","Latest deadline (ISO/date or relative)").option("--deadline-after <value>","Earliest deadline (ISO/date or relative)").option("--assignee <value>","Filter by assignee").option("--assignee-filter <value>","Assignee presence: assigned|unassigned").option("--parent <value>","Parent ID").option("--sprint <value>","Filter by sprint").option("--release <value>","Filter by release");addHiddenOption(aggregateCommand,"--include_unparented","Alias for --include-unparented");addHiddenOption(aggregateCommand,"--assignee_filter <value>","Alias for --assignee-filter");aggregateCommand.action(runAggregateAction)}if(shouldRegister("context")){const contextCommand=program.command("context").alias("ctx").description("Show a token-efficient project context snapshot for next-work decisions.").option("--for <intent>",`Apply a declared context intent projection. ${renderPmClosedDomainHelp("context","--for")}`).option("--date <value>","Anchor date/time for agenda window calculations (ISO/date string or relative)").option("--from <value>","Agenda lower bound (ISO/date string or relative)").option("--to <value>","Agenda upper bound (ISO/date string or relative)").option("--past","Include past agenda entries in bounded windows").option("--type <value>","Filter by item type").option("--tag <value>","Filter by tag").option("--priority <value>","Filter by priority").option("--assignee <value>","Filter by assignee").option("--assignee-filter <value>","Filter assignee presence: assigned|unassigned").option("--sprint <value>","Filter by sprint").option("--release <value>","Filter by release").option("--parent <id>","Scope the snapshot to one item's subtree (the item plus all descendants)").option("--limit <n>","Limit focus and agenda rows per section").option("--after <cursor>","Continue ranked focus after a next_cursor from a previous context response").option("--format <value>","Context output format override: markdown|toon|json|ndjson").option("--depth <value>","Context depth: brief|standard|deep|full (full = every section, no per-section cap)").option("--section <value...>","Include specific sections (repeatable; overrides --depth)").option("--fields <value>","Project focus rows to a comma-separated field subset (e.g. id,title,priority)").option("--activity-limit <n>","Limit recent activity entries (default: settings or 10)").option("--stale-threshold <value>","Staleness cutoff in days (e.g. 7 or 7d; default: settings or 7)").option("--explain-ranking","Include the scorer model, per-signal contributions, and ranked candidate ids").option("--token-budget <n>","Maximum estimated tokens spent on ranked focus rows").option("--no-extension-health","Omit the installed extension health summary").option("--no-tags","Omit tag arrays from context focus rows");addHiddenOption(contextCommand,"--assignee_filter <value>","Alias for --assignee-filter");addHiddenOption(contextCommand,"--max-items <n>","Alias for --limit");addHiddenOption(contextCommand,"--explain_ranking","Alias for --explain-ranking");addHiddenOption(contextCommand,"--token_budget <n>","Alias for --token-budget");contextCommand.action(runContextAction)}if(shouldRegister("next")){const nextCommand=program.command("next").description("Recommend the next actionable (unblocked, ready) work item with rationale + blocked companion.").option("--for <intent>",`Apply a declared context intent projection. ${renderPmClosedDomainHelp("next","--for")}`).option("--type <value>","Filter candidate items by type").option("--tag <value>","Filter candidate items by tag").option("--priority <value>","Filter candidate items by priority").option("--assignee <value>","Filter candidate items by assignee").option("--assignee-filter <value>","Filter assignee presence: assigned|unassigned").option("--sprint <value>","Filter candidate items by sprint").option("--release <value>","Filter candidate items by release").option("--parent <id>","Scope to one item's subtree (the item plus all descendants)").option("--limit <n>","Limit ready rows (default: 5; non-positive falls back to default)").option("--blocked-limit <n>","Limit blocked rows (default: same as --limit)").option("--ready-only","Omit the blocked companion list").option("--include-decisions","Include human-gated Decision items in the claimable ready queue").option("--include-gates","Include outcome gates in the ready queue").option("--include-containers","Include containers with unfinished descendants in the ready queue").option("--format <value>","Next output format override: markdown|toon|json").option("--explain-ranking","Include the scorer model, per-signal contributions, and ranked ready ids").option("--token-budget <n>","Maximum estimated tokens spent on the ranked ready queue");addHiddenOption(nextCommand,"--assignee_filter <value>","Alias for --assignee-filter");addHiddenOption(nextCommand,"--blocked_limit <n>","Alias for --blocked-limit");addHiddenOption(nextCommand,"--ready_only","Alias for --ready-only");addHiddenOption(nextCommand,"--explain_ranking","Alias for --explain-ranking");addHiddenOption(nextCommand,"--token_budget <n>","Alias for --token-budget");nextCommand.action(runNextAction)}if(shouldRegister("search")){const searchCommand=program.command("search").argument("<keywords...>","Keyword query tokens").description("Search items with keyword, semantic, or hybrid retrieval. Inline field:value tokens (tag:/status:/type:/priority:) in the query are parsed as filters, e.g. 'auth tag:area:search status:open'.").option("--for <intent>",`Apply a declared context intent projection. ${renderPmClosedDomainHelp("search","--for")}`).option("--token-budget <n>","Override the selected intent's maximum estimated output tokens").option("--mode <value>","Search mode: keyword|semantic|hybrid (default: auto)").option("--semantic","Shorthand for --mode semantic").option("--hybrid","Shorthand for --mode hybrid").option("--match-mode <value>","Token match mode: and|or|exact (default: or with all-terms ranking bonus; and = hard-require every token; exact = exact phrase)").option("--min-score <value>","Per-query minimum score threshold (finite number >= 0); overrides settings search.score_threshold for this query only").option("--count","Return only the count of matching items (post-filter/threshold, pre-limit); skips hit rows").option("--semantic-weight <value>","Override hybrid semantic weight for this query (0..1); invalid values fall back to settings").option("--include-linked","Include linked files, docs, and tests in the searchable corpus").option("--title-exact","Require exact normalized title match for the full query string").option("--phrase-exact","Require exact normalized phrase match in searchable text").option("--highlight","Emit per-field matched-text snippets (wrapped in \xAB\u2026\xBB) on each hit; off by default").option("--status <value>","Filter by status before query (all, open/closed/canceled aliases, or configured status id; CSV)").option("--type <value>","Filter by item type").option("--tag <value>","Filter by tag").option("--priority <value>","Filter by priority").option("--deadline-before <value>","Filter by deadline upper bound (ISO/date string or relative)").option("--deadline-after <value>","Filter by deadline lower bound (ISO/date string or relative)").option("--updated-after <value>",'Filter by updated_at lower bound: ISO timestamp or signed relative (e.g. "-2h"/"-7d" for the past)').option("--updated-before <value>","Filter by updated_at upper bound: ISO timestamp or signed relative (-2h/+1d)").option("--created-after <value>","Filter by created_at lower bound: ISO timestamp or signed relative (-2h/+1d)").option("--created-before <value>","Filter by created_at upper bound: ISO timestamp or signed relative (-2h/+1d)").option("--assignee <value>","Filter by assignee").option("--sprint <value>","Filter by sprint").option("--release <value>","Filter by release").option("--parent <value>","Filter by parent item ID").option("--compact","Render compact search hits (default; mutually exclusive with --full/--fields)").option("--full","Render full search hits with nested item payloads (mutually exclusive with --compact/--fields)").option("--fields <value>",`Render custom comma-separated search hit fields (mutually exclusive with --compact/--full). ${renderPmClosedDomainHelp("search","--fields")}`).option("--format <value>","Search output format override: json|ndjson|toon").option("--limit <n>","Limit returned item count").option("--after <cursor>","Continue after an opaque next_cursor from a previous search response");registerContentAndGovernanceFilters(searchCommand);searchCommand.action(runSearchAction);addHiddenOption(searchCommand,"--tags <value>","Alias for --tag");addHiddenOption(searchCommand,"--token_budget <n>","Alias for --token-budget")}if(shouldRegister("eval")){program.command("eval").description("Evaluate search relevance against a curated golden-query set: reports nDCG@k, MRR@k, precision@k, and recall@k per query plus the macro average. Use --fail-under as a CI gate.").option("--mode <value>","Default retrieval mode for queries without their own: keyword|semantic|hybrid (default: keyword)").option("--k <n>","Metric cutoff @k (positive integer; default: 10)").option("--fail-under <value>","Exit non-zero when aggregate nDCG@k falls below this threshold (0..1); CI gate").option("--queries <path>",`Query JSON (${EVAL_QUERY_SET_SCHEMA_ID}); default: search/eval-queries.json; errors show an example`).option("--format <value>","Eval output format override: json|toon").action(runEvalAction)}if(shouldRegister("get")){const getCommand=program.command("get").argument("<id>","Item id").option("--for <intent>",`Apply a declared context intent projection. ${renderPmClosedDomainHelp("get","--for")}`).option("--token-budget <n>","Override the selected intent's maximum estimated output tokens").option("--depth <value>","brief|standard|deep|full (default: standard)").option("--full","Full details and children for any type; excludes --depth/--fields").option("--fields <value>",`Render custom comma-separated item metadata fields. ${renderPmClosedDomainHelp("get","--fields")}`).option("--tree","Include descendants rooted at the requested item").option("--tree-depth <n>","Maximum subtree depth for --tree descendants").option("--at <version-or-timestamp>","Reconstruct a verified historical item state without mutating it").option("--format <value>","Get output format override: json|toon").description("Show item details by ID.").action(runGetAction);addHiddenOption(getCommand,"--tree_depth <n>","Alias for --tree-depth");addHiddenOption(getCommand,"--token_budget <n>","Alias for --token-budget")}if(shouldRegister("history")){const historyCommand=program.command("history").enablePositionalOptions().argument("<id>","Item id").option("--limit <n>","Latest n entries").option("--compact","Index, time, op, author, patch count, fields").option("--full","Full entries with JSON Patches").option("--provenance","Authors and provenance; no patches").option("--provenance-summary","Count provenance completeness").option("--harness <value>","Recorded/resolved harness (repeatable)",collect).option("--agent-instance <value>","Agent instance (repeatable)",collect).option("--provenance-filter <dimension=value>","Exact provenance match (repeatable)",collect).option("--diff","Before/after field diffs").option("--field <name>","Filter changed field; implies --diff").option("--verify","Verify full chain and replay").option("--strict-exit","With --verify, fail on integrity errors").option("--fail-on-warn","Alias for --strict-exit").option("--format <value>","Output: json|toon").description("Show item history entries.").action(runHistoryAction);registerHistoryMaintenanceCommands(historyCommand,true);registerHistoryActivityCommand(historyCommand.command("activity"))}if(shouldRegister("events")){program.command("events").option("--since <cursor-or-timestamp>","Resume strictly after a durable cursor, or include events from an ISO timestamp").option("--type <value>","Filter by mutation operation (repeatable or comma-separated)",collect).option("--author <value>","Filter by mutation author (repeatable or comma-separated)",collect).option("--item <value>","Filter by item or workspace stream id (repeatable or comma-separated)",collect).option("--limit <n>","Return at most 1,000 events (default: 100)").option("--cursor-mode <mode>","Cursor framing: batch emits one terminal trailer (default); row preserves one cursor per event").option("--full","Include each complete authoritative history entry").option("--provenance","Include patch-free author, harness, instance, and extensible provenance").option("--provenance-summary","Include bounded provenance completeness counts").option("--harness <value>","Filter by recorded or vocabulary-resolved harness (repeatable)",collect).option("--agent-instance <value>","Filter by privacy-safe agent instance (repeatable)",collect).option("--provenance-filter <dimension=value>","Filter by an exact declared provenance value (repeatable)",collect).option("--follow","Continue emitting committed events as newline-delimited JSON").option("--interval-ms <n>","Empty-read delay while following (minimum: 10ms; default: 250ms)").description("Emit cursor-resumable committed mutation facts as newline-delimited JSON.").action(runEventsAction)}if(shouldRegister("activity")){registerHistoryActivityCommand(program.command("activity",{hidden:true}))}if(shouldRegister("graph")){program.command("graph").argument("<subcommand>","Graph query (ancestors, descendants, predecessors, successors, paths, impact, analyze, audit, communities, redundancy, dominators, slack, centrality, articulation, plan, index)").argument("[id]","Root item id (traversals, paths, impact, and dominators)").argument("[target]","Target item id (paths only)").option("--kind <value>","Restrict traversal to registered relationship kinds (repeatable or comma-separated)",collect).option("--max-depth <value>","Maximum traversal depth (non-negative integer)").option("--limit <value>","Maximum returned rows per bounded collection").option("--after <value>","Resume a traversal after this previously returned node id").option("--direction <value>","Edge orientation for paths/impact (outgoing, incoming, or both)").option("--max-paths <value>","Maximum enumerated paths (paths only)").option("--sample <value>","Maximum evidence sample entries per audit finding (audit only)").option("--exempt-isolate <value>","Item ids treated as explicitly valid isolates by the audit (repeatable or comma-separated)",collect).option("--exempt-isolate-type <value>","Item types whose active isolates are policy-valid for the audit (repeatable or comma-separated)",collect).option("--save-baseline","Persist the audit census as the change-since-baseline comparison point (audit only)").option("--rebuild","Rebuild and warm the durable graph index (index only)").option("--clear","Delete the durable graph index (index only)").option("--summary","Return counts-first envelopes without row collections").option("--full","Return the complete graph row projection").description("Bounded workspace relationship-graph queries, analytics, and governance audit.").action(runGraphAction)}}const _testOnlyRegisterListQuery={resolveReadCommandOutputFormat,parseListFormat};export{_testOnlyRegisterListQuery,registerListQueryCommands};
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]="292959c7-8371-5ea6-be0d-350444dca8ef")}catch{}})();import{EXIT_CODE,PmCliError,readSettings,renderRowsAsCsv,renderRowsAsTable,resolvePmRoot}from"../sdk/runtime-primitives.js";import{renderPmCommandAliasMigrationHint,resolvePmCommandAlias}from"../sdk/cli-contracts.js";import{EVAL_QUERY_SET_SCHEMA_ID}from"../sdk/eval.js";import{applyContextIntentProjection}from"../sdk/context-intent-contracts.js";import{renderPmClosedDomainHelp}from"../sdk/agent/closed-domain-contracts.js";import{serializeNdjsonRows,serializeNdjsonStream}from"../sdk/output.js";import{listMutationEvents,subscribeMutationEventBatches,subscribeMutationEvents}from"../sdk/mutation-events.js";import{registerHistoryActivityCommand}from"./register-history-activity.js";import{registerHistoryMaintenanceCommands}from"./register-history-maintenance.js";import{runAggregate}from"./commands/query/aggregate.js";import{renderContextMarkdown,runContext,resolveContextOutputFormat}from"./commands/query/context.js";import{runEval}from"./commands/query/eval.js";import{runGet}from"./commands/query/get.js";import{runGraph}from"./commands/query/graph.js";import{runHistory}from"./commands/history/history.js";import{runList}from"./commands/query/list.js";import{LIST_COMMAND_DEFAULT_PROJECTIONS}from"../sdk/query/list.js";import{renderNextMarkdown,runNext,resolveNextOutputFormat}from"./commands/query/next.js";import{runSearch}from"./commands/query/search.js";import{addHiddenOption,collect,getGlobalOptions,normalizeAggregateOptions,normalizeContextOptions,normalizeListOptions,normalizeNextOptions,normalizeSearchKeywordsInput,normalizeSearchOptions,printError,printListJsonStream,printResult,setActiveCommandResult,writeStdout}from"./registration-helpers.js";function shouldRegisterListQueryCommand(commandName,commandFilter){return!commandFilter||commandFilter.size===0?!0:commandName==="context"?commandFilter.has("context")||commandFilter.has("ctx"):commandFilter.has(commandName)}function parseListFormat(rawFormat){if(rawFormat===void 0)return;if(typeof rawFormat!="string")throw new PmCliError("List --format must be one of csv|table|json|ndjson|toon",EXIT_CODE.USAGE);const normalized=rawFormat.trim().toLowerCase();if(normalized==="csv"||normalized==="table"||normalized==="json"||normalized==="ndjson"||normalized==="toon")return normalized;throw new PmCliError("List --format must be one of csv|table|json|ndjson|toon",EXIT_CODE.USAGE)}function resolveReadCommandOutputFormat(commandLabel,rawFormat,globalOptions,allowNdjson=!1){if(rawFormat===void 0)return globalOptions;if(typeof rawFormat!="string")throw new PmCliError(`${commandLabel} --format must be one of ${allowNdjson?"json|ndjson|toon":"json|toon"}`,EXIT_CODE.USAGE);const normalized=rawFormat.trim().toLowerCase();if(normalized!=="json"&&(normalized!=="ndjson"||!allowNdjson)&&normalized!=="toon")throw new PmCliError(`${commandLabel} --format must be one of ${allowNdjson?"json|ndjson|toon":"json|toon"}`,EXIT_CODE.USAGE);if(globalOptions.json===!0&&normalized==="toon")throw new PmCliError(`${commandLabel} cannot combine --json with --format toon`,EXIT_CODE.USAGE);return{...globalOptions,json:normalized==="json"||normalized==="ndjson"}}function applyDefaultListProjection(listOptions,commandName){LIST_COMMAND_DEFAULT_PROJECTIONS[commandName]==="brief"&&listOptions.includeBody!==!0&&listOptions.compact!==!0&&listOptions.brief!==!0&&listOptions.full!==!0&&listOptions.fields===void 0&&(listOptions.brief=!0)}function registerContentAndGovernanceFilters(command){command.option("--has-notes","Show only items that have notes").option("--has-learnings","Show only items that have learnings").option("--has-files","Show only items that have linked files").option("--has-docs","Show only items that have linked docs").option("--has-tests","Show only items that have linked tests").option("--has-comments","Show only items that have comments").option("--has-deps","Show only items that have dependencies").option("--has-body","Show only items that have a non-empty body").option("--has-linked-command","Show only items whose linked tests carry a runnable command").option("--no-notes","Show only items that have no notes").option("--no-learnings","Show only items that have no learnings").option("--no-files","Show only items that have no linked files").option("--filter-files-missing","Alias for --no-files").option("--no-docs","Show only items that have no linked docs").option("--filter-docs-missing","Alias for --no-docs").option("--no-tests","Show only items that have no linked tests").option("--no-comments","Show only items that have no comments").option("--no-deps","Show only items that have no dependencies").option("--empty-body","Show only items with an empty body").option("--no-linked-command","Show only items whose linked tests carry no runnable command").option("--filter-reviewer-missing","Show only items missing reviewer").option("--filter-risk-missing","Show only items missing risk").option("--filter-confidence-missing","Show only items missing confidence").option("--filter-sprint-missing","Show only items missing sprint").option("--filter-release-missing","Show only items missing release")}const CANONICAL_LIST_STATUS_VARIANTS={draft:{name:"list-draft",dependencyBlocked:!1},open:{name:"list-open",dependencyBlocked:!1},in_progress:{name:"list-in-progress",dependencyBlocked:!1},blocked:{name:"list-blocked",dependencyBlocked:!0},closed:{name:"list-closed",dependencyBlocked:!1},canceled:{name:"list-canceled",dependencyBlocked:!1}};function resolveRegisteredListOutputContext(options,globalOptions){const streamMode=options.stream===!0,listFormat=parseListFormat(options.format),tabular=listFormat==="csv"||listFormat==="table",effectiveGlobal=listFormat==="json"||listFormat==="ndjson"||listFormat==="toon"?resolveReadCommandOutputFormat("List",options.format,globalOptions,!0):globalOptions;if(streamMode&&!effectiveGlobal.json)throw new PmCliError("--stream requires --json output mode.",EXIT_CODE.USAGE);if((tabular||listFormat==="ndjson")&&streamMode)throw new PmCliError("--format csv|table|ndjson cannot be combined with --stream.",EXIT_CODE.USAGE);return{streamMode,listFormat,effectiveGlobal}}function renderRegisteredListResult(commandName,result,output){if(output.listFormat==="csv"||output.listFormat==="table"){setActiveCommandResult(result);const rows=result.items,rendered=output.listFormat==="csv"?renderRowsAsCsv(rows):renderRowsAsTable(rows);!output.effectiveGlobal.quiet&&rendered.length>0&&writeStdout(`${rendered}
2
+ `)}else if(output.listFormat==="ndjson"){setActiveCommandResult(result);const rendered=serializeNdjsonRows(result.items);!output.effectiveGlobal.quiet&&rendered.length>0&&writeStdout(`${rendered}
3
+ `)}else output.streamMode?printListJsonStream(commandName,result,output.effectiveGlobal):printResult(result,output.effectiveGlobal)}async function runRegisteredListCommand(params){const parsedGlobalOptions=getGlobalOptions(params.actionCommand),globalOptions=params.aliasContract?{...parsedGlobalOptions,command:params.aliasContract.canonical}:parsedGlobalOptions,startedAt=Date.now();params.aliasContract?.lifecycle==="deprecated"&&await readSettings(resolvePmRoot(process.cwd(),globalOptions.path)).then(settings=>settings.ux.deprecation_hints)&&printError(renderPmCommandAliasMigrationHint(params.aliasContract));const intentOptions=applyContextIntentProjection("list",params.options),listOptions=normalizeListOptions(intentOptions),selection=resolveRegisteredListSelection(params,listOptions),{effectiveName,effectiveStatus,effectiveDependencyBlocked,effectiveExcludeTerminal}=selection;applyDefaultListProjection(listOptions,effectiveName),Object.assign(listOptions,{projectionCommand:effectiveName}),effectiveExcludeTerminal&&(listOptions.excludeTerminal=!0),listOptions.dependencyBlocked=effectiveDependencyBlocked;const output=resolveRegisteredListOutputContext(intentOptions,globalOptions),result=await runList(effectiveDependencyBlocked?void 0:effectiveStatus,listOptions,globalOptions);renderRegisteredListResult("list",result,output),globalOptions.profile&&printError(`profile:command=list took_ms=${Date.now()-startedAt}`)}function resolveRegisteredListSelection(params,listOptions){let effectiveName=params.name,effectiveStatus=params.status,effectiveDependencyBlocked=params.dependencyBlocked===!0,effectiveExcludeTerminal=params.excludeTerminal===!0;const requestedStatus=listOptions.status?.trim().toLowerCase(),requestedVariant=params.name==="list"&&requestedStatus!==void 0?CANONICAL_LIST_STATUS_VARIANTS[requestedStatus]:void 0;return params.name==="list"&&(params.options.all===!0||requestedStatus==="all"?(effectiveName="list-all",effectiveExcludeTerminal=!1,listOptions.status=void 0):requestedStatus!==void 0&&requestedVariant!==void 0&&(effectiveName=requestedVariant.name,effectiveStatus=requestedStatus,effectiveDependencyBlocked=requestedVariant.dependencyBlocked,effectiveExcludeTerminal=!1,listOptions.status=void 0)),(effectiveName==="list-open"||effectiveName==="list-in-progress")&&(listOptions.lifecycleBucket=effectiveName==="list-open"?"open":"in_progress",effectiveStatus=void 0),{effectiveName,effectiveStatus,effectiveDependencyBlocked,effectiveExcludeTerminal}}function registerListCommand(program,descriptor){const{name,description,status,excludeTerminal,allowStatusFilter,dependencyBlocked,aliasContract}=descriptor,command=program.command(name,{hidden:aliasContract?.hidden===!0}).description(description);allowStatusFilter&&command.option("--status <value>","Filter by status (repeatable or comma-separated; matches any; all selects every status)",collect),name==="list"&&command.option("--all","Include every lifecycle status"),command.option("--for <intent>",`Apply a declared context intent projection. ${renderPmClosedDomainHelp("list","--for")}`).option("--token-budget <n>","Override the selected intent's maximum estimated output tokens").option("--type <value>","Filter by item type (repeatable or comma-separated; matches any)",collect).option("--tag <value>","Filter by tag (repeatable or comma-separated; matches any)",collect).option("--priority <value>","Filter by priority (repeatable or comma-separated; matches any)",collect).option("--deadline-before <value>","Filter by deadline upper bound (ISO/date string or relative)").option("--deadline-after <value>","Filter by deadline lower bound (ISO/date string or relative)").option("--today","Filter to items updated since local midnight today").option("--recent","Filter to items updated in the last 7 days").option("--updated-after <value>","Updated since ISO timestamp or signed relative (-2h/-7d for past); use last-window ISO").option("--updated-before <value>","Filter by updated_at upper bound: ISO timestamp or signed relative (-2h/+1d)").option("--created-after <value>","Filter by created_at lower bound: ISO timestamp or signed relative (-2h/+1d)").option("--created-before <value>","Filter by created_at upper bound: ISO timestamp or signed relative (-2h/+1d)").option("--ids <value>","Filter by explicit item IDs (comma-separated or repeatable)").option("--assignee <value>","Filter by assignee",collect).option("--assignee-filter <value>","Filter assignee presence: assigned|unassigned").option("--parent <value>","Filter by parent item ID").option("--sprint <value>","Filter by sprint",collect).option("--release <value>","Filter by release",collect).option("--filter-ac-missing","Show only items missing acceptance_criteria").option("--filter-estimates-missing","Show only items missing estimated_minutes").option("--filter-resolution-missing","Show only terminal items missing resolution").option("--filter-metadata-missing","Show only items missing any tracked metadata (AC, estimate, or resolution)").option("--limit <n>","Alias for --output-limit; --output-budget may cap rows").option("--offset <n>","Skip the first n matching rows before limit is applied").option("--after <cursor>","Continue after an opaque next_cursor from a previous list response").option("--no-truncate","Return every matched row after the explicit status and field filters").option("--include-body","Include item body in each returned list row").option("--strict-read","Fail closed if any item document or item directory cannot be read").option("--compact","Render compact list projection fields (mutually exclusive with --brief/--full/--fields)").option("--brief","Ultra-compact output: id, status, type, title only (agent-optimized, mutually exclusive with --compact/--full/--fields)").option("--full","Render full list projection fields (mutually exclusive with --compact/--brief/--fields)").option("--fields <value>",`Render custom comma-separated list fields (mutually exclusive with --compact/--brief/--full). ${renderPmClosedDomainHelp(name,"--fields")}`).option("--sort <value>","Sort field: priority|deadline|updated_at|created_at|title|parent (aliases: updated, created)").option("--order <value>","Sort order: asc|desc (requires --sort)").option("--tree","Render rows in parent/child tree order").option("--tree-depth <n>","Maximum recursion depth with --tree (0 keeps root rows only)").option("--format <value>","Output render mode: csv|table (human export) or json|ndjson|toon (machine output override)").option("--stream","Emit line-delimited JSON rows (requires --json)"),registerContentAndGovernanceFilters(command),command.action(async(options,actionCommand)=>{await runRegisteredListCommand({name,status,excludeTerminal,dependencyBlocked,options,actionCommand,aliasContract})}),addHiddenOption(command,"--tags <value>","Alias for --tag"),addHiddenOption(command,"--assignee_filter <value>","Alias for --assignee-filter"),addHiddenOption(command,"--tree_depth <n>","Alias for --tree-depth"),addHiddenOption(command,"--token_budget <n>","Alias for --token-budget"),addHiddenOption(command,"--filter-estimate-missing","Alias for --filter-estimates-missing")}async function runAggregateAction(options,command){const globalOptions=getGlobalOptions(command),startedAt=Date.now(),result=await runAggregate(normalizeAggregateOptions(options),globalOptions);printResult(result,globalOptions),globalOptions.profile&&printError(`profile:command=aggregate took_ms=${Date.now()-startedAt}`)}async function runContextAction(options,actionCommand){const globalOptions=getGlobalOptions(actionCommand),startedAt=Date.now(),normalized=normalizeContextOptions(applyContextIntentProjection("context",options)),result=await runContext(normalized,globalOptions),outputFormat=resolveContextOutputFormat(normalized,globalOptions);if(outputFormat==="markdown")globalOptions.quiet||writeStdout(`${renderContextMarkdown(result)}
4
+ `);else if(outputFormat==="ndjson"){setActiveCommandResult(result);const rendered=serializeNdjsonRows([...result.high_level,...result.low_level,...result.blocked_fallback]);!globalOptions.quiet&&rendered.length>0&&writeStdout(`${rendered}
5
+ `)}else printResult(result,{...globalOptions,json:outputFormat==="json"});globalOptions.profile&&printError(`profile:command=context took_ms=${Date.now()-startedAt}`)}async function runNextAction(options,actionCommand){const globalOptions=getGlobalOptions(actionCommand),startedAt=Date.now(),nextOptions=normalizeNextOptions(applyContextIntentProjection("next",options)),result=await runNext(nextOptions,globalOptions),outputFormat=resolveNextOutputFormat(nextOptions,globalOptions);outputFormat==="markdown"?globalOptions.quiet||writeStdout(`${renderNextMarkdown(result)}
6
+ `):printResult(result,{...globalOptions,json:outputFormat==="json"}),globalOptions.profile&&printError(`profile:command=next took_ms=${Date.now()-startedAt}`)}async function runSearchAction(keywords,options,command){const globalOptions=getGlobalOptions(command),startedAt=Date.now(),query=normalizeSearchKeywordsInput(keywords),intentOptions=applyContextIntentProjection("search",options,[query]),searchOptions=normalizeSearchOptions(intentOptions),result=await runSearch(query,searchOptions,globalOptions),outputFormat=typeof intentOptions.format=="string"?intentOptions.format.trim().toLowerCase():void 0,effectiveGlobal=resolveReadCommandOutputFormat("Search",intentOptions.format,globalOptions,!0);if(outputFormat==="ndjson"){setActiveCommandResult(result);const rendered=serializeNdjsonRows(result.items);!effectiveGlobal.quiet&&rendered.length>0&&writeStdout(`${rendered}
7
+ `)}else printResult(result,effectiveGlobal);globalOptions.profile&&printError(`profile:command=search took_ms=${Date.now()-startedAt}`)}async function runEvalAction(options,command){const globalOptions=getGlobalOptions(command),startedAt=Date.now(),result=await runEval({mode:typeof options.mode=="string"?options.mode:void 0,k:typeof options.k=="string"?options.k:void 0,failUnder:typeof options.failUnder=="string"?options.failUnder:void 0,queries:typeof options.queries=="string"?options.queries:void 0,format:typeof options.format=="string"?options.format:void 0},globalOptions);if(printResult(result,resolveReadCommandOutputFormat("Eval",options.format,globalOptions)),globalOptions.profile&&printError(`profile:command=eval took_ms=${Date.now()-startedAt}`),!result.passed)throw new PmCliError("Eval gate failed: one or more aggregate or per-query thresholds were not met; inspect the metric report",EXIT_CODE.GENERIC_FAILURE)}async function runGetAction(id,options,command){const globalOptions=getGlobalOptions(command),startedAt=Date.now(),intentOptions=applyContextIntentProjection("get",options,[id]),result=await runGet(id,globalOptions,{depth:typeof intentOptions.depth=="string"?intentOptions.depth:void 0,fields:typeof intentOptions.fields=="string"?intentOptions.fields:void 0,full:!!intentOptions.full,tree:intentOptions.tree===!0,treeDepth:typeof intentOptions.treeDepth=="string"?intentOptions.treeDepth:typeof intentOptions.tree_depth=="string"?intentOptions.tree_depth:void 0,at:typeof intentOptions.at=="string"?intentOptions.at:void 0});printResult(result,resolveReadCommandOutputFormat("Get",intentOptions.format,globalOptions)),globalOptions.profile&&printError(`profile:command=get took_ms=${Date.now()-startedAt}`)}async function runHistoryAction(id,options,command){const globalOptions=getGlobalOptions(command),startedAt=Date.now();if([options.compact,options.raw,options.full,options.provenance].filter(value=>value===!0).length>1)throw new PmCliError("History projection options are mutually exclusive. Use --compact, --provenance, or --full.",EXIT_CODE.USAGE);const field=typeof options.field=="string"?options.field:void 0,strictExit=!!options.strictExit||!!options.failOnWarn;if(strictExit&&!options.verify)throw new PmCliError("--strict-exit requires --verify (it gates on the verification result).",EXIT_CODE.USAGE);const result=await runHistory(id,{limit:typeof options.limit=="string"?options.limit:void 0,compact:!(options.full===!0||options.provenance===!0),provenance:options.provenance===!0,provenanceSummary:options.provenanceSummary===!0,harness:readRepeatableStringOption(options,"harness"),agentInstance:readRepeatableStringOption(options,"agentInstance"),provenanceFilter:readRepeatableStringOption(options,"provenanceFilter"),diff:!!options.diff||field!==void 0,field,verify:!!options.verify},globalOptions);printResult(result,resolveReadCommandOutputFormat("History",options.format,globalOptions)),strictExit&&result.verification&&!result.verification.ok&&(process.exitCode=EXIT_CODE.GENERIC_FAILURE),globalOptions.profile&&printError(`profile:command=history took_ms=${Date.now()-startedAt}`)}function readRepeatableStringOption(options,key){const value=options[key];return Array.isArray(value)?value:void 0}function buildMutationEventOptions(options,pmRoot){const harness=readRepeatableStringOption(options,"harness"),agentInstance=readRepeatableStringOption(options,"agentInstance"),provenanceFilter=readRepeatableStringOption(options,"provenanceFilter"),rawCursorMode=typeof options.cursorMode=="string"?options.cursorMode:void 0;if(rawCursorMode!==void 0&&rawCursorMode!=="batch"&&rawCursorMode!=="row")throw new PmCliError("Events --cursor-mode must be batch or row.",EXIT_CODE.USAGE,{code:"invalid_event_cursor_mode"});const cursorMode=rawCursorMode;return{pmRoot,since:typeof options.since=="string"?options.since:void 0,type:readRepeatableStringOption(options,"type"),author:readRepeatableStringOption(options,"author"),item:readRepeatableStringOption(options,"item"),limit:typeof options.limit=="string"?Number(options.limit):void 0,full:options.full===!0,...options.provenance===!0?{provenance:!0}:{},...options.provenanceSummary===!0?{provenanceSummary:!0}:{},...harness===void 0?{}:{harness},...agentInstance===void 0?{}:{agentInstance},...provenanceFilter===void 0?{}:{provenanceFilter},cursorMode}}async function followMutationEvents(eventOptions,options,quiet){if(options.provenanceSummary===!0)throw new PmCliError("Events --provenance-summary is bounded to one page and cannot be combined with --follow.",EXIT_CODE.USAGE);const intervalMs=typeof options.intervalMs=="string"?Number(options.intervalMs):void 0;if(eventOptions.cursorMode==="row"){for await(const event of subscribeMutationEvents({...eventOptions,intervalMs}))quiet||writeStdout(`${JSON.stringify(event)}
8
+ `);return}for await(const page of subscribeMutationEventBatches({...eventOptions,intervalMs}))quiet||writeStdout(`${serializeNdjsonStream(page.events,{count:page.count,has_more:page.has_more,next_cursor:page.next_cursor??null,source:page.source,heartbeat:page.count===0})}
9
+ `)}function renderMutationEventPage(page){return page.cursor_mode==="row"?serializeNdjsonRows(page.events):serializeNdjsonStream(page.events,{count:page.count,has_more:page.has_more,next_cursor:page.next_cursor??null,source:page.source,...page.provenance_summary===void 0?{}:{provenance_summary:page.provenance_summary}})}async function runEventsAction(options,command){const globalOptions=getGlobalOptions(command),startedAt=Date.now(),eventOptions=buildMutationEventOptions(options,globalOptions.path);if(options.follow===!0){await followMutationEvents(eventOptions,options,globalOptions.quiet===!0);return}const page=await listMutationEvents(eventOptions);if(setActiveCommandResult(page),globalOptions.json){printResult(page,globalOptions),globalOptions.profile&&printError(`profile:command=events took_ms=${Date.now()-startedAt}`);return}const rendered=renderMutationEventPage(page);!globalOptions.quiet&&rendered.length>0&&writeStdout(`${rendered}
10
+ `),globalOptions.profile&&printError(`profile:command=events took_ms=${Date.now()-startedAt}`)}async function runGraphAction(subcommand,id,target,options,command){const globalOptions=getGlobalOptions(command),startedAt=Date.now(),result=await runGraph(subcommand,id,target,{...Array.isArray(options.kind)?{kind:options.kind}:{},maxDepth:typeof options.maxDepth=="string"?options.maxDepth:void 0,limit:typeof options.limit=="string"?options.limit:void 0,after:typeof options.after=="string"?options.after:void 0,direction:typeof options.direction=="string"?options.direction:void 0,maxPaths:typeof options.maxPaths=="string"?options.maxPaths:void 0,sample:typeof options.sample=="string"?options.sample:void 0,...Array.isArray(options.exemptIsolate)?{exemptIsolate:options.exemptIsolate}:{},...Array.isArray(options.exemptIsolateType)?{exemptIsolateType:options.exemptIsolateType}:{},saveBaseline:options.saveBaseline===!0,rebuild:options.rebuild===!0,clear:options.clear===!0,summary:options.summary===!0,full:options.full===!0},globalOptions);printResult(result,globalOptions),globalOptions.profile&&printError(`profile:command=graph took_ms=${Date.now()-startedAt}`)}function registerListQueryCommands(program,options){const commandFilter=options?.commandFilter,shouldRegister=commandName=>shouldRegisterListQueryCommand(commandName,commandFilter),listCommandDescriptors=[{name:"list",description:"List active items with optional lifecycle-status and project filters.",excludeTerminal:!0,allowStatusFilter:!0},{name:"list-all",description:"List all items with optional filters.",excludeTerminal:!1,allowStatusFilter:!0},{name:"list-draft",description:"List draft items with optional filters.",status:"draft"},{name:"list-open",description:"List open items with optional filters.",status:"open",excludeTerminal:!1,allowStatusFilter:!1},{name:"list-in-progress",description:"List in-progress items with optional filters.",status:"in_progress",excludeTerminal:!1,allowStatusFilter:!1},{name:"list-blocked",description:"List blocked items (blocked status or open blocked_by dependencies, matching pm next) with optional filters.",dependencyBlocked:!0,excludeTerminal:!1,allowStatusFilter:!1},{name:"list-closed",description:"List closed items with optional filters.",status:"closed"},{name:"list-canceled",description:"List canceled items with optional filters.",status:"canceled"}];for(const descriptor of listCommandDescriptors)if(shouldRegister(descriptor.name)){const aliasContract=resolvePmCommandAlias(descriptor.name);registerListCommand(program,{...descriptor,...aliasContract?.registration==="commander"?{aliasContract}:{}})}if(shouldRegister("aggregate")){const aggregateCommand=program.command("aggregate").description("Group item counts and numeric measures.").option("--set-mode <value>","Set grouping: element (default)|tuple").option("--limit <value>","Group page size (default: 50)").option("--after <value>","Continue with next_after cursor").option("--group-by <value>","Fields: parent,type,priority,status,assignee,tags,sprint,release (comma-separated)").option("--count","Counts (default)").option("--completion","Status counts and completion_pct").option("--sum <field>","Group numeric sum").option("--avg <field>","Group numeric average").option("--include-unparented","Keep unparented group").option("--status <value>","Item status").option("--type <value>","Item type").option("--tag <value>","Filter by tag").option("--priority <value>","Filter by priority").option("--deadline-before <value>","Latest deadline (ISO/date or relative)").option("--deadline-after <value>","Earliest deadline (ISO/date or relative)").option("--assignee <value>","Filter by assignee").option("--assignee-filter <value>","Assignee presence: assigned|unassigned").option("--parent <value>","Parent ID").option("--sprint <value>","Filter by sprint").option("--release <value>","Filter by release");addHiddenOption(aggregateCommand,"--include_unparented","Alias for --include-unparented"),addHiddenOption(aggregateCommand,"--assignee_filter <value>","Alias for --assignee-filter"),aggregateCommand.action(runAggregateAction)}if(shouldRegister("context")){const contextCommand=program.command("context").alias("ctx").description("Show a token-efficient project context snapshot for next-work decisions.").option("--for <intent>",`Apply a declared context intent projection. ${renderPmClosedDomainHelp("context","--for")}`).option("--date <value>","Anchor date/time for agenda window calculations (ISO/date string or relative)").option("--from <value>","Agenda lower bound (ISO/date string or relative)").option("--to <value>","Agenda upper bound (ISO/date string or relative)").option("--past","Include past agenda entries in bounded windows").option("--type <value>","Filter by item type").option("--tag <value>","Filter by tag").option("--priority <value>","Filter by priority").option("--assignee <value>","Filter by assignee").option("--assignee-filter <value>","Filter assignee presence: assigned|unassigned").option("--sprint <value>","Filter by sprint").option("--release <value>","Filter by release").option("--parent <id>","Scope the snapshot to one item's subtree (the item plus all descendants)").option("--limit <n>","Limit focus and agenda rows per section").option("--after <cursor>","Continue ranked focus after a next_cursor from a previous context response").option("--format <value>","Context output format override: markdown|toon|json|ndjson").option("--depth <value>","Context depth: brief|standard|deep|full (full = every section, no per-section cap)").option("--section <value...>","Include specific sections (repeatable; overrides --depth)").option("--fields <value>","Project focus rows to a comma-separated field subset (e.g. id,title,priority)").option("--activity-limit <n>","Limit recent activity entries (default: settings or 10)").option("--stale-threshold <value>","Staleness cutoff in days (e.g. 7 or 7d; default: settings or 7)").option("--explain-ranking","Include the scorer model, per-signal contributions, and ranked candidate ids").option("--token-budget <n>","Maximum estimated tokens spent on ranked focus rows").option("--no-extension-health","Omit the installed extension health summary").option("--no-tags","Omit tag arrays from context focus rows");addHiddenOption(contextCommand,"--assignee_filter <value>","Alias for --assignee-filter"),addHiddenOption(contextCommand,"--max-items <n>","Alias for --limit"),addHiddenOption(contextCommand,"--explain_ranking","Alias for --explain-ranking"),addHiddenOption(contextCommand,"--token_budget <n>","Alias for --token-budget"),contextCommand.action(runContextAction)}if(shouldRegister("next")){const nextCommand=program.command("next").description("Recommend the next actionable (unblocked, ready) work item with rationale + blocked companion.").option("--for <intent>",`Apply a declared context intent projection. ${renderPmClosedDomainHelp("next","--for")}`).option("--type <value>","Filter candidate items by type").option("--tag <value>","Filter candidate items by tag").option("--priority <value>","Filter candidate items by priority").option("--assignee <value>","Filter candidate items by assignee").option("--assignee-filter <value>","Filter assignee presence: assigned|unassigned").option("--sprint <value>","Filter candidate items by sprint").option("--release <value>","Filter candidate items by release").option("--parent <id>","Scope to one item's subtree (the item plus all descendants)").option("--limit <n>","Limit ready rows (default: 5; non-positive falls back to default)").option("--blocked-limit <n>","Limit blocked rows (default: same as --limit)").option("--ready-only","Omit the blocked companion list").option("--include-decisions","Include human-gated Decision items in the claimable ready queue").option("--include-gates","Include outcome gates in the ready queue").option("--include-containers","Include containers with unfinished descendants in the ready queue").option("--format <value>","Next output format override: markdown|toon|json").option("--explain-ranking","Include the scorer model, per-signal contributions, and ranked ready ids").option("--token-budget <n>","Maximum estimated tokens spent on the ranked ready queue");addHiddenOption(nextCommand,"--assignee_filter <value>","Alias for --assignee-filter"),addHiddenOption(nextCommand,"--blocked_limit <n>","Alias for --blocked-limit"),addHiddenOption(nextCommand,"--ready_only","Alias for --ready-only"),addHiddenOption(nextCommand,"--explain_ranking","Alias for --explain-ranking"),addHiddenOption(nextCommand,"--token_budget <n>","Alias for --token-budget"),nextCommand.action(runNextAction)}if(shouldRegister("search")){const searchCommand=program.command("search").argument("<keywords...>","Keyword query tokens").description("Search items with keyword, semantic, or hybrid retrieval. Inline field:value tokens (tag:/status:/type:/priority:) in the query are parsed as filters, e.g. 'auth tag:area:search status:open'.").option("--for <intent>",`Apply a declared context intent projection. ${renderPmClosedDomainHelp("search","--for")}`).option("--token-budget <n>","Override the selected intent's maximum estimated output tokens").option("--mode <value>","Search mode: keyword|semantic|hybrid (default: auto)").option("--semantic","Shorthand for --mode semantic").option("--hybrid","Shorthand for --mode hybrid").option("--match-mode <value>","Token match mode: and|or|exact (default: or with all-terms ranking bonus; and = hard-require every token; exact = exact phrase)").option("--min-score <value>","Per-query minimum score threshold (finite number >= 0); overrides settings search.score_threshold for this query only").option("--count","Return only the count of matching items (post-filter/threshold, pre-limit); skips hit rows").option("--semantic-weight <value>","Override hybrid semantic weight for this query (0..1); invalid values fall back to settings").option("--include-linked","Include linked files, docs, and tests in the searchable corpus").option("--title-exact","Require exact normalized title match for the full query string").option("--phrase-exact","Require exact normalized phrase match in searchable text").option("--highlight","Emit per-field matched-text snippets (wrapped in \xAB\u2026\xBB) on each hit; off by default").option("--status <value>","Filter by status before query (all, open/closed/canceled aliases, or configured status id; CSV)").option("--type <value>","Filter by item type").option("--tag <value>","Filter by tag").option("--priority <value>","Filter by priority").option("--deadline-before <value>","Filter by deadline upper bound (ISO/date string or relative)").option("--deadline-after <value>","Filter by deadline lower bound (ISO/date string or relative)").option("--updated-after <value>",'Filter by updated_at lower bound: ISO timestamp or signed relative (e.g. "-2h"/"-7d" for the past)').option("--updated-before <value>","Filter by updated_at upper bound: ISO timestamp or signed relative (-2h/+1d)").option("--created-after <value>","Filter by created_at lower bound: ISO timestamp or signed relative (-2h/+1d)").option("--created-before <value>","Filter by created_at upper bound: ISO timestamp or signed relative (-2h/+1d)").option("--assignee <value>","Filter by assignee").option("--sprint <value>","Filter by sprint").option("--release <value>","Filter by release").option("--parent <value>","Filter by parent item ID").option("--compact","Render compact search hits (default; mutually exclusive with --full/--fields)").option("--full","Render full search hits with nested item payloads (mutually exclusive with --compact/--fields)").option("--fields <value>",`Render custom comma-separated search hit fields (mutually exclusive with --compact/--full). ${renderPmClosedDomainHelp("search","--fields")}`).option("--format <value>","Search output format override: json|ndjson|toon").option("--limit <n>","Limit returned item count").option("--after <cursor>","Continue after an opaque next_cursor from a previous search response");registerContentAndGovernanceFilters(searchCommand),searchCommand.action(runSearchAction),addHiddenOption(searchCommand,"--tags <value>","Alias for --tag"),addHiddenOption(searchCommand,"--token_budget <n>","Alias for --token-budget")}if(shouldRegister("eval")&&program.command("eval").description("Evaluate search relevance against a curated golden-query set: reports nDCG@k, MRR@k, precision@k, and recall@k per query plus the macro average. Use --fail-under as a CI gate.").option("--mode <value>","Default retrieval mode for queries without their own: keyword|semantic|hybrid (default: keyword)").option("--k <n>","Metric cutoff @k (positive integer; default: 10)").option("--fail-under <value>","Exit non-zero when aggregate nDCG@k falls below this threshold (0..1); CI gate").option("--queries <path>",`Query JSON (${EVAL_QUERY_SET_SCHEMA_ID}); default: search/eval-queries.json; errors show an example`).option("--format <value>","Eval output format override: json|toon").action(runEvalAction),shouldRegister("get")){const getCommand=program.command("get").argument("<id>","Item id").option("--for <intent>",`Apply a declared context intent projection. ${renderPmClosedDomainHelp("get","--for")}`).option("--token-budget <n>","Override the selected intent's maximum estimated output tokens").option("--depth <value>","brief|standard|deep|full (default: standard)").option("--full","Full details and children for any type; excludes --depth/--fields").option("--fields <value>",`Render custom comma-separated item metadata fields. ${renderPmClosedDomainHelp("get","--fields")}`).option("--tree","Include descendants rooted at the requested item").option("--tree-depth <n>","Maximum subtree depth for --tree descendants").option("--at <version-or-timestamp>","Reconstruct a verified historical item state without mutating it").option("--format <value>","Get output format override: json|toon").description("Show item details by ID.").action(runGetAction);addHiddenOption(getCommand,"--tree_depth <n>","Alias for --tree-depth"),addHiddenOption(getCommand,"--token_budget <n>","Alias for --token-budget")}if(shouldRegister("history")){const historyCommand=program.command("history").enablePositionalOptions().argument("<id>","Item id").option("--limit <n>","Latest n entries").option("--compact","Index, time, op, author, patch count, fields").option("--full","Full entries with JSON Patches").option("--provenance","Authors and provenance; no patches").option("--provenance-summary","Count provenance completeness").option("--harness <value>","Recorded/resolved harness (repeatable)",collect).option("--agent-instance <value>","Agent instance (repeatable)",collect).option("--provenance-filter <dimension=value>","Exact provenance match (repeatable)",collect).option("--diff","Before/after field diffs").option("--field <name>","Filter changed field; implies --diff").option("--verify","Verify full chain and replay").option("--strict-exit","With --verify, fail on integrity errors").option("--fail-on-warn","Alias for --strict-exit").option("--format <value>","Output: json|toon").description("Show item history entries.").action(runHistoryAction);registerHistoryMaintenanceCommands(historyCommand,!0),registerHistoryActivityCommand(historyCommand.command("activity"))}shouldRegister("events")&&program.command("events").option("--since <cursor-or-timestamp>","Resume strictly after a durable cursor, or include events from an ISO timestamp").option("--type <value>","Filter by mutation operation (repeatable or comma-separated)",collect).option("--author <value>","Filter by mutation author (repeatable or comma-separated)",collect).option("--item <value>","Filter by item or workspace stream id (repeatable or comma-separated)",collect).option("--limit <n>","Return at most 1,000 events (default: 100)").option("--cursor-mode <mode>","Cursor framing: batch emits one terminal trailer (default); row preserves one cursor per event").option("--full","Include each complete authoritative history entry").option("--provenance","Include patch-free author, harness, instance, and extensible provenance").option("--provenance-summary","Include bounded provenance completeness counts").option("--harness <value>","Filter by recorded or vocabulary-resolved harness (repeatable)",collect).option("--agent-instance <value>","Filter by privacy-safe agent instance (repeatable)",collect).option("--provenance-filter <dimension=value>","Filter by an exact declared provenance value (repeatable)",collect).option("--follow","Continue emitting committed events as newline-delimited JSON").option("--interval-ms <n>","Empty-read delay while following (minimum: 10ms; default: 250ms)").description("Emit cursor-resumable committed mutation facts as newline-delimited JSON.").action(runEventsAction),shouldRegister("activity")&&registerHistoryActivityCommand(program.command("activity",{hidden:!0})),shouldRegister("graph")&&program.command("graph").argument("<subcommand>","Graph query (ancestors, descendants, predecessors, successors, paths, impact, analyze, audit, communities, redundancy, dominators, slack, centrality, articulation, plan, index)").argument("[id]","Root item id (traversals, paths, impact, and dominators)").argument("[target]","Target item id (paths only)").option("--kind <value>","Restrict traversal to registered relationship kinds (repeatable or comma-separated)",collect).option("--max-depth <value>","Maximum traversal depth (non-negative integer)").option("--limit <value>","Maximum returned rows per bounded collection").option("--after <value>","Resume a traversal after this previously returned node id").option("--direction <value>","Edge orientation for paths/impact (outgoing, incoming, or both)").option("--max-paths <value>","Maximum enumerated paths (paths only)").option("--sample <value>","Maximum evidence sample entries per audit finding (audit only)").option("--exempt-isolate <value>","Item ids treated as explicitly valid isolates by the audit (repeatable or comma-separated)",collect).option("--exempt-isolate-type <value>","Item types whose active isolates are policy-valid for the audit (repeatable or comma-separated)",collect).option("--save-baseline","Persist the audit census as the change-since-baseline comparison point (audit only)").option("--rebuild","Rebuild and warm the durable graph index (index only)").option("--clear","Delete the durable graph index (index only)").option("--summary","Return counts-first envelopes without row collections").option("--full","Return the complete graph row projection").description("Bounded workspace relationship-graph queries, analytics, and governance audit.").action(runGraphAction)}const _testOnlyRegisterListQuery={resolveReadCommandOutputFormat,parseListFormat};export{_testOnlyRegisterListQuery,registerListQueryCommands};
11
11
  //# sourceMappingURL=register-list-query.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]="9623cd2b-cb7b-5b94-b6d5-f382cd87adc4")}catch(e2){}})();
1
+ (function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="9623cd2b-cb7b-5b94-b6d5-f382cd87adc4")}catch{}})();
2
2
  //# sourceMappingURL=register-mutation-options.js.map