@unbrained/pm-cli 2026.10.28 → 2026.10.31
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.
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +50 -0
- package/dist/cli/commander-usage.js +2 -2
- package/dist/cli/commands/lifecycle/append.d.ts +4 -0
- package/dist/cli/commands/lifecycle/append.js +1 -1
- package/dist/cli/commands/lifecycle/create.d.ts +4 -0
- package/dist/cli/commands/lifecycle/create.js +1 -1
- package/dist/cli/commands/lifecycle/plan.d.ts +3 -0
- package/dist/cli/commands/lifecycle/plan.js +1 -1
- package/dist/cli/commands/lifecycle/update-many.d.ts +4 -0
- package/dist/cli/commands/lifecycle/update-many.js +1 -1
- package/dist/cli/commands/lifecycle/update.d.ts +4 -0
- package/dist/cli/commands/lifecycle/update.js +1 -1
- package/dist/cli/error-guidance.d.ts +45 -5
- package/dist/cli/error-guidance.js +5 -3
- package/dist/cli/extension-command-help.d.ts +1 -0
- package/dist/cli/extension-command-help.js +2 -2
- package/dist/cli/help-content.js +2 -2
- package/dist/cli/main.d.ts +1 -5
- package/dist/cli/main.js +5 -5
- package/dist/cli/migration-gates.d.ts +1 -1
- package/dist/cli/migration-gates.js +1 -1
- package/dist/cli/preflight-warnings.d.ts +11 -0
- package/dist/cli/preflight-warnings.js +4 -0
- package/dist/cli/register-list-query.js +3 -3
- package/dist/cli/register-mutation.js +2 -2
- package/dist/cli-bundle/bundle-manifest.json +1 -1
- package/dist/cli-bundle/chunks/chunk-24J6TNYE.js +8 -0
- package/dist/cli-bundle/chunks/{chunk-YYD5MNAV.js → chunk-2AHSPMKJ.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-35Q2B2GJ.js +2 -0
- package/dist/cli-bundle/chunks/chunk-43R7UTWV.js +2 -0
- package/dist/cli-bundle/chunks/chunk-6PSDQ7T7.js +8 -0
- package/dist/cli-bundle/chunks/{chunk-YUBUNECD.js → chunk-BS2KXT24.js} +84 -84
- package/dist/cli-bundle/chunks/{chunk-D3AIQZXF.js → chunk-GMBDZID5.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-HSBTITO4.js +3 -0
- package/dist/cli-bundle/chunks/{chunk-LWW4F4G2.js → chunk-MRUA2Z43.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-P3LNMWL2.js +2 -0
- package/dist/cli-bundle/chunks/chunk-PT7TS6E7.js +2 -0
- package/dist/cli-bundle/chunks/{chunk-TH5KPAN4.js → chunk-SBVX5CMV.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-D6P6IBPN.js → chunk-TL3O5GZA.js} +45 -45
- package/dist/cli-bundle/chunks/chunk-U7JXZMU5.js +6 -0
- package/dist/cli-bundle/chunks/{chunk-DM3PICGU.js → chunk-V6EWBTNH.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-VC7TA67O.js +20 -0
- package/dist/cli-bundle/chunks/chunk-WNF6FOL7.js +31 -0
- package/dist/cli-bundle/chunks/chunk-WRXQAW7Q.js +114 -0
- package/dist/cli-bundle/chunks/{chunk-RZQNFHXO.js → chunk-WX25MU4N.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-XDDPSWIW.js +2 -0
- package/dist/cli-bundle/chunks/chunk-YT5D5HNG.js +2 -0
- package/dist/cli-bundle/chunks/chunk-ZTJVOBDU.js +128 -0
- package/dist/cli-bundle/chunks/{indexed-receipt-blobs-LHLE7PSG.js → indexed-receipt-blobs-KGMJVFH2.js} +2 -2
- package/dist/cli-bundle/chunks/item-transaction-UWV6UNSV.js +2 -0
- package/dist/cli-bundle/chunks/{mutation-admission-GKDKHRTZ.js → mutation-admission-I4RHIT3Q.js} +2 -2
- package/dist/cli-bundle/chunks/{register-list-query-MHJJUM6M.js → register-list-query-MVDL5EXG.js} +6 -6
- package/dist/cli-bundle/chunks/register-mutation-GAF7LXRB.js +20 -0
- package/dist/cli-bundle/chunks/register-operations-JLFRL36Q.js +2 -0
- package/dist/cli-bundle/chunks/{register-setup-WUZ2ZSMY.js → register-setup-MZN6ONB3.js} +2 -2
- package/dist/cli-bundle/chunks/{settlement-hook-MN3Y7LVX.js → settlement-hook-YWSWFOZY.js} +2 -2
- package/dist/cli-bundle/chunks/{stage-2FYJGGG3.js → stage-2ZORTOF6.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-4GN2ZPT5.js → chunk-2J7T2UCH.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-YLVHHWHN.js → chunk-4PW5XWVI.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-4QPGJO2G.js +26 -0
- package/dist/cli-bundle/focused-chunks/{chunk-IQKLJFJE.js → chunk-57HPXGOQ.js} +18 -18
- package/dist/cli-bundle/focused-chunks/chunk-5MCGYBOQ.js +91 -0
- package/dist/cli-bundle/focused-chunks/chunk-6F6APBCX.js +3 -0
- package/dist/cli-bundle/focused-chunks/chunk-AFVN2KCP.js +44 -0
- package/dist/cli-bundle/focused-chunks/{chunk-ON5WFDCG.js → chunk-DFUTCKUF.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-EA65HVBO.js +12 -0
- package/dist/cli-bundle/focused-chunks/chunk-GP2WU43K.js +26 -0
- package/dist/cli-bundle/focused-chunks/{chunk-C2GLO7HU.js → chunk-HPWT3RBG.js} +54 -54
- package/dist/cli-bundle/focused-chunks/chunk-HSAEEWSI.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-7SZPZOIC.js → chunk-JLXGRDTG.js} +3 -3
- package/dist/cli-bundle/focused-chunks/chunk-JNKRUCVZ.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-JTCGDODH.js → chunk-KH5QJXY7.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-KKRIFBSL.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-TUN4M757.js → chunk-MW77Q3AQ.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-NOKG4RFN.js +22 -0
- package/dist/cli-bundle/focused-chunks/{chunk-DRN4W3YJ.js → chunk-NRBUMDLF.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-ML5JIUM6.js → chunk-PC3R5CJV.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-PFBQOZPK.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-R3EA3SDW.js → chunk-QFMJGQGO.js} +3 -3
- package/dist/cli-bundle/focused-chunks/{chunk-I4X6AKOO.js → chunk-SFQKCA5K.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-WHIE2C6Q.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-Y6UYRMVG.js +6 -0
- package/dist/cli-bundle/focused-chunks/{indexed-receipt-blobs-5H6RMRTK.js → indexed-receipt-blobs-KHWT44EK.js} +2 -2
- package/dist/cli-bundle/focused-chunks/item-transaction-LU75EG7D.js +2 -0
- package/dist/cli-bundle/focused-chunks/{mutation-admission-TM3SVU2O.js → mutation-admission-KDJ7SCPA.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{settlement-hook-LBVWWSCF.js → settlement-hook-SJV52ZTV.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{stage-7ZBRX2Q2.js → stage-R4KEBO37.js} +2 -2
- package/dist/cli-bundle/main.js +26 -22
- package/dist/cli-bundle/sdk-authoring.js +1 -1
- package/dist/cli-bundle/sdk-contracts.js +4 -4
- package/dist/cli-bundle/sdk-core.js +1 -43
- package/dist/cli-bundle/sdk-governance.js +1 -1
- package/dist/cli-bundle/sdk-graph.js +1 -1
- package/dist/cli-bundle/sdk-merge.js +61 -61
- package/dist/cli-bundle/sdk-query.js +1 -1
- package/dist/cli-bundle/sdk-runtime.js +1 -1
- package/dist/cli-bundle/sdk-testing.js +1 -1
- package/dist/cli-bundle/sdk.js +11 -11
- package/dist/core/config/nested-settings.js +1 -1
- package/dist/core/extensions/extension-hook-runtime.js +1 -1
- package/dist/core/extensions/extension-types.d.ts +4 -0
- package/dist/core/extensions/extension-types.js +1 -1
- package/dist/core/extensions/loader.js +1 -1
- package/dist/core/history/operation-contract.d.ts +2 -2
- package/dist/core/history/operation-contract.js +1 -1
- package/dist/core/item/literal-mutation-input.d.ts +12 -0
- package/dist/core/item/literal-mutation-input.js +2 -0
- package/dist/core/item/parse.d.ts +2 -0
- package/dist/core/item/parse.js +2 -2
- package/dist/core/lock/lock.js +4 -4
- package/dist/core/output/output.js +3 -3
- package/dist/core/schema/fields-file.js +1 -1
- package/dist/core/sentry/helpers.d.ts +6 -0
- package/dist/core/sentry/helpers.js +1 -1
- package/dist/core/sentry/instrument.d.ts +1 -1
- package/dist/core/sentry/instrument.js +1 -1
- package/dist/core/shared/constants.js +1 -1
- package/dist/core/shared/errors.d.ts +6 -0
- package/dist/core/shared/errors.js +1 -1
- package/dist/core/shared/output-unicode.d.ts +10 -0
- package/dist/core/shared/output-unicode.js +2 -0
- package/dist/core/store/item-store.js +1 -1
- package/dist/core/store/settings-validator.d.ts +1 -0
- package/dist/core/store/settings-validator.js +1 -1
- package/dist/core/store/settings.js +1 -1
- package/dist/core/telemetry/policy.d.ts +8 -0
- package/dist/core/telemetry/policy.js +1 -1
- package/dist/core/telemetry/runtime.js +3 -3
- package/dist/sdk/agent/command-recovery.d.ts +15 -0
- package/dist/sdk/agent/command-recovery.js +1 -1
- package/dist/sdk/cli-bootstrap.js +1 -1
- package/dist/sdk/cli-contracts/agent-output-contracts.d.ts +28 -0
- package/dist/sdk/cli-contracts/agent-output-contracts.js +2 -2
- package/dist/sdk/cli-contracts/commander-mutation-options.js +1 -1
- package/dist/sdk/cli-contracts/flag-contracts.d.ts +2 -0
- package/dist/sdk/cli-contracts/flag-contracts.js +1 -1
- package/dist/sdk/cli-contracts/flag-lexicon-contracts.js +1 -1
- package/dist/sdk/cli-contracts/grammar-contracts.js +1 -1
- package/dist/sdk/cli-contracts/registration-helpers.js +1 -1
- package/dist/sdk/cli-contracts/tool-parameter-tables.js +1 -1
- package/dist/sdk/cli-contracts/tool-schema.js +1 -1
- package/dist/sdk/cli-contracts.d.ts +1 -1
- package/dist/sdk/cli-contracts.js +1 -1
- package/dist/sdk/completion/fish.js +4 -4
- package/dist/sdk/completion/zsh.js +3 -3
- package/dist/sdk/config.d.ts +1 -0
- package/dist/sdk/config.js +1 -1
- package/dist/sdk/core.d.ts +1 -0
- package/dist/sdk/core.js +1 -1
- package/dist/sdk/error-runtime.d.ts +9 -0
- package/dist/sdk/error-runtime.js +1 -1
- package/dist/sdk/errors.js +1 -1
- package/dist/sdk/generated/generated-error-code-catalog-part-1.js +1 -1
- package/dist/sdk/generated/generated-error-code-catalog-part-2.js +1 -1
- package/dist/sdk/index.d.ts +2 -2
- package/dist/sdk/index.js +1 -1
- package/dist/sdk/item-transaction.d.ts +33 -2
- package/dist/sdk/item-transaction.js +1 -1
- package/dist/sdk/lifecycle/append.js +1 -1
- package/dist/sdk/lifecycle/claim.js +1 -1
- package/dist/sdk/lifecycle/cli-input.d.ts +4 -0
- package/dist/sdk/lifecycle/cli-input.js +2 -0
- package/dist/sdk/lifecycle/close.js +1 -1
- package/dist/sdk/lifecycle/create.js +1 -1
- package/dist/sdk/lifecycle/legacy-none-tokens.js +1 -1
- package/dist/sdk/lifecycle/plan.d.ts +2 -3
- package/dist/sdk/lifecycle/plan.js +1 -1
- package/dist/sdk/lifecycle/reopen.js +1 -1
- package/dist/sdk/lifecycle/repeated-terminal-state.d.ts +45 -0
- package/dist/sdk/lifecycle/repeated-terminal-state.js +2 -0
- package/dist/sdk/lifecycle/shared-unset-fields.d.ts +9 -0
- package/dist/sdk/lifecycle/shared-unset-fields.js +1 -1
- package/dist/sdk/lifecycle/update-many.d.ts +0 -1
- package/dist/sdk/lifecycle/update-many.js +1 -1
- package/dist/sdk/lifecycle/update.d.ts +29 -1
- package/dist/sdk/lifecycle/update.js +2 -2
- package/dist/sdk/output/table-rows.d.ts +15 -1
- package/dist/sdk/output/table-rows.js +1 -1
- package/dist/sdk/output.d.ts +1 -0
- package/dist/sdk/output.js +2 -2
- package/dist/sdk/ownership-source.d.ts +18 -0
- package/dist/sdk/ownership-source.js +1 -1
- package/dist/sdk/public-surface.json +1 -1
- package/dist/sdk/query/get.d.ts +1 -1
- package/dist/sdk/query/get.js +1 -1
- package/dist/sdk/query/history.d.ts +2 -0
- package/dist/sdk/query/history.js +1 -1
- package/dist/sdk/query/next-ranking-policy.d.ts +35 -0
- package/dist/sdk/query/next-ranking-policy.js +2 -0
- package/dist/sdk/query/next.d.ts +12 -2
- package/dist/sdk/query/next.js +2 -2
- package/dist/sdk/query/projection-contracts.d.ts +4 -0
- package/dist/sdk/query/projection-contracts.js +1 -1
- package/dist/sdk/read-output/surfaces.d.ts +27 -0
- package/dist/sdk/read-output/surfaces.js +2 -0
- package/dist/sdk/read-output-contracts.js +1 -1
- package/dist/sdk/runtime/mutation-value-validation.d.ts +16 -0
- package/dist/sdk/runtime/mutation-value-validation.js +2 -0
- package/dist/sdk/runtime-input.js +1 -1
- package/dist/sdk/runtime-primitives.d.ts +2 -0
- package/dist/sdk/runtime-primitives.js +1 -1
- package/dist/sdk/runtime.d.ts +14 -0
- package/dist/sdk/runtime.js +1 -1
- package/dist/sdk/structured-mutations.js +1 -1
- package/dist/sdk/test/execution-receipts.d.ts +25 -0
- package/dist/sdk/test/execution-receipts.js +2 -2
- package/dist/sdk/test/execution.d.ts +5 -0
- package/dist/sdk/test/execution.js +2 -2
- package/dist/sdk/workspace-transaction-gc.js +1 -1
- package/dist/sdk/workspace-transaction.d.ts +54 -0
- package/dist/sdk/workspace-transaction.js +2 -2
- package/dist/types.d.ts +2 -0
- package/dist/types.js +1 -1
- package/docs/AGENT_GUIDE.md +1 -1
- package/docs/AGENT_OUTPUT_ENCODINGS.md +12 -0
- package/docs/AGENT_UX_CONTRACTS.md +2 -1
- package/docs/COMMANDS.md +73 -15
- package/docs/CONFIGURATION.md +48 -1
- package/docs/DEVELOPMENT_DEPENDENCY_SECURITY.md +26 -0
- package/docs/OUTPUT_PROJECTION_CONTRACTS.md +24 -2
- package/docs/PACKED_FIRST_RUN.md +2 -1
- package/docs/READ_OUTPUT_CONTRACTS.md +24 -6
- package/docs/SDK.md +207 -11
- package/docs/TESTING.md +46 -2
- package/docs/agent-task-token-baseline.json +1 -1
- package/docs/generated/FLAG_LEXICON_BUDGETS.md +1 -1
- package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +6 -3
- package/marketplace.json +1 -1
- package/package.json +1 -1
- package/packages/pm-beads/package.json +1 -1
- package/packages/pm-calendar/extensions/calendar/index.ts +1 -0
- package/packages/pm-calendar/package.json +1 -1
- package/packages/pm-command-kit/package.json +1 -1
- package/packages/pm-digital-twin/package.json +1 -1
- package/packages/pm-governance-audit/package.json +1 -1
- package/packages/pm-guide-shell/package.json +1 -1
- package/packages/pm-kanban/package.json +1 -1
- package/packages/pm-lifecycle-hooks/package.json +1 -1
- package/packages/pm-linked-test-adapters/package.json +1 -1
- package/packages/pm-search-advanced/package.json +1 -1
- package/packages/pm-templates/package.json +1 -1
- package/packages/pm-todos/package.json +1 -1
- package/packages/pm-vcs/package.json +1 -1
- package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
- package/plugins/pm-claude/package.json +1 -1
- package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
- package/plugins/pm-codex/package.json +1 -1
- package/plugins/pm-codex/plugin.json +1 -1
- package/runtime-dependencies.json +1 -1
- package/dist/cli-bundle/chunks/chunk-2J7I54MQ.js +0 -2
- package/dist/cli-bundle/chunks/chunk-3KMYHYJV.js +0 -2
- package/dist/cli-bundle/chunks/chunk-4D25HF3V.js +0 -2
- package/dist/cli-bundle/chunks/chunk-7V37RC2L.js +0 -114
- package/dist/cli-bundle/chunks/chunk-AHVN4GHF.js +0 -31
- package/dist/cli-bundle/chunks/chunk-CS7QDSUX.js +0 -128
- package/dist/cli-bundle/chunks/chunk-CXUQEZDX.js +0 -8
- package/dist/cli-bundle/chunks/chunk-DKLEDWVW.js +0 -3
- package/dist/cli-bundle/chunks/chunk-E5QBZ4HI.js +0 -8
- package/dist/cli-bundle/chunks/chunk-JESLOJD7.js +0 -2
- package/dist/cli-bundle/chunks/chunk-PQLRKFPZ.js +0 -20
- package/dist/cli-bundle/chunks/chunk-SGFQQXFD.js +0 -2
- package/dist/cli-bundle/chunks/chunk-XHONSCLJ.js +0 -6
- package/dist/cli-bundle/chunks/chunk-ZX3XMTZG.js +0 -2
- package/dist/cli-bundle/chunks/register-mutation-SN425O3R.js +0 -20
- package/dist/cli-bundle/chunks/register-operations-EYUIUGPW.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-3EHVI673.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-46WLWK73.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-6L4KKRK7.js +0 -26
- package/dist/cli-bundle/focused-chunks/chunk-6VDRAJYX.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-B4ZQJEMT.js +0 -6
- package/dist/cli-bundle/focused-chunks/chunk-BZSACRVX.js +0 -91
- package/dist/cli-bundle/focused-chunks/chunk-F6UQJJYB.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-L5GX2FGZ.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-LPWZERVD.js +0 -12
- package/dist/cli-bundle/focused-chunks/chunk-OASYSUOH.js +0 -22
- package/dist/cli-bundle/focused-chunks/chunk-QUPGBO2L.js +0 -26
- package/dist/cli-bundle/focused-chunks/chunk-Z26ZPQH6.js +0 -3
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b4ece3e2-a6f1-57a8-b793-9073aa5ef200")}catch{}})();import{resolvePmCommandAlias,PM_HISTORY_COMMAND_ALIASES,PM_RELOCATED_COMMAND_ALIASES,resolvePmHistoryOperation}from"./command-aliases.js";const PM_CLI_GRAMMAR_NOUNS=["item","list","context","search","graph","history","workspace","package","ops","plan","contracts","help"],PM_CLI_SHARED_VERBS=["acknowledge","activate","add","adopt","adopt-all","catalog","compact","complete","create","deactivate","delete","describe","doctor","edit","explore","import","init","inspect","install","list","manage","migrate","mutate","read","redact","reload","remove","reopen","repair","restore","run","show","uninstall","upgrade","verify"];function positionalSlot(name,valueKind,required,options={}){return{name,required,variadic:options.variadic===!0,value_kind:valueKind,polymorphic:options.polymorphic===!0}}function positionalActionVerb(action){const phrase=action.replaceAll("-"," ");return`${phrase.charAt(0).toUpperCase()}${phrase.slice(1)}`}const ITEM_ID=positionalSlot("id","item_id",!0),OPTIONAL_ITEM_ID=positionalSlot("id","item_id",!1),OPTIONAL_TEXT=positionalSlot("text","string",!1),PLAN_ITEM_ID=positionalSlot("plan-id","item_id",!0),PLAN_STEP=positionalSlot("step","string",!0),PLAN_CREATE_FLAGS=["--acceptance-criteria","--actual-result","--affected-version","--assignee","--blocked-by","--blocked-reason","--blocks","--body","--claim","--comment","--component","--confidence","--create-mode","--customer-impact","--deadline","--definition-of-ready","--description","--doc","--environment","--estimate","--event","--expected-result","--fixed-version","--file","--from-search","--goal","--harness","--impact","--learning","--message","--mode","--note","--objective","--order","--outcome","--parent","--priority","--rank","--related","--release","--reminder","--reporter","--repro-steps","--resolution","--resume-context","--reviewer","--risk","--scope","--severity","--sprint","--status","--step","--step-blocked-reason","--step-body","--step-evidence","--step-owner","--step-replacement","--step-status","--step-title","--tags","--template","--test","--title","--type-option","--unblock-note","--value","--why-now"],PLAN_STEP_FLAGS=["--allow-multiple-active","--depends-on","--file","--force","--message","--step-blocked-reason","--step-body","--step-evidence","--step-owner","--step-status","--step-title","--test"],PLAN_STEP_ACTION_DESCRIPTIONS={"update-step":"Update one declared Plan step.","complete-step":"Complete one declared Plan step.","block-step":"Block one declared Plan step.","remove-step":"Remove one declared Plan step.",link:"Link one dependency to a declared Plan step.",unlink:"Unlink one dependency from a declared Plan step."},PM_POSITIONAL_ACTION_CONTRACTS=[{command:"plan create",parent:"plan",action:"create",slots:[positionalSlot("title","string",!1,{polymorphic:!0})],accepted_flags:PLAN_CREATE_FLAGS,description:"Create a Plan item and optionally seed its ordered steps.",example:'pm plan create --title "Refactor lock retry"'},{command:"plan show",parent:"plan",action:"show",slots:[PLAN_ITEM_ID],accepted_flags:["--depth","--fields"],description:"Read one Plan item with a bounded plan projection.",example:"pm plan show pm-a1b2 --depth standard"},{command:"plan add-step",parent:"plan",action:"add-step",slots:[PLAN_ITEM_ID],accepted_flags:PLAN_STEP_FLAGS,description:"Append one ordered step to a Plan item.",example:'pm plan add-step pm-a1b2 --step-title "Run tests"'},...Object.entries(PLAN_STEP_ACTION_DESCRIPTIONS).map(([action,description])=>({command:`plan ${action}`,parent:"plan",action,slots:[PLAN_ITEM_ID,PLAN_STEP],accepted_flags:PLAN_STEP_FLAGS,description,example:`pm plan ${action} pm-a1b2 plan-step-001`})),{command:"plan reorder-step",parent:"plan",action:"reorder-step",slots:[PLAN_ITEM_ID,PLAN_STEP,positionalSlot("new-order","integer",!0)],accepted_flags:["--force","--message"],description:"Move one Plan step to a declared integer order.",example:"pm plan reorder-step pm-a1b2 plan-step-001 2"},...["decision","discovery","validation","resume","approve","materialize"].map(action=>({command:`plan ${action}`,parent:"plan",action,slots:[PLAN_ITEM_ID],accepted_flags:PLAN_STEP_FLAGS,description:`${positionalActionVerb(action)} for one Plan item.`,example:`pm plan ${action} pm-a1b2`})),...["list","show","put","remove"].map(action=>({command:`assurance ${action}`,parent:"assurance",action,slots:[positionalSlot("kind","string",!0),...action==="list"?[]:[positionalSlot("id","string",!0)]],accepted_flags:action==="put"?["--author","--definition","--message"]:action==="remove"?["--author","--message"]:[],description:`${positionalActionVerb(action)} assurance declarations by kind.`,example:action==="list"?"pm assurance list measurement":`pm assurance ${action} measurement example-id`})),{command:"assurance run",parent:"assurance",action:"run",slots:[positionalSlot("gate-id","string",!0)],accepted_flags:["--dry-run","--trigger","--tree"],description:"Evaluate one assurance gate for a lifecycle trigger.",example:"pm assurance run tracker-context-quality --trigger ci --dry-run"},{command:"assurance verdicts",parent:"assurance",action:"verdicts",slots:[positionalSlot("gate-id","string",!1)],accepted_flags:["--gate","--limit"],description:"List bounded assurance verdict history.",example:"pm assurance verdicts --limit 20"},...["presets","apply"].map(action=>({command:`assurance ${action}`,parent:"assurance",action,slots:[positionalSlot("preset","string",action==="apply")],accepted_flags:["--author","--message","--owner"],description:action==="apply"?"Apply one assurance adoption preset.":"List available assurance adoption presets.",example:action==="apply"?"pm assurance apply software-delivery --owner <pm-item-id>":"pm assurance presets"})),{command:"assurance derive",parent:"assurance",action:"derive",slots:[],accepted_flags:["--apply","--author","--message","--owner"],description:"Derive assurance proposals from current project context.",example:"pm assurance derive --owner pm-a1b2"},{command:"assurance promote",parent:"assurance",action:"promote",slots:[positionalSlot("assertion-id","string",!0)],accepted_flags:["--author","--enforcement","--message"],description:"Promote one assertion into a warning or blocking gate.",example:"pm assurance promote assertion-id --enforcement warn"},{command:"assurance risk",parent:"assurance",action:"risk",slots:[],accepted_flags:["--definition"],description:"Analyze bounded defect-recurrence risk for a proposed change.",example:`pm assurance risk --definition '{"policy":{"version":1,"evidence_epoch":"2026-01-01T00:00:00.000Z","families":[]},"change":{"files":[]}}'`},{command:"assurance lineages",parent:"assurance",action:"lineages",slots:[],accepted_flags:["--definition"],description:"Measure all recorded recurrence lineages with bounded evidence rows.",example:`pm assurance lineages --definition '{"policy":{"version":1,"evidence_epoch":"2026-01-01T00:00:00.000Z","families":[]}}'`},{command:"workspace position",parent:"workspace",action:"position",slots:[],accepted_flags:[],description:"Read bounded merge-fence, receipt, history-drift, and next-action readiness.",example:"pm workspace position"},{command:"workspace snapshot create",parent:"workspace snapshot",action:"create",slots:[positionalSlot("name","string",!1)],accepted_flags:[],description:"Capture authoritative tracker state as an immutable snapshot.",example:"pm workspace snapshot create before-migration"},{command:"workspace snapshot list",parent:"workspace snapshot",action:"list",slots:[],accepted_flags:[],description:"List immutable workspace snapshots and named references.",example:"pm workspace snapshot list"},{command:"workspace snapshot inspect",parent:"workspace snapshot",action:"inspect",slots:[positionalSlot("target","string",!0)],accepted_flags:[],description:"Inspect one workspace snapshot target.",example:"pm workspace snapshot inspect before-migration"},{command:"workspace snapshot restore",parent:"workspace snapshot",action:"restore",slots:[positionalSlot("target","string",!0)],accepted_flags:["--author","--dry-run","--force","--message"],description:"Restore an immutable workspace snapshot with explicit recovery controls.",example:"pm workspace snapshot restore before-migration --dry-run"},{command:"workspace snapshot delete",parent:"workspace snapshot",action:"delete",slots:[positionalSlot("target","string",!0)],accepted_flags:[],description:"Delete one workspace snapshot target.",example:"pm workspace snapshot delete before-migration"}],POSITIONAL_ACTION_CONTRACTS_BY_SPECIFICITY=[...PM_POSITIONAL_ACTION_CONTRACTS].sort((left,right)=>right.command.length-left.command.length),EXPLICIT_POSITIONAL_SLOTS=new Map([["append",[ITEM_ID,OPTIONAL_TEXT]],["assurance",[positionalSlot("action","action",!0),positionalSlot("kind","string",!1),positionalSlot("id","string",!1)]],["beads import",[positionalSlot("file","string",!1)]],["cal",[positionalSlot("view","string",!1,{polymorphic:!0})]],["calendar",[positionalSlot("view","string",!1,{polymorphic:!0})]],["changelog export",[positionalSlot("file","string",!1)]],["changelog milestone create",[positionalSlot("name","string",!0)]],["claim",[OPTIONAL_ITEM_ID]],["close",[ITEM_ID,OPTIONAL_TEXT]],["close-task",[ITEM_ID,positionalSlot("reason","string",!1)]],["comments",[ITEM_ID,OPTIONAL_TEXT]],["completion",[positionalSlot("shell","string",!1)]],["config",[positionalSlot("scope","string",!1,{polymorphic:!0}),positionalSlot("action","action",!1),positionalSlot("key","string",!1),positionalSlot("value","string",!1,{polymorphic:!0})]],["copy",[ITEM_ID]],["create",[positionalSlot("type-or-title","string",!1,{polymorphic:!0}),positionalSlot("title","string",!1)]],["delete",[ITEM_ID]],["deps",[ITEM_ID]],["docs",[ITEM_ID]],["event",[positionalSlot("title","string",!0)]],["files",[ITEM_ID]],["files discover",[ITEM_ID]],["files lookup",[positionalSlot("paths","string",!0,{variadic:!0})]],["focus",[OPTIONAL_ITEM_ID]],["get",[ITEM_ID]],["graph",[positionalSlot("subcommand","action",!0),OPTIONAL_ITEM_ID,positionalSlot("target","item_id",!1)]],["guide",[positionalSlot("topic","string",!1)]],["history",[ITEM_ID]],["history-compact",[OPTIONAL_ITEM_ID]],["history-redact",[ITEM_ID]],["history-repair",[OPTIONAL_ITEM_ID]],["init",[positionalSlot("prefix-or-path","string",!1,{polymorphic:!0})]],["item complete",[ITEM_ID,positionalSlot("reason","string",!1)]],["item reopen",[ITEM_ID,positionalSlot("reason","string",!0)]],["learnings",[ITEM_ID,OPTIONAL_TEXT]],["meet",[positionalSlot("title","string",!0)]],["merge",[positionalSlot("subcommand","action",!0),positionalSlot("artifact","string",!1),positionalSlot("base","string",!1),positionalSlot("ours","string",!1),positionalSlot("theirs","string",!1)]],["notes",[ITEM_ID,OPTIONAL_TEXT]],["package",[positionalSlot("target","string",!1,{polymorphic:!0})]],["package list",[]],["package inventory",[positionalSlot("name","string",!1)]],["package scaffold",[positionalSlot("target","string",!0)]],["package upgrade",[positionalSlot("target","string",!1)]],["packages",[positionalSlot("target","string",!1,{polymorphic:!0})]],["packages list",[]],["packages inventory",[positionalSlot("name","string",!1)]],["packages scaffold",[positionalSlot("target","string",!0)]],["packages upgrade",[positionalSlot("target","string",!1)]],["pause-task",[ITEM_ID]],["plan",[positionalSlot("subcommand","action",!0),positionalSlot("id","item_id",!1,{polymorphic:!0}),positionalSlot("step","string",!1),positionalSlot("new-order","integer",!1)]],["profile",[positionalSlot("subcommand","action",!0),positionalSlot("name","string",!1)]],["release",[ITEM_ID]],["remind",[positionalSlot("title","string",!0)]],["restore",[ITEM_ID,positionalSlot("target","string",!0)]],["schema",[positionalSlot("subcommand","action",!0),positionalSlot("name","string",!1)]],["search-advanced",[positionalSlot("keywords","string",!0,{variadic:!0})]],["search",[positionalSlot("keywords","string",!0,{variadic:!0})]],["start-task",[ITEM_ID]],["templates save",[positionalSlot("name","string",!0)]],["templates show",[positionalSlot("name","string",!0)]],["telemetry",[positionalSlot("namespace-or-subcommand","action",!1,{polymorphic:!0}),positionalSlot("subcommand","action",!1)]],["test",[ITEM_ID]],["test-runs-worker",[positionalSlot("runId","string",!0)]],["update",[ITEM_ID]],["workspace snapshot",[positionalSlot("action","action",!0),positionalSlot("target","string",!1)]],...["activate","adopt","deactivate","init","uninstall"].flatMap(action=>["extension","package","packages"].map(root=>[`${root} ${action}`,[positionalSlot("target","string",!0)]])),...["describe"].flatMap(action=>["extension","package","packages"].map(root=>[`${root} ${action}`,[positionalSlot("target","string",!1)]])),...["install"].flatMap(action=>["extension","package","packages"].map(root=>[`${root} ${action}`,[positionalSlot("targets","string",!1,{variadic:!0})]])),["vcs abandon",[ITEM_ID]],["vcs create",[positionalSlot("title","string",!0)]],["vcs merge",[ITEM_ID]],["vcs propose",[ITEM_ID]],["vcs ref-create",[positionalSlot("name","string",!0)]],["vcs show",[ITEM_ID]]]);function normalizePositionalCommandPath(command){return command.trim().toLowerCase().replace(/\s+/gu," ")}function resolvePmCommandPositionalContract(command){const normalized=normalizePositionalCommandPath(command),direct=PM_COMMAND_POSITIONAL_CONTRACTS.find(contract=>contract.command===normalized);if(direct)return direct;const canonical=resolvePmCommandAlias(normalized)?.canonical;if(canonical)return PM_COMMAND_POSITIONAL_CONTRACTS.find(contract=>contract.command===canonical)}function resolvePmPositionalActionContract(command){const normalized=normalizePositionalCommandPath(command);return POSITIONAL_ACTION_CONTRACTS_BY_SPECIFICITY.find(contract=>contract.command===normalized||normalized.startsWith(`${contract.command} `))}function formatPmPositionalActionFlagTip(acceptedFlags){return`Applicable flags: ${acceptedFlags.length>0?acceptedFlags.join(", "):"none"}.`}function destinationRows(noun,target,disposition,owner,commands){return commands.map(command=>({command,noun,target,disposition,owner}))}const PM_COMMAND_DESTINATION_CONTRACTS=[...destinationRows("item","item","target_noun","pm-pbyu",["item","item complete","item mutate","item reopen"]),...destinationRows("item","item","consolidation","pm-yql1",["append","close-many","close-task","comments","copy","delete","deps","docs","files","learnings","notes","pause-task","start-task","test","update-many"]),...["claim","close","create","get","release","update"].map(command=>({command,noun:"item",target:command,disposition:"keep_as_is",owner:"pm-pbyu",reason:"Permanent high-frequency item operations retain concise root spellings under the accepted hot-path grammar policy."})),...destinationRows("item","item files","target_noun","pm-yql1",["files discover","files lookup","item files discover","item files lookup"]),...destinationRows("item","item test worker","consolidation","pm-lp4j",["test-runs-worker"]),...destinationRows("list","list","target_noun","pm-pfqi",["list"]),...destinationRows("list","list --group-by","consolidation","pm-xkgq",["aggregate"]),...destinationRows("context","context","target_noun","pm-pbyu",["context"]),...destinationRows("context","context","consolidation","pm-kcs4",["ctx","focus","next"]),...destinationRows("context","context next","consolidation","pm-kcs4",["ctx next"]),...destinationRows("context","context focus","consolidation","pm-kcs4",["ctx focus"]),...destinationRows("search","search","target_noun","pm-pbyu",["search"]),...destinationRows("search","search","package_owned","package:search-advanced",["reindex","search-advanced"]),...destinationRows("item","item duplicates","consolidation","pm-fmy9ih",["duplicates"]),...destinationRows("item","item duplicates","package_owned","pm-fmy9ih",["dedupe-audit","dedupe-merge","comments-audit"]),...destinationRows("graph","graph","target_noun","pm-pbyu",["graph"]),...destinationRows("history","history","target_noun","pm-pbyu",["history"]),...destinationRows("history","history attest","target_noun","pm-3z0k",["history attest"]),...destinationRows("history","history attest","consolidation","pm-3z0k",["history-attest"]),...PM_HISTORY_COMMAND_ALIASES.flatMap(({alias,canonical})=>[...destinationRows("history",canonical,"target_noun","pm-tqel",[canonical]),...destinationRows("history",canonical,"consolidation","pm-tqel",[alias])]),...destinationRows("history","history","consolidation","pm-tqel",["events","merge"]),...destinationRows("history","history acknowledge","consolidation","pm-djyvbk",["history-author-acknowledge"]),...destinationRows("history","history","package_owned","package:builtin-vcs-exemplar",["vcs abandon","vcs create","vcs log","vcs merge","vcs propose","vcs ref-create","vcs show"]),...destinationRows("workspace","workspace","target_noun","pm-pbyu",["workspace","workspace position","workspace snapshot","workspace snapshot create","workspace snapshot delete","workspace snapshot inspect","workspace snapshot list","workspace snapshot restore"]),...destinationRows("workspace","workspace init","consolidation","pm-npr3",["init"]),...destinationRows("package","package","target_noun","pm-pbyu",["package","package activate","package adopt","package adopt-all","package catalog","package deactivate","package describe","package doctor","package explore","package init","package install","package inventory","package list","package manage","package migrate","package reload","package scaffold","package uninstall","package upgrade"]),...destinationRows("package","package","consolidation","pm-tnud",["extension activate","extension adopt","extension adopt-all","extension catalog","extension deactivate","extension describe","extension doctor","extension explore","extension init","extension install","extension manage","extension migrate","extension reload","extension uninstall","packages","packages activate","packages adopt","packages adopt-all","packages catalog","packages deactivate","packages describe","packages doctor","packages explore","packages init","packages install","packages inventory","packages list","packages manage","packages migrate","packages reload","packages scaffold","packages uninstall","packages upgrade"]),...destinationRows("package","package","package_owned","package:beads",["beads import"]),...destinationRows("package","package","package_owned","package:pm-changelog",["changelog audit","changelog contracts","changelog export","changelog generate","changelog milestone create","changelog upgrades"]),...destinationRows("package","package calendar","package_owned","pm-o3fh",["cal","calendar","event","meet","remind"]),...destinationRows("ops","ops","target_noun","pm-6apl",["ops"]),...destinationRows("ops","ops normalize","package_owned","package:pm-governance-audit",["normalize"]),...destinationRows("ops","ops","consolidation","pm-6apl",["eval","gc","health","stats","telemetry","test-all","validate"]),...destinationRows("workspace","workspace","consolidation","pm-npr3",["config","profile","schema"]),...["assurance",...PM_POSITIONAL_ACTION_CONTRACTS.filter(({parent})=>parent==="assurance").map(({command})=>command)].map(command=>({command,noun:"ops",target:command,disposition:"keep_as_is",owner:"pm-djyvbk",reason:"Assurance manages durable measurement, assertion, gate, and verdict data; retain its established domain surface independently of operational diagnostics."})),...destinationRows("plan","plan","target_noun","pm-pbyu",["plan"]),...destinationRows("plan","plan","target_noun","pm-2tan",PM_POSITIONAL_ACTION_CONTRACTS.filter(({parent})=>parent==="plan").map(({command})=>command)),...destinationRows("contracts","contracts","target_noun","pm-pbyu",["contracts"]),...destinationRows("help","help","target_noun","pm-pbyu",["help"]),...destinationRows("workspace","templates","package_owned","package:builtin-templates",["templates","templates list","templates save","templates show"]),...destinationRows("help","help","package_owned","package:builtin-guide-shell",["completion","completion-statuses","completion-tags","completion-types","guide"])].flatMap(entry=>{const alias=PM_RELOCATED_COMMAND_ALIASES.find(candidate=>candidate.alias===entry.command);if(!alias)return[entry];const noun=PM_CLI_GRAMMAR_NOUNS.find(candidate=>candidate===alias.canonical_argv[0])??entry.noun;return[{...entry,noun,target:alias.canonical,owner:alias.owner},{...entry,command:alias.canonical,noun,target:alias.canonical,owner:alias.owner,disposition:entry.disposition==="package_owned"?"package_owned":"target_noun"}]}),PM_COMMAND_POSITIONAL_CONTRACTS=[...new Set(PM_COMMAND_DESTINATION_CONTRACTS.map(({command})=>command))].map(command=>({command,slots:resolvePmPositionalActionContract(command)?.slots??EXPLICIT_POSITIONAL_SLOTS.get(resolvePmHistoryOperation(command))??[]})),PM_CLI_GRAMMAR_CONTRACT={nouns:PM_CLI_GRAMMAR_NOUNS,shared_verbs:PM_CLI_SHARED_VERBS,scope_before_verb:!0,visible_top_level_ceiling:69,ceiling_raise_requires_pm_item:!0,positional_shape_budget:21};function verifyExplicitPositionalSlotCensus(explicitCommands,destinationCommands){const destinations=new Set(destinationCommands);return[...new Set(explicitCommands)].filter(command=>!destinations.has(command)).map(command=>({code:"positional_signature_mismatch",command,detail:`Positional signature ${command} has no destination declaration.`}))}function positionalShapeKey(slots){return slots.map(({required,variadic,value_kind:valueKind,polymorphic})=>`${required?"r":"o"}:${variadic?"v":"s"}:${valueKind}:${polymorphic?"p":"m"}`).join("|")}function positionalSignatureKey(slots){return slots.map(({name,required,variadic,value_kind:valueKind,polymorphic})=>`${name}:${required?"r":"o"}:${variadic?"v":"s"}:${valueKind}:${polymorphic?"p":"m"}`).join("|")}function duplicatePositionalSignatureFindings(contracts,surface){const counts=new Map;for(const{command}of contracts){const normalized=normalizePositionalCommandPath(command);counts.set(normalized,(counts.get(normalized)??0)+1)}return[...counts.entries()].filter(([,count])=>count>1).map(([command,count])=>({code:"positional_signature_mismatch",command,detail:`${count} ${surface} positional signatures exist for ${command}; exactly one is required.`}))}function verifyPmCommandPositionalContracts(observed,options={}){const declared=options.declared??PM_COMMAND_POSITIONAL_CONTRACTS,positionalShapeBudget=options.positionalShapeBudget??PM_CLI_GRAMMAR_CONTRACT.positional_shape_budget,declaredByCommand=new Map(declared.map(contract=>[normalizePositionalCommandPath(contract.command),contract])),observedByCommand=new Map(observed.map(contract=>[normalizePositionalCommandPath(contract.command),contract])),findings=[...duplicatePositionalSignatureFindings(declared,"declared"),...duplicatePositionalSignatureFindings(observed,"observed"),...options.declared===void 0?[...verifyExplicitPositionalSlotCensus(EXPLICIT_POSITIONAL_SLOTS.keys(),PM_COMMAND_DESTINATION_CONTRACTS.map(({command})=>command)),...verifyExplicitPositionalSlotCensus(PM_POSITIONAL_ACTION_CONTRACTS.map(({command})=>command),PM_COMMAND_DESTINATION_CONTRACTS.map(({command})=>command))]:[]];for(const contract of declaredByCommand.values()){const normalizedCommand=normalizePositionalCommandPath(contract.command),actual=observedByCommand.get(normalizedCommand);actual?positionalSignatureKey(actual.slots)!==positionalSignatureKey(contract.slots)&&findings.push({code:"positional_signature_mismatch",command:contract.command,detail:`Observed positional signature for ${contract.command} differs from its declared SDK contract: observed=${positionalSignatureKey(actual.slots)||"<none>"}; declared=${positionalSignatureKey(contract.slots)||"<none>"}.`}):findings.push({code:"missing_observed_signature",command:contract.command,detail:`No observed positional signature exists for ${contract.command}.`})}for(const contract of observedByCommand.values())declaredByCommand.has(normalizePositionalCommandPath(contract.command))||findings.push({code:"stale_observed_signature",command:contract.command,detail:`Observed positional signature ${contract.command} has no declaration.`});const positionalShapeCount=new Set(declared.map(({slots})=>positionalShapeKey(slots))).size;return positionalShapeCount>positionalShapeBudget&&findings.push({code:"positional_shape_budget_exceeded",command:"*",detail:`Distinct positional shape count ${positionalShapeCount} exceeds budget ${positionalShapeBudget}.`}),findings.sort((left,right)=>left.command!==right.command?left.command.localeCompare(right.command):left.code.localeCompare(right.code)),{ok:findings.length===0,declared_command_count:declared.length,observed_command_count:observed.length,positional_shape_count:positionalShapeCount,positional_shape_budget:positionalShapeBudget,findings}}function validateCommandDestinations(commands,destinationsByCommand,nounSet){return commands.flatMap(command=>{const destinations=destinationsByCommand.get(command)??[];if(destinations.length===0){const separatorIndex=command.indexOf(" "),root=separatorIndex===-1?command:command.slice(0,separatorIndex);return[{code:"missing_destination",spelling:command,message:`Command \`${command}\` has no destination census row.`,nearest_target:nounSet.has(root)?root:`ops ${command}`}]}const duplicateFinding=destinations.length>1?[{code:"duplicate_destination",spelling:command,message:`Command \`${command}\` has ${destinations.length} destination rows.`,nearest_target:destinations[0].target}]:[];return destinations.reduce((findings,destination)=>(destination.disposition==="keep_as_is"&&(destination.reason?.trim().length??0)===0&&findings.push({code:"missing_destination",spelling:command,message:`Command \`${command}\` is kept as-is without a documented reason.`,nearest_target:destination.target}),nounSet.has(destination.noun)||findings.push({code:"unknown_noun",spelling:command,message:`Command \`${command}\` names undeclared noun \`${destination.noun}\`.`,nearest_target:destination.target}),findings),duplicateFinding)})}function validateDestinationCensus(commandSet,destinations){return destinations.filter(destination=>destination.disposition!=="package_owned"&&!commandSet.has(destination.command)).map(destination=>({code:"stale_destination",spelling:destination.command,message:`Destination row \`${destination.command}\` is absent from live contracts.`,nearest_target:destination.target}))}function validateAliasTargets(aliases,commandSet){return aliases.filter(alias=>!commandSet.has(alias.canonical)).map(alias=>({code:"alias_target_missing",spelling:alias.alias,message:`Alias \`${alias.alias}\` targets missing canonical command \`${alias.canonical}\`.`,nearest_target:alias.canonical_argv.join(" ")}))}function verifyPmCliGrammar(commands,aliases=[],destinations=PM_COMMAND_DESTINATION_CONTRACTS){const normalizedCommands=[...new Set(commands.map(command=>command.trim()))].filter(command=>command.length>0).sort((left,right)=>left.localeCompare(right)),commandSet=new Set(normalizedCommands),nounSet=new Set(PM_CLI_GRAMMAR_NOUNS),destinationsByCommand=new Map;for(const destination of destinations){const entries=destinationsByCommand.get(destination.command)??[];entries.push(destination),destinationsByCommand.set(destination.command,entries)}const findings=[...validateCommandDestinations(normalizedCommands,destinationsByCommand,nounSet),...validateDestinationCensus(commandSet,destinations),...validateAliasTargets(aliases.filter(alias=>commandSet.has(alias.alias)||!(destinationsByCommand.get(alias.canonical)??[]).some(destination=>destination.disposition==="package_owned")),commandSet)],hiddenAliasNames=new Set(aliases.filter(alias=>alias.hidden).map(alias=>alias.alias)),visibleTopLevelCount=new Set(normalizedCommands.filter(command=>!command.includes(" ")&&!hiddenAliasNames.has(command)&&!(destinationsByCommand.get(command)??[]).some(destination=>destination.disposition==="package_owned"))).size;return visibleTopLevelCount>PM_CLI_GRAMMAR_CONTRACT.visible_top_level_ceiling&&findings.push({code:"visible_surface_ceiling_exceeded",spelling:String(visibleTopLevelCount),message:`Visible non-package top-level command count ${visibleTopLevelCount} exceeds ceiling ${PM_CLI_GRAMMAR_CONTRACT.visible_top_level_ceiling}.`,nearest_target:"Declare the noun placement and tracked waiver before raising the ceiling."}),{ok:findings.length===0,command_count:normalizedCommands.length,destination_count:destinations.length,hidden_alias_count:aliases.filter(alias=>alias.hidden).length,visible_top_level_count:visibleTopLevelCount,visible_top_level_ceiling:PM_CLI_GRAMMAR_CONTRACT.visible_top_level_ceiling,findings}}export{PM_CLI_GRAMMAR_CONTRACT,PM_CLI_GRAMMAR_NOUNS,PM_CLI_SHARED_VERBS,PM_COMMAND_DESTINATION_CONTRACTS,PM_COMMAND_POSITIONAL_CONTRACTS,PM_POSITIONAL_ACTION_CONTRACTS,formatPmPositionalActionFlagTip,positionalShapeKey,positionalSignatureKey,resolvePmCommandPositionalContract,resolvePmPositionalActionContract,verifyExplicitPositionalSlotCensus,verifyPmCliGrammar,verifyPmCommandPositionalContracts};
|
|
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]="85a28710-c767-584c-b3e3-373261f4b5f2")}catch{}})();import{resolvePmCommandAlias,PM_HISTORY_COMMAND_ALIASES,PM_RELOCATED_COMMAND_ALIASES,resolvePmHistoryOperation}from"./command-aliases.js";const PM_CLI_GRAMMAR_NOUNS=["item","list","context","search","graph","history","workspace","package","ops","plan","contracts","help"],PM_CLI_SHARED_VERBS=["acknowledge","activate","add","adopt","adopt-all","catalog","compact","complete","create","deactivate","delete","describe","doctor","edit","explore","import","init","inspect","install","list","manage","migrate","mutate","read","redact","reload","remove","reopen","repair","restore","run","show","uninstall","upgrade","verify"];function positionalSlot(name,valueKind,required,options={}){return{name,required,variadic:options.variadic===!0,value_kind:valueKind,polymorphic:options.polymorphic===!0}}function positionalActionVerb(action){const phrase=action.replaceAll("-"," ");return`${phrase.charAt(0).toUpperCase()}${phrase.slice(1)}`}const ITEM_ID=positionalSlot("id","item_id",!0),OPTIONAL_ITEM_ID=positionalSlot("id","item_id",!1),OPTIONAL_TEXT=positionalSlot("text","string",!1),PLAN_ITEM_ID=positionalSlot("plan-id","item_id",!0),PLAN_STEP=positionalSlot("step","string",!0),PLAN_CREATE_FLAGS=["--acceptance-criteria","--actual-result","--affected-version","--assignee","--blocked-by","--blocked-reason","--blocks","--body","--claim","--comment","--component","--confidence","--create-mode","--customer-impact","--deadline","--definition-of-ready","--description","--doc","--environment","--estimate","--event","--expected-result","--fixed-version","--file","--from-search","--goal","--harness","--impact","--learning","--message","--mode","--note","--objective","--order","--outcome","--parent","--priority","--rank","--related","--release","--reminder","--reporter","--repro-steps","--resolution","--resume-context","--reviewer","--risk","--scope","--severity","--sprint","--status","--step","--step-blocked-reason","--step-body","--step-evidence","--step-owner","--step-replacement","--step-status","--step-title","--tags","--template","--test","--title","--type-option","--unblock-note","--value","--why-now"],PLAN_STEP_FLAGS=["--allow-multiple-active","--depends-on","--file","--force","--message","--step-blocked-reason","--step-body","--step-evidence","--step-owner","--step-status","--step-title","--test"],PLAN_STEP_ACTION_DESCRIPTIONS={"update-step":"Update one declared Plan step.","complete-step":"Complete one declared Plan step.","block-step":"Block one declared Plan step.","remove-step":"Remove one declared Plan step.",link:"Link one dependency to a declared Plan step.",unlink:"Unlink one dependency from a declared Plan step."},PM_POSITIONAL_ACTION_CONTRACTS=[{command:"plan create",parent:"plan",action:"create",slots:[positionalSlot("title","string",!1,{polymorphic:!0})],accepted_flags:PLAN_CREATE_FLAGS,description:"Create a Plan item and optionally seed its ordered steps.",example:'pm plan create --title "Refactor lock retry"'},{command:"plan show",parent:"plan",action:"show",slots:[PLAN_ITEM_ID],accepted_flags:["--depth","--fields"],description:"Read one Plan item with a bounded plan projection.",example:"pm plan show pm-a1b2 --depth standard"},{command:"plan add-step",parent:"plan",action:"add-step",slots:[PLAN_ITEM_ID],accepted_flags:PLAN_STEP_FLAGS,description:"Append one ordered step to a Plan item.",example:'pm plan add-step pm-a1b2 --step-title "Run tests"'},...Object.entries(PLAN_STEP_ACTION_DESCRIPTIONS).map(([action,description])=>({command:`plan ${action}`,parent:"plan",action,slots:[PLAN_ITEM_ID,PLAN_STEP],accepted_flags:PLAN_STEP_FLAGS,description,example:`pm plan ${action} pm-a1b2 plan-step-001`})),{command:"plan reorder-step",parent:"plan",action:"reorder-step",slots:[PLAN_ITEM_ID,PLAN_STEP,positionalSlot("new-order","integer",!0)],accepted_flags:["--force","--message"],description:"Move one Plan step to a declared integer order.",example:"pm plan reorder-step pm-a1b2 plan-step-001 2"},...["decision","discovery","validation","resume","approve","materialize"].map(action=>({command:`plan ${action}`,parent:"plan",action,slots:[PLAN_ITEM_ID],accepted_flags:PLAN_STEP_FLAGS,description:`${positionalActionVerb(action)} for one Plan item.`,example:`pm plan ${action} pm-a1b2`})),...["list","show","put","remove"].map(action=>({command:`assurance ${action}`,parent:"assurance",action,slots:[positionalSlot("kind","string",!0),...action==="list"?[]:[positionalSlot("id","string",!0)]],accepted_flags:action==="put"?["--author","--definition","--message"]:action==="remove"?["--author","--message"]:[],description:`${positionalActionVerb(action)} assurance declarations by kind.`,example:action==="list"?"pm assurance list measurement":`pm assurance ${action} measurement example-id`})),{command:"assurance run",parent:"assurance",action:"run",slots:[positionalSlot("gate-id","string",!0)],accepted_flags:["--dry-run","--trigger","--tree"],description:"Evaluate one assurance gate for a lifecycle trigger.",example:"pm assurance run tracker-context-quality --trigger ci --dry-run"},{command:"assurance verdicts",parent:"assurance",action:"verdicts",slots:[positionalSlot("gate-id","string",!1)],accepted_flags:["--gate","--limit"],description:"List bounded assurance verdict history.",example:"pm assurance verdicts --limit 20"},...["presets","apply"].map(action=>({command:`assurance ${action}`,parent:"assurance",action,slots:[positionalSlot("preset","string",action==="apply")],accepted_flags:["--author","--message","--owner"],description:action==="apply"?"Apply one assurance adoption preset.":"List available assurance adoption presets.",example:action==="apply"?"pm assurance apply software-delivery --owner <pm-item-id>":"pm assurance presets"})),{command:"assurance derive",parent:"assurance",action:"derive",slots:[],accepted_flags:["--apply","--author","--message","--owner"],description:"Derive assurance proposals from current project context.",example:"pm assurance derive --owner pm-a1b2"},{command:"assurance promote",parent:"assurance",action:"promote",slots:[positionalSlot("assertion-id","string",!0)],accepted_flags:["--author","--enforcement","--message"],description:"Promote one assertion into a warning or blocking gate.",example:"pm assurance promote assertion-id --enforcement warn"},{command:"assurance risk",parent:"assurance",action:"risk",slots:[],accepted_flags:["--definition"],description:"Analyze bounded defect-recurrence risk for a proposed change.",example:`pm assurance risk --definition '{"policy":{"version":1,"evidence_epoch":"2026-01-01T00:00:00.000Z","families":[]},"change":{"files":[]}}'`},{command:"assurance lineages",parent:"assurance",action:"lineages",slots:[],accepted_flags:["--definition"],description:"Measure all recorded recurrence lineages with bounded evidence rows.",example:`pm assurance lineages --definition '{"policy":{"version":1,"evidence_epoch":"2026-01-01T00:00:00.000Z","families":[]}}'`},{command:"workspace position",parent:"workspace",action:"position",slots:[],accepted_flags:[],description:"Read bounded merge-fence, receipt, history-drift, and next-action readiness.",example:"pm workspace position"},{command:"workspace snapshot create",parent:"workspace snapshot",action:"create",slots:[positionalSlot("name","string",!1)],accepted_flags:[],description:"Capture authoritative tracker state as an immutable snapshot.",example:"pm workspace snapshot create before-migration"},{command:"workspace snapshot list",parent:"workspace snapshot",action:"list",slots:[],accepted_flags:[],description:"List immutable workspace snapshots and named references.",example:"pm workspace snapshot list"},{command:"workspace snapshot inspect",parent:"workspace snapshot",action:"inspect",slots:[positionalSlot("target","string",!0)],accepted_flags:[],description:"Inspect one workspace snapshot target.",example:"pm workspace snapshot inspect before-migration"},{command:"workspace snapshot restore",parent:"workspace snapshot",action:"restore",slots:[positionalSlot("target","string",!0)],accepted_flags:["--author","--dry-run","--force","--message"],description:"Restore an immutable workspace snapshot with explicit recovery controls.",example:"pm workspace snapshot restore before-migration --dry-run"},{command:"workspace snapshot delete",parent:"workspace snapshot",action:"delete",slots:[positionalSlot("target","string",!0)],accepted_flags:[],description:"Delete one workspace snapshot target.",example:"pm workspace snapshot delete before-migration"}],POSITIONAL_ACTION_CONTRACTS_BY_SPECIFICITY=[...PM_POSITIONAL_ACTION_CONTRACTS].sort((left,right)=>right.command.length-left.command.length),EXPLICIT_POSITIONAL_SLOTS=new Map([["append",[ITEM_ID,OPTIONAL_TEXT]],["assurance",[positionalSlot("action","action",!0),positionalSlot("kind","string",!1),positionalSlot("id","string",!1)]],["beads import",[positionalSlot("file","string",!1)]],["cal",[positionalSlot("view","string",!1,{polymorphic:!0})]],["calendar",[positionalSlot("view","string",!1,{polymorphic:!0})]],["changelog corrections",[positionalSlot("action","string",!0)]],["changelog export",[positionalSlot("file","string",!1)]],["changelog milestone create",[positionalSlot("name","string",!0)]],["claim",[OPTIONAL_ITEM_ID]],["close",[ITEM_ID,OPTIONAL_TEXT]],["close-task",[ITEM_ID,positionalSlot("reason","string",!1)]],["comments",[ITEM_ID,OPTIONAL_TEXT]],["completion",[positionalSlot("shell","string",!1)]],["config",[positionalSlot("scope","string",!1,{polymorphic:!0}),positionalSlot("action","action",!1),positionalSlot("key","string",!1),positionalSlot("value","string",!1,{polymorphic:!0})]],["copy",[ITEM_ID]],["create",[positionalSlot("type-or-title","string",!1,{polymorphic:!0}),positionalSlot("title","string",!1)]],["delete",[ITEM_ID]],["deps",[ITEM_ID]],["docs",[ITEM_ID]],["event",[positionalSlot("title","string",!0)]],["files",[ITEM_ID]],["files discover",[ITEM_ID]],["files lookup",[positionalSlot("paths","string",!0,{variadic:!0})]],["focus",[OPTIONAL_ITEM_ID]],["get",[ITEM_ID]],["graph",[positionalSlot("subcommand","action",!0),OPTIONAL_ITEM_ID,positionalSlot("target","item_id",!1)]],["guide",[positionalSlot("topic","string",!1)]],["history",[ITEM_ID]],["history-compact",[OPTIONAL_ITEM_ID]],["history-redact",[ITEM_ID]],["history-repair",[OPTIONAL_ITEM_ID]],["init",[positionalSlot("prefix-or-path","string",!1,{polymorphic:!0})]],["item complete",[ITEM_ID,positionalSlot("reason","string",!1)]],["item reopen",[ITEM_ID,positionalSlot("reason","string",!0)]],["learnings",[ITEM_ID,OPTIONAL_TEXT]],["meet",[positionalSlot("title","string",!0)]],["merge",[positionalSlot("subcommand","action",!0),positionalSlot("artifact","string",!1),positionalSlot("base","string",!1),positionalSlot("ours","string",!1),positionalSlot("theirs","string",!1)]],["notes",[ITEM_ID,OPTIONAL_TEXT]],["package",[positionalSlot("target","string",!1,{polymorphic:!0})]],["package list",[]],["package inventory",[positionalSlot("name","string",!1)]],["package scaffold",[positionalSlot("target","string",!0)]],["package upgrade",[positionalSlot("target","string",!1)]],["packages",[positionalSlot("target","string",!1,{polymorphic:!0})]],["packages list",[]],["packages inventory",[positionalSlot("name","string",!1)]],["packages scaffold",[positionalSlot("target","string",!0)]],["packages upgrade",[positionalSlot("target","string",!1)]],["pause-task",[ITEM_ID]],["plan",[positionalSlot("subcommand","action",!0),positionalSlot("id","item_id",!1,{polymorphic:!0}),positionalSlot("step","string",!1),positionalSlot("new-order","integer",!1)]],["profile",[positionalSlot("subcommand","action",!0),positionalSlot("name","string",!1)]],["release",[ITEM_ID]],["remind",[positionalSlot("title","string",!0)]],["restore",[ITEM_ID,positionalSlot("target","string",!0)]],["schema",[positionalSlot("subcommand","action",!0),positionalSlot("name","string",!1)]],["search-advanced",[positionalSlot("keywords","string",!0,{variadic:!0})]],["search",[positionalSlot("keywords","string",!0,{variadic:!0})]],["start-task",[ITEM_ID]],["templates save",[positionalSlot("name","string",!0)]],["templates show",[positionalSlot("name","string",!0)]],["telemetry",[positionalSlot("namespace-or-subcommand","action",!1,{polymorphic:!0}),positionalSlot("subcommand","action",!1)]],["test",[ITEM_ID]],["test-runs-worker",[positionalSlot("runId","string",!0)]],["update",[ITEM_ID]],["workspace snapshot",[positionalSlot("action","action",!0),positionalSlot("target","string",!1)]],...["activate","adopt","deactivate","init","uninstall"].flatMap(action=>["extension","package","packages"].map(root=>[`${root} ${action}`,[positionalSlot("target","string",!0)]])),...["describe"].flatMap(action=>["extension","package","packages"].map(root=>[`${root} ${action}`,[positionalSlot("target","string",!1)]])),...["install"].flatMap(action=>["extension","package","packages"].map(root=>[`${root} ${action}`,[positionalSlot("targets","string",!1,{variadic:!0})]])),["vcs abandon",[ITEM_ID]],["vcs create",[positionalSlot("title","string",!0)]],["vcs merge",[ITEM_ID]],["vcs propose",[ITEM_ID]],["vcs ref-create",[positionalSlot("name","string",!0)]],["vcs show",[ITEM_ID]]]);function normalizePositionalCommandPath(command){return command.trim().toLowerCase().replace(/\s+/gu," ")}function resolvePmCommandPositionalContract(command){const normalized=normalizePositionalCommandPath(command),direct=PM_COMMAND_POSITIONAL_CONTRACTS.find(contract=>contract.command===normalized);if(direct)return direct;const canonical=resolvePmCommandAlias(normalized)?.canonical;if(canonical)return PM_COMMAND_POSITIONAL_CONTRACTS.find(contract=>contract.command===canonical)}function resolvePmPositionalActionContract(command){const normalized=normalizePositionalCommandPath(command);return POSITIONAL_ACTION_CONTRACTS_BY_SPECIFICITY.find(contract=>contract.command===normalized||normalized.startsWith(`${contract.command} `))}function formatPmPositionalActionFlagTip(acceptedFlags){return`Applicable flags: ${acceptedFlags.length>0?acceptedFlags.join(", "):"none"}.`}function destinationRows(noun,target,disposition,owner,commands){return commands.map(command=>({command,noun,target,disposition,owner}))}const PM_COMMAND_DESTINATION_CONTRACTS=[...destinationRows("item","item","target_noun","pm-pbyu",["item","item complete","item mutate","item reopen"]),...destinationRows("item","item","consolidation","pm-yql1",["append","close-many","close-task","comments","copy","delete","deps","docs","files","learnings","notes","pause-task","start-task","test","update-many"]),...["claim","close","create","get","release","update"].map(command=>({command,noun:"item",target:command,disposition:"keep_as_is",owner:"pm-pbyu",reason:"Permanent high-frequency item operations retain concise root spellings under the accepted hot-path grammar policy."})),...destinationRows("item","item files","target_noun","pm-yql1",["files discover","files lookup","item files discover","item files lookup"]),...destinationRows("item","item test worker","consolidation","pm-lp4j",["test-runs-worker"]),...destinationRows("list","list","target_noun","pm-pfqi",["list"]),...destinationRows("list","list --group-by","consolidation","pm-xkgq",["aggregate"]),...destinationRows("context","context","target_noun","pm-pbyu",["context"]),...destinationRows("context","context","consolidation","pm-kcs4",["ctx","focus","next"]),...destinationRows("context","context next","consolidation","pm-kcs4",["ctx next"]),...destinationRows("context","context focus","consolidation","pm-kcs4",["ctx focus"]),...destinationRows("search","search","target_noun","pm-pbyu",["search"]),...destinationRows("search","search","package_owned","package:search-advanced",["reindex","search-advanced"]),...destinationRows("item","item duplicates","consolidation","pm-fmy9ih",["duplicates"]),...destinationRows("item","item duplicates","package_owned","pm-fmy9ih",["dedupe-audit","dedupe-merge","comments-audit"]),...destinationRows("graph","graph","target_noun","pm-pbyu",["graph"]),...destinationRows("history","history","target_noun","pm-pbyu",["history"]),...destinationRows("history","history attest","target_noun","pm-3z0k",["history attest"]),...destinationRows("history","history attest","consolidation","pm-3z0k",["history-attest"]),...PM_HISTORY_COMMAND_ALIASES.flatMap(({alias,canonical})=>[...destinationRows("history",canonical,"target_noun","pm-tqel",[canonical]),...destinationRows("history",canonical,"consolidation","pm-tqel",[alias])]),...destinationRows("history","history","consolidation","pm-tqel",["events","merge"]),...destinationRows("history","history acknowledge","consolidation","pm-djyvbk",["history-author-acknowledge"]),...destinationRows("history","history","package_owned","package:builtin-vcs-exemplar",["vcs abandon","vcs create","vcs log","vcs merge","vcs propose","vcs ref-create","vcs show"]),...destinationRows("workspace","workspace","target_noun","pm-pbyu",["workspace","workspace position","workspace snapshot","workspace snapshot create","workspace snapshot delete","workspace snapshot inspect","workspace snapshot list","workspace snapshot restore"]),...destinationRows("workspace","workspace init","consolidation","pm-npr3",["init"]),...destinationRows("package","package","target_noun","pm-pbyu",["package","package activate","package adopt","package adopt-all","package catalog","package deactivate","package describe","package doctor","package explore","package init","package install","package inventory","package list","package manage","package migrate","package reload","package scaffold","package uninstall","package upgrade"]),...destinationRows("package","package","consolidation","pm-tnud",["extension activate","extension adopt","extension adopt-all","extension catalog","extension deactivate","extension describe","extension doctor","extension explore","extension init","extension install","extension manage","extension migrate","extension reload","extension uninstall","packages","packages activate","packages adopt","packages adopt-all","packages catalog","packages deactivate","packages describe","packages doctor","packages explore","packages init","packages install","packages inventory","packages list","packages manage","packages migrate","packages reload","packages scaffold","packages uninstall","packages upgrade"]),...destinationRows("package","package","package_owned","package:beads",["beads import"]),...destinationRows("package","package","package_owned","package:pm-changelog",["changelog audit","changelog contracts","changelog corrections","changelog drift","changelog export","changelog generate","changelog milestone create","changelog upgrades"]),...destinationRows("package","package calendar","package_owned","pm-o3fh",["cal","calendar","event","meet","remind"]),...destinationRows("ops","ops","target_noun","pm-6apl",["ops"]),...destinationRows("ops","ops normalize","package_owned","package:pm-governance-audit",["normalize"]),...destinationRows("ops","ops","consolidation","pm-6apl",["eval","gc","health","stats","telemetry","test-all","validate"]),...destinationRows("workspace","workspace","consolidation","pm-npr3",["config","profile","schema"]),...["assurance",...PM_POSITIONAL_ACTION_CONTRACTS.filter(({parent})=>parent==="assurance").map(({command})=>command)].map(command=>({command,noun:"ops",target:command,disposition:"keep_as_is",owner:"pm-djyvbk",reason:"Assurance manages durable measurement, assertion, gate, and verdict data; retain its established domain surface independently of operational diagnostics."})),...destinationRows("plan","plan","target_noun","pm-pbyu",["plan"]),...destinationRows("plan","plan","target_noun","pm-2tan",PM_POSITIONAL_ACTION_CONTRACTS.filter(({parent})=>parent==="plan").map(({command})=>command)),...destinationRows("contracts","contracts","target_noun","pm-pbyu",["contracts"]),...destinationRows("help","help","target_noun","pm-pbyu",["help"]),...destinationRows("workspace","templates","package_owned","package:builtin-templates",["templates","templates list","templates save","templates show"]),...destinationRows("help","help","package_owned","package:builtin-guide-shell",["completion","completion-statuses","completion-tags","completion-types","guide"])].flatMap(entry=>{const alias=PM_RELOCATED_COMMAND_ALIASES.find(candidate=>candidate.alias===entry.command);if(!alias)return[entry];const noun=PM_CLI_GRAMMAR_NOUNS.find(candidate=>candidate===alias.canonical_argv[0])??entry.noun;return[{...entry,noun,target:alias.canonical,owner:alias.owner},{...entry,command:alias.canonical,noun,target:alias.canonical,owner:alias.owner,disposition:entry.disposition==="package_owned"?"package_owned":"target_noun"}]}),PM_COMMAND_POSITIONAL_CONTRACTS=[...new Set(PM_COMMAND_DESTINATION_CONTRACTS.map(({command})=>command))].map(command=>({command,slots:resolvePmPositionalActionContract(command)?.slots??EXPLICIT_POSITIONAL_SLOTS.get(resolvePmHistoryOperation(command))??[]})),PM_CLI_GRAMMAR_CONTRACT={nouns:PM_CLI_GRAMMAR_NOUNS,shared_verbs:PM_CLI_SHARED_VERBS,scope_before_verb:!0,visible_top_level_ceiling:69,ceiling_raise_requires_pm_item:!0,positional_shape_budget:21};function verifyExplicitPositionalSlotCensus(explicitCommands,destinationCommands){const destinations=new Set(destinationCommands);return[...new Set(explicitCommands)].filter(command=>!destinations.has(command)).map(command=>({code:"positional_signature_mismatch",command,detail:`Positional signature ${command} has no destination declaration.`}))}function positionalShapeKey(slots){return slots.map(({required,variadic,value_kind:valueKind,polymorphic})=>`${required?"r":"o"}:${variadic?"v":"s"}:${valueKind}:${polymorphic?"p":"m"}`).join("|")}function positionalSignatureKey(slots){return slots.map(({name,required,variadic,value_kind:valueKind,polymorphic})=>`${name}:${required?"r":"o"}:${variadic?"v":"s"}:${valueKind}:${polymorphic?"p":"m"}`).join("|")}function duplicatePositionalSignatureFindings(contracts,surface){const counts=new Map;for(const{command}of contracts){const normalized=normalizePositionalCommandPath(command);counts.set(normalized,(counts.get(normalized)??0)+1)}return[...counts.entries()].filter(([,count])=>count>1).map(([command,count])=>({code:"positional_signature_mismatch",command,detail:`${count} ${surface} positional signatures exist for ${command}; exactly one is required.`}))}function verifyPmCommandPositionalContracts(observed,options={}){const declared=options.declared??PM_COMMAND_POSITIONAL_CONTRACTS,positionalShapeBudget=options.positionalShapeBudget??PM_CLI_GRAMMAR_CONTRACT.positional_shape_budget,declaredByCommand=new Map(declared.map(contract=>[normalizePositionalCommandPath(contract.command),contract])),observedByCommand=new Map(observed.map(contract=>[normalizePositionalCommandPath(contract.command),contract])),findings=[...duplicatePositionalSignatureFindings(declared,"declared"),...duplicatePositionalSignatureFindings(observed,"observed"),...options.declared===void 0?[...verifyExplicitPositionalSlotCensus(EXPLICIT_POSITIONAL_SLOTS.keys(),PM_COMMAND_DESTINATION_CONTRACTS.map(({command})=>command)),...verifyExplicitPositionalSlotCensus(PM_POSITIONAL_ACTION_CONTRACTS.map(({command})=>command),PM_COMMAND_DESTINATION_CONTRACTS.map(({command})=>command))]:[]];for(const contract of declaredByCommand.values()){const normalizedCommand=normalizePositionalCommandPath(contract.command),actual=observedByCommand.get(normalizedCommand);actual?positionalSignatureKey(actual.slots)!==positionalSignatureKey(contract.slots)&&findings.push({code:"positional_signature_mismatch",command:contract.command,detail:`Observed positional signature for ${contract.command} differs from its declared SDK contract: observed=${positionalSignatureKey(actual.slots)||"<none>"}; declared=${positionalSignatureKey(contract.slots)||"<none>"}.`}):findings.push({code:"missing_observed_signature",command:contract.command,detail:`No observed positional signature exists for ${contract.command}.`})}for(const contract of observedByCommand.values())declaredByCommand.has(normalizePositionalCommandPath(contract.command))||findings.push({code:"stale_observed_signature",command:contract.command,detail:`Observed positional signature ${contract.command} has no declaration.`});const positionalShapeCount=new Set(declared.map(({slots})=>positionalShapeKey(slots))).size;return positionalShapeCount>positionalShapeBudget&&findings.push({code:"positional_shape_budget_exceeded",command:"*",detail:`Distinct positional shape count ${positionalShapeCount} exceeds budget ${positionalShapeBudget}.`}),findings.sort((left,right)=>left.command!==right.command?left.command.localeCompare(right.command):left.code.localeCompare(right.code)),{ok:findings.length===0,declared_command_count:declared.length,observed_command_count:observed.length,positional_shape_count:positionalShapeCount,positional_shape_budget:positionalShapeBudget,findings}}function validateCommandDestinations(commands,destinationsByCommand,nounSet){return commands.flatMap(command=>{const destinations=destinationsByCommand.get(command)??[];if(destinations.length===0){const separatorIndex=command.indexOf(" "),root=separatorIndex===-1?command:command.slice(0,separatorIndex);return[{code:"missing_destination",spelling:command,message:`Command \`${command}\` has no destination census row.`,nearest_target:nounSet.has(root)?root:`ops ${command}`}]}const duplicateFinding=destinations.length>1?[{code:"duplicate_destination",spelling:command,message:`Command \`${command}\` has ${destinations.length} destination rows.`,nearest_target:destinations[0].target}]:[];return destinations.reduce((findings,destination)=>(destination.disposition==="keep_as_is"&&(destination.reason?.trim().length??0)===0&&findings.push({code:"missing_destination",spelling:command,message:`Command \`${command}\` is kept as-is without a documented reason.`,nearest_target:destination.target}),nounSet.has(destination.noun)||findings.push({code:"unknown_noun",spelling:command,message:`Command \`${command}\` names undeclared noun \`${destination.noun}\`.`,nearest_target:destination.target}),findings),duplicateFinding)})}function validateDestinationCensus(commandSet,destinations){return destinations.filter(destination=>destination.disposition!=="package_owned"&&!commandSet.has(destination.command)).map(destination=>({code:"stale_destination",spelling:destination.command,message:`Destination row \`${destination.command}\` is absent from live contracts.`,nearest_target:destination.target}))}function validateAliasTargets(aliases,commandSet){return aliases.filter(alias=>!commandSet.has(alias.canonical)).map(alias=>({code:"alias_target_missing",spelling:alias.alias,message:`Alias \`${alias.alias}\` targets missing canonical command \`${alias.canonical}\`.`,nearest_target:alias.canonical_argv.join(" ")}))}function verifyPmCliGrammar(commands,aliases=[],destinations=PM_COMMAND_DESTINATION_CONTRACTS){const normalizedCommands=[...new Set(commands.map(command=>command.trim()))].filter(command=>command.length>0).sort((left,right)=>left.localeCompare(right)),commandSet=new Set(normalizedCommands),nounSet=new Set(PM_CLI_GRAMMAR_NOUNS),destinationsByCommand=new Map;for(const destination of destinations){const entries=destinationsByCommand.get(destination.command)??[];entries.push(destination),destinationsByCommand.set(destination.command,entries)}const findings=[...validateCommandDestinations(normalizedCommands,destinationsByCommand,nounSet),...validateDestinationCensus(commandSet,destinations),...validateAliasTargets(aliases.filter(alias=>commandSet.has(alias.alias)||!(destinationsByCommand.get(alias.canonical)??[]).some(destination=>destination.disposition==="package_owned")),commandSet)],hiddenAliasNames=new Set(aliases.filter(alias=>alias.hidden).map(alias=>alias.alias)),visibleTopLevelCount=new Set(normalizedCommands.filter(command=>!command.includes(" ")&&!hiddenAliasNames.has(command)&&!(destinationsByCommand.get(command)??[]).some(destination=>destination.disposition==="package_owned"))).size;return visibleTopLevelCount>PM_CLI_GRAMMAR_CONTRACT.visible_top_level_ceiling&&findings.push({code:"visible_surface_ceiling_exceeded",spelling:String(visibleTopLevelCount),message:`Visible non-package top-level command count ${visibleTopLevelCount} exceeds ceiling ${PM_CLI_GRAMMAR_CONTRACT.visible_top_level_ceiling}.`,nearest_target:"Declare the noun placement and tracked waiver before raising the ceiling."}),{ok:findings.length===0,command_count:normalizedCommands.length,destination_count:destinations.length,hidden_alias_count:aliases.filter(alias=>alias.hidden).length,visible_top_level_count:visibleTopLevelCount,visible_top_level_ceiling:PM_CLI_GRAMMAR_CONTRACT.visible_top_level_ceiling,findings}}export{PM_CLI_GRAMMAR_CONTRACT,PM_CLI_GRAMMAR_NOUNS,PM_CLI_SHARED_VERBS,PM_COMMAND_DESTINATION_CONTRACTS,PM_COMMAND_POSITIONAL_CONTRACTS,PM_POSITIONAL_ACTION_CONTRACTS,formatPmPositionalActionFlagTip,positionalShapeKey,positionalSignatureKey,resolvePmCommandPositionalContract,resolvePmPositionalActionContract,verifyExplicitPositionalSlotCensus,verifyPmCliGrammar,verifyPmCommandPositionalContracts};
|
|
2
2
|
//# sourceMappingURL=grammar-contracts.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
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]="c6f39819-1ea5-5b34-8c8e-891bea208ab0")}catch{}})();import{Option}from"commander";import{resolvePmHistoryOperation}from"./command-aliases.js";import{pathExists,refreshSearchArtifactsForMutation,shouldRunSearchRefreshInForeground,EXIT_CODE,PmCliError,printError,printResult,writeStdout,getSettingsPath,resolvePmRoot,readSettings,runActiveServiceOverride,setActiveCommandResult}from"../runtime-primitives.js";import{ACTIVITY_COMMANDER_STRING_OPTION_CONTRACTS,CONTEXT_COMMANDER_STRING_OPTION_CONTRACTS,CREATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS,CREATE_COMMANDER_STRING_OPTION_CONTRACTS,LIST_COMMANDER_STRING_OPTION_CONTRACTS,NEXT_COMMANDER_STRING_OPTION_CONTRACTS,SEARCH_COMMANDER_STRING_OPTION_CONTRACTS,UPDATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS,UPDATE_COMMANDER_STRING_OPTION_CONTRACTS,readFirstValueFromCommanderOptions,readFirstStringFromCommanderOptions,readStringArrayFromCommanderOptions}from"../cli-contracts.js";import{buildBackgroundTestCommandArgs,buildBackgroundTestAllCommandArgs}from"../test/command-args.js";async function applyActiveCommandResultService(command,args,options,global2,result){const pmRoot=resolvePmRoot(process.cwd(),global2.path),override=await runActiveServiceOverride("command_result",{command,args,options,global:global2,pm_root:pmRoot,result});return override.handled?override.result:result}function syncCommanderActionOptions(actionCommand,commandOptions){for(const[key,value]of Object.entries(commandOptions)){const source=actionCommand.getOptionValueSource(key),unchanged=source!==void 0&&Object.is(actionCommand.getOptionValue(key),value);actionCommand.setOptionValueWithSource(key,value,unchanged?source:"cli")}}function readJoinedRepeatedOption(options,contract){const values=[],observedArrays=new Set;for(const key of contract.keys){if(!Object.hasOwn(options,key))continue;const value=options[key];if(value!=null){if(typeof value=="string"){values.push(value);continue}if(!Array.isArray(value)||!value.every(entry=>typeof entry=="string"))return;observedArrays.has(value)||(observedArrays.add(value),values.push(...value))}}return values.length>0?values.join("; "):void 0}const RESOLVED_GLOBAL_OPTIONS=Symbol("pm.resolvedGlobalOptions");function commandOptionsReader(command){return typeof command=="object"&&command!==null?command:{}}function resolveCommanderContract(contracts,target){return contracts.find(entry=>entry.target===target)??{target,keys:[target]}}function setResolvedGlobalOptions(command,globalOptions){command[RESOLVED_GLOBAL_OPTIONS]={...globalOptions}}function clearResolvedGlobalOptions(command){delete command[RESOLVED_GLOBAL_OPTIONS]}function readStringCommandOption(options,key){return typeof options[key]=="string"?options[key]:void 0}function getGlobalOptions(command){const commandPath=resolvePmHistoryOperation(getCommandPath(command)),resolved=command[RESOLVED_GLOBAL_OPTIONS];if(resolved)return{...resolved,...commandPath.length>0?{command:commandPath}:{}};const reader=commandOptionsReader(command),opts=typeof reader.optsWithGlobals=="function"?reader.optsWithGlobals():typeof reader.opts=="function"?reader.opts():{};return{json:opts.json===!0?!0:void 0,quiet:!!opts.quiet,noChangedFields:opts.changedFields===!1,...opts.fullChangedFields===!0?{fullChangedFields:!0}:{},idOnly:opts.idOnly===!0,...opts.lean===!0?{lean:!0}:{},...opts.tokenAccounting===!0?{tokenAccounting:!0}:{},outputInclude:readStringCommandOption(opts,"outputInclude"),outputLimit:readStringCommandOption(opts,"outputLimit"),outputBudget:readStringCommandOption(opts,"outputBudget"),outputSession:readStringCommandOption(opts,"outputSession"),outputCursor:readStringCommandOption(opts,"outputCursor"),...opts.outputRowContract===!0?{outputRowContract:!0}:{},...opts.outputFormat==="toon"||opts.outputFormat==="json"?{outputFormat:opts.outputFormat}:{},path:readStringCommandOption(opts,"pmPath")??readStringCommandOption(opts,"path"),noExtensions:opts.extensions===!1,noPager:!!opts.noPager,profile:!!opts.profile,...commandPath.length>0?{command:commandPath}:{},...typeof opts.author=="string"?{author:opts.author}:{}}}function getCommandPath(command){const parts=[];let current=command;for(;current?.parent;)parts.unshift(current.name()),current=current.parent;return parts.join(" ")}async function applyDefaultOutputFormat(globalOptions){if(globalOptions.json===!0)return globalOptions;const pmRoot=resolvePmRoot(process.cwd(),globalOptions.path);if(!await pathExists(getSettingsPath(pmRoot)))return globalOptions;const settings=await readSettings(pmRoot);return{...globalOptions,defaultOutputFormat:settings.output.default_format}}function collect(value,previous){const next=previous??[];return next.push(value),next}function optionTrue(options,key){return options[key]===!0?!0:void 0}function optionFalse(options,key){return options[key]===!1?!0:void 0}function readOptionString(options,key){return typeof options[key]=="string"?options[key]:void 0}function addHiddenOption(command,flags,description,repeatable=!1,repeatableParser=void 0){const option=new Option(flags,description).hideHelp();repeatable&&option.argParser(repeatableParser??collect),command.addOption(option)}function addHiddenOptions(command,aliases,repeatable){for(const[flags,description]of aliases)addHiddenOption(command,flags,description,repeatable)}function anyOptionTrue(options,keys){return keys.some(key=>options[key]===!0)?!0:void 0}function readStringOrFiniteNumberFromCommanderOptions(options,contract){const value=readFirstValueFromCommanderOptions(options,contract);return typeof value=="string"||typeof value=="number"&&Number.isFinite(value)?value:void 0}function copyUnknownOptions(target,source){for(const[key,value]of Object.entries(source))key==="__proto__"||key==="constructor"||key==="prototype"||Object.hasOwn(target,key)||(target[key]=value)}function formatHookWarnings(warnings){return warnings.join(",")}function normalizeCreateOptions(commandOptions,options={}){const readCreateString=target=>readFirstStringFromCommanderOptions(commandOptions,resolveCommanderContract(CREATE_COMMANDER_STRING_OPTION_CONTRACTS,target)),readCreateList=target=>readStringArrayFromCommanderOptions(commandOptions,resolveCommanderContract(CREATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS,target)),type=readCreateString("type");if(options.requireType!==!1&&type===void 0)throw new PmCliError("Missing required option --type <value>. Why required: create resolves runtime schema fields/workflow from item type. Retry: add --type <built-in or configured custom type> (example: --type Task).",EXIT_CODE.USAGE);const normalized={title:readCreateString("title"),description:readCreateString("description"),type,template:readCreateString("template"),createMode:readCreateString("createMode"),schedulePreset:readCreateString("schedulePreset"),status:readCreateString("status"),closeReason:readCreateString("closeReason"),completedAt:readCreateString("completedAt"),priority:readCreateString("priority"),tags:readCreateString("tags"),addTags:readCreateList("addTags"),body:readCreateString("body"),deadline:readCreateString("deadline"),estimatedMinutes:readCreateString("estimatedMinutes"),acceptanceCriteria:readJoinedRepeatedOption(commandOptions,resolveCommanderContract(CREATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS,"acceptanceCriteria")),definitionOfReady:readCreateString("definitionOfReady"),order:readCreateString("order"),rank:readCreateString("rank"),goal:readCreateString("goal"),objective:readCreateString("objective"),value:readCreateString("value"),impact:readCreateString("impact"),outcome:readCreateString("outcome"),whyNow:readCreateString("whyNow"),author:readCreateString("author"),message:readCreateString("message"),assignee:readCreateString("assignee"),parent:readCreateString("parent"),inheritFocus:commandOptions.inheritFocus,allowMissingParent:anyOptionTrue(commandOptions,["allowMissingParent","allow_missing_parent"])===!0,allowUnresolvedDeps:anyOptionTrue(commandOptions,["allowUnresolvedDeps","allow_unresolved_deps"])===!0,allowDuplicate:optionTrue(commandOptions,"allowDuplicate")===!0,reviewer:readCreateString("reviewer"),risk:readCreateString("risk"),confidence:readCreateString("confidence"),sprint:readCreateString("sprint"),release:readCreateString("release"),blockedBy:readCreateString("blockedBy"),blockedReason:readCreateString("blockedReason"),unblockNote:readCreateString("unblockNote"),reporter:readCreateString("reporter"),severity:readCreateString("severity"),environment:readCreateString("environment"),reproSteps:readCreateString("reproSteps"),resolution:readCreateString("resolution"),expectedResult:readCreateString("expectedResult"),actualResult:readCreateString("actualResult"),affectedVersion:readCreateString("affectedVersion"),fixedVersion:readCreateString("fixedVersion"),component:readCreateString("component"),regression:commandOptions.regression===!0?"true":readCreateString("regression"),customerImpact:readCreateString("customerImpact"),dep:readCreateList("dep"),comment:readCreateList("comment"),note:readCreateList("note"),learning:readCreateList("learning"),file:readCreateList("file"),test:readCreateList("test"),doc:readCreateList("doc"),reminder:readCreateList("reminder"),event:readCreateList("event"),typeOption:readCreateList("typeOption"),field:readCreateList("field"),unset:readCreateList("unset"),clearDeps:optionTrue(commandOptions,"clearDeps"),clearComments:optionTrue(commandOptions,"clearComments"),clearNotes:optionTrue(commandOptions,"clearNotes"),clearLearnings:optionTrue(commandOptions,"clearLearnings"),clearFiles:optionTrue(commandOptions,"clearFiles"),clearTests:optionTrue(commandOptions,"clearTests"),clearDocs:optionTrue(commandOptions,"clearDocs"),clearReminders:optionTrue(commandOptions,"clearReminders"),clearEvents:optionTrue(commandOptions,"clearEvents"),clearTypeOptions:optionTrue(commandOptions,"clearTypeOptions")};return copyUnknownOptions(normalized,commandOptions),normalized}function normalizeUpdateOptions(commandOptions){const readUpdateString=target=>readFirstStringFromCommanderOptions(commandOptions,resolveCommanderContract(UPDATE_COMMANDER_STRING_OPTION_CONTRACTS,target)),readUpdateList=target=>readStringArrayFromCommanderOptions(commandOptions,resolveCommanderContract(UPDATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS,target)),normalized={title:readUpdateString("title"),description:readUpdateString("description"),body:readUpdateString("body"),status:readUpdateString("status"),closeReason:readUpdateString("closeReason"),priority:readUpdateString("priority"),type:readUpdateString("type"),tags:readUpdateString("tags"),addTags:readUpdateList("addTags"),removeTags:readUpdateList("removeTags"),deadline:readUpdateString("deadline"),estimatedMinutes:readUpdateString("estimatedMinutes"),acceptanceCriteria:readJoinedRepeatedOption(commandOptions,resolveCommanderContract(UPDATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS,"acceptanceCriteria")),addAc:readUpdateList("addAc"),removeAc:readUpdateList("removeAc"),definitionOfReady:readUpdateString("definitionOfReady"),order:readUpdateString("order"),rank:readUpdateString("rank"),goal:readUpdateString("goal"),objective:readUpdateString("objective"),value:readUpdateString("value"),impact:readUpdateString("impact"),outcome:readUpdateString("outcome"),whyNow:readUpdateString("whyNow"),author:readUpdateString("author"),message:readUpdateString("message"),force:!!commandOptions.force,ownershipMetadataBypass:commandOptions.ownershipMetadataBypass===!0?!0:void 0,ownershipDependencyBypass:commandOptions.ownershipDependencyBypass===!0?!0:void 0,assignee:readUpdateString("assignee"),parent:readUpdateString("parent"),allowUnresolvedDeps:anyOptionTrue(commandOptions,["allowUnresolvedDeps","allow_unresolved_deps"])===!0,reviewer:readUpdateString("reviewer"),risk:readUpdateString("risk"),confidence:readUpdateString("confidence"),sprint:readUpdateString("sprint"),release:readUpdateString("release"),blockedBy:readUpdateString("blockedBy"),blockedReason:readUpdateString("blockedReason"),unblockNote:readUpdateString("unblockNote"),reporter:readUpdateString("reporter"),severity:readUpdateString("severity"),environment:readUpdateString("environment"),reproSteps:readUpdateString("reproSteps"),resolution:readUpdateString("resolution"),expectedResult:readUpdateString("expectedResult"),actualResult:readUpdateString("actualResult"),affectedVersion:readUpdateString("affectedVersion"),fixedVersion:readUpdateString("fixedVersion"),component:readUpdateString("component"),regression:commandOptions.regression===!0?"true":readUpdateString("regression"),customerImpact:readUpdateString("customerImpact"),dep:readUpdateList("dep"),depRemove:readUpdateList("depRemove"),replaceDeps:optionTrue(commandOptions,"replaceDeps"),replaceTests:optionTrue(commandOptions,"replaceTests"),replaceFiles:optionTrue(commandOptions,"replaceFiles"),replaceDocs:optionTrue(commandOptions,"replaceDocs"),comment:readUpdateList("comment"),note:readUpdateList("note"),learning:readUpdateList("learning"),file:readUpdateList("file"),test:readUpdateList("test"),doc:readUpdateList("doc"),reminder:readUpdateList("reminder"),event:readUpdateList("event"),typeOption:readUpdateList("typeOption"),field:readUpdateList("field"),unset:readUpdateList("unset"),clearDeps:optionTrue(commandOptions,"clearDeps"),clearComments:optionTrue(commandOptions,"clearComments"),clearNotes:optionTrue(commandOptions,"clearNotes"),clearLearnings:optionTrue(commandOptions,"clearLearnings"),clearFiles:optionTrue(commandOptions,"clearFiles"),clearTests:optionTrue(commandOptions,"clearTests"),clearDocs:optionTrue(commandOptions,"clearDocs"),clearReminders:optionTrue(commandOptions,"clearReminders"),clearEvents:optionTrue(commandOptions,"clearEvents"),clearTypeOptions:optionTrue(commandOptions,"clearTypeOptions")};return copyUnknownOptions(normalized,commandOptions),normalized}const UPDATE_MANY_CONTROL_OPTION_KEYS=new Set(["filterStatus","filterType","filterTag","filterPriority","filterDeadlineBefore","filterDeadlineAfter","filterUpdatedAfter","filterUpdatedBefore","filterCreatedAfter","filterCreatedBefore","filterAssignee","filterAssigneeFilter","filterAssignee_filter","filterParent","filterSprint","filterRelease","filterAcMissing","filterEstimatesMissing","filterEstimateMissing","filterResolutionMissing","filterMetadataMissing","filterReviewerMissing","filterRiskMissing","filterConfidenceMissing","filterSprintMissing","filterReleaseMissing","filterHasNotes","filterNoNotes","filterHasLearnings","filterNoLearnings","filterHasFiles","filterNoFiles","filterHasDocs","filterNoDocs","filterHasTests","filterNoTests","filterHasComments","filterNoComments","filterHasDeps","filterNoDeps","filterHasBody","filterEmptyBody","filterHasLinkedCommand","filterNoLinkedCommand","ids","limit","offset","dryRun","rollback","checkpoint"]);function extractUpdateManyMutationOptionSource(commandOptions){const mutationOptions={};for(const[key,value]of Object.entries(commandOptions))UPDATE_MANY_CONTROL_OPTION_KEYS.has(key)||(mutationOptions[key]=value);return mutationOptions}function readListOptionString(options,target){const contract=resolveCommanderContract(LIST_COMMANDER_STRING_OPTION_CONTRACTS,target),stringValue=readFirstStringFromCommanderOptions(options,contract);if(stringValue!==void 0)return stringValue;for(const key of contract.keys){const value=options[key];if(Array.isArray(value)){const strings=value.filter(entry=>typeof entry=="string");if(strings.length>0)return strings.join(",")}if(target==="ids"&&typeof value=="string")return value;if(typeof value=="number"&&Number.isFinite(value))return String(value)}}function readSelectionFilterOptionFields(options){const filterFilesMissing=optionTrue(options,"filterFilesMissing"),filterDocsMissing=optionTrue(options,"filterDocsMissing");return{filterReviewerMissing:optionTrue(options,"filterReviewerMissing"),filterRiskMissing:optionTrue(options,"filterRiskMissing"),filterConfidenceMissing:optionTrue(options,"filterConfidenceMissing"),filterSprintMissing:optionTrue(options,"filterSprintMissing"),filterReleaseMissing:optionTrue(options,"filterReleaseMissing"),hasNotes:optionTrue(options,"hasNotes"),hasLearnings:optionTrue(options,"hasLearnings"),hasFiles:optionTrue(options,"hasFiles"),hasDocs:optionTrue(options,"hasDocs"),hasTests:optionTrue(options,"hasTests"),hasComments:optionTrue(options,"hasComments"),hasDeps:optionTrue(options,"hasDeps"),hasBody:optionTrue(options,"hasBody"),hasLinkedCommand:optionTrue(options,"hasLinkedCommand"),noNotes:optionFalse(options,"notes"),noLearnings:optionFalse(options,"learnings"),noFiles:optionFalse(options,"files")??filterFilesMissing,filterFilesMissing,noDocs:optionFalse(options,"docs")??filterDocsMissing,filterDocsMissing,noTests:optionFalse(options,"tests"),noComments:optionFalse(options,"comments"),noDeps:optionFalse(options,"deps"),emptyBody:optionTrue(options,"emptyBody"),noLinkedCommand:optionFalse(options,"linkedCommand")}}function normalizeListOptions(options){const normalized={status:readListOptionString(options,"status"),type:readListOptionString(options,"type"),tag:readListOptionString(options,"tag"),priority:readListOptionString(options,"priority"),deadlineBefore:readListOptionString(options,"deadlineBefore"),deadlineAfter:readListOptionString(options,"deadlineAfter"),updatedAfter:readListOptionString(options,"updatedAfter"),updatedBefore:readListOptionString(options,"updatedBefore"),createdAfter:readListOptionString(options,"createdAfter"),createdBefore:readListOptionString(options,"createdBefore"),today:optionTrue(options,"today"),recent:optionTrue(options,"recent"),ids:readListOptionString(options,"ids"),assignee:readListOptionString(options,"assignee"),assigneeFilter:readListOptionString(options,"assigneeFilter"),parent:readListOptionString(options,"parent"),sprint:readListOptionString(options,"sprint"),release:readListOptionString(options,"release"),limit:readListOptionString(options,"limit"),offset:readListOptionString(options,"offset"),noTruncate:optionFalse(options,"truncate"),includeBody:optionTrue(options,"includeBody"),strictRead:optionTrue(options,"strictRead"),compact:optionTrue(options,"compact"),brief:optionTrue(options,"brief"),full:optionTrue(options,"full"),fields:readListOptionString(options,"fields"),sort:readListOptionString(options,"sort"),order:readListOptionString(options,"order"),tree:optionTrue(options,"tree"),treeDepth:readListOptionString(options,"treeDepth"),filterAcMissing:optionTrue(options,"filterAcMissing"),filterEstimatesMissing:anyOptionTrue(options,["filterEstimatesMissing","filterEstimateMissing"]),filterResolutionMissing:optionTrue(options,"filterResolutionMissing"),filterMetadataMissing:optionTrue(options,"filterMetadataMissing"),...readSelectionFilterOptionFields(options)};return copyUnknownOptions(normalized,options),normalized}function normalizeAggregateOptions(options){return{groupBy:typeof options.groupBy=="string"?options.groupBy:void 0,setMode:typeof options.setMode=="string"?options.setMode:void 0,limit:readListOptionString(options,"limit"),after:readListOptionString(options,"after"),count:options.count===!0?!0:void 0,completion:options.completion===!0?!0:void 0,sum:typeof options.sum=="string"?options.sum:void 0,avg:typeof options.avg=="string"?options.avg:void 0,includeUnparented:options.includeUnparented===!0||options.include_unparented===!0,status:typeof options.status=="string"?options.status:void 0,type:readListOptionString(options,"type"),tag:readListOptionString(options,"tag"),priority:readListOptionString(options,"priority"),deadlineBefore:readListOptionString(options,"deadlineBefore"),deadlineAfter:readListOptionString(options,"deadlineAfter"),assignee:readListOptionString(options,"assignee"),assigneeFilter:readListOptionString(options,"assigneeFilter"),parent:readListOptionString(options,"parent"),sprint:readListOptionString(options,"sprint"),release:readListOptionString(options,"release")}}function printListJsonStream(commandName,result,globalOptions){if(setActiveCommandResult(result),globalOptions.quiet)return;const warnings=Array.isArray(result.warnings)?result.warnings:[],metaPayload={type:"meta",command:commandName,count:result.count,now:result.now,filters:result.filters};if(warnings.length>0&&(metaPayload.warnings=warnings),!!writeStdout(`${JSON.stringify(metaPayload)}
|
|
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]="744840e4-d430-54d3-b681-7244a58d86cb")}catch{}})();import{Option}from"commander";import{resolvePmHistoryOperation}from"./command-aliases.js";import{pathExists,refreshSearchArtifactsForMutation,shouldRunSearchRefreshInForeground,EXIT_CODE,PmCliError,printError,printResult,writeStdout,getSettingsPath,resolvePmRoot,transferMutationStdinTokenPolicy,readSettings,runActiveServiceOverride,setActiveCommandResult}from"../runtime-primitives.js";import{ACTIVITY_COMMANDER_STRING_OPTION_CONTRACTS,CONTEXT_COMMANDER_STRING_OPTION_CONTRACTS,CREATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS,CREATE_COMMANDER_STRING_OPTION_CONTRACTS,LIST_COMMANDER_STRING_OPTION_CONTRACTS,NEXT_COMMANDER_STRING_OPTION_CONTRACTS,SEARCH_COMMANDER_STRING_OPTION_CONTRACTS,UPDATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS,UPDATE_COMMANDER_STRING_OPTION_CONTRACTS,readFirstValueFromCommanderOptions,readFirstStringFromCommanderOptions,readStringArrayFromCommanderOptions}from"../cli-contracts.js";import{buildBackgroundTestCommandArgs,buildBackgroundTestAllCommandArgs}from"../test/command-args.js";async function applyActiveCommandResultService(command,args,options,global2,result){const pmRoot=resolvePmRoot(process.cwd(),global2.path),override=await runActiveServiceOverride("command_result",{command,args,options,global:global2,pm_root:pmRoot,result});return override.handled?override.result:result}function syncCommanderActionOptions(actionCommand,commandOptions){for(const[key,value]of Object.entries(commandOptions)){const source=actionCommand.getOptionValueSource(key),unchanged=source!==void 0&&Object.is(actionCommand.getOptionValue(key),value);actionCommand.setOptionValueWithSource(key,value,unchanged?source:"cli")}}function readJoinedRepeatedOption(options,contract){const values=[],observedArrays=new Set;for(const key of contract.keys){if(!Object.hasOwn(options,key))continue;const value=options[key];if(value!=null){if(typeof value=="string"){values.push(value);continue}if(!Array.isArray(value)||!value.every(entry=>typeof entry=="string"))return;observedArrays.has(value)||(observedArrays.add(value),values.push(...value))}}return values.length>0?values.join("; "):void 0}const RESOLVED_GLOBAL_OPTIONS=Symbol("pm.resolvedGlobalOptions");function commandOptionsReader(command){return typeof command=="object"&&command!==null?command:{}}function resolveCommanderContract(contracts,target){return contracts.find(entry=>entry.target===target)??{target,keys:[target]}}function setResolvedGlobalOptions(command,globalOptions){command[RESOLVED_GLOBAL_OPTIONS]={...globalOptions}}function clearResolvedGlobalOptions(command){delete command[RESOLVED_GLOBAL_OPTIONS]}function readStringCommandOption(options,key){return typeof options[key]=="string"?options[key]:void 0}function getGlobalOptions(command){const commandPath=resolvePmHistoryOperation(getCommandPath(command)),resolved=command[RESOLVED_GLOBAL_OPTIONS];if(resolved)return{...resolved,...commandPath.length>0?{command:commandPath}:{}};const reader=commandOptionsReader(command),opts=typeof reader.optsWithGlobals=="function"?reader.optsWithGlobals():typeof reader.opts=="function"?reader.opts():{};return{json:opts.json===!0?!0:void 0,quiet:!!opts.quiet,noChangedFields:opts.changedFields===!1,...opts.fullChangedFields===!0?{fullChangedFields:!0}:{},idOnly:opts.idOnly===!0,...opts.lean===!0?{lean:!0}:{},...opts.tokenAccounting===!0?{tokenAccounting:!0}:{},outputInclude:readStringCommandOption(opts,"outputInclude"),outputLimit:readStringCommandOption(opts,"outputLimit"),outputBudget:readStringCommandOption(opts,"outputBudget"),outputSession:readStringCommandOption(opts,"outputSession"),outputCursor:readStringCommandOption(opts,"outputCursor"),...opts.outputRowContract===!0?{outputRowContract:!0}:{},...opts.outputFormat==="toon"||opts.outputFormat==="json"?{outputFormat:opts.outputFormat}:{},path:readStringCommandOption(opts,"pmPath")??readStringCommandOption(opts,"path"),noExtensions:opts.extensions===!1,noPager:!!opts.noPager,profile:!!opts.profile,...commandPath.length>0?{command:commandPath}:{},...typeof opts.author=="string"?{author:opts.author}:{}}}function getCommandPath(command){const parts=[];let current=command;for(;current?.parent;)parts.unshift(current.name()),current=current.parent;return parts.join(" ")}async function applyDefaultOutputFormat(globalOptions){if(globalOptions.json===!0)return globalOptions;const pmRoot=resolvePmRoot(process.cwd(),globalOptions.path);if(!await pathExists(getSettingsPath(pmRoot)))return globalOptions;const settings=await readSettings(pmRoot);return{...globalOptions,defaultOutputFormat:settings.output.default_format}}function collect(value,previous){const next=previous??[];return next.push(value),next}function optionTrue(options,key){return options[key]===!0?!0:void 0}function optionFalse(options,key){return options[key]===!1?!0:void 0}function readOptionString(options,key){return typeof options[key]=="string"?options[key]:void 0}function addHiddenOption(command,flags,description,repeatable=!1,repeatableParser=void 0){const option=new Option(flags,description).hideHelp();repeatable&&option.argParser(repeatableParser??collect),command.addOption(option)}function addHiddenOptions(command,aliases,repeatable){for(const[flags,description]of aliases)addHiddenOption(command,flags,description,repeatable)}function anyOptionTrue(options,keys){return keys.some(key=>options[key]===!0)?!0:void 0}function readStringOrFiniteNumberFromCommanderOptions(options,contract){const value=readFirstValueFromCommanderOptions(options,contract);return typeof value=="string"||typeof value=="number"&&Number.isFinite(value)?value:void 0}function copyUnknownOptions(target,source){for(const[key,value]of Object.entries(source))key==="__proto__"||key==="constructor"||key==="prototype"||Object.hasOwn(target,key)||(target[key]=value)}function formatHookWarnings(warnings){return warnings.join(",")}function normalizeCreateOptions(commandOptions,options={}){const readCreateString=target=>readFirstStringFromCommanderOptions(commandOptions,resolveCommanderContract(CREATE_COMMANDER_STRING_OPTION_CONTRACTS,target)),readCreateList=target=>readStringArrayFromCommanderOptions(commandOptions,resolveCommanderContract(CREATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS,target)),type=readCreateString("type");if(options.requireType!==!1&&type===void 0)throw new PmCliError("Missing required option --type <value>. Why required: create resolves runtime schema fields/workflow from item type. Retry: add --type <built-in or configured custom type> (example: --type Task).",EXIT_CODE.USAGE);const normalized={title:readCreateString("title"),description:readCreateString("description"),type,template:readCreateString("template"),createMode:readCreateString("createMode"),schedulePreset:readCreateString("schedulePreset"),status:readCreateString("status"),closeReason:readCreateString("closeReason"),completedAt:readCreateString("completedAt"),priority:readCreateString("priority"),tags:readCreateString("tags"),addTags:readCreateList("addTags"),body:readCreateString("body"),deadline:readCreateString("deadline"),estimatedMinutes:readCreateString("estimatedMinutes"),acceptanceCriteria:readJoinedRepeatedOption(commandOptions,resolveCommanderContract(CREATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS,"acceptanceCriteria")),definitionOfReady:readCreateString("definitionOfReady"),order:readCreateString("order"),rank:readCreateString("rank"),goal:readCreateString("goal"),objective:readCreateString("objective"),value:readCreateString("value"),impact:readCreateString("impact"),outcome:readCreateString("outcome"),whyNow:readCreateString("whyNow"),author:readCreateString("author"),message:readCreateString("message"),assignee:readCreateString("assignee"),parent:readCreateString("parent"),inheritFocus:commandOptions.inheritFocus,allowMissingParent:anyOptionTrue(commandOptions,["allowMissingParent","allow_missing_parent"])===!0,allowUnresolvedDeps:anyOptionTrue(commandOptions,["allowUnresolvedDeps","allow_unresolved_deps"])===!0,allowDuplicate:optionTrue(commandOptions,"allowDuplicate")===!0,reviewer:readCreateString("reviewer"),risk:readCreateString("risk"),confidence:readCreateString("confidence"),sprint:readCreateString("sprint"),release:readCreateString("release"),blockedBy:readCreateString("blockedBy"),blockedReason:readCreateString("blockedReason"),unblockNote:readCreateString("unblockNote"),reporter:readCreateString("reporter"),severity:readCreateString("severity"),environment:readCreateString("environment"),reproSteps:readCreateString("reproSteps"),resolution:readCreateString("resolution"),expectedResult:readCreateString("expectedResult"),actualResult:readCreateString("actualResult"),affectedVersion:readCreateString("affectedVersion"),fixedVersion:readCreateString("fixedVersion"),component:readCreateString("component"),regression:commandOptions.regression===!0?"true":readCreateString("regression"),customerImpact:readCreateString("customerImpact"),dep:readCreateList("dep"),comment:readCreateList("comment"),note:readCreateList("note"),learning:readCreateList("learning"),file:readCreateList("file"),test:readCreateList("test"),doc:readCreateList("doc"),reminder:readCreateList("reminder"),event:readCreateList("event"),typeOption:readCreateList("typeOption"),field:readCreateList("field"),unset:readCreateList("unset"),clearDeps:optionTrue(commandOptions,"clearDeps"),clearComments:optionTrue(commandOptions,"clearComments"),clearNotes:optionTrue(commandOptions,"clearNotes"),clearLearnings:optionTrue(commandOptions,"clearLearnings"),clearFiles:optionTrue(commandOptions,"clearFiles"),clearTests:optionTrue(commandOptions,"clearTests"),clearDocs:optionTrue(commandOptions,"clearDocs"),clearReminders:optionTrue(commandOptions,"clearReminders"),clearEvents:optionTrue(commandOptions,"clearEvents"),clearTypeOptions:optionTrue(commandOptions,"clearTypeOptions")};return copyUnknownOptions(normalized,commandOptions),transferMutationStdinTokenPolicy(commandOptions,normalized)}function normalizeUpdateOptions(commandOptions){const readUpdateString=target=>readFirstStringFromCommanderOptions(commandOptions,resolveCommanderContract(UPDATE_COMMANDER_STRING_OPTION_CONTRACTS,target)),readUpdateList=target=>readStringArrayFromCommanderOptions(commandOptions,resolveCommanderContract(UPDATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS,target)),normalized={title:readUpdateString("title"),description:readUpdateString("description"),body:readUpdateString("body"),status:readUpdateString("status"),closeReason:readUpdateString("closeReason"),priority:readUpdateString("priority"),type:readUpdateString("type"),tags:readUpdateString("tags"),addTags:readUpdateList("addTags"),removeTags:readUpdateList("removeTags"),deadline:readUpdateString("deadline"),estimatedMinutes:readUpdateString("estimatedMinutes"),acceptanceCriteria:readJoinedRepeatedOption(commandOptions,resolveCommanderContract(UPDATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS,"acceptanceCriteria")),addAc:readUpdateList("addAc"),removeAc:readUpdateList("removeAc"),definitionOfReady:readUpdateString("definitionOfReady"),order:readUpdateString("order"),rank:readUpdateString("rank"),goal:readUpdateString("goal"),objective:readUpdateString("objective"),value:readUpdateString("value"),impact:readUpdateString("impact"),outcome:readUpdateString("outcome"),whyNow:readUpdateString("whyNow"),author:readUpdateString("author"),message:readUpdateString("message"),force:!!commandOptions.force,ownershipMetadataBypass:commandOptions.ownershipMetadataBypass===!0?!0:void 0,ownershipDependencyBypass:commandOptions.ownershipDependencyBypass===!0?!0:void 0,assignee:readUpdateString("assignee"),parent:readUpdateString("parent"),allowUnresolvedDeps:anyOptionTrue(commandOptions,["allowUnresolvedDeps","allow_unresolved_deps"])===!0,reviewer:readUpdateString("reviewer"),risk:readUpdateString("risk"),confidence:readUpdateString("confidence"),sprint:readUpdateString("sprint"),release:readUpdateString("release"),blockedBy:readUpdateString("blockedBy"),blockedReason:readUpdateString("blockedReason"),unblockNote:readUpdateString("unblockNote"),reporter:readUpdateString("reporter"),severity:readUpdateString("severity"),environment:readUpdateString("environment"),reproSteps:readUpdateString("reproSteps"),resolution:readUpdateString("resolution"),expectedResult:readUpdateString("expectedResult"),actualResult:readUpdateString("actualResult"),affectedVersion:readUpdateString("affectedVersion"),fixedVersion:readUpdateString("fixedVersion"),component:readUpdateString("component"),regression:commandOptions.regression===!0?"true":readUpdateString("regression"),customerImpact:readUpdateString("customerImpact"),dep:readUpdateList("dep"),depRemove:readUpdateList("depRemove"),replaceDeps:optionTrue(commandOptions,"replaceDeps"),replaceTests:optionTrue(commandOptions,"replaceTests"),replaceFiles:optionTrue(commandOptions,"replaceFiles"),replaceDocs:optionTrue(commandOptions,"replaceDocs"),comment:readUpdateList("comment"),note:readUpdateList("note"),learning:readUpdateList("learning"),file:readUpdateList("file"),test:readUpdateList("test"),doc:readUpdateList("doc"),reminder:readUpdateList("reminder"),event:readUpdateList("event"),typeOption:readUpdateList("typeOption"),field:readUpdateList("field"),unset:readUpdateList("unset"),clearDeps:optionTrue(commandOptions,"clearDeps"),clearComments:optionTrue(commandOptions,"clearComments"),clearNotes:optionTrue(commandOptions,"clearNotes"),clearLearnings:optionTrue(commandOptions,"clearLearnings"),clearFiles:optionTrue(commandOptions,"clearFiles"),clearTests:optionTrue(commandOptions,"clearTests"),clearDocs:optionTrue(commandOptions,"clearDocs"),clearReminders:optionTrue(commandOptions,"clearReminders"),clearEvents:optionTrue(commandOptions,"clearEvents"),clearTypeOptions:optionTrue(commandOptions,"clearTypeOptions")};return copyUnknownOptions(normalized,commandOptions),transferMutationStdinTokenPolicy(commandOptions,normalized)}const UPDATE_MANY_CONTROL_OPTION_KEYS=new Set(["filterStatus","filterType","filterTag","filterPriority","filterDeadlineBefore","filterDeadlineAfter","filterUpdatedAfter","filterUpdatedBefore","filterCreatedAfter","filterCreatedBefore","filterAssignee","filterAssigneeFilter","filterAssignee_filter","filterParent","filterSprint","filterRelease","filterAcMissing","filterEstimatesMissing","filterEstimateMissing","filterResolutionMissing","filterMetadataMissing","filterReviewerMissing","filterRiskMissing","filterConfidenceMissing","filterSprintMissing","filterReleaseMissing","filterHasNotes","filterNoNotes","filterHasLearnings","filterNoLearnings","filterHasFiles","filterNoFiles","filterHasDocs","filterNoDocs","filterHasTests","filterNoTests","filterHasComments","filterNoComments","filterHasDeps","filterNoDeps","filterHasBody","filterEmptyBody","filterHasLinkedCommand","filterNoLinkedCommand","ids","limit","offset","dryRun","rollback","checkpoint"]);function extractUpdateManyMutationOptionSource(commandOptions){const mutationOptions={};for(const[key,value]of Object.entries(commandOptions))UPDATE_MANY_CONTROL_OPTION_KEYS.has(key)||(mutationOptions[key]=value);return mutationOptions}function readListOptionString(options,target){const contract=resolveCommanderContract(LIST_COMMANDER_STRING_OPTION_CONTRACTS,target),stringValue=readFirstStringFromCommanderOptions(options,contract);if(stringValue!==void 0)return stringValue;for(const key of contract.keys){const value=options[key];if(Array.isArray(value)){const strings=value.filter(entry=>typeof entry=="string");if(strings.length>0)return strings.join(",")}if(target==="ids"&&typeof value=="string")return value;if(typeof value=="number"&&Number.isFinite(value))return String(value)}}function readSelectionFilterOptionFields(options){const filterFilesMissing=optionTrue(options,"filterFilesMissing"),filterDocsMissing=optionTrue(options,"filterDocsMissing");return{filterReviewerMissing:optionTrue(options,"filterReviewerMissing"),filterRiskMissing:optionTrue(options,"filterRiskMissing"),filterConfidenceMissing:optionTrue(options,"filterConfidenceMissing"),filterSprintMissing:optionTrue(options,"filterSprintMissing"),filterReleaseMissing:optionTrue(options,"filterReleaseMissing"),hasNotes:optionTrue(options,"hasNotes"),hasLearnings:optionTrue(options,"hasLearnings"),hasFiles:optionTrue(options,"hasFiles"),hasDocs:optionTrue(options,"hasDocs"),hasTests:optionTrue(options,"hasTests"),hasComments:optionTrue(options,"hasComments"),hasDeps:optionTrue(options,"hasDeps"),hasBody:optionTrue(options,"hasBody"),hasLinkedCommand:optionTrue(options,"hasLinkedCommand"),noNotes:optionFalse(options,"notes"),noLearnings:optionFalse(options,"learnings"),noFiles:optionFalse(options,"files")??filterFilesMissing,filterFilesMissing,noDocs:optionFalse(options,"docs")??filterDocsMissing,filterDocsMissing,noTests:optionFalse(options,"tests"),noComments:optionFalse(options,"comments"),noDeps:optionFalse(options,"deps"),emptyBody:optionTrue(options,"emptyBody"),noLinkedCommand:optionFalse(options,"linkedCommand")}}function normalizeListOptions(options){const normalized={status:readListOptionString(options,"status"),type:readListOptionString(options,"type"),tag:readListOptionString(options,"tag"),priority:readListOptionString(options,"priority"),deadlineBefore:readListOptionString(options,"deadlineBefore"),deadlineAfter:readListOptionString(options,"deadlineAfter"),updatedAfter:readListOptionString(options,"updatedAfter"),updatedBefore:readListOptionString(options,"updatedBefore"),createdAfter:readListOptionString(options,"createdAfter"),createdBefore:readListOptionString(options,"createdBefore"),today:optionTrue(options,"today"),recent:optionTrue(options,"recent"),ids:readListOptionString(options,"ids"),assignee:readListOptionString(options,"assignee"),assigneeFilter:readListOptionString(options,"assigneeFilter"),parent:readListOptionString(options,"parent"),sprint:readListOptionString(options,"sprint"),release:readListOptionString(options,"release"),limit:readListOptionString(options,"limit"),offset:readListOptionString(options,"offset"),noTruncate:optionFalse(options,"truncate"),includeBody:optionTrue(options,"includeBody"),strictRead:optionTrue(options,"strictRead"),compact:optionTrue(options,"compact"),brief:optionTrue(options,"brief"),full:optionTrue(options,"full"),fields:readListOptionString(options,"fields"),sort:readListOptionString(options,"sort"),order:readListOptionString(options,"order"),tree:optionTrue(options,"tree"),treeDepth:readListOptionString(options,"treeDepth"),filterAcMissing:optionTrue(options,"filterAcMissing"),filterEstimatesMissing:anyOptionTrue(options,["filterEstimatesMissing","filterEstimateMissing"]),filterResolutionMissing:optionTrue(options,"filterResolutionMissing"),filterMetadataMissing:optionTrue(options,"filterMetadataMissing"),...readSelectionFilterOptionFields(options)};return copyUnknownOptions(normalized,options),normalized}function normalizeAggregateOptions(options){return{groupBy:typeof options.groupBy=="string"?options.groupBy:void 0,setMode:typeof options.setMode=="string"?options.setMode:void 0,limit:readListOptionString(options,"limit"),after:readListOptionString(options,"after"),count:options.count===!0?!0:void 0,completion:options.completion===!0?!0:void 0,sum:typeof options.sum=="string"?options.sum:void 0,avg:typeof options.avg=="string"?options.avg:void 0,includeUnparented:options.includeUnparented===!0||options.include_unparented===!0,status:typeof options.status=="string"?options.status:void 0,type:readListOptionString(options,"type"),tag:readListOptionString(options,"tag"),priority:readListOptionString(options,"priority"),deadlineBefore:readListOptionString(options,"deadlineBefore"),deadlineAfter:readListOptionString(options,"deadlineAfter"),assignee:readListOptionString(options,"assignee"),assigneeFilter:readListOptionString(options,"assigneeFilter"),parent:readListOptionString(options,"parent"),sprint:readListOptionString(options,"sprint"),release:readListOptionString(options,"release")}}function printListJsonStream(commandName,result,globalOptions){if(setActiveCommandResult(result),globalOptions.quiet)return;const warnings=Array.isArray(result.warnings)?result.warnings:[],metaPayload={type:"meta",command:commandName,count:result.count,now:result.now,filters:result.filters};if(warnings.length>0&&(metaPayload.warnings=warnings),!!writeStdout(`${JSON.stringify(metaPayload)}
|
|
2
2
|
`)){for(const item of result.items)if(!writeStdout(`${JSON.stringify({type:"item",command:commandName,item})}
|
|
3
3
|
`))return;writeStdout(`${JSON.stringify({type:"end",command:commandName,count:result.count})}
|
|
4
4
|
`)}}function printActivityJsonStream(result,options,globalOptions){if(setActiveCommandResult(result),globalOptions.quiet)return;const metaPayload={type:"meta",command:"activity",count:result.count,filters:{id:options.id??null,op:options.op??null,author:options.author??null,from:options.from??null,to:options.to??null,limit:options.limit??null}};if(!writeStdout(`${JSON.stringify(metaPayload)}
|