@unbrained/pm-cli 2026.9.7 → 2026.9.9
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/pm-developer/SKILL.md +12 -4
- package/.agents/skills/pm-developer/references/MULTI_AGENT_MERGE.md +19 -10
- package/.agents/skills/pm-extensions/SKILL.md +6 -0
- package/.agents/skills/pm-sdk/SKILL.md +11 -2
- package/.agents/skills/pm-user/SKILL.md +7 -2
- package/.agents/skills/pm-user/references/ECOSYSTEM_PLANNING.md +95 -0
- package/.claude-plugin/marketplace.json +2 -2
- package/CHANGELOG.md +231 -182
- package/dist/cli/after-command-context-usage.js +1 -48
- package/dist/cli/argv-utils.js +1 -40
- package/dist/cli/bootstrap-args.js +1 -9
- package/dist/cli/bundle-integrity.js +2 -110
- package/dist/cli/commander-usage.js +11 -771
- package/dist/cli/commands/activity.js +1 -9
- package/dist/cli/commands/aggregate.js +1 -5
- package/dist/cli/commands/append.js +1 -5
- package/dist/cli/commands/claim.js +1 -5
- package/dist/cli/commands/close-many.js +1 -5
- package/dist/cli/commands/close.js +1 -9
- package/dist/cli/commands/comments.js +1 -5
- package/dist/cli/commands/config.js +1 -9
- package/dist/cli/commands/context.js +1 -9
- package/dist/cli/commands/contracts.js +1 -5
- package/dist/cli/commands/copy.js +1 -9
- package/dist/cli/commands/create.js +1 -9
- package/dist/cli/commands/delete.js +1 -9
- package/dist/cli/commands/deps.js +1 -9
- package/dist/cli/commands/docs.js +1 -9
- package/dist/cli/commands/duplicates.js +1 -9
- package/dist/cli/commands/eval.js +1 -9
- package/dist/cli/commands/extension/describe.js +1 -5
- package/dist/cli/commands/extension/scaffold.js +1 -5
- package/dist/cli/commands/extension/shared.js +1 -5
- package/dist/cli/commands/extension.js +1 -9
- package/dist/cli/commands/files.js +1 -9
- package/dist/cli/commands/focus.js +1 -9
- package/dist/cli/commands/gc.js +1 -9
- package/dist/cli/commands/get.js +1 -9
- package/dist/cli/commands/graph.js +1 -10
- package/dist/cli/commands/health.js +1 -9
- package/dist/cli/commands/history-compact.js +1 -10
- package/dist/cli/commands/history-redact.js +1 -11
- package/dist/cli/commands/history-repair.js +1 -10
- package/dist/cli/commands/history.js +1 -5
- package/dist/cli/commands/index.js +1 -58
- package/dist/cli/commands/init-agent-guidance.js +1 -9
- package/dist/cli/commands/init.js +1 -9
- package/dist/cli/commands/learnings.js +1 -5
- package/dist/cli/commands/lifecycle-transitions.js +1 -5
- package/dist/cli/commands/list.js +1 -9
- package/dist/cli/commands/merge.js +1 -11
- package/dist/cli/commands/next.js +1 -9
- package/dist/cli/commands/notes.js +1 -5
- package/dist/cli/commands/plan.js +1 -9
- package/dist/cli/commands/profile.js +1 -9
- package/dist/cli/commands/restore.js +1 -9
- package/dist/cli/commands/scheduling-shortcuts.js +1 -9
- package/dist/cli/commands/schema.js +1 -10
- package/dist/cli/commands/search.js +1 -9
- package/dist/cli/commands/stats.js +1 -9
- package/dist/cli/commands/telemetry.js +1 -9
- package/dist/cli/commands/test-all.js +1 -9
- package/dist/cli/commands/test-runs.js +1 -9
- package/dist/cli/commands/test.js +1 -9
- package/dist/cli/commands/update-many.js +1 -5
- package/dist/cli/commands/update.js +1 -9
- package/dist/cli/commands/upgrade.js +1 -5
- package/dist/cli/commands/validate.js +1 -15
- package/dist/cli/context-intent-invocation.js +1 -20
- package/dist/cli/description-stdin.js +1 -17
- package/dist/cli/error-guidance.js +1 -1353
- package/dist/cli/extension-command-help.js +5 -636
- package/dist/cli/extension-command-options.js +1 -427
- package/dist/cli/extension-recovery.js +1 -126
- package/dist/cli/help-content.js +2 -1001
- package/dist/cli/help-json-payload.js +4 -570
- package/dist/cli/main.d.ts +4 -0
- package/dist/cli/main.js +5 -2573
- package/dist/cli/migration-gates.js +1 -289
- package/dist/cli/public.js +1 -20
- package/dist/cli/register-annotations.js +1 -270
- package/dist/cli/register-assurance.js +1 -62
- package/dist/cli/register-files-lookup.js +1 -56
- package/dist/cli/register-history-activity.d.ts +8 -0
- package/dist/cli/register-history-activity.js +2 -0
- package/dist/cli/register-history-author.js +1 -38
- package/dist/cli/register-history-maintenance.d.ts +9 -0
- package/dist/cli/register-history-maintenance.js +2 -0
- package/dist/cli/register-list-query.js +10 -943
- package/dist/cli/register-mutation-options.js +1 -9
- package/dist/cli/register-mutation.d.ts +0 -5
- package/dist/cli/register-mutation.js +19 -1893
- package/dist/cli/register-operations.js +1 -920
- package/dist/cli/register-setup.js +1 -716
- package/dist/cli/register-structured-mutation.js +1 -196
- package/dist/cli/registration-helpers.js +1 -5
- package/dist/cli/runtime-compatibility-boundary.js +4 -42
- package/dist/cli/schema-registration-helpers.js +1 -73
- package/dist/cli/search-refresh.js +1 -13
- package/dist/cli/stats-analytics-json.js +1 -68
- package/dist/cli/telemetry-flush.js +1 -10
- package/dist/cli-bundle/bundle-manifest.json +164 -156
- package/dist/cli-bundle/chunks/{chunk-NPN5I67J.js → chunk-3IPRM75M.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-4VL5P22L.js +2 -0
- package/dist/cli-bundle/chunks/chunk-AAFBV3U3.js +29 -0
- package/dist/cli-bundle/chunks/chunk-D3YVILJJ.js +20 -0
- package/dist/cli-bundle/chunks/{chunk-WYRZZ5ZE.js → chunk-DEZPZOQ7.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-ECBLPN7B.js +3 -0
- package/dist/cli-bundle/chunks/chunk-J6ERHBV2.js +235 -0
- package/dist/cli-bundle/chunks/chunk-JUNJ5EKI.js +2 -0
- package/dist/cli-bundle/chunks/chunk-L5RCDKQ2.js +2 -0
- package/dist/cli-bundle/chunks/chunk-NSAPNEYH.js +2 -0
- package/dist/cli-bundle/chunks/chunk-OHNLSGGV.js +79 -0
- package/dist/cli-bundle/chunks/chunk-WQKMSFBV.js +5 -0
- package/dist/cli-bundle/chunks/{chunk-BAX2BYUW.js → chunk-XZ6T7YPP.js} +256 -150
- package/dist/cli-bundle/chunks/{chunk-JT6XF6GE.js → chunk-Z3XVXUVF.js} +4 -4
- package/dist/cli-bundle/chunks/register-list-query-UIHRCS6D.js +11 -0
- package/dist/cli-bundle/chunks/register-mutation-WHWMGRVX.js +20 -0
- package/dist/cli-bundle/chunks/register-operations-64YZYTC5.js +2 -0
- package/dist/cli-bundle/chunks/register-setup-PERI45EM.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-2W4XIYOB.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-2WSBXIGF.js +12 -0
- package/dist/cli-bundle/focused-chunks/chunk-5FHTCOHS.js +3 -0
- package/dist/cli-bundle/focused-chunks/chunk-7N6DOREF.js +26 -0
- package/dist/cli-bundle/focused-chunks/{chunk-3BZEOXLT.js → chunk-7PC4R5QB.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-BUCJUZVG.js +6 -0
- package/dist/cli-bundle/focused-chunks/chunk-FE3BABLJ.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-IWITF53W.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-OQUGRHKV.js +10 -0
- package/dist/cli-bundle/focused-chunks/{chunk-M6PBRFSH.js → chunk-PNKIANFZ.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-LIJIA4TY.js → chunk-QQQ4SAUO.js} +3 -3
- package/dist/cli-bundle/focused-chunks/chunk-TTYXF5YD.js +177 -0
- package/dist/cli-bundle/focused-chunks/chunk-XNR3DM6J.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-XSS3APUF.js +9 -0
- package/dist/cli-bundle/focused-chunks/chunk-YCDQ2N23.js +8 -0
- package/dist/cli-bundle/focused-chunks/chunk-YJUXGS57.js +20 -0
- package/dist/cli-bundle/focused-chunks/chunk-ZTCE4UO6.js +58 -0
- package/dist/cli-bundle/main.js +20 -20
- package/dist/cli-bundle/sdk-authoring.js +1 -1
- package/dist/cli-bundle/sdk-contracts.js +2 -2
- package/dist/cli-bundle/sdk-core.js +37 -37
- 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 +42 -42
- 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/cli.js +1 -104
- package/dist/core/checkpoint/checkpoint-gc.js +1 -169
- package/dist/core/checkpoint/mutation-checkpoint.js +2 -133
- package/dist/core/config/nested-settings.js +1 -534
- package/dist/core/config/positional-value.js +1 -109
- package/dist/core/diagnostics/remediation.js +1 -506
- package/dist/core/extensions/activation-summary-markdown.js +2 -145
- package/dist/core/extensions/activation-summary.js +1 -92
- package/dist/core/extensions/activation-transaction.js +1 -46
- package/dist/core/extensions/capability-usage.js +1 -173
- package/dist/core/extensions/command-hook-context.js +1 -13
- package/dist/core/extensions/command-metadata-contract.js +1 -22
- package/dist/core/extensions/command-visibility-tier.js +1 -29
- package/dist/core/extensions/contribution-inventory.js +1 -173
- package/dist/core/extensions/exporter-output-contract.js +1 -66
- package/dist/core/extensions/extension-candidate.js +1 -18
- package/dist/core/extensions/extension-capability-aliases.js +1 -158
- package/dist/core/extensions/extension-hook-runtime.js +1 -699
- package/dist/core/extensions/extension-policy.js +1 -599
- package/dist/core/extensions/extension-registries.js +1 -62
- package/dist/core/extensions/extension-runtime-helpers.js +1 -33
- package/dist/core/extensions/extension-types.js +1 -102
- package/dist/core/extensions/flag-definition-validation.js +1 -52
- package/dist/core/extensions/flag-value-types.js +1 -64
- package/dist/core/extensions/index.js +1 -526
- package/dist/core/extensions/item-field-types.js +1 -39
- package/dist/core/extensions/item-fields.js +1 -261
- package/dist/core/extensions/loader.js +1 -2223
- package/dist/core/extensions/manifest-schema.js +1 -69
- package/dist/core/extensions/module-graph-snapshot.js +1 -33
- package/dist/core/extensions/preflight-ownership.js +1 -41
- package/dist/core/extensions/registration-validation.js +1 -82
- package/dist/core/extensions/registration-values.js +1 -209
- package/dist/core/extensions/reserved-host-flags.js +1 -36
- package/dist/core/extensions/runtime-registrations.js +1 -67
- package/dist/core/extensions/service-ownership.js +1 -19
- package/dist/core/extensions/version-compat.js +1 -216
- package/dist/core/fs/fs-utils.js +2 -158
- package/dist/core/fs/host-environment-errors.js +1 -141
- package/dist/core/fs/index.js +1 -9
- package/dist/core/fs/path-utils.js +1 -17
- package/dist/core/governance/content-fields.js +1 -160
- package/dist/core/governance/issue-codes.js +1 -151
- package/dist/core/governance/metadata-coverage.js +1 -358
- package/dist/core/history/drift-cache.js +3 -72
- package/dist/core/history/drift-scan.js +1 -342
- package/dist/core/history/event-classification.js +1 -109
- package/dist/core/history/event-index.js +8 -784
- package/dist/core/history/history-compact-bulk.js +1 -104
- package/dist/core/history/history-diff.js +1 -158
- package/dist/core/history/history-rewrite.d.ts +6 -1
- package/dist/core/history/history-rewrite.js +1 -107
- package/dist/core/history/history-storage-stats.js +1 -102
- package/dist/core/history/history-stream-policy.js +1 -62
- package/dist/core/history/history.js +2 -617
- package/dist/core/history/identity.js +1 -30
- package/dist/core/history/index.js +1 -9
- package/dist/core/history/projection.js +1 -196
- package/dist/core/history/read.d.ts +9 -0
- package/dist/core/history/read.js +1 -57
- package/dist/core/history/replay.js +2 -439
- package/dist/core/history/version-address.js +1 -32
- package/dist/core/history/workspace-history.js +2 -433
- package/dist/core/io/body-file.js +1 -62
- package/dist/core/io/bulk-ids-input.js +1 -112
- package/dist/core/item/actionability.js +1 -327
- package/dist/core/item/dependency-reference.js +1 -20
- package/dist/core/item/id.js +1 -112
- package/dist/core/item/index.js +1 -12
- package/dist/core/item/item-format-version.js +1 -78
- package/dist/core/item/item-format.js +5 -1473
- package/dist/core/item/item-record.js +1 -23
- package/dist/core/item/item-type-definition.js +1 -133
- package/dist/core/item/parent-reference-policy.js +1 -57
- package/dist/core/item/parse.js +2 -603
- package/dist/core/item/plan-lifecycle.js +1 -19
- package/dist/core/item/priority.js +1 -61
- package/dist/core/item/sprint-release-format.js +1 -38
- package/dist/core/item/status-filter.js +1 -115
- package/dist/core/item/status.js +1 -43
- package/dist/core/item/toon-decode.js +1 -29
- package/dist/core/item/type-registry.js +1 -715
- package/dist/core/item/type-synonyms.js +1 -38
- package/dist/core/lock/index.js +1 -9
- package/dist/core/lock/lock-gc.js +1 -240
- package/dist/core/lock/lock.js +3 -590
- package/dist/core/output/mutation-projection.js +1 -217
- package/dist/core/output/output-control.js +1 -25
- package/dist/core/output/output.js +11 -494
- package/dist/core/output/query-summary.js +1 -58
- package/dist/core/output/tabular.js +1 -77
- package/dist/core/packages/manifest.js +1 -244
- package/dist/core/packages/root.js +1 -84
- package/dist/core/policy/workflow-policy-schema.d.ts +312 -0
- package/dist/core/policy/workflow-policy-schema.js +2 -0
- package/dist/core/policy/workflow-policy-store.d.ts +24 -0
- package/dist/core/policy/workflow-policy-store.js +2 -0
- package/dist/core/policy/workflow-policy.d.ts +139 -0
- package/dist/core/policy/workflow-policy.js +2 -0
- package/dist/core/profile/profile-describe.js +1 -83
- package/dist/core/profile/profile-lint.js +1 -415
- package/dist/core/profile/profile-plan.js +0 -0
- package/dist/core/profile/profile-presets.js +1 -370
- package/dist/core/reproducibility/context.js +1 -82
- package/dist/core/schema/fields-file.js +2 -288
- package/dist/core/schema/item-types-file.js +2 -296
- package/dist/core/schema/runtime-field-filters.js +1 -49
- package/dist/core/schema/runtime-field-values.js +1 -313
- package/dist/core/schema/runtime-schema.js +2 -826
- package/dist/core/schema/status-defs-file.js +2 -227
- package/dist/core/schema/status-token.js +1 -31
- package/dist/core/schema/type-inference.js +1 -95
- package/dist/core/schema/type-presets.js +1 -87
- package/dist/core/schema/type-workflows.js +1 -104
- package/dist/core/search/background-refresh.js +2 -286
- package/dist/core/search/bm25.js +1 -146
- package/dist/core/search/cache.js +2 -534
- package/dist/core/search/corpus.js +1 -311
- package/dist/core/search/embedding-batches.js +1 -163
- package/dist/core/search/eval.js +1 -225
- package/dist/core/search/http-client.js +1 -75
- package/dist/core/search/providers.js +1 -242
- package/dist/core/search/relevance.js +1 -244
- package/dist/core/search/semantic-defaults.js +1 -199
- package/dist/core/search/staleness.js +1 -30
- package/dist/core/search/vector-stores.js +2 -664
- package/dist/core/search/vectorization-metadata.js +1 -81
- package/dist/core/sentry/helpers.js +1 -272
- package/dist/core/sentry/instrument.js +1 -387
- package/dist/core/session/session-state.js +1 -260
- package/dist/core/shared/agent-session-context.js +1 -133
- package/dist/core/shared/author.js +1 -1172
- package/dist/core/shared/command-types.js +1 -4
- package/dist/core/shared/conflict-markers.js +1 -31
- package/dist/core/shared/constants.js +1 -405
- package/dist/core/shared/errors.js +1 -20
- package/dist/core/shared/html-entity-decode.js +1 -131
- package/dist/core/shared/index.js +1 -12
- package/dist/core/shared/item-metadata-contract.js +1 -89
- package/dist/core/shared/lazy-module.js +1 -16
- package/dist/core/shared/levenshtein.js +1 -61
- package/dist/core/shared/memo.js +1 -19
- package/dist/core/shared/numeric-parsers.js +1 -20
- package/dist/core/shared/option-alias-visibility.js +1 -67
- package/dist/core/shared/primitives.js +1 -127
- package/dist/core/shared/serial-queue.js +1 -79
- package/dist/core/shared/serialization.js +1 -210
- package/dist/core/shared/split-comma-list.js +1 -30
- package/dist/core/shared/text-normalization.js +1 -38
- package/dist/core/shared/time.js +1 -306
- package/dist/core/store/index.js +1 -12
- package/dist/core/store/item-format-migration.js +1 -125
- package/dist/core/store/item-metadata-cache.js +1 -1116
- package/dist/core/store/item-metadata-query-index.js +9 -394
- package/dist/core/store/item-metadata-read-work.js +1 -43
- package/dist/core/store/item-store.js +1 -693
- package/dist/core/store/paths.d.ts +1 -1
- package/dist/core/store/paths.js +1 -214
- package/dist/core/store/settings-read-cache.js +1 -85
- package/dist/core/store/settings-validator.d.ts +1 -0
- package/dist/core/store/settings-validator.js +1 -421
- package/dist/core/store/settings.js +3 -1309
- package/dist/core/store/tracker-preflight.js +1 -141
- package/dist/core/telemetry/consent.js +5 -108
- package/dist/core/telemetry/observability.js +1 -246
- package/dist/core/telemetry/runtime.js +4 -1988
- package/dist/core/test/background-runs.js +4 -945
- package/dist/core/test/item-test-run-tracking.js +1 -63
- package/dist/core/test/run-selectors.js +1 -120
- package/dist/core/validate/estimate-defaults.js +1 -89
- package/dist/core/validate/fix-planning.js +1 -189
- package/dist/core/validate/linked-artifact-reference.js +1 -36
- package/dist/core/validate/missing-by-type.js +1 -34
- package/dist/core/validate/missing-link-owners.js +1 -95
- package/dist/core/validate/stale-file-classification.js +1 -82
- package/dist/mcp/http-server.js +5 -448
- package/dist/mcp/legacy-adapter.js +1 -77
- package/dist/mcp/runtime-capabilities.js +1 -200
- package/dist/mcp/server.js +4 -1233
- package/dist/mcp/tool-definitions.js +1 -804
- package/dist/sdk/actionability.js +1 -13
- package/dist/sdk/agent/closed-domain-contracts.js +1 -161
- package/dist/sdk/agent/command-recovery.js +1 -59
- package/dist/sdk/agent/command-suggestions.js +1 -66
- package/dist/sdk/agent/create-option-policy.js +1 -31
- package/dist/sdk/agent/identity-config.js +1 -106
- package/dist/sdk/agent/item-addressing.js +1 -207
- package/dist/sdk/agent/refusal-closure-census.js +1 -151
- package/dist/sdk/agent/refusal-closure.js +1 -133
- package/dist/sdk/agent/refusal-corpus-contracts.js +1 -193
- package/dist/sdk/agent/refusal-reachability.js +1 -593
- package/dist/sdk/agent/subcommand-recovery.js +1 -83
- package/dist/sdk/agent/task-transcript-contracts.js +1 -197
- package/dist/sdk/agent/tracker-preflight-contracts.js +1 -126
- package/dist/sdk/agent-capability-contracts.js +1 -428
- package/dist/sdk/agent-session-context.js +1 -9
- package/dist/sdk/annotations.js +1 -448
- package/dist/sdk/author-attribution.js +1 -468
- package/dist/sdk/authoring.js +1 -20
- package/dist/sdk/cli-bootstrap.js +1 -838
- package/dist/sdk/cli-contracts/agent-output-contracts.d.ts +1 -1
- package/dist/sdk/cli-contracts/agent-output-contracts.js +4 -476
- package/dist/sdk/cli-contracts/bootstrap-command-scanner.js +1 -79
- package/dist/sdk/cli-contracts/command-aliases.d.ts +4 -0
- package/dist/sdk/cli-contracts/command-aliases.js +1 -107
- package/dist/sdk/cli-contracts/command-exit-contracts.js +1 -151
- package/dist/sdk/cli-contracts/commander-mutation-options.js +1 -1081
- package/dist/sdk/cli-contracts/commander-types.js +1 -159
- package/dist/sdk/cli-contracts/completeness.js +1 -393
- package/dist/sdk/cli-contracts/enum-contracts.d.ts +1 -1
- package/dist/sdk/cli-contracts/enum-contracts.js +1 -222
- package/dist/sdk/cli-contracts/flag-contracts.js +1 -1947
- package/dist/sdk/cli-contracts/flag-lexicon-contracts.js +1 -347
- package/dist/sdk/cli-contracts/grammar-contracts.js +1 -986
- package/dist/sdk/cli-contracts/registration-helpers.js +7 -990
- package/dist/sdk/cli-contracts/runtime-contracts.d.ts +5 -0
- package/dist/sdk/cli-contracts/runtime-contracts.js +1 -2090
- package/dist/sdk/cli-contracts/schemas/assurance-definition.js +1 -324
- package/dist/sdk/cli-contracts/string-lists.js +1 -16
- package/dist/sdk/cli-contracts/tool-option-contracts.js +1 -461
- package/dist/sdk/cli-contracts/tool-parameter-tables.js +1 -2167
- package/dist/sdk/cli-contracts/tool-schema.d.ts +3 -1
- package/dist/sdk/cli-contracts/tool-schema.js +1 -1664
- package/dist/sdk/cli-contracts/typed-action-inputs.js +1 -4
- package/dist/sdk/cli-contracts.d.ts +1 -1
- package/dist/sdk/cli-contracts.js +1 -17
- package/dist/sdk/cli-program.js +1 -49
- package/dist/sdk/command-line.d.ts +2 -5
- package/dist/sdk/command-line.js +1 -78
- package/dist/sdk/comments.js +1 -133
- package/dist/sdk/compile-cache.js +1 -73
- package/dist/sdk/completion.js +174 -839
- package/dist/sdk/compose.js +1 -1090
- package/dist/sdk/config.js +1 -1204
- package/dist/sdk/context/recency.js +1 -33
- package/dist/sdk/context/semantic-session-attribution.js +1 -82
- package/dist/sdk/context/usage-egress.js +1 -29
- package/dist/sdk/context/usage-ledger.js +3 -185
- package/dist/sdk/context-intent-contracts.js +1 -709
- package/dist/sdk/context-intent-runtime.js +1 -115
- package/dist/sdk/context-packing.js +1 -218
- package/dist/sdk/context-relevance.js +1 -503
- package/dist/sdk/context-signal-store.js +2 -426
- package/dist/sdk/context-usage.js +1 -367
- package/dist/sdk/contracts.js +1 -23
- package/dist/sdk/core-governance.js +1 -14
- package/dist/sdk/core.js +1 -14
- package/dist/sdk/corpus-shape.js +1 -401
- package/dist/sdk/define.js +1 -220
- package/dist/sdk/dependencies.js +1 -718
- package/dist/sdk/dependency-flag-validation.js +1 -156
- package/dist/sdk/dependency-provenance.js +1 -135
- package/dist/sdk/docs.js +1 -14
- package/dist/sdk/duplicates.js +1 -40
- package/dist/sdk/environment/agent-environment.js +1 -466
- package/dist/sdk/environment/host-environment-errors.js +1 -8
- package/dist/sdk/environment/project-runtime-compatibility.js +1 -481
- package/dist/sdk/environment/source-context.js +1 -28
- package/dist/sdk/environment/tracker-preflight.js +1 -9
- package/dist/sdk/error-code-catalog.js +1 -153
- package/dist/sdk/error-runtime.js +1 -58
- package/dist/sdk/errors.js +1 -58
- package/dist/sdk/eval.js +1 -190
- package/dist/sdk/extension/author-manifest.js +1 -92
- package/dist/sdk/extension/bundled-catalog.js +1 -332
- package/dist/sdk/extension/concurrency.js +1 -25
- package/dist/sdk/extension/copy-scope.d.ts +2 -0
- package/dist/sdk/extension/copy-scope.js +2 -0
- package/dist/sdk/extension/custom-field-collisions.js +1 -30
- package/dist/sdk/extension/describe.js +3 -189
- package/dist/sdk/extension/doctor.js +1 -606
- package/dist/sdk/extension/install-plan.d.ts +69 -0
- package/dist/sdk/extension/install-plan.js +2 -0
- package/dist/sdk/extension/install-receipts.d.ts +7 -0
- package/dist/sdk/extension/install-receipts.js +2 -0
- package/dist/sdk/extension/install-runtime.js +3 -313
- package/dist/sdk/extension/install-snapshot.js +1 -66
- package/dist/sdk/extension/install-sources.js +5 -1057
- package/dist/sdk/extension/managed-state.js +2 -252
- package/dist/sdk/extension/migrations.js +2 -174
- package/dist/sdk/extension/output-ownership.js +1 -25
- package/dist/sdk/extension/runtime-summary.js +1 -18
- package/dist/sdk/extension/scaffold.js +4 -2308
- package/dist/sdk/extension/shared.js +1 -147
- package/dist/sdk/extension/source-resolution.js +1 -65
- package/dist/sdk/extension/update-check.js +1 -67
- package/dist/sdk/extension-command-context.js +1 -44
- package/dist/sdk/extension-contracts.js +1 -73
- package/dist/sdk/extension.d.ts +7 -2
- package/dist/sdk/extension.js +1 -2196
- package/dist/sdk/files.js +1 -535
- package/dist/sdk/flag-invocation-contracts.d.ts +0 -5
- package/dist/sdk/flag-invocation-contracts.js +1 -344
- package/dist/sdk/generated/generated-error-code-catalog-part-1.js +1 -2224
- package/dist/sdk/generated/generated-error-code-catalog-part-2.js +1 -2236
- package/dist/sdk/generated-error-code-catalog.js +1 -16
- package/dist/sdk/governance/assurance-action-contracts.js +1 -4
- package/dist/sdk/governance/assurance-action.js +1 -411
- package/dist/sdk/governance/assurance-limits.js +1 -10
- package/dist/sdk/governance/assurance-mutation-error.js +1 -81
- package/dist/sdk/governance/assurance-presets.js +1 -135
- package/dist/sdk/governance/assurance-runtime.js +1 -238
- package/dist/sdk/governance/assurance.js +4 -1182
- package/dist/sdk/governance/boundary-fixtures.js +1 -200
- package/dist/sdk/governance/coverage-assurance.js +1 -60
- package/dist/sdk/governance/defect-recurrence-coverage.js +1 -188
- package/dist/sdk/governance/defect-recurrence-graph.js +1 -120
- package/dist/sdk/governance/defect-recurrence-signals.js +1 -24
- package/dist/sdk/governance/defect-recurrence.js +1 -623
- package/dist/sdk/governance/extension-host-version.js +1 -115
- package/dist/sdk/governance/gc.js +1 -368
- package/dist/sdk/governance/health.js +1 -2367
- package/dist/sdk/governance/hierarchy-validation.js +1 -108
- package/dist/sdk/governance/linked-file-report.js +1 -71
- package/dist/sdk/governance/merge-receipt-history.js +1 -206
- package/dist/sdk/governance/provenance-health.js +1 -282
- package/dist/sdk/governance/reindex.js +4 -761
- package/dist/sdk/governance/stale-work.js +1 -82
- package/dist/sdk/governance/status-role-diagnostics.js +1 -35
- package/dist/sdk/governance/storage-integrity.js +1 -280
- package/dist/sdk/governance/tracked-runtime-cache.js +1 -106
- package/dist/sdk/governance/upgrade.js +2 -327
- package/dist/sdk/governance/validate-history-drift.js +1 -81
- package/dist/sdk/governance/validate-item-reader.js +1 -17
- package/dist/sdk/governance/validate-normalization.js +1 -36
- package/dist/sdk/governance/validate.d.ts +3 -1
- package/dist/sdk/governance/validate.js +1 -2261
- package/dist/sdk/governance/workflow-completeness.d.ts +32 -0
- package/dist/sdk/governance/workflow-completeness.js +2 -0
- package/dist/sdk/governance/workflow-policy.d.ts +47 -0
- package/dist/sdk/governance/workflow-policy.js +4 -0
- package/dist/sdk/governance/workspace-position.js +1 -163
- package/dist/sdk/governance.d.ts +2 -0
- package/dist/sdk/governance.js +1 -31
- package/dist/sdk/graph/adapter.js +1 -181
- package/dist/sdk/graph/analytics.js +1 -474
- package/dist/sdk/graph/assembly.js +1 -377
- package/dist/sdk/graph/cache.js +1 -160
- package/dist/sdk/graph/centrality.js +1 -258
- package/dist/sdk/graph/conformance.js +1 -130
- package/dist/sdk/graph/deadline-scheduling.d.ts +90 -0
- package/dist/sdk/graph/deadline-scheduling.js +2 -0
- package/dist/sdk/graph/durable-cache.d.ts +1 -1
- package/dist/sdk/graph/durable-cache.js +1 -361
- package/dist/sdk/graph/governance-contracts.js +1 -34
- package/dist/sdk/graph/governance.d.ts +13 -1
- package/dist/sdk/graph/governance.js +1 -735
- package/dist/sdk/graph/hierarchy-integrity.js +1 -310
- package/dist/sdk/graph/index.d.ts +3 -2
- package/dist/sdk/graph/index.js +1 -26
- package/dist/sdk/graph/lifecycle-coverage.d.ts +32 -0
- package/dist/sdk/graph/lifecycle-coverage.js +2 -0
- package/dist/sdk/graph/mutation-advisory.js +1 -176
- package/dist/sdk/graph/remediation.js +1 -197
- package/dist/sdk/graph/run.d.ts +15 -1
- package/dist/sdk/graph/run.js +1 -768
- package/dist/sdk/graph/scheduling.js +1 -124
- package/dist/sdk/graph/traversal.js +1 -284
- package/dist/sdk/graph/workspace-relationship-kind-registry.js +1 -27
- package/dist/sdk/graph.js +1 -15
- package/dist/sdk/guide-topics.js +1 -707
- package/dist/sdk/guide.js +1 -279
- package/dist/sdk/history/maintenance.d.ts +71 -0
- package/dist/sdk/history/maintenance.js +2 -0
- package/dist/sdk/history/salvage.js +2 -247
- package/dist/sdk/history/subject.d.ts +19 -0
- package/dist/sdk/history/subject.js +2 -0
- package/dist/sdk/history-analytics.js +1 -282
- package/dist/sdk/history-compact.js +1 -527
- package/dist/sdk/history-mcp.js +1 -68
- package/dist/sdk/history-provenance.js +1 -182
- package/dist/sdk/history-read.js +1 -96
- package/dist/sdk/history-redact.d.ts +1 -14
- package/dist/sdk/history-redact.js +1 -643
- package/dist/sdk/history-repair.d.ts +5 -0
- package/dist/sdk/history-repair.js +1 -657
- package/dist/sdk/improvement-ledger-validation.js +1 -62
- package/dist/sdk/improvement-ledger.js +2 -257
- package/dist/sdk/index.d.ts +4 -1
- package/dist/sdk/index.js +1 -183
- package/dist/sdk/init-agent-guidance.js +2 -496
- package/dist/sdk/init.js +2 -820
- package/dist/sdk/invocation-author.js +1 -39
- package/dist/sdk/item-children.js +1 -90
- package/dist/sdk/item-metadata-index.js +1 -15
- package/dist/sdk/item-schedule.js +1 -27
- package/dist/sdk/item-transaction.js +1 -396
- package/dist/sdk/learnings.js +1 -29
- package/dist/sdk/lifecycle/append.js +2 -53
- package/dist/sdk/lifecycle/claim.d.ts +2 -0
- package/dist/sdk/lifecycle/claim.js +1 -242
- package/dist/sdk/lifecycle/close-many.js +1 -438
- package/dist/sdk/lifecycle/close.js +1 -468
- package/dist/sdk/lifecycle/copy.js +1 -212
- package/dist/sdk/lifecycle/create.js +1 -1949
- package/dist/sdk/lifecycle/delete.js +1 -45
- package/dist/sdk/lifecycle/event-validation-messages.js +1 -91
- package/dist/sdk/lifecycle/focus.js +1 -91
- package/dist/sdk/lifecycle/hierarchy-mutation-lock.js +1 -24
- package/dist/sdk/lifecycle/legacy-none-tokens.js +1 -149
- package/dist/sdk/lifecycle/lifecycle-transitions.js +1 -40
- package/dist/sdk/lifecycle/mcp-actions.d.ts +2 -0
- package/dist/sdk/lifecycle/mcp-actions.js +1 -51
- package/dist/sdk/lifecycle/metadata-normalizers.js +1 -46
- package/dist/sdk/lifecycle/mutation-command-options.js +1 -9
- package/dist/sdk/lifecycle/plan.js +1 -1606
- package/dist/sdk/lifecycle/recurrence-parsers.d.ts +1 -1
- package/dist/sdk/lifecycle/recurrence-parsers.js +1 -147
- package/dist/sdk/lifecycle/reopen.js +1 -68
- package/dist/sdk/lifecycle/repeatable-metadata-parsers.js +1 -143
- package/dist/sdk/lifecycle/restore.d.ts +1 -0
- package/dist/sdk/lifecycle/restore.js +1 -330
- package/dist/sdk/lifecycle/shared-unset-fields.js +1 -295
- package/dist/sdk/lifecycle/update-many.js +1 -861
- package/dist/sdk/lifecycle/update.js +1 -2136
- package/dist/sdk/lifecycle-completion.js +1 -92
- package/dist/sdk/lifecycle-policy.js +1 -120
- package/dist/sdk/linked-artifacts.js +1 -530
- package/dist/sdk/mcp/apps.js +4 -133
- package/dist/sdk/mcp/authorization.js +1 -404
- package/dist/sdk/mcp/discovery.js +1 -494
- package/dist/sdk/mcp/interactions.js +1 -336
- package/dist/sdk/mcp/protocol.d.ts +7 -0
- package/dist/sdk/mcp/protocol.js +1 -184
- package/dist/sdk/mcp/skills.js +1 -389
- package/dist/sdk/mcp/subscriptions.js +1 -211
- package/dist/sdk/mcp/tasks.js +2 -430
- package/dist/sdk/mcp/transport.js +1 -260
- package/dist/sdk/merge/abandoned-receipts.js +1 -46
- package/dist/sdk/merge/driver.js +1 -212
- package/dist/sdk/merge/index.js +1 -16
- package/dist/sdk/merge/install.js +3 -561
- package/dist/sdk/merge/receipt-file-boundary.js +1 -46
- package/dist/sdk/merge/receipt-operation.js +1 -96
- package/dist/sdk/merge/receipt-schema.js +1 -397
- package/dist/sdk/merge/receipts.js +4 -525
- package/dist/sdk/merge/reconcile.js +1 -352
- package/dist/sdk/merge/three-way.js +3 -775
- package/dist/sdk/merge.js +1 -10
- package/dist/sdk/mutation-events.js +1 -292
- package/dist/sdk/mutation-guard.js +1 -216
- package/dist/sdk/notes.js +1 -139
- package/dist/sdk/output-contracts.js +1 -172
- package/dist/sdk/output-projection.js +1 -430
- package/dist/sdk/output-token-accounting.js +1 -140
- package/dist/sdk/output.js +1 -64
- package/dist/sdk/ownership-source.js +1 -21
- package/dist/sdk/package-import-adapters.js +1 -442
- package/dist/sdk/package-migrations.js +1 -20
- package/dist/sdk/package-runtime-options.js +1 -80
- package/dist/sdk/pagination.js +1 -162
- package/dist/sdk/profile.js +1 -454
- package/dist/sdk/provenance.js +1 -258
- package/dist/sdk/public-surface.json +1 -1
- package/dist/sdk/query/activity.js +1 -401
- package/dist/sdk/query/aggregate.d.ts +16 -0
- package/dist/sdk/query/aggregate.js +1 -390
- package/dist/sdk/query/calendar.js +1 -964
- package/dist/sdk/query/complete-list.js +1 -215
- package/dist/sdk/query/context.js +1 -1702
- package/dist/sdk/query/duplicate-candidates.js +1 -70
- package/dist/sdk/query/get.js +1 -450
- package/dist/sdk/query/history.js +1 -186
- package/dist/sdk/query/item-filter-options.js +1 -9
- package/dist/sdk/query/light-metadata.js +1 -18
- package/dist/sdk/query/list-filter-shared.js +1 -81
- package/dist/sdk/query/list.js +1 -1304
- package/dist/sdk/query/multi-value-filters.js +1 -78
- package/dist/sdk/query/next.js +1 -513
- package/dist/sdk/query/parsers.js +1 -44
- package/dist/sdk/query/projection-contracts.js +1 -184
- package/dist/sdk/query/search-contracts.d.ts +27 -0
- package/dist/sdk/query/search-contracts.js +1 -230
- package/dist/sdk/query/search-pagination.js +1 -35
- package/dist/sdk/query/search-rendering.js +1 -105
- package/dist/sdk/query/search.d.ts +6 -4
- package/dist/sdk/query/search.js +2 -1987
- package/dist/sdk/query.js +1 -35
- package/dist/sdk/read-output/continuation.js +1 -194
- package/dist/sdk/read-output-budget.js +1 -135
- package/dist/sdk/read-output-contracts.d.ts +1 -1
- package/dist/sdk/read-output-contracts.js +1 -1225
- package/dist/sdk/read-output-rows.js +1 -186
- package/dist/sdk/read-output-session.js +1 -208
- package/dist/sdk/relationship-analytics.js +1 -410
- package/dist/sdk/relationship-context.js +1 -284
- package/dist/sdk/relationship-history.js +4 -519
- package/dist/sdk/relationship-kinds/contract.js +1 -22
- package/dist/sdk/relationship-migration.js +1 -77
- package/dist/sdk/relationships.js +1 -579
- package/dist/sdk/reproducibility/process.js +1 -87
- package/dist/sdk/runtime-action-aliases.js +1 -59
- package/dist/sdk/runtime-extended-actions.js +1 -177
- package/dist/sdk/runtime-input.js +1 -614
- package/dist/sdk/runtime-primitives.js +1 -84
- package/dist/sdk/runtime-public-contracts.d.ts +2 -1
- package/dist/sdk/runtime-public-contracts.js +1 -4
- package/dist/sdk/runtime-stats-options.js +1 -38
- package/dist/sdk/runtime.d.ts +4 -0
- package/dist/sdk/runtime.js +1 -1928
- package/dist/sdk/scheduling-shortcuts.js +1 -63
- package/dist/sdk/schema-migration.js +3 -856
- package/dist/sdk/schema.d.ts +2 -1
- package/dist/sdk/schema.js +1 -1376
- package/dist/sdk/search-refresh-worker.js +1 -18
- package/dist/sdk/similarity-scoring.js +1 -53
- package/dist/sdk/similarity.js +1 -326
- package/dist/sdk/start-task-status.js +1 -14
- package/dist/sdk/stats.js +1 -270
- package/dist/sdk/structured-mutations.js +1 -580
- package/dist/sdk/telemetry-flush.js +1 -13
- package/dist/sdk/telemetry.js +1 -405
- package/dist/sdk/templates.js +2 -292
- package/dist/sdk/test/batch.js +2 -509
- package/dist/sdk/test/entry.js +1 -70
- package/dist/sdk/test/execution.js +6 -2211
- package/dist/sdk/test/linked-command-detection.js +1 -546
- package/dist/sdk/test/measurements.js +1 -91
- package/dist/sdk/test/parsers.js +1 -545
- package/dist/sdk/test/runs.js +1 -193
- package/dist/sdk/test/trust.js +2 -206
- package/dist/sdk/testing.js +4 -1391
- package/dist/sdk/traceability/runtime-files-lookup.js +1 -32
- package/dist/sdk/traceability/source-traceability.js +1 -292
- package/dist/sdk/tracker-root-discovery.js +1 -9
- package/dist/sdk/workspace-contracts-cache.js +1 -28
- package/dist/sdk/workspace-contracts.js +1 -33
- package/dist/sdk/workspace-memory.js +2 -318
- package/dist/sdk/workspace-recipe.js +1 -71
- package/dist/sdk/workspace-snapshot.js +4 -613
- package/dist/sdk/workspace-transaction-gc.js +1 -149
- package/dist/sdk/workspace-transaction.js +2 -363
- package/dist/sdk/workspace.js +3 -127
- package/dist/types/index.js +1 -9
- package/dist/types.d.ts +4 -0
- package/dist/types.js +1 -245
- package/docs/AGENT_GUIDE.md +1 -1
- package/docs/COMMANDS.md +10 -0
- package/docs/CONFIGURATION.md +12 -1
- package/docs/CONTEXT_ALGORITHM_PORTFOLIO.md +167 -0
- package/docs/DIAGNOSTIC_OUTPUT_CONTRACTS.md +9 -3
- package/docs/EXTENSIONS.md +1 -0
- package/docs/HISTORY_MAINTENANCE.md +125 -0
- package/docs/MCP_2026_07_28_CONFORMANCE.md +20 -10
- package/docs/PACKAGE_EVIDENCE.md +92 -0
- package/docs/PLANNING_MEASUREMENTS.md +183 -0
- package/docs/README.md +4 -0
- package/docs/READ_OUTPUT_CONTRACTS.md +5 -0
- package/docs/SCRIPTING.md +21 -0
- package/docs/TESTING.md +33 -0
- package/docs/WORKFLOW_POLICIES.md +129 -0
- package/docs/generated/FLAG_LEXICON_BUDGETS.md +7 -7
- package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +11 -5
- package/marketplace.json +2 -2
- package/package.json +5 -5
- package/packages/pm-beads/package.json +1 -1
- package/packages/pm-calendar/package.json +1 -1
- package/packages/pm-command-kit/package.json +1 -1
- package/packages/pm-digital-twin/package.json +1 -1
- package/packages/pm-governance-audit/package.json +1 -1
- package/packages/pm-guide-shell/package.json +1 -1
- package/packages/pm-kanban/package.json +1 -1
- package/packages/pm-lifecycle-hooks/package.json +1 -1
- package/packages/pm-linked-test-adapters/package.json +1 -1
- package/packages/pm-search-advanced/package.json +1 -1
- package/packages/pm-templates/package.json +1 -1
- package/packages/pm-todos/package.json +1 -1
- package/packages/pm-vcs/package.json +1 -1
- package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
- package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
- package/scripts/finalize-build.mjs +45 -3
- package/dist/cli-bundle/chunks/chunk-AZDFJGH6.js +0 -9
- package/dist/cli-bundle/chunks/chunk-CKOL5U7J.js +0 -77
- package/dist/cli-bundle/chunks/chunk-JX4DH4WC.js +0 -3
- package/dist/cli-bundle/chunks/chunk-OF76PSDQ.js +0 -5
- package/dist/cli-bundle/chunks/chunk-QUWFABDM.js +0 -232
- package/dist/cli-bundle/chunks/chunk-QWRRFYK3.js +0 -2
- package/dist/cli-bundle/chunks/chunk-RWWBOWJ5.js +0 -2
- package/dist/cli-bundle/chunks/chunk-WGAOYSYH.js +0 -40
- package/dist/cli-bundle/chunks/chunk-WI2AYPA7.js +0 -2
- package/dist/cli-bundle/chunks/register-list-query-5JL52D33.js +0 -11
- package/dist/cli-bundle/chunks/register-mutation-ZPG7KMVP.js +0 -20
- package/dist/cli-bundle/chunks/register-operations-I5W3KMGB.js +0 -2
- package/dist/cli-bundle/chunks/register-setup-H4SVAVX7.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-AL5ON6K6.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-CHC2IDXA.js +0 -6
- package/dist/cli-bundle/focused-chunks/chunk-CK6QFAPZ.js +0 -20
- package/dist/cli-bundle/focused-chunks/chunk-EZR3GHFE.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-H2WJWK7L.js +0 -56
- package/dist/cli-bundle/focused-chunks/chunk-NTPY5GSO.js +0 -3
- package/dist/cli-bundle/focused-chunks/chunk-P5O7MP5Y.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-PDMW2E36.js +0 -177
- package/dist/cli-bundle/focused-chunks/chunk-PEFABF7E.js +0 -26
- package/dist/cli-bundle/focused-chunks/chunk-QTVCLMSZ.js +0 -6
- package/dist/cli-bundle/focused-chunks/chunk-QTZRBUYA.js +0 -8
- package/dist/cli-bundle/focused-chunks/chunk-SGQST3PQ.js +0 -12
- package/dist/cli-bundle/focused-chunks/chunk-UKHASMMP.js +0 -10
- package/dist/cli-bundle/focused-chunks/chunk-ZPEKQHOC.js +0 -2
|
@@ -1,290 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* @module cli/migration-gates
|
|
3
|
-
*
|
|
4
|
-
* Provides CLI runtime support for Migration Gates.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="33842ea7-43c9-52a3-a9ec-75f190a5fd6f")}catch(e){}}();
|
|
8
|
-
import { pathExists, getActiveExtensionRegistrations, resolveItemTypeRegistry, migrateItemFilesToFormat, getSettingsPath, persistSelectedItemFormat, readSettingsWithMetadata, writeSettings, EXIT_CODE, PmCliError, toNonEmptyStringOrUndefined, printError, evaluateMutationGuard, isMutationAction, resolveAuthor, locateItem, readLocatedItem, } from "../sdk/runtime-primitives.js";
|
|
9
|
-
/** Implements resolve migration id for the public runtime surface of this module. */
|
|
10
|
-
export function resolveMigrationId(definition, fallbackIndex) {
|
|
11
|
-
const explicit = toNonEmptyStringOrUndefined(definition.id);
|
|
12
|
-
if (explicit) {
|
|
13
|
-
return explicit;
|
|
14
|
-
}
|
|
15
|
-
return `migration-${String(fallbackIndex + 1).padStart(3, "0")}`;
|
|
16
|
-
}
|
|
17
|
-
/** Implements resolve normalized migration status for the public runtime surface of this module. */
|
|
18
|
-
export function resolveNormalizedMigrationStatus(definition) {
|
|
19
|
-
const normalized = toNonEmptyStringOrUndefined(definition.status)?.toLowerCase();
|
|
20
|
-
return normalized ?? "pending";
|
|
21
|
-
}
|
|
22
|
-
function isMandatoryMigrationDefinition(definition) {
|
|
23
|
-
return definition.mandatory === true;
|
|
24
|
-
}
|
|
25
|
-
function compareMandatoryMigrationBlockers(left, right) {
|
|
26
|
-
const byLayer = left.layer.localeCompare(right.layer);
|
|
27
|
-
if (byLayer !== 0) {
|
|
28
|
-
return byLayer;
|
|
29
|
-
}
|
|
30
|
-
const byName = left.name.localeCompare(right.name);
|
|
31
|
-
if (byName !== 0) {
|
|
32
|
-
return byName;
|
|
33
|
-
}
|
|
34
|
-
return left.id.localeCompare(right.id);
|
|
35
|
-
}
|
|
36
|
-
/** Implements collect mandatory migration blockers for the public runtime surface of this module. */
|
|
37
|
-
export function collectMandatoryMigrationBlockers(migrations) {
|
|
38
|
-
const blockers = [];
|
|
39
|
-
migrations.forEach((entry, index) => {
|
|
40
|
-
if (!isMandatoryMigrationDefinition(entry.definition)) {
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
const status = resolveNormalizedMigrationStatus(entry.definition);
|
|
44
|
-
if (status === "applied") {
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
blockers.push({
|
|
48
|
-
layer: entry.layer,
|
|
49
|
-
name: entry.name,
|
|
50
|
-
id: resolveMigrationId(entry.definition, index),
|
|
51
|
-
status,
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
blockers.sort(compareMandatoryMigrationBlockers);
|
|
55
|
-
return blockers;
|
|
56
|
-
}
|
|
57
|
-
function hasMutatingListValues(value) {
|
|
58
|
-
return Array.isArray(value) && value.length > 0;
|
|
59
|
-
}
|
|
60
|
-
const ALWAYS_MUTATING_COMMANDS = new Set([
|
|
61
|
-
"create",
|
|
62
|
-
"beads import",
|
|
63
|
-
"todos import",
|
|
64
|
-
]);
|
|
65
|
-
const FORCEABLE_MUTATING_COMMANDS = new Set([
|
|
66
|
-
"restore",
|
|
67
|
-
"update",
|
|
68
|
-
"close",
|
|
69
|
-
"delete",
|
|
70
|
-
"append",
|
|
71
|
-
"claim",
|
|
72
|
-
"release",
|
|
73
|
-
]);
|
|
74
|
-
const TEXT_APPEND_COMMANDS = new Set(["comments", "notes", "learnings"]);
|
|
75
|
-
const LIST_MUTATION_COMMANDS = new Set(["files", "docs", "test"]);
|
|
76
|
-
const POSITIONAL_MUTATION_VERBS = new Set([
|
|
77
|
-
"activate",
|
|
78
|
-
"add",
|
|
79
|
-
"add-field",
|
|
80
|
-
"add-status",
|
|
81
|
-
"add-type",
|
|
82
|
-
"apply",
|
|
83
|
-
"compact",
|
|
84
|
-
"create",
|
|
85
|
-
"deactivate",
|
|
86
|
-
"delete",
|
|
87
|
-
"disable",
|
|
88
|
-
"edit",
|
|
89
|
-
"enable",
|
|
90
|
-
"import",
|
|
91
|
-
"infer",
|
|
92
|
-
"install",
|
|
93
|
-
"materialize",
|
|
94
|
-
"migrate",
|
|
95
|
-
"redact",
|
|
96
|
-
"remove",
|
|
97
|
-
"remove-field",
|
|
98
|
-
"remove-status",
|
|
99
|
-
"remove-type",
|
|
100
|
-
"remap-status",
|
|
101
|
-
"rename-field",
|
|
102
|
-
"rename-type",
|
|
103
|
-
"repair",
|
|
104
|
-
"run",
|
|
105
|
-
"save",
|
|
106
|
-
"set",
|
|
107
|
-
"unset",
|
|
108
|
-
"update",
|
|
109
|
-
"upgrade",
|
|
110
|
-
]);
|
|
111
|
-
/** Implements decide write gate for the public runtime surface of this module. */
|
|
112
|
-
export function decideWriteGate(commandPath, options) {
|
|
113
|
-
const forceRequested = options.force === true;
|
|
114
|
-
if (ALWAYS_MUTATING_COMMANDS.has(commandPath)) {
|
|
115
|
-
return { isMutation: true, forceCapable: false, forceRequested: false };
|
|
116
|
-
}
|
|
117
|
-
if (FORCEABLE_MUTATING_COMMANDS.has(commandPath)) {
|
|
118
|
-
return { isMutation: true, forceCapable: true, forceRequested };
|
|
119
|
-
}
|
|
120
|
-
if (TEXT_APPEND_COMMANDS.has(commandPath)) {
|
|
121
|
-
return {
|
|
122
|
-
isMutation: typeof options.add === "string",
|
|
123
|
-
forceCapable: true,
|
|
124
|
-
forceRequested,
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
if (LIST_MUTATION_COMMANDS.has(commandPath)) {
|
|
128
|
-
return {
|
|
129
|
-
isMutation: hasMutatingListValues(options.add) ||
|
|
130
|
-
hasMutatingListValues(options.remove),
|
|
131
|
-
forceCapable: true,
|
|
132
|
-
forceRequested,
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
return { isMutation: false, forceCapable: false, forceRequested: false };
|
|
136
|
-
}
|
|
137
|
-
function isMutationInvocation(commandPath, commandArgs, options) {
|
|
138
|
-
if (decideWriteGate(commandPath, options).isMutation) {
|
|
139
|
-
return true;
|
|
140
|
-
}
|
|
141
|
-
const normalizedCommand = commandPath.trim().toLowerCase();
|
|
142
|
-
if (!isMutationAction(normalizedCommand)) {
|
|
143
|
-
return false;
|
|
144
|
-
}
|
|
145
|
-
if ([
|
|
146
|
-
"close-many",
|
|
147
|
-
"close-task",
|
|
148
|
-
"copy",
|
|
149
|
-
"delete",
|
|
150
|
-
"discover",
|
|
151
|
-
"focus",
|
|
152
|
-
"pause-task",
|
|
153
|
-
"start-task",
|
|
154
|
-
"update-many",
|
|
155
|
-
].includes(normalizedCommand)) {
|
|
156
|
-
return true;
|
|
157
|
-
}
|
|
158
|
-
return commandArgs.some((argument) => POSITIONAL_MUTATION_VERBS.has(argument.trim().toLowerCase()));
|
|
159
|
-
}
|
|
160
|
-
/** Normalize configured active-status spellings for preflight comparison. */
|
|
161
|
-
export function normalizedLifecycleStatus(value) {
|
|
162
|
-
return (value ?? "in_progress").trim().toLowerCase().replaceAll("-", "_");
|
|
163
|
-
}
|
|
164
|
-
/** Convert incomplete schema-evolution CLI invocations into typed usage errors. */
|
|
165
|
-
export function enforceSchemaMigrationInput(commandPath, commandArgs, options) {
|
|
166
|
-
const subcommand = commandArgs[0]?.trim().toLowerCase() ?? "";
|
|
167
|
-
if (commandPath.trim().toLowerCase() !== "schema" ||
|
|
168
|
-
!["rename-type", "rename-field", "remap-status"].includes(subcommand)) {
|
|
169
|
-
return;
|
|
170
|
-
}
|
|
171
|
-
const missing = [];
|
|
172
|
-
if (!toNonEmptyStringOrUndefined(commandArgs[1]))
|
|
173
|
-
missing.push("source");
|
|
174
|
-
if (!toNonEmptyStringOrUndefined(options.to))
|
|
175
|
-
missing.push("--to");
|
|
176
|
-
if (missing.length === 0) {
|
|
177
|
-
return;
|
|
178
|
-
}
|
|
179
|
-
throw new PmCliError(`Schema migration requires ${missing.join(", ")}.`, EXIT_CODE.USAGE, {
|
|
180
|
-
code: "schema_migration_input_required",
|
|
181
|
-
required: missing.join(","),
|
|
182
|
-
why: "Schema migrations require a source and target. A workspace-bound stable migration id is derived automatically when --migration-id is omitted.",
|
|
183
|
-
recovery: {
|
|
184
|
-
recovery_mode: "compact",
|
|
185
|
-
missing_required_fields: missing,
|
|
186
|
-
suggested_flags: missing.filter((entry) => entry.startsWith("--")),
|
|
187
|
-
suggested_retry: `pm schema ${subcommand} <source> --to <target>`,
|
|
188
|
-
},
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
|
-
async function warnForUnclaimedInProgressUpdate(commandPath, commandArgs, options, pmRoot, settings) {
|
|
192
|
-
if (commandPath.trim().toLowerCase() !== "update" ||
|
|
193
|
-
typeof options.status !== "string" ||
|
|
194
|
-
normalizedLifecycleStatus(options.status) !==
|
|
195
|
-
normalizedLifecycleStatus(settings.schema.workflow.in_progress_status)) {
|
|
196
|
-
return;
|
|
197
|
-
}
|
|
198
|
-
const rawId = commandArgs[0];
|
|
199
|
-
if (!rawId) {
|
|
200
|
-
return;
|
|
201
|
-
}
|
|
202
|
-
const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());
|
|
203
|
-
const located = await locateItem(pmRoot, rawId, settings.id_prefix, settings.item_format, typeRegistry.type_to_folder);
|
|
204
|
-
if (!located) {
|
|
205
|
-
return;
|
|
206
|
-
}
|
|
207
|
-
const current = await readLocatedItem(located, { schema: settings.schema });
|
|
208
|
-
const requestedAssignee = typeof options.assignee === "string" ? options.assignee.trim() : undefined;
|
|
209
|
-
const prospectiveAssignee = requestedAssignee === undefined
|
|
210
|
-
? current.document.metadata.assignee?.trim()
|
|
211
|
-
: ["", "none", "null", "undefined"].includes(requestedAssignee.toLowerCase())
|
|
212
|
-
? undefined
|
|
213
|
-
: requestedAssignee;
|
|
214
|
-
if (prospectiveAssignee) {
|
|
215
|
-
return;
|
|
216
|
-
}
|
|
217
|
-
printError(`warning:in_progress_item_unclaimed:${located.id}:claim_with=pm claim ${located.id}`);
|
|
218
|
-
}
|
|
219
|
-
/**
|
|
220
|
-
* Apply SDK-owned provenance and secret policy to one parsed CLI invocation.
|
|
221
|
-
* Advisory output is stderr-only so JSON/TOON result envelopes stay unchanged.
|
|
222
|
-
*/
|
|
223
|
-
export async function enforceMutationGuardPreflight(commandPath, commandArgs, options, global, pmRoot) {
|
|
224
|
-
if (!isMutationInvocation(commandPath, commandArgs, options)) {
|
|
225
|
-
return;
|
|
226
|
-
}
|
|
227
|
-
enforceSchemaMigrationInput(commandPath, commandArgs, options);
|
|
228
|
-
if (!(await pathExists(getSettingsPath(pmRoot)))) {
|
|
229
|
-
return;
|
|
230
|
-
}
|
|
231
|
-
const settings = await readSettingsWithMetadata(pmRoot);
|
|
232
|
-
if (global.json !== true) {
|
|
233
|
-
await warnForUnclaimedInProgressUpdate(commandPath, commandArgs, options, pmRoot, settings.settings);
|
|
234
|
-
}
|
|
235
|
-
const result = evaluateMutationGuard({
|
|
236
|
-
author: resolveAuthor(global.author, settings.settings.author_default),
|
|
237
|
-
payload: { command: commandPath, args: commandArgs, options },
|
|
238
|
-
settings: settings.settings.mutation_guard,
|
|
239
|
-
force: global.force === true || options.force === true,
|
|
240
|
-
});
|
|
241
|
-
for (const warning of result.warnings) {
|
|
242
|
-
printError(`warning:${warning}`);
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
/** Implements enforce mandatory migration write gate for the public runtime surface of this module. */
|
|
246
|
-
export function enforceMandatoryMigrationWriteGate(commandPath, options, blockers) {
|
|
247
|
-
if (blockers.length === 0) {
|
|
248
|
-
return;
|
|
249
|
-
}
|
|
250
|
-
const decision = decideWriteGate(commandPath, options);
|
|
251
|
-
if (!decision.isMutation) {
|
|
252
|
-
return;
|
|
253
|
-
}
|
|
254
|
-
if (decision.forceCapable && decision.forceRequested) {
|
|
255
|
-
return;
|
|
256
|
-
}
|
|
257
|
-
const codes = blockers.map((entry) => `extension_migration_blocking:${entry.layer}:${entry.name}:${entry.id}:${entry.status}`);
|
|
258
|
-
const forceGuidance = decision.forceCapable
|
|
259
|
-
? "Re-run this command with --force to bypass."
|
|
260
|
-
: "This command path does not support --force bypass.";
|
|
261
|
-
throw new PmCliError(`Write command "${commandPath}" blocked by unresolved mandatory extension migrations (${codes.join(",")}). ${forceGuidance}`, EXIT_CODE.CONFLICT);
|
|
262
|
-
}
|
|
263
|
-
/** Implements enforce item format write gate and preflight migration for the public runtime surface of this module. */
|
|
264
|
-
export async function enforceItemFormatWriteGateAndPreflightMigration(commandPath, options, pmRoot, decision) {
|
|
265
|
-
const writeGate = decideWriteGate(commandPath, options);
|
|
266
|
-
if (!writeGate.isMutation) {
|
|
267
|
-
return;
|
|
268
|
-
}
|
|
269
|
-
if (!decision.enforce_item_format_gate &&
|
|
270
|
-
!decision.run_preflight_item_format_sync) {
|
|
271
|
-
return;
|
|
272
|
-
}
|
|
273
|
-
if (!(await pathExists(getSettingsPath(pmRoot)))) {
|
|
274
|
-
return;
|
|
275
|
-
}
|
|
276
|
-
const { settings, metadata, warnings } = await readSettingsWithMetadata(pmRoot);
|
|
277
|
-
for (const warning of warnings) {
|
|
278
|
-
printError(`warning:${warning}`);
|
|
279
|
-
}
|
|
280
|
-
if (decision.enforce_item_format_gate && !metadata.has_explicit_item_format) {
|
|
281
|
-
persistSelectedItemFormat(settings);
|
|
282
|
-
await writeSettings(pmRoot, settings, "item_format:auto_select_default");
|
|
283
|
-
}
|
|
284
|
-
if (decision.run_preflight_item_format_sync) {
|
|
285
|
-
const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());
|
|
286
|
-
await migrateItemFilesToFormat(pmRoot, settings.item_format, "item_format:pre_mutation_sync", typeRegistry.type_to_folder, settings.schema);
|
|
287
|
-
}
|
|
288
|
-
}
|
|
1
|
+
!(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="840b471e-c996-57e2-b97c-3a84bd68f050")}catch(e2){}})();import{pathExists,getActiveExtensionRegistrations,resolveItemTypeRegistry,migrateItemFilesToFormat,getSettingsPath,persistSelectedItemFormat,readSettingsWithMetadata,writeSettings,EXIT_CODE,PmCliError,toNonEmptyStringOrUndefined,printError,evaluateMutationGuard,isMutationAction,resolveAuthor,locateItem,readLocatedItem}from"../sdk/runtime-primitives.js";function resolveMigrationId(definition,fallbackIndex){const explicit=toNonEmptyStringOrUndefined(definition.id);if(explicit){return explicit}return`migration-${String(fallbackIndex+1).padStart(3,"0")}`}function resolveNormalizedMigrationStatus(definition){const normalized=toNonEmptyStringOrUndefined(definition.status)?.toLowerCase();return normalized??"pending"}function isMandatoryMigrationDefinition(definition){return definition.mandatory===true}function compareMandatoryMigrationBlockers(left,right){const byLayer=left.layer.localeCompare(right.layer);if(byLayer!==0){return byLayer}const byName=left.name.localeCompare(right.name);if(byName!==0){return byName}return left.id.localeCompare(right.id)}function collectMandatoryMigrationBlockers(migrations){const blockers=[];migrations.forEach((entry,index)=>{if(!isMandatoryMigrationDefinition(entry.definition)){return}const status=resolveNormalizedMigrationStatus(entry.definition);if(status==="applied"){return}blockers.push({layer:entry.layer,name:entry.name,id:resolveMigrationId(entry.definition,index),status})});blockers.sort(compareMandatoryMigrationBlockers);return blockers}function hasMutatingListValues(value){return Array.isArray(value)&&value.length>0}const ALWAYS_MUTATING_COMMANDS=new Set(["create","beads import","todos import"]);const FORCEABLE_MUTATING_COMMANDS=new Set(["restore","update","close","delete","append","claim","release"]);const TEXT_APPEND_COMMANDS=new Set(["comments","notes","learnings"]);const LIST_MUTATION_COMMANDS=new Set(["files","docs","test"]);const POSITIONAL_MUTATION_VERBS=new Set(["activate","add","add-field","add-status","add-type","apply","compact","create","deactivate","delete","disable","edit","enable","import","infer","install","materialize","migrate","redact","remove","remove-field","remove-status","remove-type","remap-status","rename-field","rename-type","repair","run","save","set","unset","update","upgrade"]);function decideWriteGate(commandPath,options){const forceRequested=options.force===true;if(ALWAYS_MUTATING_COMMANDS.has(commandPath)){return{isMutation:true,forceCapable:false,forceRequested:false}}if(FORCEABLE_MUTATING_COMMANDS.has(commandPath)){return{isMutation:true,forceCapable:true,forceRequested}}if(TEXT_APPEND_COMMANDS.has(commandPath)){return{isMutation:typeof options.add==="string",forceCapable:true,forceRequested}}if(LIST_MUTATION_COMMANDS.has(commandPath)){return{isMutation:hasMutatingListValues(options.add)||hasMutatingListValues(options.remove),forceCapable:true,forceRequested}}return{isMutation:false,forceCapable:false,forceRequested:false}}function isMutationInvocation(commandPath,commandArgs,options){if(decideWriteGate(commandPath,options).isMutation){return true}const normalizedCommand=commandPath.trim().toLowerCase();if(!isMutationAction(normalizedCommand)){return false}if(["close-many","close-task","copy","delete","discover","focus","pause-task","start-task","update-many"].includes(normalizedCommand)){return true}return commandArgs.some(argument=>POSITIONAL_MUTATION_VERBS.has(argument.trim().toLowerCase()))}function normalizedLifecycleStatus(value){return(value??"in_progress").trim().toLowerCase().replaceAll("-","_")}function enforceSchemaMigrationInput(commandPath,commandArgs,options){const subcommand=commandArgs[0]?.trim().toLowerCase()??"";if(commandPath.trim().toLowerCase()!=="schema"||!["rename-type","rename-field","remap-status"].includes(subcommand)){return}const missing=[];if(!toNonEmptyStringOrUndefined(commandArgs[1]))missing.push("source");if(!toNonEmptyStringOrUndefined(options.to))missing.push("--to");if(missing.length===0){return}throw new PmCliError(`Schema migration requires ${missing.join(", ")}.`,EXIT_CODE.USAGE,{code:"schema_migration_input_required",required:missing.join(","),why:"Schema migrations require a source and target. A workspace-bound stable migration id is derived automatically when --migration-id is omitted.",recovery:{recovery_mode:"compact",missing_required_fields:missing,suggested_flags:missing.filter(entry=>entry.startsWith("--")),suggested_retry:`pm schema ${subcommand} <source> --to <target>`}})}async function warnForUnclaimedInProgressUpdate(commandPath,commandArgs,options,pmRoot,settings){if(commandPath.trim().toLowerCase()!=="update"||typeof options.status!=="string"||normalizedLifecycleStatus(options.status)!==normalizedLifecycleStatus(settings.schema.workflow.in_progress_status)){return}const rawId=commandArgs[0];if(!rawId){return}const typeRegistry=resolveItemTypeRegistry(settings,getActiveExtensionRegistrations());const located=await locateItem(pmRoot,rawId,settings.id_prefix,settings.item_format,typeRegistry.type_to_folder);if(!located){return}const current=await readLocatedItem(located,{schema:settings.schema});const requestedAssignee=typeof options.assignee==="string"?options.assignee.trim():void 0;const prospectiveAssignee=requestedAssignee===void 0?current.document.metadata.assignee?.trim():["","none","null","undefined"].includes(requestedAssignee.toLowerCase())?void 0:requestedAssignee;if(prospectiveAssignee){return}printError(`warning:in_progress_item_unclaimed:${located.id}:claim_with=pm claim ${located.id}`)}async function enforceMutationGuardPreflight(commandPath,commandArgs,options,global2,pmRoot){if(!isMutationInvocation(commandPath,commandArgs,options)){return}enforceSchemaMigrationInput(commandPath,commandArgs,options);if(!await pathExists(getSettingsPath(pmRoot))){return}const settings=await readSettingsWithMetadata(pmRoot);if(global2.json!==true){await warnForUnclaimedInProgressUpdate(commandPath,commandArgs,options,pmRoot,settings.settings)}const result=evaluateMutationGuard({author:resolveAuthor(global2.author,settings.settings.author_default),payload:{command:commandPath,args:commandArgs,options},settings:settings.settings.mutation_guard,force:global2.force===true||options.force===true});for(const warning of result.warnings){printError(`warning:${warning}`)}}function enforceMandatoryMigrationWriteGate(commandPath,options,blockers){if(blockers.length===0){return}const decision=decideWriteGate(commandPath,options);if(!decision.isMutation){return}if(decision.forceCapable&&decision.forceRequested){return}const codes=blockers.map(entry=>`extension_migration_blocking:${entry.layer}:${entry.name}:${entry.id}:${entry.status}`);const forceGuidance=decision.forceCapable?"Re-run this command with --force to bypass.":"This command path does not support --force bypass.";throw new PmCliError(`Write command "${commandPath}" blocked by unresolved mandatory extension migrations (${codes.join(",")}). ${forceGuidance}`,EXIT_CODE.CONFLICT)}async function enforceItemFormatWriteGateAndPreflightMigration(commandPath,options,pmRoot,decision){const writeGate=decideWriteGate(commandPath,options);if(!writeGate.isMutation){return}if(!decision.enforce_item_format_gate&&!decision.run_preflight_item_format_sync){return}if(!await pathExists(getSettingsPath(pmRoot))){return}const{settings,metadata,warnings}=await readSettingsWithMetadata(pmRoot);for(const warning of warnings){printError(`warning:${warning}`)}if(decision.enforce_item_format_gate&&!metadata.has_explicit_item_format){persistSelectedItemFormat(settings);await writeSettings(pmRoot,settings,"item_format:auto_select_default")}if(decision.run_preflight_item_format_sync){const typeRegistry=resolveItemTypeRegistry(settings,getActiveExtensionRegistrations());await migrateItemFilesToFormat(pmRoot,settings.item_format,"item_format:pre_mutation_sync",typeRegistry.type_to_folder,settings.schema)}}export{collectMandatoryMigrationBlockers,decideWriteGate,enforceItemFormatWriteGateAndPreflightMigration,enforceMandatoryMigrationWriteGate,enforceMutationGuardPreflight,enforceSchemaMigrationInput,normalizedLifecycleStatus,resolveMigrationId,resolveNormalizedMigrationStatus};
|
|
289
2
|
//# sourceMappingURL=migration-gates.js.map
|
|
290
|
-
//# debugId=33842ea7-43c9-52a3-a9ec-75f190a5fd6f
|
package/dist/cli/public.js
CHANGED
|
@@ -1,21 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* @module cli/public
|
|
3
|
-
*
|
|
4
|
-
* Publishes the supported embeddable CLI entrypoint without exposing the
|
|
5
|
-
* implementation module's repository-only test seams to package consumers.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="8e212bdf-7568-54dd-91aa-7de146d65d03")}catch(e){}}();
|
|
9
|
-
import { runPmCli as runInternalPmCli } from "./main.js";
|
|
10
|
-
/** Run one embedded CLI invocation without leaking its exit status into the host process. */
|
|
11
|
-
export async function runPmCli(rawArgv) {
|
|
12
|
-
const previousExitCode = process.exitCode;
|
|
13
|
-
try {
|
|
14
|
-
await runInternalPmCli(rawArgv);
|
|
15
|
-
}
|
|
16
|
-
finally {
|
|
17
|
-
process.exitCode = previousExitCode;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
1
|
+
!(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b63b9ea0-d392-547a-a05b-0911712d5016")}catch(e2){}})();import{runPmCli as runInternalPmCli}from"./main.js";async function runPmCli(rawArgv){const previousExitCode=process.exitCode;try{await runInternalPmCli(rawArgv)}finally{process.exitCode=previousExitCode}}export{runPmCli};
|
|
20
2
|
//# sourceMappingURL=public.js.map
|
|
21
|
-
//# debugId=8e212bdf-7568-54dd-91aa-7de146d65d03
|
|
@@ -1,271 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="775518a4-ff3e-5a54-8fbd-b2c4863e23db")}catch(e){}}();
|
|
3
|
-
import { EXIT_CODE, PmCliError, } from "../sdk/runtime-primitives.js";
|
|
4
|
-
import { renderPmCommand } from "../sdk/command-line.js";
|
|
5
|
-
import { runComments } from "./commands/comments.js";
|
|
6
|
-
import { runLearnings } from "./commands/learnings.js";
|
|
7
|
-
import { runNotes } from "./commands/notes.js";
|
|
8
|
-
import { addHiddenOption, getGlobalOptions, invalidateSearchCachesForMutation, printError, printResult, readOptionString, } from "./registration-helpers.js";
|
|
9
|
-
function assertNoTransposedAnnotationAction(collection, id, text, options) {
|
|
10
|
-
if (id.trim().toLowerCase() !== "add" || !text?.trim()) {
|
|
11
|
-
return;
|
|
12
|
-
}
|
|
13
|
-
const suppliedText = readOptionString(options, "add") ??
|
|
14
|
-
readOptionString(options, "text") ??
|
|
15
|
-
readOptionString(options, "note") ??
|
|
16
|
-
readOptionString(options, "body") ??
|
|
17
|
-
readOptionString(options, "comment");
|
|
18
|
-
const file = readOptionString(options, "file");
|
|
19
|
-
const retryArgs = [collection, text.trim()];
|
|
20
|
-
if (suppliedText !== undefined)
|
|
21
|
-
retryArgs.push("--add", suppliedText);
|
|
22
|
-
else if (options.stdin === true)
|
|
23
|
-
retryArgs.push("--stdin");
|
|
24
|
-
else if (file !== undefined)
|
|
25
|
-
retryArgs.push("--file", file);
|
|
26
|
-
else
|
|
27
|
-
retryArgs.push("--add", "-");
|
|
28
|
-
const suggestedRetry = renderPmCommand(retryArgs);
|
|
29
|
-
const stdinRetry = renderPmCommand([collection, text.trim(), "--add", "-"]);
|
|
30
|
-
throw new PmCliError(`The positional token "add" was parsed as the item id, while "${text.trim()}" was parsed as annotation text. ${collection} does not use an add subcommand.`, EXIT_CODE.USAGE, {
|
|
31
|
-
code: "annotation_transposed_subcommand",
|
|
32
|
-
reason: "noun_verb_object_transposition",
|
|
33
|
-
required: `Place the item id immediately after ${collection}, then use --add for annotation text.`,
|
|
34
|
-
examples: [...new Set([suggestedRetry, stdinRetry])],
|
|
35
|
-
recovery: {
|
|
36
|
-
attempted_command: `pm ${collection} add ${text.trim()}`,
|
|
37
|
-
normalized_args: [collection, "add", text.trim()],
|
|
38
|
-
parsed_positionals: [
|
|
39
|
-
{ role: "transposed_subcommand", value: "add" },
|
|
40
|
-
{ role: "item_id", value: text.trim() },
|
|
41
|
-
],
|
|
42
|
-
suggested_retry: suggestedRetry,
|
|
43
|
-
},
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
function resolveAnnotationTextAliases(label, options, aliases) {
|
|
47
|
-
const supplied = aliases.flatMap((alias) => {
|
|
48
|
-
const value = readOptionString(options, alias);
|
|
49
|
-
return value === undefined ? [] : [{ alias, value }];
|
|
50
|
-
});
|
|
51
|
-
const distinctValues = [...new Set(supplied.map(({ value }) => value))];
|
|
52
|
-
if (distinctValues.length > 1) {
|
|
53
|
-
throw new PmCliError(`Specify ${label} text with one alias or the same value across aliases: ${supplied.map(({ alias }) => `--${alias}`).join(", ")}`, EXIT_CODE.USAGE, { code: "annotation_alias_conflict" });
|
|
54
|
-
}
|
|
55
|
-
return supplied[0]?.value;
|
|
56
|
-
}
|
|
57
|
-
function resolveCommentSources(text, options) {
|
|
58
|
-
const editIndex = typeof options.edit === "number" ? options.edit : undefined;
|
|
59
|
-
const deleteIndex = typeof options.delete === "number" ? options.delete : undefined;
|
|
60
|
-
const addFromOption = resolveAnnotationTextAliases("comment", options, [
|
|
61
|
-
"add",
|
|
62
|
-
"text",
|
|
63
|
-
"body",
|
|
64
|
-
"comment",
|
|
65
|
-
]);
|
|
66
|
-
const addFromPositional = typeof text === "string" ? text : undefined;
|
|
67
|
-
const readFromStdin = options.stdin === true;
|
|
68
|
-
const readFromFile = readOptionString(options, "file");
|
|
69
|
-
const sourceCount = Number(addFromOption !== undefined) +
|
|
70
|
-
Number(addFromPositional !== undefined) +
|
|
71
|
-
Number(readFromStdin) +
|
|
72
|
-
Number(readFromFile !== undefined);
|
|
73
|
-
if (sourceCount > 1) {
|
|
74
|
-
if (addFromOption !== undefined &&
|
|
75
|
-
addFromPositional !== undefined &&
|
|
76
|
-
!readFromStdin &&
|
|
77
|
-
readFromFile === undefined) {
|
|
78
|
-
throw new PmCliError("Specify comment text either as positional [text] or with --add, not both", EXIT_CODE.USAGE);
|
|
79
|
-
}
|
|
80
|
-
throw new PmCliError("Specify comment text with exactly one source: positional [text], --add, --stdin, or --file", EXIT_CODE.USAGE);
|
|
81
|
-
}
|
|
82
|
-
const add = addFromOption ?? addFromPositional;
|
|
83
|
-
return {
|
|
84
|
-
add,
|
|
85
|
-
readFromStdin,
|
|
86
|
-
readFromFile,
|
|
87
|
-
editIndex,
|
|
88
|
-
deleteIndex,
|
|
89
|
-
isMutation: typeof add === "string" ||
|
|
90
|
-
readFromStdin ||
|
|
91
|
-
readFromFile !== undefined ||
|
|
92
|
-
editIndex !== undefined ||
|
|
93
|
-
deleteIndex !== undefined,
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
/** Resolves every mutation-bearing source for notes and learnings once. */
|
|
97
|
-
function resolveSingleAnnotationSources(label, positional, options) {
|
|
98
|
-
const addFromOption = resolveAnnotationTextAliases(label, options, label === "note" ? ["add", "text", "note"] : ["add", "text"]);
|
|
99
|
-
const addFromPositional = typeof positional === "string" ? positional : undefined;
|
|
100
|
-
if (addFromOption !== undefined && addFromPositional !== undefined) {
|
|
101
|
-
throw new PmCliError(`Specify ${label} text either as positional [text] or with --add, not both`, EXIT_CODE.USAGE);
|
|
102
|
-
}
|
|
103
|
-
const add = addFromOption ?? addFromPositional;
|
|
104
|
-
const addJson = label === "note" ? readOptionString(options, "addJson") : undefined;
|
|
105
|
-
const readFromStdin = options.stdin === true;
|
|
106
|
-
const readFromFile = readOptionString(options, "file");
|
|
107
|
-
const editIndex = typeof options.edit === "number" ? options.edit : undefined;
|
|
108
|
-
const deleteIndex = typeof options.delete === "number" ? options.delete : undefined;
|
|
109
|
-
return {
|
|
110
|
-
add,
|
|
111
|
-
addJson,
|
|
112
|
-
readFromStdin,
|
|
113
|
-
readFromFile,
|
|
114
|
-
editIndex,
|
|
115
|
-
deleteIndex,
|
|
116
|
-
isMutation: typeof add === "string" ||
|
|
117
|
-
addJson !== undefined ||
|
|
118
|
-
readFromStdin ||
|
|
119
|
-
readFromFile !== undefined ||
|
|
120
|
-
editIndex !== undefined ||
|
|
121
|
-
deleteIndex !== undefined,
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
async function runCommentsAction(id, text, options, command) {
|
|
125
|
-
const globalOptions = getGlobalOptions(command);
|
|
126
|
-
const startedAt = Date.now();
|
|
127
|
-
assertNoTransposedAnnotationAction("comments", id, text, options);
|
|
128
|
-
const sources = resolveCommentSources(text, options);
|
|
129
|
-
const result = await runComments(id, {
|
|
130
|
-
add: sources.add,
|
|
131
|
-
stdin: sources.readFromStdin,
|
|
132
|
-
file: sources.readFromFile,
|
|
133
|
-
edit: sources.editIndex,
|
|
134
|
-
delete: sources.deleteIndex,
|
|
135
|
-
limit: readOptionString(options, "limit"),
|
|
136
|
-
fullHistory: options.fullHistory === true,
|
|
137
|
-
ifAbsent: options.ifAbsent === true,
|
|
138
|
-
author: readOptionString(options, "author"),
|
|
139
|
-
message: readOptionString(options, "message"),
|
|
140
|
-
ownershipAppendBypass: options.ownershipAppendBypass === true,
|
|
141
|
-
force: Boolean(options.force),
|
|
142
|
-
}, globalOptions);
|
|
143
|
-
if (sources.isMutation && result.changed !== false) {
|
|
144
|
-
await invalidateSearchCachesForMutation(globalOptions, result);
|
|
145
|
-
}
|
|
146
|
-
printAnnotationResult("comments", result, globalOptions, startedAt);
|
|
147
|
-
}
|
|
148
|
-
async function runNotesAction(id, text, options, command) {
|
|
149
|
-
const globalOptions = getGlobalOptions(command);
|
|
150
|
-
const startedAt = Date.now();
|
|
151
|
-
assertNoTransposedAnnotationAction("notes", id, text, options);
|
|
152
|
-
const sources = resolveSingleAnnotationSources("note", text, options);
|
|
153
|
-
const result = await runNotes(id, {
|
|
154
|
-
add: sources.add,
|
|
155
|
-
addJson: sources.addJson,
|
|
156
|
-
stdin: sources.readFromStdin,
|
|
157
|
-
file: sources.readFromFile,
|
|
158
|
-
edit: sources.editIndex,
|
|
159
|
-
delete: sources.deleteIndex,
|
|
160
|
-
limit: readOptionString(options, "limit"),
|
|
161
|
-
since: readOptionString(options, "since"),
|
|
162
|
-
eventType: readOptionString(options, "eventType"),
|
|
163
|
-
includeMeta: options.includeMeta === true,
|
|
164
|
-
fullHistory: options.fullHistory === true,
|
|
165
|
-
ifAbsent: options.ifAbsent === true,
|
|
166
|
-
author: readOptionString(options, "author"),
|
|
167
|
-
message: readOptionString(options, "message"),
|
|
168
|
-
ownershipAppendBypass: options.ownershipAppendBypass === true,
|
|
169
|
-
force: Boolean(options.force),
|
|
170
|
-
}, globalOptions);
|
|
171
|
-
if (sources.isMutation && result.changed !== false) {
|
|
172
|
-
await invalidateSearchCachesForMutation(globalOptions, result);
|
|
173
|
-
}
|
|
174
|
-
printAnnotationResult("notes", result, globalOptions, startedAt);
|
|
175
|
-
}
|
|
176
|
-
async function runLearningsAction(id, text, options, command) {
|
|
177
|
-
const globalOptions = getGlobalOptions(command);
|
|
178
|
-
const startedAt = Date.now();
|
|
179
|
-
assertNoTransposedAnnotationAction("learnings", id, text, options);
|
|
180
|
-
const sources = resolveSingleAnnotationSources("learning", text, options);
|
|
181
|
-
const result = await runLearnings(id, {
|
|
182
|
-
add: sources.add,
|
|
183
|
-
stdin: sources.readFromStdin,
|
|
184
|
-
file: sources.readFromFile,
|
|
185
|
-
edit: sources.editIndex,
|
|
186
|
-
delete: sources.deleteIndex,
|
|
187
|
-
limit: readOptionString(options, "limit"),
|
|
188
|
-
fullHistory: options.fullHistory === true,
|
|
189
|
-
ifAbsent: options.ifAbsent === true,
|
|
190
|
-
author: readOptionString(options, "author"),
|
|
191
|
-
message: readOptionString(options, "message"),
|
|
192
|
-
ownershipAppendBypass: options.ownershipAppendBypass === true,
|
|
193
|
-
force: Boolean(options.force),
|
|
194
|
-
}, globalOptions);
|
|
195
|
-
if (sources.isMutation && result.changed !== false) {
|
|
196
|
-
await invalidateSearchCachesForMutation(globalOptions, result);
|
|
197
|
-
}
|
|
198
|
-
printAnnotationResult("learnings", result, globalOptions, startedAt);
|
|
199
|
-
}
|
|
200
|
-
function printAnnotationResult(command, result, globalOptions, startedAt) {
|
|
201
|
-
printResult(result, globalOptions);
|
|
202
|
-
if (globalOptions.profile) {
|
|
203
|
-
printError(`profile:command=${command} took_ms=${Date.now() - startedAt}`);
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
/** Register bounded annotation commands on the root Commander program. */
|
|
207
|
-
export function registerAnnotationCommands(program, parsePositiveInteger) {
|
|
208
|
-
const commentsCommand = program
|
|
209
|
-
.command("comments")
|
|
210
|
-
.argument("<id>", "Item id")
|
|
211
|
-
.argument("[text]", "Optional comment text shorthand (equivalent to --add)")
|
|
212
|
-
.option("--add <text>", "Append comment text; use text=<value> for structured input or - for stdin")
|
|
213
|
-
.option("--stdin", "Read comment text from stdin (supports multiline markdown)")
|
|
214
|
-
.option("--file <path>", "Read comment text from a file or stdin (-)")
|
|
215
|
-
.option("--edit <index>", "Replace one comment using positional text, --add, --stdin, or --file", parsePositiveInteger("--edit"))
|
|
216
|
-
.option("--delete <index>", "Delete the comment at 1-based <index>", parsePositiveInteger("--delete"))
|
|
217
|
-
.option("--limit <n>", "Return only latest n comments")
|
|
218
|
-
.option("--full-history", "Return complete comment history instead of a bounded mutation receipt")
|
|
219
|
-
.option("--if-absent", "Append only when resolved author and text are absent")
|
|
220
|
-
.option("--author [value]", "Comment author; defaults to PM_AUTHOR or settings")
|
|
221
|
-
.option("--message <value>", "History message")
|
|
222
|
-
.option("--force", "Force ownership override")
|
|
223
|
-
.description("List, add, edit, or delete comments for an item.")
|
|
224
|
-
.action(runCommentsAction);
|
|
225
|
-
addHiddenOption(commentsCommand, "--body <text>", "Alias for --add", false);
|
|
226
|
-
addHiddenOption(commentsCommand, "--text <text>", "Alias for --add", false);
|
|
227
|
-
addHiddenOption(commentsCommand, "--comment <text>", "Alias for --add", false);
|
|
228
|
-
const notesCommand = program
|
|
229
|
-
.command("notes")
|
|
230
|
-
.argument("<id>", "Item id")
|
|
231
|
-
.argument("[text]", "Optional note text shorthand for --add")
|
|
232
|
-
.option("--add <text>", "Add a text note (- reads stdin)")
|
|
233
|
-
.option("--note <text>", "Alias for --add")
|
|
234
|
-
.option("--add-json <json>", "Append a JSON event")
|
|
235
|
-
.option("--stdin", "Read note text from stdin")
|
|
236
|
-
.option("--file <path>", "Read note from file or stdin (-)")
|
|
237
|
-
.option("--edit <index>", "Replace a 1-based note using the selected text input", parsePositiveInteger("--edit"))
|
|
238
|
-
.option("--delete <index>", "Delete the note at 1-based <index>", parsePositiveInteger("--delete"))
|
|
239
|
-
.option("--limit <n>", "Return only latest n notes")
|
|
240
|
-
.option("--since <timestamp>", "Filter JSON events from this ISO time")
|
|
241
|
-
.option("--event-type <value>", "Filter JSON events by top-level type")
|
|
242
|
-
.option("--include-meta", "Include count and truncation metadata")
|
|
243
|
-
.option("--full-history", "Return complete note history instead of a bounded receipt")
|
|
244
|
-
.option("--if-absent", "Append only when resolved author and text are absent")
|
|
245
|
-
.option("--author [value]", "Author; defaults to PM_AUTHOR/settings")
|
|
246
|
-
.option("--message <value>", "History message")
|
|
247
|
-
.option("--force", "Force ownership override")
|
|
248
|
-
.description("Manage merge-safe text notes and JSON context events.")
|
|
249
|
-
.action(runNotesAction);
|
|
250
|
-
addHiddenOption(notesCommand, "--text <text>", "Alias for --add", false);
|
|
251
|
-
const learningsCommand = program
|
|
252
|
-
.command("learnings")
|
|
253
|
-
.argument("<id>", "Item id")
|
|
254
|
-
.argument("[text]", "Optional learning text shorthand for --add")
|
|
255
|
-
.option("--add <text>", "Append learning text; use text=<value> or - for stdin")
|
|
256
|
-
.option("--stdin", "Read learning text from stdin")
|
|
257
|
-
.option("--file <path>", "Read learning text from a file or stdin (-)")
|
|
258
|
-
.option("--edit <index>", "Replace one learning using positional text, --add, --stdin, or --file", parsePositiveInteger("--edit"))
|
|
259
|
-
.option("--delete <index>", "Delete the learning at 1-based <index>", parsePositiveInteger("--delete"))
|
|
260
|
-
.option("--limit <n>", "Return only latest n learnings")
|
|
261
|
-
.option("--full-history", "Return complete learning history instead of a bounded receipt")
|
|
262
|
-
.option("--if-absent", "Append only when resolved author and text are absent")
|
|
263
|
-
.option("--author [value]", "Learning author (optional; falls back to PM_AUTHOR/settings)")
|
|
264
|
-
.option("--message <value>", "History message")
|
|
265
|
-
.option("--force", "Force ownership override")
|
|
266
|
-
.description("List, add, edit, or delete learnings for an item.")
|
|
267
|
-
.action(runLearningsAction);
|
|
268
|
-
addHiddenOption(learningsCommand, "--text <text>", "Alias for --add", false);
|
|
269
|
-
}
|
|
1
|
+
!(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="0b92ef55-bb44-5a94-840d-a972b90b696c")}catch(e2){}})();import{EXIT_CODE,PmCliError}from"../sdk/runtime-primitives.js";import{renderPmCommand}from"../sdk/command-line.js";import{runComments}from"./commands/comments.js";import{runLearnings}from"./commands/learnings.js";import{runNotes}from"./commands/notes.js";import{addHiddenOption,getGlobalOptions,invalidateSearchCachesForMutation,printError,printResult,readOptionString}from"./registration-helpers.js";function assertNoTransposedAnnotationAction(collection,id,text,options){if(id.trim().toLowerCase()!=="add"||!text?.trim()){return}const suppliedText=readOptionString(options,"add")??readOptionString(options,"text")??readOptionString(options,"note")??readOptionString(options,"body")??readOptionString(options,"comment");const file=readOptionString(options,"file");const retryArgs=[collection,text.trim()];if(suppliedText!==void 0)retryArgs.push("--add",suppliedText);else if(options.stdin===true)retryArgs.push("--stdin");else if(file!==void 0)retryArgs.push("--file",file);else retryArgs.push("--add","-");const suggestedRetry=renderPmCommand(retryArgs);const stdinRetry=renderPmCommand([collection,text.trim(),"--add","-"]);throw new PmCliError(`The positional token "add" was parsed as the item id, while "${text.trim()}" was parsed as annotation text. ${collection} does not use an add subcommand.`,EXIT_CODE.USAGE,{code:"annotation_transposed_subcommand",reason:"noun_verb_object_transposition",required:`Place the item id immediately after ${collection}, then use --add for annotation text.`,examples:[...new Set([suggestedRetry,stdinRetry])],recovery:{attempted_command:`pm ${collection} add ${text.trim()}`,normalized_args:[collection,"add",text.trim()],parsed_positionals:[{role:"transposed_subcommand",value:"add"},{role:"item_id",value:text.trim()}],suggested_retry:suggestedRetry}})}function resolveAnnotationTextAliases(label,options,aliases){const supplied=aliases.flatMap(alias=>{const value=readOptionString(options,alias);return value===void 0?[]:[{alias,value}]});const distinctValues=[...new Set(supplied.map(({value})=>value))];if(distinctValues.length>1){throw new PmCliError(`Specify ${label} text with one alias or the same value across aliases: ${supplied.map(({alias})=>`--${alias}`).join(", ")}`,EXIT_CODE.USAGE,{code:"annotation_alias_conflict"})}return supplied[0]?.value}function resolveCommentSources(text,options){const editIndex=typeof options.edit==="number"?options.edit:void 0;const deleteIndex=typeof options.delete==="number"?options.delete:void 0;const addFromOption=resolveAnnotationTextAliases("comment",options,["add","text","body","comment"]);const addFromPositional=typeof text==="string"?text:void 0;const readFromStdin=options.stdin===true;const readFromFile=readOptionString(options,"file");const sourceCount=Number(addFromOption!==void 0)+Number(addFromPositional!==void 0)+Number(readFromStdin)+Number(readFromFile!==void 0);if(sourceCount>1){if(addFromOption!==void 0&&addFromPositional!==void 0&&!readFromStdin&&readFromFile===void 0){throw new PmCliError("Specify comment text either as positional [text] or with --add, not both",EXIT_CODE.USAGE)}throw new PmCliError("Specify comment text with exactly one source: positional [text], --add, --stdin, or --file",EXIT_CODE.USAGE)}const add=addFromOption??addFromPositional;return{add,readFromStdin,readFromFile,editIndex,deleteIndex,isMutation:typeof add==="string"||readFromStdin||readFromFile!==void 0||editIndex!==void 0||deleteIndex!==void 0}}function resolveSingleAnnotationSources(label,positional,options){const addFromOption=resolveAnnotationTextAliases(label,options,label==="note"?["add","text","note"]:["add","text"]);const addFromPositional=typeof positional==="string"?positional:void 0;if(addFromOption!==void 0&&addFromPositional!==void 0){throw new PmCliError(`Specify ${label} text either as positional [text] or with --add, not both`,EXIT_CODE.USAGE)}const add=addFromOption??addFromPositional;const addJson=label==="note"?readOptionString(options,"addJson"):void 0;const readFromStdin=options.stdin===true;const readFromFile=readOptionString(options,"file");const editIndex=typeof options.edit==="number"?options.edit:void 0;const deleteIndex=typeof options.delete==="number"?options.delete:void 0;return{add,addJson,readFromStdin,readFromFile,editIndex,deleteIndex,isMutation:typeof add==="string"||addJson!==void 0||readFromStdin||readFromFile!==void 0||editIndex!==void 0||deleteIndex!==void 0}}async function runCommentsAction(id,text,options,command){const globalOptions=getGlobalOptions(command);const startedAt=Date.now();assertNoTransposedAnnotationAction("comments",id,text,options);const sources=resolveCommentSources(text,options);const result=await runComments(id,{add:sources.add,stdin:sources.readFromStdin,file:sources.readFromFile,edit:sources.editIndex,delete:sources.deleteIndex,limit:readOptionString(options,"limit"),fullHistory:options.fullHistory===true,ifAbsent:options.ifAbsent===true,author:readOptionString(options,"author"),message:readOptionString(options,"message"),ownershipAppendBypass:options.ownershipAppendBypass===true,force:Boolean(options.force)},globalOptions);if(sources.isMutation&&result.changed!==false){await invalidateSearchCachesForMutation(globalOptions,result)}printAnnotationResult("comments",result,globalOptions,startedAt)}async function runNotesAction(id,text,options,command){const globalOptions=getGlobalOptions(command);const startedAt=Date.now();assertNoTransposedAnnotationAction("notes",id,text,options);const sources=resolveSingleAnnotationSources("note",text,options);const result=await runNotes(id,{add:sources.add,addJson:sources.addJson,stdin:sources.readFromStdin,file:sources.readFromFile,edit:sources.editIndex,delete:sources.deleteIndex,limit:readOptionString(options,"limit"),since:readOptionString(options,"since"),eventType:readOptionString(options,"eventType"),includeMeta:options.includeMeta===true,fullHistory:options.fullHistory===true,ifAbsent:options.ifAbsent===true,author:readOptionString(options,"author"),message:readOptionString(options,"message"),ownershipAppendBypass:options.ownershipAppendBypass===true,force:Boolean(options.force)},globalOptions);if(sources.isMutation&&result.changed!==false){await invalidateSearchCachesForMutation(globalOptions,result)}printAnnotationResult("notes",result,globalOptions,startedAt)}async function runLearningsAction(id,text,options,command){const globalOptions=getGlobalOptions(command);const startedAt=Date.now();assertNoTransposedAnnotationAction("learnings",id,text,options);const sources=resolveSingleAnnotationSources("learning",text,options);const result=await runLearnings(id,{add:sources.add,stdin:sources.readFromStdin,file:sources.readFromFile,edit:sources.editIndex,delete:sources.deleteIndex,limit:readOptionString(options,"limit"),fullHistory:options.fullHistory===true,ifAbsent:options.ifAbsent===true,author:readOptionString(options,"author"),message:readOptionString(options,"message"),ownershipAppendBypass:options.ownershipAppendBypass===true,force:Boolean(options.force)},globalOptions);if(sources.isMutation&&result.changed!==false){await invalidateSearchCachesForMutation(globalOptions,result)}printAnnotationResult("learnings",result,globalOptions,startedAt)}function printAnnotationResult(command,result,globalOptions,startedAt){printResult(result,globalOptions);if(globalOptions.profile){printError(`profile:command=${command} took_ms=${Date.now()-startedAt}`)}}function registerAnnotationCommands(program,parsePositiveInteger){const commentsCommand=program.command("comments").argument("<id>","Item id").argument("[text]","Optional comment text shorthand (equivalent to --add)").option("--add <text>","Append comment text; use text=<value> for structured input or - for stdin").option("--stdin","Read comment text from stdin (supports multiline markdown)").option("--file <path>","Read comment text from a file or stdin (-)").option("--edit <index>","Replace one comment using positional text, --add, --stdin, or --file",parsePositiveInteger("--edit")).option("--delete <index>","Delete the comment at 1-based <index>",parsePositiveInteger("--delete")).option("--limit <n>","Return only latest n comments").option("--full-history","Return complete comment history instead of a bounded mutation receipt").option("--if-absent","Append only when resolved author and text are absent").option("--author [value]","Comment author; defaults to PM_AUTHOR or settings").option("--message <value>","History message").option("--force","Force ownership override").description("List, add, edit, or delete comments for an item.").action(runCommentsAction);addHiddenOption(commentsCommand,"--body <text>","Alias for --add",false);addHiddenOption(commentsCommand,"--text <text>","Alias for --add",false);addHiddenOption(commentsCommand,"--comment <text>","Alias for --add",false);const notesCommand=program.command("notes").argument("<id>","Item id").argument("[text]","Optional note text shorthand for --add").option("--add <text>","Add a text note (- reads stdin)").option("--note <text>","Alias for --add").option("--add-json <json>","Append a JSON event").option("--stdin","Read note text from stdin").option("--file <path>","Read note from file or stdin (-)").option("--edit <index>","Replace a 1-based note using the selected text input",parsePositiveInteger("--edit")).option("--delete <index>","Delete the note at 1-based <index>",parsePositiveInteger("--delete")).option("--limit <n>","Return only latest n notes").option("--since <timestamp>","Filter JSON events from this ISO time").option("--event-type <value>","Filter JSON events by top-level type").option("--include-meta","Include count and truncation metadata").option("--full-history","Return complete note history instead of a bounded receipt").option("--if-absent","Append only when resolved author and text are absent").option("--author [value]","Author; defaults to PM_AUTHOR/settings").option("--message <value>","History message").option("--force","Force ownership override").description("Manage merge-safe text notes and JSON context events.").action(runNotesAction);addHiddenOption(notesCommand,"--text <text>","Alias for --add",false);const learningsCommand=program.command("learnings").argument("<id>","Item id").argument("[text]","Optional learning text shorthand for --add").option("--add <text>","Append learning text; use text=<value> or - for stdin").option("--stdin","Read learning text from stdin").option("--file <path>","Read learning text from a file or stdin (-)").option("--edit <index>","Replace one learning using positional text, --add, --stdin, or --file",parsePositiveInteger("--edit")).option("--delete <index>","Delete the learning at 1-based <index>",parsePositiveInteger("--delete")).option("--limit <n>","Return only latest n learnings").option("--full-history","Return complete learning history instead of a bounded receipt").option("--if-absent","Append only when resolved author and text are absent").option("--author [value]","Learning author (optional; falls back to PM_AUTHOR/settings)").option("--message <value>","History message").option("--force","Force ownership override").description("List, add, edit, or delete learnings for an item.").action(runLearningsAction);addHiddenOption(learningsCommand,"--text <text>","Alias for --add",false)}export{registerAnnotationCommands};
|
|
270
2
|
//# sourceMappingURL=register-annotations.js.map
|
|
271
|
-
//# debugId=775518a4-ff3e-5a54-8fbd-b2c4863e23db
|