@unbrained/pm-cli 2026.11.3 → 2026.11.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/HARNESS_COMPATIBILITY.md +1 -1
- package/.agents/skills/README.md +14 -14
- package/.agents/skills/pm-developer/SKILL.md +16 -16
- package/.agents/skills/pm-developer/references/GRAPH_AND_RELATIONSHIPS.md +14 -14
- package/.agents/skills/pm-developer/references/SCRIPTING_COMPOSITION.md +10 -10
- package/.agents/skills/pm-extensions/SKILL.md +13 -13
- package/.agents/skills/pm-extensions/references/AUTHORING.md +12 -12
- package/.agents/skills/pm-sdk/SKILL.md +27 -27
- package/.agents/skills/pm-sdk/references/SURFACE_MAP.md +32 -32
- package/.agents/skills/pm-test-audit/references/AUDIT.md +1 -1
- package/.agents/skills/pm-user/SKILL.md +35 -35
- package/.claude-plugin/marketplace.json +1 -1
- package/AGENTS.md +9 -9
- package/CHANGELOG.md +19 -0
- package/README.md +13 -13
- package/dist/cli/error-guidance.d.ts +14 -35
- package/dist/cli/error-guidance.js +2 -2
- package/dist/cli/expected-revisions.d.ts +55 -0
- package/dist/cli/expected-revisions.js +2 -0
- package/dist/cli/main.js +2 -2
- package/dist/cli/register-setup.js +1 -1
- package/dist/cli/runtime/invocation-options.js +1 -1
- package/dist/cli-bundle/bundle-manifest.json +1 -1
- package/dist/cli-bundle/chunks/chunk-2RPORE7M.js +31 -0
- package/dist/cli-bundle/chunks/{chunk-Y7H55PCY.js → chunk-335BZ75D.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-5GWEY4P6.js +122 -0
- package/dist/cli-bundle/chunks/chunk-6VRX2CM7.js +2 -0
- package/dist/cli-bundle/chunks/{chunk-5JZMF4M5.js → chunk-7DEKAXVA.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-32BCU6HN.js → chunk-7ZRCYESH.js} +47 -46
- package/dist/cli-bundle/chunks/chunk-AUEKTX7V.js +6 -0
- package/dist/cli-bundle/chunks/chunk-D7KYPRK4.js +2 -0
- package/dist/cli-bundle/chunks/{chunk-2CBHQXYJ.js → chunk-DAX3AOFI.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-JPKIUWLG.js → chunk-F6NDMKZ4.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-FRNMQM45.js +2 -0
- package/dist/cli-bundle/chunks/chunk-HNGLDMSZ.js +9 -0
- package/dist/cli-bundle/chunks/{chunk-DEJHTFEF.js → chunk-HRCMORE7.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-HRFGFIYU.js +2 -0
- package/dist/cli-bundle/chunks/{chunk-5IPXDZKU.js → chunk-JI2GDE4I.js} +66 -66
- package/dist/cli-bundle/chunks/{chunk-MQJXZX3Q.js → chunk-LS3GI3H4.js} +53 -53
- package/dist/cli-bundle/chunks/chunk-OH6WQ7VT.js +3 -0
- package/dist/cli-bundle/chunks/{chunk-TZ3D3DPQ.js → chunk-OJDMJT7Y.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-S4LPZ4TN.js +20 -0
- package/dist/cli-bundle/chunks/chunk-UEGXWXUZ.js +2 -0
- package/dist/cli-bundle/chunks/chunk-XLSHFYXZ.js +2 -0
- package/dist/cli-bundle/chunks/{chunk-UYNMKUGA.js → chunk-YKXATU2G.js} +2 -2
- package/dist/cli-bundle/chunks/item-revision-OJJVPQY7.js +2 -0
- package/dist/cli-bundle/chunks/item-transaction-QEPBUCMY.js +2 -0
- package/dist/cli-bundle/chunks/mutation-admission-INMM3HHG.js +2 -0
- package/dist/cli-bundle/chunks/{register-list-query-I6AZA3IX.js → register-list-query-5Y5JKWU5.js} +2 -2
- package/dist/cli-bundle/chunks/{register-mutation-3DAXCLXR.js → register-mutation-WC7OSQID.js} +2 -2
- package/dist/cli-bundle/chunks/register-operations-PO63DBZH.js +2 -0
- package/dist/cli-bundle/chunks/register-setup-RRFOS7IT.js +2 -0
- package/dist/cli-bundle/chunks/{stage-7H36OTDJ.js → stage-E3MMV4TV.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-5PMJOJCZ.js +44 -0
- package/dist/cli-bundle/focused-chunks/chunk-7KK66ISG.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-D4XQOMG4.js → chunk-AHWJPZSJ.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-C3O6JJPO.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-LKN2WGGB.js → chunk-C6P6HPCX.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-CPMSL4HS.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-CZM75DE3.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-TYHDZUL4.js → chunk-D2TBEBNW.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-E56OXRYH.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-I5FODKYB.js → chunk-F62XGAAY.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-G4QP365K.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-G5PJCR7R.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-GS3JC5UU.js +23 -0
- package/dist/cli-bundle/focused-chunks/chunk-I5LGPUWH.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-LW64TINU.js +3 -0
- package/dist/cli-bundle/focused-chunks/chunk-M6V7UMWL.js +26 -0
- package/dist/cli-bundle/focused-chunks/chunk-MC7IE7D7.js +8 -0
- package/dist/cli-bundle/focused-chunks/chunk-MG7C3JUY.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-F3X6UWMI.js → chunk-MK4HV4JO.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-ZQRCVRGS.js → chunk-NQ7GYFOX.js} +54 -54
- package/dist/cli-bundle/focused-chunks/chunk-O7EI33NP.js +91 -0
- package/dist/cli-bundle/focused-chunks/{chunk-RY4QEMAE.js → chunk-RFTJZ5VB.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-SNOXXRSJ.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-UPJUTP2V.js +12 -0
- package/dist/cli-bundle/focused-chunks/{chunk-HJ27QLZV.js → chunk-VWWTIX5L.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-HOXIIZEO.js → chunk-XHOBYCVE.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-YMGB2O4E.js +81 -0
- package/dist/cli-bundle/focused-chunks/item-revision-CTDO4H3I.js +2 -0
- package/dist/cli-bundle/focused-chunks/item-transaction-AEAYVVHA.js +2 -0
- package/dist/cli-bundle/focused-chunks/mutation-admission-4WM7TNHZ.js +2 -0
- package/dist/cli-bundle/focused-chunks/{stage-4SQHVI3O.js → stage-WV7QXR4C.js} +2 -2
- package/dist/cli-bundle/main.js +25 -25
- package/dist/cli-bundle/sdk-authoring.js +1 -1
- package/dist/cli-bundle/sdk-contracts.js +5 -5
- package/dist/cli-bundle/sdk-core.js +1 -1
- 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 +57 -57
- 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/positional-value.d.ts +7 -1
- package/dist/core/config/positional-value.js +1 -1
- package/dist/core/extensions/reserved-host-flags.js +1 -1
- package/dist/core/history/history-rewrite.js +1 -1
- package/dist/core/item/literal-mutation-input.d.ts +17 -0
- package/dist/core/item/literal-mutation-input.js +1 -1
- package/dist/core/item/parent-reference-policy.d.ts +8 -4
- package/dist/core/item/parent-reference-policy.js +1 -1
- package/dist/core/item/sprint-release-format.d.ts +2 -1
- package/dist/core/item/sprint-release-format.js +1 -1
- package/dist/core/output/mutation-projection.js +1 -1
- package/dist/core/shared/command-types.d.ts +7 -0
- package/dist/core/store/item-mutation-precondition.d.ts +72 -6
- package/dist/core/store/item-mutation-precondition.js +1 -1
- package/dist/core/store/item-store.js +1 -1
- package/dist/core/store/settings-validator.js +1 -1
- package/dist/core/store/settings.d.ts +14 -0
- package/dist/core/store/settings.js +5 -4
- package/dist/core/telemetry/policy.d.ts +27 -1
- package/dist/core/telemetry/policy.js +1 -1
- package/dist/core/telemetry/runtime.d.ts +18 -7
- package/dist/core/telemetry/runtime.js +4 -4
- package/dist/sdk/cli-contracts/bootstrap-command-scanner.js +1 -1
- package/dist/sdk/cli-contracts/completeness.js +1 -1
- package/dist/sdk/cli-contracts/enum-contracts.d.ts +11 -0
- package/dist/sdk/cli-contracts/enum-contracts.js +1 -1
- package/dist/sdk/cli-contracts/flag-lexicon-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/typed-action-inputs.d.ts +8 -5
- package/dist/sdk/cli-contracts.d.ts +1 -1
- package/dist/sdk/cli-contracts.js +1 -1
- package/dist/sdk/cli-program.js +1 -1
- package/dist/sdk/config.d.ts +3 -3
- package/dist/sdk/config.js +1 -1
- package/dist/sdk/environment/project-runtime-compatibility.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/governance/health.d.ts +2 -2
- package/dist/sdk/governance/health.js +2 -2
- package/dist/sdk/governance/validate.js +1 -1
- package/dist/sdk/history/salvage.js +3 -3
- package/dist/sdk/history-compact.d.ts +7 -1
- package/dist/sdk/history-compact.js +1 -1
- package/dist/sdk/history-repair.d.ts +2 -1
- package/dist/sdk/history-repair.js +1 -1
- package/dist/sdk/index.d.ts +6 -1
- package/dist/sdk/index.js +1 -1
- package/dist/sdk/init.d.ts +4 -4
- package/dist/sdk/init.js +8 -8
- package/dist/sdk/lifecycle/checkpoint-rollback.d.ts +10 -2
- package/dist/sdk/lifecycle/checkpoint-rollback.js +1 -1
- package/dist/sdk/lifecycle/claim.d.ts +4 -0
- package/dist/sdk/lifecycle/claim.js +1 -1
- package/dist/sdk/lifecycle/close-many.d.ts +11 -2
- package/dist/sdk/lifecycle/close-many.js +1 -1
- package/dist/sdk/lifecycle/close.d.ts +25 -0
- package/dist/sdk/lifecycle/close.js +1 -1
- package/dist/sdk/lifecycle/create.d.ts +7 -5
- package/dist/sdk/lifecycle/create.js +1 -1
- package/dist/sdk/lifecycle/item-revision.d.ts +162 -0
- package/dist/sdk/lifecycle/item-revision.js +2 -0
- package/dist/sdk/lifecycle/restore.js +1 -1
- package/dist/sdk/lifecycle/shared-unset-fields.d.ts +628 -4
- package/dist/sdk/lifecycle/shared-unset-fields.js +1 -1
- package/dist/sdk/lifecycle/start-blockers.d.ts +52 -0
- package/dist/sdk/lifecycle/start-blockers.js +2 -0
- package/dist/sdk/lifecycle/task-composition.d.ts +11 -0
- package/dist/sdk/lifecycle/task-composition.js +1 -1
- package/dist/sdk/lifecycle/update-many.d.ts +11 -2
- package/dist/sdk/lifecycle/update-many.js +1 -1
- package/dist/sdk/lifecycle/update.d.ts +5 -4
- package/dist/sdk/lifecycle/update.js +2 -2
- package/dist/sdk/public-surface.json +1 -1
- package/dist/sdk/query/declared-blockers.d.ts +16 -0
- package/dist/sdk/query/declared-blockers.js +2 -0
- package/dist/sdk/query/get.d.ts +7 -0
- package/dist/sdk/query/get.js +1 -1
- package/dist/sdk/query/projection-contracts.js +1 -1
- package/dist/sdk/runtime/actions.js +1 -1
- package/dist/sdk/runtime/mutation-value-validation.js +1 -1
- package/dist/sdk/runtime-input.d.ts +12 -0
- package/dist/sdk/runtime-input.js +1 -1
- package/dist/sdk/runtime-primitives.d.ts +1 -0
- package/dist/sdk/runtime-primitives.js +1 -1
- package/dist/sdk/runtime.d.ts +10 -0
- package/dist/sdk/runtime.js +1 -1
- package/dist/sdk/structured-mutations.js +1 -1
- package/dist/sdk/telemetry.d.ts +1 -1
- package/dist/sdk/telemetry.js +2 -2
- package/dist/sdk/test/batch.js +2 -2
- package/dist/sdk/test/execution.js +2 -2
- package/dist/sdk/test/linked-command-detection.js +1 -1
- package/dist/sdk/workspace-transaction.d.ts +17 -6
- package/dist/sdk/workspace-transaction.js +1 -1
- package/dist/types.d.ts +6 -0
- package/dist/types.js +1 -1
- package/docs/AGENT_GUIDE.md +48 -48
- package/docs/AGENT_OUTPUT_ENCODINGS.md +20 -20
- package/docs/ASSURANCE.md +10 -10
- package/docs/BOUNDED_CONTEXT_READS.md +3 -3
- package/docs/CLAUDE_CODE_PLUGIN.md +1 -1
- package/docs/CLI_GRAMMAR.md +2 -2
- package/docs/COMMANDS.md +144 -32
- package/docs/COMMAND_NAMESPACES.md +1 -1
- package/docs/CONFIGURATION.md +82 -70
- package/docs/CONTEXT_ALGORITHM_PORTFOLIO.md +2 -2
- package/docs/CONTEXT_INTEGRITY_CONTRACTS.md +5 -5
- package/docs/CORPUS_SHAPES.md +1 -1
- package/docs/DEPENDENCY_KIND_CONTRACT.md +6 -6
- package/docs/DIAGNOSTIC_OUTPUT_CONTRACTS.md +5 -5
- package/docs/ECOSYSTEM_PLANNING_REVIEW.md +3 -3
- package/docs/EXTENSION_AUTHOR_CONTRACTS.md +4 -4
- package/docs/HISTORY_ATTESTATION.md +1 -1
- package/docs/HISTORY_MAINTENANCE.md +1 -1
- package/docs/LIFECYCLE_COMMANDS.md +1 -1
- package/docs/MCP_2026_07_28.md +16 -16
- package/docs/MCP_2026_07_28_CONFORMANCE.md +19 -19
- package/docs/MCP_REMOTE_TRANSPORT_SECURITY.md +22 -22
- package/docs/MCP_SKILLS_AND_APPS.md +1 -1
- package/docs/MERGE_SAFETY.md +6 -6
- package/docs/MUTATION_INTEGRITY.md +5 -5
- package/docs/OUTPUT_PROJECTION_CONTRACTS.md +14 -14
- package/docs/PACKED_FIRST_RUN.md +1 -1
- package/docs/QUICKSTART.md +10 -10
- package/docs/README.md +21 -21
- package/docs/READ_OUTPUT_CONTRACTS.md +9 -9
- package/docs/RECURRENCE_RECOVERY_CONTRACTS.md +1 -1
- package/docs/RELEASING.md +19 -10
- package/docs/SCRIPTING.md +10 -10
- package/docs/SDK.md +183 -38
- package/docs/SDK_ARTIFACT_OUTPUT.md +1 -1
- package/docs/SDK_PRIMITIVE_INVENTORY.md +2 -2
- package/docs/SELF_DESCRIBING_CONTEXT_CONTRACTS.md +7 -7
- package/docs/TESTING.md +1 -1
- package/docs/WORKFLOW_POLICIES.md +2 -2
- package/docs/WORKSPACE_POSITION_AND_LIFECYCLE.md +8 -8
- package/docs/agent-task-token-baseline.json +1 -1
- package/docs/generated/AGENT_CAPABILITY_ROUTING.md +1 -1
- package/docs/generated/AGENT_COMMAND_SURFACE.md +1 -1
- package/docs/generated/FLAG_LEXICON_BUDGETS.md +112 -112
- package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +13 -4
- package/docs/performance/cli-transport-overhead.md +7 -7
- package/marketplace.json +1 -1
- package/package.json +1 -1
- package/packages/pm-beads/package.json +1 -1
- package/packages/pm-calendar/package.json +1 -1
- package/packages/pm-command-kit/README.md +5 -5
- package/packages/pm-command-kit/package.json +1 -1
- package/packages/pm-digital-twin/GAP_REPORT.md +16 -16
- 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/README.md +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/GAP_REPORT.md +1 -1
- package/packages/pm-vcs/package.json +1 -1
- package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
- package/plugins/pm-claude/README.md +6 -6
- 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-7ZEFHFAU.js +0 -2
- package/dist/cli-bundle/chunks/chunk-B6UTLYLM.js +0 -3
- package/dist/cli-bundle/chunks/chunk-HBKD5HZB.js +0 -2
- package/dist/cli-bundle/chunks/chunk-L6LCLC37.js +0 -2
- package/dist/cli-bundle/chunks/chunk-NR4KABHC.js +0 -31
- package/dist/cli-bundle/chunks/chunk-PWD5RY2D.js +0 -2
- package/dist/cli-bundle/chunks/chunk-XRMYA4R7.js +0 -20
- package/dist/cli-bundle/chunks/chunk-YWS4XV4I.js +0 -6
- package/dist/cli-bundle/chunks/chunk-ZOAJNPBL.js +0 -129
- package/dist/cli-bundle/chunks/item-transaction-ZHLJTBD7.js +0 -2
- package/dist/cli-bundle/chunks/mutation-admission-ZQMRMGIB.js +0 -2
- package/dist/cli-bundle/chunks/register-operations-G3QGGQ5Z.js +0 -2
- package/dist/cli-bundle/chunks/register-setup-LDXHMNOT.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-3XGKBVJ3.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-4HY6EGPB.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-AK2CI2GI.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-HUXZCPWT.js +0 -26
- package/dist/cli-bundle/focused-chunks/chunk-IKXJ57XA.js +0 -8
- package/dist/cli-bundle/focused-chunks/chunk-MOY6KZGJ.js +0 -44
- package/dist/cli-bundle/focused-chunks/chunk-PWUTFKSI.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-PZRB7IXH.js +0 -91
- package/dist/cli-bundle/focused-chunks/chunk-WSYPVBKS.js +0 -80
- package/dist/cli-bundle/focused-chunks/chunk-WXLG7HZ5.js +0 -3
- package/dist/cli-bundle/focused-chunks/chunk-WZDFCVLX.js +0 -12
- package/dist/cli-bundle/focused-chunks/chunk-YGO3FWA2.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-YVLAP3BL.js +0 -23
- package/dist/cli-bundle/focused-chunks/chunk-ZYXQACPB.js +0 -2
- package/dist/cli-bundle/focused-chunks/item-transaction-PZ2FQ6B2.js +0 -2
- package/dist/cli-bundle/focused-chunks/mutation-admission-XOOK6XFH.js +0 -2
package/dist/sdk/config.js
CHANGED
|
@@ -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]="e8446c93-c40c-572d-86fa-d78535a6f66e")}catch{}})();import{resolveConfigPositionalValue}from"../core/config/positional-value.js";import{NESTED_SETTING_DESCRIPTORS,parseNestedSettingValue,readNestedSettingValue,resolveNestedSettingDescriptor,writeNestedSettingValue}from"../core/config/nested-settings.js";import{getActiveExtensionRegistrations}from"../core/extensions/index.js";import{normalizeParentReferencePolicy}from"../core/item/parent-reference-policy.js";import{normalizeSprintReleaseFormatPolicy}from"../core/item/sprint-release-format.js";import{resolveItemTypeRegistry,resolveTypeName}from"../core/item/type-registry.js";import{buildInvalidTypeError}from"../core/schema/item-types-file.js";import{resolveItemTypesFilePath}from"../core/schema/runtime-schema.js";import{EXIT_CODE}from"../core/shared/constants.js";import{PmCliError}from"../core/shared/errors.js";import{createUnknownSubcommandError}from"./agent/subcommand-recovery.js";import{planAgentIdentityVocabularyMutation,summarizeAgentIdentityVocabulary}from"./agent/identity-config.js";import{assertInitializedTracker}from"./environment/tracker-preflight.js";import{migrateItemFilesToFormat}from"../core/store/item-format-migration.js";import{getSettingsPath,resolveGlobalPmRoot,resolvePmRoot}from"../core/store/paths.js";import{isSettingsReadFallback,readSettings,readSettingsWithMetadata,writeSettings}from"../core/store/settings.js";import{CONTEXT_DEPTH_VALUES}from"../types/index.js";const CONFIG_SCOPE_VALUES=["project","global"],CONFIG_KEY_ALIASES={definition_of_done:["definition-of-done","definition_of_done"],item_format:["item-format","item_format"],history_missing_stream_policy:["history-missing-stream-policy","history_missing_stream_policy"],sprint_release_format_policy:["sprint-release-format-policy","sprint_release_format_policy"],parent_reference_policy:["parent-reference-policy","parent_reference_policy"],metadata_validation_profile:["metadata-validation-profile","metadata_validation_profile"],metadata_required_fields:["metadata-required-fields","metadata_required_fields"],lifecycle_stale_blocker_reason_patterns:["lifecycle-stale-blocker-reason-patterns","lifecycle_stale_blocker_reason_patterns"],lifecycle_closure_like_blocked_reason_patterns:["lifecycle-closure-like-blocked-reason-patterns","lifecycle_closure_like_blocked_reason_patterns"],lifecycle_closure_like_resolution_patterns:["lifecycle-closure-like-resolution-patterns","lifecycle_closure_like_resolution_patterns"],lifecycle_closure_like_actual_result_patterns:["lifecycle-closure-like-actual-result-patterns","lifecycle_closure_like_actual_result_patterns"],governance_preset:["governance-preset","governance_preset"],governance_ownership_enforcement:["governance-ownership-enforcement","governance_ownership_enforcement"],governance_create_mode_default:["governance-create-mode-default","governance_create_mode_default"],governance_close_validation_default:["governance-close-validation-default","governance_close_validation_default"],governance_require_close_reason:["governance-require-close-reason","governance_require_close_reason"],governance_create_default_type:["governance-create-default-type","governance_create_default_type"],governance_workflow_enforcement:["governance-workflow-enforcement","governance_workflow_enforcement"],governance_parent_reference_policy:["governance-parent-reference-policy","governance_parent_reference_policy"],governance_metadata_validation_profile:["governance-metadata-validation-profile","governance_metadata_validation_profile"],governance_force_required_for_stale_lock:["governance-force-required-for-stale-lock","governance_force_required_for_stale_lock"],test_result_tracking:["test-result-tracking","test_result_tracking"],untrusted_linked_test_execution:["untrusted-linked-test-execution","untrusted_linked_test_execution"],telemetry_tracking:["telemetry-tracking","telemetry_tracking"],agent_identity_vocabulary:["agent-identity-vocabulary","agent_identity_vocabulary"],context:["context"]},CANONICAL_CONFIG_KEYS=Object.keys(CONFIG_KEY_ALIASES).map(candidate=>CONFIG_KEY_ALIASES[candidate][0]),CONFIG_KEY_BY_ALIAS=Object.fromEntries(Object.keys(CONFIG_KEY_ALIASES).flatMap(key=>CONFIG_KEY_ALIASES[key].map(alias=>[alias,key]))),CONFIG_KEY_SUMMARIES={definition_of_done:"Definition of Done criteria list.",item_format:"Default item file format.",history_missing_stream_policy:"Missing history stream handling policy.",sprint_release_format_policy:"Sprint/release format validation policy.",parent_reference_policy:"Parent reference validation policy.",metadata_validation_profile:"Validate metadata profile policy (core|strict|custom).",metadata_required_fields:"Validate custom metadata required-fields list.",lifecycle_stale_blocker_reason_patterns:"Validate lifecycle stale-blocker reason substring patterns (criteria list).",lifecycle_closure_like_blocked_reason_patterns:"Validate lifecycle closure-like blocked_reason substring patterns (criteria list).",lifecycle_closure_like_resolution_patterns:"Validate lifecycle closure-like resolution substring patterns (criteria list).",lifecycle_closure_like_actual_result_patterns:"Validate lifecycle closure-like actual_result substring patterns (criteria list).",governance_preset:"Governance preset policy (minimal|default|strict|custom).",governance_ownership_enforcement:"Governance ownership enforcement policy (none|warn|strict).",governance_create_mode_default:"Governance default create mode (progressive|strict).",governance_close_validation_default:"Governance default close validation mode (off|warn|strict).",governance_require_close_reason:"Governance close-reason requirement policy (enabled|disabled).",governance_create_default_type:"Governance default item type for `pm create` when --type is omitted.",governance_workflow_enforcement:"Governance per-type transition enforcement mode (off|warn|strict).",governance_parent_reference_policy:"Governance parent reference policy (warn|strict_error).",governance_metadata_validation_profile:"Governance metadata validation profile (core|strict|custom).",governance_force_required_for_stale_lock:"Governance stale-lock force policy (enabled|disabled).",test_result_tracking:"Item-level linked test result persistence policy.",untrusted_linked_test_execution:"Permit an explicit per-run override for commands not trusted by this clone.",telemetry_tracking:"Telemetry usage reporting policy.",agent_identity_vocabulary:"Versioned exact legacy-author interpretation vocabulary (summary only).",context:"Context command settings (depth, section toggles, limits)."},LIFECYCLE_PATTERN_CONFIG_KEYS=["lifecycle_stale_blocker_reason_patterns","lifecycle_closure_like_blocked_reason_patterns","lifecycle_closure_like_resolution_patterns","lifecycle_closure_like_actual_result_patterns"],CRITERIA_CONFIG_KEYS=new Set(["metadata_required_fields",...LIFECYCLE_PATTERN_CONFIG_KEYS]),TRACKING_CONFIG_KEYS=new Set(["test_result_tracking","untrusted_linked_test_execution","telemetry_tracking"]),GOVERNANCE_BOOLEAN_CONFIG_KEYS=new Set(["governance_require_close_reason","governance_force_required_for_stale_lock"]),GOVERNANCE_POLICY_CONFIG_KEYS=new Set(["governance_ownership_enforcement","governance_create_mode_default","governance_close_validation_default"]),GOVERNANCE_VALIDATION_CONFIG_KEYS=new Set(["governance_parent_reference_policy","governance_metadata_validation_profile","governance_workflow_enforcement"]),GOVERNANCE_PRESET_OR_TYPE_CONFIG_KEYS=new Set(["governance_preset","governance_create_default_type"]),isCriteriaValueConfigKey=key=>CRITERIA_CONFIG_KEYS.has(key),isGovernancePolicyConfigKey=key=>GOVERNANCE_POLICY_CONFIG_KEYS.has(key),isGovernanceValidationConfigKey=key=>GOVERNANCE_VALIDATION_CONFIG_KEYS.has(key),isGovernancePresetOrTypeConfigKey=key=>GOVERNANCE_PRESET_OR_TYPE_CONFIG_KEYS.has(key);function isCriteriaConfigKey(key){return key==="definition_of_done"||isCriteriaValueConfigKey(key)}function normalizeScope(value){if(CONFIG_SCOPE_VALUES.includes(value))return value;throw new PmCliError(`Invalid config scope "${value}". Allowed: ${CONFIG_SCOPE_VALUES.join(", ")}`,EXIT_CODE.USAGE)}function normalizeAction(value){if(value==="get"||value==="set"||value==="list"||value==="export")return value;throw createUnknownSubcommandError({command_path:"config",token:value.trim()||"<empty>",allowed:["export","get","list","set"],token_kind:"action"})}function normalizeKey(value){const key=CONFIG_KEY_BY_ALIAS[value];if(key)return key;const nestedKeys=NESTED_SETTING_DESCRIPTORS.map(descriptor=>descriptor.key).join(", ");throw new PmCliError(`Invalid config key "${value}". Supported: ${CANONICAL_CONFIG_KEYS.join(", ")} (underscore variants also accepted). Nested leaf settings: ${nestedKeys}.`,EXIT_CODE.USAGE)}function normalizeCriteria(values,clearCriteria){const normalized=[...new Set((values??[]).map(value=>value.trim()).filter(value=>value.length>0))].sort((left,right)=>left.localeCompare(right));if(clearCriteria){if(normalized.length>0)throw new PmCliError("Config set definition-of-done cannot combine --clear-criteria with --criterion values",EXIT_CODE.USAGE);return[]}if(normalized.length===0)throw new PmCliError("Config set definition-of-done requires at least one non-empty --criterion value (or --clear-criteria to clear)",EXIT_CODE.USAGE);return normalized}function normalizeItemFormat(value){const normalized=value?.trim().toLowerCase();if(normalized==="toon")return"toon";throw normalized==="json_markdown"?new PmCliError("Config set item-format no longer accepts json_markdown. Markdown item files are legacy read/migration input only.",EXIT_CODE.USAGE):new PmCliError("Config set item-format requires --format toon",EXIT_CODE.USAGE)}function normalizeHistoryMissingStreamPolicy(value){const normalized=value?.trim().toLowerCase().replaceAll("-","_");if(normalized==="auto_create"||normalized==="strict_error")return normalized;throw new PmCliError("Config set history-missing-stream-policy requires --policy with one of: auto_create, strict_error",EXIT_CODE.USAGE)}function normalizeTestResultTrackingPolicy(value){return normalizeEnabledDisabledPolicy(value,"test-result-tracking")}function normalizeEnabledDisabledPolicy(value,key){const normalized=value?.trim().toLowerCase().replaceAll("-","_");if(normalized==="enabled"||normalized==="disabled")return normalized;throw new PmCliError(`Config set ${key} requires --policy with one of: enabled, disabled`,EXIT_CODE.USAGE)}function normalizeTelemetryTrackingPolicy(value){const normalized=value?.trim().toLowerCase().replaceAll("-","_");if(normalized==="enabled"||normalized==="disabled")return normalized;throw new PmCliError("Config set telemetry-tracking requires --policy with one of: enabled, disabled",EXIT_CODE.USAGE)}function normalizeValidateMetadataProfile(value){const normalized=value?.trim().toLowerCase().replaceAll("-","_");if(normalized==="core"||normalized==="strict"||normalized==="custom")return normalized;throw new PmCliError("Config set metadata-validation-profile requires --policy with one of: core, strict, custom",EXIT_CODE.USAGE)}function normalizeGovernancePreset(value){const normalized=value?.trim().toLowerCase().replaceAll("-","_");if(normalized==="minimal"||normalized==="default"||normalized==="strict"||normalized==="custom")return normalized;throw new PmCliError("Config set governance-preset requires --policy with one of: minimal, default, strict, custom",EXIT_CODE.USAGE)}function normalizeGovernanceOwnershipEnforcement(value){const normalized=value?.trim().toLowerCase().replaceAll("-","_");if(normalized==="none"||normalized==="warn"||normalized==="strict")return normalized;throw new PmCliError("Config set governance-ownership-enforcement requires --policy with one of: none, warn, strict",EXIT_CODE.USAGE)}function normalizeGovernanceCreateModeDefault(value){const normalized=value?.trim().toLowerCase().replaceAll("-","_");if(normalized==="progressive"||normalized==="strict")return normalized;throw new PmCliError("Config set governance-create-mode-default requires --policy with one of: progressive, strict",EXIT_CODE.USAGE)}function normalizeGovernanceCloseValidationDefault(value){const normalized=value?.trim().toLowerCase().replaceAll("-","_");if(normalized==="off"||normalized==="warn"||normalized==="strict")return normalized;if(normalized==="none"||normalized==="disabled")return"off";throw new PmCliError("Config set governance-close-validation-default requires --policy with one of: off, warn, strict",EXIT_CODE.USAGE)}function normalizeGovernanceWorkflowEnforcement(value){const normalized=typeof value=="string"?value.trim().toLowerCase().replaceAll("-","_"):void 0;if(normalized==="off"||normalized==="warn"||normalized==="strict")return normalized;if(normalized==="none"||normalized==="disabled")return"off";throw new PmCliError("Config set governance-workflow-enforcement requires one of: off, warn, strict",EXIT_CODE.USAGE)}function normalizeGovernanceForceRequiredForStaleLockPolicy(value){const normalized=value?.trim().toLowerCase().replaceAll("-","_");if(normalized==="enabled"||normalized==="disabled")return normalized;throw new PmCliError("Config set governance-force-required-for-stale-lock requires --policy with one of: enabled, disabled",EXIT_CODE.USAGE)}function normalizeGovernanceRequireCloseReasonPolicy(value){const normalized=value?.trim().toLowerCase().replaceAll("-","_");if(normalized==="enabled"||normalized==="disabled")return normalized;throw new PmCliError("Config set governance-require-close-reason requires --policy with one of: enabled, disabled",EXIT_CODE.USAGE)}const ENABLED_DISABLED_CONFLICT_POLICY_KEYS={test_result_tracking:"test-result-tracking",untrusted_linked_test_execution:"untrusted-linked-test-execution"};function normalizePolicyForConflict(key,value){const enabledDisabledKey=ENABLED_DISABLED_CONFLICT_POLICY_KEYS[key];if(enabledDisabledKey)return normalizeEnabledDisabledPolicy(value,enabledDisabledKey);switch(key){case"history_missing_stream_policy":return normalizeHistoryMissingStreamPolicy(value);case"sprint_release_format_policy":return normalizeSprintReleaseFormatPolicy(value);case"parent_reference_policy":case"governance_parent_reference_policy":return normalizeParentReferencePolicy(value);case"metadata_validation_profile":case"governance_metadata_validation_profile":return normalizeValidateMetadataProfile(value);case"governance_preset":return normalizeGovernancePreset(value);case"governance_ownership_enforcement":return normalizeGovernanceOwnershipEnforcement(value);case"governance_create_mode_default":return normalizeGovernanceCreateModeDefault(value);case"governance_close_validation_default":return normalizeGovernanceCloseValidationDefault(value);case"governance_require_close_reason":return normalizeGovernanceRequireCloseReasonPolicy(value);case"governance_workflow_enforcement":return normalizeGovernanceWorkflowEnforcement(value);case"governance_force_required_for_stale_lock":return normalizeGovernanceForceRequiredForStaleLockPolicy(value);case"telemetry_tracking":return normalizeTelemetryTrackingPolicy(value);default:return value.trim().toLowerCase().replaceAll("-","_")}}const METADATA_REQUIRED_FIELD_ALIAS_MAP={author:"author",acceptance_criteria:"acceptance_criteria","acceptance-criteria":"acceptance_criteria",estimated_minutes:"estimated_minutes","estimated-minutes":"estimated_minutes",estimate:"estimated_minutes",close_reason:"close_reason","close-reason":"close_reason",reviewer:"reviewer",risk:"risk",confidence:"confidence",sprint:"sprint",release:"release"},METADATA_REQUIRED_FIELD_OPTIONS=["author","acceptance_criteria","estimated_minutes","close_reason","reviewer","risk","confidence","sprint","release"];function normalizeMetadataRequiredFields(values,clearCriteria){const normalized=[...new Set((values??[]).map(value=>value.trim()).filter(value=>value.length>0))];if(clearCriteria){if(normalized.length>0)throw new PmCliError("Config set metadata-required-fields cannot combine --clear-criteria with --criterion values",EXIT_CODE.USAGE);return[]}if(normalized.length===0)throw new PmCliError("Config set metadata-required-fields requires at least one --criterion value (or --clear-criteria to clear)",EXIT_CODE.USAGE);const lowered=normalized.map(value=>value.toLowerCase().replaceAll("-","_")),unsupported=lowered.filter(value=>METADATA_REQUIRED_FIELD_ALIAS_MAP[value]===void 0);if(unsupported.length>0)throw new PmCliError(`Config set metadata-required-fields received unsupported values: ${unsupported.join(", ")}. Supported values: ${METADATA_REQUIRED_FIELD_OPTIONS.join(", ")}`,EXIT_CODE.USAGE);return[...new Set(lowered.map(value=>METADATA_REQUIRED_FIELD_ALIAS_MAP[value]))].sort((left,right)=>left.localeCompare(right))}function normalizeLifecyclePatternCriteria(key,values,clearCriteria){const normalized=[...new Set((values??[]).map(value=>value.trim().toLowerCase()).filter(value=>value.length>0))].sort((left,right)=>left.localeCompare(right));if(clearCriteria){if(normalized.length>0)throw new PmCliError(`Config set ${CONFIG_KEY_ALIASES[key][0]} cannot combine --clear-criteria with --criterion values`,EXIT_CODE.USAGE);return[]}if(normalized.length===0)throw new PmCliError(`Config set ${CONFIG_KEY_ALIASES[key][0]} requires at least one --criterion value (or --clear-criteria to clear)`,EXIT_CODE.USAGE);return normalized}function normalizeWarnings(values){return[...new Set(values)].sort((left,right)=>left.localeCompare(right))}function normalizeKeyForAction(action,value){if(action==="list"||action==="export"){if(typeof value=="string"&&value.trim().length>0)throw new PmCliError(`Config action "${action}" does not accept <key>`,EXIT_CODE.USAGE);return}if(typeof value!="string"||value.trim().length===0)throw new PmCliError(`Config action "${action}" requires <key>`,EXIT_CODE.USAGE);return normalizeKey(value)}function assertConfigKeyDefined(key){if(!key)throw new PmCliError("Config action requires <key>",EXIT_CODE.USAGE)}const CONFIG_VALUE_READERS={definition_of_done:settings=>[...settings.workflow.definition_of_done],item_format:settings=>settings.item_format,history_missing_stream_policy:settings=>settings.history.missing_stream,sprint_release_format_policy:settings=>settings.validation.sprint_release_format,parent_reference_policy:settings=>settings.validation.parent_reference,metadata_validation_profile:settings=>settings.validation.metadata_profile,metadata_required_fields:settings=>[...settings.validation.metadata_required_fields],lifecycle_stale_blocker_reason_patterns:settings=>[...settings.validation.lifecycle_stale_blocker_reason_patterns],lifecycle_closure_like_blocked_reason_patterns:settings=>[...settings.validation.lifecycle_closure_like_blocked_reason_patterns],lifecycle_closure_like_resolution_patterns:settings=>[...settings.validation.lifecycle_closure_like_resolution_patterns],lifecycle_closure_like_actual_result_patterns:settings=>[...settings.validation.lifecycle_closure_like_actual_result_patterns],governance_preset:settings=>settings.governance.preset,governance_ownership_enforcement:settings=>settings.governance.ownership_enforcement,governance_create_mode_default:settings=>settings.governance.create_mode_default,governance_close_validation_default:settings=>settings.governance.close_validation_default,governance_require_close_reason:settings=>settings.governance.require_close_reason?"enabled":"disabled",governance_create_default_type:settings=>settings.governance.create_default_type??"",governance_workflow_enforcement:settings=>settings.governance.workflow_enforcement??"off",governance_parent_reference_policy:settings=>settings.governance.parent_reference,governance_metadata_validation_profile:settings=>settings.governance.metadata_profile,governance_force_required_for_stale_lock:settings=>settings.governance.force_required_for_stale_lock?"enabled":"disabled",test_result_tracking:settings=>settings.testing.record_results_to_items?"enabled":"disabled",untrusted_linked_test_execution:settings=>settings.testing.allow_untrusted_linked_tests?"enabled":"disabled",telemetry_tracking:settings=>settings.telemetry.enabled?"enabled":"disabled",agent_identity_vocabulary:settings=>summarizeAgentIdentityVocabulary(settings.agent_identity?.identity_vocabulary),context:settings=>({default_depth:settings.context.default_depth,activity_limit:settings.context.activity_limit,stale_threshold_days:settings.context.stale_threshold_days,next_ranking_policy:settings.context.next_ranking_policy,sections:{...settings.context.sections}})};function readConfigValue(settings,key){return CONFIG_VALUE_READERS[key](settings)}function withWarnings(result,warnings){return warnings.length===0?result:{...result,warnings}}async function resolveSettingsTarget(scope,global2){const cwd=process.cwd(),pmRoot=scope==="project"?resolvePmRoot(cwd,global2.path):resolveGlobalPmRoot(cwd),settingsPath=getSettingsPath(pmRoot);return scope==="project"&&await assertInitializedTracker(pmRoot),{pmRoot,settingsPath}}function parseSectionToggle(raw){if(raw===void 0)return;const normalized=raw.trim().toLowerCase();if(normalized==="true"||normalized==="enabled"||normalized==="on"||normalized==="1")return!0;if(normalized==="false"||normalized==="disabled"||normalized==="off"||normalized==="0")return!1;throw new PmCliError(`Context section toggle must be true|false|enabled|disabled, got "${raw}"`,EXIT_CODE.USAGE)}function parsePositiveContextInteger(rawValue,option){const raw=rawValue.trim(),parsed=Number(raw);if(/^\d+$/u.test(raw)&&Number.isSafeInteger(parsed)&&parsed>0)return parsed;throw new PmCliError(`Context ${option} must be a positive integer`,EXIT_CODE.USAGE)}async function applyContextConfig(settings,options,target,scope,warnings){let changed=!1;const ctx=settings.context,assignedPaths=[];if(options.defaultDepth!==void 0){const normalized=options.defaultDepth.trim().toLowerCase();if(!CONTEXT_DEPTH_VALUES.includes(normalized))throw new PmCliError(`Context --default-depth must be one of ${CONTEXT_DEPTH_VALUES.join("|")}`,EXIT_CODE.USAGE);assignedPaths.push("context.default_depth"),ctx.default_depth!==normalized&&(ctx.default_depth=normalized,changed=!0)}if(options.activityLimit!==void 0){const parsed=parsePositiveContextInteger(options.activityLimit,"--activity-limit");assignedPaths.push("context.activity_limit"),ctx.activity_limit!==parsed&&(ctx.activity_limit=parsed,changed=!0)}if(options.staleThresholdDays!==void 0){const parsed=parsePositiveContextInteger(options.staleThresholdDays,"--stale-threshold-days");assignedPaths.push("context.stale_threshold_days"),ctx.stale_threshold_days!==parsed&&(ctx.stale_threshold_days=parsed,changed=!0)}const sectionToggles=[["hierarchy",options.sectionHierarchy],["activity",options.sectionActivity],["progress",options.sectionProgress],["blockers",options.sectionBlockers],["files",options.sectionFiles],["workload",options.sectionWorkload],["staleness",options.sectionStaleness],["tests",options.sectionTests]];for(const[sectionName,rawValue]of sectionToggles){const toggle=parseSectionToggle(rawValue);if(toggle!==void 0){const key=sectionName;assignedPaths.push(`context.sections.${sectionName}`),ctx.sections[key]!==toggle&&(ctx.sections[key]=toggle,changed=!0)}}return(changed||isSettingsReadFallback(settings))&&(await writeSettings(target.pmRoot,settings,"config:set:context",{assignedPaths}),changed=!0),withWarnings({scope,key:"context",context_settings:{default_depth:ctx.default_depth,activity_limit:ctx.activity_limit,stale_threshold_days:ctx.stale_threshold_days,next_ranking_policy:ctx.next_ranking_policy,sections:{...ctx.sections}},settings_path:target.settingsPath,changed},warnings)}function applyNestedSettingPositionalValue(keyValue,valueValue,options){if(options.value!==void 0&&options.value!==valueValue)throw new PmCliError(`Config set ${keyValue} received both positional value "${valueValue}" and --value "${options.value}". Pass only one.`,EXIT_CODE.USAGE);return{...options,value:valueValue}}function applyPositionalValue(action,keyValue,normalizedKey,nestedSetting,valueValue,options){if(valueValue===void 0)return options;if(action!=="set")throw new PmCliError(`Config action "${action}" does not accept a positional value. Only "set" takes <value>.`,EXIT_CODE.USAGE);if(typeof keyValue!="string"||keyValue.trim().length===0)throw new PmCliError('Config action "set" requires <key> before a positional <value>.',EXIT_CODE.USAGE);if(nestedSetting)return applyNestedSettingPositionalValue(keyValue,valueValue,options);assertConfigKeyDefined(normalizedKey);const routed=resolveConfigPositionalValue(normalizedKey,valueValue);if(!routed.routable)throw new PmCliError(routed.reason,EXIT_CODE.USAGE);if(routed.flag==="criterion"){if(options.criterion!==void 0&&options.criterion.length>0)throw new PmCliError(`Config set ${keyValue} received both positional value "${valueValue}" and --criterion. Pass criteria via --criterion only when supplying more than one value.`,EXIT_CODE.USAGE);return{...options,criterion:routed.values}}if(routed.flag==="format")return{...options,format:routed.value};if(options.policy!==void 0&&normalizePolicyForConflict(normalizedKey,options.policy)!==normalizePolicyForConflict(normalizedKey,routed.value))throw new PmCliError(`Config set ${keyValue} received both positional value "${valueValue}" and --policy "${options.policy}". Pass only one.`,EXIT_CODE.USAGE);return{...options,policy:routed.value}}function buildConfigListResult(context){const keys=Object.keys(CONFIG_KEY_ALIASES).map(candidate=>({key:candidate,aliases:CONFIG_KEY_ALIASES[candidate],value_kind:candidate==="context"||candidate==="agent_identity_vocabulary"?"object":isCriteriaConfigKey(candidate)?"string_array":"enum",set_flags:candidate==="context"?["--default-depth","--activity-limit","--stale-threshold-days","--section-<name>"]:candidate==="agent_identity_vocabulary"?["--policy","--value","--criterion"]:isCriteriaConfigKey(candidate)?["--criterion","--clear-criteria"]:candidate==="item_format"?["--format"]:["--policy"],summary:CONFIG_KEY_SUMMARIES[candidate],value:readConfigValue(context.settings,candidate)})),nestedSettings=NESTED_SETTING_DESCRIPTORS.map(descriptor=>({key:descriptor.key,canonical_key:descriptor.key.replaceAll("_","-"),path:descriptor.path,kind:descriptor.kind,value:readNestedSettingValue(context.settings,descriptor),summary:descriptor.summary,...descriptor.choices?{choices:[...descriptor.choices]}:{},...descriptor.min===void 0?{}:{min:descriptor.min},...descriptor.max===void 0?{}:{max:descriptor.max}}));return withWarnings({scope:context.scope,keys,nested_settings:nestedSettings,count:keys.length,settings_path:context.target.settingsPath,changed:!1},context.warnings)}function buildConfigExportResult(context){const values=Object.fromEntries(Object.keys(CONFIG_KEY_ALIASES).map(key=>[key,readConfigValue(context.settings,key)]));return withWarnings({scope:context.scope,values,settings_path:context.target.settingsPath,changed:!1},context.warnings)}function buildConfigGetResult(context,key){const value=readConfigValue(context.settings,key),base={scope:context.scope,key,settings_path:context.target.settingsPath,changed:!1};return key==="item_format"?withWarnings({...base,format:context.settings.item_format,has_explicit_item_format:context.metadata.has_explicit_item_format},context.warnings):key==="context"?withWarnings({...base,context_settings:value},context.warnings):key==="agent_identity_vocabulary"?withWarnings({...base,identity_vocabulary:value},context.warnings):Array.isArray(value)?withWarnings({...base,criteria:value},context.warnings):withWarnings({...base,policy:value},context.warnings)}async function buildNestedSettingResult(context,action,nestedSetting,options){if(action==="get"){const currentValue=readNestedSettingValue(context.settings,nestedSetting);return withWarnings({scope:context.scope,key:nestedSetting.key,nested_setting:{key:nestedSetting.key,path:nestedSetting.path,kind:nestedSetting.kind,value:currentValue},settings_path:context.target.settingsPath,changed:!1},context.warnings)}const rawValue=options.value;if(typeof rawValue!="string")throw new PmCliError(`Config set ${nestedSetting.key} requires a value. Pass it positionally (\`pm config ${context.scope} set ${nestedSetting.key} <value>\`) or via --value.`,EXIT_CODE.USAGE);const parsed=parseNestedSettingValue(nestedSetting,rawValue);if(!parsed.ok)throw new PmCliError(parsed.error.message,EXIT_CODE.USAGE);const changed=writeNestedSettingValue(context.settings,nestedSetting,parsed.parsed.value)||isSettingsReadFallback(context.settings);return changed&&await writeSettings(context.target.pmRoot,context.settings,`config:set:${nestedSetting.path}`,{assignedPaths:[nestedSetting.path]}),withWarnings({scope:context.scope,key:nestedSetting.key,nested_setting:{key:nestedSetting.key,path:nestedSetting.path,kind:nestedSetting.kind,value:parsed.parsed.value},settings_path:context.target.settingsPath,changed},context.warnings)}async function writeConfigSettingsIfChanged(context,changed,reason,assignedPaths=[]){(changed||isSettingsReadFallback(context.settings))&&(await writeSettings(context.target.pmRoot,context.settings,reason,{assignedPaths}),isSettingsReadFallback(context.settings)&&(context.fallbackRepairWritten=!0))}function hasGovernanceValidationMirrorChange(governanceValue,validationValue,nextPolicy){return governanceValue!==nextPolicy||validationValue!==nextPolicy}function buildPolicyResult(context,key,policy,changed){return withWarnings({scope:context.scope,key,policy,settings_path:context.target.settingsPath,changed},context.warnings)}function buildCriteriaResult(context,key,criteria,changed){return withWarnings({scope:context.scope,key,criteria,settings_path:context.target.settingsPath,changed},context.warnings)}async function migrateItemsForFormatChange(pmRoot,settings,nextFormat){const typeRegistry=resolveItemTypeRegistry(settings,getActiveExtensionRegistrations()),migrated=await migrateItemFilesToFormat(pmRoot,nextFormat,"config:set:item_format:migrate",typeRegistry.type_to_folder,settings.schema);return{target_format:migrated.target_format,scanned:migrated.scanned,migrated:migrated.migrated,removed:migrated.removed,warnings:migrated.warnings}}async function setItemFormatConfig(context,options){const nextFormat=normalizeItemFormat(options.format),changed=context.settings.item_format!==nextFormat||!context.metadata.has_explicit_item_format;let migration;if(changed){context.settings.item_format=nextFormat;const writeOptions={assignedPaths:["item_format"]};isSettingsReadFallback(context.settings)?(await writeSettings(context.target.pmRoot,context.settings,"config:set:item_format",writeOptions),context.fallbackRepairWritten=!0,migration=await migrateItemsForFormatChange(context.target.pmRoot,await readSettings(context.target.pmRoot),nextFormat)):(migration=await migrateItemsForFormatChange(context.target.pmRoot,context.settings,nextFormat),await writeSettings(context.target.pmRoot,context.settings,"config:set:item_format",writeOptions))}return withWarnings({scope:context.scope,key:"item_format",format:context.settings.item_format,has_explicit_item_format:!0,migration,settings_path:context.target.settingsPath,changed},context.warnings)}async function setValidationConfig(context,key,options){if(key==="history_missing_stream_policy"){const nextPolicy2=normalizeHistoryMissingStreamPolicy(options.policy),changed2=context.settings.history.missing_stream!==nextPolicy2;return context.settings.history.missing_stream=nextPolicy2,await writeConfigSettingsIfChanged(context,changed2,"config:set:history_missing_stream_policy",["history.missing_stream"]),buildPolicyResult(context,key,context.settings.history.missing_stream,changed2)}if(key==="sprint_release_format_policy"){const nextPolicy2=normalizeSprintReleaseFormatPolicy(options.policy),changed2=context.settings.validation.sprint_release_format!==nextPolicy2;return context.settings.validation.sprint_release_format=nextPolicy2,await writeConfigSettingsIfChanged(context,changed2,"config:set:sprint_release_format_policy",["validation.sprint_release_format"]),buildPolicyResult(context,key,context.settings.validation.sprint_release_format,changed2)}if(key==="parent_reference_policy"){const nextPolicy2=normalizeParentReferencePolicy(options.policy),changed2=context.settings.validation.parent_reference!==nextPolicy2||context.settings.governance.preset!=="custom"||context.settings.governance.parent_reference!==nextPolicy2;return context.settings.validation.parent_reference=nextPolicy2,context.settings.governance.preset="custom",context.settings.governance.parent_reference=nextPolicy2,await writeConfigSettingsIfChanged(context,changed2,"config:set:parent_reference_policy",["validation.parent_reference","governance.preset","governance.parent_reference"]),buildPolicyResult(context,key,context.settings.validation.parent_reference,changed2)}const nextPolicy=normalizeValidateMetadataProfile(options.policy),changed=context.settings.validation.metadata_profile!==nextPolicy||context.settings.governance.preset!=="custom"||context.settings.governance.metadata_profile!==nextPolicy;return context.settings.validation.metadata_profile=nextPolicy,context.settings.governance.preset="custom",context.settings.governance.metadata_profile=nextPolicy,await writeConfigSettingsIfChanged(context,changed,"config:set:metadata_validation_profile",["validation.metadata_profile","governance.preset","governance.metadata_profile"]),buildPolicyResult(context,key,context.settings.validation.metadata_profile,changed)}async function setCriteriaConfig(context,key,options){if(key==="metadata_required_fields"){const nextCriteria2=normalizeMetadataRequiredFields(options.criterion,options.clearCriteria),changed2=nextCriteria2.length!==context.settings.validation.metadata_required_fields.length||nextCriteria2.some((value,index)=>value!==context.settings.validation.metadata_required_fields[index]);return context.settings.validation.metadata_required_fields=nextCriteria2,await writeConfigSettingsIfChanged(context,changed2,"config:set:metadata_required_fields",["validation.metadata_required_fields"]),buildCriteriaResult(context,key,[...context.settings.validation.metadata_required_fields],changed2)}const currentCriteria={lifecycle_stale_blocker_reason_patterns:context.settings.validation.lifecycle_stale_blocker_reason_patterns,lifecycle_closure_like_blocked_reason_patterns:context.settings.validation.lifecycle_closure_like_blocked_reason_patterns,lifecycle_closure_like_resolution_patterns:context.settings.validation.lifecycle_closure_like_resolution_patterns,lifecycle_closure_like_actual_result_patterns:context.settings.validation.lifecycle_closure_like_actual_result_patterns}[key],nextCriteria=normalizeLifecyclePatternCriteria(key,options.criterion,options.clearCriteria),changed=nextCriteria.length!==currentCriteria.length||nextCriteria.some((value,index)=>value!==currentCriteria[index]);return currentCriteria.splice(0,currentCriteria.length,...nextCriteria),await writeConfigSettingsIfChanged(context,changed,`config:set:${key}`,[`validation.${key}`]),buildCriteriaResult(context,key,[...currentCriteria],changed)}async function setGovernancePresetOrTypeConfig(context,key,options){if(key==="governance_preset"){const nextPolicy=normalizeGovernancePreset(options.policy),changed2=context.settings.governance.preset!==nextPolicy;return context.settings.governance.preset=nextPolicy,await writeConfigSettingsIfChanged(context,changed2,"config:set:governance_preset",["governance.preset"]),buildPolicyResult(context,key,context.settings.governance.preset,changed2)}const policyProvided=typeof options.policy=="string",rawType=policyProvided?options.policy.trim():"";if(policyProvided&&rawType.length===0){const changed2=context.settings.governance.create_default_type!==void 0;return delete context.settings.governance.create_default_type,await writeConfigSettingsIfChanged(context,changed2,"config:set:governance_create_default_type",["governance.create_default_type"]),buildPolicyResult(context,key,context.settings.governance.create_default_type??"",changed2)}if(rawType.length===0)throw new PmCliError('Config set governance-create-default-type requires an item type value (or an empty value "" to clear it)',EXIT_CODE.USAGE);const typeRegistry=resolveItemTypeRegistry(context.settings,getActiveExtensionRegistrations()),resolvedType=resolveTypeName(rawType,typeRegistry);if(!resolvedType)throw new PmCliError(buildInvalidTypeError(rawType,typeRegistry.types,resolveItemTypesFilePath(context.target.pmRoot,context.settings.schema)),EXIT_CODE.USAGE);const changed=context.settings.governance.create_default_type!==resolvedType;return context.settings.governance.create_default_type=resolvedType,await writeConfigSettingsIfChanged(context,changed,"config:set:governance_create_default_type",["governance.create_default_type"]),buildPolicyResult(context,key,context.settings.governance.create_default_type,changed)}async function setGovernancePolicyConfig(context,key,options){if(key==="governance_ownership_enforcement"){const nextPolicy2=normalizeGovernanceOwnershipEnforcement(options.policy),changed2=context.settings.governance.preset!=="custom"||context.settings.governance.ownership_enforcement!==nextPolicy2;return context.settings.governance.preset="custom",context.settings.governance.ownership_enforcement=nextPolicy2,await writeConfigSettingsIfChanged(context,changed2,"config:set:governance_ownership_enforcement",["governance.preset","governance.ownership_enforcement"]),buildPolicyResult(context,key,context.settings.governance.ownership_enforcement,changed2)}if(key==="governance_create_mode_default"){const nextPolicy2=normalizeGovernanceCreateModeDefault(options.policy),changed2=context.settings.governance.preset!=="custom"||context.settings.governance.create_mode_default!==nextPolicy2;return context.settings.governance.preset="custom",context.settings.governance.create_mode_default=nextPolicy2,await writeConfigSettingsIfChanged(context,changed2,"config:set:governance_create_mode_default",["governance.preset","governance.create_mode_default"]),buildPolicyResult(context,key,context.settings.governance.create_mode_default,changed2)}const nextPolicy=normalizeGovernanceCloseValidationDefault(options.policy),changed=context.settings.governance.preset!=="custom"||context.settings.governance.close_validation_default!==nextPolicy;return context.settings.governance.preset="custom",context.settings.governance.close_validation_default=nextPolicy,await writeConfigSettingsIfChanged(context,changed,"config:set:governance_close_validation_default",["governance.preset","governance.close_validation_default"]),buildPolicyResult(context,key,context.settings.governance.close_validation_default,changed)}async function setGovernanceValidationConfig(context,key,options){if(key==="governance_parent_reference_policy"){const nextPolicy2=normalizeParentReferencePolicy(options.policy),changed2=context.settings.governance.preset!=="custom"||hasGovernanceValidationMirrorChange(context.settings.governance.parent_reference,context.settings.validation.parent_reference,nextPolicy2);return context.settings.governance.preset="custom",context.settings.governance.parent_reference=nextPolicy2,context.settings.validation.parent_reference=nextPolicy2,await writeConfigSettingsIfChanged(context,changed2,"config:set:governance_parent_reference_policy",["governance.preset","governance.parent_reference","validation.parent_reference"]),buildPolicyResult(context,key,context.settings.governance.parent_reference,changed2)}if(key==="governance_metadata_validation_profile"){const nextPolicy2=normalizeValidateMetadataProfile(options.policy),changed2=context.settings.governance.preset!=="custom"||hasGovernanceValidationMirrorChange(context.settings.governance.metadata_profile,context.settings.validation.metadata_profile,nextPolicy2);return context.settings.governance.preset="custom",context.settings.governance.metadata_profile=nextPolicy2,context.settings.validation.metadata_profile=nextPolicy2,await writeConfigSettingsIfChanged(context,changed2,"config:set:governance_metadata_validation_profile",["governance.preset","governance.metadata_profile","validation.metadata_profile"]),buildPolicyResult(context,key,context.settings.governance.metadata_profile,changed2)}const nextPolicy=normalizeGovernanceWorkflowEnforcement(options.policy),changed=(context.settings.governance.workflow_enforcement??"off")!==nextPolicy;return context.settings.governance.workflow_enforcement=nextPolicy,await writeConfigSettingsIfChanged(context,changed,"config:set:governance_workflow_enforcement",["governance.workflow_enforcement"]),buildPolicyResult(context,key,context.settings.governance.workflow_enforcement,changed)}async function setGovernanceBooleanConfig(context,key,options){if(key==="governance_require_close_reason"){const nextEnabled2=normalizeGovernanceRequireCloseReasonPolicy(options.policy)==="enabled",changed2=context.settings.governance.require_close_reason!==nextEnabled2;return context.settings.governance.require_close_reason=nextEnabled2,await writeConfigSettingsIfChanged(context,changed2,"config:set:governance_require_close_reason",["governance.require_close_reason"]),buildPolicyResult(context,key,context.settings.governance.require_close_reason?"enabled":"disabled",changed2)}const nextEnabled=normalizeGovernanceForceRequiredForStaleLockPolicy(options.policy)==="enabled",changed=context.settings.governance.preset!=="custom"||context.settings.governance.force_required_for_stale_lock!==nextEnabled;return context.settings.governance.preset="custom",context.settings.governance.force_required_for_stale_lock=nextEnabled,await writeConfigSettingsIfChanged(context,changed,"config:set:governance_force_required_for_stale_lock",["governance.preset","governance.force_required_for_stale_lock"]),buildPolicyResult(context,key,context.settings.governance.force_required_for_stale_lock?"enabled":"disabled",changed)}async function setTrackingConfig(context,key,options){if(key==="test_result_tracking"){const nextEnabled2=normalizeTestResultTrackingPolicy(options.policy)==="enabled",changed2=context.settings.testing.record_results_to_items!==nextEnabled2;return context.settings.testing.record_results_to_items=nextEnabled2,await writeConfigSettingsIfChanged(context,changed2,"config:set:test_result_tracking",["testing.record_results_to_items"]),buildPolicyResult(context,key,context.settings.testing.record_results_to_items?"enabled":"disabled",changed2)}if(key==="untrusted_linked_test_execution"){const nextEnabled2=normalizeEnabledDisabledPolicy(options.policy,"untrusted-linked-test-execution")==="enabled",changed2=context.settings.testing.allow_untrusted_linked_tests!==nextEnabled2;return context.settings.testing.allow_untrusted_linked_tests=nextEnabled2,await writeConfigSettingsIfChanged(context,changed2,"config:set:untrusted_linked_test_execution",["testing.allow_untrusted_linked_tests"]),buildPolicyResult(context,key,context.settings.testing.allow_untrusted_linked_tests?"enabled":"disabled",changed2)}const nextEnabled=normalizeTelemetryTrackingPolicy(options.policy)==="enabled",changed=context.settings.telemetry.enabled!==nextEnabled||!context.settings.telemetry.first_run_prompt_completed;return context.settings.telemetry.enabled=nextEnabled,context.settings.telemetry.first_run_prompt_completed=!0,await writeConfigSettingsIfChanged(context,changed,"config:set:telemetry_tracking",["telemetry.enabled","telemetry.first_run_prompt_completed"]),buildPolicyResult(context,key,context.settings.telemetry.enabled?"enabled":"disabled",changed)}async function setDefinitionOfDoneConfig(context,key,options){const nextCriteria=normalizeCriteria(options.criterion,options.clearCriteria),changed=nextCriteria.length!==context.settings.workflow.definition_of_done.length||nextCriteria.some((value,index)=>value!==context.settings.workflow.definition_of_done[index]);return context.settings.workflow.definition_of_done=nextCriteria,await writeConfigSettingsIfChanged(context,changed,"config:set:definition_of_done",["workflow.definition_of_done"]),buildCriteriaResult(context,key,[...context.settings.workflow.definition_of_done],changed)}function parseAgentIdentityVocabularyOperation(raw){const policy=raw?.trim().toLowerCase().replaceAll("_","-"),dryRun=policy?.startsWith("preview-")===!0,operation=dryRun?policy.slice(8):policy;if(operation==="add"||operation==="remove"||operation==="clear")return{operation,dryRun};throw new PmCliError("Config set agent-identity-vocabulary requires --policy add|remove|clear|preview-add|preview-remove|preview-clear",EXIT_CODE.USAGE)}function parseAgentIdentityVocabularyMutationValue(operation,value){if(operation==="add"){const separator=value?.lastIndexOf("=")??-1;if(separator<=0||separator===value.length-1)throw new PmCliError('Config set agent-identity-vocabulary --policy add requires --value "<legacy-author>=<canonical-harness>"',EXIT_CODE.USAGE);return{legacy_author:value.slice(0,separator),canonical_harness:value.slice(separator+1)}}if(operation==="remove"){if(value===void 0)throw new PmCliError("Config set agent-identity-vocabulary --policy remove requires --value <legacy-author>",EXIT_CODE.USAGE);return{legacy_author:value}}if(value!==void 0)throw new PmCliError("Config set agent-identity-vocabulary --policy clear does not accept --value",EXIT_CODE.USAGE);return{}}async function setAgentIdentityVocabularyConfig(context,options){const{operation,dryRun}=parseAgentIdentityVocabularyOperation(options.policy),mutationValue=parseAgentIdentityVocabularyMutationValue(operation,options.value);let planned;try{planned=planAgentIdentityVocabularyMutation(context.settings.agent_identity?.identity_vocabulary,{operation,...mutationValue,observed_authors:options.criterion})}catch(error){throw new PmCliError(error.message,EXIT_CODE.USAGE)}return planned.preview.changed&&!dryRun&&(context.settings.agent_identity={...context.settings.agent_identity,identity_vocabulary:planned.vocabulary},await writeConfigSettingsIfChanged(context,!0,`config:set:agent_identity.identity_vocabulary:${operation}:v${planned.preview.version_after}`,["agent_identity"])),withWarnings({scope:context.scope,key:"agent_identity_vocabulary",identity_vocabulary:summarizeAgentIdentityVocabulary(dryRun?context.settings.agent_identity?.identity_vocabulary:planned.vocabulary),vocabulary_mutation:planned.preview,settings_path:context.target.settingsPath,changed:planned.preview.changed&&!dryRun},context.warnings)}async function setConfigValue(context,key,options){const result=await dispatchConfigSetValue(context,key,options);return context.fallbackRepairWritten===!0?{...result,changed:!0}:result}async function dispatchConfigSetValue(context,key,options){if(options.clearCriteria===!0&&!isCriteriaConfigKey(key))throw new PmCliError("--clear-criteria is only supported with config set criteria-list keys",EXIT_CODE.USAGE);return key==="item_format"?setItemFormatConfig(context,options):key==="context"?applyContextConfig(context.settings,options,context.target,context.scope,context.warnings):key==="agent_identity_vocabulary"?setAgentIdentityVocabularyConfig(context,options):key==="definition_of_done"?setDefinitionOfDoneConfig(context,key,options):isCriteriaValueConfigKey(key)?setCriteriaConfig(context,key,options):TRACKING_CONFIG_KEYS.has(key)?setTrackingConfig(context,key,options):GOVERNANCE_BOOLEAN_CONFIG_KEYS.has(key)?setGovernanceBooleanConfig(context,key,options):isGovernancePolicyConfigKey(key)?setGovernancePolicyConfig(context,key,options):isGovernanceValidationConfigKey(key)?setGovernanceValidationConfig(context,key,options):isGovernancePresetOrTypeConfigKey(key)?setGovernancePresetOrTypeConfig(context,key,options):setValidationConfig(context,key,options)}async function runConfig(scopeValue,actionValue,keyValue,options,global2,valueValue){const scope=normalizeScope(scopeValue),action=normalizeAction(actionValue),nestedSetting=action==="get"||action==="set"?resolveNestedSettingDescriptor(keyValue):void 0,key=nestedSetting?void 0:normalizeKeyForAction(action,keyValue),routedOptions=applyPositionalValue(action,keyValue,key,nestedSetting,valueValue,options),target=await resolveSettingsTarget(scope,global2),{settings,metadata,warnings:settingsReadWarnings}=await readSettingsWithMetadata(target.pmRoot),context={scope,target,settings,metadata,warnings:normalizeWarnings(settingsReadWarnings)};return nestedSetting?buildNestedSettingResult(context,action,nestedSetting,routedOptions):action==="list"?buildConfigListResult(context):action==="export"?buildConfigExportResult(context):(assertConfigKeyDefined(key),action==="get"?buildConfigGetResult(context,key):setConfigValue(context,key,routedOptions))}const _testOnlyConfigCommand={hasGovernanceValidationMirrorChange,applyPositionalValue,normalizeAction,normalizeCriteria,normalizeGovernanceCloseValidationDefault,normalizeGovernanceCreateModeDefault,normalizeGovernanceForceRequiredForStaleLockPolicy,normalizeGovernanceOwnershipEnforcement,normalizeGovernancePreset,normalizeGovernanceRequireCloseReasonPolicy,normalizeGovernanceWorkflowEnforcement,normalizeHistoryMissingStreamPolicy,normalizeItemFormat,normalizeKey,normalizeMetadataRequiredFields,normalizePolicyForConflict,normalizeScope,normalizeTelemetryTrackingPolicy,normalizeTestResultTrackingPolicy,normalizeValidateMetadataProfile,normalizeWarnings};export{_testOnlyConfigCommand,runConfig};
|
|
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]="3bdc558d-47db-559f-822f-bde297fbb4af")}catch{}})();import{resolveConfigPositionalValue}from"../core/config/positional-value.js";import{NESTED_SETTING_DESCRIPTORS,parseNestedSettingValue,readNestedSettingValue,resolveNestedSettingDescriptor,writeNestedSettingValue}from"../core/config/nested-settings.js";import{getActiveExtensionRegistrations}from"../core/extensions/index.js";import{normalizeParentReferencePolicy}from"../core/item/parent-reference-policy.js";import{normalizeSprintReleaseFormatPolicy}from"../core/item/sprint-release-format.js";import{resolveItemTypeRegistry,resolveTypeName}from"../core/item/type-registry.js";import{buildInvalidTypeError}from"../core/schema/item-types-file.js";import{resolveItemTypesFilePath}from"../core/schema/runtime-schema.js";import{EXIT_CODE}from"../core/shared/constants.js";import{PmCliError}from"../core/shared/errors.js";import{createUnknownSubcommandError}from"./agent/subcommand-recovery.js";import{planAgentIdentityVocabularyMutation,summarizeAgentIdentityVocabulary}from"./agent/identity-config.js";import{assertInitializedTracker}from"./environment/tracker-preflight.js";import{migrateItemFilesToFormat}from"../core/store/item-format-migration.js";import{getSettingsPath,resolveGlobalPmRoot,resolvePmRoot}from"../core/store/paths.js";import{isSettingsReadFallback,readSettings,readSettingsWithMetadata,writeSettings}from"../core/store/settings.js";import{CONTEXT_DEPTH_VALUES}from"../types/index.js";const CONFIG_SCOPE_VALUES=["project","global"],CONFIG_KEY_ALIASES={definition_of_done:["definition-of-done","definition_of_done"],item_format:["item-format","item_format"],history_missing_stream_policy:["history-missing-stream-policy","history_missing_stream_policy"],sprint_release_format_policy:["sprint-release-format-policy","sprint_release_format_policy"],parent_reference_policy:["parent-reference-policy","parent_reference_policy"],metadata_validation_profile:["metadata-validation-profile","metadata_validation_profile"],metadata_required_fields:["metadata-required-fields","metadata_required_fields"],lifecycle_stale_blocker_reason_patterns:["lifecycle-stale-blocker-reason-patterns","lifecycle_stale_blocker_reason_patterns"],lifecycle_closure_like_blocked_reason_patterns:["lifecycle-closure-like-blocked-reason-patterns","lifecycle_closure_like_blocked_reason_patterns"],lifecycle_closure_like_resolution_patterns:["lifecycle-closure-like-resolution-patterns","lifecycle_closure_like_resolution_patterns"],lifecycle_closure_like_actual_result_patterns:["lifecycle-closure-like-actual-result-patterns","lifecycle_closure_like_actual_result_patterns"],governance_preset:["governance-preset","governance_preset"],governance_ownership_enforcement:["governance-ownership-enforcement","governance_ownership_enforcement"],governance_create_mode_default:["governance-create-mode-default","governance_create_mode_default"],governance_close_validation_default:["governance-close-validation-default","governance_close_validation_default"],governance_require_close_reason:["governance-require-close-reason","governance_require_close_reason"],governance_create_default_type:["governance-create-default-type","governance_create_default_type"],governance_workflow_enforcement:["governance-workflow-enforcement","governance_workflow_enforcement"],governance_start_blocker_enforcement:["governance-start-blocker-enforcement","governance_start_blocker_enforcement"],governance_parent_reference_policy:["governance-parent-reference-policy","governance_parent_reference_policy"],governance_metadata_validation_profile:["governance-metadata-validation-profile","governance_metadata_validation_profile"],governance_force_required_for_stale_lock:["governance-force-required-for-stale-lock","governance_force_required_for_stale_lock"],test_result_tracking:["test-result-tracking","test_result_tracking"],untrusted_linked_test_execution:["untrusted-linked-test-execution","untrusted_linked_test_execution"],telemetry_tracking:["telemetry-tracking","telemetry_tracking"],agent_identity_vocabulary:["agent-identity-vocabulary","agent_identity_vocabulary"],context:["context"]},CANONICAL_CONFIG_KEYS=Object.keys(CONFIG_KEY_ALIASES).map(candidate=>CONFIG_KEY_ALIASES[candidate][0]),CONFIG_KEY_BY_ALIAS=Object.fromEntries(Object.keys(CONFIG_KEY_ALIASES).flatMap(key=>CONFIG_KEY_ALIASES[key].map(alias=>[alias,key]))),CONFIG_KEY_SUMMARIES={definition_of_done:"Definition of Done criteria list.",item_format:"Default item file format.",history_missing_stream_policy:"Missing history stream handling policy.",sprint_release_format_policy:"Sprint/release format validation policy.",parent_reference_policy:"Parent reference validation policy.",metadata_validation_profile:"Validate metadata profile policy (core|strict|custom).",metadata_required_fields:"Validate custom metadata required-fields list.",lifecycle_stale_blocker_reason_patterns:"Validate lifecycle stale-blocker reason substring patterns (criteria list).",lifecycle_closure_like_blocked_reason_patterns:"Validate lifecycle closure-like blocked_reason substring patterns (criteria list).",lifecycle_closure_like_resolution_patterns:"Validate lifecycle closure-like resolution substring patterns (criteria list).",lifecycle_closure_like_actual_result_patterns:"Validate lifecycle closure-like actual_result substring patterns (criteria list).",governance_preset:"Governance preset policy (minimal|default|strict|custom).",governance_ownership_enforcement:"Governance ownership enforcement policy (none|warn|strict).",governance_create_mode_default:"Governance default create mode (progressive|strict).",governance_close_validation_default:"Governance default close validation mode (off|warn|strict).",governance_require_close_reason:"Governance close-reason requirement policy (enabled|disabled).",governance_create_default_type:"Governance default item type for `pm create` when --type is omitted.",governance_workflow_enforcement:"Governance per-type transition enforcement mode (off|warn|strict).",governance_start_blocker_enforcement:"Governance admission for starting an item whose declared blocker is still open (off|warn|strict; strict by default).",governance_parent_reference_policy:"Governance parent reference policy (warn|strict_error).",governance_metadata_validation_profile:"Governance metadata validation profile (core|strict|custom).",governance_force_required_for_stale_lock:"Governance stale-lock force policy (enabled|disabled).",test_result_tracking:"Item-level linked test result persistence policy.",untrusted_linked_test_execution:"Permit an explicit per-run override for commands not trusted by this clone.",telemetry_tracking:"Telemetry usage reporting policy.",agent_identity_vocabulary:"Versioned exact legacy-author interpretation vocabulary (summary only).",context:"Context command settings (depth, section toggles, limits)."},LIFECYCLE_PATTERN_CONFIG_KEYS=["lifecycle_stale_blocker_reason_patterns","lifecycle_closure_like_blocked_reason_patterns","lifecycle_closure_like_resolution_patterns","lifecycle_closure_like_actual_result_patterns"],CRITERIA_CONFIG_KEYS=new Set(["metadata_required_fields",...LIFECYCLE_PATTERN_CONFIG_KEYS]),TRACKING_CONFIG_KEYS=new Set(["test_result_tracking","untrusted_linked_test_execution","telemetry_tracking"]),GOVERNANCE_BOOLEAN_CONFIG_KEYS=new Set(["governance_require_close_reason","governance_force_required_for_stale_lock"]),GOVERNANCE_POLICY_CONFIG_KEYS=new Set(["governance_ownership_enforcement","governance_create_mode_default","governance_close_validation_default"]),GOVERNANCE_VALIDATION_CONFIG_KEYS=new Set(["governance_parent_reference_policy","governance_metadata_validation_profile","governance_workflow_enforcement","governance_start_blocker_enforcement"]),GOVERNANCE_PRESET_OR_TYPE_CONFIG_KEYS=new Set(["governance_preset","governance_create_default_type"]),isCriteriaValueConfigKey=key=>CRITERIA_CONFIG_KEYS.has(key),isGovernancePolicyConfigKey=key=>GOVERNANCE_POLICY_CONFIG_KEYS.has(key),isGovernanceValidationConfigKey=key=>GOVERNANCE_VALIDATION_CONFIG_KEYS.has(key),isGovernancePresetOrTypeConfigKey=key=>GOVERNANCE_PRESET_OR_TYPE_CONFIG_KEYS.has(key);function isCriteriaConfigKey(key){return key==="definition_of_done"||isCriteriaValueConfigKey(key)}function normalizeScope(value){if(CONFIG_SCOPE_VALUES.includes(value))return value;throw new PmCliError(`Invalid config scope "${value}". Allowed: ${CONFIG_SCOPE_VALUES.join(", ")}`,EXIT_CODE.USAGE)}function normalizeAction(value){if(value==="get"||value==="set"||value==="list"||value==="export")return value;throw createUnknownSubcommandError({command_path:"config",token:value.trim()||"<empty>",allowed:["export","get","list","set"],token_kind:"action"})}function normalizeKey(value){const key=CONFIG_KEY_BY_ALIAS[value];if(key)return key;const nestedKeys=NESTED_SETTING_DESCRIPTORS.map(descriptor=>descriptor.key).join(", ");throw new PmCliError(`Invalid config key "${value}". Supported: ${CANONICAL_CONFIG_KEYS.join(", ")} (underscore variants also accepted). Nested leaf settings: ${nestedKeys}.`,EXIT_CODE.USAGE)}function normalizeCriteria(values,clearCriteria){const normalized=[...new Set((values??[]).map(value=>value.trim()).filter(value=>value.length>0))].sort((left,right)=>left.localeCompare(right));if(clearCriteria){if(normalized.length>0)throw new PmCliError("Config set definition-of-done cannot combine --clear-criteria with --criterion values",EXIT_CODE.USAGE);return[]}if(normalized.length===0)throw new PmCliError("Config set definition-of-done requires at least one non-empty --criterion value (or --clear-criteria to clear)",EXIT_CODE.USAGE);return normalized}function normalizeItemFormat(value){const normalized=value?.trim().toLowerCase();if(normalized==="toon")return"toon";throw normalized==="json_markdown"?new PmCliError("Config set item-format no longer accepts json_markdown. Markdown item files are legacy read/migration input only.",EXIT_CODE.USAGE):new PmCliError("Config set item-format requires --format toon",EXIT_CODE.USAGE)}function normalizeHistoryMissingStreamPolicy(value){const normalized=value?.trim().toLowerCase().replaceAll("-","_");if(normalized==="auto_create"||normalized==="strict_error")return normalized;throw new PmCliError("Config set history-missing-stream-policy requires --policy with one of: auto_create, strict_error",EXIT_CODE.USAGE)}function normalizeTestResultTrackingPolicy(value){return normalizeEnabledDisabledPolicy(value,"test-result-tracking")}function normalizeEnabledDisabledPolicy(value,key){const normalized=value?.trim().toLowerCase().replaceAll("-","_");if(normalized==="enabled"||normalized==="disabled")return normalized;throw new PmCliError(`Config set ${key} requires --policy with one of: enabled, disabled`,EXIT_CODE.USAGE)}function normalizeTelemetryTrackingPolicy(value){const normalized=value?.trim().toLowerCase().replaceAll("-","_");if(normalized==="enabled"||normalized==="disabled")return normalized;throw new PmCliError("Config set telemetry-tracking requires --policy with one of: enabled, disabled",EXIT_CODE.USAGE)}function normalizeValidateMetadataProfile(value){const normalized=value?.trim().toLowerCase().replaceAll("-","_");if(normalized==="core"||normalized==="strict"||normalized==="custom")return normalized;throw new PmCliError("Config set metadata-validation-profile requires --policy with one of: core, strict, custom",EXIT_CODE.USAGE)}function normalizeGovernancePreset(value){const normalized=value?.trim().toLowerCase().replaceAll("-","_");if(normalized==="minimal"||normalized==="default"||normalized==="strict"||normalized==="custom")return normalized;throw new PmCliError("Config set governance-preset requires --policy with one of: minimal, default, strict, custom",EXIT_CODE.USAGE)}function normalizeGovernanceOwnershipEnforcement(value){const normalized=value?.trim().toLowerCase().replaceAll("-","_");if(normalized==="none"||normalized==="warn"||normalized==="strict")return normalized;throw new PmCliError("Config set governance-ownership-enforcement requires --policy with one of: none, warn, strict",EXIT_CODE.USAGE)}function normalizeGovernanceCreateModeDefault(value){const normalized=value?.trim().toLowerCase().replaceAll("-","_");if(normalized==="progressive"||normalized==="strict")return normalized;throw new PmCliError("Config set governance-create-mode-default requires --policy with one of: progressive, strict",EXIT_CODE.USAGE)}function normalizeGovernanceCloseValidationDefault(value){const normalized=value?.trim().toLowerCase().replaceAll("-","_");if(normalized==="off"||normalized==="warn"||normalized==="strict")return normalized;if(normalized==="none"||normalized==="disabled")return"off";throw new PmCliError("Config set governance-close-validation-default requires --policy with one of: off, warn, strict",EXIT_CODE.USAGE)}function normalizeGovernanceWorkflowEnforcement(value,key="governance-workflow-enforcement"){const normalized=typeof value=="string"?value.trim().toLowerCase().replaceAll("-","_"):void 0;if(normalized==="off"||normalized==="warn"||normalized==="strict")return normalized;if(normalized==="none"||normalized==="disabled")return"off";throw new PmCliError(`Config set ${key} requires one of: off, warn, strict`,EXIT_CODE.USAGE)}function normalizeGovernanceForceRequiredForStaleLockPolicy(value){const normalized=value?.trim().toLowerCase().replaceAll("-","_");if(normalized==="enabled"||normalized==="disabled")return normalized;throw new PmCliError("Config set governance-force-required-for-stale-lock requires --policy with one of: enabled, disabled",EXIT_CODE.USAGE)}function normalizeGovernanceRequireCloseReasonPolicy(value){const normalized=value?.trim().toLowerCase().replaceAll("-","_");if(normalized==="enabled"||normalized==="disabled")return normalized;throw new PmCliError("Config set governance-require-close-reason requires --policy with one of: enabled, disabled",EXIT_CODE.USAGE)}const ENABLED_DISABLED_CONFLICT_POLICY_KEYS={test_result_tracking:"test-result-tracking",untrusted_linked_test_execution:"untrusted-linked-test-execution"},ENFORCEMENT_MODE_CONFLICT_POLICY_KEYS={governance_workflow_enforcement:"governance-workflow-enforcement",governance_start_blocker_enforcement:"governance-start-blocker-enforcement"};function normalizePolicyForConflict(key,value){const enabledDisabledKey=ENABLED_DISABLED_CONFLICT_POLICY_KEYS[key];if(enabledDisabledKey)return normalizeEnabledDisabledPolicy(value,enabledDisabledKey);const enforcementKey=ENFORCEMENT_MODE_CONFLICT_POLICY_KEYS[key];if(enforcementKey)return normalizeGovernanceWorkflowEnforcement(value,enforcementKey);switch(key){case"history_missing_stream_policy":return normalizeHistoryMissingStreamPolicy(value);case"sprint_release_format_policy":return normalizeSprintReleaseFormatPolicy(value);case"parent_reference_policy":case"governance_parent_reference_policy":return normalizeParentReferencePolicy(value);case"metadata_validation_profile":case"governance_metadata_validation_profile":return normalizeValidateMetadataProfile(value);case"governance_preset":return normalizeGovernancePreset(value);case"governance_ownership_enforcement":return normalizeGovernanceOwnershipEnforcement(value);case"governance_create_mode_default":return normalizeGovernanceCreateModeDefault(value);case"governance_close_validation_default":return normalizeGovernanceCloseValidationDefault(value);case"governance_require_close_reason":return normalizeGovernanceRequireCloseReasonPolicy(value);case"governance_force_required_for_stale_lock":return normalizeGovernanceForceRequiredForStaleLockPolicy(value);case"telemetry_tracking":return normalizeTelemetryTrackingPolicy(value);default:return value.trim().toLowerCase().replaceAll("-","_")}}const METADATA_REQUIRED_FIELD_ALIAS_MAP={author:"author",acceptance_criteria:"acceptance_criteria","acceptance-criteria":"acceptance_criteria",estimated_minutes:"estimated_minutes","estimated-minutes":"estimated_minutes",estimate:"estimated_minutes",close_reason:"close_reason","close-reason":"close_reason",reviewer:"reviewer",risk:"risk",confidence:"confidence",sprint:"sprint",release:"release"},METADATA_REQUIRED_FIELD_OPTIONS=["author","acceptance_criteria","estimated_minutes","close_reason","reviewer","risk","confidence","sprint","release"];function normalizeMetadataRequiredFields(values,clearCriteria){const normalized=[...new Set((values??[]).map(value=>value.trim()).filter(value=>value.length>0))];if(clearCriteria){if(normalized.length>0)throw new PmCliError("Config set metadata-required-fields cannot combine --clear-criteria with --criterion values",EXIT_CODE.USAGE);return[]}if(normalized.length===0)throw new PmCliError("Config set metadata-required-fields requires at least one --criterion value (or --clear-criteria to clear)",EXIT_CODE.USAGE);const lowered=normalized.map(value=>value.toLowerCase().replaceAll("-","_")),unsupported=lowered.filter(value=>METADATA_REQUIRED_FIELD_ALIAS_MAP[value]===void 0);if(unsupported.length>0)throw new PmCliError(`Config set metadata-required-fields received unsupported values: ${unsupported.join(", ")}. Supported values: ${METADATA_REQUIRED_FIELD_OPTIONS.join(", ")}`,EXIT_CODE.USAGE);return[...new Set(lowered.map(value=>METADATA_REQUIRED_FIELD_ALIAS_MAP[value]))].sort((left,right)=>left.localeCompare(right))}function normalizeLifecyclePatternCriteria(key,values,clearCriteria){const normalized=[...new Set((values??[]).map(value=>value.trim().toLowerCase()).filter(value=>value.length>0))].sort((left,right)=>left.localeCompare(right));if(clearCriteria){if(normalized.length>0)throw new PmCliError(`Config set ${CONFIG_KEY_ALIASES[key][0]} cannot combine --clear-criteria with --criterion values`,EXIT_CODE.USAGE);return[]}if(normalized.length===0)throw new PmCliError(`Config set ${CONFIG_KEY_ALIASES[key][0]} requires at least one --criterion value (or --clear-criteria to clear)`,EXIT_CODE.USAGE);return normalized}function normalizeWarnings(values){return[...new Set(values)].sort((left,right)=>left.localeCompare(right))}function normalizeKeyForAction(action,value){if(action==="list"||action==="export"){if(typeof value=="string"&&value.trim().length>0)throw new PmCliError(`Config action "${action}" does not accept <key>`,EXIT_CODE.USAGE);return}if(typeof value!="string"||value.trim().length===0)throw new PmCliError(`Config action "${action}" requires <key>`,EXIT_CODE.USAGE);return normalizeKey(value)}function assertConfigKeyDefined(key){if(!key)throw new PmCliError("Config action requires <key>",EXIT_CODE.USAGE)}const CONFIG_VALUE_READERS={definition_of_done:settings=>[...settings.workflow.definition_of_done],item_format:settings=>settings.item_format,history_missing_stream_policy:settings=>settings.history.missing_stream,sprint_release_format_policy:settings=>settings.validation.sprint_release_format,parent_reference_policy:settings=>settings.validation.parent_reference,metadata_validation_profile:settings=>settings.validation.metadata_profile,metadata_required_fields:settings=>[...settings.validation.metadata_required_fields],lifecycle_stale_blocker_reason_patterns:settings=>[...settings.validation.lifecycle_stale_blocker_reason_patterns],lifecycle_closure_like_blocked_reason_patterns:settings=>[...settings.validation.lifecycle_closure_like_blocked_reason_patterns],lifecycle_closure_like_resolution_patterns:settings=>[...settings.validation.lifecycle_closure_like_resolution_patterns],lifecycle_closure_like_actual_result_patterns:settings=>[...settings.validation.lifecycle_closure_like_actual_result_patterns],governance_preset:settings=>settings.governance.preset,governance_ownership_enforcement:settings=>settings.governance.ownership_enforcement,governance_create_mode_default:settings=>settings.governance.create_mode_default,governance_close_validation_default:settings=>settings.governance.close_validation_default,governance_require_close_reason:settings=>settings.governance.require_close_reason?"enabled":"disabled",governance_create_default_type:settings=>settings.governance.create_default_type??"",governance_workflow_enforcement:settings=>settings.governance.workflow_enforcement??"off",governance_start_blocker_enforcement:settings=>settings.governance.start_blocker_enforcement??"strict",governance_parent_reference_policy:settings=>settings.governance.parent_reference,governance_metadata_validation_profile:settings=>settings.governance.metadata_profile,governance_force_required_for_stale_lock:settings=>settings.governance.force_required_for_stale_lock?"enabled":"disabled",test_result_tracking:settings=>settings.testing.record_results_to_items?"enabled":"disabled",untrusted_linked_test_execution:settings=>settings.testing.allow_untrusted_linked_tests?"enabled":"disabled",telemetry_tracking:settings=>settings.telemetry.enabled?"enabled":"disabled",agent_identity_vocabulary:settings=>summarizeAgentIdentityVocabulary(settings.agent_identity?.identity_vocabulary),context:settings=>({default_depth:settings.context.default_depth,activity_limit:settings.context.activity_limit,stale_threshold_days:settings.context.stale_threshold_days,next_ranking_policy:settings.context.next_ranking_policy,sections:{...settings.context.sections}})};function readConfigValue(settings,key){return CONFIG_VALUE_READERS[key](settings)}function withWarnings(result,warnings){return warnings.length===0?result:{...result,warnings}}async function resolveSettingsTarget(scope,global2){const cwd=process.cwd(),pmRoot=scope==="project"?resolvePmRoot(cwd,global2.path):resolveGlobalPmRoot(cwd),settingsPath=getSettingsPath(pmRoot);return scope==="project"&&await assertInitializedTracker(pmRoot),{pmRoot,settingsPath}}function parseSectionToggle(raw){if(raw===void 0)return;const normalized=raw.trim().toLowerCase();if(normalized==="true"||normalized==="enabled"||normalized==="on"||normalized==="1")return!0;if(normalized==="false"||normalized==="disabled"||normalized==="off"||normalized==="0")return!1;throw new PmCliError(`Context section toggle must be true|false|enabled|disabled, got "${raw}"`,EXIT_CODE.USAGE)}function parsePositiveContextInteger(rawValue,option){const raw=rawValue.trim(),parsed=Number(raw);if(/^\d+$/u.test(raw)&&Number.isSafeInteger(parsed)&&parsed>0)return parsed;throw new PmCliError(`Context ${option} must be a positive integer`,EXIT_CODE.USAGE)}async function applyContextConfig(settings,options,target,scope,warnings){let changed=!1;const ctx=settings.context,assignedPaths=[];if(options.defaultDepth!==void 0){const normalized=options.defaultDepth.trim().toLowerCase();if(!CONTEXT_DEPTH_VALUES.includes(normalized))throw new PmCliError(`Context --default-depth must be one of ${CONTEXT_DEPTH_VALUES.join("|")}`,EXIT_CODE.USAGE);assignedPaths.push("context.default_depth"),ctx.default_depth!==normalized&&(ctx.default_depth=normalized,changed=!0)}if(options.activityLimit!==void 0){const parsed=parsePositiveContextInteger(options.activityLimit,"--activity-limit");assignedPaths.push("context.activity_limit"),ctx.activity_limit!==parsed&&(ctx.activity_limit=parsed,changed=!0)}if(options.staleThresholdDays!==void 0){const parsed=parsePositiveContextInteger(options.staleThresholdDays,"--stale-threshold-days");assignedPaths.push("context.stale_threshold_days"),ctx.stale_threshold_days!==parsed&&(ctx.stale_threshold_days=parsed,changed=!0)}const sectionToggles=[["hierarchy",options.sectionHierarchy],["activity",options.sectionActivity],["progress",options.sectionProgress],["blockers",options.sectionBlockers],["files",options.sectionFiles],["workload",options.sectionWorkload],["staleness",options.sectionStaleness],["tests",options.sectionTests]];for(const[sectionName,rawValue]of sectionToggles){const toggle=parseSectionToggle(rawValue);if(toggle!==void 0){const key=sectionName;assignedPaths.push(`context.sections.${sectionName}`),ctx.sections[key]!==toggle&&(ctx.sections[key]=toggle,changed=!0)}}return(changed||isSettingsReadFallback(settings))&&(await writeSettings(target.pmRoot,settings,"config:set:context",{assignedPaths}),changed=!0),withWarnings({scope,key:"context",context_settings:{default_depth:ctx.default_depth,activity_limit:ctx.activity_limit,stale_threshold_days:ctx.stale_threshold_days,next_ranking_policy:ctx.next_ranking_policy,sections:{...ctx.sections}},settings_path:target.settingsPath,changed},warnings)}function applyNestedSettingPositionalValue(keyValue,valueValue,options){if(options.value!==void 0&&options.value!==valueValue)throw new PmCliError(`Config set ${keyValue} received both positional value "${valueValue}" and --value "${options.value}". Pass only one.`,EXIT_CODE.USAGE);return{...options,value:valueValue}}function applyPositionalValue(action,keyValue,normalizedKey,nestedSetting,valueValue,options){if(valueValue===void 0)return options;if(action!=="set")throw new PmCliError(`Config action "${action}" does not accept a positional value. Only "set" takes <value>.`,EXIT_CODE.USAGE);if(typeof keyValue!="string"||keyValue.trim().length===0)throw new PmCliError('Config action "set" requires <key> before a positional <value>.',EXIT_CODE.USAGE);if(nestedSetting)return applyNestedSettingPositionalValue(keyValue,valueValue,options);assertConfigKeyDefined(normalizedKey);const routed=resolveConfigPositionalValue(normalizedKey,valueValue);if(!routed.routable)throw new PmCliError(routed.reason,EXIT_CODE.USAGE);if(routed.flag==="criterion"){if(options.criterion!==void 0&&options.criterion.length>0)throw new PmCliError(`Config set ${keyValue} received both positional value "${valueValue}" and --criterion. Pass criteria via --criterion only when supplying more than one value.`,EXIT_CODE.USAGE);return{...options,criterion:routed.values}}if(routed.flag==="format")return{...options,format:routed.value};if(options.policy!==void 0&&normalizePolicyForConflict(normalizedKey,options.policy)!==normalizePolicyForConflict(normalizedKey,routed.value))throw new PmCliError(`Config set ${keyValue} received both positional value "${valueValue}" and --policy "${options.policy}". Pass only one.`,EXIT_CODE.USAGE);return{...options,policy:routed.value}}function refuseProjectTelemetryTracking(action,suffix){const remedy=`pm config global ${action} telemetry-tracking${suffix}`;throw new PmCliError(`Config ${action} telemetry-tracking applies to this CLI install, not one project. Run: ${remedy}`,EXIT_CODE.USAGE,{code:"invalid_argument_value",reason:"telemetry_consent_is_global",field:"scope",changed:!1,required:`Run: ${remedy}`,examples:[remedy]})}function configKeysForScope(scope){return Object.keys(CONFIG_KEY_ALIASES).filter(key=>scope==="global"||key!=="telemetry_tracking")}function buildConfigListResult(context){const keys=configKeysForScope(context.scope).map(candidate=>({key:candidate,aliases:CONFIG_KEY_ALIASES[candidate],value_kind:candidate==="context"||candidate==="agent_identity_vocabulary"?"object":isCriteriaConfigKey(candidate)?"string_array":"enum",set_flags:candidate==="context"?["--default-depth","--activity-limit","--stale-threshold-days","--section-<name>"]:candidate==="agent_identity_vocabulary"?["--policy","--value","--criterion"]:isCriteriaConfigKey(candidate)?["--criterion","--clear-criteria"]:candidate==="item_format"?["--format"]:["--policy"],summary:CONFIG_KEY_SUMMARIES[candidate],value:readConfigValue(context.settings,candidate)})),nestedSettings=NESTED_SETTING_DESCRIPTORS.map(descriptor=>({key:descriptor.key,canonical_key:descriptor.key.replaceAll("_","-"),path:descriptor.path,kind:descriptor.kind,value:readNestedSettingValue(context.settings,descriptor),summary:descriptor.summary,...descriptor.choices?{choices:[...descriptor.choices]}:{},...descriptor.min===void 0?{}:{min:descriptor.min},...descriptor.max===void 0?{}:{max:descriptor.max}}));return withWarnings({scope:context.scope,keys,nested_settings:nestedSettings,count:keys.length,settings_path:context.target.settingsPath,changed:!1},context.warnings)}function buildConfigExportResult(context){const values=Object.fromEntries(configKeysForScope(context.scope).map(key=>[key,readConfigValue(context.settings,key)]));return withWarnings({scope:context.scope,values,settings_path:context.target.settingsPath,changed:!1},context.warnings)}function buildConfigGetResult(context,key){const value=readConfigValue(context.settings,key),base={scope:context.scope,key,settings_path:context.target.settingsPath,changed:!1};return key==="item_format"?withWarnings({...base,format:context.settings.item_format,has_explicit_item_format:context.metadata.has_explicit_item_format},context.warnings):key==="context"?withWarnings({...base,context_settings:value},context.warnings):key==="agent_identity_vocabulary"?withWarnings({...base,identity_vocabulary:value},context.warnings):Array.isArray(value)?withWarnings({...base,criteria:value},context.warnings):withWarnings({...base,policy:value},context.warnings)}async function buildNestedSettingResult(context,action,nestedSetting,options){if(action==="get"){const currentValue=readNestedSettingValue(context.settings,nestedSetting);return withWarnings({scope:context.scope,key:nestedSetting.key,nested_setting:{key:nestedSetting.key,path:nestedSetting.path,kind:nestedSetting.kind,value:currentValue},settings_path:context.target.settingsPath,changed:!1},context.warnings)}const rawValue=options.value;if(typeof rawValue!="string")throw new PmCliError(`Config set ${nestedSetting.key} requires a value. Pass it positionally (\`pm config ${context.scope} set ${nestedSetting.key} <value>\`) or via --value.`,EXIT_CODE.USAGE);const parsed=parseNestedSettingValue(nestedSetting,rawValue);if(!parsed.ok)throw new PmCliError(parsed.error.message,EXIT_CODE.USAGE);const changed=writeNestedSettingValue(context.settings,nestedSetting,parsed.parsed.value)||isSettingsReadFallback(context.settings);return changed&&await writeSettings(context.target.pmRoot,context.settings,`config:set:${nestedSetting.path}`,{assignedPaths:[nestedSetting.path]}),withWarnings({scope:context.scope,key:nestedSetting.key,nested_setting:{key:nestedSetting.key,path:nestedSetting.path,kind:nestedSetting.kind,value:parsed.parsed.value},settings_path:context.target.settingsPath,changed},context.warnings)}async function writeConfigSettingsIfChanged(context,changed,reason,assignedPaths=[]){(changed||isSettingsReadFallback(context.settings))&&(await writeSettings(context.target.pmRoot,context.settings,reason,{assignedPaths}),isSettingsReadFallback(context.settings)&&(context.fallbackRepairWritten=!0))}function hasGovernanceValidationMirrorChange(governanceValue,validationValue,nextPolicy){return governanceValue!==nextPolicy||validationValue!==nextPolicy}function buildPolicyResult(context,key,policy,changed){return withWarnings({scope:context.scope,key,policy,settings_path:context.target.settingsPath,changed},context.warnings)}function buildCriteriaResult(context,key,criteria,changed){return withWarnings({scope:context.scope,key,criteria,settings_path:context.target.settingsPath,changed},context.warnings)}async function migrateItemsForFormatChange(pmRoot,settings,nextFormat){const typeRegistry=resolveItemTypeRegistry(settings,getActiveExtensionRegistrations()),migrated=await migrateItemFilesToFormat(pmRoot,nextFormat,"config:set:item_format:migrate",typeRegistry.type_to_folder,settings.schema);return{target_format:migrated.target_format,scanned:migrated.scanned,migrated:migrated.migrated,removed:migrated.removed,warnings:migrated.warnings}}async function setItemFormatConfig(context,options){const nextFormat=normalizeItemFormat(options.format),changed=context.settings.item_format!==nextFormat||!context.metadata.has_explicit_item_format;let migration;if(changed){context.settings.item_format=nextFormat;const writeOptions={assignedPaths:["item_format"]};isSettingsReadFallback(context.settings)?(await writeSettings(context.target.pmRoot,context.settings,"config:set:item_format",writeOptions),context.fallbackRepairWritten=!0,migration=await migrateItemsForFormatChange(context.target.pmRoot,await readSettings(context.target.pmRoot),nextFormat)):(migration=await migrateItemsForFormatChange(context.target.pmRoot,context.settings,nextFormat),await writeSettings(context.target.pmRoot,context.settings,"config:set:item_format",writeOptions))}return withWarnings({scope:context.scope,key:"item_format",format:context.settings.item_format,has_explicit_item_format:!0,migration,settings_path:context.target.settingsPath,changed},context.warnings)}async function setValidationConfig(context,key,options){if(key==="history_missing_stream_policy"){const nextPolicy2=normalizeHistoryMissingStreamPolicy(options.policy),changed2=context.settings.history.missing_stream!==nextPolicy2;return context.settings.history.missing_stream=nextPolicy2,await writeConfigSettingsIfChanged(context,changed2,"config:set:history_missing_stream_policy",["history.missing_stream"]),buildPolicyResult(context,key,context.settings.history.missing_stream,changed2)}if(key==="sprint_release_format_policy"){const nextPolicy2=normalizeSprintReleaseFormatPolicy(options.policy),changed2=context.settings.validation.sprint_release_format!==nextPolicy2;return context.settings.validation.sprint_release_format=nextPolicy2,await writeConfigSettingsIfChanged(context,changed2,"config:set:sprint_release_format_policy",["validation.sprint_release_format"]),buildPolicyResult(context,key,context.settings.validation.sprint_release_format,changed2)}if(key==="parent_reference_policy"){const nextPolicy2=normalizeParentReferencePolicy(options.policy),changed2=context.settings.validation.parent_reference!==nextPolicy2||context.settings.governance.preset!=="custom"||context.settings.governance.parent_reference!==nextPolicy2;return context.settings.validation.parent_reference=nextPolicy2,context.settings.governance.preset="custom",context.settings.governance.parent_reference=nextPolicy2,await writeConfigSettingsIfChanged(context,changed2,"config:set:parent_reference_policy",["validation.parent_reference","governance.preset","governance.parent_reference"]),buildPolicyResult(context,key,context.settings.validation.parent_reference,changed2)}const nextPolicy=normalizeValidateMetadataProfile(options.policy),changed=context.settings.validation.metadata_profile!==nextPolicy||context.settings.governance.preset!=="custom"||context.settings.governance.metadata_profile!==nextPolicy;return context.settings.validation.metadata_profile=nextPolicy,context.settings.governance.preset="custom",context.settings.governance.metadata_profile=nextPolicy,await writeConfigSettingsIfChanged(context,changed,"config:set:metadata_validation_profile",["validation.metadata_profile","governance.preset","governance.metadata_profile"]),buildPolicyResult(context,key,context.settings.validation.metadata_profile,changed)}async function setCriteriaConfig(context,key,options){if(key==="metadata_required_fields"){const nextCriteria2=normalizeMetadataRequiredFields(options.criterion,options.clearCriteria),changed2=nextCriteria2.length!==context.settings.validation.metadata_required_fields.length||nextCriteria2.some((value,index)=>value!==context.settings.validation.metadata_required_fields[index]);return context.settings.validation.metadata_required_fields=nextCriteria2,await writeConfigSettingsIfChanged(context,changed2,"config:set:metadata_required_fields",["validation.metadata_required_fields"]),buildCriteriaResult(context,key,[...context.settings.validation.metadata_required_fields],changed2)}const currentCriteria={lifecycle_stale_blocker_reason_patterns:context.settings.validation.lifecycle_stale_blocker_reason_patterns,lifecycle_closure_like_blocked_reason_patterns:context.settings.validation.lifecycle_closure_like_blocked_reason_patterns,lifecycle_closure_like_resolution_patterns:context.settings.validation.lifecycle_closure_like_resolution_patterns,lifecycle_closure_like_actual_result_patterns:context.settings.validation.lifecycle_closure_like_actual_result_patterns}[key],nextCriteria=normalizeLifecyclePatternCriteria(key,options.criterion,options.clearCriteria),changed=nextCriteria.length!==currentCriteria.length||nextCriteria.some((value,index)=>value!==currentCriteria[index]);return currentCriteria.splice(0,currentCriteria.length,...nextCriteria),await writeConfigSettingsIfChanged(context,changed,`config:set:${key}`,[`validation.${key}`]),buildCriteriaResult(context,key,[...currentCriteria],changed)}async function setGovernancePresetOrTypeConfig(context,key,options){if(key==="governance_preset"){const nextPolicy=normalizeGovernancePreset(options.policy),changed2=context.settings.governance.preset!==nextPolicy;return context.settings.governance.preset=nextPolicy,await writeConfigSettingsIfChanged(context,changed2,"config:set:governance_preset",["governance.preset"]),buildPolicyResult(context,key,context.settings.governance.preset,changed2)}const policyProvided=typeof options.policy=="string",rawType=policyProvided?options.policy.trim():"";if(policyProvided&&rawType.length===0){const changed2=context.settings.governance.create_default_type!==void 0;return delete context.settings.governance.create_default_type,await writeConfigSettingsIfChanged(context,changed2,"config:set:governance_create_default_type",["governance.create_default_type"]),buildPolicyResult(context,key,context.settings.governance.create_default_type??"",changed2)}if(rawType.length===0)throw new PmCliError('Config set governance-create-default-type requires an item type value (or an empty value "" to clear it)',EXIT_CODE.USAGE);const typeRegistry=resolveItemTypeRegistry(context.settings,getActiveExtensionRegistrations()),resolvedType=resolveTypeName(rawType,typeRegistry);if(!resolvedType)throw new PmCliError(buildInvalidTypeError(rawType,typeRegistry.types,resolveItemTypesFilePath(context.target.pmRoot,context.settings.schema)),EXIT_CODE.USAGE);const changed=context.settings.governance.create_default_type!==resolvedType;return context.settings.governance.create_default_type=resolvedType,await writeConfigSettingsIfChanged(context,changed,"config:set:governance_create_default_type",["governance.create_default_type"]),buildPolicyResult(context,key,context.settings.governance.create_default_type,changed)}async function setGovernancePolicyConfig(context,key,options){if(key==="governance_ownership_enforcement"){const nextPolicy2=normalizeGovernanceOwnershipEnforcement(options.policy),changed2=context.settings.governance.preset!=="custom"||context.settings.governance.ownership_enforcement!==nextPolicy2;return context.settings.governance.preset="custom",context.settings.governance.ownership_enforcement=nextPolicy2,await writeConfigSettingsIfChanged(context,changed2,"config:set:governance_ownership_enforcement",["governance.preset","governance.ownership_enforcement"]),buildPolicyResult(context,key,context.settings.governance.ownership_enforcement,changed2)}if(key==="governance_create_mode_default"){const nextPolicy2=normalizeGovernanceCreateModeDefault(options.policy),changed2=context.settings.governance.preset!=="custom"||context.settings.governance.create_mode_default!==nextPolicy2;return context.settings.governance.preset="custom",context.settings.governance.create_mode_default=nextPolicy2,await writeConfigSettingsIfChanged(context,changed2,"config:set:governance_create_mode_default",["governance.preset","governance.create_mode_default"]),buildPolicyResult(context,key,context.settings.governance.create_mode_default,changed2)}const nextPolicy=normalizeGovernanceCloseValidationDefault(options.policy),changed=context.settings.governance.preset!=="custom"||context.settings.governance.close_validation_default!==nextPolicy;return context.settings.governance.preset="custom",context.settings.governance.close_validation_default=nextPolicy,await writeConfigSettingsIfChanged(context,changed,"config:set:governance_close_validation_default",["governance.preset","governance.close_validation_default"]),buildPolicyResult(context,key,context.settings.governance.close_validation_default,changed)}async function setGovernanceValidationConfig(context,key,options){if(key==="governance_parent_reference_policy"){const nextPolicy2=normalizeParentReferencePolicy(options.policy),changed2=context.settings.governance.preset!=="custom"||hasGovernanceValidationMirrorChange(context.settings.governance.parent_reference,context.settings.validation.parent_reference,nextPolicy2);return context.settings.governance.preset="custom",context.settings.governance.parent_reference=nextPolicy2,context.settings.validation.parent_reference=nextPolicy2,await writeConfigSettingsIfChanged(context,changed2,"config:set:governance_parent_reference_policy",["governance.preset","governance.parent_reference","validation.parent_reference"]),buildPolicyResult(context,key,context.settings.governance.parent_reference,changed2)}if(key==="governance_metadata_validation_profile"){const nextPolicy2=normalizeValidateMetadataProfile(options.policy),changed2=context.settings.governance.preset!=="custom"||hasGovernanceValidationMirrorChange(context.settings.governance.metadata_profile,context.settings.validation.metadata_profile,nextPolicy2);return context.settings.governance.preset="custom",context.settings.governance.metadata_profile=nextPolicy2,context.settings.validation.metadata_profile=nextPolicy2,await writeConfigSettingsIfChanged(context,changed2,"config:set:governance_metadata_validation_profile",["governance.preset","governance.metadata_profile","validation.metadata_profile"]),buildPolicyResult(context,key,context.settings.governance.metadata_profile,changed2)}if(key==="governance_start_blocker_enforcement"){const nextStartPolicy=normalizeGovernanceWorkflowEnforcement(options.policy,"governance-start-blocker-enforcement"),changed2=(context.settings.governance.start_blocker_enforcement??"strict")!==nextStartPolicy;return context.settings.governance.start_blocker_enforcement=nextStartPolicy,await writeConfigSettingsIfChanged(context,changed2,"config:set:governance_start_blocker_enforcement",["governance.start_blocker_enforcement"]),buildPolicyResult(context,key,nextStartPolicy,changed2)}const nextPolicy=normalizeGovernanceWorkflowEnforcement(options.policy),changed=(context.settings.governance.workflow_enforcement??"off")!==nextPolicy;return context.settings.governance.workflow_enforcement=nextPolicy,await writeConfigSettingsIfChanged(context,changed,"config:set:governance_workflow_enforcement",["governance.workflow_enforcement"]),buildPolicyResult(context,key,context.settings.governance.workflow_enforcement,changed)}async function setGovernanceBooleanConfig(context,key,options){if(key==="governance_require_close_reason"){const nextEnabled2=normalizeGovernanceRequireCloseReasonPolicy(options.policy)==="enabled",changed2=context.settings.governance.require_close_reason!==nextEnabled2;return context.settings.governance.require_close_reason=nextEnabled2,await writeConfigSettingsIfChanged(context,changed2,"config:set:governance_require_close_reason",["governance.require_close_reason"]),buildPolicyResult(context,key,context.settings.governance.require_close_reason?"enabled":"disabled",changed2)}const nextEnabled=normalizeGovernanceForceRequiredForStaleLockPolicy(options.policy)==="enabled",changed=context.settings.governance.preset!=="custom"||context.settings.governance.force_required_for_stale_lock!==nextEnabled;return context.settings.governance.preset="custom",context.settings.governance.force_required_for_stale_lock=nextEnabled,await writeConfigSettingsIfChanged(context,changed,"config:set:governance_force_required_for_stale_lock",["governance.preset","governance.force_required_for_stale_lock"]),buildPolicyResult(context,key,context.settings.governance.force_required_for_stale_lock?"enabled":"disabled",changed)}async function setTrackingConfig(context,key,options){if(key==="test_result_tracking"){const nextEnabled2=normalizeTestResultTrackingPolicy(options.policy)==="enabled",changed2=context.settings.testing.record_results_to_items!==nextEnabled2;return context.settings.testing.record_results_to_items=nextEnabled2,await writeConfigSettingsIfChanged(context,changed2,"config:set:test_result_tracking",["testing.record_results_to_items"]),buildPolicyResult(context,key,context.settings.testing.record_results_to_items?"enabled":"disabled",changed2)}if(key==="untrusted_linked_test_execution"){const nextEnabled2=normalizeEnabledDisabledPolicy(options.policy,"untrusted-linked-test-execution")==="enabled",changed2=context.settings.testing.allow_untrusted_linked_tests!==nextEnabled2;return context.settings.testing.allow_untrusted_linked_tests=nextEnabled2,await writeConfigSettingsIfChanged(context,changed2,"config:set:untrusted_linked_test_execution",["testing.allow_untrusted_linked_tests"]),buildPolicyResult(context,key,context.settings.testing.allow_untrusted_linked_tests?"enabled":"disabled",changed2)}const nextPolicy=normalizeTelemetryTrackingPolicy(options.policy);context.scope==="project"&&refuseProjectTelemetryTracking("set",` --policy ${nextPolicy}`);const nextEnabled=nextPolicy==="enabled",changed=context.settings.telemetry.enabled!==nextEnabled||!context.settings.telemetry.first_run_prompt_completed;return context.settings.telemetry.enabled=nextEnabled,context.settings.telemetry.first_run_prompt_completed=!0,await writeConfigSettingsIfChanged(context,changed,"config:set:telemetry_tracking",["telemetry.enabled","telemetry.first_run_prompt_completed"]),buildPolicyResult(context,key,context.settings.telemetry.enabled?"enabled":"disabled",changed)}async function setDefinitionOfDoneConfig(context,key,options){const nextCriteria=normalizeCriteria(options.criterion,options.clearCriteria),changed=nextCriteria.length!==context.settings.workflow.definition_of_done.length||nextCriteria.some((value,index)=>value!==context.settings.workflow.definition_of_done[index]);return context.settings.workflow.definition_of_done=nextCriteria,await writeConfigSettingsIfChanged(context,changed,"config:set:definition_of_done",["workflow.definition_of_done"]),buildCriteriaResult(context,key,[...context.settings.workflow.definition_of_done],changed)}function parseAgentIdentityVocabularyOperation(raw){const policy=raw?.trim().toLowerCase().replaceAll("_","-"),dryRun=policy?.startsWith("preview-")===!0,operation=dryRun?policy.slice(8):policy;if(operation==="add"||operation==="remove"||operation==="clear")return{operation,dryRun};throw new PmCliError("Config set agent-identity-vocabulary requires --policy add|remove|clear|preview-add|preview-remove|preview-clear",EXIT_CODE.USAGE)}function parseAgentIdentityVocabularyMutationValue(operation,value){if(operation==="add"){const separator=value?.lastIndexOf("=")??-1;if(separator<=0||separator===value.length-1)throw new PmCliError('Config set agent-identity-vocabulary --policy add requires --value "<legacy-author>=<canonical-harness>"',EXIT_CODE.USAGE);return{legacy_author:value.slice(0,separator),canonical_harness:value.slice(separator+1)}}if(operation==="remove"){if(value===void 0)throw new PmCliError("Config set agent-identity-vocabulary --policy remove requires --value <legacy-author>",EXIT_CODE.USAGE);return{legacy_author:value}}if(value!==void 0)throw new PmCliError("Config set agent-identity-vocabulary --policy clear does not accept --value",EXIT_CODE.USAGE);return{}}async function setAgentIdentityVocabularyConfig(context,options){const{operation,dryRun}=parseAgentIdentityVocabularyOperation(options.policy),mutationValue=parseAgentIdentityVocabularyMutationValue(operation,options.value);let planned;try{planned=planAgentIdentityVocabularyMutation(context.settings.agent_identity?.identity_vocabulary,{operation,...mutationValue,observed_authors:options.criterion})}catch(error){throw new PmCliError(error.message,EXIT_CODE.USAGE)}return planned.preview.changed&&!dryRun&&(context.settings.agent_identity={...context.settings.agent_identity,identity_vocabulary:planned.vocabulary},await writeConfigSettingsIfChanged(context,!0,`config:set:agent_identity.identity_vocabulary:${operation}:v${planned.preview.version_after}`,["agent_identity"])),withWarnings({scope:context.scope,key:"agent_identity_vocabulary",identity_vocabulary:summarizeAgentIdentityVocabulary(dryRun?context.settings.agent_identity?.identity_vocabulary:planned.vocabulary),vocabulary_mutation:planned.preview,settings_path:context.target.settingsPath,changed:planned.preview.changed&&!dryRun},context.warnings)}async function setConfigValue(context,key,options){const result=await dispatchConfigSetValue(context,key,options);return context.fallbackRepairWritten===!0?{...result,changed:!0}:result}async function dispatchConfigSetValue(context,key,options){if(options.clearCriteria===!0&&!isCriteriaConfigKey(key))throw new PmCliError("--clear-criteria is only supported with config set criteria-list keys",EXIT_CODE.USAGE);return key==="item_format"?setItemFormatConfig(context,options):key==="context"?applyContextConfig(context.settings,options,context.target,context.scope,context.warnings):key==="agent_identity_vocabulary"?setAgentIdentityVocabularyConfig(context,options):key==="definition_of_done"?setDefinitionOfDoneConfig(context,key,options):isCriteriaValueConfigKey(key)?setCriteriaConfig(context,key,options):TRACKING_CONFIG_KEYS.has(key)?setTrackingConfig(context,key,options):GOVERNANCE_BOOLEAN_CONFIG_KEYS.has(key)?setGovernanceBooleanConfig(context,key,options):isGovernancePolicyConfigKey(key)?setGovernancePolicyConfig(context,key,options):isGovernanceValidationConfigKey(key)?setGovernanceValidationConfig(context,key,options):isGovernancePresetOrTypeConfigKey(key)?setGovernancePresetOrTypeConfig(context,key,options):setValidationConfig(context,key,options)}async function runConfig(scopeValue,actionValue,keyValue,options,global2,valueValue){const scope=normalizeScope(scopeValue),action=normalizeAction(actionValue),nestedSetting=action==="get"||action==="set"?resolveNestedSettingDescriptor(keyValue):void 0,key=nestedSetting?void 0:normalizeKeyForAction(action,keyValue),routedOptions=applyPositionalValue(action,keyValue,key,nestedSetting,valueValue,options),target=await resolveSettingsTarget(scope,global2),{settings,metadata,warnings:settingsReadWarnings}=await readSettingsWithMetadata(target.pmRoot),context={scope,target,settings,metadata,warnings:normalizeWarnings(settingsReadWarnings)};return nestedSetting?buildNestedSettingResult(context,action,nestedSetting,routedOptions):action==="list"?buildConfigListResult(context):action==="export"?buildConfigExportResult(context):(assertConfigKeyDefined(key),action==="get"&&key==="telemetry_tracking"&&scope==="project"&&refuseProjectTelemetryTracking("get",""),action==="get"?buildConfigGetResult(context,key):setConfigValue(context,key,routedOptions))}const _testOnlyConfigCommand={hasGovernanceValidationMirrorChange,applyPositionalValue,normalizeAction,normalizeCriteria,normalizeGovernanceCloseValidationDefault,normalizeGovernanceCreateModeDefault,normalizeGovernanceForceRequiredForStaleLockPolicy,normalizeGovernanceOwnershipEnforcement,normalizeGovernancePreset,normalizeGovernanceRequireCloseReasonPolicy,normalizeGovernanceWorkflowEnforcement,normalizeHistoryMissingStreamPolicy,normalizeItemFormat,normalizeKey,normalizeMetadataRequiredFields,normalizePolicyForConflict,normalizeScope,normalizeTelemetryTrackingPolicy,normalizeTestResultTrackingPolicy,normalizeValidateMetadataProfile,normalizeWarnings};export{_testOnlyConfigCommand,runConfig};
|
|
2
2
|
//# sourceMappingURL=config.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
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]="
|
|
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]="2b3d7667-1c63-565a-b314-3a74cc8d6b7d")}catch{}})();import fs from"node:fs";import path from"node:path";import{createRequire}from"node:module";import{EXIT_CODE}from"../../core/shared/constants.js";import{PmCliError}from"../../core/shared/errors.js";const PACKAGE_NAME="@unbrained/pm-cli",MUTATING_COMMANDS=new Set(["append","claim","changelog","close","close-many","close-task","comments","config","copy","create","dedupe-merge","delete","deps","docs","extension","event","events","files","focus","gc","history-author-acknowledge","history-compact","history-redact","history-repair","init","install","item","learnings","meet","merge","normalize","notes","package","packages","pause-task","plan","profile","reindex","release","remind","restore","schema","start-task","test","test-all","test-runs","test-runs-worker","telemetry","templates","twin","update","update-many","upgrade","vcs","workspace"]),GLOBAL_VALUE_FLAGS=new Set(["--author","--expect-hash","--output-budget","--output-format","--output-include","--output-limit","--output-session","--path","--pm-path"]),VERSION_PATTERN=/\b(\d{4})\.(\d{1,2})\.(\d{1,2})(?:-(\d+))?\b/u,HISTORY_ITEM_HASH_VERSION_3_INTRODUCED_IN="2026.8.31";function hasAnyToken(argv,tokens){return argv.some(token=>tokens.includes(token.split("=",1)[0]))}function isPackageMutation(argv,positionals){return["activate","adopt","adopt-all","deactivate","init","install","migrate","reload","uninstall"].includes(positionals[0]??"")||hasAnyToken(argv,["--activate","--adopt","--adopt-all","--deactivate","--fix-managed-state","--init","--install","--output","--reload","--scaffold","--uninstall"])}const MIXED_COMMAND_CLASSIFIERS={changelog:(argv,positionals)=>{if(positionals[0]==="generate")return!hasAnyToken(argv,["--check"]);const exportIndex=argv.indexOf("export");return positionals[0]==="export"&&(hasAnyToken(argv,["--output"])||exportIndex>=0&&argv[exportIndex+1]!==void 0&&!argv[exportIndex+1].startsWith("-"))},comments:argv=>hasAnyToken(argv,["--add","--delete","--edit","--file","--stdin"]),config:(_argv,positionals)=>(positionals[0]==="project"||positionals[0]==="global"?positionals[1]:positionals[0])==="set",deps:()=>!1,docs:argv=>hasAnyToken(argv,["--add","--add-glob","--migrate","--remove"]),duplicates:()=>!1,events:()=>!1,extension:isPackageMutation,files:(argv,positionals)=>hasAnyToken(argv,["--add","--add-glob","--migrate","--remove"])||positionals[0]==="discover"&&hasAnyToken(argv,["--apply"]),health:argv=>!hasAnyToken(argv,["--check-only","--no-refresh","--skip-vectors"]),learnings:argv=>hasAnyToken(argv,["--add","--delete","--edit","--file","--stdin"]),merge:(_argv,positionals)=>positionals[0]!=="report",notes:argv=>hasAnyToken(argv,["--add","--delete","--edit","--file","--stdin"]),package:isPackageMutation,packages:isPackageMutation,profile:(_argv,positionals)=>positionals[0]==="apply",schema:(argv,positionals)=>["add-field","add-status","add-type","remove-field","remove-status","remove-type","remap-status","rename-field","rename-type"].includes(positionals[0]??"")&&!(hasAnyToken(argv,["--infer"])&&!hasAnyToken(argv,["--apply"])),telemetry:(_argv,positionals)=>positionals.slice(0,2).some(token=>["clear","flush"].includes(token)),templates:(_argv,positionals)=>positionals[0]==="save",test:argv=>hasAnyToken(argv,["--update","--update-index","--add","--add-json","--background","--measure","--remove","--resume","--run","--stop"]),validate:argv=>hasAnyToken(argv,["--auto-fix","--prune-missing"]),vcs:(_argv,positionals)=>["abandon","create","merge","propose","ref-create"].includes(positionals[0]??""),workspace:(_argv,positionals)=>positionals[0]==="snapshot"&&["create","delete","restore"].includes(positionals[1]??"")};function parseDateVersion(value){const match=value.match(VERSION_PATTERN);return match?[Number(match[1]),Number(match[2]),Number(match[3]),Number(match[4]??0)]:null}function comparePmDateVersions(left,right){const leftParts=parseDateVersion(left),rightParts=parseDateVersion(right);if(!leftParts||!rightParts)return null;for(let index=0;index<leftParts.length;index+=1){const delta=leftParts[index]-rightParts[index];if(delta!==0)return Math.sign(delta)}return 0}function historyItemHashVersionForRuntime(version){return comparePmDateVersions(version,HISTORY_ITEM_HASH_VERSION_3_INTRODUCED_IN)!==-1?3:2}function findIncompatibleHistoryEpochPin(pins,writerItemHashVersion){if(writerItemHashVersion===3)return pins.filter(pin=>pin.history_epoch_compatible===!1).map(pin=>({...pin,declaration:pin.declaration??pin.version})).sort((left,right)=>comparePmDateVersions(left.version,right.version))[0]}function readJsonRecord(filePath){try{const parsed=JSON.parse(fs.readFileSync(filePath,"utf8"));return typeof parsed=="object"&&parsed!==null&&!Array.isArray(parsed)?parsed:null}catch{return null}}function rangeUpperBounds(alternative){const comparators=[...alternative.matchAll(/(<=|<)\s*v?(\d{4}\.\d{1,2}\.\d{1,2}(?:-\d+)?)/gu)].map(match=>({inclusive:match[1]==="<=",version:match[2]})),hyphen=alternative.match(/\b\d{4}\.\d{1,2}\.\d{1,2}(?:-\d+)?\s+-\s+v?(\d{4}\.\d{1,2}\.\d{1,2}(?:-\d+)?)/u);return hyphen?[...comparators,{inclusive:!0,version:hyphen[1]}]:comparators}function analyzeHistoryEpochRange(specification){const alternativeBounds=specification.split("||").map(alternative=>rangeUpperBounds(alternative));return{bounded:alternativeBounds.some(bounds=>bounds.length>0),compatible:alternativeBounds.some(bounds=>bounds.every(bound=>{const comparison=comparePmDateVersions(HISTORY_ITEM_HASH_VERSION_3_INTRODUCED_IN,bound.version);return comparison!==null&&(bound.inclusive?comparison!==1:comparison===-1)}))}}function dependencyDeclarations(packageJson){return["dependencies","devDependencies","optionalDependencies","peerDependencies"].flatMap(field=>{const dependencies=packageJson[field];if(typeof dependencies!="object"||dependencies===null)return[];const value=dependencies[PACKAGE_NAME];return typeof value=="string"?[value.trim()]:[]})}function dependencyPins(packageJson){return dependencyDeclarations(packageJson).flatMap(specification=>{const version=/^[<!]/u.test(specification)?void 0:specification.match(VERSION_PATTERN)?.[0];if(!version)return[];const exact=/^(?:=|v)?\d{4}\.\d{1,2}\.\d{1,2}(?:-\d+)?$/u.test(specification),range=analyzeHistoryEpochRange(specification);return[{version,constraint:exact?"exact":range.bounded?"range":"minimum",...exact?{}:{declaration:specification},history_epoch_compatible:exact?comparePmDateVersions(version,HISTORY_ITEM_HASH_VERSION_3_INTRODUCED_IN)!==-1:range.compatible}]})}function packageLockPin(projectRoot){const packages=readJsonRecord(path.join(projectRoot,"package-lock.json"))?.packages;if(typeof packages!="object"||packages===null)return;const installed=packages["node_modules/@unbrained/pm-cli"];if(typeof installed!="object"||installed===null)return;const version=installed.version;return typeof version=="string"?version:void 0}function textLockPin(projectRoot,file){try{const lines=fs.readFileSync(path.join(projectRoot,file),"utf8").split(/\r?\n/u),packageLineIndex=lines.findIndex(line=>line.includes(PACKAGE_NAME));if(packageLineIndex<0)return;const packageIndent=lines[packageLineIndex].match(/^\s*/u)[0].length,entry=[lines[packageLineIndex]];for(let index=packageLineIndex+1;index<lines.length;index+=1){const line=lines[index],trimmed=line.trim(),indent=line.match(/^\s*/u)[0].length;if(trimmed.length>0&&indent<=packageIndent)break;entry.push(line)}return entry.join(`
|
|
2
2
|
`).match(/^\s*version(?::\s*|\s+)["']?(\d{4}\.\d{1,2}\.\d{1,2}(?:-\d+)?)/mu)?.[1]??entry[0].match(VERSION_PATTERN)?.[0]}catch{return}}function discoverProjectRuntimeVersionPins(projectRoot){const pins=[],projectPackage=readJsonRecord(path.join(projectRoot,"package.json"));projectPackage&&pins.push(...dependencyPins(projectPackage).map(pin=>({...pin,source:"package.json"})));const installedVersion=readJsonRecord(path.join(projectRoot,"node_modules","@unbrained","pm-cli","package.json"))?.version;typeof installedVersion=="string"&&parseDateVersion(installedVersion)&&pins.push({version:installedVersion,source:"installed-package",constraint:"exact",history_epoch_compatible:historyItemHashVersionForRuntime(installedVersion)===3});const packageLockVersion=packageLockPin(projectRoot);packageLockVersion&&parseDateVersion(packageLockVersion)&&pins.push({version:packageLockVersion,source:"package-lock.json",constraint:"exact",history_epoch_compatible:historyItemHashVersionForRuntime(packageLockVersion)===3});for(const file of["pnpm-lock.yaml","yarn.lock"]){const version=textLockPin(projectRoot,file);version&&pins.push({version,source:file,constraint:"exact",history_epoch_compatible:historyItemHashVersionForRuntime(version)===3})}return pins}function assertProjectRuntimeFormatGuard(projectRoot,formatVersion){if(formatVersion<=1)return;const{minVersion,lt}=createRequire(import.meta.url)("semver"),declaration=dependencyDeclarations(readJsonRecord(path.join(projectRoot,"package.json"))??{}).find(specification=>{try{const minimum=minVersion(specification);return minimum!==null&<(minimum,"2026.10.10")}catch{return!1}}),incompatible=declaration===void 0?discoverProjectRuntimeVersionPins(projectRoot).find(pin=>comparePmDateVersions(pin.version,"2026.10.10")===-1):{version:declaration,source:"package.json"};if(incompatible)throw new PmCliError(`The project selects pm ${incompatible.version}, which cannot safely refuse item format ${formatVersion}.`,EXIT_CODE.CONFLICT,{code:"project_runtime_item_format_incompatible",reason:incompatible.source,required:"Upgrade project pins, installed SDKs, CI hosts and Git merge drivers before writing guarded item formats.",nextSteps:["Use a pm runtime supporting the required item format throughout the project; preserve original item and history bytes, and never re-anchor history to satisfy an older host."]})}function commandTokenFromArgv(argv){for(let index=0;index<argv.length;index+=1){const token=argv[index];if(GLOBAL_VALUE_FLAGS.has(token)){index+=1;continue}if(!token.startsWith("-"))return{command:token.toLowerCase(),index}}}function isProjectMutatingInvocation(argv){const commandToken=commandTokenFromArgv(argv);if(!commandToken||hasAnyToken(argv,["--help","-h","--dry-run"]))return!1;const{command,index:commandIndex}=commandToken,positionals=[];for(let index=commandIndex+1;index<argv.length;index+=1){const token=argv[index];if(GLOBAL_VALUE_FLAGS.has(token)){index+=1;continue}token.startsWith("-")||positionals.push(token.toLowerCase())}const mixedClassifier=MIXED_COMMAND_CLASSIFIERS[command];return mixedClassifier?mixedClassifier(argv,positionals):MUTATING_COMMANDS.has(command)}function inspectProjectRuntimeCompatibility(options){const command=commandTokenFromArgv(options.argv)?.command,mutating=isProjectMutatingInvocation(options.argv),pins=discoverProjectRuntimeVersionPins(options.projectRoot).filter(pin=>comparePmDateVersions(pin.version,options.executingVersion)!==null).sort((left,right)=>comparePmDateVersions(right.version,left.version)),newest=pins[0],stale=newest!==void 0&&comparePmDateVersions(options.executingVersion,newest.version)===-1,writerItemHashVersion=historyItemHashVersionForRuntime(options.executingVersion),incompatibleEpochPin=findIncompatibleHistoryEpochPin(pins,writerItemHashVersion),historyEpochIncompatible=mutating&&incompatibleEpochPin!==void 0,warning=stale&&!mutating?{code:"project_runtime_stale_read",executing_version:options.executingVersion,project_version:newest.version,source:newest.source,message:"This read is using an older pm runtime than the project requires.",next_steps:[`Run the command through the project's installed ${PACKAGE_NAME} ${newest.version}.`,"Install the project dependencies with its declared package manager if the local executable is missing."]}:void 0;return{compatible:!mutating||!stale&&!historyEpochIncompatible||options.allowStale===!0,executing_version:options.executingVersion,...newest?{project_version:newest.version,source:newest.source}:{},...command?{command}:{},mutating,stale,history_epoch_incompatible:historyEpochIncompatible,writer_item_hash_version:writerItemHashVersion,...incompatibleEpochPin?{incompatible_project_version:incompatibleEpochPin.declaration,incompatible_source:incompatibleEpochPin.source}:{},...warning?{warning}:{},override_applied:mutating&&(stale||historyEpochIncompatible)&&options.allowStale===!0}}function assertProjectRuntimeCompatibility(options){const result=inspectProjectRuntimeCompatibility(options);if(result.compatible)return result;throw result.history_epoch_incompatible?new PmCliError(`pm ${result.executing_version} cannot write item-hash epoch ${result.writer_item_hash_version} into a project pinned to pm ${result.incompatible_project_version}.`,EXIT_CODE.CONFLICT,{code:"project_runtime_history_epoch_incompatible",reason:result.incompatible_source,why:`The pinned runtime cannot read item_hash_version ${result.writer_item_hash_version}; allowing the write would break its health and validation gates.`,nextSteps:[`Upgrade the project's ${PACKAGE_NAME} pin to ${HISTORY_ITEM_HASH_VERSION_3_INTRODUCED_IN} or newer before mutating tracker history.`,"For an intentional coordinated migration only, set PM_ALLOW_STALE_CLI=1 for this invocation and record why.","Read-only commands remain available without an override."]}):new PmCliError(`pm ${result.executing_version} cannot mutate a project pinned to newer pm ${result.project_version}.`,EXIT_CODE.CONFLICT,{code:"project_runtime_stale_mutation",reason:result.source,why:"An older runtime can write storage, history, and merge contracts it does not understand.",nextSteps:[`Run this command through the project's installed ${PACKAGE_NAME} ${result.project_version}.`,"For an intentional recovery only, set PM_ALLOW_STALE_CLI=1 for this invocation and record why.","Read-only commands remain available without an override."]})}export{HISTORY_ITEM_HASH_VERSION_3_INTRODUCED_IN,PmCliError,assertProjectRuntimeCompatibility,assertProjectRuntimeFormatGuard,comparePmDateVersions,discoverProjectRuntimeVersionPins,historyItemHashVersionForRuntime,inspectProjectRuntimeCompatibility,isProjectMutatingInvocation};
|
|
3
3
|
//# sourceMappingURL=project-runtime-compatibility.js.map
|
|
@@ -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]="864fc253-9091-5897-acf3-8634fd31560b")}catch{}})();const PM_ERROR_CODE_CATALOG_PART_1=[{code:"acceptance_criteria_mutation_conflict",exit_code:2,sources:["sdk/lifecycle/update.ts"],emitting_commands:["update","update-many"]},{code:"acceptance_criteria_remove_unmatched",exit_code:3,sources:["sdk/lifecycle/update-many.ts","sdk/lifecycle/update.ts"],emitting_commands:["update","update-many"]},{code:"acceptance_criteria_semicolon_forbidden",exit_code:2,stable:!0,sources:["core/item/parse.ts"]},{code:"accepted_rejected_value",exit_code:1,sources:["sdk/agent/refusal-closure.ts"]},{code:"alias_collision",exit_code:1,sources:["sdk/cli-contracts/flag-lexicon-contracts.ts"]},{code:"alias_target_missing",exit_code:1,sources:["sdk/cli-contracts/grammar-contracts.ts"]},{code:"already_claimed_by",exit_code:4,stable:!0,sources:["sdk/lifecycle/claim.ts"],emitting_commands:["claim"]},{code:"ambiguous_option_combination",exit_code:2,stable:!0,sources:["sdk/lifecycle/claim.ts","sdk/lifecycle/plan.ts"],emitting_commands:["claim","plan"]},{code:"annotation_alias_conflict",exit_code:2,sources:["cli/register-annotations.ts"]},{code:"annotation_flag_like_value",exit_code:2,stable:!0,sources:["sdk/annotations.ts"]},{code:"annotation_if_absent_without_append",exit_code:2,sources:["sdk/annotations.ts"]},{code:"annotation_message_without_text",exit_code:2,stable:!0,sources:["sdk/annotations.ts"]},{code:"annotation_transposed_subcommand",exit_code:2,sources:["cli/register-annotations.ts"]},{code:"append_empty_body",exit_code:2,stable:!0,sources:["sdk/lifecycle/append.ts"],emitting_commands:["append"]},{code:"assurance_registry_invalid",exit_code:1,sources:["sdk/governance/assurance.ts"]},{code:"bare_comma_entry_ambiguous",exit_code:2,sources:["core/item/parse.ts"]},{code:"blocker_identity_read_failed",exit_code:1,sources:["sdk/query/get.ts"],emitting_commands:["get"]},{code:"body_file_conflicts_with_body",exit_code:2,stable:!0,sources:["core/io/body-file.ts"]},{code:"body_file_missing_path",exit_code:2,stable:!0,sources:["core/io/body-file.ts"]},{code:"body_file_unreadable",exit_code:3,stable:!0,sources:["core/io/body-file.ts"]},{code:"budget_exceeded",exit_code:1,sources:["sdk/cli-contracts/flag-lexicon-contracts.ts"]},{code:"bulk_create_route",exit_code:2,sources:["cli/register-mutation.ts"]},{code:"bulk_ids_input_empty",exit_code:2,sources:["core/io/bulk-ids-input.ts","sdk/history-compact.ts","sdk/history-mcp.ts"],owned_states:[{state:"bulk_ids_stdin_contains_no_nonempty_ids",probe_id:"bulk-ids-stdin-empty",entrypoints:["update-many"],expected_exit_class:"usage"}]},{code:"bulk_ids_input_missing_path",exit_code:2,sources:["core/io/bulk-ids-input.ts"],owned_states:[{state:"bulk_ids_file_token_omits_its_path",probe_id:"bulk-ids-file-path-missing",entrypoints:["update-many"],expected_exit_class:"usage"}]},{code:"bulk_ids_input_unreadable",exit_code:3,sources:["core/io/bulk-ids-input.ts"],owned_states:[{state:"bulk_ids_file_path_cannot_be_read",probe_id:"bulk-ids-file-unreadable",entrypoints:["update-many"],expected_exit_class:"not_found"}]},{code:"bundle_integrity_torn_install",exit_code:1,stable:!0,sources:["cli/bundle-integrity.ts"]},{code:"capability_undeclared",exit_code:1,stable:!0,sources:["sdk/compose.ts"]},{code:"capability_unused",exit_code:1,stable:!0,sources:["sdk/compose.ts"]},{code:"child_projection_item_bound_exceeded",exit_code:1,stable:!0,sources:["sdk/item-children.ts"]},{code:"close_reason_required",exit_code:2,stable:!0,sources:["sdk/lifecycle-policy.ts","sdk/lifecycle/close-many.ts"],emitting_commands:["*","close-many"]},{code:"close_through_update",exit_code:1,stable:!0,sources:["core/telemetry/observability.ts"]},{code:"close_validation_missing_fields",exit_code:2,stable:!0,sources:["sdk/lifecycle/close.ts"],emitting_commands:["close"]},{code:"collected_zero_items",exit_code:1,stable:!0,sources:["sdk/test/execution-receipts.ts"]},{code:"collection_transposed_subcommand",exit_code:2,sources:["cli/error-guidance.ts"]},{code:"command_failed",exit_code:1,stable:!0,sources:["cli/error-guidance.ts"]},{code:"command_namespace",exit_code:2,stable:!0,sources:["sdk/cli-contracts/runtime-contracts.ts"]},{code:"command_override_conflict",exit_code:4,stable:!0,sources:["sdk/compose.ts"]},{code:"config_duplicate",exit_code:1,stable:!0,sources:["core/profile/profile-lint.ts"]},{code:"config_key_unknown",exit_code:2,stable:!0,sources:["core/profile/profile-lint.ts"]},{code:"config_value_invalid",exit_code:2,stable:!0,sources:["core/profile/profile-lint.ts"]},{code:"conflicting_lifecycle_owner",exit_code:2,stable:!0,sources:["cli/register-operations.ts"]},{code:"context_evaluation_read_incomplete",exit_code:2,sources:["sdk/context-relevance.ts"]},{code:"context_signal_store_invalid",exit_code:2,sources:["sdk/context-signal-store.ts"]},{code:"context_signal_store_stale",exit_code:1,sources:["sdk/context-signal-store.ts"]},{code:"context_signal_store_write_failed",exit_code:1,sources:["sdk/context-signal-store.ts"]},{code:"context_takes_no_item_argument",exit_code:1,stable:!0,sources:["cli/error-guidance.ts"]},{code:"core_item_field_requires_dedicated_flag",exit_code:2,stable:!0,sources:["core/extensions/item-fields.ts"]},{code:"create_positional_type_without_title",exit_code:2,stable:!0,sources:["cli/register-mutation.ts"]},{code:"dependency_cardinality_created",exit_code:2,sources:["sdk/graph/cardinality-integrity.ts"]},{code:"dependency_edge_not_allowed",exit_code:2,stable:!0,sources:["sdk/dependency-flag-validation.ts"]},{code:"dependency_flag_value_invalid",exit_code:2,sources:["sdk/dependency-flag-validation.ts"]},{code:"dependency_remove_no_match",exit_code:3,sources:["sdk/lifecycle/update.ts"],emitting_commands:["update"]},{code:"dependency_target_not_found",exit_code:3,sources:["sdk/dependency-flag-validation.ts"]},{code:"dependency_temporal_order_invalid",exit_code:2,sources:["sdk/dependency-flag-validation.ts"]},{code:"duplicate_canonical_flag",exit_code:1,sources:["sdk/cli-contracts/flag-lexicon-contracts.ts"]},{code:"duplicate_command",exit_code:1,stable:!0,sources:["sdk/compose.ts"]},{code:"duplicate_destination",exit_code:1,sources:["sdk/cli-contracts/grammar-contracts.ts"]},{code:"duplicate_edge",exit_code:1,stable:!0,sources:["sdk/graph/remediation.ts"]},{code:"duplicate_observation",exit_code:1,sources:["sdk/flag-invocation-contracts.ts"]},{code:"duplicate_probe",exit_code:1,sources:["sdk/agent/refusal-closure.ts"]},{code:"duplicate_sweep_cost_limit",exit_code:4,stable:!0,sources:["sdk/query/duplicate-candidates.ts"],emitting_commands:["duplicate-candidates"]},{code:"duplicate_target_circular",exit_code:2,stable:!0,sources:["sdk/lifecycle/close.ts"],emitting_commands:["close"]},{code:"duplicate_target_is_duplicate",exit_code:2,stable:!0,sources:["sdk/lifecycle/close.ts"],emitting_commands:["close"]},{code:"duplicate_target_missing",exit_code:2,stable:!0,sources:["sdk/lifecycle/close.ts"],emitting_commands:["close"]},{code:"duplicate_target_self",exit_code:2,stable:!0,sources:["sdk/lifecycle/close.ts"],emitting_commands:["close"]},{code:"empty_corpus",exit_code:1,sources:["sdk/agent/refusal-closure.ts"]},{code:"empty_surface",exit_code:1,stable:!0,sources:["sdk/compose.ts"]},{code:"error_code_mismatch",exit_code:1,sources:["sdk/agent/refusal-closure.ts","sdk/agent/tracker-preflight-contracts.ts"]},{code:"event_cursor_query_mismatch",exit_code:2,stable:!0,sources:["sdk/mutation-events.ts"]},{code:"event_history_integrity_failed",exit_code:1,sources:["core/history/event-index.ts"]},{code:"event_index_unavailable",exit_code:1,stable:!0,sources:["sdk/mutation-events.ts"]},{code:"exit_code_mismatch",exit_code:1,sources:["sdk/agent/tracker-preflight-contracts.ts"]},{code:"extension_command_activation_failed",exit_code:1,stable:!0,sources:["cli/commander-usage.ts"]},{code:"extension_dependency_name_unsafe",exit_code:2,stable:!0,sources:["sdk/extension/install-sources.ts"]},{code:"extension_dependency_spec_invalid",exit_code:2,stable:!0,sources:["sdk/extension/install-sources.ts"]},{code:"extension_dependency_version_unsafe",exit_code:2,stable:!0,sources:["sdk/extension/install-sources.ts"]},{code:"extension_flag_value_invalid",exit_code:2,sources:["cli/extension-command-options.ts"]},{code:"extension_install_incomplete_source_scan",exit_code:2,sources:["sdk/extension/install-plan.ts"]},{code:"extension_install_rollback_failed",exit_code:1,sources:["sdk/extension/install-snapshot.ts"]},{code:"extension_install_soft_failed",exit_code:1,stable:!0,sources:["cli/register-setup.ts"]},{code:"extension_install_source_contains_destination",exit_code:2,stable:!0,sources:["sdk/extension/install-runtime.ts"]},{code:"extension_item_field_reserved",exit_code:2,stable:!0,sources:["core/extensions/item-fields.ts"]},{code:"extension_item_field_type_conflict",exit_code:2,stable:!0,sources:["core/extensions/item-fields.ts"]},{code:"extension_item_field_unknown",exit_code:2,stable:!0,sources:["core/extensions/item-fields.ts"]},{code:"extension_mutation_guard_failed",exit_code:4,stable:!0,sources:["core/extensions/extension-hook-runtime.ts"]},{code:"extension_mutation_guard_invalid_decision",exit_code:4,stable:!0,sources:["core/extensions/extension-hook-runtime.ts"]},{code:"extension_mutation_guard_invalid_denial",exit_code:4,stable:!0,sources:["core/extensions/extension-hook-runtime.ts"]},{code:"extension_mutation_guard_timed_out",exit_code:4,stable:!0,sources:["core/extensions/extension-hook-runtime.ts"]},{code:"extension_read_output_invalid",exit_code:2,sources:["sdk/read-output/extension.ts"]},{code:"extension_update_health_partial_coverage",exit_code:1,stable:!0,sources:["core/diagnostics/remediation.ts"]},{code:"extensions_unreadable",exit_code:1,sources:["sdk/extension/static-inventory.ts"]},{code:"field_duplicate",exit_code:1,stable:!0,sources:["core/profile/profile-lint.ts"]},{code:"field_invalid",exit_code:2,stable:!0,sources:["core/profile/profile-lint.ts"]},{code:"field_mcp_input_collision",exit_code:1,stable:!0,sources:["core/profile/profile-lint.ts"]},{code:"github_source_entry_unbuilt",exit_code:2,stable:!0,sources:["sdk/extension/shared.ts"]},{code:"hierarchy_cardinality_created",exit_code:4,sources:["sdk/graph/hierarchy-integrity.ts"]},{code:"hierarchy_cycle_created",exit_code:4,sources:["sdk/graph/hierarchy-integrity.ts"]},{code:"hierarchy_parent_divergence_created",exit_code:4,sources:["sdk/graph/hierarchy-integrity.ts"]},{code:"history_author_acknowledge_plan_conflict",exit_code:4,sources:["sdk/author-attribution.ts"]},{code:"history_author_acknowledge_plan_fingerprint_required",exit_code:2,sources:["sdk/author-attribution.ts"]},{code:"history_author_acknowledge_preview_limit_invalid",exit_code:2,sources:["sdk/author-attribution.ts"]},{code:"history_author_acknowledge_required_values_missing",exit_code:2,sources:["sdk/author-attribution.ts"]},{code:"history_author_acknowledge_selector_conflict",exit_code:2,sources:["sdk/author-attribution.ts"]},{code:"history_author_acknowledge_selector_required",exit_code:2,stable:!0,sources:["sdk/author-attribution.ts"]},{code:"history_author_acknowledge_target_not_actionable",exit_code:2,sources:["sdk/author-attribution.ts"]},{code:"history_author_acknowledge_target_unreadable",exit_code:2,sources:["sdk/author-attribution.ts"]},{code:"history_baseline_unavailable",exit_code:1,sources:["core/history/projection.ts"]},{code:"history_drift_chain_mismatch",exit_code:1,stable:!0,sources:["core/diagnostics/remediation.ts"],aliases:["validate_history_drift_chain_mismatches"]},{code:"history_drift_hash_mismatch",exit_code:1,stable:!0,sources:["core/diagnostics/remediation.ts"],aliases:["validate_history_drift_hash_mismatches"]},{code:"history_drift_merge_receipt",exit_code:1,sources:["core/diagnostics/remediation.ts"]},{code:"history_drift_missing_stream",exit_code:1,stable:!0,sources:["core/diagnostics/remediation.ts"],aliases:["validate_history_drift_missing_streams"]},{code:"history_drift_unreadable_stream",exit_code:1,stable:!0,sources:["core/diagnostics/remediation.ts"],aliases:["validate_history_drift_unreadable_streams"]},{code:"history_drift_version_skew",exit_code:1,stable:!0,sources:["core/diagnostics/remediation.ts"],aliases:["validate_history_drift_version_skews"]},{code:"history_json_invalid",exit_code:1,sources:["core/history/read.ts"]},{code:"history_merge_conflict_markers_detected",exit_code:1,stable:!0,sources:["core/history/read.ts"],canonical_code:"merge_conflict_markers_detected"},{code:"history_replay_invalid",exit_code:1,sources:["core/history/projection.ts","core/history/tombstone.ts"]},{code:"history_salvage_refused",exit_code:4,sources:["sdk/history/salvage.ts"]},{code:"history_stream_over_compact_threshold",exit_code:1,stable:!0,sources:["core/diagnostics/remediation.ts"]},{code:"history_target_out_of_range",exit_code:1,stable:!0,sources:["core/history/projection.ts"]},{code:"history_timestamp_invalid",exit_code:1,sources:["core/history/event-index.ts","core/history/history.ts"]},{code:"history_union_rebase_conflict",exit_code:4,sources:["sdk/merge/history-scalar-rebase.ts"]},{code:"history_unknown_author_events",exit_code:2,stable:!0,sources:["core/diagnostics/remediation.ts"],aliases:["validate_history_unknown_author_events"]},{code:"history_version_mapping_unavailable",exit_code:2,sources:["core/history/version-address.ts"]},{code:"history_version_pruned",exit_code:2,sources:["core/history/projection.ts"]},{code:"host_environment_capacity_fault",exit_code:1,sources:["core/fs/host-environment-errors.ts"]},{code:"host_environment_operation_invalid",exit_code:2,sources:["core/fs/host-environment-errors.ts"]},{code:"host_environment_permission_fault",exit_code:1,sources:["core/fs/host-environment-errors.ts"]},{code:"host_environment_resource_fault",exit_code:1,sources:["core/fs/host-environment-errors.ts"]},{code:"improvement_metric_contract_conflict",exit_code:4,sources:["sdk/improvement-ledger.ts"]},{code:"improvement_observation_conflict",exit_code:4,sources:["sdk/improvement-ledger.ts"]},{code:"incomplete_allowed_values",exit_code:1,sources:["sdk/agent/refusal-closure.ts"]},{code:"inconsistent_concept_kind",exit_code:1,sources:["sdk/cli-contracts/flag-lexicon-contracts.ts"]},{code:"init_existing_settings_requires_force",exit_code:2,stable:!0,sources:["sdk/init.ts"]},{code:"init_gitignore_unwritable",exit_code:1,stable:!0,sources:["sdk/workspace.ts"]},{code:"init_id_prefix_conflict",exit_code:2,stable:!0,sources:["sdk/init.ts"]},{code:"init_id_prefix_path_like",exit_code:2,stable:!0,sources:["sdk/init.ts"]},{code:"integrity_history_conflict_marker",exit_code:4,stable:!0,sources:["core/diagnostics/remediation.ts"],aliases:["validate_storage_history_conflict_markers"]},{code:"integrity_history_invalid_json",exit_code:2,stable:!0,sources:["core/diagnostics/remediation.ts"]},{code:"integrity_history_unreadable",exit_code:1,stable:!0,sources:["core/diagnostics/remediation.ts"]},{code:"integrity_item_ahead_format_version",exit_code:1,stable:!0,sources:["core/diagnostics/remediation.ts"],aliases:["validate_format_version_ahead_items"]},{code:"integrity_item_conflict_marker",exit_code:4,stable:!0,sources:["core/diagnostics/remediation.ts"]},{code:"integrity_item_outdated_format_version",exit_code:1,stable:!0,sources:["core/diagnostics/remediation.ts"],aliases:["validate_format_version_outdated_items"]},{code:"integrity_item_parse_failed",exit_code:1,stable:!0,sources:["core/diagnostics/remediation.ts"]},{code:"integrity_item_unreadable",exit_code:1,stable:!0,sources:["core/diagnostics/remediation.ts"]},{code:"invalid_argument_value",exit_code:2,stable:!0,sources:["cli/error-guidance.ts","core/item/priority.ts","core/telemetry/observability.ts","sdk/context-intent-contracts.ts","sdk/dependencies.ts","sdk/governance/assurance-mutation-error.ts","sdk/lifecycle/create.ts","sdk/lifecycle/task-composition.ts","sdk/lifecycle/update-many.ts","sdk/lifecycle/update.ts","sdk/query/next.ts","sdk/runtime-input.ts","sdk/runtime/mutation-admission.ts","sdk/runtime/mutation-value-validation.ts","sdk/runtime/schema-preview.ts","sdk/workspace.ts"],emitting_commands:["*","create","next","task-composition","update","update-many"]},{code:"invalid_command_usage",exit_code:2,stable:!0,sources:["cli/error-guidance.ts","core/telemetry/observability.ts"]},{code:"invalid_event_cursor",exit_code:2,stable:!0,sources:["sdk/mutation-events.ts"]},{code:"invalid_event_cursor_mode",exit_code:2,sources:["cli/register-list-query.ts","sdk/mutation-events.ts","sdk/runtime-extended-actions.ts"]},{code:"invalid_event_follow_interval",exit_code:2,stable:!0,sources:["sdk/mutation-events.ts"]},{code:"invalid_event_limit",exit_code:2,stable:!0,sources:["sdk/mutation-events.ts"]},{code:"invalid_event_since",exit_code:2,stable:!0,sources:["sdk/mutation-events.ts"]},{code:"invalid_history_analytics_limit",exit_code:2,sources:["sdk/history-analytics.ts"]},{code:"invalid_history_analytics_minimum_sample",exit_code:2,sources:["sdk/history-analytics.ts"]},{code:"invalid_history_analytics_since",exit_code:2,sources:["sdk/history-analytics.ts"]},{code:"invalid_improvement_ledger",exit_code:1,sources:["sdk/improvement-ledger-validation.ts"]},{code:"invalid_improvement_metric",exit_code:2,sources:["sdk/improvement-ledger.ts"]},{code:"invalid_improvement_observation",exit_code:2,sources:["sdk/improvement-ledger.ts"]},{code:"invalid_improvement_observation_limit",exit_code:2,sources:["sdk/improvement-ledger.ts"]},{code:"invalid_improvement_observation_timestamp",exit_code:2,sources:["sdk/improvement-ledger.ts"]},{code:"invalid_provenance_predicate",exit_code:2,stable:!0,sources:["sdk/history-provenance.ts"]},{code:"invalid_query_cursor",exit_code:2,stable:!0,sources:["sdk/pagination.ts","sdk/query/window-pagination.ts"]},{code:"invalid_read_output_session",exit_code:2,sources:["sdk/read-output-session.ts"]},{code:"invalid_reproducible_process_environment",exit_code:2,sources:["sdk/reproducibility/process.ts"]},{code:"invalid_workspace_snapshot_target",exit_code:2,sources:["sdk/workspace-snapshot.ts"]},{code:"item_already_active",exit_code:4,sources:["sdk/lifecycle/update.ts"],emitting_commands:["update"]},{code:"item_already_exists",exit_code:4,stable:!0,sources:["sdk/lifecycle/create.ts"],emitting_commands:["create"]},{code:"item_deleted",exit_code:3,sources:["core/history/tombstone.ts"]},{code:"item_document_encoding_invalid",exit_code:4,sources:["core/store/item-store.ts"]},{code:"item_document_invalid",exit_code:1,stable:!0,sources:["core/item/item-format.ts"]},{code:"item_document_roundtrip_failed",exit_code:1,stable:!0,sources:["core/item/item-format.ts"]},{code:"item_format_version_unsupported",exit_code:4,sources:["core/item/item-format.ts"]},{code:"item_id_collision",exit_code:4,stable:!0,sources:["sdk/lifecycle/copy.ts"],emitting_commands:["copy"]},{code:"item_identity_ambiguous",exit_code:4,sources:["core/store/item-store.ts"]},{code:"item_identity_conflict",exit_code:4,sources:["sdk/governance/validate-history-drift.ts","sdk/merge/three-way.ts","sdk/query/get.ts"],emitting_commands:["*","get"]},{code:"item_identity_reserved",exit_code:4,sources:["core/history/history.ts"]},{code:"item_not_found",exit_code:3,stable:!0,sources:["cli/error-guidance.ts","core/store/item-store.ts","core/telemetry/observability.ts","sdk/governance/validate-history-drift.ts"]},{code:"likely_duplicate",exit_code:4,stable:!0,sources:["sdk/similarity.ts"]},{code:"linked_artifact_mutation_conflict",exit_code:2,sources:["sdk/linked-artifacts.ts"]},{code:"linked_resource_positional_value",exit_code:2,sources:["cli/error-guidance.ts"]},{code:"linked_test_command_immutable",exit_code:2,sources:["sdk/test/update.ts"]},{code:"linked_test_command_not_executable",exit_code:2,sources:["sdk/test/entry.ts"]},{code:"linked_test_context_invalid",exit_code:2,sources:["sdk/test/entry.ts"]},{code:"linked_test_patch_fields_unsupported",exit_code:2,sources:["sdk/test/update.ts"]},{code:"linked_test_remove_no_match",exit_code:3,sources:["sdk/test/execution.ts"]},{code:"linked_test_update_ambiguous",exit_code:2,sources:["sdk/test/update.ts"]},{code:"linked_test_update_no_match",exit_code:3,sources:["sdk/test/update.ts"]},{code:"linked_test_value_not_quoted",exit_code:1,stable:!0,sources:["cli/error-guidance.ts"]},{code:"list_source_incomplete",exit_code:1,stable:!0,sources:["sdk/query/list.ts"],emitting_commands:["list"]},{code:"local_package_archive_unsafe",exit_code:2,stable:!0,sources:["sdk/extension/install-sources.ts"]},{code:"local_source_not_found_bare_name",exit_code:3,stable:!0,sources:["sdk/extension/install-sources.ts"]},{code:"lock_conflict",exit_code:4,stable:!0,sources:["cli/error-guidance.ts","core/lock/lock.ts","core/telemetry/observability.ts"]},{code:"lock_lost",exit_code:4,sources:["core/lock/lock.ts"]},{code:"lock_path_unsafe",exit_code:4,sources:["core/lock/lock-confinement.ts"]},{code:"locks_stale_count",exit_code:1,stable:!0,sources:["core/diagnostics/remediation.ts"]},{code:"locks_unreadable",exit_code:1,stable:!0,sources:["core/diagnostics/remediation.ts"]},{code:"malformed_plan_step_evidence",exit_code:2,stable:!0,sources:["sdk/lifecycle/plan.ts"],emitting_commands:["plan"]},{code:"managed_state_invalid",exit_code:2,sources:["sdk/extension/static-inventory.ts"]},{code:"managed_state_unreadable",exit_code:1,sources:["sdk/extension/static-inventory.ts"]},{code:"manifest_capabilities_absent",exit_code:1,stable:!0,sources:["sdk/compose.ts"]},{code:"manifest_invalid",exit_code:2,sources:["sdk/extension/static-inventory.ts"]},{code:"manifest_unknown_key",exit_code:1,sources:["core/extensions/manifest-schema.ts"],owned_states:[{state:"author_workspace_manifest_declares_an_unknown_top_level_key",probe_id:"author-manifest-unknown-key",entrypoints:["health"],expected_exit_class:"generic_failure"}]},{code:"manifest_unreadable",exit_code:1,sources:["sdk/extension/static-inventory.ts"]},{code:"mcp_annotation_file_unavailable",exit_code:2,sources:["sdk/runtime-input.ts"]},{code:"mcp_stdin_unavailable",exit_code:2,sources:["sdk/annotations.ts"]},{code:"mcp_task_not_found_or_not_authorized",exit_code:3,sources:["sdk/mcp/tasks.ts"]},{code:"merge_artifacts_ignored",exit_code:1,sources:["core/diagnostics/remediation.ts"]},{code:"merge_bun_launcher_unavailable",exit_code:5,sources:["sdk/merge/install.ts"]},{code:"merge_conflict_markers_detected",exit_code:1,stable:!0,sources:["core/item/item-format.ts"],aliases:["history_merge_conflict_markers_detected"]},{code:"merge_decisions_unreviewed",exit_code:1,sources:["core/diagnostics/remediation.ts"]},{code:"merge_driver_configuration_drift",exit_code:1,sources:["core/diagnostics/remediation.ts"]},{code:"merge_driver_configuration_missing",exit_code:1,sources:["core/diagnostics/remediation.ts"]},{code:"merge_fence_drift",exit_code:1,sources:["core/diagnostics/remediation.ts"]},{code:"merge_fence_missing",exit_code:1,sources:["core/diagnostics/remediation.ts"]},{code:"merge_git_config_unwritable",exit_code:5,stable:!0,sources:["sdk/merge/install.ts"]},{code:"merge_receipt_evidence_invalid",exit_code:4,sources:["core/diagnostics/remediation.ts","sdk/merge/reconcile.ts"]},{code:"merge_receipt_history_reference_missing",exit_code:1,sources:["core/diagnostics/remediation.ts"]},{code:"merge_receipt_not_portable",exit_code:4,sources:["sdk/merge/receipts.ts"]},{code:"merge_receipts_pending",exit_code:1,sources:["core/diagnostics/remediation.ts"]},{code:"merge_reconcile_receipt_evidence_untrusted",exit_code:4,sources:["sdk/history-repair.ts"]},{code:"merge_root_not_found",exit_code:3,stable:!0,sources:["sdk/merge/install.ts"]},{code:"merge_settlement_hook_conflict",exit_code:4,sources:["sdk/merge/settlement-hook.ts"]},{code:"merge_settlement_review_required",exit_code:4,sources:["sdk/merge/ignored-artifacts.ts","sdk/merge/reconcile.ts","sdk/merge/stage.ts"]},{code:"missing_allowed_values",exit_code:1,sources:["sdk/agent/refusal-closure.ts"]}];export{PM_ERROR_CODE_CATALOG_PART_1};
|
|
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]="7ff182fc-44e0-5a2e-93e9-5e24ba113e67")}catch{}})();const PM_ERROR_CODE_CATALOG_PART_1=[{code:"acceptance_criteria_mutation_conflict",exit_code:2,sources:["sdk/lifecycle/update.ts"],emitting_commands:["update","update-many"]},{code:"acceptance_criteria_remove_unmatched",exit_code:3,sources:["sdk/lifecycle/update-many.ts","sdk/lifecycle/update.ts"],emitting_commands:["update","update-many"]},{code:"acceptance_criteria_semicolon_forbidden",exit_code:2,stable:!0,sources:["core/item/parse.ts"]},{code:"accepted_rejected_value",exit_code:1,sources:["sdk/agent/refusal-closure.ts"]},{code:"alias_collision",exit_code:1,sources:["sdk/cli-contracts/flag-lexicon-contracts.ts"]},{code:"alias_target_missing",exit_code:1,sources:["sdk/cli-contracts/grammar-contracts.ts"]},{code:"already_claimed_by",exit_code:4,stable:!0,sources:["sdk/lifecycle/claim.ts"],emitting_commands:["claim"]},{code:"ambiguous_option_combination",exit_code:2,stable:!0,sources:["sdk/lifecycle/claim.ts","sdk/lifecycle/plan.ts"],emitting_commands:["claim","plan"]},{code:"annotation_alias_conflict",exit_code:2,sources:["cli/register-annotations.ts"]},{code:"annotation_flag_like_value",exit_code:2,stable:!0,sources:["sdk/annotations.ts"]},{code:"annotation_if_absent_without_append",exit_code:2,sources:["sdk/annotations.ts"]},{code:"annotation_message_without_text",exit_code:2,stable:!0,sources:["sdk/annotations.ts"]},{code:"annotation_transposed_subcommand",exit_code:2,sources:["cli/register-annotations.ts"]},{code:"append_empty_body",exit_code:2,stable:!0,sources:["sdk/lifecycle/append.ts"],emitting_commands:["append"]},{code:"assurance_registry_invalid",exit_code:1,sources:["sdk/governance/assurance.ts"]},{code:"bare_comma_entry_ambiguous",exit_code:2,sources:["core/item/parse.ts"]},{code:"blocker_identity_read_failed",exit_code:1,sources:["sdk/query/declared-blockers.ts"]},{code:"body_file_conflicts_with_body",exit_code:2,stable:!0,sources:["core/io/body-file.ts"]},{code:"body_file_missing_path",exit_code:2,stable:!0,sources:["core/io/body-file.ts"]},{code:"body_file_unreadable",exit_code:3,stable:!0,sources:["core/io/body-file.ts"]},{code:"budget_exceeded",exit_code:1,sources:["sdk/cli-contracts/flag-lexicon-contracts.ts"]},{code:"bulk_create_route",exit_code:2,sources:["cli/register-mutation.ts"]},{code:"bulk_ids_input_empty",exit_code:2,sources:["core/io/bulk-ids-input.ts","sdk/history-compact.ts","sdk/history-mcp.ts"],owned_states:[{state:"bulk_ids_stdin_contains_no_nonempty_ids",probe_id:"bulk-ids-stdin-empty",entrypoints:["update-many"],expected_exit_class:"usage"}]},{code:"bulk_ids_input_missing_path",exit_code:2,sources:["core/io/bulk-ids-input.ts"],owned_states:[{state:"bulk_ids_file_token_omits_its_path",probe_id:"bulk-ids-file-path-missing",entrypoints:["update-many"],expected_exit_class:"usage"}]},{code:"bulk_ids_input_unreadable",exit_code:3,sources:["core/io/bulk-ids-input.ts"],owned_states:[{state:"bulk_ids_file_path_cannot_be_read",probe_id:"bulk-ids-file-unreadable",entrypoints:["update-many"],expected_exit_class:"not_found"}]},{code:"bundle_integrity_torn_install",exit_code:1,stable:!0,sources:["cli/bundle-integrity.ts"]},{code:"capability_undeclared",exit_code:1,stable:!0,sources:["sdk/compose.ts"]},{code:"capability_unused",exit_code:1,stable:!0,sources:["sdk/compose.ts"]},{code:"child_projection_item_bound_exceeded",exit_code:1,stable:!0,sources:["sdk/item-children.ts"]},{code:"close_reason_required",exit_code:2,stable:!0,sources:["sdk/lifecycle-policy.ts","sdk/lifecycle/close-many.ts"],emitting_commands:["*","close-many"]},{code:"close_through_update",exit_code:1,stable:!0,sources:["core/telemetry/observability.ts"]},{code:"close_validation_missing_fields",exit_code:2,stable:!0,sources:["sdk/lifecycle/close.ts"],emitting_commands:["close"]},{code:"collected_zero_items",exit_code:1,stable:!0,sources:["sdk/test/execution-receipts.ts"]},{code:"collection_transposed_subcommand",exit_code:2,sources:["cli/error-guidance.ts"]},{code:"command_failed",exit_code:1,stable:!0,sources:["cli/error-guidance.ts"]},{code:"command_namespace",exit_code:2,stable:!0,sources:["sdk/cli-contracts/runtime-contracts.ts"]},{code:"command_override_conflict",exit_code:4,stable:!0,sources:["sdk/compose.ts"]},{code:"config_duplicate",exit_code:1,stable:!0,sources:["core/profile/profile-lint.ts"]},{code:"config_key_unknown",exit_code:2,stable:!0,sources:["core/profile/profile-lint.ts"]},{code:"config_value_invalid",exit_code:2,stable:!0,sources:["core/profile/profile-lint.ts"]},{code:"conflicting_lifecycle_owner",exit_code:2,stable:!0,sources:["cli/register-operations.ts"]},{code:"context_evaluation_read_incomplete",exit_code:2,sources:["sdk/context-relevance.ts"]},{code:"context_signal_store_invalid",exit_code:2,sources:["sdk/context-signal-store.ts"]},{code:"context_signal_store_stale",exit_code:1,sources:["sdk/context-signal-store.ts"]},{code:"context_signal_store_write_failed",exit_code:1,sources:["sdk/context-signal-store.ts"]},{code:"context_takes_no_item_argument",exit_code:1,stable:!0,sources:["cli/error-guidance.ts"]},{code:"core_item_field_requires_dedicated_flag",exit_code:2,stable:!0,sources:["core/extensions/item-fields.ts"]},{code:"create_positional_type_without_title",exit_code:2,stable:!0,sources:["cli/register-mutation.ts"]},{code:"dependency_cardinality_created",exit_code:2,sources:["sdk/graph/cardinality-integrity.ts"]},{code:"dependency_edge_not_allowed",exit_code:2,stable:!0,sources:["sdk/dependency-flag-validation.ts"]},{code:"dependency_flag_value_invalid",exit_code:2,sources:["sdk/dependency-flag-validation.ts"]},{code:"dependency_remove_no_match",exit_code:3,sources:["sdk/lifecycle/update.ts"],emitting_commands:["update"]},{code:"dependency_target_not_found",exit_code:3,sources:["sdk/dependency-flag-validation.ts"]},{code:"dependency_temporal_order_invalid",exit_code:2,sources:["sdk/dependency-flag-validation.ts"]},{code:"duplicate_canonical_flag",exit_code:1,sources:["sdk/cli-contracts/flag-lexicon-contracts.ts"]},{code:"duplicate_command",exit_code:1,stable:!0,sources:["sdk/compose.ts"]},{code:"duplicate_destination",exit_code:1,sources:["sdk/cli-contracts/grammar-contracts.ts"]},{code:"duplicate_edge",exit_code:1,stable:!0,sources:["sdk/graph/remediation.ts"]},{code:"duplicate_observation",exit_code:1,sources:["sdk/flag-invocation-contracts.ts"]},{code:"duplicate_probe",exit_code:1,sources:["sdk/agent/refusal-closure.ts"]},{code:"duplicate_sweep_cost_limit",exit_code:4,stable:!0,sources:["sdk/query/duplicate-candidates.ts"],emitting_commands:["duplicate-candidates"]},{code:"duplicate_target_circular",exit_code:2,stable:!0,sources:["sdk/lifecycle/close.ts"],emitting_commands:["close"]},{code:"duplicate_target_is_duplicate",exit_code:2,stable:!0,sources:["sdk/lifecycle/close.ts"],emitting_commands:["close"]},{code:"duplicate_target_missing",exit_code:2,stable:!0,sources:["sdk/lifecycle/close.ts"],emitting_commands:["close"]},{code:"duplicate_target_self",exit_code:2,stable:!0,sources:["sdk/lifecycle/close.ts"],emitting_commands:["close"]},{code:"empty_corpus",exit_code:1,sources:["sdk/agent/refusal-closure.ts"]},{code:"empty_surface",exit_code:1,stable:!0,sources:["sdk/compose.ts"]},{code:"error_code_mismatch",exit_code:1,sources:["sdk/agent/refusal-closure.ts","sdk/agent/tracker-preflight-contracts.ts"]},{code:"event_cursor_query_mismatch",exit_code:2,stable:!0,sources:["sdk/mutation-events.ts"]},{code:"event_history_integrity_failed",exit_code:1,sources:["core/history/event-index.ts"]},{code:"event_index_unavailable",exit_code:1,stable:!0,sources:["sdk/mutation-events.ts"]},{code:"exit_code_mismatch",exit_code:1,sources:["sdk/agent/tracker-preflight-contracts.ts"]},{code:"expect_hash_background_unsupported",exit_code:2,sources:["sdk/lifecycle/item-revision.ts"]},{code:"expect_hash_invalid",exit_code:2,sources:["sdk/lifecycle/item-revision.ts"]},{code:"expect_hash_invocation_rewritten",exit_code:2,sources:["sdk/lifecycle/item-revision.ts"]},{code:"expect_hash_requires_mutation",exit_code:2,sources:["sdk/lifecycle/item-revision.ts"]},{code:"expect_hash_target_required",exit_code:2,sources:["sdk/lifecycle/item-revision.ts"]},{code:"expected_revision_duplicate",exit_code:2,sources:["core/store/item-mutation-precondition.ts"]},{code:"expected_revision_scope_conflict",exit_code:2,sources:["core/store/item-mutation-precondition.ts"]},{code:"extension_command_activation_failed",exit_code:1,stable:!0,sources:["cli/commander-usage.ts"]},{code:"extension_dependency_name_unsafe",exit_code:2,stable:!0,sources:["sdk/extension/install-sources.ts"]},{code:"extension_dependency_spec_invalid",exit_code:2,stable:!0,sources:["sdk/extension/install-sources.ts"]},{code:"extension_dependency_version_unsafe",exit_code:2,stable:!0,sources:["sdk/extension/install-sources.ts"]},{code:"extension_flag_value_invalid",exit_code:2,sources:["cli/extension-command-options.ts"]},{code:"extension_install_incomplete_source_scan",exit_code:2,sources:["sdk/extension/install-plan.ts"]},{code:"extension_install_rollback_failed",exit_code:1,sources:["sdk/extension/install-snapshot.ts"]},{code:"extension_install_soft_failed",exit_code:1,stable:!0,sources:["cli/register-setup.ts"]},{code:"extension_install_source_contains_destination",exit_code:2,stable:!0,sources:["sdk/extension/install-runtime.ts"]},{code:"extension_item_field_reserved",exit_code:2,stable:!0,sources:["core/extensions/item-fields.ts"]},{code:"extension_item_field_type_conflict",exit_code:2,stable:!0,sources:["core/extensions/item-fields.ts"]},{code:"extension_item_field_unknown",exit_code:2,stable:!0,sources:["core/extensions/item-fields.ts"]},{code:"extension_mutation_guard_failed",exit_code:4,stable:!0,sources:["core/extensions/extension-hook-runtime.ts"]},{code:"extension_mutation_guard_invalid_decision",exit_code:4,stable:!0,sources:["core/extensions/extension-hook-runtime.ts"]},{code:"extension_mutation_guard_invalid_denial",exit_code:4,stable:!0,sources:["core/extensions/extension-hook-runtime.ts"]},{code:"extension_mutation_guard_timed_out",exit_code:4,stable:!0,sources:["core/extensions/extension-hook-runtime.ts"]},{code:"extension_read_output_invalid",exit_code:2,sources:["sdk/read-output/extension.ts"]},{code:"extension_update_health_partial_coverage",exit_code:1,stable:!0,sources:["core/diagnostics/remediation.ts"]},{code:"extensions_unreadable",exit_code:1,sources:["sdk/extension/static-inventory.ts"]},{code:"field_duplicate",exit_code:1,stable:!0,sources:["core/profile/profile-lint.ts"]},{code:"field_invalid",exit_code:2,stable:!0,sources:["core/profile/profile-lint.ts"]},{code:"field_mcp_input_collision",exit_code:1,stable:!0,sources:["core/profile/profile-lint.ts"]},{code:"github_source_entry_unbuilt",exit_code:2,stable:!0,sources:["sdk/extension/shared.ts"]},{code:"hierarchy_cardinality_created",exit_code:4,sources:["sdk/graph/hierarchy-integrity.ts"]},{code:"hierarchy_cycle_created",exit_code:4,sources:["sdk/graph/hierarchy-integrity.ts"]},{code:"hierarchy_parent_divergence_created",exit_code:4,sources:["sdk/graph/hierarchy-integrity.ts"]},{code:"history_author_acknowledge_plan_conflict",exit_code:4,sources:["sdk/author-attribution.ts"]},{code:"history_author_acknowledge_plan_fingerprint_required",exit_code:2,sources:["sdk/author-attribution.ts"]},{code:"history_author_acknowledge_preview_limit_invalid",exit_code:2,sources:["sdk/author-attribution.ts"]},{code:"history_author_acknowledge_required_values_missing",exit_code:2,sources:["sdk/author-attribution.ts"]},{code:"history_author_acknowledge_selector_conflict",exit_code:2,sources:["sdk/author-attribution.ts"]},{code:"history_author_acknowledge_selector_required",exit_code:2,stable:!0,sources:["sdk/author-attribution.ts"]},{code:"history_author_acknowledge_target_not_actionable",exit_code:2,sources:["sdk/author-attribution.ts"]},{code:"history_author_acknowledge_target_unreadable",exit_code:2,sources:["sdk/author-attribution.ts"]},{code:"history_baseline_unavailable",exit_code:1,sources:["core/history/projection.ts"]},{code:"history_drift_chain_mismatch",exit_code:1,stable:!0,sources:["core/diagnostics/remediation.ts"],aliases:["validate_history_drift_chain_mismatches"]},{code:"history_drift_hash_mismatch",exit_code:1,stable:!0,sources:["core/diagnostics/remediation.ts"],aliases:["validate_history_drift_hash_mismatches"]},{code:"history_drift_merge_receipt",exit_code:1,sources:["core/diagnostics/remediation.ts"]},{code:"history_drift_missing_stream",exit_code:1,stable:!0,sources:["core/diagnostics/remediation.ts"],aliases:["validate_history_drift_missing_streams"]},{code:"history_drift_unreadable_stream",exit_code:1,stable:!0,sources:["core/diagnostics/remediation.ts"],aliases:["validate_history_drift_unreadable_streams"]},{code:"history_drift_version_skew",exit_code:1,stable:!0,sources:["core/diagnostics/remediation.ts"],aliases:["validate_history_drift_version_skews"]},{code:"history_json_invalid",exit_code:1,sources:["core/history/read.ts"]},{code:"history_merge_conflict_markers_detected",exit_code:1,stable:!0,sources:["core/history/read.ts"],canonical_code:"merge_conflict_markers_detected"},{code:"history_replay_invalid",exit_code:1,sources:["core/history/projection.ts","core/history/tombstone.ts"]},{code:"history_salvage_refused",exit_code:4,sources:["sdk/history/salvage.ts"]},{code:"history_stream_over_compact_threshold",exit_code:1,stable:!0,sources:["core/diagnostics/remediation.ts"]},{code:"history_target_out_of_range",exit_code:1,stable:!0,sources:["core/history/projection.ts"]},{code:"history_timestamp_invalid",exit_code:1,sources:["core/history/event-index.ts","core/history/history.ts"]},{code:"history_union_rebase_conflict",exit_code:4,sources:["sdk/merge/history-scalar-rebase.ts"]},{code:"history_unknown_author_events",exit_code:2,stable:!0,sources:["core/diagnostics/remediation.ts"],aliases:["validate_history_unknown_author_events"]},{code:"history_version_mapping_unavailable",exit_code:2,sources:["core/history/version-address.ts"]},{code:"history_version_pruned",exit_code:2,sources:["core/history/projection.ts"]},{code:"host_environment_capacity_fault",exit_code:1,sources:["core/fs/host-environment-errors.ts"]},{code:"host_environment_operation_invalid",exit_code:2,sources:["core/fs/host-environment-errors.ts"]},{code:"host_environment_permission_fault",exit_code:1,sources:["core/fs/host-environment-errors.ts"]},{code:"host_environment_resource_fault",exit_code:1,sources:["core/fs/host-environment-errors.ts"]},{code:"improvement_metric_contract_conflict",exit_code:4,sources:["sdk/improvement-ledger.ts"]},{code:"improvement_observation_conflict",exit_code:4,sources:["sdk/improvement-ledger.ts"]},{code:"incomplete_allowed_values",exit_code:1,sources:["sdk/agent/refusal-closure.ts"]},{code:"inconsistent_concept_kind",exit_code:1,sources:["sdk/cli-contracts/flag-lexicon-contracts.ts"]},{code:"init_existing_settings_requires_force",exit_code:2,stable:!0,sources:["sdk/init.ts"]},{code:"init_gitignore_unwritable",exit_code:1,stable:!0,sources:["sdk/workspace.ts"]},{code:"init_id_prefix_conflict",exit_code:2,stable:!0,sources:["sdk/init.ts"]},{code:"init_id_prefix_path_like",exit_code:2,stable:!0,sources:["sdk/init.ts"]},{code:"integrity_history_conflict_marker",exit_code:4,stable:!0,sources:["core/diagnostics/remediation.ts"],aliases:["validate_storage_history_conflict_markers"]},{code:"integrity_history_invalid_json",exit_code:2,stable:!0,sources:["core/diagnostics/remediation.ts"]},{code:"integrity_history_unreadable",exit_code:1,stable:!0,sources:["core/diagnostics/remediation.ts"]},{code:"integrity_item_ahead_format_version",exit_code:1,stable:!0,sources:["core/diagnostics/remediation.ts"],aliases:["validate_format_version_ahead_items"]},{code:"integrity_item_conflict_marker",exit_code:4,stable:!0,sources:["core/diagnostics/remediation.ts"]},{code:"integrity_item_outdated_format_version",exit_code:1,stable:!0,sources:["core/diagnostics/remediation.ts"],aliases:["validate_format_version_outdated_items"]},{code:"integrity_item_parse_failed",exit_code:1,stable:!0,sources:["core/diagnostics/remediation.ts"]},{code:"integrity_item_unreadable",exit_code:1,stable:!0,sources:["core/diagnostics/remediation.ts"]},{code:"invalid_argument_value",exit_code:2,stable:!0,sources:["cli/error-guidance.ts","core/item/priority.ts","core/telemetry/observability.ts","sdk/config.ts","sdk/context-intent-contracts.ts","sdk/dependencies.ts","sdk/governance/assurance-mutation-error.ts","sdk/lifecycle/create.ts","sdk/lifecycle/task-composition.ts","sdk/lifecycle/update-many.ts","sdk/lifecycle/update.ts","sdk/query/next.ts","sdk/runtime-input.ts","sdk/runtime/mutation-admission.ts","sdk/runtime/mutation-value-validation.ts","sdk/runtime/schema-preview.ts","sdk/workspace.ts"],emitting_commands:["*","create","next","task-composition","update","update-many"]},{code:"invalid_command_usage",exit_code:2,stable:!0,sources:["cli/error-guidance.ts","core/telemetry/observability.ts"]},{code:"invalid_event_cursor",exit_code:2,stable:!0,sources:["sdk/mutation-events.ts"]},{code:"invalid_event_cursor_mode",exit_code:2,sources:["cli/register-list-query.ts","sdk/mutation-events.ts","sdk/runtime-extended-actions.ts"]},{code:"invalid_event_follow_interval",exit_code:2,stable:!0,sources:["sdk/mutation-events.ts"]},{code:"invalid_event_limit",exit_code:2,stable:!0,sources:["sdk/mutation-events.ts"]},{code:"invalid_event_since",exit_code:2,stable:!0,sources:["sdk/mutation-events.ts"]},{code:"invalid_history_analytics_limit",exit_code:2,sources:["sdk/history-analytics.ts"]},{code:"invalid_history_analytics_minimum_sample",exit_code:2,sources:["sdk/history-analytics.ts"]},{code:"invalid_history_analytics_since",exit_code:2,sources:["sdk/history-analytics.ts"]},{code:"invalid_improvement_ledger",exit_code:1,sources:["sdk/improvement-ledger-validation.ts"]},{code:"invalid_improvement_metric",exit_code:2,sources:["sdk/improvement-ledger.ts"]},{code:"invalid_improvement_observation",exit_code:2,sources:["sdk/improvement-ledger.ts"]},{code:"invalid_improvement_observation_limit",exit_code:2,sources:["sdk/improvement-ledger.ts"]},{code:"invalid_improvement_observation_timestamp",exit_code:2,sources:["sdk/improvement-ledger.ts"]},{code:"invalid_provenance_predicate",exit_code:2,stable:!0,sources:["sdk/history-provenance.ts"]},{code:"invalid_query_cursor",exit_code:2,stable:!0,sources:["sdk/pagination.ts","sdk/query/window-pagination.ts"]},{code:"invalid_read_output_session",exit_code:2,sources:["sdk/read-output-session.ts"]},{code:"invalid_reproducible_process_environment",exit_code:2,sources:["sdk/reproducibility/process.ts"]},{code:"invalid_workspace_snapshot_target",exit_code:2,sources:["sdk/workspace-snapshot.ts"]},{code:"item_already_active",exit_code:4,sources:["sdk/lifecycle/update.ts"],emitting_commands:["update"]},{code:"item_already_exists",exit_code:4,stable:!0,sources:["sdk/lifecycle/create.ts"],emitting_commands:["create"]},{code:"item_deleted",exit_code:3,sources:["core/history/tombstone.ts"]},{code:"item_document_encoding_invalid",exit_code:4,sources:["core/store/item-store.ts"]},{code:"item_document_invalid",exit_code:1,stable:!0,sources:["core/item/item-format.ts"]},{code:"item_document_roundtrip_failed",exit_code:1,stable:!0,sources:["core/item/item-format.ts"]},{code:"item_format_version_unsupported",exit_code:4,sources:["core/item/item-format.ts"]},{code:"item_id_collision",exit_code:4,stable:!0,sources:["sdk/lifecycle/copy.ts"],emitting_commands:["copy"]},{code:"item_identity_ambiguous",exit_code:4,sources:["core/store/item-store.ts"]},{code:"item_identity_conflict",exit_code:4,sources:["sdk/governance/validate-history-drift.ts","sdk/lifecycle/item-revision.ts","sdk/merge/three-way.ts","sdk/query/declared-blockers.ts"]},{code:"item_identity_reserved",exit_code:4,sources:["core/history/history.ts"]},{code:"item_not_found",exit_code:3,stable:!0,sources:["cli/error-guidance.ts","core/store/item-store.ts","core/telemetry/observability.ts","sdk/governance/validate-history-drift.ts"]},{code:"item_revision_conflict",exit_code:4,sources:["core/store/item-mutation-precondition.ts"]},{code:"likely_duplicate",exit_code:4,stable:!0,sources:["sdk/similarity.ts"]},{code:"linked_artifact_mutation_conflict",exit_code:2,sources:["sdk/linked-artifacts.ts"]},{code:"linked_resource_positional_value",exit_code:2,sources:["cli/error-guidance.ts"]},{code:"linked_test_command_immutable",exit_code:2,sources:["sdk/test/update.ts"]},{code:"linked_test_command_not_executable",exit_code:2,sources:["sdk/test/entry.ts"]},{code:"linked_test_context_invalid",exit_code:2,sources:["sdk/test/entry.ts"]},{code:"linked_test_patch_fields_unsupported",exit_code:2,sources:["sdk/test/update.ts"]},{code:"linked_test_remove_no_match",exit_code:3,sources:["sdk/test/execution.ts"]},{code:"linked_test_update_ambiguous",exit_code:2,sources:["sdk/test/update.ts"]},{code:"linked_test_update_no_match",exit_code:3,sources:["sdk/test/update.ts"]},{code:"linked_test_value_not_quoted",exit_code:1,stable:!0,sources:["cli/error-guidance.ts"]},{code:"list_source_incomplete",exit_code:1,stable:!0,sources:["sdk/query/list.ts"],emitting_commands:["list"]},{code:"local_package_archive_unsafe",exit_code:2,stable:!0,sources:["sdk/extension/install-sources.ts"]},{code:"local_source_not_found_bare_name",exit_code:3,stable:!0,sources:["sdk/extension/install-sources.ts"]},{code:"lock_conflict",exit_code:4,stable:!0,sources:["cli/error-guidance.ts","core/lock/lock.ts","core/telemetry/observability.ts"]},{code:"lock_lost",exit_code:4,sources:["core/lock/lock.ts"]},{code:"lock_path_unsafe",exit_code:4,sources:["core/lock/lock-confinement.ts"]},{code:"locks_stale_count",exit_code:1,stable:!0,sources:["core/diagnostics/remediation.ts"]},{code:"locks_unreadable",exit_code:1,stable:!0,sources:["core/diagnostics/remediation.ts"]},{code:"malformed_plan_step_evidence",exit_code:2,stable:!0,sources:["sdk/lifecycle/plan.ts"],emitting_commands:["plan"]},{code:"managed_state_invalid",exit_code:2,sources:["sdk/extension/static-inventory.ts"]},{code:"managed_state_unreadable",exit_code:1,sources:["sdk/extension/static-inventory.ts"]},{code:"manifest_capabilities_absent",exit_code:1,stable:!0,sources:["sdk/compose.ts"]},{code:"manifest_invalid",exit_code:2,sources:["sdk/extension/static-inventory.ts"]},{code:"manifest_unknown_key",exit_code:1,sources:["core/extensions/manifest-schema.ts"],owned_states:[{state:"author_workspace_manifest_declares_an_unknown_top_level_key",probe_id:"author-manifest-unknown-key",entrypoints:["health"],expected_exit_class:"generic_failure"}]},{code:"manifest_unreadable",exit_code:1,sources:["sdk/extension/static-inventory.ts"]},{code:"mcp_annotation_file_unavailable",exit_code:2,sources:["sdk/runtime-input.ts"]},{code:"mcp_stdin_unavailable",exit_code:2,sources:["sdk/annotations.ts"]},{code:"mcp_task_not_found_or_not_authorized",exit_code:3,sources:["sdk/mcp/tasks.ts"]},{code:"merge_artifacts_ignored",exit_code:1,sources:["core/diagnostics/remediation.ts"]},{code:"merge_bun_launcher_unavailable",exit_code:5,sources:["sdk/merge/install.ts"]},{code:"merge_conflict_markers_detected",exit_code:1,stable:!0,sources:["core/item/item-format.ts"],aliases:["history_merge_conflict_markers_detected"]},{code:"merge_decisions_unreviewed",exit_code:1,sources:["core/diagnostics/remediation.ts"]},{code:"merge_driver_configuration_drift",exit_code:1,sources:["core/diagnostics/remediation.ts"]},{code:"merge_driver_configuration_missing",exit_code:1,sources:["core/diagnostics/remediation.ts"]},{code:"merge_fence_drift",exit_code:1,sources:["core/diagnostics/remediation.ts"]},{code:"merge_fence_missing",exit_code:1,sources:["core/diagnostics/remediation.ts"]},{code:"merge_git_config_unwritable",exit_code:5,stable:!0,sources:["sdk/merge/install.ts"]},{code:"merge_receipt_evidence_invalid",exit_code:4,sources:["core/diagnostics/remediation.ts","sdk/merge/reconcile.ts"]},{code:"merge_receipt_history_reference_missing",exit_code:1,sources:["core/diagnostics/remediation.ts"]},{code:"merge_receipt_not_portable",exit_code:4,sources:["sdk/merge/receipts.ts"]},{code:"merge_receipts_pending",exit_code:1,sources:["core/diagnostics/remediation.ts"]},{code:"merge_reconcile_receipt_evidence_untrusted",exit_code:4,sources:["sdk/history-repair.ts"]},{code:"merge_root_not_found",exit_code:3,stable:!0,sources:["sdk/merge/install.ts"]}];export{PM_ERROR_CODE_CATALOG_PART_1};
|
|
2
2
|
//# sourceMappingURL=generated-error-code-catalog-part-1.js.map
|