@unbrained/pm-cli 2026.10.4 → 2026.10.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +2 -2
- package/CHANGELOG.md +11 -0
- package/dist/cli/after-command-context-usage.js +1 -1
- package/dist/cli/argv-utils.js +1 -1
- package/dist/cli/bootstrap-args.js +1 -1
- package/dist/cli/bundle-integrity.js +2 -2
- package/dist/cli/command-namespaces.js +1 -1
- package/dist/cli/commander-usage.d.ts +1 -1
- package/dist/cli/commander-usage.js +7 -4
- package/dist/cli/commands/annotations/comments.js +1 -1
- package/dist/cli/commands/annotations/docs.js +1 -1
- package/dist/cli/commands/annotations/files.js +1 -1
- package/dist/cli/commands/annotations/learnings.js +1 -1
- package/dist/cli/commands/annotations/notes.js +1 -1
- package/dist/cli/commands/extension/describe.js +1 -1
- package/dist/cli/commands/extension/extension.js +1 -1
- package/dist/cli/commands/extension/scaffold.js +1 -1
- package/dist/cli/commands/extension/shared.js +1 -1
- package/dist/cli/commands/governance/gc.js +1 -1
- package/dist/cli/commands/governance/health.js +1 -1
- package/dist/cli/commands/governance/telemetry.js +1 -1
- package/dist/cli/commands/governance/validate.js +1 -1
- package/dist/cli/commands/history/activity.js +1 -1
- package/dist/cli/commands/history/history-compact.js +1 -1
- package/dist/cli/commands/history/history-redact.js +1 -1
- package/dist/cli/commands/history/history-repair.js +1 -1
- package/dist/cli/commands/history/history.js +1 -1
- package/dist/cli/commands/history/restore.js +1 -1
- package/dist/cli/commands/lifecycle/append.js +1 -1
- package/dist/cli/commands/lifecycle/claim.js +1 -1
- package/dist/cli/commands/lifecycle/close-many.js +1 -1
- package/dist/cli/commands/lifecycle/close.js +1 -1
- package/dist/cli/commands/lifecycle/copy.js +1 -1
- package/dist/cli/commands/lifecycle/create.js +1 -1
- package/dist/cli/commands/lifecycle/delete.js +1 -1
- package/dist/cli/commands/lifecycle/focus.js +1 -1
- package/dist/cli/commands/lifecycle/plan.js +1 -1
- package/dist/cli/commands/lifecycle/update-many.js +1 -1
- package/dist/cli/commands/lifecycle/update.js +1 -1
- package/dist/cli/commands/query/aggregate.js +1 -1
- package/dist/cli/commands/query/context.js +1 -1
- package/dist/cli/commands/query/deps.js +1 -1
- package/dist/cli/commands/query/duplicates.js +1 -1
- package/dist/cli/commands/query/eval.js +1 -1
- package/dist/cli/commands/query/get.js +1 -1
- package/dist/cli/commands/query/graph.js +1 -1
- package/dist/cli/commands/query/list.js +1 -1
- package/dist/cli/commands/query/next.js +1 -1
- package/dist/cli/commands/query/search.js +1 -1
- package/dist/cli/commands/query/stats.js +1 -1
- package/dist/cli/commands/test/test-all.js +1 -1
- package/dist/cli/commands/test/test-runs.js +1 -1
- package/dist/cli/commands/test/test.js +1 -1
- package/dist/cli/commands/workspace/config.js +1 -1
- package/dist/cli/commands/workspace/contracts.js +1 -1
- package/dist/cli/commands/workspace/init.js +1 -1
- package/dist/cli/commands/workspace/merge.js +1 -1
- package/dist/cli/commands/workspace/profile.js +1 -1
- package/dist/cli/commands/workspace/schema.js +1 -1
- package/dist/cli/commands/workspace/upgrade.js +1 -1
- package/dist/cli/context-intent-invocation.js +1 -1
- package/dist/cli/description-stdin.js +1 -1
- package/dist/cli/error-guidance.js +3 -1
- package/dist/cli/extension-command-help.js +5 -3
- package/dist/cli/extension-command-options.js +1 -1
- package/dist/cli/extension-recovery.js +1 -1
- package/dist/cli/help-content.js +5 -2
- package/dist/cli/help-json-payload.js +6 -3
- package/dist/cli/invocation-profile.js +2 -2
- package/dist/cli/main.js +5 -5
- package/dist/cli/migration-gates.js +1 -1
- package/dist/cli/option-values.js +1 -1
- package/dist/cli/public.js +1 -1
- package/dist/cli/register-annotations.js +1 -1
- package/dist/cli/register-assurance.js +1 -1
- package/dist/cli/register-files-lookup.js +1 -1
- package/dist/cli/register-history-activity.js +1 -1
- package/dist/cli/register-history-author.js +1 -1
- package/dist/cli/register-history-maintenance.js +2 -2
- package/dist/cli/register-list-query.js +10 -10
- package/dist/cli/register-mutation-options.js +1 -1
- package/dist/cli/register-mutation.js +2 -2
- package/dist/cli/register-operations.js +1 -1
- package/dist/cli/register-setup.js +1 -1
- package/dist/cli/register-structured-mutation.js +1 -1
- package/dist/cli/registration-helpers.js +1 -1
- package/dist/cli/runtime/activation.js +1 -1
- package/dist/cli/runtime/invocation-options.js +1 -1
- package/dist/cli/runtime/projection-retry.js +1 -1
- package/dist/cli/runtime/selection.js +1 -1
- package/dist/cli/runtime/telemetry-outcome.js +1 -1
- package/dist/cli/runtime-compatibility-boundary.js +4 -4
- package/dist/cli/schema/registration.js +2 -2
- package/dist/cli/schema-registration-helpers.js +1 -1
- package/dist/cli/search-refresh.js +1 -1
- package/dist/cli/stats-analytics-json.js +1 -1
- package/dist/cli/telemetry-flush.js +1 -1
- package/dist/cli-bundle/bundle-manifest.json +163 -163
- package/dist/cli-bundle/chunks/chunk-3CYOBJUK.js +3 -0
- package/dist/cli-bundle/chunks/chunk-5MNOWZPN.js +3 -0
- package/dist/cli-bundle/chunks/chunk-AJ7H6XUF.js +20 -0
- package/dist/cli-bundle/chunks/chunk-D332RXZ7.js +80 -0
- package/dist/cli-bundle/chunks/chunk-HRJ6G6ZG.js +31 -0
- package/dist/cli-bundle/chunks/chunk-KRVI56QE.js +6 -0
- package/dist/cli-bundle/chunks/chunk-N4YGSG6F.js +238 -0
- package/dist/cli-bundle/chunks/{chunk-7CE2DJMA.js → chunk-OOLYASYJ.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-R7CG2DB7.js +2 -0
- package/dist/cli-bundle/chunks/chunk-TGMONGWX.js +2 -0
- package/dist/cli-bundle/chunks/chunk-UZ7BIUCI.js +2 -0
- package/dist/cli-bundle/chunks/{chunk-GZMWISWW.js → chunk-VZ63DEVJ.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-WFZ4UEOB.js +2 -0
- package/dist/cli-bundle/chunks/chunk-YVBRASXO.js +8 -0
- package/dist/cli-bundle/chunks/{chunk-SMKHR6BM.js → chunk-Z66DWDAU.js} +87 -87
- package/dist/cli-bundle/chunks/{register-list-query-QBGXO5JJ.js → register-list-query-75QXHIFH.js} +11 -11
- package/dist/cli-bundle/chunks/register-mutation-YS54SCHG.js +20 -0
- package/dist/cli-bundle/chunks/register-operations-6KHZQSYJ.js +2 -0
- package/dist/cli-bundle/chunks/register-setup-RTATEN2M.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-Q6DJ5DFQ.js → chunk-2CVX3KR3.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-5C3IDDW7.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-467EW5RL.js → chunk-ABV67XCC.js} +3 -3
- package/dist/cli-bundle/focused-chunks/chunk-B5RSLVE6.js +3 -0
- package/dist/cli-bundle/focused-chunks/chunk-C224METM.js +20 -0
- package/dist/cli-bundle/focused-chunks/chunk-CLDPTMQY.js +6 -0
- package/dist/cli-bundle/focused-chunks/chunk-DDRN42PB.js +8 -0
- package/dist/cli-bundle/focused-chunks/{chunk-7O4NUJVO.js → chunk-DOVTUKJQ.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-ECBOPEJE.js +75 -0
- package/dist/cli-bundle/focused-chunks/chunk-GITOYRUW.js +165 -0
- package/dist/cli-bundle/focused-chunks/chunk-GUIF3WVC.js +30 -0
- package/dist/cli-bundle/focused-chunks/chunk-LE4JUCRR.js +3 -0
- package/dist/cli-bundle/focused-chunks/{chunk-HFAW3FJQ.js → chunk-PSXFFQFT.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-RHIH6XIW.js +12 -0
- package/dist/cli-bundle/focused-chunks/chunk-UDYRVBOZ.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-XV5RV4ZT.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-JCVMOSWQ.js → chunk-YMU42COG.js} +2 -2
- package/dist/cli-bundle/main.js +27 -27
- 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 +32 -32
- 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 +55 -55
- 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 +10 -10
- package/dist/cli.js +1 -1
- package/dist/core/checkpoint/checkpoint-gc.js +1 -1
- package/dist/core/checkpoint/mutation-checkpoint.js +2 -2
- package/dist/core/config/nested-settings.js +1 -1
- package/dist/core/config/positional-value.js +1 -1
- package/dist/core/diagnostics/remediation.js +1 -1
- package/dist/core/extensions/activation-summary-markdown.js +2 -1
- package/dist/core/extensions/activation-summary.js +1 -1
- package/dist/core/extensions/activation-transaction.js +1 -1
- package/dist/core/extensions/capability-usage.js +1 -1
- package/dist/core/extensions/command-hook-context.js +1 -1
- package/dist/core/extensions/command-metadata-contract.js +1 -1
- package/dist/core/extensions/command-visibility-tier.js +1 -1
- package/dist/core/extensions/contribution-inventory.js +1 -1
- package/dist/core/extensions/exporter-output-contract.js +1 -1
- package/dist/core/extensions/extension-candidate.js +1 -1
- package/dist/core/extensions/extension-capability-aliases.js +1 -1
- package/dist/core/extensions/extension-hook-runtime.js +1 -1
- package/dist/core/extensions/extension-policy.js +1 -1
- package/dist/core/extensions/extension-registries.js +1 -1
- package/dist/core/extensions/extension-runtime-helpers.js +1 -1
- package/dist/core/extensions/extension-types.js +1 -1
- package/dist/core/extensions/flag-definition-validation.js +1 -1
- package/dist/core/extensions/flag-value-types.js +1 -1
- package/dist/core/extensions/index.js +1 -1
- package/dist/core/extensions/item-field-types.js +1 -1
- package/dist/core/extensions/item-fields.js +1 -1
- package/dist/core/extensions/loader.js +1 -1
- package/dist/core/extensions/manifest-parser.js +1 -1
- package/dist/core/extensions/manifest-schema.js +1 -1
- package/dist/core/extensions/module-graph-snapshot.js +1 -1
- package/dist/core/extensions/preflight-ownership.js +1 -1
- package/dist/core/extensions/registration-contracts.js +1 -1
- package/dist/core/extensions/registration-validation.js +1 -1
- package/dist/core/extensions/registration-values.js +1 -1
- package/dist/core/extensions/reserved-host-flags.js +1 -1
- package/dist/core/extensions/runtime-registrations.js +1 -1
- package/dist/core/extensions/service-ownership.js +1 -1
- package/dist/core/extensions/version-compat.js +1 -1
- package/dist/core/fs/atomic-create.js +1 -1
- package/dist/core/fs/fs-utils.js +2 -2
- package/dist/core/fs/host-environment-errors.js +1 -1
- package/dist/core/fs/index.js +1 -1
- package/dist/core/fs/path-utils.js +1 -1
- package/dist/core/governance/content-fields.js +1 -1
- package/dist/core/governance/issue-codes.js +1 -1
- package/dist/core/governance/metadata-coverage.js +1 -1
- package/dist/core/history/digest.js +1 -1
- package/dist/core/history/drift-cache.js +3 -3
- package/dist/core/history/drift-scan.d.ts +4 -0
- package/dist/core/history/drift-scan.js +1 -1
- package/dist/core/history/event-classification.js +1 -1
- package/dist/core/history/event-index.js +8 -7
- package/dist/core/history/history-compact-bulk.js +1 -1
- package/dist/core/history/history-diff.js +1 -1
- package/dist/core/history/history-rewrite.js +1 -1
- package/dist/core/history/history-storage-stats.js +1 -1
- package/dist/core/history/history-stream-policy.js +1 -1
- package/dist/core/history/history.js +2 -2
- package/dist/core/history/identity.js +1 -1
- package/dist/core/history/index.js +1 -1
- package/dist/core/history/operation-contract.js +1 -1
- package/dist/core/history/projection.js +1 -1
- package/dist/core/history/read.js +1 -1
- package/dist/core/history/replay.js +2 -1
- package/dist/core/history/tombstone.js +1 -1
- package/dist/core/history/version-address.js +1 -1
- package/dist/core/history/workspace-history.js +2 -2
- package/dist/core/io/body-file.js +1 -1
- package/dist/core/io/bulk-ids-input.js +2 -1
- package/dist/core/item/actionability.js +1 -1
- package/dist/core/item/dependency-reference.js +1 -1
- package/dist/core/item/id.js +1 -1
- package/dist/core/item/index.js +1 -1
- package/dist/core/item/item-format-version.js +1 -1
- package/dist/core/item/item-format.js +6 -4
- package/dist/core/item/item-record.js +1 -1
- package/dist/core/item/item-type-definition.js +1 -1
- package/dist/core/item/parent-reference-policy.js +1 -1
- package/dist/core/item/parse.js +8 -2
- package/dist/core/item/plan-lifecycle.js +1 -1
- package/dist/core/item/priority.js +1 -1
- package/dist/core/item/sprint-release-format.js +1 -1
- package/dist/core/item/status-filter.js +1 -1
- package/dist/core/item/status.js +1 -1
- package/dist/core/item/toon-decode.js +1 -1
- package/dist/core/item/type-registry.js +1 -1
- package/dist/core/item/type-synonyms.js +1 -1
- package/dist/core/lock/index.js +1 -1
- package/dist/core/lock/lock-gc.js +1 -1
- package/dist/core/lock/lock.js +3 -3
- package/dist/core/output/mutation-projection.js +1 -1
- package/dist/core/output/output-control.js +1 -1
- package/dist/core/output/output.js +22 -10
- package/dist/core/output/query-summary.js +1 -1
- package/dist/core/output/tabular.js +3 -1
- package/dist/core/packages/manifest.js +1 -1
- package/dist/core/packages/root.js +1 -1
- package/dist/core/policy/workflow-policy-schema.js +1 -1
- package/dist/core/policy/workflow-policy-store.js +1 -1
- package/dist/core/policy/workflow-policy.js +1 -1
- package/dist/core/profile/profile-describe.js +1 -1
- package/dist/core/profile/profile-lint.js +1 -1
- package/dist/core/profile/profile-plan.js +1 -1
- package/dist/core/profile/profile-presets.js +25 -1
- package/dist/core/reproducibility/context.js +1 -1
- package/dist/core/schema/fields-file.js +2 -2
- package/dist/core/schema/item-types-file.js +2 -2
- package/dist/core/schema/runtime-field-filters.js +1 -1
- package/dist/core/schema/runtime-field-values.js +1 -1
- package/dist/core/schema/runtime-schema.js +2 -2
- package/dist/core/schema/status-defs-file.js +2 -2
- package/dist/core/schema/status-token.js +1 -1
- package/dist/core/schema/type-inference.js +1 -1
- package/dist/core/schema/type-presets.js +1 -1
- package/dist/core/schema/type-workflows.js +1 -1
- package/dist/core/search/background-refresh.js +2 -2
- package/dist/core/search/bm25.js +1 -1
- package/dist/core/search/cache.js +2 -2
- package/dist/core/search/corpus.js +1 -1
- package/dist/core/search/embedding-batches.js +1 -1
- package/dist/core/search/eval-thresholds.js +1 -1
- package/dist/core/search/eval.js +1 -1
- package/dist/core/search/http-client.js +1 -1
- package/dist/core/search/providers.js +1 -1
- package/dist/core/search/relevance.js +1 -1
- package/dist/core/search/semantic-defaults.js +1 -1
- package/dist/core/search/staleness.js +1 -1
- package/dist/core/search/vector-stores.js +2 -2
- package/dist/core/search/vectorization-metadata.js +1 -1
- package/dist/core/sentry/helpers.js +1 -1
- package/dist/core/sentry/instrument.js +1 -1
- package/dist/core/session/session-state.js +1 -1
- package/dist/core/shared/agent-session-context.js +1 -1
- package/dist/core/shared/author.js +5 -1
- package/dist/core/shared/command-line.js +1 -1
- package/dist/core/shared/command-types.js +1 -1
- package/dist/core/shared/conflict-markers.js +1 -1
- package/dist/core/shared/constants.js +1 -1
- package/dist/core/shared/errors.js +1 -1
- package/dist/core/shared/html-entity-decode.js +1 -1
- package/dist/core/shared/index.js +1 -1
- package/dist/core/shared/item-metadata-contract.js +1 -1
- package/dist/core/shared/lazy-module.js +1 -1
- package/dist/core/shared/levenshtein.js +1 -1
- package/dist/core/shared/memo.js +1 -1
- package/dist/core/shared/numeric-parsers.js +1 -1
- package/dist/core/shared/option-alias-visibility.js +1 -1
- package/dist/core/shared/primitives.js +1 -1
- package/dist/core/shared/secret-rules.js +1 -1
- package/dist/core/shared/serial-queue.js +1 -1
- package/dist/core/shared/serialization.js +1 -1
- package/dist/core/shared/split-comma-list.js +1 -1
- package/dist/core/shared/text-normalization.js +1 -1
- package/dist/core/shared/time.js +2 -1
- package/dist/core/store/index.js +1 -1
- package/dist/core/store/item-format-migration.js +1 -1
- package/dist/core/store/item-metadata-cache.js +1 -1
- package/dist/core/store/item-metadata-query-index.js +7 -7
- package/dist/core/store/item-metadata-read-work.js +1 -1
- package/dist/core/store/item-store.js +1 -1
- package/dist/core/store/paths.js +1 -1
- package/dist/core/store/settings-concurrency.js +1 -1
- package/dist/core/store/settings-read-cache.js +1 -1
- package/dist/core/store/settings-validator.js +1 -1
- package/dist/core/store/settings.js +3 -3
- package/dist/core/store/tracker-preflight.js +1 -1
- package/dist/core/telemetry/consent.js +2 -2
- package/dist/core/telemetry/observability.js +1 -1
- package/dist/core/telemetry/policy.js +1 -1
- package/dist/core/telemetry/read-sampling.js +2 -2
- package/dist/core/telemetry/runtime.js +9 -5
- package/dist/core/test/background-runs.js +3 -3
- package/dist/core/test/item-test-run-tracking.js +1 -1
- package/dist/core/test/run-selectors.js +1 -1
- package/dist/core/validate/estimate-defaults.js +1 -1
- package/dist/core/validate/fix-planning.js +1 -1
- package/dist/core/validate/linked-artifact-reference.js +1 -1
- package/dist/core/validate/missing-by-type.js +1 -1
- package/dist/core/validate/missing-link-owners.js +1 -1
- package/dist/core/validate/stale-file-classification.js +1 -1
- package/dist/mcp/http-server.js +6 -4
- package/dist/mcp/legacy-adapter.js +1 -1
- package/dist/mcp/runtime-capabilities.js +1 -1
- package/dist/mcp/server.js +4 -4
- package/dist/mcp/tool-definitions.js +1 -1
- package/dist/sdk/actionability.js +1 -1
- package/dist/sdk/agent/closed-domain-contracts.js +1 -1
- package/dist/sdk/agent/command-recovery.js +1 -1
- package/dist/sdk/agent/command-suggestions.js +1 -1
- package/dist/sdk/agent/create-option-policy.js +1 -1
- package/dist/sdk/agent/identity-config.js +1 -1
- package/dist/sdk/agent/item-addressing.js +1 -1
- package/dist/sdk/agent/refusal-closure-census.js +2 -1
- package/dist/sdk/agent/refusal-closure.js +1 -1
- package/dist/sdk/agent/refusal-corpus-contracts.js +1 -1
- package/dist/sdk/agent/refusal-reachability.js +3 -1
- package/dist/sdk/agent/subcommand-recovery.js +1 -1
- package/dist/sdk/agent/task-transcript-contracts.js +1 -1
- package/dist/sdk/agent/tracker-preflight-contracts.js +1 -1
- package/dist/sdk/agent-capability-contracts.js +3 -1
- package/dist/sdk/agent-session-context.js +1 -1
- package/dist/sdk/annotations.js +1 -1
- package/dist/sdk/author-attribution.js +1 -1
- package/dist/sdk/authoring.js +1 -1
- package/dist/sdk/cli-bootstrap.js +1 -1
- package/dist/sdk/cli-contracts/agent-output-contracts.js +5 -3
- package/dist/sdk/cli-contracts/bootstrap-command-scanner.js +1 -1
- package/dist/sdk/cli-contracts/command-aliases.js +1 -1
- package/dist/sdk/cli-contracts/command-exit-contracts.js +1 -1
- package/dist/sdk/cli-contracts/commander-mutation-options.js +1 -1
- package/dist/sdk/cli-contracts/commander-types.js +1 -1
- package/dist/sdk/cli-contracts/completeness.js +1 -1
- package/dist/sdk/cli-contracts/enum-contracts.js +1 -1
- package/dist/sdk/cli-contracts/flag-contracts.js +1 -1
- package/dist/sdk/cli-contracts/flag-lexicon-contracts.js +2 -1
- package/dist/sdk/cli-contracts/grammar-contracts.js +1 -1
- package/dist/sdk/cli-contracts/registration-helpers.js +7 -7
- package/dist/sdk/cli-contracts/runtime-contracts.js +1 -1
- package/dist/sdk/cli-contracts/schemas/assurance-definition.js +1 -1
- package/dist/sdk/cli-contracts/string-lists.js +1 -1
- package/dist/sdk/cli-contracts/tool-option-contracts.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.js +1 -1
- package/dist/sdk/cli-contracts.js +1 -1
- package/dist/sdk/cli-program.js +1 -1
- package/dist/sdk/command-line.js +1 -1
- package/dist/sdk/comments.js +1 -1
- package/dist/sdk/compile-cache.js +1 -1
- package/dist/sdk/completion/bash.js +2 -1
- package/dist/sdk/completion/fish.js +13 -7
- package/dist/sdk/completion/shared.js +1 -1
- package/dist/sdk/completion/zsh.js +14 -8
- package/dist/sdk/completion.js +1 -1
- package/dist/sdk/compose.js +1 -1
- package/dist/sdk/config.js +1 -1
- package/dist/sdk/context/recency.js +1 -1
- package/dist/sdk/context/semantic-session-attribution.js +1 -1
- package/dist/sdk/context/usage-egress.js +1 -1
- package/dist/sdk/context/usage-ledger.js +6 -3
- package/dist/sdk/context-intent-contracts.js +1 -1
- package/dist/sdk/context-intent-runtime.js +1 -1
- package/dist/sdk/context-packing.js +1 -1
- package/dist/sdk/context-relevance.js +1 -1
- package/dist/sdk/context-signal-store.js +2 -2
- package/dist/sdk/context-usage.js +1 -1
- package/dist/sdk/contracts.js +1 -1
- package/dist/sdk/core-governance.js +1 -1
- package/dist/sdk/core.js +1 -1
- package/dist/sdk/corpus-shape.js +1 -1
- package/dist/sdk/define.js +1 -1
- package/dist/sdk/dependencies.js +1 -1
- package/dist/sdk/dependency-flag-validation.js +1 -1
- package/dist/sdk/dependency-provenance.js +1 -1
- package/dist/sdk/docs.js +1 -1
- package/dist/sdk/duplicates.js +1 -1
- package/dist/sdk/environment/agent-environment.js +1 -1
- package/dist/sdk/environment/host-environment-errors.js +1 -1
- package/dist/sdk/environment/project-runtime-compatibility.js +2 -1
- package/dist/sdk/environment/source-context.js +1 -1
- package/dist/sdk/environment/tracker-preflight.js +1 -1
- package/dist/sdk/error-code-catalog.js +1 -1
- package/dist/sdk/error-runtime.js +1 -1
- package/dist/sdk/errors.js +1 -1
- package/dist/sdk/eval.js +1 -1
- package/dist/sdk/extension/author-manifest.js +1 -1
- package/dist/sdk/extension/bundled-catalog.js +1 -1
- package/dist/sdk/extension/concurrency.js +1 -1
- package/dist/sdk/extension/copy-scope.js +1 -1
- package/dist/sdk/extension/custom-field-collisions.js +1 -1
- package/dist/sdk/extension/describe.js +4 -2
- package/dist/sdk/extension/doctor.js +1 -1
- package/dist/sdk/extension/install-plan.js +1 -1
- package/dist/sdk/extension/install-receipts.js +1 -1
- package/dist/sdk/extension/install-runtime.js +3 -3
- package/dist/sdk/extension/install-snapshot.js +1 -1
- package/dist/sdk/extension/install-sources.js +5 -5
- package/dist/sdk/extension/managed-state.js +2 -2
- package/dist/sdk/extension/migrations.js +2 -2
- package/dist/sdk/extension/output-ownership.js +1 -1
- package/dist/sdk/extension/runtime-summary.js +1 -1
- package/dist/sdk/extension/scaffold.js +11 -4
- package/dist/sdk/extension/shared.js +1 -1
- package/dist/sdk/extension/source-resolution.js +1 -1
- package/dist/sdk/extension/static-inventory.js +1 -1
- package/dist/sdk/extension/update-check.js +1 -1
- package/dist/sdk/extension-command-context.js +1 -1
- package/dist/sdk/extension-contracts.js +1 -1
- package/dist/sdk/extension.js +1 -1
- package/dist/sdk/files.js +1 -1
- package/dist/sdk/flag-invocation-contracts.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/generated-error-code-catalog.js +1 -1
- package/dist/sdk/governance/assurance-action-contracts.js +1 -1
- package/dist/sdk/governance/assurance-action.js +1 -1
- package/dist/sdk/governance/assurance-limits.js +1 -1
- package/dist/sdk/governance/assurance-mutation-error.js +1 -1
- package/dist/sdk/governance/assurance-presets.js +1 -1
- package/dist/sdk/governance/assurance-runtime.js +1 -1
- package/dist/sdk/governance/assurance.js +4 -4
- package/dist/sdk/governance/boundary-fixtures.js +1 -1
- package/dist/sdk/governance/closure-timestamps.js +1 -1
- package/dist/sdk/governance/coverage-assurance.js +1 -1
- package/dist/sdk/governance/defect-recurrence-coverage.js +1 -1
- package/dist/sdk/governance/defect-recurrence-graph.js +1 -1
- package/dist/sdk/governance/defect-recurrence-signals.js +1 -1
- package/dist/sdk/governance/defect-recurrence.js +1 -1
- package/dist/sdk/governance/extension-host-version.js +1 -1
- package/dist/sdk/governance/gc.js +1 -1
- package/dist/sdk/governance/health-merge-evidence.js +1 -1
- package/dist/sdk/governance/health.js +2 -1
- package/dist/sdk/governance/hierarchy-validation.js +1 -1
- package/dist/sdk/governance/linked-file-report.js +1 -1
- package/dist/sdk/governance/merge-receipt-history.js +1 -1
- package/dist/sdk/governance/provenance-health.js +4 -1
- package/dist/sdk/governance/reindex.js +5 -4
- package/dist/sdk/governance/stale-work.js +1 -1
- package/dist/sdk/governance/status-role-diagnostics.js +1 -1
- package/dist/sdk/governance/storage-integrity.js +1 -1
- package/dist/sdk/governance/tracked-runtime-cache.js +1 -1
- package/dist/sdk/governance/upgrade.js +2 -2
- package/dist/sdk/governance/validate-history-drift.js +1 -1
- package/dist/sdk/governance/validate-item-reader.js +1 -1
- package/dist/sdk/governance/validate-normalization.js +1 -1
- package/dist/sdk/governance/validate.js +1 -1
- package/dist/sdk/governance/workflow-completeness.js +1 -1
- package/dist/sdk/governance/workflow-policy.js +3 -3
- package/dist/sdk/governance/workspace-position.js +2 -1
- package/dist/sdk/governance.js +1 -1
- package/dist/sdk/graph/adapter.js +1 -1
- package/dist/sdk/graph/analytics.js +1 -1
- package/dist/sdk/graph/assembly.js +1 -1
- package/dist/sdk/graph/cache.js +1 -1
- package/dist/sdk/graph/centrality.js +1 -1
- package/dist/sdk/graph/conformance.js +1 -1
- package/dist/sdk/graph/deadline-scheduling.js +1 -1
- package/dist/sdk/graph/durable-cache.js +1 -1
- package/dist/sdk/graph/governance-contracts.js +1 -1
- package/dist/sdk/graph/governance.js +1 -1
- package/dist/sdk/graph/hierarchy-integrity.js +1 -1
- package/dist/sdk/graph/index.js +1 -1
- package/dist/sdk/graph/lifecycle-coverage.js +1 -1
- package/dist/sdk/graph/mutation-advisory.js +1 -1
- package/dist/sdk/graph/query-contracts.js +1 -1
- package/dist/sdk/graph/remediation.js +1 -1
- package/dist/sdk/graph/run.js +1 -1
- package/dist/sdk/graph/scheduling.js +1 -1
- package/dist/sdk/graph/traversal.js +1 -1
- package/dist/sdk/graph/workspace-relationship-kind-registry.js +1 -1
- package/dist/sdk/graph.js +1 -1
- package/dist/sdk/guide-topics.js +1 -1
- package/dist/sdk/guide.js +8 -1
- package/dist/sdk/history/attestation-command.js +1 -1
- package/dist/sdk/history/attestation-contract.js +1 -1
- package/dist/sdk/history/attestation-scan.js +1 -1
- package/dist/sdk/history/attestation.js +1 -1
- package/dist/sdk/history/maintenance.js +1 -1
- package/dist/sdk/history/salvage.js +3 -2
- package/dist/sdk/history/subject.js +1 -1
- package/dist/sdk/history-analytics.js +1 -1
- package/dist/sdk/history-compact.js +1 -1
- package/dist/sdk/history-mcp.js +1 -1
- package/dist/sdk/history-provenance.js +1 -1
- package/dist/sdk/history-read.js +1 -1
- package/dist/sdk/history-redact.js +1 -1
- package/dist/sdk/history-repair.js +1 -1
- package/dist/sdk/improvement-ledger-validation.js +1 -1
- package/dist/sdk/improvement-ledger.js +2 -2
- package/dist/sdk/index.js +1 -1
- package/dist/sdk/init-agent-guidance.js +16 -2
- package/dist/sdk/init.js +16 -2
- package/dist/sdk/invocation-author.js +1 -1
- package/dist/sdk/item-children.js +1 -1
- package/dist/sdk/item-metadata-index.js +1 -1
- package/dist/sdk/item-schedule.js +1 -1
- package/dist/sdk/item-transaction.js +1 -1
- package/dist/sdk/learnings.js +1 -1
- package/dist/sdk/lifecycle/append.js +4 -2
- package/dist/sdk/lifecycle/claim.js +1 -1
- package/dist/sdk/lifecycle/close-many.js +1 -1
- package/dist/sdk/lifecycle/close.js +1 -1
- package/dist/sdk/lifecycle/copy.js +1 -1
- package/dist/sdk/lifecycle/create.js +1 -1
- package/dist/sdk/lifecycle/delete.js +1 -1
- package/dist/sdk/lifecycle/event-validation-messages.js +1 -1
- package/dist/sdk/lifecycle/focus.js +1 -1
- package/dist/sdk/lifecycle/hierarchy-mutation-lock.js +1 -1
- package/dist/sdk/lifecycle/legacy-none-tokens.js +1 -1
- package/dist/sdk/lifecycle/lifecycle-transitions.js +1 -1
- package/dist/sdk/lifecycle/mcp-actions.js +1 -1
- package/dist/sdk/lifecycle/metadata-normalizers.js +1 -1
- package/dist/sdk/lifecycle/mutation-command-options.js +1 -1
- package/dist/sdk/lifecycle/plan-mutation-receipt.js +1 -1
- package/dist/sdk/lifecycle/plan.js +1 -1
- package/dist/sdk/lifecycle/recurrence-parsers.js +1 -1
- package/dist/sdk/lifecycle/reopen.js +1 -1
- package/dist/sdk/lifecycle/repeatable-metadata-parsers.js +2 -1
- package/dist/sdk/lifecycle/restore.js +1 -1
- package/dist/sdk/lifecycle/shared-unset-fields.js +1 -1
- package/dist/sdk/lifecycle/task-composition.js +1 -1
- package/dist/sdk/lifecycle/update-many.js +1 -1
- package/dist/sdk/lifecycle/update.js +2 -1
- package/dist/sdk/lifecycle-completion.js +1 -1
- package/dist/sdk/lifecycle-policy.js +1 -1
- package/dist/sdk/linked-artifacts.js +2 -1
- package/dist/sdk/mcp/apps.js +1 -1
- package/dist/sdk/mcp/authorization.js +1 -1
- package/dist/sdk/mcp/discovery.js +1 -1
- package/dist/sdk/mcp/interactions.js +1 -1
- package/dist/sdk/mcp/protocol.js +1 -1
- package/dist/sdk/mcp/skills.js +3 -1
- package/dist/sdk/mcp/subscriptions.js +1 -1
- package/dist/sdk/mcp/tasks.js +2 -2
- package/dist/sdk/mcp/transport.js +1 -1
- package/dist/sdk/merge/abandoned-receipts.js +1 -1
- package/dist/sdk/merge/driver.js +1 -1
- package/dist/sdk/merge/index.js +1 -1
- package/dist/sdk/merge/install.js +4 -2
- package/dist/sdk/merge/receipt-file-boundary.js +1 -1
- package/dist/sdk/merge/receipt-operation.js +1 -1
- package/dist/sdk/merge/receipt-schema.js +1 -1
- package/dist/sdk/merge/receipts.js +4 -4
- package/dist/sdk/merge/reconcile.js +1 -1
- package/dist/sdk/merge/three-way.js +3 -2
- package/dist/sdk/merge/worktree-config.js +1 -1
- package/dist/sdk/merge.js +1 -1
- package/dist/sdk/mutation-events.js +1 -1
- package/dist/sdk/mutation-guard.js +1 -1
- package/dist/sdk/notes.js +1 -1
- package/dist/sdk/output-contracts.js +1 -1
- package/dist/sdk/output-projection.js +1 -1
- package/dist/sdk/output-token-accounting.js +1 -1
- package/dist/sdk/output.js +2 -1
- package/dist/sdk/ownership-source.js +1 -1
- package/dist/sdk/package-import-adapters.js +1 -1
- package/dist/sdk/package-migrations.js +1 -1
- package/dist/sdk/package-runtime-options.js +1 -1
- package/dist/sdk/pagination.js +1 -1
- package/dist/sdk/profile.js +5 -1
- package/dist/sdk/provenance.js +1 -1
- package/dist/sdk/public-surface.json +1 -1
- package/dist/sdk/query/activity.js +1 -1
- package/dist/sdk/query/aggregate.js +1 -1
- package/dist/sdk/query/calendar.js +4 -1
- package/dist/sdk/query/complete-list.js +1 -1
- package/dist/sdk/query/context.js +2 -1
- package/dist/sdk/query/duplicate-candidates.js +1 -1
- package/dist/sdk/query/get.d.ts +14 -2
- package/dist/sdk/query/get.js +1 -1
- package/dist/sdk/query/history.js +1 -1
- package/dist/sdk/query/item-filter-options.js +1 -1
- package/dist/sdk/query/light-metadata.js +1 -1
- package/dist/sdk/query/list-filter-shared.js +1 -1
- package/dist/sdk/query/list.js +1 -1
- package/dist/sdk/query/multi-value-filters.js +1 -1
- package/dist/sdk/query/next-ready-budget.js +1 -1
- package/dist/sdk/query/next.js +2 -1
- package/dist/sdk/query/parsers.js +1 -1
- package/dist/sdk/query/projection-contracts.js +1 -1
- package/dist/sdk/query/search/corpus.js +2 -1
- package/dist/sdk/query/search/filters.js +1 -1
- package/dist/sdk/query/search/input.js +1 -1
- package/dist/sdk/query/search/lexical.js +1 -1
- package/dist/sdk/query/search/response.js +1 -1
- package/dist/sdk/query/search/semantic.js +3 -2
- package/dist/sdk/query/search/types.js +1 -1
- package/dist/sdk/query/search-contracts.js +1 -1
- package/dist/sdk/query/search-pagination.js +1 -1
- package/dist/sdk/query/search-rendering.js +1 -1
- package/dist/sdk/query/search.js +1 -1
- package/dist/sdk/query/workspace-contracts.js +1 -1
- package/dist/sdk/query.js +1 -1
- package/dist/sdk/read-output/continuation.js +1 -1
- package/dist/sdk/read-output/options.js +1 -1
- package/dist/sdk/read-output/provenance.js +1 -1
- package/dist/sdk/read-output-budget.js +1 -1
- package/dist/sdk/read-output-contracts.js +1 -1
- package/dist/sdk/read-output-rows.js +1 -1
- package/dist/sdk/read-output-session.js +1 -1
- package/dist/sdk/relationship-analytics.js +1 -1
- package/dist/sdk/relationship-context.js +1 -1
- package/dist/sdk/relationship-history.js +7 -4
- package/dist/sdk/relationship-kinds/contract.js +1 -1
- package/dist/sdk/relationship-migration.js +1 -1
- package/dist/sdk/relationships.js +1 -1
- package/dist/sdk/reproducibility/process.js +1 -1
- package/dist/sdk/runtime/actions.js +1 -1
- package/dist/sdk/runtime/context.js +1 -1
- package/dist/sdk/runtime/schema-preview.js +1 -1
- package/dist/sdk/runtime/schema.js +1 -1
- package/dist/sdk/runtime-action-aliases.js +1 -1
- package/dist/sdk/runtime-extended-actions.js +1 -1
- package/dist/sdk/runtime-input.js +1 -1
- package/dist/sdk/runtime-primitives.js +1 -1
- package/dist/sdk/runtime-public-contracts.js +1 -1
- package/dist/sdk/runtime-stats-options.js +1 -1
- package/dist/sdk/runtime.js +1 -1
- package/dist/sdk/scheduling-shortcuts.js +1 -1
- package/dist/sdk/schema-migration.js +4 -3
- package/dist/sdk/schema.js +7 -1
- package/dist/sdk/search-refresh-worker.js +1 -1
- package/dist/sdk/similarity-scoring.js +1 -1
- package/dist/sdk/similarity.js +1 -1
- package/dist/sdk/start-task-status.js +1 -1
- package/dist/sdk/stats.js +1 -1
- package/dist/sdk/structured-mutations.js +1 -1
- package/dist/sdk/telemetry-flush.js +1 -1
- package/dist/sdk/telemetry.js +4 -3
- package/dist/sdk/templates.js +26 -2
- package/dist/sdk/test/batch.js +2 -2
- package/dist/sdk/test/entry.js +1 -1
- package/dist/sdk/test/execution.js +6 -5
- package/dist/sdk/test/json-path.js +1 -1
- package/dist/sdk/test/linked-command-detection.js +1 -1
- package/dist/sdk/test/measurements.js +1 -1
- package/dist/sdk/test/parsers.js +1 -1
- package/dist/sdk/test/runs.js +1 -1
- package/dist/sdk/test/trust.js +2 -2
- package/dist/sdk/test/workspace-snapshot.js +1 -1
- package/dist/sdk/testing.js +7 -4
- package/dist/sdk/traceability/runtime-files-lookup.js +1 -1
- package/dist/sdk/traceability/source-traceability.js +2 -1
- package/dist/sdk/tracker-root-discovery.js +1 -1
- package/dist/sdk/workspace-contracts-cache.js +1 -1
- package/dist/sdk/workspace-contracts.js +1 -1
- package/dist/sdk/workspace-memory.js +2 -2
- package/dist/sdk/workspace-recipe.js +1 -1
- package/dist/sdk/workspace-snapshot.js +5 -4
- package/dist/sdk/workspace-transaction-gc.js +1 -1
- package/dist/sdk/workspace-transaction.js +2 -2
- package/dist/sdk/workspace.js +3 -2
- package/dist/types/index.js +1 -1
- package/dist/types.js +1 -1
- package/docs/AGENT_EVIDENCE_CONSISTENCY.md +88 -0
- package/docs/GET_READ_EVIDENCE.md +68 -0
- package/docs/README.md +2 -0
- package/marketplace.json +2 -2
- 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/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/extensions/vcs/index.ts +4 -2
- package/packages/pm-vcs/package.json +1 -1
- package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
- package/plugins/pm-claude/package.json +2 -2
- package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
- package/plugins/pm-codex/package.json +2 -2
- package/plugins/pm-codex/plugin.json +1 -1
- package/scripts/finalize-build.mjs +3 -2
- package/dist/cli-bundle/chunks/chunk-7UVXKI7K.js +0 -2
- package/dist/cli-bundle/chunks/chunk-D7Z2ZMJL.js +0 -3
- package/dist/cli-bundle/chunks/chunk-DEZPZOQ7.js +0 -2
- package/dist/cli-bundle/chunks/chunk-J52QIRRZ.js +0 -80
- package/dist/cli-bundle/chunks/chunk-JDKD3WGG.js +0 -6
- package/dist/cli-bundle/chunks/chunk-JQ7DW663.js +0 -2
- package/dist/cli-bundle/chunks/chunk-QXIDOOWT.js +0 -20
- package/dist/cli-bundle/chunks/chunk-SGFQQXFD.js +0 -2
- package/dist/cli-bundle/chunks/chunk-V3U77H3V.js +0 -31
- package/dist/cli-bundle/chunks/chunk-XZDWAYJC.js +0 -3
- package/dist/cli-bundle/chunks/chunk-Y6VRBTP3.js +0 -238
- package/dist/cli-bundle/chunks/chunk-YAAFYFS4.js +0 -8
- package/dist/cli-bundle/chunks/register-mutation-53ZLT4RX.js +0 -20
- package/dist/cli-bundle/chunks/register-operations-OBK2FXUU.js +0 -2
- package/dist/cli-bundle/chunks/register-setup-HM3OCBH2.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-2JFYR56O.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-32EVUSS4.js +0 -8
- package/dist/cli-bundle/focused-chunks/chunk-5GUSO2P4.js +0 -20
- package/dist/cli-bundle/focused-chunks/chunk-6XBRADQQ.js +0 -3
- package/dist/cli-bundle/focused-chunks/chunk-CURTIIQT.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-IJUWEEEB.js +0 -6
- package/dist/cli-bundle/focused-chunks/chunk-JMJK2L4Z.js +0 -3
- package/dist/cli-bundle/focused-chunks/chunk-KG3H4UZZ.js +0 -30
- package/dist/cli-bundle/focused-chunks/chunk-MHQ2XICU.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-RJV6QVJE.js +0 -75
- package/dist/cli-bundle/focused-chunks/chunk-ZE2JZ7R6.js +0 -12
- package/dist/cli-bundle/focused-chunks/chunk-ZLEN4HZD.js +0 -165
package/dist/sdk/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="e9d5c73b-d4fe-56ca-a2ad-229b04baad63")}catch(e2){}})();import{PM_COMMAND_CAPABILITY_CONTRACTS,PM_COMMAND_VISIBILITY_CONTRACTS,PM_MCP_PROMPT_CONTRACTS,PM_MCP_RESOURCE_CONTRACTS,PM_MCP_TOOL_COMMAND_CONTRACTS,listPmCommandsForFamily,listPmCommandsForTier,listPmMcpToolsForProfile,renderPmCommandVisibilityMarkdown,resolvePmCommandCapabilityFamily,resolvePmCommandVisibilityTier}from"./agent-capability-contracts.js";export*from"./mcp/protocol.js";export*from"./mcp/interactions.js";export*from"./mcp/tasks.js";export*from"./mcp/subscriptions.js";export*from"./mcp/transport.js";export*from"./mcp/authorization.js";export*from"./mcp/apps.js";export*from"./mcp/skills.js";export*from"./cli-contracts/grammar-contracts.js";export*from"./agent-session-context.js";export*from"./environment/agent-environment.js";import{isErrnoError,limitAnnotationEntries,parseAnnotationTextInput,readAnnotationEntries,normalizeAnnotationTransportOptions,resolveAnnotationInput,resolveAnnotationIndex,runAnnotationCommand,wrapOwnershipConflict}from"./annotations.js";import{acknowledgeUnknownAuthorHistoryEvents,acknowledgeUnknownAuthorHistoryEventsFromTransport,inspectHistoryAuthorStream,parseUnknownAuthorHistoryEventCoordinates,planUnknownAuthorHistoryAcknowledgment,resolveUnknownAuthorAcknowledgmentSelector,scanHistoryAuthorAttribution}from"./author-attribution.js";import{BUILTIN_CORPUS_SHAPES,PM_CORPUS_SHAPE_SCHEMA,buildCorpusShapeItemPlan,createCorpusShapeMeasurement,defineCorpusShape,listBuiltinCorpusShapes,measureCorpusShapePlan,resolveBuiltinCorpusShape}from"./corpus-shape.js";export*from"./core-governance.js";import{createPmCliProgram}from"./cli-program.js";import{runSearchRefreshWorkerEntrypoint}from"./search-refresh-worker.js";import{PM_REPRODUCIBLE_PROCESS_ENV,createReproducibleProcessRunner,resolveReproducibleProcessEnvironment,runWithReproducibleProcessEnvironment}from"./reproducibility/process.js";import{PM_WORKSPACE_RECIPE_SCHEMA,defineWorkspaceRecipe,executeWorkspaceRecipe,runWithWorkspaceRecipe}from"./workspace-recipe.js";import{SNAPSHOT_SCHEMA,WORKSPACE_SNAPSHOT_ACTIONS,createWorkspaceSnapshot,deleteWorkspaceSnapshot,inspectWorkspaceSnapshot,listWorkspaceSnapshots,planWorkspaceSnapshotRestore,restoreWorkspaceSnapshot,restoreWorkspaceSnapshotWithRecovery}from"./workspace-snapshot.js";import{flushTelemetryQueue}from"./telemetry-flush.js";import{PM_HISTORY_COMMAND_ALIASES,PM_CONTEXT_OPS_COMMAND_ALIASES,PM_BULK_LIFECYCLE_COMMAND_ALIASES,PM_RELOCATED_COMMAND_ALIASES,PM_NAMESPACED_COMMAND_ALIASES,findPmNamespacedCommand,resolvePmCommandOperation,resolvePmHistoryOperation}from"./cli-contracts.js";import{EXECUTABLE_COMMAND_ALIASES,PM_COMMAND_ALIAS_CONTRACTS,renderPmCommandAliasMigrationHint,resolvePmCommandAlias,applyBootstrapPagerPolicy,coalesceRepeatedListFlags,listAliasPluralKeys,mergeLinkedTestTwoTokenEntries,normalizeBootstrapInvocation,normalizeLegacyExtensionActionSyntax,parseBootstrapCommandName,parseBootstrapGlobalOptions,parseBootstrapHelpRequest,parseBootstrapTypeValue,stripGlobalBootstrapTokens}from"./cli-bootstrap.js";import{quoteCommandArg,quoteWindowsCommandArg,renderPmCommand}from"./command-line.js";export*from"./agent/command-recovery.js";export*from"./agent/command-suggestions.js";export*from"./agent/item-addressing.js";export*from"./agent/create-option-policy.js";import{runGc}from"./governance/gc.js";import{PM_EXACT_COVERAGE_METRICS,findCoverageDeficits}from"./governance/coverage-assurance.js";import{_testOnlyHealthCommand,runHealth}from"./governance/health.js";import{_testOnlyValidateCommand,projectValidateCounts,runValidate}from"./governance/validate.js";import{runExtension}from"./extension.js";import{inspectStaticExtensionInventory}from"./extension/static-inventory.js";import{buildExtensionInstallPlan,planExtensionDirectoryCopy}from"./extension/install-plan.js";import{resolveExtensionInstallSourceIdentity}from"./extension/source-resolution.js";import{applyStoredExtensionMigrationState,readExtensionMigrationState,resolveExtensionMigrationStatePath,runExtensionMigrateAction,runExtensionMigrations}from"./extension/migrations.js";import{findInstalledNpmPackageCandidate}from"./extension/install-sources.js";import{buildExtensionDescribeResult,renderExtensionDescribeMarkdown}from"./extension/describe.js";import{runEvent,runMeet,runRemind}from"./scheduling-shortcuts.js";import{createExtensionCommandSdk}from"./extension-command-context.js";import{isRuntimeRecord}from"./runtime-input.js";import{resolveStartTaskInProgressStatus}from"./start-task-status.js";import{auditMergeAttributeFence,buildMergeAttributePatterns,findGitWorkspaceRoot,installMergeFence,refreshMergeAttributeFenceIfInstalled,resolveMergeInstallContext,resolveProjectMergeTypeFolders,runMergeInstall}from"./merge/install.js";import{deriveSchemaEvolutionMigrationId,formatSchemaEvolutionMigrationHuman,planSchemaEvolutionMigration,runSchemaEvolutionMigration}from"./schema-migration.js";import{runWithActiveExtensions}from"./runtime.js";import{applyInvocationAuthorOverride}from"./invocation-author.js";import{evaluateMutationGuard,getMutationActionContract,isMutationAction,listMutationActions,PM_MUTATION_ACTION_CONTRACTS,scanMutationSecrets}from"./mutation-guard.js";import{findSimilarItems,findDuplicateClusters,evaluateSimilarityGovernance,similarityAdvisoryWarnings,jaccardSimilarity,normalizeSimilarityText,prepareSimilarityText,scoreItemSimilarity,scorePreparedItemSimilarity,tokenizeSimilarityText}from"./similarity.js";import{inspectStaleInProgressItems,scanStaleInProgressItems}from"./governance/stale-work.js";import{describeItemOwnershipConflict}from"./ownership-source.js";import{discoverNearbyPmRoot}from"./tracker-root-discovery.js";import{assertInitializedTracker,assertReadableTrackerRoot,buildTrackerInitializationRecovery}from"./environment/tracker-preflight.js";import{_testOnly}from"./templates.js";import{runConfig,_testOnlyConfigCommand}from"./config.js";export*from"./agent/identity-config.js";import{INIT_AGENT_GUIDANCE_MODE_VALUES,runInitAgentGuidance,_testOnly as _testOnly2}from"./init-agent-guidance.js";import{runInit,summarizeInitResult,_testOnly as _testOnly3}from"./init.js";import{PROFILE_SUBCOMMANDS,formatProfileApplyHuman,formatProfileLintHuman,formatProfileListHuman,formatProfileShowHuman,runProfileApply,runProfileLint,runProfileList,runProfileShow}from"./profile.js";export*from"./extension-contracts.js";import{RESERVED_ITEM_FIELD_NAMES}from"../core/extensions/item-fields.js";import{PM_PACKAGE_CONVENTIONAL_RESOURCE_ROOTS,PM_PACKAGE_RESOURCE_KINDS,collectPackageExtensionDirectories,readPmPackageManifest}from"../core/packages/manifest.js";import{ACTIVITY_FLAG_CONTRACTS,ACTIVITY_COMMANDER_STRING_OPTION_CONTRACTS,AGGREGATE_FLAG_CONTRACTS,ASSURANCE_FLAG_CONTRACTS,APPEND_FLAG_CONTRACTS,CALENDAR_COMMANDER_STRING_OPTION_CONTRACTS,CALENDAR_FLAG_CONTRACTS,CLAIM_FLAG_CONTRACTS,CLOSE_ACTION_OPTION_KEYS,CLOSE_FLAG_CONTRACTS,CLOSE_MANY_FLAG_CONTRACTS,CLOSE_TASK_FLAG_CONTRACTS,COMMENTS_FLAG_CONTRACTS,COMPLETION_FLAG_CONTRACTS,CONFIG_FLAG_CONTRACTS,CONTEXT_COMMANDER_STRING_OPTION_CONTRACTS,CONTEXT_FLAG_CONTRACTS,CONTRACTS_FLAG_CONTRACTS,COPY_FLAG_CONTRACTS,CREATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS,CREATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS,CREATE_COMMANDER_STRING_OPTION_CONTRACTS,CREATE_FLAG_CONTRACTS,DELETE_FLAG_CONTRACTS,DEPS_FLAG_CONTRACTS,DOCS_FLAG_CONTRACTS,EVAL_FLAG_CONTRACTS,EVENT_FLAG_CONTRACTS,EVENTS_FLAG_CONTRACTS,EXTENSION_ACTIVATE_FLAG_CONTRACTS,EXTENSION_ADOPT_ALL_FLAG_CONTRACTS,EXTENSION_ADOPT_FLAG_CONTRACTS,EXTENSION_CATALOG_FLAG_CONTRACTS,EXTENSION_DEACTIVATE_FLAG_CONTRACTS,EXTENSION_DESCRIBE_FLAG_CONTRACTS,EXTENSION_DOCTOR_FLAG_CONTRACTS,EXTENSION_EXPLORE_FLAG_CONTRACTS,EXTENSION_FLAG_CONTRACTS,EXTENSION_INIT_FLAG_CONTRACTS,EXTENSION_INSTALL_FLAG_CONTRACTS,EXTENSION_MANAGE_FLAG_CONTRACTS,EXTENSION_MIGRATE_FLAG_CONTRACTS,EXTENSION_RELOAD_FLAG_CONTRACTS,EXTENSION_SCOPE_FLAG_CONTRACTS,EXTENSION_UNINSTALL_FLAG_CONTRACTS,FILES_FLAG_CONTRACTS,FOCUS_FLAG_CONTRACTS,GC_FLAG_CONTRACTS,GET_FLAG_CONTRACTS,GRAPH_FLAG_CONTRACTS,GLOBAL_FLAG_CONTRACTS,GUIDE_FLAG_CONTRACTS,HEALTH_FLAG_CONTRACTS,HISTORY_COMPACT_FLAG_CONTRACTS,HISTORY_FLAG_CONTRACTS,HISTORY_REDACT_FLAG_CONTRACTS,HISTORY_REPAIR_FLAG_CONTRACTS,HISTORY_AUTHOR_ACKNOWLEDGE_FLAG_CONTRACTS,INIT_FLAG_CONTRACTS,INSTALL_FLAG_CONTRACTS,ITEM_MUTATE_FLAG_CONTRACTS,ITEM_COMPLETE_FLAG_CONTRACTS,ITEM_REOPEN_FLAG_CONTRACTS,LEARNINGS_FLAG_CONTRACTS,LIST_COMMANDER_STRING_OPTION_CONTRACTS,LIST_FILTER_FLAG_CONTRACTS,MEET_FLAG_CONTRACTS,MERGE_FLAG_CONTRACTS,NEXT_COMMANDER_STRING_OPTION_CONTRACTS,NEXT_FLAG_CONTRACTS,NOTES_FLAG_CONTRACTS,PACKAGE_FLAG_CONTRACTS,PACKAGE_INIT_FLAG_CONTRACTS,PAUSE_TASK_FLAG_CONTRACTS,PLAN_CREATE_METADATA_PARAMETER_KEYS,PLAN_FLAG_CONTRACTS,PM_COMMAND_OUTPUT_BUDGET_CONTRACTS,PM_DIAGNOSTIC_DEGRADATION_STEPS,PM_DIAGNOSTIC_OUTPUT_BUDGET_CONTRACTS,PM_DIAGNOSTIC_OUTPUT_CLASSES,PM_CLI_ONLY_TOOL_ACTION_WAIVERS,PM_CORE_COMMAND_NAMES,PM_EXTENSION_PACKAGE_ACTION_SUBCOMMANDS,PM_PACKAGE_ONLY_ACTION_SUBCOMMANDS,PM_ITEM_ACTION_SUBCOMMANDS,PM_DEPRECATED_TOOL_ACTIONS,PM_DISCOVERABLE_TOOL_ACTIONS,PM_EXTENSION_CAPABILITY_CONTRACTS,PM_EXTENSION_POLICY_MODE_CONTRACTS,PM_EXTENSION_POLICY_SURFACE_CONTRACTS,PM_EXTENSION_SANDBOX_PROFILE_CONTRACTS,PM_EXTENSION_SERVICE_NAME_CONTRACTS,PM_EXTENSION_TRUST_MODE_CONTRACTS,PM_PROVIDER_TOOL_PARAMETERS_SCHEMA,PM_PROVIDER_TOOL_PARAMETERS_SCHEMA_VERSION,PM_TOOL_ACTIONS,analyzePmToolActionParity,PM_TOOL_ACTION_PARAMETER_CONTRACTS,PM_TOOL_PARAMETERS_SCHEMA,PM_TOOL_PARAMETERS_SCHEMA_MAJOR,PM_TOOL_PARAMETERS_SCHEMA_VERSION,PM_OUTPUT_BUDGET_CLASSES,PM_OUTPUT_DEGRADATION_STEPS,PROFILE_FLAG_CONTRACTS,REINDEX_FLAG_CONTRACTS,RELEASE_FLAG_CONTRACTS,REMIND_FLAG_CONTRACTS,RESTORE_FLAG_CONTRACTS,SCHEMA_FLAG_CONTRACTS,SEARCH_COMMANDER_STRING_OPTION_CONTRACTS,SEARCH_FLAG_CONTRACTS,START_TASK_FLAG_CONTRACTS,STATS_FLAG_CONTRACTS,DUPLICATES_FLAG_CONTRACTS,SUBCOMMAND_GLOBAL_FLAG_CONTRACTS,TELEMETRY_FLAG_CONTRACTS,TEST_ALL_FLAG_CONTRACTS,TEST_FLAG_CONTRACTS,TEST_RUNS_FLAG_CONTRACTS,TOOL_ACTIVITY_OPTION_CONTRACTS,TOOL_AGGREGATE_OPTION_CONTRACTS,TOOL_BULK_MUTATION_FILTER_OPTION_CONTRACT_SOURCE,TOOL_CALENDAR_OPTION_CONTRACTS,TOOL_CLOSE_MANY_FILTER_OPTION_CONTRACTS,TOOL_CONTEXT_OPTION_CONTRACTS,TOOL_CREATE_OPTION_CONTRACTS,TOOL_CREATE_OPTION_CONTRACT_SOURCE,TOOL_DEPS_OPTION_CONTRACTS,TOOL_GRAPH_OPTION_CONTRACTS,TOOL_LIST_FILTER_OPTION_CONTRACTS,TOOL_SEARCH_FILTER_OPTION_CONTRACTS,TOOL_SHARED_CREATE_UPDATE_OPTION_CONTRACTS,TOOL_SHARED_CREATE_UPDATE_OPTION_CONTRACT_SOURCE,TOOL_UPDATE_MANY_FILTER_OPTION_CONTRACTS,TOOL_UPDATE_OPTION_CONTRACTS,TOOL_UPDATE_OPTION_CONTRACT_SOURCE,verifyToolOptionCliParity,UPDATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS,UPDATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS,UPDATE_COMMANDER_STRING_OPTION_CONTRACTS,UPDATE_FLAG_CONTRACTS,UPDATE_MANY_FLAG_CONTRACTS,UPGRADE_FLAG_CONTRACTS,VALIDATE_FLAG_CONTRACTS,WORKSPACE_FLAG_CONTRACTS,buildPmActionToolInputSchema,PM_TOOL_RESERVED_CUSTOM_FIELD_PROPERTIES,compactFlagAliasContracts,createPmCommandOutputBudget,definePmCommandOutputBudget,estimatePmOutputTokens,inferPmOutputBudgetClass,projectPmDiagnosticOutput,projectPmDiagnosticText,analyzeSdkCliParameterCompleteness,isPmExtensionCapabilityContract,isPmExtensionPolicyModeContract,isPmExtensionPolicySurfaceContract,isPmExtensionServiceNameContract,isPmToolAction,hasSubcommandFlagContractsForCommand,readFirstStringFromCommanderOptions,readFirstValueFromCommanderOptions,readStringArrayFromCommanderOptions,resolvePmPositionalActionFlagContracts,resolveSubcommandFlagContractsForCommand,resolvePmCommandOutputBudget,resolvePmDiagnosticOutputBudget,resolvePmToolCustomFieldCollision,toCompletionFlagString,withFlagAliasMetadata}from"./cli-contracts.js";export*from"./compose.js";export*from"./governance/assurance.js";export*from"./governance/assurance-action.js";export*from"./governance/assurance-runtime.js";export*from"./governance/assurance-presets.js";export*from"./governance/boundary-fixtures.js";export*from"./governance/defect-recurrence.js";export*from"./governance/merge-receipt-history.js";export*from"./compile-cache.js";export*from"./environment/project-runtime-compatibility.js";export*from"./environment/source-context.js";export*from"./environment/host-environment-errors.js";export*from"./cli-contracts/command-exit-contracts.js";export*from"./context-relevance.js";export*from"./context/recency.js";export*from"./context-intent-contracts.js";export*from"./context-intent-runtime.js";export*from"./context-signal-store.js";export*from"./workspace-memory.js";export*from"./lifecycle-completion.js";export*from"./lifecycle-policy.js";export*from"./output-projection.js";export*from"./read-output-contracts.js";export*from"./read-output-rows.js";export*from"./read-output-session.js";export*from"./output-token-accounting.js";export*from"./context-packing.js";export*from"./context-usage.js";import{classifyHistoryEvent,HISTORY_EVENT_CLASSIFICATION_VERSION,MAINTENANCE_HISTORY_OPERATIONS,SUBSTANTIVE_HISTORY_OPERATIONS}from"../core/history/event-classification.js";export*from"./dependency-provenance.js";export*from"./duplicates.js";export*from"./lifecycle/reopen.js";export*from"./history-compact.js";export*from"./history-read.js";export*from"../core/history/operation-contract.js";export*from"./history/maintenance.js";import{readHistorySnapshot}from"../core/history/read.js";export*from"./history-provenance.js";export*from"./mutation-events.js";export*from"./history-redact.js";import{_testOnly as _testOnly4}from"./history-redact.js";export*from"./history-repair.js";export*from"./item-children.js";export*from"./item-schedule.js";export*from"./merge/index.js";import{runDeps}from"./dependencies.js";export*from"./graph/index.js";import{runDocs}from"./docs.js";import{runFiles,runFilesDiscover,runFilesLookup}from"./files.js";import{applyPathMigrations,applyStandaloneNote,artifactKey,assertLinkedArtifactMutationIsUnambiguous,dedupeLinkedArtifacts,ensureScope,expandAddGlobEntries,normalizeLinkedPath,parseAddEntries,parseAddGlobEntries,parseMigrateEntries,parseRemoveEntries,renameArtifactsResultKey,runLinkedArtifacts,sortLinkedArtifacts,validateLinkedPaths}from"./linked-artifacts.js";export*from"./pagination.js";export*from"./query/item-filter-options.js";export*from"./query/parsers.js";export*from"./output.js";export*from"./output-contracts.js";export*from"./agent/task-transcript-contracts.js";export*from"./relationship-analytics.js";export*from"./relationship-context.js";export*from"./relationship-history.js";export*from"./relationship-migration.js";export*from"./workspace-transaction.js";export*from"./workspace-transaction-gc.js";export*from"./item-transaction.js";export*from"./item-metadata-index.js";export*from"./structured-mutations.js";export*from"./runtime-primitives.js";export*from"./error-runtime.js";export*from"./error-code-catalog.js";export*from"./generated-error-code-catalog.js";export*from"./agent/refusal-reachability.js";export*from"./agent/refusal-closure-census.js";export*from"./agent/refusal-closure.js";export*from"./agent/closed-domain-contracts.js";export*from"./agent/refusal-corpus-contracts.js";import{MERGE_SUBCOMMAND_VALUES}from"./cli-contracts.js";export*from"./agent/tracker-preflight-contracts.js";export*from"./agent/subcommand-recovery.js";export*from"./flag-invocation-contracts.js";export*from"./cli-contracts/flag-lexicon-contracts.js";export*from"./relationships.js";export*from"./actionability.js";import{runCreate}from"./lifecycle/create.js";import{runPlan}from"./lifecycle/plan.js";import{runAppend}from"./lifecycle/append.js";import{isAlreadyClaimedError,runClaim,runClaimNext,runRelease}from"./lifecycle/claim.js";import{runStartTask,runPauseTask,runCloseTask}from"./lifecycle/task-composition.js";import{runCloseMany}from"./lifecycle/close-many.js";import{runUpdateMany}from"./lifecycle/update-many.js";import{runComments}from"./comments.js";import{runNotes}from"./notes.js";import{runLearnings}from"./learnings.js";import{runUpgrade}from"./governance/upgrade.js";import{PLAN_SHOW_DEPTH_VALUES,PLAN_SUBCOMMANDS,PLAN_TEMPLATE_NAMES}from"./lifecycle/plan.js";export*from"./define.js";import{BASELINE_ITEM_FORMAT_VERSION,BUILTIN_ITEM_TYPE_VALUES,CONFIDENCE_TEXT_VALUES,CURRENT_ITEM_FORMAT_VERSION,DEPENDENCY_KIND_VALUES,EXIT_CODE,ISSUE_SEVERITY_VALUES,ITEM_TYPE_VALUES,PM_CLI_EXPECTED_ERROR_NAME,PmCliError,PmClient,RISK_VALUES,STATUS_VALUES,acquireLock,appendHistoryEntry,canonicalDocument,classifyItemFormatVersion,clearWorkspaceContractsCache,commitImportedItem,createHistoryEntry,createPmCliExpectedError,effectiveItemFormatVersion,emptyImportedDocument,ensureTrackerInitialized,generateItemId,getActiveExtensionRegistrations,getContracts,getHistoryPath,getItemPath,getSettingsPath,getWorkspaceContracts,isPmCliExpectedError,isTimestampLiteral,listAllItemMetadata,loadCreateTemplateOptions,locateItem,normalizeItemMetadata,normalizeItemFormatVersion,normalizeItemId,normalizeRawItemId,normalizeStatusInput,nowIso,parseTags,pathExists,readBooleanOption,readCsvListOption,readFileIfExists,readLocatedItem,readRequiredString,readSettings,readStringOption,removeFileIfExists,renderCalendarMarkdown,renderCalendarToon,renderGuideMarkdown,resolveCalendarOutputFormat,resolveGuideOutputFormat,resolveItemTypeRegistry,resolveImplicitPmRoot,resolvePmRoot,resolveRuntimeFieldRegistry,resolveRuntimeStatusRegistry,runAction,runActiveOnReadHooks,runActiveOnWriteHooks,runCalendar,runCompletion,runGuide,runList,runReindex,runSearch,runTemplatesList,runTemplatesSave,runTemplatesShow,runTestRunsList,runTestRunsLogs,runTestRunsResume,runTestRunsStatus,runTestRunsStop,scanItemFormatVersions,selectImportAuthor,serializeItemDocument,splitFrontMatter,toEstimatedMinutesValue,toImportBoolean,toImportConfidence,toImportInteger,toImportLinkedDocs,toImportLinkedFiles,toImportLinkedTests,toImportLogEntries,toImportNormalizedEnum,toImportNumberMap,toImportPriority,toImportStatus,toImportStringList,toImportStringMap,toImportTags,toNonEmptyImportString,writeFileAtomic,aggregate,append,claim,claimNext,close,reopen,closeTask,comments,config,context,copy,create,deleteItem,deps,docs,duplicates,extension,extensionActivate,extensionDeactivate,extensionList,files,filesDiscover,filesLookup,focus,gc,get,graph,health,historyCompact,historyCompactBulk,historyRedact,historyRepair,historyRepairAll,init,learnings,list,listAllComplete,next,notes,packageActivate,packageCatalog,packageDeactivate,packageDescribe,packageDoctor,packageInstall,packageLifecycle,packageList,packageManage,packageReload,packageUninstall,pauseTask,profile,profileApply,profileLint,profileList,profileShow,release,restore,schema,schemaAddField,schemaAddStatus,schemaAddType,schemaApplyPreset,schemaInferTypes,schemaList,schemaListFields,schemaRemapStatus,schemaRemoveField,schemaRemoveStatus,schemaRemoveType,schemaShow,schemaShowField,schemaShowStatus,schemaRenameField,schemaRenameType,search,startTask,stats,update,upgrade,validate}from"./runtime.js";import{extensionMigrate,packageMigrate}from"./package-migrations.js";import{CONTEXT_OUTPUT_VALUES,NEXT_OUTPUT_VALUES,PM_GITIGNORE_END,PM_GITIGNORE_START,analyzeSdkActionCoverage,ensurePmGitignore,getPmGitignoreBlock,closeItem,runAggregate,runClose,runCopy,runContext,runDelete,runFocus,runGet,runNext,runRestore,runUpdate}from"./runtime.js";import{runStats}from"./stats.js";import{readImprovementLedger,recordImprovementObservation}from"./improvement-ledger.js";import{evaluateProvenanceCoverage,projectFleetAttributionAnalytics,projectProvenanceCoverageAnalytics,readHistoryAnalyticsWindow,runFleetAttributionAnalytics,runProvenanceCoverageAnalytics}from"./history-analytics.js";import{DEFAULT_EVAL_QUERIES_RELATIVE_PATH,EVAL_QUERY_SET_CONTRACT,EVAL_QUERY_SET_EXAMPLE,EVAL_QUERY_SET_SCHEMA_ID,parseEvalQuerySet,runEval}from"./eval.js";import{runTelemetry,TELEMETRY_SUBCOMMANDS}from"./telemetry.js";import{classifyLinkedTestCommandSafety,classifyLinkedTestFailure,countFailureCategories,extractReferencedPmItemIdsFromCommand,resolveLinkedTestFailureExitCode,runLinkedTests,runTest,summarizeContextPreflight}from"./test/execution.js";import{TEST_RUN_MEASUREMENT_LIMIT,diffTestRunMeasurements,parseTestRunMeasurements,queryTestRunMeasurementsBelow}from"./test/measurements.js";import{runTestAll}from"./test/batch.js";import{LINKED_TEST_ENV_NAME_PATTERN,LINKED_TEST_PM_CONTEXT_MODE_VALUES,LINKED_TEST_WORKSPACE_CONTEXT_MODE_VALUES,LINKED_TEST_PROTECTED_ENV_KEYS,parseLinkedTestAssertionEqualsMap,parseLinkedTestAssertionGteMap,parseLinkedTestBoolean,parseLinkedTestContextMode,parseLinkedTestEnvClear,parseLinkedTestEnvSet,parseLinkedTestJsonEntries,parseLinkedTestMinLines,parseLinkedTestRegexList,parseLinkedTestStringList,parseLinkedTestWorkspaceContextMode}from"./test/parsers.js";import{acknowledgeLinkedTests,attachLinkedTestMutationProvenance,attachLinkedTestProvenance,linkedTestTrustFingerprint,resolveLinkedTestSourceRef,resolveLinkedTestSourceWorkspaceRoot,resolveLinkedTestTrust,resolveLinkedTestTrustBatch}from"./test/trust.js";import{runStartBackgroundRun,runTestRunsWorker}from"./test/runs.js";import{BUILTIN_PROFILES,listProfiles,normalizeProfileName,PROFILE_NAMES,resolveProfile}from"../core/profile/profile-presets.js";import{planProfileApplication}from"../core/profile/profile-plan.js";import{describeProfileComposition,describeProjectProfile}from"../core/profile/profile-describe.js";import{lintProjectProfile,PROFILE_LINT_CODES,PROFILE_LINT_DIMENSIONS}from"../core/profile/profile-lint.js";export*from"./authoring.js";export*from"./governance.js";export*from"./mcp/discovery.js";export*from"./query.js";export*from"./testing.js";export{ACTIVITY_COMMANDER_STRING_OPTION_CONTRACTS,ACTIVITY_FLAG_CONTRACTS,AGGREGATE_FLAG_CONTRACTS,APPEND_FLAG_CONTRACTS,ASSURANCE_FLAG_CONTRACTS,BASELINE_ITEM_FORMAT_VERSION,BUILTIN_CORPUS_SHAPES,BUILTIN_ITEM_TYPE_VALUES,BUILTIN_PROFILES,CALENDAR_COMMANDER_STRING_OPTION_CONTRACTS,CALENDAR_FLAG_CONTRACTS,CLAIM_FLAG_CONTRACTS,CLOSE_ACTION_OPTION_KEYS,CLOSE_FLAG_CONTRACTS,CLOSE_MANY_FLAG_CONTRACTS,CLOSE_TASK_FLAG_CONTRACTS,COMMENTS_FLAG_CONTRACTS,COMPLETION_FLAG_CONTRACTS,CONFIDENCE_TEXT_VALUES,CONFIG_FLAG_CONTRACTS,CONTEXT_COMMANDER_STRING_OPTION_CONTRACTS,CONTEXT_FLAG_CONTRACTS,CONTEXT_OUTPUT_VALUES,CONTRACTS_FLAG_CONTRACTS,COPY_FLAG_CONTRACTS,CREATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS,CREATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS,CREATE_COMMANDER_STRING_OPTION_CONTRACTS,CREATE_FLAG_CONTRACTS,CURRENT_ITEM_FORMAT_VERSION,DEFAULT_EVAL_QUERIES_RELATIVE_PATH,DELETE_FLAG_CONTRACTS,DEPENDENCY_KIND_VALUES,DEPS_FLAG_CONTRACTS,DOCS_FLAG_CONTRACTS,DUPLICATES_FLAG_CONTRACTS,EVAL_FLAG_CONTRACTS,EVAL_QUERY_SET_CONTRACT,EVAL_QUERY_SET_EXAMPLE,EVAL_QUERY_SET_SCHEMA_ID,EVENTS_FLAG_CONTRACTS,EVENT_FLAG_CONTRACTS,EXECUTABLE_COMMAND_ALIASES,EXIT_CODE,EXTENSION_ACTIVATE_FLAG_CONTRACTS,EXTENSION_ADOPT_ALL_FLAG_CONTRACTS,EXTENSION_ADOPT_FLAG_CONTRACTS,EXTENSION_CATALOG_FLAG_CONTRACTS,EXTENSION_DEACTIVATE_FLAG_CONTRACTS,EXTENSION_DESCRIBE_FLAG_CONTRACTS,EXTENSION_DOCTOR_FLAG_CONTRACTS,EXTENSION_EXPLORE_FLAG_CONTRACTS,EXTENSION_FLAG_CONTRACTS,EXTENSION_INIT_FLAG_CONTRACTS,EXTENSION_INSTALL_FLAG_CONTRACTS,EXTENSION_MANAGE_FLAG_CONTRACTS,EXTENSION_MIGRATE_FLAG_CONTRACTS,EXTENSION_RELOAD_FLAG_CONTRACTS,EXTENSION_SCOPE_FLAG_CONTRACTS,EXTENSION_UNINSTALL_FLAG_CONTRACTS,FILES_FLAG_CONTRACTS,FOCUS_FLAG_CONTRACTS,GC_FLAG_CONTRACTS,GET_FLAG_CONTRACTS,GLOBAL_FLAG_CONTRACTS,GRAPH_FLAG_CONTRACTS,GUIDE_FLAG_CONTRACTS,HEALTH_FLAG_CONTRACTS,HISTORY_AUTHOR_ACKNOWLEDGE_FLAG_CONTRACTS,HISTORY_COMPACT_FLAG_CONTRACTS,HISTORY_EVENT_CLASSIFICATION_VERSION,HISTORY_FLAG_CONTRACTS,HISTORY_REDACT_FLAG_CONTRACTS,HISTORY_REPAIR_FLAG_CONTRACTS,INIT_AGENT_GUIDANCE_MODE_VALUES,INIT_FLAG_CONTRACTS,INSTALL_FLAG_CONTRACTS,ISSUE_SEVERITY_VALUES,ITEM_COMPLETE_FLAG_CONTRACTS,ITEM_MUTATE_FLAG_CONTRACTS,ITEM_REOPEN_FLAG_CONTRACTS,ITEM_TYPE_VALUES,LEARNINGS_FLAG_CONTRACTS,LINKED_TEST_ENV_NAME_PATTERN,LINKED_TEST_PM_CONTEXT_MODE_VALUES,LINKED_TEST_PROTECTED_ENV_KEYS,LINKED_TEST_WORKSPACE_CONTEXT_MODE_VALUES,LIST_COMMANDER_STRING_OPTION_CONTRACTS,LIST_FILTER_FLAG_CONTRACTS,MAINTENANCE_HISTORY_OPERATIONS,MEET_FLAG_CONTRACTS,MERGE_FLAG_CONTRACTS,MERGE_SUBCOMMAND_VALUES,NEXT_COMMANDER_STRING_OPTION_CONTRACTS,NEXT_FLAG_CONTRACTS,NEXT_OUTPUT_VALUES,NOTES_FLAG_CONTRACTS,PACKAGE_FLAG_CONTRACTS,PACKAGE_INIT_FLAG_CONTRACTS,PAUSE_TASK_FLAG_CONTRACTS,PLAN_CREATE_METADATA_PARAMETER_KEYS,PLAN_FLAG_CONTRACTS,PLAN_SHOW_DEPTH_VALUES,PLAN_SUBCOMMANDS,PLAN_TEMPLATE_NAMES,PM_BULK_LIFECYCLE_COMMAND_ALIASES,PM_CLI_EXPECTED_ERROR_NAME,PM_CLI_ONLY_TOOL_ACTION_WAIVERS,PM_COMMAND_ALIAS_CONTRACTS,PM_COMMAND_CAPABILITY_CONTRACTS,PM_COMMAND_OUTPUT_BUDGET_CONTRACTS,PM_COMMAND_VISIBILITY_CONTRACTS,PM_CONTEXT_OPS_COMMAND_ALIASES,PM_CORE_COMMAND_NAMES,PM_CORPUS_SHAPE_SCHEMA,PM_DEPRECATED_TOOL_ACTIONS,PM_DIAGNOSTIC_DEGRADATION_STEPS,PM_DIAGNOSTIC_OUTPUT_BUDGET_CONTRACTS,PM_DIAGNOSTIC_OUTPUT_CLASSES,PM_DISCOVERABLE_TOOL_ACTIONS,PM_EXACT_COVERAGE_METRICS,PM_EXTENSION_CAPABILITY_CONTRACTS,PM_EXTENSION_PACKAGE_ACTION_SUBCOMMANDS,PM_EXTENSION_POLICY_MODE_CONTRACTS,PM_EXTENSION_POLICY_SURFACE_CONTRACTS,PM_EXTENSION_SANDBOX_PROFILE_CONTRACTS,PM_EXTENSION_SERVICE_NAME_CONTRACTS,PM_EXTENSION_TRUST_MODE_CONTRACTS,PM_GITIGNORE_END,PM_GITIGNORE_START,PM_HISTORY_COMMAND_ALIASES,PM_ITEM_ACTION_SUBCOMMANDS,PM_MCP_PROMPT_CONTRACTS,PM_MCP_RESOURCE_CONTRACTS,PM_MCP_TOOL_COMMAND_CONTRACTS,PM_MUTATION_ACTION_CONTRACTS,PM_NAMESPACED_COMMAND_ALIASES,PM_OUTPUT_BUDGET_CLASSES,PM_OUTPUT_DEGRADATION_STEPS,PM_PACKAGE_CONVENTIONAL_RESOURCE_ROOTS,PM_PACKAGE_ONLY_ACTION_SUBCOMMANDS,PM_PACKAGE_RESOURCE_KINDS,PM_PROVIDER_TOOL_PARAMETERS_SCHEMA,PM_PROVIDER_TOOL_PARAMETERS_SCHEMA_VERSION,PM_RELOCATED_COMMAND_ALIASES,PM_REPRODUCIBLE_PROCESS_ENV,PM_TOOL_ACTIONS,PM_TOOL_ACTION_PARAMETER_CONTRACTS,PM_TOOL_PARAMETERS_SCHEMA,PM_TOOL_PARAMETERS_SCHEMA_MAJOR,PM_TOOL_PARAMETERS_SCHEMA_VERSION,PM_TOOL_RESERVED_CUSTOM_FIELD_PROPERTIES,PM_WORKSPACE_RECIPE_SCHEMA,PROFILE_FLAG_CONTRACTS,PROFILE_LINT_CODES,PROFILE_LINT_DIMENSIONS,PROFILE_NAMES,PROFILE_SUBCOMMANDS,PmCliError,PmClient,REINDEX_FLAG_CONTRACTS,RELEASE_FLAG_CONTRACTS,REMIND_FLAG_CONTRACTS,RESERVED_ITEM_FIELD_NAMES,RESTORE_FLAG_CONTRACTS,RISK_VALUES,SCHEMA_FLAG_CONTRACTS,SEARCH_COMMANDER_STRING_OPTION_CONTRACTS,SEARCH_FLAG_CONTRACTS,SNAPSHOT_SCHEMA,START_TASK_FLAG_CONTRACTS,STATS_FLAG_CONTRACTS,STATUS_VALUES,SUBCOMMAND_GLOBAL_FLAG_CONTRACTS,SUBSTANTIVE_HISTORY_OPERATIONS,TELEMETRY_FLAG_CONTRACTS,TELEMETRY_SUBCOMMANDS,TEST_ALL_FLAG_CONTRACTS,TEST_FLAG_CONTRACTS,TEST_RUNS_FLAG_CONTRACTS,TEST_RUN_MEASUREMENT_LIMIT,TOOL_ACTIVITY_OPTION_CONTRACTS,TOOL_AGGREGATE_OPTION_CONTRACTS,TOOL_BULK_MUTATION_FILTER_OPTION_CONTRACT_SOURCE,TOOL_CALENDAR_OPTION_CONTRACTS,TOOL_CLOSE_MANY_FILTER_OPTION_CONTRACTS,TOOL_CONTEXT_OPTION_CONTRACTS,TOOL_CREATE_OPTION_CONTRACTS,TOOL_CREATE_OPTION_CONTRACT_SOURCE,TOOL_DEPS_OPTION_CONTRACTS,TOOL_GRAPH_OPTION_CONTRACTS,TOOL_LIST_FILTER_OPTION_CONTRACTS,TOOL_SEARCH_FILTER_OPTION_CONTRACTS,TOOL_SHARED_CREATE_UPDATE_OPTION_CONTRACTS,TOOL_SHARED_CREATE_UPDATE_OPTION_CONTRACT_SOURCE,TOOL_UPDATE_MANY_FILTER_OPTION_CONTRACTS,TOOL_UPDATE_OPTION_CONTRACTS,TOOL_UPDATE_OPTION_CONTRACT_SOURCE,UPDATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS,UPDATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS,UPDATE_COMMANDER_STRING_OPTION_CONTRACTS,UPDATE_FLAG_CONTRACTS,UPDATE_MANY_FLAG_CONTRACTS,UPGRADE_FLAG_CONTRACTS,VALIDATE_FLAG_CONTRACTS,WORKSPACE_FLAG_CONTRACTS,WORKSPACE_SNAPSHOT_ACTIONS,_testOnly4 as _testOnly,_testOnlyConfigCommand,_testOnlyHealthCommand,_testOnly3 as _testOnlyInit,_testOnly2 as _testOnlyInitAgentGuidance,_testOnly as _testOnlyTemplates,_testOnlyValidateCommand,acknowledgeLinkedTests,acknowledgeUnknownAuthorHistoryEvents,acknowledgeUnknownAuthorHistoryEventsFromTransport,acquireLock,aggregate,analyzePmToolActionParity,analyzeSdkActionCoverage,analyzeSdkCliParameterCompleteness,append,appendHistoryEntry,applyBootstrapPagerPolicy,applyInvocationAuthorOverride,applyPathMigrations,applyStandaloneNote,applyStoredExtensionMigrationState,artifactKey,assertInitializedTracker,assertLinkedArtifactMutationIsUnambiguous,assertReadableTrackerRoot,attachLinkedTestMutationProvenance,attachLinkedTestProvenance,auditMergeAttributeFence,buildCorpusShapeItemPlan,buildExtensionDescribeResult,buildExtensionInstallPlan,buildMergeAttributePatterns,buildPmActionToolInputSchema,buildTrackerInitializationRecovery,canonicalDocument,claim,claimNext,classifyHistoryEvent,classifyItemFormatVersion,classifyLinkedTestCommandSafety,classifyLinkedTestFailure,clearWorkspaceContractsCache,close,closeItem,closeTask,coalesceRepeatedListFlags,collectPackageExtensionDirectories,comments,commitImportedItem,compactFlagAliasContracts,config,context,copy,countFailureCategories,create,createCorpusShapeMeasurement,createExtensionCommandSdk,createHistoryEntry,createPmCliExpectedError,createPmCliProgram,createPmCommandOutputBudget,createReproducibleProcessRunner,createWorkspaceSnapshot,dedupeLinkedArtifacts,defineCorpusShape,definePmCommandOutputBudget,defineWorkspaceRecipe,deleteItem,deleteWorkspaceSnapshot,deps,deriveSchemaEvolutionMigrationId,describeItemOwnershipConflict,describeProfileComposition,describeProjectProfile,diffTestRunMeasurements,discoverNearbyPmRoot,docs,duplicates,effectiveItemFormatVersion,emptyImportedDocument,ensurePmGitignore,ensureScope,ensureTrackerInitialized,estimatePmOutputTokens,evaluateMutationGuard,evaluateProvenanceCoverage,evaluateSimilarityGovernance,executeWorkspaceRecipe,expandAddGlobEntries,extension,extensionActivate,extensionDeactivate,extensionList,extensionMigrate,extractReferencedPmItemIdsFromCommand,files,filesDiscover,filesLookup,findCoverageDeficits,findDuplicateClusters,findGitWorkspaceRoot,findInstalledNpmPackageCandidate,findPmNamespacedCommand,findSimilarItems,flushTelemetryQueue,focus,formatProfileApplyHuman,formatProfileLintHuman,formatProfileListHuman,formatProfileShowHuman,formatSchemaEvolutionMigrationHuman,gc,generateItemId,get,getActiveExtensionRegistrations,getContracts,getHistoryPath,getItemPath,getMutationActionContract,getPmGitignoreBlock,getSettingsPath,getWorkspaceContracts,graph,hasSubcommandFlagContractsForCommand,health,historyCompact,historyCompactBulk,historyRedact,historyRepair,historyRepairAll,inferPmOutputBudgetClass,init,inspectHistoryAuthorStream,inspectStaleInProgressItems,inspectStaticExtensionInventory,inspectWorkspaceSnapshot,installMergeFence,isAlreadyClaimedError,isErrnoError,isMutationAction,isPmCliExpectedError,isPmExtensionCapabilityContract,isPmExtensionPolicyModeContract,isPmExtensionPolicySurfaceContract,isPmExtensionServiceNameContract,isPmToolAction,isRuntimeRecord,isTimestampLiteral,jaccardSimilarity,learnings,limitAnnotationEntries,linkedTestTrustFingerprint,lintProjectProfile,list,listAliasPluralKeys,listAllComplete,listAllItemMetadata,listBuiltinCorpusShapes,listMutationActions,listPmCommandsForFamily,listPmCommandsForTier,listPmMcpToolsForProfile,listProfiles,listWorkspaceSnapshots,loadCreateTemplateOptions,locateItem,measureCorpusShapePlan,mergeLinkedTestTwoTokenEntries,next,normalizeAnnotationTransportOptions,normalizeBootstrapInvocation,normalizeItemFormatVersion,normalizeItemId,normalizeItemMetadata,normalizeLegacyExtensionActionSyntax,normalizeLinkedPath,normalizeProfileName,normalizeRawItemId,normalizeSimilarityText,normalizeStatusInput,notes,nowIso,packageActivate,packageCatalog,packageDeactivate,packageDescribe,packageDoctor,packageInstall,packageLifecycle,packageList,packageManage,packageMigrate,packageReload,packageUninstall,parseAddEntries,parseAddGlobEntries,parseAnnotationTextInput,parseBootstrapCommandName,parseBootstrapGlobalOptions,parseBootstrapHelpRequest,parseBootstrapTypeValue,parseEvalQuerySet,parseLinkedTestAssertionEqualsMap,parseLinkedTestAssertionGteMap,parseLinkedTestBoolean,parseLinkedTestContextMode,parseLinkedTestEnvClear,parseLinkedTestEnvSet,parseLinkedTestJsonEntries,parseLinkedTestMinLines,parseLinkedTestRegexList,parseLinkedTestStringList,parseLinkedTestWorkspaceContextMode,parseMigrateEntries,parseRemoveEntries,parseTags,parseTestRunMeasurements,parseUnknownAuthorHistoryEventCoordinates,pathExists,pauseTask,planExtensionDirectoryCopy,planProfileApplication,planSchemaEvolutionMigration,planUnknownAuthorHistoryAcknowledgment,planWorkspaceSnapshotRestore,prepareSimilarityText,profile,profileApply,profileLint,profileList,profileShow,projectFleetAttributionAnalytics,projectPmDiagnosticOutput,projectPmDiagnosticText,projectProvenanceCoverageAnalytics,projectValidateCounts,queryTestRunMeasurementsBelow,quoteCommandArg,quoteWindowsCommandArg,readAnnotationEntries,readBooleanOption,readCsvListOption,readExtensionMigrationState,readFileIfExists,readFirstStringFromCommanderOptions,readFirstValueFromCommanderOptions,readHistoryAnalyticsWindow,readHistorySnapshot,readImprovementLedger,readLocatedItem,readPmPackageManifest,readRequiredString,readSettings,readStringArrayFromCommanderOptions,readStringOption,recordImprovementObservation,refreshMergeAttributeFenceIfInstalled,release,removeFileIfExists,renameArtifactsResultKey,renderCalendarMarkdown,renderCalendarToon,renderExtensionDescribeMarkdown,renderGuideMarkdown,renderPmCommand,renderPmCommandAliasMigrationHint,renderPmCommandVisibilityMarkdown,reopen,resolveAnnotationIndex,resolveAnnotationInput,resolveBuiltinCorpusShape,resolveCalendarOutputFormat,resolveExtensionInstallSourceIdentity,resolveExtensionMigrationStatePath,resolveGuideOutputFormat,resolveImplicitPmRoot,resolveItemTypeRegistry,resolveLinkedTestFailureExitCode,resolveLinkedTestSourceRef,resolveLinkedTestSourceWorkspaceRoot,resolveLinkedTestTrust,resolveLinkedTestTrustBatch,resolveMergeInstallContext,resolvePmCommandAlias,resolvePmCommandCapabilityFamily,resolvePmCommandOperation,resolvePmCommandOutputBudget,resolvePmCommandVisibilityTier,resolvePmDiagnosticOutputBudget,resolvePmHistoryOperation,resolvePmPositionalActionFlagContracts,resolvePmRoot,resolvePmToolCustomFieldCollision,resolveProfile,resolveProjectMergeTypeFolders,resolveReproducibleProcessEnvironment,resolveRuntimeFieldRegistry,resolveRuntimeStatusRegistry,resolveStartTaskInProgressStatus,resolveSubcommandFlagContractsForCommand,resolveUnknownAuthorAcknowledgmentSelector,restore,restoreWorkspaceSnapshot,restoreWorkspaceSnapshotWithRecovery,runAction,runActiveOnReadHooks,runActiveOnWriteHooks,runAggregate,runAnnotationCommand,runAppend,runCalendar,runClaim,runClaimNext,runClose,runCloseMany,runCloseTask,runComments,runCompletion,runConfig,runContext,runCopy,runCreate,runDelete,runDeps,runDocs,runEval,runEvent,runExtension,runExtensionMigrateAction,runExtensionMigrations,runFiles,runFilesDiscover,runFilesLookup,runFleetAttributionAnalytics,runFocus,runGc,runGet,runGuide,runHealth,runInit,runInitAgentGuidance,runLearnings,runLinkedArtifacts,runLinkedTests,runList,runMeet,runMergeInstall,runNext,runNotes,runPauseTask,runPlan,runProfileApply,runProfileLint,runProfileList,runProfileShow,runProvenanceCoverageAnalytics,runReindex,runRelease,runRemind,runRestore,runSchemaEvolutionMigration,runSearch,runSearchRefreshWorkerEntrypoint,runStartBackgroundRun,runStartTask,runStats,runTelemetry,runTemplatesList,runTemplatesSave,runTemplatesShow,runTest,runTestAll,runTestRunsList,runTestRunsLogs,runTestRunsResume,runTestRunsStatus,runTestRunsStop,runTestRunsWorker,runUpdate,runUpdateMany,runUpgrade,runValidate,runWithActiveExtensions,runWithReproducibleProcessEnvironment,runWithWorkspaceRecipe,scanHistoryAuthorAttribution,scanItemFormatVersions,scanMutationSecrets,scanStaleInProgressItems,schema,schemaAddField,schemaAddStatus,schemaAddType,schemaApplyPreset,schemaInferTypes,schemaList,schemaListFields,schemaRemapStatus,schemaRemoveField,schemaRemoveStatus,schemaRemoveType,schemaRenameField,schemaRenameType,schemaShow,schemaShowField,schemaShowStatus,scoreItemSimilarity,scorePreparedItemSimilarity,search,selectImportAuthor,serializeItemDocument,similarityAdvisoryWarnings,sortLinkedArtifacts,splitFrontMatter,startTask,stats,stripGlobalBootstrapTokens,summarizeContextPreflight,summarizeInitResult,toCompletionFlagString,toEstimatedMinutesValue,toImportBoolean,toImportConfidence,toImportInteger,toImportLinkedDocs,toImportLinkedFiles,toImportLinkedTests,toImportLogEntries,toImportNormalizedEnum,toImportNumberMap,toImportPriority,toImportStatus,toImportStringList,toImportStringMap,toImportTags,toNonEmptyImportString,tokenizeSimilarityText,update,upgrade,validate,validateLinkedPaths,verifyToolOptionCliParity,withFlagAliasMetadata,wrapOwnershipConflict,writeFileAtomic};
|
|
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]="e9d5c73b-d4fe-56ca-a2ad-229b04baad63")}catch{}})();import{PM_COMMAND_CAPABILITY_CONTRACTS,PM_COMMAND_VISIBILITY_CONTRACTS,PM_MCP_PROMPT_CONTRACTS,PM_MCP_RESOURCE_CONTRACTS,PM_MCP_TOOL_COMMAND_CONTRACTS,listPmCommandsForFamily,listPmCommandsForTier,listPmMcpToolsForProfile,renderPmCommandVisibilityMarkdown,resolvePmCommandCapabilityFamily,resolvePmCommandVisibilityTier}from"./agent-capability-contracts.js";export*from"./mcp/protocol.js";export*from"./mcp/interactions.js";export*from"./mcp/tasks.js";export*from"./mcp/subscriptions.js";export*from"./mcp/transport.js";export*from"./mcp/authorization.js";export*from"./mcp/apps.js";export*from"./mcp/skills.js";export*from"./cli-contracts/grammar-contracts.js";export*from"./agent-session-context.js";export*from"./environment/agent-environment.js";import{isErrnoError,limitAnnotationEntries,parseAnnotationTextInput,readAnnotationEntries,normalizeAnnotationTransportOptions,resolveAnnotationInput,resolveAnnotationIndex,runAnnotationCommand,wrapOwnershipConflict}from"./annotations.js";import{acknowledgeUnknownAuthorHistoryEvents,acknowledgeUnknownAuthorHistoryEventsFromTransport,inspectHistoryAuthorStream,parseUnknownAuthorHistoryEventCoordinates,planUnknownAuthorHistoryAcknowledgment,resolveUnknownAuthorAcknowledgmentSelector,scanHistoryAuthorAttribution}from"./author-attribution.js";import{BUILTIN_CORPUS_SHAPES,PM_CORPUS_SHAPE_SCHEMA,buildCorpusShapeItemPlan,createCorpusShapeMeasurement,defineCorpusShape,listBuiltinCorpusShapes,measureCorpusShapePlan,resolveBuiltinCorpusShape}from"./corpus-shape.js";export*from"./core-governance.js";import{createPmCliProgram}from"./cli-program.js";import{runSearchRefreshWorkerEntrypoint}from"./search-refresh-worker.js";import{PM_REPRODUCIBLE_PROCESS_ENV,createReproducibleProcessRunner,resolveReproducibleProcessEnvironment,runWithReproducibleProcessEnvironment}from"./reproducibility/process.js";import{PM_WORKSPACE_RECIPE_SCHEMA,defineWorkspaceRecipe,executeWorkspaceRecipe,runWithWorkspaceRecipe}from"./workspace-recipe.js";import{SNAPSHOT_SCHEMA,WORKSPACE_SNAPSHOT_ACTIONS,createWorkspaceSnapshot,deleteWorkspaceSnapshot,inspectWorkspaceSnapshot,listWorkspaceSnapshots,planWorkspaceSnapshotRestore,restoreWorkspaceSnapshot,restoreWorkspaceSnapshotWithRecovery}from"./workspace-snapshot.js";import{flushTelemetryQueue}from"./telemetry-flush.js";import{PM_HISTORY_COMMAND_ALIASES,PM_CONTEXT_OPS_COMMAND_ALIASES,PM_BULK_LIFECYCLE_COMMAND_ALIASES,PM_RELOCATED_COMMAND_ALIASES,PM_NAMESPACED_COMMAND_ALIASES,findPmNamespacedCommand,resolvePmCommandOperation,resolvePmHistoryOperation}from"./cli-contracts.js";import{EXECUTABLE_COMMAND_ALIASES,PM_COMMAND_ALIAS_CONTRACTS,renderPmCommandAliasMigrationHint,resolvePmCommandAlias,applyBootstrapPagerPolicy,coalesceRepeatedListFlags,listAliasPluralKeys,mergeLinkedTestTwoTokenEntries,normalizeBootstrapInvocation,normalizeLegacyExtensionActionSyntax,parseBootstrapCommandName,parseBootstrapGlobalOptions,parseBootstrapHelpRequest,parseBootstrapTypeValue,stripGlobalBootstrapTokens}from"./cli-bootstrap.js";import{quoteCommandArg,quoteWindowsCommandArg,renderPmCommand}from"./command-line.js";export*from"./agent/command-recovery.js";export*from"./agent/command-suggestions.js";export*from"./agent/item-addressing.js";export*from"./agent/create-option-policy.js";import{runGc}from"./governance/gc.js";import{PM_EXACT_COVERAGE_METRICS,findCoverageDeficits}from"./governance/coverage-assurance.js";import{_testOnlyHealthCommand,runHealth}from"./governance/health.js";import{_testOnlyValidateCommand,projectValidateCounts,runValidate}from"./governance/validate.js";import{runExtension}from"./extension.js";import{inspectStaticExtensionInventory}from"./extension/static-inventory.js";import{buildExtensionInstallPlan,planExtensionDirectoryCopy}from"./extension/install-plan.js";import{resolveExtensionInstallSourceIdentity}from"./extension/source-resolution.js";import{applyStoredExtensionMigrationState,readExtensionMigrationState,resolveExtensionMigrationStatePath,runExtensionMigrateAction,runExtensionMigrations}from"./extension/migrations.js";import{findInstalledNpmPackageCandidate}from"./extension/install-sources.js";import{buildExtensionDescribeResult,renderExtensionDescribeMarkdown}from"./extension/describe.js";import{runEvent,runMeet,runRemind}from"./scheduling-shortcuts.js";import{createExtensionCommandSdk}from"./extension-command-context.js";import{isRuntimeRecord}from"./runtime-input.js";import{resolveStartTaskInProgressStatus}from"./start-task-status.js";import{auditMergeAttributeFence,buildMergeAttributePatterns,findGitWorkspaceRoot,installMergeFence,refreshMergeAttributeFenceIfInstalled,resolveMergeInstallContext,resolveProjectMergeTypeFolders,runMergeInstall}from"./merge/install.js";import{deriveSchemaEvolutionMigrationId,formatSchemaEvolutionMigrationHuman,planSchemaEvolutionMigration,runSchemaEvolutionMigration}from"./schema-migration.js";import{runWithActiveExtensions}from"./runtime.js";import{applyInvocationAuthorOverride}from"./invocation-author.js";import{evaluateMutationGuard,getMutationActionContract,isMutationAction,listMutationActions,PM_MUTATION_ACTION_CONTRACTS,scanMutationSecrets}from"./mutation-guard.js";import{findSimilarItems,findDuplicateClusters,evaluateSimilarityGovernance,similarityAdvisoryWarnings,jaccardSimilarity,normalizeSimilarityText,prepareSimilarityText,scoreItemSimilarity,scorePreparedItemSimilarity,tokenizeSimilarityText}from"./similarity.js";import{inspectStaleInProgressItems,scanStaleInProgressItems}from"./governance/stale-work.js";import{describeItemOwnershipConflict}from"./ownership-source.js";import{discoverNearbyPmRoot}from"./tracker-root-discovery.js";import{assertInitializedTracker,assertReadableTrackerRoot,buildTrackerInitializationRecovery}from"./environment/tracker-preflight.js";import{_testOnly}from"./templates.js";import{runConfig,_testOnlyConfigCommand}from"./config.js";export*from"./agent/identity-config.js";import{INIT_AGENT_GUIDANCE_MODE_VALUES,runInitAgentGuidance,_testOnly as _testOnly2}from"./init-agent-guidance.js";import{runInit,summarizeInitResult,_testOnly as _testOnly3}from"./init.js";import{PROFILE_SUBCOMMANDS,formatProfileApplyHuman,formatProfileLintHuman,formatProfileListHuman,formatProfileShowHuman,runProfileApply,runProfileLint,runProfileList,runProfileShow}from"./profile.js";export*from"./extension-contracts.js";import{RESERVED_ITEM_FIELD_NAMES}from"../core/extensions/item-fields.js";import{PM_PACKAGE_CONVENTIONAL_RESOURCE_ROOTS,PM_PACKAGE_RESOURCE_KINDS,collectPackageExtensionDirectories,readPmPackageManifest}from"../core/packages/manifest.js";import{ACTIVITY_FLAG_CONTRACTS,ACTIVITY_COMMANDER_STRING_OPTION_CONTRACTS,AGGREGATE_FLAG_CONTRACTS,ASSURANCE_FLAG_CONTRACTS,APPEND_FLAG_CONTRACTS,CALENDAR_COMMANDER_STRING_OPTION_CONTRACTS,CALENDAR_FLAG_CONTRACTS,CLAIM_FLAG_CONTRACTS,CLOSE_ACTION_OPTION_KEYS,CLOSE_FLAG_CONTRACTS,CLOSE_MANY_FLAG_CONTRACTS,CLOSE_TASK_FLAG_CONTRACTS,COMMENTS_FLAG_CONTRACTS,COMPLETION_FLAG_CONTRACTS,CONFIG_FLAG_CONTRACTS,CONTEXT_COMMANDER_STRING_OPTION_CONTRACTS,CONTEXT_FLAG_CONTRACTS,CONTRACTS_FLAG_CONTRACTS,COPY_FLAG_CONTRACTS,CREATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS,CREATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS,CREATE_COMMANDER_STRING_OPTION_CONTRACTS,CREATE_FLAG_CONTRACTS,DELETE_FLAG_CONTRACTS,DEPS_FLAG_CONTRACTS,DOCS_FLAG_CONTRACTS,EVAL_FLAG_CONTRACTS,EVENT_FLAG_CONTRACTS,EVENTS_FLAG_CONTRACTS,EXTENSION_ACTIVATE_FLAG_CONTRACTS,EXTENSION_ADOPT_ALL_FLAG_CONTRACTS,EXTENSION_ADOPT_FLAG_CONTRACTS,EXTENSION_CATALOG_FLAG_CONTRACTS,EXTENSION_DEACTIVATE_FLAG_CONTRACTS,EXTENSION_DESCRIBE_FLAG_CONTRACTS,EXTENSION_DOCTOR_FLAG_CONTRACTS,EXTENSION_EXPLORE_FLAG_CONTRACTS,EXTENSION_FLAG_CONTRACTS,EXTENSION_INIT_FLAG_CONTRACTS,EXTENSION_INSTALL_FLAG_CONTRACTS,EXTENSION_MANAGE_FLAG_CONTRACTS,EXTENSION_MIGRATE_FLAG_CONTRACTS,EXTENSION_RELOAD_FLAG_CONTRACTS,EXTENSION_SCOPE_FLAG_CONTRACTS,EXTENSION_UNINSTALL_FLAG_CONTRACTS,FILES_FLAG_CONTRACTS,FOCUS_FLAG_CONTRACTS,GC_FLAG_CONTRACTS,GET_FLAG_CONTRACTS,GRAPH_FLAG_CONTRACTS,GLOBAL_FLAG_CONTRACTS,GUIDE_FLAG_CONTRACTS,HEALTH_FLAG_CONTRACTS,HISTORY_COMPACT_FLAG_CONTRACTS,HISTORY_FLAG_CONTRACTS,HISTORY_REDACT_FLAG_CONTRACTS,HISTORY_REPAIR_FLAG_CONTRACTS,HISTORY_AUTHOR_ACKNOWLEDGE_FLAG_CONTRACTS,INIT_FLAG_CONTRACTS,INSTALL_FLAG_CONTRACTS,ITEM_MUTATE_FLAG_CONTRACTS,ITEM_COMPLETE_FLAG_CONTRACTS,ITEM_REOPEN_FLAG_CONTRACTS,LEARNINGS_FLAG_CONTRACTS,LIST_COMMANDER_STRING_OPTION_CONTRACTS,LIST_FILTER_FLAG_CONTRACTS,MEET_FLAG_CONTRACTS,MERGE_FLAG_CONTRACTS,NEXT_COMMANDER_STRING_OPTION_CONTRACTS,NEXT_FLAG_CONTRACTS,NOTES_FLAG_CONTRACTS,PACKAGE_FLAG_CONTRACTS,PACKAGE_INIT_FLAG_CONTRACTS,PAUSE_TASK_FLAG_CONTRACTS,PLAN_CREATE_METADATA_PARAMETER_KEYS,PLAN_FLAG_CONTRACTS,PM_COMMAND_OUTPUT_BUDGET_CONTRACTS,PM_DIAGNOSTIC_DEGRADATION_STEPS,PM_DIAGNOSTIC_OUTPUT_BUDGET_CONTRACTS,PM_DIAGNOSTIC_OUTPUT_CLASSES,PM_CLI_ONLY_TOOL_ACTION_WAIVERS,PM_CORE_COMMAND_NAMES,PM_EXTENSION_PACKAGE_ACTION_SUBCOMMANDS,PM_PACKAGE_ONLY_ACTION_SUBCOMMANDS,PM_ITEM_ACTION_SUBCOMMANDS,PM_DEPRECATED_TOOL_ACTIONS,PM_DISCOVERABLE_TOOL_ACTIONS,PM_EXTENSION_CAPABILITY_CONTRACTS,PM_EXTENSION_POLICY_MODE_CONTRACTS,PM_EXTENSION_POLICY_SURFACE_CONTRACTS,PM_EXTENSION_SANDBOX_PROFILE_CONTRACTS,PM_EXTENSION_SERVICE_NAME_CONTRACTS,PM_EXTENSION_TRUST_MODE_CONTRACTS,PM_PROVIDER_TOOL_PARAMETERS_SCHEMA,PM_PROVIDER_TOOL_PARAMETERS_SCHEMA_VERSION,PM_TOOL_ACTIONS,analyzePmToolActionParity,PM_TOOL_ACTION_PARAMETER_CONTRACTS,PM_TOOL_PARAMETERS_SCHEMA,PM_TOOL_PARAMETERS_SCHEMA_MAJOR,PM_TOOL_PARAMETERS_SCHEMA_VERSION,PM_OUTPUT_BUDGET_CLASSES,PM_OUTPUT_DEGRADATION_STEPS,PROFILE_FLAG_CONTRACTS,REINDEX_FLAG_CONTRACTS,RELEASE_FLAG_CONTRACTS,REMIND_FLAG_CONTRACTS,RESTORE_FLAG_CONTRACTS,SCHEMA_FLAG_CONTRACTS,SEARCH_COMMANDER_STRING_OPTION_CONTRACTS,SEARCH_FLAG_CONTRACTS,START_TASK_FLAG_CONTRACTS,STATS_FLAG_CONTRACTS,DUPLICATES_FLAG_CONTRACTS,SUBCOMMAND_GLOBAL_FLAG_CONTRACTS,TELEMETRY_FLAG_CONTRACTS,TEST_ALL_FLAG_CONTRACTS,TEST_FLAG_CONTRACTS,TEST_RUNS_FLAG_CONTRACTS,TOOL_ACTIVITY_OPTION_CONTRACTS,TOOL_AGGREGATE_OPTION_CONTRACTS,TOOL_BULK_MUTATION_FILTER_OPTION_CONTRACT_SOURCE,TOOL_CALENDAR_OPTION_CONTRACTS,TOOL_CLOSE_MANY_FILTER_OPTION_CONTRACTS,TOOL_CONTEXT_OPTION_CONTRACTS,TOOL_CREATE_OPTION_CONTRACTS,TOOL_CREATE_OPTION_CONTRACT_SOURCE,TOOL_DEPS_OPTION_CONTRACTS,TOOL_GRAPH_OPTION_CONTRACTS,TOOL_LIST_FILTER_OPTION_CONTRACTS,TOOL_SEARCH_FILTER_OPTION_CONTRACTS,TOOL_SHARED_CREATE_UPDATE_OPTION_CONTRACTS,TOOL_SHARED_CREATE_UPDATE_OPTION_CONTRACT_SOURCE,TOOL_UPDATE_MANY_FILTER_OPTION_CONTRACTS,TOOL_UPDATE_OPTION_CONTRACTS,TOOL_UPDATE_OPTION_CONTRACT_SOURCE,verifyToolOptionCliParity,UPDATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS,UPDATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS,UPDATE_COMMANDER_STRING_OPTION_CONTRACTS,UPDATE_FLAG_CONTRACTS,UPDATE_MANY_FLAG_CONTRACTS,UPGRADE_FLAG_CONTRACTS,VALIDATE_FLAG_CONTRACTS,WORKSPACE_FLAG_CONTRACTS,buildPmActionToolInputSchema,PM_TOOL_RESERVED_CUSTOM_FIELD_PROPERTIES,compactFlagAliasContracts,createPmCommandOutputBudget,definePmCommandOutputBudget,estimatePmOutputTokens,inferPmOutputBudgetClass,projectPmDiagnosticOutput,projectPmDiagnosticText,analyzeSdkCliParameterCompleteness,isPmExtensionCapabilityContract,isPmExtensionPolicyModeContract,isPmExtensionPolicySurfaceContract,isPmExtensionServiceNameContract,isPmToolAction,hasSubcommandFlagContractsForCommand,readFirstStringFromCommanderOptions,readFirstValueFromCommanderOptions,readStringArrayFromCommanderOptions,resolvePmPositionalActionFlagContracts,resolveSubcommandFlagContractsForCommand,resolvePmCommandOutputBudget,resolvePmDiagnosticOutputBudget,resolvePmToolCustomFieldCollision,toCompletionFlagString,withFlagAliasMetadata}from"./cli-contracts.js";export*from"./compose.js";export*from"./governance/assurance.js";export*from"./governance/assurance-action.js";export*from"./governance/assurance-runtime.js";export*from"./governance/assurance-presets.js";export*from"./governance/boundary-fixtures.js";export*from"./governance/defect-recurrence.js";export*from"./governance/merge-receipt-history.js";export*from"./compile-cache.js";export*from"./environment/project-runtime-compatibility.js";export*from"./environment/source-context.js";export*from"./environment/host-environment-errors.js";export*from"./cli-contracts/command-exit-contracts.js";export*from"./context-relevance.js";export*from"./context/recency.js";export*from"./context-intent-contracts.js";export*from"./context-intent-runtime.js";export*from"./context-signal-store.js";export*from"./workspace-memory.js";export*from"./lifecycle-completion.js";export*from"./lifecycle-policy.js";export*from"./output-projection.js";export*from"./read-output-contracts.js";export*from"./read-output-rows.js";export*from"./read-output-session.js";export*from"./output-token-accounting.js";export*from"./context-packing.js";export*from"./context-usage.js";import{classifyHistoryEvent,HISTORY_EVENT_CLASSIFICATION_VERSION,MAINTENANCE_HISTORY_OPERATIONS,SUBSTANTIVE_HISTORY_OPERATIONS}from"../core/history/event-classification.js";export*from"./dependency-provenance.js";export*from"./duplicates.js";export*from"./lifecycle/reopen.js";export*from"./history-compact.js";export*from"./history-read.js";export*from"../core/history/operation-contract.js";export*from"./history/maintenance.js";import{readHistorySnapshot}from"../core/history/read.js";export*from"./history-provenance.js";export*from"./mutation-events.js";export*from"./history-redact.js";import{_testOnly as _testOnly4}from"./history-redact.js";export*from"./history-repair.js";export*from"./item-children.js";export*from"./item-schedule.js";export*from"./merge/index.js";import{runDeps}from"./dependencies.js";export*from"./graph/index.js";import{runDocs}from"./docs.js";import{runFiles,runFilesDiscover,runFilesLookup}from"./files.js";import{applyPathMigrations,applyStandaloneNote,artifactKey,assertLinkedArtifactMutationIsUnambiguous,dedupeLinkedArtifacts,ensureScope,expandAddGlobEntries,normalizeLinkedPath,parseAddEntries,parseAddGlobEntries,parseMigrateEntries,parseRemoveEntries,renameArtifactsResultKey,runLinkedArtifacts,sortLinkedArtifacts,validateLinkedPaths}from"./linked-artifacts.js";export*from"./pagination.js";export*from"./query/item-filter-options.js";export*from"./query/parsers.js";export*from"./output.js";export*from"./output-contracts.js";export*from"./agent/task-transcript-contracts.js";export*from"./relationship-analytics.js";export*from"./relationship-context.js";export*from"./relationship-history.js";export*from"./relationship-migration.js";export*from"./workspace-transaction.js";export*from"./workspace-transaction-gc.js";export*from"./item-transaction.js";export*from"./item-metadata-index.js";export*from"./structured-mutations.js";export*from"./runtime-primitives.js";export*from"./error-runtime.js";export*from"./error-code-catalog.js";export*from"./generated-error-code-catalog.js";export*from"./agent/refusal-reachability.js";export*from"./agent/refusal-closure-census.js";export*from"./agent/refusal-closure.js";export*from"./agent/closed-domain-contracts.js";export*from"./agent/refusal-corpus-contracts.js";import{MERGE_SUBCOMMAND_VALUES}from"./cli-contracts.js";export*from"./agent/tracker-preflight-contracts.js";export*from"./agent/subcommand-recovery.js";export*from"./flag-invocation-contracts.js";export*from"./cli-contracts/flag-lexicon-contracts.js";export*from"./relationships.js";export*from"./actionability.js";import{runCreate}from"./lifecycle/create.js";import{runPlan}from"./lifecycle/plan.js";import{runAppend}from"./lifecycle/append.js";import{isAlreadyClaimedError,runClaim,runClaimNext,runRelease}from"./lifecycle/claim.js";import{runStartTask,runPauseTask,runCloseTask}from"./lifecycle/task-composition.js";import{runCloseMany}from"./lifecycle/close-many.js";import{runUpdateMany}from"./lifecycle/update-many.js";import{runComments}from"./comments.js";import{runNotes}from"./notes.js";import{runLearnings}from"./learnings.js";import{runUpgrade}from"./governance/upgrade.js";import{PLAN_SHOW_DEPTH_VALUES,PLAN_SUBCOMMANDS,PLAN_TEMPLATE_NAMES}from"./lifecycle/plan.js";export*from"./define.js";import{BASELINE_ITEM_FORMAT_VERSION,BUILTIN_ITEM_TYPE_VALUES,CONFIDENCE_TEXT_VALUES,CURRENT_ITEM_FORMAT_VERSION,DEPENDENCY_KIND_VALUES,EXIT_CODE,ISSUE_SEVERITY_VALUES,ITEM_TYPE_VALUES,PM_CLI_EXPECTED_ERROR_NAME,PmCliError,PmClient,RISK_VALUES,STATUS_VALUES,acquireLock,appendHistoryEntry,canonicalDocument,classifyItemFormatVersion,clearWorkspaceContractsCache,commitImportedItem,createHistoryEntry,createPmCliExpectedError,effectiveItemFormatVersion,emptyImportedDocument,ensureTrackerInitialized,generateItemId,getActiveExtensionRegistrations,getContracts,getHistoryPath,getItemPath,getSettingsPath,getWorkspaceContracts,isPmCliExpectedError,isTimestampLiteral,listAllItemMetadata,loadCreateTemplateOptions,locateItem,normalizeItemMetadata,normalizeItemFormatVersion,normalizeItemId,normalizeRawItemId,normalizeStatusInput,nowIso,parseTags,pathExists,readBooleanOption,readCsvListOption,readFileIfExists,readLocatedItem,readRequiredString,readSettings,readStringOption,removeFileIfExists,renderCalendarMarkdown,renderCalendarToon,renderGuideMarkdown,resolveCalendarOutputFormat,resolveGuideOutputFormat,resolveItemTypeRegistry,resolveImplicitPmRoot,resolvePmRoot,resolveRuntimeFieldRegistry,resolveRuntimeStatusRegistry,runAction,runActiveOnReadHooks,runActiveOnWriteHooks,runCalendar,runCompletion,runGuide,runList,runReindex,runSearch,runTemplatesList,runTemplatesSave,runTemplatesShow,runTestRunsList,runTestRunsLogs,runTestRunsResume,runTestRunsStatus,runTestRunsStop,scanItemFormatVersions,selectImportAuthor,serializeItemDocument,splitFrontMatter,toEstimatedMinutesValue,toImportBoolean,toImportConfidence,toImportInteger,toImportLinkedDocs,toImportLinkedFiles,toImportLinkedTests,toImportLogEntries,toImportNormalizedEnum,toImportNumberMap,toImportPriority,toImportStatus,toImportStringList,toImportStringMap,toImportTags,toNonEmptyImportString,writeFileAtomic,aggregate,append,claim,claimNext,close,reopen,closeTask,comments,config,context,copy,create,deleteItem,deps,docs,duplicates,extension,extensionActivate,extensionDeactivate,extensionList,files,filesDiscover,filesLookup,focus,gc,get,graph,health,historyCompact,historyCompactBulk,historyRedact,historyRepair,historyRepairAll,init,learnings,list,listAllComplete,next,notes,packageActivate,packageCatalog,packageDeactivate,packageDescribe,packageDoctor,packageInstall,packageLifecycle,packageList,packageManage,packageReload,packageUninstall,pauseTask,profile,profileApply,profileLint,profileList,profileShow,release,restore,schema,schemaAddField,schemaAddStatus,schemaAddType,schemaApplyPreset,schemaInferTypes,schemaList,schemaListFields,schemaRemapStatus,schemaRemoveField,schemaRemoveStatus,schemaRemoveType,schemaShow,schemaShowField,schemaShowStatus,schemaRenameField,schemaRenameType,search,startTask,stats,update,upgrade,validate}from"./runtime.js";import{extensionMigrate,packageMigrate}from"./package-migrations.js";import{CONTEXT_OUTPUT_VALUES,NEXT_OUTPUT_VALUES,PM_GITIGNORE_END,PM_GITIGNORE_START,analyzeSdkActionCoverage,ensurePmGitignore,getPmGitignoreBlock,closeItem,runAggregate,runClose,runCopy,runContext,runDelete,runFocus,runGet,runNext,runRestore,runUpdate}from"./runtime.js";import{runStats}from"./stats.js";import{readImprovementLedger,recordImprovementObservation}from"./improvement-ledger.js";import{evaluateProvenanceCoverage,projectFleetAttributionAnalytics,projectProvenanceCoverageAnalytics,readHistoryAnalyticsWindow,runFleetAttributionAnalytics,runProvenanceCoverageAnalytics}from"./history-analytics.js";import{DEFAULT_EVAL_QUERIES_RELATIVE_PATH,EVAL_QUERY_SET_CONTRACT,EVAL_QUERY_SET_EXAMPLE,EVAL_QUERY_SET_SCHEMA_ID,parseEvalQuerySet,runEval}from"./eval.js";import{runTelemetry,TELEMETRY_SUBCOMMANDS}from"./telemetry.js";import{classifyLinkedTestCommandSafety,classifyLinkedTestFailure,countFailureCategories,extractReferencedPmItemIdsFromCommand,resolveLinkedTestFailureExitCode,runLinkedTests,runTest,summarizeContextPreflight}from"./test/execution.js";import{TEST_RUN_MEASUREMENT_LIMIT,diffTestRunMeasurements,parseTestRunMeasurements,queryTestRunMeasurementsBelow}from"./test/measurements.js";import{runTestAll}from"./test/batch.js";import{LINKED_TEST_ENV_NAME_PATTERN,LINKED_TEST_PM_CONTEXT_MODE_VALUES,LINKED_TEST_WORKSPACE_CONTEXT_MODE_VALUES,LINKED_TEST_PROTECTED_ENV_KEYS,parseLinkedTestAssertionEqualsMap,parseLinkedTestAssertionGteMap,parseLinkedTestBoolean,parseLinkedTestContextMode,parseLinkedTestEnvClear,parseLinkedTestEnvSet,parseLinkedTestJsonEntries,parseLinkedTestMinLines,parseLinkedTestRegexList,parseLinkedTestStringList,parseLinkedTestWorkspaceContextMode}from"./test/parsers.js";import{acknowledgeLinkedTests,attachLinkedTestMutationProvenance,attachLinkedTestProvenance,linkedTestTrustFingerprint,resolveLinkedTestSourceRef,resolveLinkedTestSourceWorkspaceRoot,resolveLinkedTestTrust,resolveLinkedTestTrustBatch}from"./test/trust.js";import{runStartBackgroundRun,runTestRunsWorker}from"./test/runs.js";import{BUILTIN_PROFILES,listProfiles,normalizeProfileName,PROFILE_NAMES,resolveProfile}from"../core/profile/profile-presets.js";import{planProfileApplication}from"../core/profile/profile-plan.js";import{describeProfileComposition,describeProjectProfile}from"../core/profile/profile-describe.js";import{lintProjectProfile,PROFILE_LINT_CODES,PROFILE_LINT_DIMENSIONS}from"../core/profile/profile-lint.js";export*from"./authoring.js";export*from"./governance.js";export*from"./mcp/discovery.js";export*from"./query.js";export*from"./testing.js";export{ACTIVITY_COMMANDER_STRING_OPTION_CONTRACTS,ACTIVITY_FLAG_CONTRACTS,AGGREGATE_FLAG_CONTRACTS,APPEND_FLAG_CONTRACTS,ASSURANCE_FLAG_CONTRACTS,BASELINE_ITEM_FORMAT_VERSION,BUILTIN_CORPUS_SHAPES,BUILTIN_ITEM_TYPE_VALUES,BUILTIN_PROFILES,CALENDAR_COMMANDER_STRING_OPTION_CONTRACTS,CALENDAR_FLAG_CONTRACTS,CLAIM_FLAG_CONTRACTS,CLOSE_ACTION_OPTION_KEYS,CLOSE_FLAG_CONTRACTS,CLOSE_MANY_FLAG_CONTRACTS,CLOSE_TASK_FLAG_CONTRACTS,COMMENTS_FLAG_CONTRACTS,COMPLETION_FLAG_CONTRACTS,CONFIDENCE_TEXT_VALUES,CONFIG_FLAG_CONTRACTS,CONTEXT_COMMANDER_STRING_OPTION_CONTRACTS,CONTEXT_FLAG_CONTRACTS,CONTEXT_OUTPUT_VALUES,CONTRACTS_FLAG_CONTRACTS,COPY_FLAG_CONTRACTS,CREATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS,CREATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS,CREATE_COMMANDER_STRING_OPTION_CONTRACTS,CREATE_FLAG_CONTRACTS,CURRENT_ITEM_FORMAT_VERSION,DEFAULT_EVAL_QUERIES_RELATIVE_PATH,DELETE_FLAG_CONTRACTS,DEPENDENCY_KIND_VALUES,DEPS_FLAG_CONTRACTS,DOCS_FLAG_CONTRACTS,DUPLICATES_FLAG_CONTRACTS,EVAL_FLAG_CONTRACTS,EVAL_QUERY_SET_CONTRACT,EVAL_QUERY_SET_EXAMPLE,EVAL_QUERY_SET_SCHEMA_ID,EVENTS_FLAG_CONTRACTS,EVENT_FLAG_CONTRACTS,EXECUTABLE_COMMAND_ALIASES,EXIT_CODE,EXTENSION_ACTIVATE_FLAG_CONTRACTS,EXTENSION_ADOPT_ALL_FLAG_CONTRACTS,EXTENSION_ADOPT_FLAG_CONTRACTS,EXTENSION_CATALOG_FLAG_CONTRACTS,EXTENSION_DEACTIVATE_FLAG_CONTRACTS,EXTENSION_DESCRIBE_FLAG_CONTRACTS,EXTENSION_DOCTOR_FLAG_CONTRACTS,EXTENSION_EXPLORE_FLAG_CONTRACTS,EXTENSION_FLAG_CONTRACTS,EXTENSION_INIT_FLAG_CONTRACTS,EXTENSION_INSTALL_FLAG_CONTRACTS,EXTENSION_MANAGE_FLAG_CONTRACTS,EXTENSION_MIGRATE_FLAG_CONTRACTS,EXTENSION_RELOAD_FLAG_CONTRACTS,EXTENSION_SCOPE_FLAG_CONTRACTS,EXTENSION_UNINSTALL_FLAG_CONTRACTS,FILES_FLAG_CONTRACTS,FOCUS_FLAG_CONTRACTS,GC_FLAG_CONTRACTS,GET_FLAG_CONTRACTS,GLOBAL_FLAG_CONTRACTS,GRAPH_FLAG_CONTRACTS,GUIDE_FLAG_CONTRACTS,HEALTH_FLAG_CONTRACTS,HISTORY_AUTHOR_ACKNOWLEDGE_FLAG_CONTRACTS,HISTORY_COMPACT_FLAG_CONTRACTS,HISTORY_EVENT_CLASSIFICATION_VERSION,HISTORY_FLAG_CONTRACTS,HISTORY_REDACT_FLAG_CONTRACTS,HISTORY_REPAIR_FLAG_CONTRACTS,INIT_AGENT_GUIDANCE_MODE_VALUES,INIT_FLAG_CONTRACTS,INSTALL_FLAG_CONTRACTS,ISSUE_SEVERITY_VALUES,ITEM_COMPLETE_FLAG_CONTRACTS,ITEM_MUTATE_FLAG_CONTRACTS,ITEM_REOPEN_FLAG_CONTRACTS,ITEM_TYPE_VALUES,LEARNINGS_FLAG_CONTRACTS,LINKED_TEST_ENV_NAME_PATTERN,LINKED_TEST_PM_CONTEXT_MODE_VALUES,LINKED_TEST_PROTECTED_ENV_KEYS,LINKED_TEST_WORKSPACE_CONTEXT_MODE_VALUES,LIST_COMMANDER_STRING_OPTION_CONTRACTS,LIST_FILTER_FLAG_CONTRACTS,MAINTENANCE_HISTORY_OPERATIONS,MEET_FLAG_CONTRACTS,MERGE_FLAG_CONTRACTS,MERGE_SUBCOMMAND_VALUES,NEXT_COMMANDER_STRING_OPTION_CONTRACTS,NEXT_FLAG_CONTRACTS,NEXT_OUTPUT_VALUES,NOTES_FLAG_CONTRACTS,PACKAGE_FLAG_CONTRACTS,PACKAGE_INIT_FLAG_CONTRACTS,PAUSE_TASK_FLAG_CONTRACTS,PLAN_CREATE_METADATA_PARAMETER_KEYS,PLAN_FLAG_CONTRACTS,PLAN_SHOW_DEPTH_VALUES,PLAN_SUBCOMMANDS,PLAN_TEMPLATE_NAMES,PM_BULK_LIFECYCLE_COMMAND_ALIASES,PM_CLI_EXPECTED_ERROR_NAME,PM_CLI_ONLY_TOOL_ACTION_WAIVERS,PM_COMMAND_ALIAS_CONTRACTS,PM_COMMAND_CAPABILITY_CONTRACTS,PM_COMMAND_OUTPUT_BUDGET_CONTRACTS,PM_COMMAND_VISIBILITY_CONTRACTS,PM_CONTEXT_OPS_COMMAND_ALIASES,PM_CORE_COMMAND_NAMES,PM_CORPUS_SHAPE_SCHEMA,PM_DEPRECATED_TOOL_ACTIONS,PM_DIAGNOSTIC_DEGRADATION_STEPS,PM_DIAGNOSTIC_OUTPUT_BUDGET_CONTRACTS,PM_DIAGNOSTIC_OUTPUT_CLASSES,PM_DISCOVERABLE_TOOL_ACTIONS,PM_EXACT_COVERAGE_METRICS,PM_EXTENSION_CAPABILITY_CONTRACTS,PM_EXTENSION_PACKAGE_ACTION_SUBCOMMANDS,PM_EXTENSION_POLICY_MODE_CONTRACTS,PM_EXTENSION_POLICY_SURFACE_CONTRACTS,PM_EXTENSION_SANDBOX_PROFILE_CONTRACTS,PM_EXTENSION_SERVICE_NAME_CONTRACTS,PM_EXTENSION_TRUST_MODE_CONTRACTS,PM_GITIGNORE_END,PM_GITIGNORE_START,PM_HISTORY_COMMAND_ALIASES,PM_ITEM_ACTION_SUBCOMMANDS,PM_MCP_PROMPT_CONTRACTS,PM_MCP_RESOURCE_CONTRACTS,PM_MCP_TOOL_COMMAND_CONTRACTS,PM_MUTATION_ACTION_CONTRACTS,PM_NAMESPACED_COMMAND_ALIASES,PM_OUTPUT_BUDGET_CLASSES,PM_OUTPUT_DEGRADATION_STEPS,PM_PACKAGE_CONVENTIONAL_RESOURCE_ROOTS,PM_PACKAGE_ONLY_ACTION_SUBCOMMANDS,PM_PACKAGE_RESOURCE_KINDS,PM_PROVIDER_TOOL_PARAMETERS_SCHEMA,PM_PROVIDER_TOOL_PARAMETERS_SCHEMA_VERSION,PM_RELOCATED_COMMAND_ALIASES,PM_REPRODUCIBLE_PROCESS_ENV,PM_TOOL_ACTIONS,PM_TOOL_ACTION_PARAMETER_CONTRACTS,PM_TOOL_PARAMETERS_SCHEMA,PM_TOOL_PARAMETERS_SCHEMA_MAJOR,PM_TOOL_PARAMETERS_SCHEMA_VERSION,PM_TOOL_RESERVED_CUSTOM_FIELD_PROPERTIES,PM_WORKSPACE_RECIPE_SCHEMA,PROFILE_FLAG_CONTRACTS,PROFILE_LINT_CODES,PROFILE_LINT_DIMENSIONS,PROFILE_NAMES,PROFILE_SUBCOMMANDS,PmCliError,PmClient,REINDEX_FLAG_CONTRACTS,RELEASE_FLAG_CONTRACTS,REMIND_FLAG_CONTRACTS,RESERVED_ITEM_FIELD_NAMES,RESTORE_FLAG_CONTRACTS,RISK_VALUES,SCHEMA_FLAG_CONTRACTS,SEARCH_COMMANDER_STRING_OPTION_CONTRACTS,SEARCH_FLAG_CONTRACTS,SNAPSHOT_SCHEMA,START_TASK_FLAG_CONTRACTS,STATS_FLAG_CONTRACTS,STATUS_VALUES,SUBCOMMAND_GLOBAL_FLAG_CONTRACTS,SUBSTANTIVE_HISTORY_OPERATIONS,TELEMETRY_FLAG_CONTRACTS,TELEMETRY_SUBCOMMANDS,TEST_ALL_FLAG_CONTRACTS,TEST_FLAG_CONTRACTS,TEST_RUNS_FLAG_CONTRACTS,TEST_RUN_MEASUREMENT_LIMIT,TOOL_ACTIVITY_OPTION_CONTRACTS,TOOL_AGGREGATE_OPTION_CONTRACTS,TOOL_BULK_MUTATION_FILTER_OPTION_CONTRACT_SOURCE,TOOL_CALENDAR_OPTION_CONTRACTS,TOOL_CLOSE_MANY_FILTER_OPTION_CONTRACTS,TOOL_CONTEXT_OPTION_CONTRACTS,TOOL_CREATE_OPTION_CONTRACTS,TOOL_CREATE_OPTION_CONTRACT_SOURCE,TOOL_DEPS_OPTION_CONTRACTS,TOOL_GRAPH_OPTION_CONTRACTS,TOOL_LIST_FILTER_OPTION_CONTRACTS,TOOL_SEARCH_FILTER_OPTION_CONTRACTS,TOOL_SHARED_CREATE_UPDATE_OPTION_CONTRACTS,TOOL_SHARED_CREATE_UPDATE_OPTION_CONTRACT_SOURCE,TOOL_UPDATE_MANY_FILTER_OPTION_CONTRACTS,TOOL_UPDATE_OPTION_CONTRACTS,TOOL_UPDATE_OPTION_CONTRACT_SOURCE,UPDATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS,UPDATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS,UPDATE_COMMANDER_STRING_OPTION_CONTRACTS,UPDATE_FLAG_CONTRACTS,UPDATE_MANY_FLAG_CONTRACTS,UPGRADE_FLAG_CONTRACTS,VALIDATE_FLAG_CONTRACTS,WORKSPACE_FLAG_CONTRACTS,WORKSPACE_SNAPSHOT_ACTIONS,_testOnly4 as _testOnly,_testOnlyConfigCommand,_testOnlyHealthCommand,_testOnly3 as _testOnlyInit,_testOnly2 as _testOnlyInitAgentGuidance,_testOnly as _testOnlyTemplates,_testOnlyValidateCommand,acknowledgeLinkedTests,acknowledgeUnknownAuthorHistoryEvents,acknowledgeUnknownAuthorHistoryEventsFromTransport,acquireLock,aggregate,analyzePmToolActionParity,analyzeSdkActionCoverage,analyzeSdkCliParameterCompleteness,append,appendHistoryEntry,applyBootstrapPagerPolicy,applyInvocationAuthorOverride,applyPathMigrations,applyStandaloneNote,applyStoredExtensionMigrationState,artifactKey,assertInitializedTracker,assertLinkedArtifactMutationIsUnambiguous,assertReadableTrackerRoot,attachLinkedTestMutationProvenance,attachLinkedTestProvenance,auditMergeAttributeFence,buildCorpusShapeItemPlan,buildExtensionDescribeResult,buildExtensionInstallPlan,buildMergeAttributePatterns,buildPmActionToolInputSchema,buildTrackerInitializationRecovery,canonicalDocument,claim,claimNext,classifyHistoryEvent,classifyItemFormatVersion,classifyLinkedTestCommandSafety,classifyLinkedTestFailure,clearWorkspaceContractsCache,close,closeItem,closeTask,coalesceRepeatedListFlags,collectPackageExtensionDirectories,comments,commitImportedItem,compactFlagAliasContracts,config,context,copy,countFailureCategories,create,createCorpusShapeMeasurement,createExtensionCommandSdk,createHistoryEntry,createPmCliExpectedError,createPmCliProgram,createPmCommandOutputBudget,createReproducibleProcessRunner,createWorkspaceSnapshot,dedupeLinkedArtifacts,defineCorpusShape,definePmCommandOutputBudget,defineWorkspaceRecipe,deleteItem,deleteWorkspaceSnapshot,deps,deriveSchemaEvolutionMigrationId,describeItemOwnershipConflict,describeProfileComposition,describeProjectProfile,diffTestRunMeasurements,discoverNearbyPmRoot,docs,duplicates,effectiveItemFormatVersion,emptyImportedDocument,ensurePmGitignore,ensureScope,ensureTrackerInitialized,estimatePmOutputTokens,evaluateMutationGuard,evaluateProvenanceCoverage,evaluateSimilarityGovernance,executeWorkspaceRecipe,expandAddGlobEntries,extension,extensionActivate,extensionDeactivate,extensionList,extensionMigrate,extractReferencedPmItemIdsFromCommand,files,filesDiscover,filesLookup,findCoverageDeficits,findDuplicateClusters,findGitWorkspaceRoot,findInstalledNpmPackageCandidate,findPmNamespacedCommand,findSimilarItems,flushTelemetryQueue,focus,formatProfileApplyHuman,formatProfileLintHuman,formatProfileListHuman,formatProfileShowHuman,formatSchemaEvolutionMigrationHuman,gc,generateItemId,get,getActiveExtensionRegistrations,getContracts,getHistoryPath,getItemPath,getMutationActionContract,getPmGitignoreBlock,getSettingsPath,getWorkspaceContracts,graph,hasSubcommandFlagContractsForCommand,health,historyCompact,historyCompactBulk,historyRedact,historyRepair,historyRepairAll,inferPmOutputBudgetClass,init,inspectHistoryAuthorStream,inspectStaleInProgressItems,inspectStaticExtensionInventory,inspectWorkspaceSnapshot,installMergeFence,isAlreadyClaimedError,isErrnoError,isMutationAction,isPmCliExpectedError,isPmExtensionCapabilityContract,isPmExtensionPolicyModeContract,isPmExtensionPolicySurfaceContract,isPmExtensionServiceNameContract,isPmToolAction,isRuntimeRecord,isTimestampLiteral,jaccardSimilarity,learnings,limitAnnotationEntries,linkedTestTrustFingerprint,lintProjectProfile,list,listAliasPluralKeys,listAllComplete,listAllItemMetadata,listBuiltinCorpusShapes,listMutationActions,listPmCommandsForFamily,listPmCommandsForTier,listPmMcpToolsForProfile,listProfiles,listWorkspaceSnapshots,loadCreateTemplateOptions,locateItem,measureCorpusShapePlan,mergeLinkedTestTwoTokenEntries,next,normalizeAnnotationTransportOptions,normalizeBootstrapInvocation,normalizeItemFormatVersion,normalizeItemId,normalizeItemMetadata,normalizeLegacyExtensionActionSyntax,normalizeLinkedPath,normalizeProfileName,normalizeRawItemId,normalizeSimilarityText,normalizeStatusInput,notes,nowIso,packageActivate,packageCatalog,packageDeactivate,packageDescribe,packageDoctor,packageInstall,packageLifecycle,packageList,packageManage,packageMigrate,packageReload,packageUninstall,parseAddEntries,parseAddGlobEntries,parseAnnotationTextInput,parseBootstrapCommandName,parseBootstrapGlobalOptions,parseBootstrapHelpRequest,parseBootstrapTypeValue,parseEvalQuerySet,parseLinkedTestAssertionEqualsMap,parseLinkedTestAssertionGteMap,parseLinkedTestBoolean,parseLinkedTestContextMode,parseLinkedTestEnvClear,parseLinkedTestEnvSet,parseLinkedTestJsonEntries,parseLinkedTestMinLines,parseLinkedTestRegexList,parseLinkedTestStringList,parseLinkedTestWorkspaceContextMode,parseMigrateEntries,parseRemoveEntries,parseTags,parseTestRunMeasurements,parseUnknownAuthorHistoryEventCoordinates,pathExists,pauseTask,planExtensionDirectoryCopy,planProfileApplication,planSchemaEvolutionMigration,planUnknownAuthorHistoryAcknowledgment,planWorkspaceSnapshotRestore,prepareSimilarityText,profile,profileApply,profileLint,profileList,profileShow,projectFleetAttributionAnalytics,projectPmDiagnosticOutput,projectPmDiagnosticText,projectProvenanceCoverageAnalytics,projectValidateCounts,queryTestRunMeasurementsBelow,quoteCommandArg,quoteWindowsCommandArg,readAnnotationEntries,readBooleanOption,readCsvListOption,readExtensionMigrationState,readFileIfExists,readFirstStringFromCommanderOptions,readFirstValueFromCommanderOptions,readHistoryAnalyticsWindow,readHistorySnapshot,readImprovementLedger,readLocatedItem,readPmPackageManifest,readRequiredString,readSettings,readStringArrayFromCommanderOptions,readStringOption,recordImprovementObservation,refreshMergeAttributeFenceIfInstalled,release,removeFileIfExists,renameArtifactsResultKey,renderCalendarMarkdown,renderCalendarToon,renderExtensionDescribeMarkdown,renderGuideMarkdown,renderPmCommand,renderPmCommandAliasMigrationHint,renderPmCommandVisibilityMarkdown,reopen,resolveAnnotationIndex,resolveAnnotationInput,resolveBuiltinCorpusShape,resolveCalendarOutputFormat,resolveExtensionInstallSourceIdentity,resolveExtensionMigrationStatePath,resolveGuideOutputFormat,resolveImplicitPmRoot,resolveItemTypeRegistry,resolveLinkedTestFailureExitCode,resolveLinkedTestSourceRef,resolveLinkedTestSourceWorkspaceRoot,resolveLinkedTestTrust,resolveLinkedTestTrustBatch,resolveMergeInstallContext,resolvePmCommandAlias,resolvePmCommandCapabilityFamily,resolvePmCommandOperation,resolvePmCommandOutputBudget,resolvePmCommandVisibilityTier,resolvePmDiagnosticOutputBudget,resolvePmHistoryOperation,resolvePmPositionalActionFlagContracts,resolvePmRoot,resolvePmToolCustomFieldCollision,resolveProfile,resolveProjectMergeTypeFolders,resolveReproducibleProcessEnvironment,resolveRuntimeFieldRegistry,resolveRuntimeStatusRegistry,resolveStartTaskInProgressStatus,resolveSubcommandFlagContractsForCommand,resolveUnknownAuthorAcknowledgmentSelector,restore,restoreWorkspaceSnapshot,restoreWorkspaceSnapshotWithRecovery,runAction,runActiveOnReadHooks,runActiveOnWriteHooks,runAggregate,runAnnotationCommand,runAppend,runCalendar,runClaim,runClaimNext,runClose,runCloseMany,runCloseTask,runComments,runCompletion,runConfig,runContext,runCopy,runCreate,runDelete,runDeps,runDocs,runEval,runEvent,runExtension,runExtensionMigrateAction,runExtensionMigrations,runFiles,runFilesDiscover,runFilesLookup,runFleetAttributionAnalytics,runFocus,runGc,runGet,runGuide,runHealth,runInit,runInitAgentGuidance,runLearnings,runLinkedArtifacts,runLinkedTests,runList,runMeet,runMergeInstall,runNext,runNotes,runPauseTask,runPlan,runProfileApply,runProfileLint,runProfileList,runProfileShow,runProvenanceCoverageAnalytics,runReindex,runRelease,runRemind,runRestore,runSchemaEvolutionMigration,runSearch,runSearchRefreshWorkerEntrypoint,runStartBackgroundRun,runStartTask,runStats,runTelemetry,runTemplatesList,runTemplatesSave,runTemplatesShow,runTest,runTestAll,runTestRunsList,runTestRunsLogs,runTestRunsResume,runTestRunsStatus,runTestRunsStop,runTestRunsWorker,runUpdate,runUpdateMany,runUpgrade,runValidate,runWithActiveExtensions,runWithReproducibleProcessEnvironment,runWithWorkspaceRecipe,scanHistoryAuthorAttribution,scanItemFormatVersions,scanMutationSecrets,scanStaleInProgressItems,schema,schemaAddField,schemaAddStatus,schemaAddType,schemaApplyPreset,schemaInferTypes,schemaList,schemaListFields,schemaRemapStatus,schemaRemoveField,schemaRemoveStatus,schemaRemoveType,schemaRenameField,schemaRenameType,schemaShow,schemaShowField,schemaShowStatus,scoreItemSimilarity,scorePreparedItemSimilarity,search,selectImportAuthor,serializeItemDocument,similarityAdvisoryWarnings,sortLinkedArtifacts,splitFrontMatter,startTask,stats,stripGlobalBootstrapTokens,summarizeContextPreflight,summarizeInitResult,toCompletionFlagString,toEstimatedMinutesValue,toImportBoolean,toImportConfidence,toImportInteger,toImportLinkedDocs,toImportLinkedFiles,toImportLinkedTests,toImportLogEntries,toImportNormalizedEnum,toImportNumberMap,toImportPriority,toImportStatus,toImportStringList,toImportStringMap,toImportTags,toNonEmptyImportString,tokenizeSimilarityText,update,upgrade,validate,validateLinkedPaths,verifyToolOptionCliParity,withFlagAliasMetadata,wrapOwnershipConflict,writeFileAtomic};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,3 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
`}function detectLineEnding(value){return value.includes("\r\n")?"\r\n":"\n"}function findGuidanceBlockRange(content){const startIndex=content.indexOf(AGENT_GUIDANCE_START_MARKER_PREFIX);if(startIndex===-1){return null}const endMarkerIndex=content.indexOf(AGENT_GUIDANCE_END_MARKER,startIndex);if(endMarkerIndex===-1){return null}return{start_index:startIndex,end_index:endMarkerIndex+AGENT_GUIDANCE_END_MARKER.length}}function hasGuidanceMarker(content){return findGuidanceBlockRange(content)!==null}function buildAgentGuidanceBlock(lineEnding,projectTestCommand="<your project test command>"){const lines=[AGENT_GUIDANCE_START_MARKER,"## pm Workflow (Agent Quickstart)","",'- Cold start with the measured canonical orientation: `pm context --limit 10 --for orient`; before item mutation, also run `pm search "<keywords>" --limit 10`, `pm list --status open --limit 20`, and `pm list --status in_progress --limit 20`.',"- Claim and start atomically: `pm claim <id> --start`.",`- Link evidence while coding: \`pm files <id> --add ...\`, \`pm docs <id> --add ...\`, \`pm test <id> --add command="${projectTestCommand}"\`.`,'- Verify and close: `pm test <id> --run --progress`, then atomically record closure evidence with `pm close <id> "<reason>" --resolution "<what changed>" --expected "<expected outcome>" --actual "<observed outcome>" --validate-close warn`, then `pm release <id>`.',"- Author identity is automatic for supported agent harnesses; use `--author` only for an explicit override.","",AGENT_GUIDANCE_END_MARKER,""];return lines.join(lineEnding)}function upsertAgentGuidanceBlock(existingContent,projectTestCommand="<your project test command>"){const lineEnding=detectLineEnding(existingContent);const nextBlock=buildAgentGuidanceBlock(lineEnding,projectTestCommand);const existingRange=findGuidanceBlockRange(existingContent);if(existingRange){const trailingContent=existingContent.slice(existingRange.end_index);const normalizedTrailingContent=trailingContent.startsWith("\r\n")?trailingContent.slice(2):trailingContent.startsWith("\n")?trailingContent.slice(1):trailingContent;const nextContent2=ensureTrailingNewline(`${existingContent.slice(0,existingRange.start_index)}${nextBlock}${normalizedTrailingContent}`);return{next_content:nextContent2,changed:nextContent2!==existingContent}}const separator=existingContent.length===0?"":existingContent.endsWith("\n")?"\n":"\n\n";const nextContent=ensureTrailingNewline(`${existingContent}${separator}${nextBlock}`);return{next_content:nextContent,changed:nextContent!==existingContent}}async function resolveProjectTestCommand(projectRoot){if(await pathExists(path.join(projectRoot,"scripts","run-tests.mjs"))){return"node scripts/run-tests.mjs test"}let packageDocument;try{packageDocument=JSON.parse(await fs.readFile(path.join(projectRoot,"package.json"),"utf8"))}catch{return"<your project test command>"}const manifest=normalizeProjectPackageManifest(packageDocument);if(manifest===void 0){return"<your project test command>"}const packageManager=manifest.packageManager?.split("@")[0];if(packageManager==="pnpm"){return"pnpm test"}if(packageManager==="bun"){return"bun run test"}if(packageManager==="yarn"){return"yarn test"}if(packageManager==="npm")return"npm test";if(await pathExists(path.join(projectRoot,"pnpm-lock.yaml"))){return"pnpm test"}if(await pathExists(path.join(projectRoot,"bun.lock"))||await pathExists(path.join(projectRoot,"bun.lockb"))){return"bun run test"}if(await pathExists(path.join(projectRoot,"yarn.lock")))return"yarn test";return"npm test"}function normalizeProjectPackageManifest(value){if(typeof value!=="object"||value===null||!("scripts"in value)){return void 0}const scripts=value.scripts;if(typeof scripts!=="object"||scripts===null||!("test"in scripts)||typeof scripts.test!=="string"||scripts.test.trim().length===0){return void 0}return{scripts:{test:scripts.test},..."packageManager"in value&&typeof value.packageManager==="string"?{packageManager:value.packageManager}:{}}}function resolveProjectRoot(pmRoot,cwd){const parent=path.dirname(pmRoot);if(path.basename(pmRoot)==="pm"&&path.basename(parent)===".agents"){return path.dirname(parent)}return path.resolve(cwd,pmRoot)}function resolveTargetGuidancePath(scans,projectRoot){const existingAgents=scans.find(entry=>path.basename(entry.file_path)==="AGENTS.md"&&entry.exists);if(existingAgents){return existingAgents.file_path}const existingAny=scans.find(entry=>entry.exists);if(existingAny){return existingAny.file_path}return path.join(projectRoot,"AGENTS.md")}function parsePromptChoice(answer,currentDefault){const normalized=answer.trim().toLowerCase();if(normalized.length===0){return currentDefault}if(normalized==="y"||normalized==="yes"){return true}if(normalized==="n"||normalized==="no"){return false}return currentDefault}async function promptForGuidanceWrite(targetRelativePath){const rl=createAgentGuidanceReadlineInterface();try{output.write("\nAgent guidance check\n");output.write("No AGENTS.md/CLAUDE.md file currently contains compact pm workflow guidance.\n");const answer=await rl.question(`Add a compact pm workflow section to ${targetRelativePath}? [Y/n] `);output.write("\n");return parsePromptChoice(answer,true)}finally{rl.close()}}function normalizeAgentGuidanceState(settings){const current=settings.agent_guidance;return{prompt_completed:current?.prompt_completed===true,declined:current?.declined===true,declined_at:typeof current?.declined_at==="string"?current.declined_at:"",template_version:typeof current?.template_version==="number"&&Number.isInteger(current.template_version)&¤t.template_version>0?current.template_version:AGENT_GUIDANCE_TEMPLATE_VERSION,last_checked_files:Array.isArray(current?.last_checked_files)?[...new Set(current.last_checked_files.map(value=>value.trim()).filter(value=>value.length>0))].sort((left,right)=>left.localeCompare(right)):[]}}async function scanGuidanceFiles(projectRoot){const scans=[];const testCommand=await resolveProjectTestCommand(projectRoot);for(const filename of AGENT_GUIDANCE_TARGET_FILENAMES){const filePath=path.join(projectRoot,filename);const exists=await pathExists(filePath);if(!exists){scans.push({file_path:filePath,exists,has_guidance:false,has_marker:false});continue}const content=await fs.readFile(filePath,"utf8");const contentLower=content.toLowerCase();const tokenHits=AGENT_GUIDANCE_REQUIRED_TOKENS.filter(token=>contentLower.includes(token));const hasMarker=hasGuidanceMarker(content);scans.push({file_path:filePath,exists,has_guidance:hasMarker||tokenHits.length>=AGENT_GUIDANCE_REQUIRED_TOKEN_THRESHOLD,has_marker:hasMarker,outdated:hasMarker&&upsertAgentGuidanceBlock(content,testCommand).changed})}return scans}function pushUnique(target,value){if(!target.includes(value)){target.push(value)}}function applyAgentGuidanceState(settings,currentState){const existing=normalizeAgentGuidanceState(settings);const changed=JSON.stringify(existing)!==JSON.stringify(currentState);if(changed){settings.agent_guidance=currentState}return{changed,state:currentState}}async function writeGuidanceFile(filePath,projectRoot=path.dirname(filePath)){const exists=await pathExists(filePath);const currentContent=exists?await fs.readFile(filePath,"utf8"):"";const nextContent=upsertAgentGuidanceBlock(currentContent,await resolveProjectTestCommand(projectRoot));if(!nextContent.changed){return{changed:false,warnings:[]}}await writeFileAtomic(filePath,nextContent.next_content);return{changed:true,warnings:await runActiveOnWriteHooks({path:filePath,scope:"project",op:"init:agent_guidance_file"})}}function buildInitAgentGuidanceSummary(params){return{mode:params.mode,present:params.scans.some(entry=>entry.has_guidance),prompted:params.prompted,applied:params.applied,skipped:params.skipped,declined:params.state.declined,prompt_completed:params.state.prompt_completed,template_version:params.state.template_version,target_file:params.targetRelativePath,checked_files:params.scans.map(entry=>toPortableRelativePath(params.projectRoot,entry.file_path)),files_with_guidance:params.scans.filter(entry=>entry.has_guidance).map(entry=>toPortableRelativePath(params.projectRoot,entry.file_path)),missing_files:params.scans.filter(entry=>!entry.exists).map(entry=>toPortableRelativePath(params.projectRoot,entry.file_path))}}async function refreshGuidanceScansAfterApply(applied,scans,projectRoot){return applied?await scanGuidanceFiles(projectRoot):scans}function markAgentGuidanceRunState(flow,checkedFiles,partial){flow.state={...flow.state,...partial,template_version:AGENT_GUIDANCE_TEMPLATE_VERSION,last_checked_files:checkedFiles}}async function addAgentGuidanceBlockIfMissing(flow,context){if(context.presentBefore){return}const writeResult=await writeGuidanceFile(context.targetPath,context.projectRoot);flow.warnings.push(...writeResult.warnings);if(writeResult.changed){flow.applied=true;flow.warnings.push(`agent_guidance:added:${context.targetRelativePath}`)}}function handleAgentGuidanceStatusMode(flow,presentBefore){if(!presentBefore){flow.warnings.push("agent_guidance:missing");pushUnique(flow.nextSteps,AGENT_GUIDANCE_ADD_LATER_HINT)}}function handleAgentGuidanceSkipMode(flow,checkedFiles){flow.skipped=true;markAgentGuidanceRunState(flow,checkedFiles,{prompt_completed:true,declined:true,declined_at:flow.state.declined_at||new Date().toISOString()});flow.warnings.push("agent_guidance:explicit_skip");pushUnique(flow.nextSteps,AGENT_GUIDANCE_ADD_LATER_HINT)}async function handleAgentGuidanceAddMode(flow,context){await addAgentGuidanceBlockIfMissing(flow,context);markAgentGuidanceRunState(flow,context.checkedFiles,{prompt_completed:true,declined:false,declined_at:""})}function handlePresentAgentGuidance(flow,checkedFiles){if(flow.state.declined){markAgentGuidanceRunState(flow,checkedFiles,{prompt_completed:true,declined:false,declined_at:""})}}function handleDeclinedAgentGuidance(flow){flow.skipped=true;flow.warnings.push("agent_guidance:skipped_declined");pushUnique(flow.nextSteps,AGENT_GUIDANCE_ADD_LATER_HINT)}async function handleInteractiveAgentGuidancePrompt(flow,context){flow.prompted=true;const approved=await promptForGuidanceWrite(context.targetRelativePath);if(approved){await addAgentGuidanceBlockIfMissing(flow,context);markAgentGuidanceRunState(flow,context.checkedFiles,{prompt_completed:true,declined:false,declined_at:""});return}flow.skipped=true;markAgentGuidanceRunState(flow,context.checkedFiles,{prompt_completed:true,declined:true,declined_at:new Date().toISOString()});flow.warnings.push("agent_guidance:declined");pushUnique(flow.nextSteps,AGENT_GUIDANCE_ADD_LATER_HINT)}function handleNonInteractiveMissingAgentGuidance(flow){flow.warnings.push("agent_guidance:missing_non_interactive");pushUnique(flow.nextSteps,AGENT_GUIDANCE_ADD_LATER_HINT)}async function applyAgentGuidanceMode(initialState,context){const flow={warnings:[],nextSteps:[],prompted:false,applied:false,skipped:false,state:initialState};if(context.mode==="status"){handleAgentGuidanceStatusMode(flow,context.presentBefore);return flow}if(context.mode==="skip"){handleAgentGuidanceSkipMode(flow,context.checkedFiles);return flow}if(context.mode==="add"){await handleAgentGuidanceAddMode(flow,context);return flow}if(context.presentBefore){handlePresentAgentGuidance(flow,context.checkedFiles);return flow}if(flow.state.prompt_completed&&flow.state.declined){handleDeclinedAgentGuidance(flow);return flow}if(context.interactive){await handleInteractiveAgentGuidancePrompt(flow,context);return flow}handleNonInteractiveMissingAgentGuidance(flow);return flow}async function runInitAgentGuidance(options){const projectRoot=resolveProjectRoot(options.pm_root,options.cwd);let scans=await scanGuidanceFiles(projectRoot);const targetPath=resolveTargetGuidancePath(scans,projectRoot);const targetRelativePath=toPortableRelativePath(projectRoot,targetPath);const checkedFiles=scans.map(entry=>toPortableRelativePath(projectRoot,entry.file_path));const presentBefore=scans.some(entry=>entry.has_guidance);const flow=await applyAgentGuidanceMode(normalizeAgentGuidanceState(options.settings),{mode:options.mode,interactive:options.interactive,targetPath,targetRelativePath,checkedFiles,presentBefore,projectRoot});if(options.mode==="add"){for(const scan of scans.filter(entry=>entry.outdated)){const refreshed=await writeGuidanceFile(scan.file_path,projectRoot);flow.applied||=refreshed.changed;flow.warnings.push(...refreshed.warnings)}}const stateUpdate=applyAgentGuidanceState(options.settings,flow.state);scans=await refreshGuidanceScansAfterApply(flow.applied,scans,projectRoot);const outdated=scans.filter(entry=>entry.outdated).map(entry=>toPortableRelativePath(projectRoot,entry.file_path));if(outdated.length>0){flow.warnings.push(`agent_guidance_outdated:${outdated.join(",")}`);pushUnique(flow.nextSteps,"pm init --agent-guidance add")}const summary=buildInitAgentGuidanceSummary({mode:options.mode,scans,projectRoot,targetRelativePath,prompted:flow.prompted,applied:flow.applied,skipped:flow.skipped,state:flow.state});return{summary,warnings:flow.warnings,next_steps:flow.nextSteps,settings_changed:stateUpdate.changed}}export{INIT_AGENT_GUIDANCE_MODE_VALUES,_testOnly,resolveProjectTestCommand,runInitAgentGuidance};
|
|
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]="04a94059-e242-58a6-9138-bc48a24e267e")}catch{}})();import fs from"node:fs/promises";import path from"node:path";import readline from"node:readline/promises";import{stdin as input,stdout as output}from"node:process";import{runActiveOnWriteHooks}from"../core/extensions/index.js";import{pathExists,writeFileAtomic}from"../core/fs/fs-utils.js";const INIT_AGENT_GUIDANCE_MODE_VALUES=["ask","add","skip","status"],AGENT_GUIDANCE_TARGET_FILENAMES=["AGENTS.md","CLAUDE.md"],AGENT_GUIDANCE_REQUIRED_TOKENS=["pm init","pm context","pm search","pm create","pm claim","pm files","pm docs","pm test --run","pm close","pm release","pm_author"],AGENT_GUIDANCE_REQUIRED_TOKEN_THRESHOLD=8,AGENT_GUIDANCE_TEMPLATE_VERSION=1,AGENT_GUIDANCE_START_MARKER_PREFIX="<!-- pm-cli:agent-guidance:start:",AGENT_GUIDANCE_START_MARKER=`<!-- pm-cli:agent-guidance:start:v${AGENT_GUIDANCE_TEMPLATE_VERSION} -->`,AGENT_GUIDANCE_END_MARKER="<!-- pm-cli:agent-guidance:end -->",AGENT_GUIDANCE_ADD_LATER_HINT="Add workflow guidance later: pm init --agent-guidance add",_testOnly={toPortableRelativePath,ensureTrailingNewline,detectLineEnding,findGuidanceBlockRange,buildAgentGuidanceBlock,upsertAgentGuidanceBlock,resolveProjectRoot,resolveTargetGuidancePath,parsePromptChoice,pushUnique,promptForGuidanceWrite,normalizeAgentGuidanceState,applyAgentGuidanceState,writeGuidanceFile,setAgentGuidanceReadlineFactoryForTests};let createAgentGuidanceReadlineInterface=()=>readline.createInterface({input,output});function setAgentGuidanceReadlineFactoryForTests(factory){createAgentGuidanceReadlineInterface=factory??(()=>readline.createInterface({input,output}))}function toPortableRelativePath(projectRoot,targetPath){const relative=path.relative(projectRoot,targetPath);return relative.length===0?path.basename(targetPath):relative.split(path.sep).join("/")}function ensureTrailingNewline(value){return value.endsWith(`
|
|
2
|
+
`)?value:`${value}
|
|
3
|
+
`}function detectLineEnding(value){return value.includes(`\r
|
|
4
|
+
`)?`\r
|
|
5
|
+
`:`
|
|
6
|
+
`}function findGuidanceBlockRange(content){const startIndex=content.indexOf(AGENT_GUIDANCE_START_MARKER_PREFIX);if(startIndex===-1)return null;const endMarkerIndex=content.indexOf(AGENT_GUIDANCE_END_MARKER,startIndex);return endMarkerIndex===-1?null:{start_index:startIndex,end_index:endMarkerIndex+AGENT_GUIDANCE_END_MARKER.length}}function hasGuidanceMarker(content){return findGuidanceBlockRange(content)!==null}function buildAgentGuidanceBlock(lineEnding,projectTestCommand="<your project test command>"){return[AGENT_GUIDANCE_START_MARKER,"## pm Workflow (Agent Quickstart)","",'- Cold start with the measured canonical orientation: `pm context --limit 10 --for orient`; before item mutation, also run `pm search "<keywords>" --limit 10`, `pm list --status open --limit 20`, and `pm list --status in_progress --limit 20`.',"- Claim and start atomically: `pm claim <id> --start`.",`- Link evidence while coding: \`pm files <id> --add ...\`, \`pm docs <id> --add ...\`, \`pm test <id> --add command="${projectTestCommand}"\`.`,'- Verify and close: `pm test <id> --run --progress`, then atomically record closure evidence with `pm close <id> "<reason>" --resolution "<what changed>" --expected "<expected outcome>" --actual "<observed outcome>" --validate-close warn`, then `pm release <id>`.',"- Author identity is automatic for supported agent harnesses; use `--author` only for an explicit override.","",AGENT_GUIDANCE_END_MARKER,""].join(lineEnding)}function upsertAgentGuidanceBlock(existingContent,projectTestCommand="<your project test command>"){const lineEnding=detectLineEnding(existingContent),nextBlock=buildAgentGuidanceBlock(lineEnding,projectTestCommand),existingRange=findGuidanceBlockRange(existingContent);if(existingRange){const trailingContent=existingContent.slice(existingRange.end_index),normalizedTrailingContent=trailingContent.startsWith(`\r
|
|
7
|
+
`)?trailingContent.slice(2):trailingContent.startsWith(`
|
|
8
|
+
`)?trailingContent.slice(1):trailingContent,nextContent2=ensureTrailingNewline(`${existingContent.slice(0,existingRange.start_index)}${nextBlock}${normalizedTrailingContent}`);return{next_content:nextContent2,changed:nextContent2!==existingContent}}const separator=existingContent.length===0?"":existingContent.endsWith(`
|
|
9
|
+
`)?`
|
|
10
|
+
`:`
|
|
11
|
+
|
|
12
|
+
`,nextContent=ensureTrailingNewline(`${existingContent}${separator}${nextBlock}`);return{next_content:nextContent,changed:nextContent!==existingContent}}async function resolveProjectTestCommand(projectRoot){if(await pathExists(path.join(projectRoot,"scripts","run-tests.mjs")))return"node scripts/run-tests.mjs test";let packageDocument;try{packageDocument=JSON.parse(await fs.readFile(path.join(projectRoot,"package.json"),"utf8"))}catch{return"<your project test command>"}const manifest=normalizeProjectPackageManifest(packageDocument);if(manifest===void 0)return"<your project test command>";const packageManager=manifest.packageManager?.split("@")[0];return packageManager==="pnpm"?"pnpm test":packageManager==="bun"?"bun run test":packageManager==="yarn"?"yarn test":packageManager==="npm"?"npm test":await pathExists(path.join(projectRoot,"pnpm-lock.yaml"))?"pnpm test":await pathExists(path.join(projectRoot,"bun.lock"))||await pathExists(path.join(projectRoot,"bun.lockb"))?"bun run test":await pathExists(path.join(projectRoot,"yarn.lock"))?"yarn test":"npm test"}function normalizeProjectPackageManifest(value){if(typeof value!="object"||value===null||!("scripts"in value))return;const scripts=value.scripts;if(!(typeof scripts!="object"||scripts===null||!("test"in scripts)||typeof scripts.test!="string"||scripts.test.trim().length===0))return{scripts:{test:scripts.test},..."packageManager"in value&&typeof value.packageManager=="string"?{packageManager:value.packageManager}:{}}}function resolveProjectRoot(pmRoot,cwd){const parent=path.dirname(pmRoot);return path.basename(pmRoot)==="pm"&&path.basename(parent)===".agents"?path.dirname(parent):path.resolve(cwd,pmRoot)}function resolveTargetGuidancePath(scans,projectRoot){const existingAgents=scans.find(entry=>path.basename(entry.file_path)==="AGENTS.md"&&entry.exists);if(existingAgents)return existingAgents.file_path;const existingAny=scans.find(entry=>entry.exists);return existingAny?existingAny.file_path:path.join(projectRoot,"AGENTS.md")}function parsePromptChoice(answer,currentDefault){const normalized=answer.trim().toLowerCase();return normalized.length===0?currentDefault:normalized==="y"||normalized==="yes"?!0:normalized==="n"||normalized==="no"?!1:currentDefault}async function promptForGuidanceWrite(targetRelativePath){const rl=createAgentGuidanceReadlineInterface();try{output.write(`
|
|
13
|
+
Agent guidance check
|
|
14
|
+
`),output.write(`No AGENTS.md/CLAUDE.md file currently contains compact pm workflow guidance.
|
|
15
|
+
`);const answer=await rl.question(`Add a compact pm workflow section to ${targetRelativePath}? [Y/n] `);return output.write(`
|
|
16
|
+
`),parsePromptChoice(answer,!0)}finally{rl.close()}}function normalizeAgentGuidanceState(settings){const current=settings.agent_guidance;return{prompt_completed:current?.prompt_completed===!0,declined:current?.declined===!0,declined_at:typeof current?.declined_at=="string"?current.declined_at:"",template_version:typeof current?.template_version=="number"&&Number.isInteger(current.template_version)&¤t.template_version>0?current.template_version:AGENT_GUIDANCE_TEMPLATE_VERSION,last_checked_files:Array.isArray(current?.last_checked_files)?[...new Set(current.last_checked_files.map(value=>value.trim()).filter(value=>value.length>0))].sort((left,right)=>left.localeCompare(right)):[]}}async function scanGuidanceFiles(projectRoot){const scans=[],testCommand=await resolveProjectTestCommand(projectRoot);for(const filename of AGENT_GUIDANCE_TARGET_FILENAMES){const filePath=path.join(projectRoot,filename),exists=await pathExists(filePath);if(!exists){scans.push({file_path:filePath,exists,has_guidance:!1,has_marker:!1});continue}const content=await fs.readFile(filePath,"utf8"),contentLower=content.toLowerCase(),tokenHits=AGENT_GUIDANCE_REQUIRED_TOKENS.filter(token=>contentLower.includes(token)),hasMarker=hasGuidanceMarker(content);scans.push({file_path:filePath,exists,has_guidance:hasMarker||tokenHits.length>=AGENT_GUIDANCE_REQUIRED_TOKEN_THRESHOLD,has_marker:hasMarker,outdated:hasMarker&&upsertAgentGuidanceBlock(content,testCommand).changed})}return scans}function pushUnique(target,value){target.includes(value)||target.push(value)}function applyAgentGuidanceState(settings,currentState){const existing=normalizeAgentGuidanceState(settings),changed=JSON.stringify(existing)!==JSON.stringify(currentState);return changed&&(settings.agent_guidance=currentState),{changed,state:currentState}}async function writeGuidanceFile(filePath,projectRoot=path.dirname(filePath)){const currentContent=await pathExists(filePath)?await fs.readFile(filePath,"utf8"):"",nextContent=upsertAgentGuidanceBlock(currentContent,await resolveProjectTestCommand(projectRoot));return nextContent.changed?(await writeFileAtomic(filePath,nextContent.next_content),{changed:!0,warnings:await runActiveOnWriteHooks({path:filePath,scope:"project",op:"init:agent_guidance_file"})}):{changed:!1,warnings:[]}}function buildInitAgentGuidanceSummary(params){return{mode:params.mode,present:params.scans.some(entry=>entry.has_guidance),prompted:params.prompted,applied:params.applied,skipped:params.skipped,declined:params.state.declined,prompt_completed:params.state.prompt_completed,template_version:params.state.template_version,target_file:params.targetRelativePath,checked_files:params.scans.map(entry=>toPortableRelativePath(params.projectRoot,entry.file_path)),files_with_guidance:params.scans.filter(entry=>entry.has_guidance).map(entry=>toPortableRelativePath(params.projectRoot,entry.file_path)),missing_files:params.scans.filter(entry=>!entry.exists).map(entry=>toPortableRelativePath(params.projectRoot,entry.file_path))}}async function refreshGuidanceScansAfterApply(applied,scans,projectRoot){return applied?await scanGuidanceFiles(projectRoot):scans}function markAgentGuidanceRunState(flow,checkedFiles,partial){flow.state={...flow.state,...partial,template_version:AGENT_GUIDANCE_TEMPLATE_VERSION,last_checked_files:checkedFiles}}async function addAgentGuidanceBlockIfMissing(flow,context){if(context.presentBefore)return;const writeResult=await writeGuidanceFile(context.targetPath,context.projectRoot);flow.warnings.push(...writeResult.warnings),writeResult.changed&&(flow.applied=!0,flow.warnings.push(`agent_guidance:added:${context.targetRelativePath}`))}function handleAgentGuidanceStatusMode(flow,presentBefore){presentBefore||(flow.warnings.push("agent_guidance:missing"),pushUnique(flow.nextSteps,AGENT_GUIDANCE_ADD_LATER_HINT))}function handleAgentGuidanceSkipMode(flow,checkedFiles){flow.skipped=!0,markAgentGuidanceRunState(flow,checkedFiles,{prompt_completed:!0,declined:!0,declined_at:flow.state.declined_at||new Date().toISOString()}),flow.warnings.push("agent_guidance:explicit_skip"),pushUnique(flow.nextSteps,AGENT_GUIDANCE_ADD_LATER_HINT)}async function handleAgentGuidanceAddMode(flow,context){await addAgentGuidanceBlockIfMissing(flow,context),markAgentGuidanceRunState(flow,context.checkedFiles,{prompt_completed:!0,declined:!1,declined_at:""})}function handlePresentAgentGuidance(flow,checkedFiles){flow.state.declined&&markAgentGuidanceRunState(flow,checkedFiles,{prompt_completed:!0,declined:!1,declined_at:""})}function handleDeclinedAgentGuidance(flow){flow.skipped=!0,flow.warnings.push("agent_guidance:skipped_declined"),pushUnique(flow.nextSteps,AGENT_GUIDANCE_ADD_LATER_HINT)}async function handleInteractiveAgentGuidancePrompt(flow,context){if(flow.prompted=!0,await promptForGuidanceWrite(context.targetRelativePath)){await addAgentGuidanceBlockIfMissing(flow,context),markAgentGuidanceRunState(flow,context.checkedFiles,{prompt_completed:!0,declined:!1,declined_at:""});return}flow.skipped=!0,markAgentGuidanceRunState(flow,context.checkedFiles,{prompt_completed:!0,declined:!0,declined_at:new Date().toISOString()}),flow.warnings.push("agent_guidance:declined"),pushUnique(flow.nextSteps,AGENT_GUIDANCE_ADD_LATER_HINT)}function handleNonInteractiveMissingAgentGuidance(flow){flow.warnings.push("agent_guidance:missing_non_interactive"),pushUnique(flow.nextSteps,AGENT_GUIDANCE_ADD_LATER_HINT)}async function applyAgentGuidanceMode(initialState,context){const flow={warnings:[],nextSteps:[],prompted:!1,applied:!1,skipped:!1,state:initialState};return context.mode==="status"?(handleAgentGuidanceStatusMode(flow,context.presentBefore),flow):context.mode==="skip"?(handleAgentGuidanceSkipMode(flow,context.checkedFiles),flow):context.mode==="add"?(await handleAgentGuidanceAddMode(flow,context),flow):context.presentBefore?(handlePresentAgentGuidance(flow,context.checkedFiles),flow):flow.state.prompt_completed&&flow.state.declined?(handleDeclinedAgentGuidance(flow),flow):context.interactive?(await handleInteractiveAgentGuidancePrompt(flow,context),flow):(handleNonInteractiveMissingAgentGuidance(flow),flow)}async function runInitAgentGuidance(options){const projectRoot=resolveProjectRoot(options.pm_root,options.cwd);let scans=await scanGuidanceFiles(projectRoot);const targetPath=resolveTargetGuidancePath(scans,projectRoot),targetRelativePath=toPortableRelativePath(projectRoot,targetPath),checkedFiles=scans.map(entry=>toPortableRelativePath(projectRoot,entry.file_path)),presentBefore=scans.some(entry=>entry.has_guidance),flow=await applyAgentGuidanceMode(normalizeAgentGuidanceState(options.settings),{mode:options.mode,interactive:options.interactive,targetPath,targetRelativePath,checkedFiles,presentBefore,projectRoot});if(options.mode==="add")for(const scan of scans.filter(entry=>entry.outdated)){const refreshed=await writeGuidanceFile(scan.file_path,projectRoot);flow.applied||=refreshed.changed,flow.warnings.push(...refreshed.warnings)}const stateUpdate=applyAgentGuidanceState(options.settings,flow.state);scans=await refreshGuidanceScansAfterApply(flow.applied,scans,projectRoot);const outdated=scans.filter(entry=>entry.outdated).map(entry=>toPortableRelativePath(projectRoot,entry.file_path));return outdated.length>0&&(flow.warnings.push(`agent_guidance_outdated:${outdated.join(",")}`),pushUnique(flow.nextSteps,"pm init --agent-guidance add")),{summary:buildInitAgentGuidanceSummary({mode:options.mode,scans,projectRoot,targetRelativePath,prompted:flow.prompted,applied:flow.applied,skipped:flow.skipped,state:flow.state}),warnings:flow.warnings,next_steps:flow.nextSteps,settings_changed:stateUpdate.changed}}export{INIT_AGENT_GUIDANCE_MODE_VALUES,_testOnly,resolveProjectTestCommand,runInitAgentGuidance};
|
|
3
17
|
//# sourceMappingURL=init-agent-guidance.js.map
|
package/dist/sdk/init.js
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
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]="231597cc-2166-5029-9b3a-476587a33941")}catch(e2){}})();import fs from"node:fs/promises";import path from"node:path";import readline from"node:readline/promises";import{stdin as input,stdout as output}from"node:process";import{getActiveExtensionRegistrations,runActiveOnWriteHooks}from"../core/extensions/index.js";import{pathExists,readFileIfExists}from"../core/fs/fs-utils.js";import{writeWorkspaceJsonWithHistory}from"../core/history/workspace-history.js";import{normalizePrefix}from"../core/item/id.js";import{resolveItemTypeRegistry}from"../core/item/type-registry.js";import{DEFAULT_RUNTIME_SCHEMA_FILE_PATHS,ensureRuntimeSchemaFileScaffold,filePathForSchemaSection,normalizeRuntimeSchemaSettings}from"../core/schema/runtime-schema.js";import{parseItemTypesFile,serializeItemTypesFile,upsertItemType}from"../core/schema/item-types-file.js";import{normalizeTypePresetName,resolveTypePresetDefinitions,TYPE_PRESET_NAMES}from"../core/schema/type-presets.js";import{EXIT_CODE,GOVERNANCE_PRESET_DEFAULTS,PM_REQUIRED_SUBDIRS,SETTINGS_DEFAULTS}from"../core/shared/constants.js";import{readAuthorEnvironment,resolveAuthor}from"../core/shared/author.js";import{PmCliError}from"../core/shared/errors.js";import{resolvePmRoot}from"../core/store/paths.js";import{readSettings,writeSettings}from"../core/store/settings.js";import{ensurePmGitignore}from"./workspace.js";import{renderPmCommand}from"./command-line.js";import{runExtension}from"./extension.js";import{INIT_AGENT_GUIDANCE_MODE_VALUES,runInitAgentGuidance}from"./init-agent-guidance.js";import{findGitWorkspaceRoot,installMergeFence}from"./merge/install.js";const INIT_INVOCATION_CWD=Symbol.for("pm.sdk.init-invocation-cwd");function summarizeInitResult(result,display=false){if(display){const warnings=result.warnings.filter(warning=>!/^(?:already_exists:|updated:|registered_type_preset:)/u.test(warning));return{ok:result.ok,path:result.path,governance_preset:result.governance_preset,telemetry:`${result.settings.telemetry.enabled?"enabled":"disabled"} (${result.settings.telemetry.capture_level})`,created_count:result.created_dirs.length,next_steps:result.next_steps.slice(0,3),...warnings.length>0?{warnings:warnings.join("; ")}:{},details:`${renderPmCommand(["--pm-path",result.path,"init","--verbose"])} for full setup details and notices (or --json)`}}return{ok:result.ok,path:result.path,target:result.target,id_prefix:result.settings.id_prefix,governance_preset:result.governance_preset,telemetry:{enabled:result.settings.telemetry.enabled,capture_level:result.settings.telemetry.capture_level},output_format:result.settings.output.default_format,created_dirs_count:result.created_dirs.length,created_dirs:result.created_dirs,warnings:result.warnings,wizard_used:result.wizard_used,...result.registered_type_preset?{registered_type_preset:result.registered_type_preset}:{},...result.installed_packages?{installed_packages:result.installed_packages}:{},next_steps:result.next_steps,agent_guidance:result.agent_guidance,hint:"Re-run with --verbose for the full settings tree."}}const _testOnly={normalizeInitGovernancePreset,normalizeInitTypePreset,normalizeOptionalInitAuthor,normalizeInitAgentGuidanceMode,isPathLikeInitTarget,resolveInitInvocation,resolveInitPrefixInput,parseYesNoChoice,applyGovernancePreset,runInitWizard,setInitReadlineFactoryForTests,summarizeInstalledPackages,buildInitNextSteps,registerInitTypePreset,assertExplicitTrackerPathIsNotWorkspaceRoot,isLikelyWorkspaceRoot,installInitMergeFence};let createInitReadlineInterface=()=>readline.createInterface({input,output});function setInitReadlineFactoryForTests(factory){createInitReadlineInterface=factory??(()=>readline.createInterface({input,output}))}function cloneDefaults(){return structuredClone(SETTINGS_DEFAULTS)}const BUILTIN_GOVERNANCE_PRESETS=["minimal","default","strict"];function normalizeInitGovernancePreset(rawValue){if(rawValue===void 0){return void 0}const normalized=rawValue.trim().toLowerCase().replaceAll("-","_");if(normalized.length===0){throw new PmCliError("--preset must not be empty",EXIT_CODE.USAGE)}if(normalized==="minimal"||normalized==="default"||normalized==="strict"){return normalized}if(normalized==="lite"||normalized==="minimum"){return"minimal"}throw new PmCliError(`Invalid --preset value "${rawValue}". Allowed: ${BUILTIN_GOVERNANCE_PRESETS.join(", ")}`,EXIT_CODE.USAGE)}function normalizeInitTypePreset(rawValue){if(rawValue===void 0){return void 0}if(rawValue.trim().length===0){throw new PmCliError("--type-preset must not be empty",EXIT_CODE.USAGE)}try{return normalizeTypePresetName(rawValue)}catch{throw new PmCliError(`Invalid --type-preset value "${rawValue}". Allowed: ${TYPE_PRESET_NAMES.join(", ")}`,EXIT_CODE.USAGE)}}function normalizeOptionalInitAuthor(rawValue){if(rawValue===void 0){return void 0}const normalized=rawValue.trim();if(normalized.length===0){throw new PmCliError("--author must not be empty",EXIT_CODE.USAGE)}return normalized}function isPathLikeInitTarget(rawValue){if(rawValue===void 0){return false}const trimmed=rawValue.trim();if(trimmed.length===0){return false}return path.isAbsolute(trimmed)||/^[a-z]:/iu.test(trimmed)||trimmed.startsWith(".")||trimmed.includes("/")||trimmed.includes("\\")}function resolveInitInvocation(cwd,global2,prefixArg,workspaceArg){const normalizedWorkspace=workspaceArg?.trim();if(workspaceArg!==void 0&&normalizedWorkspace?.length===0){throw new PmCliError("--workspace must not be empty",EXIT_CODE.USAGE)}if(normalizedWorkspace!==void 0){if(global2.path!==void 0||isPathLikeInitTarget(prefixArg)){throw new PmCliError("--workspace cannot be combined with --pm-path/--path or a path-like positional target.",EXIT_CODE.USAGE)}const workspaceRoot=path.resolve(cwd,normalizedWorkspace);const pmRoot2=path.join(workspaceRoot,".agents","pm");return{pmRoot:pmRoot2,prefixArg,target:{mode:"workspace-path",tracker_root:pmRoot2,workspace_root:workspaceRoot}}}if(global2.path===void 0&&isPathLikeInitTarget(prefixArg)){const positionalTarget=path.resolve(cwd,prefixArg.trim());return{pmRoot:positionalTarget,prefixArg:void 0,target:{mode:"tracker-path",tracker_root:positionalTarget}}}const pmRoot=resolvePmRoot(cwd,global2.path);const currentTrackerRoot=path.join(path.resolve(cwd),".agents","pm");const discoveredWorkspaceRoot=path.dirname(path.dirname(pmRoot));const discovery=path.resolve(pmRoot)===currentTrackerRoot?"current":"ancestor";return{pmRoot,prefixArg,target:global2.path===void 0?{mode:"workspace-discovery",tracker_root:pmRoot,workspace_root:discoveredWorkspaceRoot,discovery,requested_cwd:path.resolve(cwd),...discovery==="ancestor"?{suggested_current_tracker_root:currentTrackerRoot}:{}}:{mode:"tracker-path",tracker_root:pmRoot}}}function resolveInitPrefixInput(positionalPrefix,flaggedPrefix){if(flaggedPrefix===void 0){return positionalPrefix}if(flaggedPrefix.trim().length===0){throw new PmCliError("--id-prefix must not be empty",EXIT_CODE.USAGE)}if(isPathLikeInitTarget(flaggedPrefix)){throw new PmCliError(`--id-prefix accepts an item ID prefix, not a tracker path: "${flaggedPrefix}".`,EXIT_CODE.USAGE,{code:"init_id_prefix_path_like",required:"Pass the tracker path positionally or with the global --path option.",examples:[`pm init ${flaggedPrefix}`,`pm --path ${flaggedPrefix} init`]})}if(positionalPrefix!==void 0&&normalizePrefix(positionalPrefix)!==normalizePrefix(flaggedPrefix)){throw new PmCliError(`Conflicting id prefixes: positional "${positionalPrefix}" and --id-prefix "${flaggedPrefix}".`,EXIT_CODE.USAGE,{code:"init_id_prefix_conflict",required:"Use either the positional id prefix or --id-prefix with one value.",examples:[`pm init ${normalizePrefix(positionalPrefix)}`,`pm init --id-prefix ${normalizePrefix(flaggedPrefix)}`]})}return flaggedPrefix}function normalizeInitAgentGuidanceMode(rawValue){if(rawValue===void 0){return"ask"}const normalized=rawValue.trim().toLowerCase().replaceAll("-","_");if(normalized.length===0){throw new PmCliError("--agent-guidance must not be empty",EXIT_CODE.USAGE)}if(normalized==="ask"||normalized==="add"||normalized==="skip"||normalized==="status"){return normalized}throw new PmCliError(`Invalid --agent-guidance value "${rawValue}". Allowed: ${INIT_AGENT_GUIDANCE_MODE_VALUES.join(", ")}`,EXIT_CODE.USAGE)}function parseYesNoChoice(answer,currentDefault){const normalized=answer.trim().toLowerCase();if(normalized.length===0){return currentDefault}if(normalized==="y"||normalized==="yes"){return true}if(normalized==="n"||normalized==="no"){return false}return currentDefault}function applyGovernancePreset(settings,preset){const knobs=GOVERNANCE_PRESET_DEFAULTS[preset];settings.governance={preset,...knobs};settings.validation.parent_reference=knobs.parent_reference;settings.validation.metadata_profile=knobs.metadata_profile}function isInstalledPackageEntry(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)}function summarizeInstalledPackages(result){const details=result.details;return{installed_all:details.installed_all===true,installed_count:typeof details.installed_count==="number"?details.installed_count:0,packages:Array.isArray(details.packages)?details.packages.filter(isInstalledPackageEntry).map(entry=>({alias:typeof entry.alias==="string"?entry.alias:"",ok:entry.ok===true})):[]}}async function registerInitTypePreset(pmRoot,settings,preset){const schema=normalizeRuntimeSchemaSettings(settings.schema);const typesPath=filePathForSchemaSection(pmRoot,schema.files.types,DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.types);const parsed=parseItemTypesFile(await readFileIfExists(typesPath));let nextFile=parsed;const registered=[];const updated=[];for(const normalized of resolveTypePresetDefinitions(preset)){const upsert=upsertItemType(nextFile,normalized);nextFile=upsert.file;(upsert.replaced?updated:registered).push(upsert.definition.name)}await writeWorkspaceJsonWithHistory({pmRoot,filePath:typesPath,raw:serializeItemTypesFile(nextFile),op:"init:type-preset",author:resolveAuthor(void 0,settings.author_default),lockTtlSeconds:settings.locks.ttl_seconds,lockWaitMs:settings.locks.wait_ms});return{name:preset,registered,updated,file:typesPath}}async function isLikelyWorkspaceRoot(candidate){const indicators=[".git","package.json","pnpm-workspace.yaml","AGENTS.md",path.join(".agents","pm")];for(const indicator of indicators){if(await pathExists(path.join(candidate,indicator))){return true}}return false}async function assertExplicitTrackerPathIsNotWorkspaceRoot(pmRoot,explicitTrackerTarget,force){if(!explicitTrackerTarget||force){return}if(await pathExists(path.join(pmRoot,"settings.json"))){return}if(!await isLikelyWorkspaceRoot(pmRoot)){return}const nestedTracker=path.join(pmRoot,".agents","pm");throw new PmCliError(`Refusing to initialize tracker files directly in workspace root "${pmRoot}".`,EXIT_CODE.USAGE,{code:"workspace_root_pm_path",type:"urn:pm-cli:error:workspace_root_pm_path",why:"Path-like init targets and --pm-path/--path point at the tracker storage directory itself, not the repository workspace. Point at .agents/pm, use --workspace, or pass --force if you intentionally want root-level tracker files.",examples:[`pm --pm-path ${nestedTracker} init --yes`,"pm init --yes",`pm --pm-path ${pmRoot} init --yes --force`],nextSteps:["Use --pm-path <repo>/.agents/pm for repository-local tracker storage.","Use PM_PATH only for sandboxed tests or explicit tracker roots.","Pass --force only when root-level tracker files are intentional."],recovery:{next_best_command:`pm --pm-path ${nestedTracker} init --yes`}})}async function ensureInitDirectories(pmRoot,subdirs){const createdDirs=[];const warnings=[];for(const subdir of subdirs){const target=subdir?path.join(pmRoot,subdir):pmRoot;const existed=await pathExists(target);await fs.mkdir(target,{recursive:true});if(existed){warnings.push(`already_exists:${target}`)}else{createdDirs.push(target)}warnings.push(...await runActiveOnWriteHooks({path:target,scope:"project",op:"init:ensure_dir"}))}return{createdDirs,warnings}}async function runInitWizard(initialPrefix,telemetryDefault){const rl=createInitReadlineInterface();try{output.write("pm init setup wizard (agent-optimized)\n");output.write("This walkthrough is non-destructive and each choice can be changed later with pm config.\n\n");output.write("1/3 Item ID prefix\n");output.write("Prefix is prepended to generated IDs (for example pm-a1b2).\n");const prefixAnswer=await rl.question(`Item ID prefix [${initialPrefix}]: `);const resolvedPrefix=prefixAnswer.trim().length>0?normalizePrefix(prefixAnswer):initialPrefix;output.write("\n2/3 Governance preset\n");output.write("minimal: no ownership blocking, progressive create defaults, close validation off.\n");output.write("default: ownership conflict warnings, progressive create defaults, close validation warn.\n");output.write("strict: ownership blocking, strict create defaults, close validation strict.\n");const presetAnswer=await rl.question("Governance preset [minimal/default/strict] (default: minimal): ");const presetChoice=presetAnswer.trim().length>0?presetAnswer.trim():"minimal";let resolvedPreset="minimal";try{resolvedPreset=normalizeInitGovernancePreset(presetChoice)}catch{output.write(`Unrecognized governance preset "${presetChoice}"; using minimal.
|
|
2
|
-
`)}output.write("\n3/3 Project telemetry\n");output.write("Telemetry helps improve reliability and can be disabled anytime via pm config.\n");const telemetryLabel=telemetryDefault?"Y/n":"y/N";const telemetryAnswer=await rl.question(`Enable telemetry for this project? [${telemetryLabel}] `);const telemetryEnabled=parseYesNoChoice(telemetryAnswer,telemetryDefault);output.write("\n");return{prefix:resolvedPrefix,preset:resolvedPreset,telemetry_enabled:telemetryEnabled}}finally{rl.close()}}function normalizeInitCommandOptions(options){return{presetFromOption:normalizeInitGovernancePreset(options.preset),useDefaults:options.defaults===true,authorFromOption:normalizeOptionalInitAuthor(options.author),installBundledPackages:options.withPackages===true,agentGuidanceMode:normalizeInitAgentGuidanceMode(options.agentGuidance),typePreset:normalizeInitTypePreset(options.typePreset)}}function collectExistingSettingsPendingChanges(params){const pendingChanges=[];if(params.prefixArg!==void 0&¶ms.settings.id_prefix!==params.normalizedPrefix){pendingChanges.push("id_prefix")}if(params.presetFromOption!==void 0&¶ms.settings.governance.preset!==params.presetFromOption){pendingChanges.push("governance_preset")}if(params.authorFromOption!==void 0&¶ms.settings.author_default!==params.authorFromOption){pendingChanges.push("author_default")}return pendingChanges}function assertExistingSettingsUpdateAllowed(settingsPath,pendingChanges,force,target){if(pendingChanges.length===0||force){return}const ancestorDiscovery=target.discovery==="ancestor";throw new PmCliError(`${ancestorDiscovery?`No tracker exists in ${target.requested_cwd}; pm init found an ancestor tracker at ${target.tracker_root}. `:""}Refusing to update existing tracker settings at ${settingsPath} without --force.`,EXIT_CODE.USAGE,{code:"init_existing_settings_requires_force",type:"urn:pm-cli:error:init_existing_settings_requires_force",required:`--force for ${pendingChanges.join(", ")}`,why:ancestorDiscovery?"Ancestor discovery is useful for normal commands, but init must make the selected existing workspace explicit before changing its identity or policy settings.":"pm init is safe to rerun, but changing id prefix, governance preset, or default author on an existing tracker can corrupt long-lived project context when an agent meant to initialize a sandbox path.",resolved_path:target.tracker_root,requested_path:target.requested_cwd,suggested_path:target.suggested_current_tracker_root,examples:["pm init --yes","pm init ./sandbox-pm --yes",...ancestorDiscovery?['pm init <name> --yes --pm-path "$PWD/.agents/pm"']:[],"pm init acme --yes --force"],nextSteps:[...ancestorDiscovery?['To create a new tracker in the current directory, rerun with --pm-path "$PWD/.agents/pm".']:[],"If you meant to initialize a sandbox tracker, pass a path-like positional such as ./sandbox-pm or /tmp/pm-test.","If you intentionally want to rewrite this existing tracker's init-managed settings, rerun with --force."]})}function applyExistingSettingsUpdates(params){let changed=false;if(params.prefixArg!==void 0&¶ms.settings.id_prefix!==params.normalizedPrefix){params.settings.id_prefix=params.normalizedPrefix;params.warnings.push(`updated:id_prefix:${params.normalizedPrefix}`);changed=true}if(params.presetFromOption!==void 0&¶ms.settings.governance.preset!==params.presetFromOption){applyGovernancePreset(params.settings,params.presetFromOption);params.warnings.push(`updated:governance_preset:${params.presetFromOption}`);changed=true}if(params.authorFromOption!==void 0&¶ms.settings.author_default!==params.authorFromOption){params.settings.author_default=params.authorFromOption;params.warnings.push(`updated:author_default:${params.authorFromOption}`);changed=true}return changed}async function loadExistingInitSettings(params){const settings=await readSettings(params.pmRoot);params.warnings.push(`already_exists:${params.settingsPath}`);const pendingChanges=collectExistingSettingsPendingChanges({settings,normalizedPrefix:params.normalizedPrefix,prefixArg:params.prefixArg,presetFromOption:params.normalizedOptions.presetFromOption,authorFromOption:params.normalizedOptions.authorFromOption});assertExistingSettingsUpdateAllowed(params.settingsPath,pendingChanges,params.options.force===true,params.target);if(applyExistingSettingsUpdates({settings,normalizedPrefix:params.normalizedPrefix,prefixArg:params.prefixArg,presetFromOption:params.normalizedOptions.presetFromOption,authorFromOption:params.normalizedOptions.authorFromOption,warnings:params.warnings})){await writeSettings(params.pmRoot,settings)}return{settings,normalizedPrefix:params.normalizedPrefix,chosenPreset:params.normalizedOptions.presetFromOption,wizardUsed:false}}async function createNewInitSettings(params){let normalizedPrefix=params.normalizedPrefix;let chosenPreset=params.normalizedOptions.presetFromOption;let chosenTelemetryEnabled;let wizardUsed=false;if(params.normalizedOptions.presetFromOption===void 0&&!params.normalizedOptions.useDefaults&&process.stdin.isTTY===true&&process.stdout.isTTY===true){const wizardChoices=await runInitWizard(normalizedPrefix,SETTINGS_DEFAULTS.telemetry.enabled);normalizedPrefix=wizardChoices.prefix;chosenPreset=wizardChoices.preset;chosenTelemetryEnabled=wizardChoices.telemetry_enabled;wizardUsed=true}const effectivePreset=chosenPreset??"minimal";const settings=cloneDefaults();settings.id_prefix=normalizedPrefix;applyGovernancePreset(settings,effectivePreset);const environmentAuthor=readAuthorEnvironment()?.trim()||void 0;settings.author_default=params.normalizedOptions.authorFromOption??environmentAuthor??"";if(chosenTelemetryEnabled!==void 0){settings.telemetry.enabled=chosenTelemetryEnabled;settings.telemetry.first_run_prompt_completed=true}await writeSettings(params.pmRoot,settings);return{settings,normalizedPrefix,chosenPreset,wizardUsed}}async function resolveInitSettings(params){if(params.settingsExists){return await loadExistingInitSettings(params)}return await createNewInitSettings({pmRoot:params.pmRoot,normalizedPrefix:params.normalizedPrefix,normalizedOptions:params.normalizedOptions})}async function applyInitAgentGuidance(params){const agentGuidanceResult=await runInitAgentGuidance({pm_root:params.pmRoot,cwd:params.cwd,mode:params.agentGuidanceMode,interactive:process.stdin.isTTY===true&&process.stdout.isTTY===true,settings:params.settings});params.warnings.push(...agentGuidanceResult.warnings);if(agentGuidanceResult.settings_changed){await writeSettings(params.pmRoot,params.settings)}return{...agentGuidanceResult.summary,next_steps:agentGuidanceResult.next_steps}}async function ensureInitRuntimeSchemaFiles(pmRoot,settings){const createdDirs=[];const warnings=[];const runtimeSchemaScaffold=await ensureRuntimeSchemaFileScaffold(pmRoot,settings.schema);for(const createdPath of runtimeSchemaScaffold.created_paths){createdDirs.push(createdPath);warnings.push(...await runActiveOnWriteHooks({path:createdPath,scope:"project",op:"init:runtime_schema_file"}))}return{createdDirs,warnings}}async function maybeRegisterInitTypePreset(params){if(params.typePreset===void 0){return void 0}const registeredTypePreset=await registerInitTypePreset(params.pmRoot,params.settings,params.typePreset);params.warnings.push(`registered_type_preset:${params.typePreset}`);params.warnings.push(...await runActiveOnWriteHooks({path:registeredTypePreset.file,scope:"project",op:"init:type_preset"}));return registeredTypePreset}async function ensureInitTypeDirectories(params){const typeRegistry=resolveItemTypeRegistry(params.settings,getActiveExtensionRegistrations());const customTypeFolders=typeRegistry.folders.filter(folder=>!PM_REQUIRED_SUBDIRS.includes(folder));const scaffold=await ensureInitDirectories(params.pmRoot,customTypeFolders);params.createdDirs.push(...scaffold.createdDirs);params.warnings.push(...scaffold.warnings)}function resolveInitWorkspaceRoot(target){const trackerRoot=path.resolve(target.tracker_root);const agentsRoot=path.dirname(trackerRoot);if(path.basename(trackerRoot)==="pm"&&path.basename(agentsRoot)===".agents"){return path.dirname(agentsRoot)}return target.workspace_root}async function maybeInstallInitBundledPackages(installBundledPackages,global2,pmRoot,warnings){if(!installBundledPackages){return void 0}const packageInstallResult=await runExtension("all",{install:true,project:true},{...global2,path:pmRoot});warnings.push(...packageInstallResult.warnings);const installedPackages=summarizeInstalledPackages(packageInstallResult);const failedAliases=installedPackages.packages.filter(entry=>!entry.ok).map(entry=>entry.alias);if(!installedPackages.installed_all||failedAliases.length>0){throw new PmCliError(`pm init --with-packages did not install all bundled packages successfully${failedAliases.length>0?`: ${failedAliases.join(", ")}`:"."}`,EXIT_CODE.GENERIC_FAILURE)}return installedPackages}function buildInitNextSteps(params){const pmCommand=args=>renderPmCommand([...params.target.mode==="workspace-discovery"?[]:["--pm-path",params.target.tracker_root],...args]);const nextSteps=[`Create your first item: ${pmCommand(["create","--type","Task","--title","<title>"])}`,`List active items: ${pmCommand(["list"])}`,`Get agent-friendly project context: ${pmCommand(["context"])}`];if(!params.installBundledPackages){nextSteps.push(`Add optional packages for richer workflows: ${pmCommand(["install","calendar","--project"])}, ${pmCommand(["install","templates","--project"])}, ${pmCommand(["install","guide-shell","--project"])}`);nextSteps.push(`Or install everything bundled: ${pmCommand(["init","--with-packages"])} (idempotent on re-run)`)}else{nextSteps.push(`Explore newly-available commands: ${pmCommand(["cal"])}, ${pmCommand(["templates"])}, ${pmCommand(["guide"])}`)}if(params.registeredTypePreset){nextSteps.push(`Inspect registered preset types: ${pmCommand(["schema","list"])}, ${pmCommand(["schema","show",params.registeredTypePreset.registered[0]??params.registeredTypePreset.updated[0]])}`)}nextSteps.push("Supported agent harnesses are attributed automatically; use --author or PM_AUTHOR only when an explicit identity override is required.");for(const guidanceNextStep of params.agentGuidanceNextSteps){const scopedGuidance=params.target.mode==="workspace-discovery"?guidanceNextStep:guidanceNextStep.replace(/\bpm (?=[a-z])/g,()=>`${pmCommand([])} `);if(!nextSteps.includes(scopedGuidance)){nextSteps.push(scopedGuidance)}}return nextSteps}async function installInitMergeFence(pmRoot,gitWorkspaceRoot,warnings,install=installMergeFence){if(gitWorkspaceRoot===null){warnings.push("merge_fence_skipped:not_git_repository:run pm merge install after moving the tracker into a Git repository");return}try{const mergeFence=await install({pmRoot,workspaceRoot:gitWorkspaceRoot});if(mergeFence.gitattributes.changed){warnings.push(`updated:merge_fence:${mergeFence.gitattributes.path}`)}}catch(error){if(!(error instanceof PmCliError)){throw error}warnings.push(`merge_fence_skipped:install_failed:${error.context.code??"pm_error"}:${error.message}:run pm merge install after resolving the Git repository error`)}}async function ensureInitWorkspaceGitignore(workspaceRoot,pmRoot,agentGuidanceMode,warnings){if(workspaceRoot===void 0||workspaceRoot===null||agentGuidanceMode==="status"){return}const gitignore=await ensurePmGitignore(workspaceRoot,{pmRoot});if(gitignore.changed){warnings.push(`updated:gitignore:${gitignore.path}`)}}async function runInit(prefixArg,global2,options={}){const invocationCwd=global2[INIT_INVOCATION_CWD];const cwd=typeof invocationCwd==="string"?invocationCwd:process.cwd();const invocation=resolveInitInvocation(cwd,global2,prefixArg,options.workspace);const pmRoot=invocation.pmRoot;prefixArg=resolveInitPrefixInput(invocation.prefixArg,options.idPrefix);const normalizedOptions=normalizeInitCommandOptions(options);await assertExplicitTrackerPathIsNotWorkspaceRoot(pmRoot,invocation.target.mode==="tracker-path",options.force===true);const createdDirs=[];const warnings=[];const settingsPath=path.join(pmRoot,"settings.json");const settingsExists=await pathExists(settingsPath);let settingsResolution;if(settingsExists){settingsResolution=await resolveInitSettings({pmRoot,settingsPath,settingsExists,normalizedPrefix:normalizePrefix(prefixArg),prefixArg,options,normalizedOptions,warnings,target:invocation.target})}const baseDirs=await ensureInitDirectories(pmRoot,PM_REQUIRED_SUBDIRS);createdDirs.push(...baseDirs.createdDirs);warnings.push(...baseDirs.warnings);settingsResolution??=await resolveInitSettings({pmRoot,settingsPath,settingsExists,normalizedPrefix:normalizePrefix(prefixArg),prefixArg,options,normalizedOptions,warnings,target:invocation.target});let{settings}=settingsResolution;const configuredWorkspaceRoot=resolveInitWorkspaceRoot(invocation.target);const gitWorkspaceRoot=await findGitWorkspaceRoot(configuredWorkspaceRoot??path.dirname(pmRoot));const workspaceRoot=configuredWorkspaceRoot??gitWorkspaceRoot;const agentGuidance=await applyInitAgentGuidance({pmRoot,cwd:workspaceRoot??cwd,agentGuidanceMode:normalizedOptions.agentGuidanceMode,settings,warnings});const schemaFiles=await ensureInitRuntimeSchemaFiles(pmRoot,settings);createdDirs.push(...schemaFiles.createdDirs);warnings.push(...schemaFiles.warnings);const registeredTypePreset=await maybeRegisterInitTypePreset({pmRoot,settings,typePreset:normalizedOptions.typePreset,warnings});if(registeredTypePreset){settings=await readSettings(pmRoot)}await ensureInitTypeDirectories({pmRoot,settings,createdDirs,warnings});await ensureInitWorkspaceGitignore(workspaceRoot,pmRoot,normalizedOptions.agentGuidanceMode,warnings);if(!settingsExists&&options.mergeFence!==false&&normalizedOptions.agentGuidanceMode!=="status"){await installInitMergeFence(pmRoot,gitWorkspaceRoot,warnings)}const installedPackages=await maybeInstallInitBundledPackages(normalizedOptions.installBundledPackages,global2,pmRoot,warnings);const nextSteps=buildInitNextSteps({installBundledPackages:normalizedOptions.installBundledPackages,registeredTypePreset,agentGuidanceNextSteps:agentGuidance.next_steps,target:invocation.target});return{ok:true,path:pmRoot,target:invocation.target,settings,created_dirs:createdDirs,warnings,governance_preset:settings.governance.preset,wizard_used:settingsResolution.wizardUsed,...registeredTypePreset?{registered_type_preset:registeredTypePreset}:{},...installedPackages?{installed_packages:installedPackages}:{},next_steps:nextSteps,agent_guidance:agentGuidance}}export{INIT_INVOCATION_CWD,_testOnly,runInit,summarizeInitResult};
|
|
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]="95053097-fc76-5587-ab41-8cb05b9d3cd9")}catch{}})();import fs from"node:fs/promises";import path from"node:path";import readline from"node:readline/promises";import{stdin as input,stdout as output}from"node:process";import{getActiveExtensionRegistrations,runActiveOnWriteHooks}from"../core/extensions/index.js";import{pathExists,readFileIfExists}from"../core/fs/fs-utils.js";import{writeWorkspaceJsonWithHistory}from"../core/history/workspace-history.js";import{normalizePrefix}from"../core/item/id.js";import{resolveItemTypeRegistry}from"../core/item/type-registry.js";import{DEFAULT_RUNTIME_SCHEMA_FILE_PATHS,ensureRuntimeSchemaFileScaffold,filePathForSchemaSection,normalizeRuntimeSchemaSettings}from"../core/schema/runtime-schema.js";import{parseItemTypesFile,serializeItemTypesFile,upsertItemType}from"../core/schema/item-types-file.js";import{normalizeTypePresetName,resolveTypePresetDefinitions,TYPE_PRESET_NAMES}from"../core/schema/type-presets.js";import{EXIT_CODE,GOVERNANCE_PRESET_DEFAULTS,PM_REQUIRED_SUBDIRS,SETTINGS_DEFAULTS}from"../core/shared/constants.js";import{readAuthorEnvironment,resolveAuthor}from"../core/shared/author.js";import{PmCliError}from"../core/shared/errors.js";import{resolvePmRoot}from"../core/store/paths.js";import{readSettings,writeSettings}from"../core/store/settings.js";import{ensurePmGitignore}from"./workspace.js";import{renderPmCommand}from"./command-line.js";import{runExtension}from"./extension.js";import{INIT_AGENT_GUIDANCE_MODE_VALUES,runInitAgentGuidance}from"./init-agent-guidance.js";import{findGitWorkspaceRoot,installMergeFence}from"./merge/install.js";const INIT_INVOCATION_CWD=Symbol.for("pm.sdk.init-invocation-cwd");function summarizeInitResult(result,display=!1){if(display){const warnings=result.warnings.filter(warning=>!/^(?:already_exists:|updated:|registered_type_preset:)/u.test(warning));return{ok:result.ok,path:result.path,governance_preset:result.governance_preset,telemetry:`${result.settings.telemetry.enabled?"enabled":"disabled"} (${result.settings.telemetry.capture_level})`,created_count:result.created_dirs.length,next_steps:result.next_steps.slice(0,3),...warnings.length>0?{warnings:warnings.join("; ")}:{},details:`${renderPmCommand(["--pm-path",result.path,"init","--verbose"])} for full setup details and notices (or --json)`}}return{ok:result.ok,path:result.path,target:result.target,id_prefix:result.settings.id_prefix,governance_preset:result.governance_preset,telemetry:{enabled:result.settings.telemetry.enabled,capture_level:result.settings.telemetry.capture_level},output_format:result.settings.output.default_format,created_dirs_count:result.created_dirs.length,created_dirs:result.created_dirs,warnings:result.warnings,wizard_used:result.wizard_used,...result.registered_type_preset?{registered_type_preset:result.registered_type_preset}:{},...result.installed_packages?{installed_packages:result.installed_packages}:{},next_steps:result.next_steps,agent_guidance:result.agent_guidance,hint:"Re-run with --verbose for the full settings tree."}}const _testOnly={normalizeInitGovernancePreset,normalizeInitTypePreset,normalizeOptionalInitAuthor,normalizeInitAgentGuidanceMode,isPathLikeInitTarget,resolveInitInvocation,resolveInitPrefixInput,parseYesNoChoice,applyGovernancePreset,runInitWizard,setInitReadlineFactoryForTests,summarizeInstalledPackages,buildInitNextSteps,registerInitTypePreset,assertExplicitTrackerPathIsNotWorkspaceRoot,isLikelyWorkspaceRoot,installInitMergeFence};let createInitReadlineInterface=()=>readline.createInterface({input,output});function setInitReadlineFactoryForTests(factory){createInitReadlineInterface=factory??(()=>readline.createInterface({input,output}))}function cloneDefaults(){return structuredClone(SETTINGS_DEFAULTS)}const BUILTIN_GOVERNANCE_PRESETS=["minimal","default","strict"];function normalizeInitGovernancePreset(rawValue){if(rawValue===void 0)return;const normalized=rawValue.trim().toLowerCase().replaceAll("-","_");if(normalized.length===0)throw new PmCliError("--preset must not be empty",EXIT_CODE.USAGE);if(normalized==="minimal"||normalized==="default"||normalized==="strict")return normalized;if(normalized==="lite"||normalized==="minimum")return"minimal";throw new PmCliError(`Invalid --preset value "${rawValue}". Allowed: ${BUILTIN_GOVERNANCE_PRESETS.join(", ")}`,EXIT_CODE.USAGE)}function normalizeInitTypePreset(rawValue){if(rawValue!==void 0){if(rawValue.trim().length===0)throw new PmCliError("--type-preset must not be empty",EXIT_CODE.USAGE);try{return normalizeTypePresetName(rawValue)}catch{throw new PmCliError(`Invalid --type-preset value "${rawValue}". Allowed: ${TYPE_PRESET_NAMES.join(", ")}`,EXIT_CODE.USAGE)}}}function normalizeOptionalInitAuthor(rawValue){if(rawValue===void 0)return;const normalized=rawValue.trim();if(normalized.length===0)throw new PmCliError("--author must not be empty",EXIT_CODE.USAGE);return normalized}function isPathLikeInitTarget(rawValue){if(rawValue===void 0)return!1;const trimmed=rawValue.trim();return trimmed.length===0?!1:path.isAbsolute(trimmed)||/^[a-z]:/iu.test(trimmed)||trimmed.startsWith(".")||trimmed.includes("/")||trimmed.includes("\\")}function resolveInitInvocation(cwd,global2,prefixArg,workspaceArg){const normalizedWorkspace=workspaceArg?.trim();if(workspaceArg!==void 0&&normalizedWorkspace?.length===0)throw new PmCliError("--workspace must not be empty",EXIT_CODE.USAGE);if(normalizedWorkspace!==void 0){if(global2.path!==void 0||isPathLikeInitTarget(prefixArg))throw new PmCliError("--workspace cannot be combined with --pm-path/--path or a path-like positional target.",EXIT_CODE.USAGE);const workspaceRoot=path.resolve(cwd,normalizedWorkspace),pmRoot2=path.join(workspaceRoot,".agents","pm");return{pmRoot:pmRoot2,prefixArg,target:{mode:"workspace-path",tracker_root:pmRoot2,workspace_root:workspaceRoot}}}if(global2.path===void 0&&isPathLikeInitTarget(prefixArg)){const positionalTarget=path.resolve(cwd,prefixArg.trim());return{pmRoot:positionalTarget,prefixArg:void 0,target:{mode:"tracker-path",tracker_root:positionalTarget}}}const pmRoot=resolvePmRoot(cwd,global2.path),currentTrackerRoot=path.join(path.resolve(cwd),".agents","pm"),discoveredWorkspaceRoot=path.dirname(path.dirname(pmRoot)),discovery=path.resolve(pmRoot)===currentTrackerRoot?"current":"ancestor";return{pmRoot,prefixArg,target:global2.path===void 0?{mode:"workspace-discovery",tracker_root:pmRoot,workspace_root:discoveredWorkspaceRoot,discovery,requested_cwd:path.resolve(cwd),...discovery==="ancestor"?{suggested_current_tracker_root:currentTrackerRoot}:{}}:{mode:"tracker-path",tracker_root:pmRoot}}}function resolveInitPrefixInput(positionalPrefix,flaggedPrefix){if(flaggedPrefix===void 0)return positionalPrefix;if(flaggedPrefix.trim().length===0)throw new PmCliError("--id-prefix must not be empty",EXIT_CODE.USAGE);if(isPathLikeInitTarget(flaggedPrefix))throw new PmCliError(`--id-prefix accepts an item ID prefix, not a tracker path: "${flaggedPrefix}".`,EXIT_CODE.USAGE,{code:"init_id_prefix_path_like",required:"Pass the tracker path positionally or with the global --path option.",examples:[`pm init ${flaggedPrefix}`,`pm --path ${flaggedPrefix} init`]});if(positionalPrefix!==void 0&&normalizePrefix(positionalPrefix)!==normalizePrefix(flaggedPrefix))throw new PmCliError(`Conflicting id prefixes: positional "${positionalPrefix}" and --id-prefix "${flaggedPrefix}".`,EXIT_CODE.USAGE,{code:"init_id_prefix_conflict",required:"Use either the positional id prefix or --id-prefix with one value.",examples:[`pm init ${normalizePrefix(positionalPrefix)}`,`pm init --id-prefix ${normalizePrefix(flaggedPrefix)}`]});return flaggedPrefix}function normalizeInitAgentGuidanceMode(rawValue){if(rawValue===void 0)return"ask";const normalized=rawValue.trim().toLowerCase().replaceAll("-","_");if(normalized.length===0)throw new PmCliError("--agent-guidance must not be empty",EXIT_CODE.USAGE);if(normalized==="ask"||normalized==="add"||normalized==="skip"||normalized==="status")return normalized;throw new PmCliError(`Invalid --agent-guidance value "${rawValue}". Allowed: ${INIT_AGENT_GUIDANCE_MODE_VALUES.join(", ")}`,EXIT_CODE.USAGE)}function parseYesNoChoice(answer,currentDefault){const normalized=answer.trim().toLowerCase();return normalized.length===0?currentDefault:normalized==="y"||normalized==="yes"?!0:normalized==="n"||normalized==="no"?!1:currentDefault}function applyGovernancePreset(settings,preset){const knobs=GOVERNANCE_PRESET_DEFAULTS[preset];settings.governance={preset,...knobs},settings.validation.parent_reference=knobs.parent_reference,settings.validation.metadata_profile=knobs.metadata_profile}function isInstalledPackageEntry(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function summarizeInstalledPackages(result){const details=result.details;return{installed_all:details.installed_all===!0,installed_count:typeof details.installed_count=="number"?details.installed_count:0,packages:Array.isArray(details.packages)?details.packages.filter(isInstalledPackageEntry).map(entry=>({alias:typeof entry.alias=="string"?entry.alias:"",ok:entry.ok===!0})):[]}}async function registerInitTypePreset(pmRoot,settings,preset){const schema=normalizeRuntimeSchemaSettings(settings.schema),typesPath=filePathForSchemaSection(pmRoot,schema.files.types,DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.types);let nextFile=parseItemTypesFile(await readFileIfExists(typesPath));const registered=[],updated=[];for(const normalized of resolveTypePresetDefinitions(preset)){const upsert=upsertItemType(nextFile,normalized);nextFile=upsert.file,(upsert.replaced?updated:registered).push(upsert.definition.name)}return await writeWorkspaceJsonWithHistory({pmRoot,filePath:typesPath,raw:serializeItemTypesFile(nextFile),op:"init:type-preset",author:resolveAuthor(void 0,settings.author_default),lockTtlSeconds:settings.locks.ttl_seconds,lockWaitMs:settings.locks.wait_ms}),{name:preset,registered,updated,file:typesPath}}async function isLikelyWorkspaceRoot(candidate){const indicators=[".git","package.json","pnpm-workspace.yaml","AGENTS.md",path.join(".agents","pm")];for(const indicator of indicators)if(await pathExists(path.join(candidate,indicator)))return!0;return!1}async function assertExplicitTrackerPathIsNotWorkspaceRoot(pmRoot,explicitTrackerTarget,force){if(!explicitTrackerTarget||force||await pathExists(path.join(pmRoot,"settings.json"))||!await isLikelyWorkspaceRoot(pmRoot))return;const nestedTracker=path.join(pmRoot,".agents","pm");throw new PmCliError(`Refusing to initialize tracker files directly in workspace root "${pmRoot}".`,EXIT_CODE.USAGE,{code:"workspace_root_pm_path",type:"urn:pm-cli:error:workspace_root_pm_path",why:"Path-like init targets and --pm-path/--path point at the tracker storage directory itself, not the repository workspace. Point at .agents/pm, use --workspace, or pass --force if you intentionally want root-level tracker files.",examples:[`pm --pm-path ${nestedTracker} init --yes`,"pm init --yes",`pm --pm-path ${pmRoot} init --yes --force`],nextSteps:["Use --pm-path <repo>/.agents/pm for repository-local tracker storage.","Use PM_PATH only for sandboxed tests or explicit tracker roots.","Pass --force only when root-level tracker files are intentional."],recovery:{next_best_command:`pm --pm-path ${nestedTracker} init --yes`}})}async function ensureInitDirectories(pmRoot,subdirs){const createdDirs=[],warnings=[];for(const subdir of subdirs){const target=subdir?path.join(pmRoot,subdir):pmRoot,existed=await pathExists(target);await fs.mkdir(target,{recursive:!0}),existed?warnings.push(`already_exists:${target}`):createdDirs.push(target),warnings.push(...await runActiveOnWriteHooks({path:target,scope:"project",op:"init:ensure_dir"}))}return{createdDirs,warnings}}async function runInitWizard(initialPrefix,telemetryDefault){const rl=createInitReadlineInterface();try{output.write(`pm init setup wizard (agent-optimized)
|
|
2
|
+
`),output.write(`This walkthrough is non-destructive and each choice can be changed later with pm config.
|
|
3
|
+
|
|
4
|
+
`),output.write(`1/3 Item ID prefix
|
|
5
|
+
`),output.write(`Prefix is prepended to generated IDs (for example pm-a1b2).
|
|
6
|
+
`);const prefixAnswer=await rl.question(`Item ID prefix [${initialPrefix}]: `),resolvedPrefix=prefixAnswer.trim().length>0?normalizePrefix(prefixAnswer):initialPrefix;output.write(`
|
|
7
|
+
2/3 Governance preset
|
|
8
|
+
`),output.write(`minimal: no ownership blocking, progressive create defaults, close validation off.
|
|
9
|
+
`),output.write(`default: ownership conflict warnings, progressive create defaults, close validation warn.
|
|
10
|
+
`),output.write(`strict: ownership blocking, strict create defaults, close validation strict.
|
|
11
|
+
`);const presetAnswer=await rl.question("Governance preset [minimal/default/strict] (default: minimal): "),presetChoice=presetAnswer.trim().length>0?presetAnswer.trim():"minimal";let resolvedPreset="minimal";try{resolvedPreset=normalizeInitGovernancePreset(presetChoice)}catch{output.write(`Unrecognized governance preset "${presetChoice}"; using minimal.
|
|
12
|
+
`)}output.write(`
|
|
13
|
+
3/3 Project telemetry
|
|
14
|
+
`),output.write(`Telemetry helps improve reliability and can be disabled anytime via pm config.
|
|
15
|
+
`);const telemetryLabel=telemetryDefault?"Y/n":"y/N",telemetryAnswer=await rl.question(`Enable telemetry for this project? [${telemetryLabel}] `),telemetryEnabled=parseYesNoChoice(telemetryAnswer,telemetryDefault);return output.write(`
|
|
16
|
+
`),{prefix:resolvedPrefix,preset:resolvedPreset,telemetry_enabled:telemetryEnabled}}finally{rl.close()}}function normalizeInitCommandOptions(options){return{presetFromOption:normalizeInitGovernancePreset(options.preset),useDefaults:options.defaults===!0,authorFromOption:normalizeOptionalInitAuthor(options.author),installBundledPackages:options.withPackages===!0,agentGuidanceMode:normalizeInitAgentGuidanceMode(options.agentGuidance),typePreset:normalizeInitTypePreset(options.typePreset)}}function collectExistingSettingsPendingChanges(params){const pendingChanges=[];return params.prefixArg!==void 0&¶ms.settings.id_prefix!==params.normalizedPrefix&&pendingChanges.push("id_prefix"),params.presetFromOption!==void 0&¶ms.settings.governance.preset!==params.presetFromOption&&pendingChanges.push("governance_preset"),params.authorFromOption!==void 0&¶ms.settings.author_default!==params.authorFromOption&&pendingChanges.push("author_default"),pendingChanges}function assertExistingSettingsUpdateAllowed(settingsPath,pendingChanges,force,target){if(pendingChanges.length===0||force)return;const ancestorDiscovery=target.discovery==="ancestor";throw new PmCliError(`${ancestorDiscovery?`No tracker exists in ${target.requested_cwd}; pm init found an ancestor tracker at ${target.tracker_root}. `:""}Refusing to update existing tracker settings at ${settingsPath} without --force.`,EXIT_CODE.USAGE,{code:"init_existing_settings_requires_force",type:"urn:pm-cli:error:init_existing_settings_requires_force",required:`--force for ${pendingChanges.join(", ")}`,why:ancestorDiscovery?"Ancestor discovery is useful for normal commands, but init must make the selected existing workspace explicit before changing its identity or policy settings.":"pm init is safe to rerun, but changing id prefix, governance preset, or default author on an existing tracker can corrupt long-lived project context when an agent meant to initialize a sandbox path.",resolved_path:target.tracker_root,requested_path:target.requested_cwd,suggested_path:target.suggested_current_tracker_root,examples:["pm init --yes","pm init ./sandbox-pm --yes",...ancestorDiscovery?['pm init <name> --yes --pm-path "$PWD/.agents/pm"']:[],"pm init acme --yes --force"],nextSteps:[...ancestorDiscovery?['To create a new tracker in the current directory, rerun with --pm-path "$PWD/.agents/pm".']:[],"If you meant to initialize a sandbox tracker, pass a path-like positional such as ./sandbox-pm or /tmp/pm-test.","If you intentionally want to rewrite this existing tracker's init-managed settings, rerun with --force."]})}function applyExistingSettingsUpdates(params){let changed=!1;return params.prefixArg!==void 0&¶ms.settings.id_prefix!==params.normalizedPrefix&&(params.settings.id_prefix=params.normalizedPrefix,params.warnings.push(`updated:id_prefix:${params.normalizedPrefix}`),changed=!0),params.presetFromOption!==void 0&¶ms.settings.governance.preset!==params.presetFromOption&&(applyGovernancePreset(params.settings,params.presetFromOption),params.warnings.push(`updated:governance_preset:${params.presetFromOption}`),changed=!0),params.authorFromOption!==void 0&¶ms.settings.author_default!==params.authorFromOption&&(params.settings.author_default=params.authorFromOption,params.warnings.push(`updated:author_default:${params.authorFromOption}`),changed=!0),changed}async function loadExistingInitSettings(params){const settings=await readSettings(params.pmRoot);params.warnings.push(`already_exists:${params.settingsPath}`);const pendingChanges=collectExistingSettingsPendingChanges({settings,normalizedPrefix:params.normalizedPrefix,prefixArg:params.prefixArg,presetFromOption:params.normalizedOptions.presetFromOption,authorFromOption:params.normalizedOptions.authorFromOption});return assertExistingSettingsUpdateAllowed(params.settingsPath,pendingChanges,params.options.force===!0,params.target),applyExistingSettingsUpdates({settings,normalizedPrefix:params.normalizedPrefix,prefixArg:params.prefixArg,presetFromOption:params.normalizedOptions.presetFromOption,authorFromOption:params.normalizedOptions.authorFromOption,warnings:params.warnings})&&await writeSettings(params.pmRoot,settings),{settings,normalizedPrefix:params.normalizedPrefix,chosenPreset:params.normalizedOptions.presetFromOption,wizardUsed:!1}}async function createNewInitSettings(params){let normalizedPrefix=params.normalizedPrefix,chosenPreset=params.normalizedOptions.presetFromOption,chosenTelemetryEnabled,wizardUsed=!1;if(params.normalizedOptions.presetFromOption===void 0&&!params.normalizedOptions.useDefaults&&process.stdin.isTTY===!0&&process.stdout.isTTY===!0){const wizardChoices=await runInitWizard(normalizedPrefix,SETTINGS_DEFAULTS.telemetry.enabled);normalizedPrefix=wizardChoices.prefix,chosenPreset=wizardChoices.preset,chosenTelemetryEnabled=wizardChoices.telemetry_enabled,wizardUsed=!0}const effectivePreset=chosenPreset??"minimal",settings=cloneDefaults();settings.id_prefix=normalizedPrefix,applyGovernancePreset(settings,effectivePreset);const environmentAuthor=readAuthorEnvironment()?.trim()||void 0;return settings.author_default=params.normalizedOptions.authorFromOption??environmentAuthor??"",chosenTelemetryEnabled!==void 0&&(settings.telemetry.enabled=chosenTelemetryEnabled,settings.telemetry.first_run_prompt_completed=!0),await writeSettings(params.pmRoot,settings),{settings,normalizedPrefix,chosenPreset,wizardUsed}}async function resolveInitSettings(params){return params.settingsExists?await loadExistingInitSettings(params):await createNewInitSettings({pmRoot:params.pmRoot,normalizedPrefix:params.normalizedPrefix,normalizedOptions:params.normalizedOptions})}async function applyInitAgentGuidance(params){const agentGuidanceResult=await runInitAgentGuidance({pm_root:params.pmRoot,cwd:params.cwd,mode:params.agentGuidanceMode,interactive:process.stdin.isTTY===!0&&process.stdout.isTTY===!0,settings:params.settings});return params.warnings.push(...agentGuidanceResult.warnings),agentGuidanceResult.settings_changed&&await writeSettings(params.pmRoot,params.settings),{...agentGuidanceResult.summary,next_steps:agentGuidanceResult.next_steps}}async function ensureInitRuntimeSchemaFiles(pmRoot,settings){const createdDirs=[],warnings=[],runtimeSchemaScaffold=await ensureRuntimeSchemaFileScaffold(pmRoot,settings.schema);for(const createdPath of runtimeSchemaScaffold.created_paths)createdDirs.push(createdPath),warnings.push(...await runActiveOnWriteHooks({path:createdPath,scope:"project",op:"init:runtime_schema_file"}));return{createdDirs,warnings}}async function maybeRegisterInitTypePreset(params){if(params.typePreset===void 0)return;const registeredTypePreset=await registerInitTypePreset(params.pmRoot,params.settings,params.typePreset);return params.warnings.push(`registered_type_preset:${params.typePreset}`),params.warnings.push(...await runActiveOnWriteHooks({path:registeredTypePreset.file,scope:"project",op:"init:type_preset"})),registeredTypePreset}async function ensureInitTypeDirectories(params){const customTypeFolders=resolveItemTypeRegistry(params.settings,getActiveExtensionRegistrations()).folders.filter(folder=>!PM_REQUIRED_SUBDIRS.includes(folder)),scaffold=await ensureInitDirectories(params.pmRoot,customTypeFolders);params.createdDirs.push(...scaffold.createdDirs),params.warnings.push(...scaffold.warnings)}function resolveInitWorkspaceRoot(target){const trackerRoot=path.resolve(target.tracker_root),agentsRoot=path.dirname(trackerRoot);return path.basename(trackerRoot)==="pm"&&path.basename(agentsRoot)===".agents"?path.dirname(agentsRoot):target.workspace_root}async function maybeInstallInitBundledPackages(installBundledPackages,global2,pmRoot,warnings){if(!installBundledPackages)return;const packageInstallResult=await runExtension("all",{install:!0,project:!0},{...global2,path:pmRoot});warnings.push(...packageInstallResult.warnings);const installedPackages=summarizeInstalledPackages(packageInstallResult),failedAliases=installedPackages.packages.filter(entry=>!entry.ok).map(entry=>entry.alias);if(!installedPackages.installed_all||failedAliases.length>0)throw new PmCliError(`pm init --with-packages did not install all bundled packages successfully${failedAliases.length>0?`: ${failedAliases.join(", ")}`:"."}`,EXIT_CODE.GENERIC_FAILURE);return installedPackages}function buildInitNextSteps(params){const pmCommand=args=>renderPmCommand([...params.target.mode==="workspace-discovery"?[]:["--pm-path",params.target.tracker_root],...args]),nextSteps=[`Create your first item: ${pmCommand(["create","--type","Task","--title","<title>"])}`,`List active items: ${pmCommand(["list"])}`,`Get agent-friendly project context: ${pmCommand(["context"])}`];params.installBundledPackages?nextSteps.push(`Explore newly-available commands: ${pmCommand(["cal"])}, ${pmCommand(["templates"])}, ${pmCommand(["guide"])}`):(nextSteps.push(`Add optional packages for richer workflows: ${pmCommand(["install","calendar","--project"])}, ${pmCommand(["install","templates","--project"])}, ${pmCommand(["install","guide-shell","--project"])}`),nextSteps.push(`Or install everything bundled: ${pmCommand(["init","--with-packages"])} (idempotent on re-run)`)),params.registeredTypePreset&&nextSteps.push(`Inspect registered preset types: ${pmCommand(["schema","list"])}, ${pmCommand(["schema","show",params.registeredTypePreset.registered[0]??params.registeredTypePreset.updated[0]])}`),nextSteps.push("Supported agent harnesses are attributed automatically; use --author or PM_AUTHOR only when an explicit identity override is required.");for(const guidanceNextStep of params.agentGuidanceNextSteps){const scopedGuidance=params.target.mode==="workspace-discovery"?guidanceNextStep:guidanceNextStep.replace(/\bpm (?=[a-z])/g,()=>`${pmCommand([])} `);nextSteps.includes(scopedGuidance)||nextSteps.push(scopedGuidance)}return nextSteps}async function installInitMergeFence(pmRoot,gitWorkspaceRoot,warnings,install=installMergeFence){if(gitWorkspaceRoot===null){warnings.push("merge_fence_skipped:not_git_repository:run pm merge install after moving the tracker into a Git repository");return}try{const mergeFence=await install({pmRoot,workspaceRoot:gitWorkspaceRoot});mergeFence.gitattributes.changed&&warnings.push(`updated:merge_fence:${mergeFence.gitattributes.path}`)}catch(error){if(!(error instanceof PmCliError))throw error;warnings.push(`merge_fence_skipped:install_failed:${error.context.code??"pm_error"}:${error.message}:run pm merge install after resolving the Git repository error`)}}async function ensureInitWorkspaceGitignore(workspaceRoot,pmRoot,agentGuidanceMode,warnings){if(workspaceRoot==null||agentGuidanceMode==="status")return;const gitignore=await ensurePmGitignore(workspaceRoot,{pmRoot});gitignore.changed&&warnings.push(`updated:gitignore:${gitignore.path}`)}async function runInit(prefixArg,global2,options={}){const invocationCwd=global2[INIT_INVOCATION_CWD],cwd=typeof invocationCwd=="string"?invocationCwd:process.cwd(),invocation=resolveInitInvocation(cwd,global2,prefixArg,options.workspace),pmRoot=invocation.pmRoot;prefixArg=resolveInitPrefixInput(invocation.prefixArg,options.idPrefix);const normalizedOptions=normalizeInitCommandOptions(options);await assertExplicitTrackerPathIsNotWorkspaceRoot(pmRoot,invocation.target.mode==="tracker-path",options.force===!0);const createdDirs=[],warnings=[],settingsPath=path.join(pmRoot,"settings.json"),settingsExists=await pathExists(settingsPath);let settingsResolution;settingsExists&&(settingsResolution=await resolveInitSettings({pmRoot,settingsPath,settingsExists,normalizedPrefix:normalizePrefix(prefixArg),prefixArg,options,normalizedOptions,warnings,target:invocation.target}));const baseDirs=await ensureInitDirectories(pmRoot,PM_REQUIRED_SUBDIRS);createdDirs.push(...baseDirs.createdDirs),warnings.push(...baseDirs.warnings),settingsResolution??=await resolveInitSettings({pmRoot,settingsPath,settingsExists,normalizedPrefix:normalizePrefix(prefixArg),prefixArg,options,normalizedOptions,warnings,target:invocation.target});let{settings}=settingsResolution;const configuredWorkspaceRoot=resolveInitWorkspaceRoot(invocation.target),gitWorkspaceRoot=await findGitWorkspaceRoot(configuredWorkspaceRoot??path.dirname(pmRoot)),workspaceRoot=configuredWorkspaceRoot??gitWorkspaceRoot,agentGuidance=await applyInitAgentGuidance({pmRoot,cwd:workspaceRoot??cwd,agentGuidanceMode:normalizedOptions.agentGuidanceMode,settings,warnings}),schemaFiles=await ensureInitRuntimeSchemaFiles(pmRoot,settings);createdDirs.push(...schemaFiles.createdDirs),warnings.push(...schemaFiles.warnings);const registeredTypePreset=await maybeRegisterInitTypePreset({pmRoot,settings,typePreset:normalizedOptions.typePreset,warnings});registeredTypePreset&&(settings=await readSettings(pmRoot)),await ensureInitTypeDirectories({pmRoot,settings,createdDirs,warnings}),await ensureInitWorkspaceGitignore(workspaceRoot,pmRoot,normalizedOptions.agentGuidanceMode,warnings),!settingsExists&&options.mergeFence!==!1&&normalizedOptions.agentGuidanceMode!=="status"&&await installInitMergeFence(pmRoot,gitWorkspaceRoot,warnings);const installedPackages=await maybeInstallInitBundledPackages(normalizedOptions.installBundledPackages,global2,pmRoot,warnings),nextSteps=buildInitNextSteps({installBundledPackages:normalizedOptions.installBundledPackages,registeredTypePreset,agentGuidanceNextSteps:agentGuidance.next_steps,target:invocation.target});return{ok:!0,path:pmRoot,target:invocation.target,settings,created_dirs:createdDirs,warnings,governance_preset:settings.governance.preset,wizard_used:settingsResolution.wizardUsed,...registeredTypePreset?{registered_type_preset:registeredTypePreset}:{},...installedPackages?{installed_packages:installedPackages}:{},next_steps:nextSteps,agent_guidance:agentGuidance}}export{INIT_INVOCATION_CWD,_testOnly,runInit,summarizeInitResult};
|
|
3
17
|
//# sourceMappingURL=init.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
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]="fb625cd9-f8a8-56cf-88ab-abef64051497")}catch{}})();import{EXIT_CODE}from"../core/shared/constants.js";import{PmCliError}from"../core/shared/errors.js";import{readAuthorEnvironment,writeAuthorEnvironment}from"../core/shared/author.js";function applyInvocationAuthorOverride(author){if(author===void 0)return()=>{};const normalizedAuthor=author.trim();if(normalizedAuthor.length===0)throw new PmCliError("--author requires a non-empty value.",EXIT_CODE.USAGE,{code:"missing_required_argument",nextSteps:["Pass an explicit author identifier with --author <id>."]});const previousAuthor=readAuthorEnvironment();writeAuthorEnvironment(normalizedAuthor);let restored=!1;return()=>{restored||(restored=!0,previousAuthor===void 0?writeAuthorEnvironment(void 0):writeAuthorEnvironment(previousAuthor))}}export{applyInvocationAuthorOverride};
|
|
2
2
|
//# sourceMappingURL=invocation-author.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
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]="21742dd3-12b5-5285-89d8-036693459eb8")}catch{}})();import{isTerminalStatus}from"../core/item/status.js";import{EXIT_CODE}from"../core/shared/constants.js";import{PmCliError}from"../core/shared/errors.js";import{resolveWorkspaceRelationshipKindRegistry}from"./graph/assembly.js";import{collectHierarchyRelations,indexHierarchyRelations}from"./graph/hierarchy-integrity.js";const MAX_CHILD_PROJECTION_ITEMS=1e6,DEFAULT_CHILD_SAMPLE_LIMIT=20;function buildItemChildrenRollup(parentId,corpus,statusRegistry,sampleLimit=DEFAULT_CHILD_SAMPLE_LIMIT){if(!Number.isSafeInteger(sampleLimit)||sampleLimit<0)throw new PmCliError("Child projection sample limit must be a non-negative integer.",EXIT_CODE.USAGE);const normalizedParentId=parentId.trim().toLowerCase(),byStatus={},candidates=[];let scanned=0;for(const candidate of corpus){if(scanned+=1,scanned>MAX_CHILD_PROJECTION_ITEMS)throw new PmCliError(`Child projection exceeded the ${MAX_CHILD_PROJECTION_ITEMS.toLocaleString("en-US")} item safety bound.`,EXIT_CODE.GENERIC_FAILURE,{code:"child_projection_item_bound_exceeded",required:"Use an indexed or parent-filtered metadata source.",why:"Unbounded graph scans can exhaust memory in universal project stores.",nextSteps:["Build the derived item index, then retry the parent read."]});candidates.push(candidate)}const itemById=new Map(candidates.map(candidate=>[candidate.id.trim().toLowerCase(),candidate])),hierarchyIndexes=indexHierarchyRelations(collectHierarchyRelations(candidates,resolveWorkspaceRelationshipKindRegistry())),childIds=new Set(hierarchyIndexes.children_by_parent.get(normalizedParentId)??[]);for(const candidate of candidates)candidate.parent?.trim().toLowerCase()===normalizedParentId&&childIds.add(candidate.id.trim().toLowerCase());const children=[...childIds].map(childId=>itemById.get(childId));let active=0;for(const child of children){const status=child.status.trim().toLowerCase();byStatus[status]=(byStatus[status]??0)+1,isTerminalStatus(status,statusRegistry)||(active+=1)}children.sort((left,right)=>left.id.localeCompare(right.id));const sample=children.slice(0,sampleLimit).map(child=>({id:child.id,title:child.title,type:child.type,status:child.status,priority:child.priority})),truncated=children.length>sample.length,continuationLimit=sampleLimit===0?DEFAULT_CHILD_SAMPLE_LIMIT:sampleLimit;return{count:children.length,active,by_status:Object.fromEntries(Object.entries(byStatus).sort(([left],[right])=>left.localeCompare(right))),sample,sample_limit:sampleLimit,truncated,next_offset:truncated?sample.length:null,continuation:truncated?`pm list --status all --parent ${parentId} --offset ${sample.length} --limit ${continuationLimit}`:null,scanned}}export{DEFAULT_CHILD_SAMPLE_LIMIT,MAX_CHILD_PROJECTION_ITEMS,buildItemChildrenRollup};
|
|
2
2
|
//# sourceMappingURL=item-children.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
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]="e524f0ad-faad-5d89-b8f5-1283979919ad")}catch{}})();import{acquireItemMetadataDerivedIndexLock,DEFAULT_DERIVED_INDEX_MINIMUM_ITEMS,readItemMetadataDerivedIndexState,refreshItemMetadataDerivedIndex}from"../core/store/item-metadata-cache.js";import{queryItemMetadataIndex,queryLinkedFileMetadataIndex,querySimilarItemMetadataIndex}from"../core/store/item-metadata-query-index.js";export{DEFAULT_DERIVED_INDEX_MINIMUM_ITEMS,acquireItemMetadataDerivedIndexLock,queryItemMetadataIndex,queryLinkedFileMetadataIndex,querySimilarItemMetadataIndex,readItemMetadataDerivedIndexState,refreshItemMetadataDerivedIndex};
|
|
2
2
|
//# sourceMappingURL=item-metadata-index.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
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]="db3fe399-8eb8-5b17-8a9e-89eda4774234")}catch{}})();const BUILTIN_SCHEDULE_TYPES=new Set(["event","meeting","reminder"]);function itemHasSchedule(item){return BUILTIN_SCHEDULE_TYPES.has(item.type.trim().toLowerCase())||item.deadline!==void 0||(item.reminders?.length??0)>0||(item.events?.length??0)>0}function buildItemSchedule(item){if(!itemHasSchedule(item))return;const events=[...item.events??[]].sort((left,right)=>left.start_at.localeCompare(right.start_at)),primary=events[0];return{deadline:item.deadline??null,start_at:primary?.start_at??null,end_at:primary?.end_at??null,location:primary?.location??null,reminders:[...item.reminders??[]],events}}export{buildItemSchedule,itemHasSchedule};
|
|
2
2
|
//# sourceMappingURL=item-schedule.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="89fdfa7e-1a96-5cca-9fe9-3399aa86a349")}catch(e2){}})();import crypto from"node:crypto";import{constants}from"node:fs";import{isFileMissingError,readRegularFile}from"../core/fs/fs-utils.js";import{cp,lstat,mkdir,mkdtemp,open,readdir,realpath,rm,stat,writeFile}from"node:fs/promises";import{tmpdir}from"node:os";import{getActiveExtensionRegistrations,setActiveExtensionRegistrations}from"../core/extensions/index.js";import path from"node:path";import{transferMutationStdinTokenPolicy}from"../core/item/parse.js";import{EXIT_CODE,PM_REQUIRED_SUBDIRS,SETTINGS_DEFAULTS,SETTINGS_FILENAME}from"../core/shared/constants.js";import{resolveItemTypeRegistry}from"../core/item/type-registry.js";import{DEFAULT_RUNTIME_SCHEMA_FILE_PATHS,filePathForSchemaSection,loadRuntimeSchemaFromOptionalFiles,normalizeRuntimeSchemaSettings}from"../core/schema/runtime-schema.js";import{validateSettings}from"../core/store/settings-validator.js";import{resolveWorkspaceRoot}from"../core/store/paths.js";import{getSessionStatePath}from"../core/session/session-state.js";import{PmCliError}from"../core/shared/errors.js";import{stableStringify}from"../core/shared/serialization.js";import{readHistoryEntries}from"./history-read.js";import{PM_CONTEXT_INTENTS_FILE}from"./context-intent-runtime.js";import{close,create,deleteItem,get,release,restore,update,runWithActiveExtensions}from"./runtime.js";import{commitWorkspaceTransaction,validateWorkspaceTransactionIdentity}from"./workspace-transaction.js";function mergeTransactionMutationOptions(source,additions){const merged={...source,...additions};return source===void 0?merged:transferMutationStdinTokenPolicy(source,merged)}async function readItemSnapshot(pmRoot,id){try{const located=await get(id,{},{pmRoot});const item=located.item;return{id:item.id,closedAt:item.closed_at,updatedAt:item.updated_at,assignee:item.assignee,claimPrincipal:item.claim_principal}}catch(error){if(error instanceof PmCliError&&error.exitCode===EXIT_CODE.NOT_FOUND){return void 0}throw error}}function deriveStepId(mutation,index){const sanitizedTarget=mutation.id.replaceAll(/[^a-zA-Z0-9._-]/gu,"_");const fingerprint=crypto.createHash("sha256").update(stableStringify(mutation)).digest("hex").slice(0,12);return`${index+1}-${mutation.op}-${sanitizedTarget}-${fingerprint}`}function deriveOutcomeKey(mutation,index){const sanitizedTarget=mutation.id.replaceAll(/[^a-zA-Z0-9._-]/gu,"_");return`${index+1}-${mutation.op}-${sanitizedTarget}`}function bulkHistoryMarker(transactionId,stepId,phase){return`bulk-item-transaction ${transactionId} ${stepId} ${phase}`}async function isUpdateMarkerApplied(pmRoot,canonicalId,transactionId,stepId){const entries=await readHistoryEntries(path.join(pmRoot,"history",`${canonicalId}.jsonl`),canonicalId);const applyMarker=bulkHistoryMarker(transactionId,stepId,"apply");const compensateMarker=bulkHistoryMarker(transactionId,stepId,"compensate");for(let index=entries.length-1;index>=0;index-=1){const message=entries[index].message;if(message===applyMarker){return true}if(message===compensateMarker){return false}}return false}async function prepareRestoreCompensation(pmRoot,mutation){const snapshot=await readItemSnapshot(pmRoot,mutation.id);if(snapshot?.updatedAt===void 0){throw new PmCliError(`Bulk ${mutation.op} target ${mutation.id} does not exist or has no restorable version`,EXIT_CODE.NOT_FOUND)}return{target_updated_at:snapshot.updatedAt}}async function compensateByRestore(config,itemId,stepId,data){const target=data!==null&&typeof data==="object"&&!Array.isArray(data)?data.target_updated_at:void 0;if(typeof target!=="string"){return}if(await readItemSnapshot(config.pmRoot,itemId)===void 0){return}await restore(itemId,target,{force:true,author:config.author,message:bulkHistoryMarker(config.transactionId,stepId,"compensate")},{pmRoot:config.pmRoot})}function buildCreateStep(config,mutation,stepId){return{id:stepId,async inspect(){const snapshot=await readItemSnapshot(config.pmRoot,mutation.id);if(snapshot===void 0){return{state:"pending"}}return{state:"applied",result:{id:snapshot.id,op:"create"}}},async apply(){const created=await create(mergeTransactionMutationOptions(mutation.options,{author:config.author,id:mutation.id}),{pmRoot:config.pmRoot});const createdItem=created.item;return{id:String(createdItem.id),op:"create"}},async compensate(){const snapshot=await readItemSnapshot(config.pmRoot,mutation.id);if(snapshot===void 0){return}if(config.createCompensation==="delete"){await deleteItem(mutation.id,{force:true,author:config.author,message:`Compensate interrupted bulk transaction ${config.transactionId}`},{pmRoot:config.pmRoot});return}if(snapshot.closedAt!==void 0){return}await close(mutation.id,`Compensated: interrupted bulk transaction ${config.transactionId}`,{force:true,author:config.author},{pmRoot:config.pmRoot})}}}function buildUpdateStep(config,mutation,stepId){return{id:stepId,async inspect(){const snapshot=await readItemSnapshot(config.pmRoot,mutation.id);if(snapshot===void 0){return{state:"pending"}}const applied=await isUpdateMarkerApplied(config.pmRoot,snapshot.id,config.transactionId,stepId);if(!applied){return{state:"pending"}}return{state:"applied",result:{id:snapshot.id,op:"update"}}},async prepareCompensation(){return prepareRestoreCompensation(config.pmRoot,mutation)},async apply(){const updated=await update(mutation.id,mergeTransactionMutationOptions(mutation.options,{author:config.author,message:bulkHistoryMarker(config.transactionId,stepId,"apply")}),{pmRoot:config.pmRoot});const updatedItem=updated.item;return{id:String(updatedItem.id),op:"update"}},async compensate(data){await compensateByRestore(config,mutation.id,stepId,data)}}}function buildCloseStep(config,mutation,stepId){return{id:stepId,async inspect(){const snapshot=await readItemSnapshot(config.pmRoot,mutation.id);if(snapshot===void 0){return{state:"pending"}}if(await isUpdateMarkerApplied(config.pmRoot,snapshot.id,config.transactionId,stepId)){return{state:"applied",result:{id:snapshot.id,op:"close"}}}if(snapshot.closedAt===void 0){return{state:"pending"}}return{state:"applied",result:{id:snapshot.id,op:"close"}}},async prepareCompensation(){return prepareRestoreCompensation(config.pmRoot,mutation)},async apply(){const closed=await close(mutation.id,mutation.reason,mergeTransactionMutationOptions(mutation.options,{author:config.author,message:bulkHistoryMarker(config.transactionId,stepId,"apply")}),{pmRoot:config.pmRoot});const closedItem=closed.item;return{id:String(closedItem.id),op:"close"}},async compensate(data){await compensateByRestore(config,mutation.id,stepId,data)}}}function buildReleaseStep(config,mutation,stepId){return{id:stepId,async inspect(){const snapshot=await readItemSnapshot(config.pmRoot,mutation.id);if(snapshot===void 0){return{state:"pending"}}if(await isUpdateMarkerApplied(config.pmRoot,snapshot.id,config.transactionId,stepId)){return{state:"applied",result:{id:snapshot.id,op:"release"}}}if(snapshot.assignee!==void 0||snapshot.claimPrincipal!==void 0){return{state:"pending"}}return{state:"applied",result:{id:snapshot.id,op:"release"}}},async prepareCompensation(){return prepareRestoreCompensation(config.pmRoot,mutation)},async apply(){const released=await release(mutation.id,mergeTransactionMutationOptions(mutation.options,{author:config.author,message:bulkHistoryMarker(config.transactionId,stepId,"apply")}),{pmRoot:config.pmRoot});const releasedItem=released.item;return{id:String(releasedItem.id),op:"release"}},async compensate(data){await compensateByRestore(config,mutation.id,stepId,data)}}}function buildStepForMutation(config,mutation,index){const stepId=deriveStepId(mutation,index);switch(mutation.op){case"create":return buildCreateStep(config,mutation,stepId);case"update":return buildUpdateStep(config,mutation,stepId);case"close":return buildCloseStep(config,mutation,stepId);case"release":return buildReleaseStep(config,mutation,stepId)}}function assertValidBulkMutation(mutation,index){if(mutation===null||typeof mutation!=="object"||Array.isArray(mutation)){throw new TypeError(`Bulk mutation ${index+1} must be an object`)}if(!["create","update","close","release"].includes(mutation.op)){throw new TypeError(`Bulk mutation ${index+1} op must be create, update, close, or release`)}if(typeof mutation.id!=="string"||mutation.id.trim().length===0){throw new TypeError(`Bulk mutation ${index+1} requires a non-empty id`)}if(mutation.op==="close"&&(typeof mutation.reason!=="string"||mutation.reason.trim().length===0)){throw new TypeError(`Bulk close mutation ${index+1} requires a non-empty reason`)}}async function validateMutationOperation(mutation,index,run){try{return await run()}catch(error){if(error instanceof PmCliError){throw new PmCliError(error.message,error.exitCode,{...error.context,transaction_operation:{index,op:mutation.op,id:mutation.id}})}throw error}}function includePreviewPath(root,file,ownedPaths,retainedPaths){const relative=path.relative(root,file);if(["locks","runtime","search"].includes(relative.split(path.sep)[0]))return retainedPaths.some(retained=>relative===retained||relative.startsWith(`${retained}${path.sep}`)||retained.startsWith(`${relative}${path.sep}`));return relative===""||ownedPaths===void 0||ownedPaths.some(owned=>relative===owned||relative.startsWith(`${owned}${path.sep}`)||owned.startsWith(`${relative}${path.sep}`))}async function previewEntryStat(file){const entry=await lstat(file);if(entry.isSymbolicLink()){await stat(file)}else if(entry.isDirectory()||entry.isFile()){return entry}throw new TypeError(`Transaction preview requires regular files and directories: ${file}`)}async function previewFileDigest(file){const handle=await open(file,constants.O_RDONLY|constants.O_NOFOLLOW|constants.O_NONBLOCK);try{const entry=await handle.stat();if(!entry.isFile())throw new TypeError(`Transaction preview requires regular files and directories: ${file}`);const contents=crypto.createHash("sha256");if(entry.size>0){for await(const chunk of handle.createReadStream({highWaterMark:64*1024,end:entry.size-1,autoClose:false}))contents.update(chunk)}return contents.digest()}finally{await handle.close()}}async function previewTrackerFingerprint(root,ownedPaths,retainedPaths){const fingerprint=crypto.createHash("sha256");async function visit(directory){for(const name of(await readdir(directory)).sort()){const file=path.join(directory,name);if(!includePreviewPath(root,file,ownedPaths,retainedPaths))continue;if((await previewEntryStat(file)).isDirectory()){await visit(file)}else{fingerprint.update(JSON.stringify(path.relative(root,file)));fingerprint.update(await previewFileDigest(file))}}}await visit(root);return fingerprint.digest("hex")}function previewSnapshotChangedError(){return new PmCliError("Tracker changed while preparing the transaction preview; retry against stable state.",EXIT_CODE.CONFLICT,{code:"transaction_preview_snapshot_changed"})}async function isDisappearingPreviewPath(error){if(!isFileMissingError(error))return false;const file=error.path;if(typeof file!=="string")return false;const original=path.resolve(file);let candidate=original;while(true){try{const entry=await lstat(candidate);return candidate!==original&&entry.isDirectory()}catch(lookupError){if(!isFileMissingError(lookupError))return false;const parent=path.dirname(candidate);if(parent===candidate)return false;candidate=parent}}}async function readPreviewConfiguration(root,relative){const file=path.join(root,relative);try{let current=root;for(const component of relative.split(path.sep).slice(0,-1)){current=path.join(current,component);await previewEntryStat(current)}if(!(await previewEntryStat(file)).isFile())throw new TypeError(`Transaction preview requires regular files and directories: ${file}`);return await readRegularFile(file,`Transaction preview requires regular files and directories: ${file}`)}catch(error){if(await isDisappearingPreviewPath(error))return void 0;throw error}}async function resolvePreviewStorage(root,configurationRoot,registrations){const configuration=new Map;const rawSettings=await readPreviewConfiguration(root,SETTINGS_FILENAME);configuration.set(SETTINGS_FILENAME,rawSettings);let parsed;try{parsed=JSON.parse(rawSettings??"null")}catch{parsed=null}const validated=validateSettings(parsed);const settings=validated.success?validated.data:void 0;const schema=normalizeRuntimeSchemaSettings(settings?.schema);for(const[section,configuredPath]of Object.entries(schema.files)){const relative=path.relative(root,filePathForSchemaSection(root,configuredPath,DEFAULT_RUNTIME_SCHEMA_FILE_PATHS[section]));if(relative===""||!path.resolve(root,relative).startsWith(path.join(root,path.sep))){throw new PmCliError("Transaction preview requires schema files inside the selected tracker root; relocate the configured schema file before retrying.",EXIT_CODE.USAGE,{code:"transaction_preview_external_schema",field:`schema.files.${section}`})}schema.files[section]=relative;const contents=await readPreviewConfiguration(root,relative);configuration.set(relative,contents);if(contents!==void 0){const target=path.join(configurationRoot,relative);await mkdir(path.dirname(target),{recursive:true});await writeFile(target,contents)}}const sessionPath=path.relative(root,getSessionStatePath(root));configuration.set(sessionPath,await readPreviewConfiguration(root,sessionPath));const loaded=await loadRuntimeSchemaFromOptionalFiles(configurationRoot,schema);const registry=resolveItemTypeRegistry({...SETTINGS_DEFAULTS,item_types:{definitions:[...settings?.item_types?.definitions??[],...loaded.type_definitions_from_file??[]]}},registrations);const ownedPaths=resolveWorkspaceRoot(root)===root?[...PM_REQUIRED_SUBDIRS.filter(Boolean),SETTINGS_FILENAME,PM_CONTEXT_INTENTS_FILE,"transactions",...registry.folders,...configuration.keys()].map(entry=>path.normalize(entry)):void 0;const stagedSettings=settings===void 0?void 0:JSON.stringify({...parsed,schema:{...settings.schema,files:schema.files}});return{configuration,ownedPaths,stagedSettings,registryFolders:registry.folders}}async function stagePreviewTracker(sourceRoot,stagedRoot,registrations){await stat(sourceRoot);try{const resolvedRoot=await realpath(sourceRoot);const storage=await resolvePreviewStorage(resolvedRoot,path.join(path.dirname(stagedRoot),"configuration"),registrations);const retainedPaths=[...storage.configuration.keys(),...storage.registryFolders].map(entry=>path.normalize(entry));const sourceFingerprint=await previewTrackerFingerprint(resolvedRoot,storage.ownedPaths,retainedPaths);await cp(resolvedRoot,stagedRoot,{recursive:true,dereference:false,filter:async source=>{if(!includePreviewPath(resolvedRoot,source,storage.ownedPaths,retainedPaths))return false;await previewEntryStat(source);return true}});const[currentFingerprint,stagedFingerprint]=await Promise.all([previewTrackerFingerprint(resolvedRoot,storage.ownedPaths,retainedPaths),previewTrackerFingerprint(stagedRoot,storage.ownedPaths,retainedPaths)]);if(sourceFingerprint!==currentFingerprint||sourceFingerprint!==stagedFingerprint){throw previewSnapshotChangedError()}for(const[relative,contents]of storage.configuration){if(await readPreviewConfiguration(stagedRoot,relative)!==contents)throw previewSnapshotChangedError()}if(storage.stagedSettings!==void 0)await writeFile(path.join(stagedRoot,SETTINGS_FILENAME),storage.stagedSettings)}catch(error){if(await isDisappearingPreviewPath(error))throw previewSnapshotChangedError();throw error}}async function previewItemMutations(options){const identity=validateWorkspaceTransactionIdentity(options);const mutations=[...options.mutations];if(mutations.length===0)throw new TypeError("Bulk item transaction requires at least one mutation");for(const[index,mutation]of mutations.entries())assertValidBulkMutation(mutation,index);const registrations=getActiveExtensionRegistrations();const root=await mkdtemp(path.join(tmpdir(),"pm-transaction-preview-"));const stagedRoot=path.join(root,"tracker");try{await stagePreviewTracker(identity.pmRoot,stagedRoot,registrations);let validated=false;await runWithActiveExtensions({path:stagedRoot,noExtensions:true},async()=>{setActiveExtensionRegistrations(registrations);const config={...identity,pmRoot:stagedRoot,createCompensation:"close"};const steps=mutations.map((mutation,index)=>{const step=buildStepForMutation(config,mutation,index);return{...step,inspect:()=>validateMutationOperation(mutation,index,()=>step.inspect()),prepareCompensation:()=>validateMutationOperation(mutation,index,async()=>step.prepareCompensation?.()),apply:()=>validateMutationOperation(mutation,index,()=>step.apply())}});await commitWorkspaceTransaction({...identity,pmRoot:stagedRoot,steps,onTransition:({transition})=>{if(transition==="committed")validated=true}})});return{validated,state:validated?"staged_snapshot":"replayed_committed_plan",unresolved_commit_constraints:["concurrent_tracker_changes","extension_mutation_guards_and_hooks"]}}finally{await rm(root,{recursive:true,force:true})}}async function commitItemMutations(options){const mutations=[...options.mutations];if(mutations.length===0){throw new TypeError("Bulk item transaction requires at least one mutation")}for(const[index,mutation]of mutations.entries()){assertValidBulkMutation(mutation,index)}const createCompensation=options.createCompensation??"close";if(!["close","delete"].includes(createCompensation)){throw new TypeError("Bulk item transaction createCompensation must be close or delete")}const stepConfig={pmRoot:options.pmRoot,author:options.author,transactionId:options.transactionId,createCompensation};const committed=await commitWorkspaceTransaction({pmRoot:options.pmRoot,transactionId:options.transactionId,author:options.author,steps:mutations.map((mutation,index)=>buildStepForMutation(stepConfig,mutation,index)),...options.lockTtlSeconds===void 0?{}:{lockTtlSeconds:options.lockTtlSeconds},...options.lockWaitMs===void 0?{}:{lockWaitMs:options.lockWaitMs},...options.onTransition===void 0?{}:{onTransition:options.onTransition}});const results={};for(const[index,mutation]of mutations.entries()){const stepId=deriveStepId(mutation,index);const value=committed.results[stepId];results[deriveOutcomeKey(mutation,index)]=value}return{transactionId:committed.transactionId,status:"committed",recovered:committed.recovered,results}}function buildItemCompletionMutations(options){const mutations=[];if(options.evidence!==void 0&&Object.keys(options.evidence).length>0){mutations.push({op:"update",id:options.id,options:options.evidence})}mutations.push({op:"close",id:options.id,reason:options.reason,...options.closeOptions===void 0?{}:{options:options.closeOptions}},{op:"release",id:options.id,...options.releaseOptions===void 0?{}:{options:options.releaseOptions}});return mutations}function commitItemCompletion(options){return commitItemMutations({pmRoot:options.pmRoot,transactionId:options.transactionId,author:options.author,mutations:buildItemCompletionMutations(options),...options.lockTtlSeconds===void 0?{}:{lockTtlSeconds:options.lockTtlSeconds},...options.lockWaitMs===void 0?{}:{lockWaitMs:options.lockWaitMs},...options.onTransition===void 0?{}:{onTransition:options.onTransition}})}const _testOnlyItemTransaction={buildCreateStep,bulkHistoryMarker,compensateByRestore,deriveStepId,isUpdateMarkerApplied,readItemSnapshot};export{_testOnlyItemTransaction,buildItemCompletionMutations,commitItemCompletion,commitItemMutations,previewItemMutations};
|
|
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]="2f198564-f7a1-5a58-a046-c1003e2fbc6c")}catch{}})();import crypto from"node:crypto";import{constants}from"node:fs";import{isFileMissingError,readRegularFile}from"../core/fs/fs-utils.js";import{cp,lstat,mkdir,mkdtemp,open,readdir,realpath,rm,stat,writeFile}from"node:fs/promises";import{tmpdir}from"node:os";import{getActiveExtensionRegistrations,setActiveExtensionRegistrations}from"../core/extensions/index.js";import path from"node:path";import{transferMutationStdinTokenPolicy}from"../core/item/parse.js";import{EXIT_CODE,PM_REQUIRED_SUBDIRS,SETTINGS_DEFAULTS,SETTINGS_FILENAME}from"../core/shared/constants.js";import{resolveItemTypeRegistry}from"../core/item/type-registry.js";import{DEFAULT_RUNTIME_SCHEMA_FILE_PATHS,filePathForSchemaSection,loadRuntimeSchemaFromOptionalFiles,normalizeRuntimeSchemaSettings}from"../core/schema/runtime-schema.js";import{validateSettings}from"../core/store/settings-validator.js";import{resolveWorkspaceRoot}from"../core/store/paths.js";import{getSessionStatePath}from"../core/session/session-state.js";import{PmCliError}from"../core/shared/errors.js";import{stableStringify}from"../core/shared/serialization.js";import{readHistoryEntries}from"./history-read.js";import{PM_CONTEXT_INTENTS_FILE}from"./context-intent-runtime.js";import{close,create,deleteItem,get,release,restore,update,runWithActiveExtensions}from"./runtime.js";import{commitWorkspaceTransaction,validateWorkspaceTransactionIdentity}from"./workspace-transaction.js";function mergeTransactionMutationOptions(source,additions){const merged={...source,...additions};return source===void 0?merged:transferMutationStdinTokenPolicy(source,merged)}async function readItemSnapshot(pmRoot,id){try{const item=(await get(id,{},{pmRoot})).item;return{id:item.id,closedAt:item.closed_at,updatedAt:item.updated_at,assignee:item.assignee,claimPrincipal:item.claim_principal}}catch(error){if(error instanceof PmCliError&&error.exitCode===EXIT_CODE.NOT_FOUND)return;throw error}}function deriveStepId(mutation,index){const sanitizedTarget=mutation.id.replaceAll(/[^a-zA-Z0-9._-]/gu,"_"),fingerprint=crypto.createHash("sha256").update(stableStringify(mutation)).digest("hex").slice(0,12);return`${index+1}-${mutation.op}-${sanitizedTarget}-${fingerprint}`}function deriveOutcomeKey(mutation,index){const sanitizedTarget=mutation.id.replaceAll(/[^a-zA-Z0-9._-]/gu,"_");return`${index+1}-${mutation.op}-${sanitizedTarget}`}function bulkHistoryMarker(transactionId,stepId,phase){return`bulk-item-transaction ${transactionId} ${stepId} ${phase}`}async function isUpdateMarkerApplied(pmRoot,canonicalId,transactionId,stepId){const entries=await readHistoryEntries(path.join(pmRoot,"history",`${canonicalId}.jsonl`),canonicalId),applyMarker=bulkHistoryMarker(transactionId,stepId,"apply"),compensateMarker=bulkHistoryMarker(transactionId,stepId,"compensate");for(let index=entries.length-1;index>=0;index-=1){const message=entries[index].message;if(message===applyMarker)return!0;if(message===compensateMarker)return!1}return!1}async function prepareRestoreCompensation(pmRoot,mutation){const snapshot=await readItemSnapshot(pmRoot,mutation.id);if(snapshot?.updatedAt===void 0)throw new PmCliError(`Bulk ${mutation.op} target ${mutation.id} does not exist or has no restorable version`,EXIT_CODE.NOT_FOUND);return{target_updated_at:snapshot.updatedAt}}async function compensateByRestore(config,itemId,stepId,data){const target=data!==null&&typeof data=="object"&&!Array.isArray(data)?data.target_updated_at:void 0;typeof target=="string"&&await readItemSnapshot(config.pmRoot,itemId)!==void 0&&await restore(itemId,target,{force:!0,author:config.author,message:bulkHistoryMarker(config.transactionId,stepId,"compensate")},{pmRoot:config.pmRoot})}function buildCreateStep(config,mutation,stepId){return{id:stepId,async inspect(){const snapshot=await readItemSnapshot(config.pmRoot,mutation.id);return snapshot===void 0?{state:"pending"}:{state:"applied",result:{id:snapshot.id,op:"create"}}},async apply(){const createdItem=(await create(mergeTransactionMutationOptions(mutation.options,{author:config.author,id:mutation.id}),{pmRoot:config.pmRoot})).item;return{id:String(createdItem.id),op:"create"}},async compensate(){const snapshot=await readItemSnapshot(config.pmRoot,mutation.id);if(snapshot!==void 0){if(config.createCompensation==="delete"){await deleteItem(mutation.id,{force:!0,author:config.author,message:`Compensate interrupted bulk transaction ${config.transactionId}`},{pmRoot:config.pmRoot});return}snapshot.closedAt===void 0&&await close(mutation.id,`Compensated: interrupted bulk transaction ${config.transactionId}`,{force:!0,author:config.author},{pmRoot:config.pmRoot})}}}}function buildUpdateStep(config,mutation,stepId){return{id:stepId,async inspect(){const snapshot=await readItemSnapshot(config.pmRoot,mutation.id);return snapshot===void 0?{state:"pending"}:await isUpdateMarkerApplied(config.pmRoot,snapshot.id,config.transactionId,stepId)?{state:"applied",result:{id:snapshot.id,op:"update"}}:{state:"pending"}},async prepareCompensation(){return prepareRestoreCompensation(config.pmRoot,mutation)},async apply(){const updatedItem=(await update(mutation.id,mergeTransactionMutationOptions(mutation.options,{author:config.author,message:bulkHistoryMarker(config.transactionId,stepId,"apply")}),{pmRoot:config.pmRoot})).item;return{id:String(updatedItem.id),op:"update"}},async compensate(data){await compensateByRestore(config,mutation.id,stepId,data)}}}function buildCloseStep(config,mutation,stepId){return{id:stepId,async inspect(){const snapshot=await readItemSnapshot(config.pmRoot,mutation.id);return snapshot===void 0?{state:"pending"}:await isUpdateMarkerApplied(config.pmRoot,snapshot.id,config.transactionId,stepId)?{state:"applied",result:{id:snapshot.id,op:"close"}}:snapshot.closedAt===void 0?{state:"pending"}:{state:"applied",result:{id:snapshot.id,op:"close"}}},async prepareCompensation(){return prepareRestoreCompensation(config.pmRoot,mutation)},async apply(){const closedItem=(await close(mutation.id,mutation.reason,mergeTransactionMutationOptions(mutation.options,{author:config.author,message:bulkHistoryMarker(config.transactionId,stepId,"apply")}),{pmRoot:config.pmRoot})).item;return{id:String(closedItem.id),op:"close"}},async compensate(data){await compensateByRestore(config,mutation.id,stepId,data)}}}function buildReleaseStep(config,mutation,stepId){return{id:stepId,async inspect(){const snapshot=await readItemSnapshot(config.pmRoot,mutation.id);return snapshot===void 0?{state:"pending"}:await isUpdateMarkerApplied(config.pmRoot,snapshot.id,config.transactionId,stepId)?{state:"applied",result:{id:snapshot.id,op:"release"}}:snapshot.assignee!==void 0||snapshot.claimPrincipal!==void 0?{state:"pending"}:{state:"applied",result:{id:snapshot.id,op:"release"}}},async prepareCompensation(){return prepareRestoreCompensation(config.pmRoot,mutation)},async apply(){const releasedItem=(await release(mutation.id,mergeTransactionMutationOptions(mutation.options,{author:config.author,message:bulkHistoryMarker(config.transactionId,stepId,"apply")}),{pmRoot:config.pmRoot})).item;return{id:String(releasedItem.id),op:"release"}},async compensate(data){await compensateByRestore(config,mutation.id,stepId,data)}}}function buildStepForMutation(config,mutation,index){const stepId=deriveStepId(mutation,index);switch(mutation.op){case"create":return buildCreateStep(config,mutation,stepId);case"update":return buildUpdateStep(config,mutation,stepId);case"close":return buildCloseStep(config,mutation,stepId);case"release":return buildReleaseStep(config,mutation,stepId)}}function assertValidBulkMutation(mutation,index){if(mutation===null||typeof mutation!="object"||Array.isArray(mutation))throw new TypeError(`Bulk mutation ${index+1} must be an object`);if(!["create","update","close","release"].includes(mutation.op))throw new TypeError(`Bulk mutation ${index+1} op must be create, update, close, or release`);if(typeof mutation.id!="string"||mutation.id.trim().length===0)throw new TypeError(`Bulk mutation ${index+1} requires a non-empty id`);if(mutation.op==="close"&&(typeof mutation.reason!="string"||mutation.reason.trim().length===0))throw new TypeError(`Bulk close mutation ${index+1} requires a non-empty reason`)}async function validateMutationOperation(mutation,index,run){try{return await run()}catch(error){throw error instanceof PmCliError?new PmCliError(error.message,error.exitCode,{...error.context,transaction_operation:{index,op:mutation.op,id:mutation.id}}):error}}function includePreviewPath(root,file,ownedPaths,retainedPaths){const relative=path.relative(root,file);return["locks","runtime","search"].includes(relative.split(path.sep)[0])?retainedPaths.some(retained=>relative===retained||relative.startsWith(`${retained}${path.sep}`)||retained.startsWith(`${relative}${path.sep}`)):relative===""||ownedPaths===void 0||ownedPaths.some(owned=>relative===owned||relative.startsWith(`${owned}${path.sep}`)||owned.startsWith(`${relative}${path.sep}`))}async function previewEntryStat(file){const entry=await lstat(file);if(entry.isSymbolicLink())await stat(file);else if(entry.isDirectory()||entry.isFile())return entry;throw new TypeError(`Transaction preview requires regular files and directories: ${file}`)}async function previewFileDigest(file){const handle=await open(file,constants.O_RDONLY|constants.O_NOFOLLOW|constants.O_NONBLOCK);try{const entry=await handle.stat();if(!entry.isFile())throw new TypeError(`Transaction preview requires regular files and directories: ${file}`);const contents=crypto.createHash("sha256");if(entry.size>0)for await(const chunk of handle.createReadStream({highWaterMark:64*1024,end:entry.size-1,autoClose:!1}))contents.update(chunk);return contents.digest()}finally{await handle.close()}}async function previewTrackerFingerprint(root,ownedPaths,retainedPaths){const fingerprint=crypto.createHash("sha256");async function visit(directory){for(const name of(await readdir(directory)).sort()){const file=path.join(directory,name);includePreviewPath(root,file,ownedPaths,retainedPaths)&&((await previewEntryStat(file)).isDirectory()?await visit(file):(fingerprint.update(JSON.stringify(path.relative(root,file))),fingerprint.update(await previewFileDigest(file))))}}return await visit(root),fingerprint.digest("hex")}function previewSnapshotChangedError(){return new PmCliError("Tracker changed while preparing the transaction preview; retry against stable state.",EXIT_CODE.CONFLICT,{code:"transaction_preview_snapshot_changed"})}async function isDisappearingPreviewPath(error){if(!isFileMissingError(error))return!1;const file=error.path;if(typeof file!="string")return!1;const original=path.resolve(file);let candidate=original;for(;;)try{const entry=await lstat(candidate);return candidate!==original&&entry.isDirectory()}catch(lookupError){if(!isFileMissingError(lookupError))return!1;const parent=path.dirname(candidate);if(parent===candidate)return!1;candidate=parent}}async function readPreviewConfiguration(root,relative){const file=path.join(root,relative);try{let current=root;for(const component of relative.split(path.sep).slice(0,-1))current=path.join(current,component),await previewEntryStat(current);if(!(await previewEntryStat(file)).isFile())throw new TypeError(`Transaction preview requires regular files and directories: ${file}`);return await readRegularFile(file,`Transaction preview requires regular files and directories: ${file}`)}catch(error){if(await isDisappearingPreviewPath(error))return;throw error}}async function resolvePreviewStorage(root,configurationRoot,registrations){const configuration=new Map,rawSettings=await readPreviewConfiguration(root,SETTINGS_FILENAME);configuration.set(SETTINGS_FILENAME,rawSettings);let parsed;try{parsed=JSON.parse(rawSettings??"null")}catch{parsed=null}const validated=validateSettings(parsed),settings=validated.success?validated.data:void 0,schema=normalizeRuntimeSchemaSettings(settings?.schema);for(const[section,configuredPath]of Object.entries(schema.files)){const relative=path.relative(root,filePathForSchemaSection(root,configuredPath,DEFAULT_RUNTIME_SCHEMA_FILE_PATHS[section]));if(relative===""||!path.resolve(root,relative).startsWith(path.join(root,path.sep)))throw new PmCliError("Transaction preview requires schema files inside the selected tracker root; relocate the configured schema file before retrying.",EXIT_CODE.USAGE,{code:"transaction_preview_external_schema",field:`schema.files.${section}`});schema.files[section]=relative;const contents=await readPreviewConfiguration(root,relative);if(configuration.set(relative,contents),contents!==void 0){const target=path.join(configurationRoot,relative);await mkdir(path.dirname(target),{recursive:!0}),await writeFile(target,contents)}}const sessionPath=path.relative(root,getSessionStatePath(root));configuration.set(sessionPath,await readPreviewConfiguration(root,sessionPath));const loaded=await loadRuntimeSchemaFromOptionalFiles(configurationRoot,schema),registry=resolveItemTypeRegistry({...SETTINGS_DEFAULTS,item_types:{definitions:[...settings?.item_types?.definitions??[],...loaded.type_definitions_from_file??[]]}},registrations),ownedPaths=resolveWorkspaceRoot(root)===root?[...PM_REQUIRED_SUBDIRS.filter(Boolean),SETTINGS_FILENAME,PM_CONTEXT_INTENTS_FILE,"transactions",...registry.folders,...configuration.keys()].map(entry=>path.normalize(entry)):void 0,stagedSettings=settings===void 0?void 0:JSON.stringify({...parsed,schema:{...settings.schema,files:schema.files}});return{configuration,ownedPaths,stagedSettings,registryFolders:registry.folders}}async function stagePreviewTracker(sourceRoot,stagedRoot,registrations){await stat(sourceRoot);try{const resolvedRoot=await realpath(sourceRoot),storage=await resolvePreviewStorage(resolvedRoot,path.join(path.dirname(stagedRoot),"configuration"),registrations),retainedPaths=[...storage.configuration.keys(),...storage.registryFolders].map(entry=>path.normalize(entry)),sourceFingerprint=await previewTrackerFingerprint(resolvedRoot,storage.ownedPaths,retainedPaths);await cp(resolvedRoot,stagedRoot,{recursive:!0,dereference:!1,filter:async source=>includePreviewPath(resolvedRoot,source,storage.ownedPaths,retainedPaths)?(await previewEntryStat(source),!0):!1});const[currentFingerprint,stagedFingerprint]=await Promise.all([previewTrackerFingerprint(resolvedRoot,storage.ownedPaths,retainedPaths),previewTrackerFingerprint(stagedRoot,storage.ownedPaths,retainedPaths)]);if(sourceFingerprint!==currentFingerprint||sourceFingerprint!==stagedFingerprint)throw previewSnapshotChangedError();for(const[relative,contents]of storage.configuration)if(await readPreviewConfiguration(stagedRoot,relative)!==contents)throw previewSnapshotChangedError();storage.stagedSettings!==void 0&&await writeFile(path.join(stagedRoot,SETTINGS_FILENAME),storage.stagedSettings)}catch(error){throw await isDisappearingPreviewPath(error)?previewSnapshotChangedError():error}}async function previewItemMutations(options){const identity=validateWorkspaceTransactionIdentity(options),mutations=[...options.mutations];if(mutations.length===0)throw new TypeError("Bulk item transaction requires at least one mutation");for(const[index,mutation]of mutations.entries())assertValidBulkMutation(mutation,index);const registrations=getActiveExtensionRegistrations(),root=await mkdtemp(path.join(tmpdir(),"pm-transaction-preview-")),stagedRoot=path.join(root,"tracker");try{await stagePreviewTracker(identity.pmRoot,stagedRoot,registrations);let validated=!1;return await runWithActiveExtensions({path:stagedRoot,noExtensions:!0},async()=>{setActiveExtensionRegistrations(registrations);const config={...identity,pmRoot:stagedRoot,createCompensation:"close"},steps=mutations.map((mutation,index)=>{const step=buildStepForMutation(config,mutation,index);return{...step,inspect:()=>validateMutationOperation(mutation,index,()=>step.inspect()),prepareCompensation:()=>validateMutationOperation(mutation,index,async()=>step.prepareCompensation?.()),apply:()=>validateMutationOperation(mutation,index,()=>step.apply())}});await commitWorkspaceTransaction({...identity,pmRoot:stagedRoot,steps,onTransition:({transition})=>{transition==="committed"&&(validated=!0)}})}),{validated,state:validated?"staged_snapshot":"replayed_committed_plan",unresolved_commit_constraints:["concurrent_tracker_changes","extension_mutation_guards_and_hooks"]}}finally{await rm(root,{recursive:!0,force:!0})}}async function commitItemMutations(options){const mutations=[...options.mutations];if(mutations.length===0)throw new TypeError("Bulk item transaction requires at least one mutation");for(const[index,mutation]of mutations.entries())assertValidBulkMutation(mutation,index);const createCompensation=options.createCompensation??"close";if(!["close","delete"].includes(createCompensation))throw new TypeError("Bulk item transaction createCompensation must be close or delete");const stepConfig={pmRoot:options.pmRoot,author:options.author,transactionId:options.transactionId,createCompensation},committed=await commitWorkspaceTransaction({pmRoot:options.pmRoot,transactionId:options.transactionId,author:options.author,steps:mutations.map((mutation,index)=>buildStepForMutation(stepConfig,mutation,index)),...options.lockTtlSeconds===void 0?{}:{lockTtlSeconds:options.lockTtlSeconds},...options.lockWaitMs===void 0?{}:{lockWaitMs:options.lockWaitMs},...options.onTransition===void 0?{}:{onTransition:options.onTransition}}),results={};for(const[index,mutation]of mutations.entries()){const stepId=deriveStepId(mutation,index),value=committed.results[stepId];results[deriveOutcomeKey(mutation,index)]=value}return{transactionId:committed.transactionId,status:"committed",recovered:committed.recovered,results}}function buildItemCompletionMutations(options){const mutations=[];return options.evidence!==void 0&&Object.keys(options.evidence).length>0&&mutations.push({op:"update",id:options.id,options:options.evidence}),mutations.push({op:"close",id:options.id,reason:options.reason,...options.closeOptions===void 0?{}:{options:options.closeOptions}},{op:"release",id:options.id,...options.releaseOptions===void 0?{}:{options:options.releaseOptions}}),mutations}function commitItemCompletion(options){return commitItemMutations({pmRoot:options.pmRoot,transactionId:options.transactionId,author:options.author,mutations:buildItemCompletionMutations(options),...options.lockTtlSeconds===void 0?{}:{lockTtlSeconds:options.lockTtlSeconds},...options.lockWaitMs===void 0?{}:{lockWaitMs:options.lockWaitMs},...options.onTransition===void 0?{}:{onTransition:options.onTransition}})}const _testOnlyItemTransaction={buildCreateStep,bulkHistoryMarker,compensateByRestore,deriveStepId,isUpdateMarkerApplied,readItemSnapshot};export{_testOnlyItemTransaction,buildItemCompletionMutations,commitItemCompletion,commitItemMutations,previewItemMutations};
|
|
2
2
|
//# sourceMappingURL=item-transaction.js.map
|