@unbrained/pm-cli 2026.9.7 → 2026.9.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/pm-developer/SKILL.md +12 -4
- package/.agents/skills/pm-developer/references/MULTI_AGENT_MERGE.md +19 -10
- package/.agents/skills/pm-extensions/SKILL.md +6 -0
- package/.agents/skills/pm-sdk/SKILL.md +11 -2
- package/.agents/skills/pm-user/SKILL.md +7 -2
- package/.agents/skills/pm-user/references/ECOSYSTEM_PLANNING.md +95 -0
- package/.claude-plugin/marketplace.json +2 -2
- package/CHANGELOG.md +231 -182
- package/dist/cli/after-command-context-usage.js +1 -48
- package/dist/cli/argv-utils.js +1 -40
- package/dist/cli/bootstrap-args.js +1 -9
- package/dist/cli/bundle-integrity.js +2 -110
- package/dist/cli/commander-usage.js +11 -771
- package/dist/cli/commands/activity.js +1 -9
- package/dist/cli/commands/aggregate.js +1 -5
- package/dist/cli/commands/append.js +1 -5
- package/dist/cli/commands/claim.js +1 -5
- package/dist/cli/commands/close-many.js +1 -5
- package/dist/cli/commands/close.js +1 -9
- package/dist/cli/commands/comments.js +1 -5
- package/dist/cli/commands/config.js +1 -9
- package/dist/cli/commands/context.js +1 -9
- package/dist/cli/commands/contracts.js +1 -5
- package/dist/cli/commands/copy.js +1 -9
- package/dist/cli/commands/create.js +1 -9
- package/dist/cli/commands/delete.js +1 -9
- package/dist/cli/commands/deps.js +1 -9
- package/dist/cli/commands/docs.js +1 -9
- package/dist/cli/commands/duplicates.js +1 -9
- package/dist/cli/commands/eval.js +1 -9
- package/dist/cli/commands/extension/describe.js +1 -5
- package/dist/cli/commands/extension/scaffold.js +1 -5
- package/dist/cli/commands/extension/shared.js +1 -5
- package/dist/cli/commands/extension.js +1 -9
- package/dist/cli/commands/files.js +1 -9
- package/dist/cli/commands/focus.js +1 -9
- package/dist/cli/commands/gc.js +1 -9
- package/dist/cli/commands/get.js +1 -9
- package/dist/cli/commands/graph.js +1 -10
- package/dist/cli/commands/health.js +1 -9
- package/dist/cli/commands/history-compact.js +1 -10
- package/dist/cli/commands/history-redact.js +1 -11
- package/dist/cli/commands/history-repair.js +1 -10
- package/dist/cli/commands/history.js +1 -5
- package/dist/cli/commands/index.js +1 -58
- package/dist/cli/commands/init-agent-guidance.js +1 -9
- package/dist/cli/commands/init.js +1 -9
- package/dist/cli/commands/learnings.js +1 -5
- package/dist/cli/commands/lifecycle-transitions.js +1 -5
- package/dist/cli/commands/list.js +1 -9
- package/dist/cli/commands/merge.js +1 -11
- package/dist/cli/commands/next.js +1 -9
- package/dist/cli/commands/notes.js +1 -5
- package/dist/cli/commands/plan.js +1 -9
- package/dist/cli/commands/profile.js +1 -9
- package/dist/cli/commands/restore.js +1 -9
- package/dist/cli/commands/scheduling-shortcuts.js +1 -9
- package/dist/cli/commands/schema.js +1 -10
- package/dist/cli/commands/search.js +1 -9
- package/dist/cli/commands/stats.js +1 -9
- package/dist/cli/commands/telemetry.js +1 -9
- package/dist/cli/commands/test-all.js +1 -9
- package/dist/cli/commands/test-runs.js +1 -9
- package/dist/cli/commands/test.js +1 -9
- package/dist/cli/commands/update-many.js +1 -5
- package/dist/cli/commands/update.js +1 -9
- package/dist/cli/commands/upgrade.js +1 -5
- package/dist/cli/commands/validate.js +1 -15
- package/dist/cli/context-intent-invocation.js +1 -20
- package/dist/cli/description-stdin.js +1 -17
- package/dist/cli/error-guidance.js +1 -1353
- package/dist/cli/extension-command-help.js +5 -636
- package/dist/cli/extension-command-options.js +1 -427
- package/dist/cli/extension-recovery.js +1 -126
- package/dist/cli/help-content.js +2 -1001
- package/dist/cli/help-json-payload.js +4 -570
- package/dist/cli/main.d.ts +4 -0
- package/dist/cli/main.js +5 -2573
- package/dist/cli/migration-gates.js +1 -289
- package/dist/cli/public.js +1 -20
- package/dist/cli/register-annotations.js +1 -270
- package/dist/cli/register-assurance.js +1 -62
- package/dist/cli/register-files-lookup.js +1 -56
- package/dist/cli/register-history-activity.d.ts +8 -0
- package/dist/cli/register-history-activity.js +2 -0
- package/dist/cli/register-history-author.js +1 -38
- package/dist/cli/register-history-maintenance.d.ts +9 -0
- package/dist/cli/register-history-maintenance.js +2 -0
- package/dist/cli/register-list-query.js +10 -943
- package/dist/cli/register-mutation-options.js +1 -9
- package/dist/cli/register-mutation.d.ts +0 -5
- package/dist/cli/register-mutation.js +19 -1893
- package/dist/cli/register-operations.js +1 -920
- package/dist/cli/register-setup.js +1 -716
- package/dist/cli/register-structured-mutation.js +1 -196
- package/dist/cli/registration-helpers.js +1 -5
- package/dist/cli/runtime-compatibility-boundary.js +4 -42
- package/dist/cli/schema-registration-helpers.js +1 -73
- package/dist/cli/search-refresh.js +1 -13
- package/dist/cli/stats-analytics-json.js +1 -68
- package/dist/cli/telemetry-flush.js +1 -10
- package/dist/cli-bundle/bundle-manifest.json +164 -156
- package/dist/cli-bundle/chunks/{chunk-NPN5I67J.js → chunk-3IPRM75M.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-4VL5P22L.js +2 -0
- package/dist/cli-bundle/chunks/chunk-AAFBV3U3.js +29 -0
- package/dist/cli-bundle/chunks/chunk-D3YVILJJ.js +20 -0
- package/dist/cli-bundle/chunks/{chunk-WYRZZ5ZE.js → chunk-DEZPZOQ7.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-ECBLPN7B.js +3 -0
- package/dist/cli-bundle/chunks/chunk-J6ERHBV2.js +235 -0
- package/dist/cli-bundle/chunks/chunk-JUNJ5EKI.js +2 -0
- package/dist/cli-bundle/chunks/chunk-L5RCDKQ2.js +2 -0
- package/dist/cli-bundle/chunks/chunk-NSAPNEYH.js +2 -0
- package/dist/cli-bundle/chunks/chunk-OHNLSGGV.js +79 -0
- package/dist/cli-bundle/chunks/chunk-WQKMSFBV.js +5 -0
- package/dist/cli-bundle/chunks/{chunk-BAX2BYUW.js → chunk-XZ6T7YPP.js} +256 -150
- package/dist/cli-bundle/chunks/{chunk-JT6XF6GE.js → chunk-Z3XVXUVF.js} +4 -4
- package/dist/cli-bundle/chunks/register-list-query-UIHRCS6D.js +11 -0
- package/dist/cli-bundle/chunks/register-mutation-WHWMGRVX.js +20 -0
- package/dist/cli-bundle/chunks/register-operations-64YZYTC5.js +2 -0
- package/dist/cli-bundle/chunks/register-setup-PERI45EM.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-2W4XIYOB.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-2WSBXIGF.js +12 -0
- package/dist/cli-bundle/focused-chunks/chunk-5FHTCOHS.js +3 -0
- package/dist/cli-bundle/focused-chunks/chunk-7N6DOREF.js +26 -0
- package/dist/cli-bundle/focused-chunks/{chunk-3BZEOXLT.js → chunk-7PC4R5QB.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-BUCJUZVG.js +6 -0
- package/dist/cli-bundle/focused-chunks/chunk-FE3BABLJ.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-IWITF53W.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-OQUGRHKV.js +10 -0
- package/dist/cli-bundle/focused-chunks/{chunk-M6PBRFSH.js → chunk-PNKIANFZ.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-LIJIA4TY.js → chunk-QQQ4SAUO.js} +3 -3
- package/dist/cli-bundle/focused-chunks/chunk-TTYXF5YD.js +177 -0
- package/dist/cli-bundle/focused-chunks/chunk-XNR3DM6J.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-XSS3APUF.js +9 -0
- package/dist/cli-bundle/focused-chunks/chunk-YCDQ2N23.js +8 -0
- package/dist/cli-bundle/focused-chunks/chunk-YJUXGS57.js +20 -0
- package/dist/cli-bundle/focused-chunks/chunk-ZTCE4UO6.js +58 -0
- package/dist/cli-bundle/main.js +20 -20
- package/dist/cli-bundle/sdk-authoring.js +1 -1
- package/dist/cli-bundle/sdk-contracts.js +2 -2
- package/dist/cli-bundle/sdk-core.js +37 -37
- package/dist/cli-bundle/sdk-governance.js +1 -1
- package/dist/cli-bundle/sdk-graph.js +1 -1
- package/dist/cli-bundle/sdk-merge.js +42 -42
- package/dist/cli-bundle/sdk-query.js +1 -1
- package/dist/cli-bundle/sdk-runtime.js +1 -1
- package/dist/cli-bundle/sdk-testing.js +1 -1
- package/dist/cli-bundle/sdk.js +11 -11
- package/dist/cli.js +1 -104
- package/dist/core/checkpoint/checkpoint-gc.js +1 -169
- package/dist/core/checkpoint/mutation-checkpoint.js +2 -133
- package/dist/core/config/nested-settings.js +1 -534
- package/dist/core/config/positional-value.js +1 -109
- package/dist/core/diagnostics/remediation.js +1 -506
- package/dist/core/extensions/activation-summary-markdown.js +2 -145
- package/dist/core/extensions/activation-summary.js +1 -92
- package/dist/core/extensions/activation-transaction.js +1 -46
- package/dist/core/extensions/capability-usage.js +1 -173
- package/dist/core/extensions/command-hook-context.js +1 -13
- package/dist/core/extensions/command-metadata-contract.js +1 -22
- package/dist/core/extensions/command-visibility-tier.js +1 -29
- package/dist/core/extensions/contribution-inventory.js +1 -173
- package/dist/core/extensions/exporter-output-contract.js +1 -66
- package/dist/core/extensions/extension-candidate.js +1 -18
- package/dist/core/extensions/extension-capability-aliases.js +1 -158
- package/dist/core/extensions/extension-hook-runtime.js +1 -699
- package/dist/core/extensions/extension-policy.js +1 -599
- package/dist/core/extensions/extension-registries.js +1 -62
- package/dist/core/extensions/extension-runtime-helpers.js +1 -33
- package/dist/core/extensions/extension-types.js +1 -102
- package/dist/core/extensions/flag-definition-validation.js +1 -52
- package/dist/core/extensions/flag-value-types.js +1 -64
- package/dist/core/extensions/index.js +1 -526
- package/dist/core/extensions/item-field-types.js +1 -39
- package/dist/core/extensions/item-fields.js +1 -261
- package/dist/core/extensions/loader.js +1 -2223
- package/dist/core/extensions/manifest-schema.js +1 -69
- package/dist/core/extensions/module-graph-snapshot.js +1 -33
- package/dist/core/extensions/preflight-ownership.js +1 -41
- package/dist/core/extensions/registration-validation.js +1 -82
- package/dist/core/extensions/registration-values.js +1 -209
- package/dist/core/extensions/reserved-host-flags.js +1 -36
- package/dist/core/extensions/runtime-registrations.js +1 -67
- package/dist/core/extensions/service-ownership.js +1 -19
- package/dist/core/extensions/version-compat.js +1 -216
- package/dist/core/fs/fs-utils.js +2 -158
- package/dist/core/fs/host-environment-errors.js +1 -141
- package/dist/core/fs/index.js +1 -9
- package/dist/core/fs/path-utils.js +1 -17
- package/dist/core/governance/content-fields.js +1 -160
- package/dist/core/governance/issue-codes.js +1 -151
- package/dist/core/governance/metadata-coverage.js +1 -358
- package/dist/core/history/drift-cache.js +3 -72
- package/dist/core/history/drift-scan.js +1 -342
- package/dist/core/history/event-classification.js +1 -109
- package/dist/core/history/event-index.js +8 -784
- package/dist/core/history/history-compact-bulk.js +1 -104
- package/dist/core/history/history-diff.js +1 -158
- package/dist/core/history/history-rewrite.d.ts +6 -1
- package/dist/core/history/history-rewrite.js +1 -107
- package/dist/core/history/history-storage-stats.js +1 -102
- package/dist/core/history/history-stream-policy.js +1 -62
- package/dist/core/history/history.js +2 -617
- package/dist/core/history/identity.js +1 -30
- package/dist/core/history/index.js +1 -9
- package/dist/core/history/projection.js +1 -196
- package/dist/core/history/read.d.ts +9 -0
- package/dist/core/history/read.js +1 -57
- package/dist/core/history/replay.js +2 -439
- package/dist/core/history/version-address.js +1 -32
- package/dist/core/history/workspace-history.js +2 -433
- package/dist/core/io/body-file.js +1 -62
- package/dist/core/io/bulk-ids-input.js +1 -112
- package/dist/core/item/actionability.js +1 -327
- package/dist/core/item/dependency-reference.js +1 -20
- package/dist/core/item/id.js +1 -112
- package/dist/core/item/index.js +1 -12
- package/dist/core/item/item-format-version.js +1 -78
- package/dist/core/item/item-format.js +5 -1473
- package/dist/core/item/item-record.js +1 -23
- package/dist/core/item/item-type-definition.js +1 -133
- package/dist/core/item/parent-reference-policy.js +1 -57
- package/dist/core/item/parse.js +2 -603
- package/dist/core/item/plan-lifecycle.js +1 -19
- package/dist/core/item/priority.js +1 -61
- package/dist/core/item/sprint-release-format.js +1 -38
- package/dist/core/item/status-filter.js +1 -115
- package/dist/core/item/status.js +1 -43
- package/dist/core/item/toon-decode.js +1 -29
- package/dist/core/item/type-registry.js +1 -715
- package/dist/core/item/type-synonyms.js +1 -38
- package/dist/core/lock/index.js +1 -9
- package/dist/core/lock/lock-gc.js +1 -240
- package/dist/core/lock/lock.js +3 -590
- package/dist/core/output/mutation-projection.js +1 -217
- package/dist/core/output/output-control.js +1 -25
- package/dist/core/output/output.js +11 -494
- package/dist/core/output/query-summary.js +1 -58
- package/dist/core/output/tabular.js +1 -77
- package/dist/core/packages/manifest.js +1 -244
- package/dist/core/packages/root.js +1 -84
- package/dist/core/policy/workflow-policy-schema.d.ts +312 -0
- package/dist/core/policy/workflow-policy-schema.js +2 -0
- package/dist/core/policy/workflow-policy-store.d.ts +24 -0
- package/dist/core/policy/workflow-policy-store.js +2 -0
- package/dist/core/policy/workflow-policy.d.ts +139 -0
- package/dist/core/policy/workflow-policy.js +2 -0
- package/dist/core/profile/profile-describe.js +1 -83
- package/dist/core/profile/profile-lint.js +1 -415
- package/dist/core/profile/profile-plan.js +0 -0
- package/dist/core/profile/profile-presets.js +1 -370
- package/dist/core/reproducibility/context.js +1 -82
- package/dist/core/schema/fields-file.js +2 -288
- package/dist/core/schema/item-types-file.js +2 -296
- package/dist/core/schema/runtime-field-filters.js +1 -49
- package/dist/core/schema/runtime-field-values.js +1 -313
- package/dist/core/schema/runtime-schema.js +2 -826
- package/dist/core/schema/status-defs-file.js +2 -227
- package/dist/core/schema/status-token.js +1 -31
- package/dist/core/schema/type-inference.js +1 -95
- package/dist/core/schema/type-presets.js +1 -87
- package/dist/core/schema/type-workflows.js +1 -104
- package/dist/core/search/background-refresh.js +2 -286
- package/dist/core/search/bm25.js +1 -146
- package/dist/core/search/cache.js +2 -534
- package/dist/core/search/corpus.js +1 -311
- package/dist/core/search/embedding-batches.js +1 -163
- package/dist/core/search/eval.js +1 -225
- package/dist/core/search/http-client.js +1 -75
- package/dist/core/search/providers.js +1 -242
- package/dist/core/search/relevance.js +1 -244
- package/dist/core/search/semantic-defaults.js +1 -199
- package/dist/core/search/staleness.js +1 -30
- package/dist/core/search/vector-stores.js +2 -664
- package/dist/core/search/vectorization-metadata.js +1 -81
- package/dist/core/sentry/helpers.js +1 -272
- package/dist/core/sentry/instrument.js +1 -387
- package/dist/core/session/session-state.js +1 -260
- package/dist/core/shared/agent-session-context.js +1 -133
- package/dist/core/shared/author.js +1 -1172
- package/dist/core/shared/command-types.js +1 -4
- package/dist/core/shared/conflict-markers.js +1 -31
- package/dist/core/shared/constants.js +1 -405
- package/dist/core/shared/errors.js +1 -20
- package/dist/core/shared/html-entity-decode.js +1 -131
- package/dist/core/shared/index.js +1 -12
- package/dist/core/shared/item-metadata-contract.js +1 -89
- package/dist/core/shared/lazy-module.js +1 -16
- package/dist/core/shared/levenshtein.js +1 -61
- package/dist/core/shared/memo.js +1 -19
- package/dist/core/shared/numeric-parsers.js +1 -20
- package/dist/core/shared/option-alias-visibility.js +1 -67
- package/dist/core/shared/primitives.js +1 -127
- package/dist/core/shared/serial-queue.js +1 -79
- package/dist/core/shared/serialization.js +1 -210
- package/dist/core/shared/split-comma-list.js +1 -30
- package/dist/core/shared/text-normalization.js +1 -38
- package/dist/core/shared/time.js +1 -306
- package/dist/core/store/index.js +1 -12
- package/dist/core/store/item-format-migration.js +1 -125
- package/dist/core/store/item-metadata-cache.js +1 -1116
- package/dist/core/store/item-metadata-query-index.js +9 -394
- package/dist/core/store/item-metadata-read-work.js +1 -43
- package/dist/core/store/item-store.js +1 -693
- package/dist/core/store/paths.d.ts +1 -1
- package/dist/core/store/paths.js +1 -214
- package/dist/core/store/settings-read-cache.js +1 -85
- package/dist/core/store/settings-validator.d.ts +1 -0
- package/dist/core/store/settings-validator.js +1 -421
- package/dist/core/store/settings.js +3 -1309
- package/dist/core/store/tracker-preflight.js +1 -141
- package/dist/core/telemetry/consent.js +5 -108
- package/dist/core/telemetry/observability.js +1 -246
- package/dist/core/telemetry/runtime.js +4 -1988
- package/dist/core/test/background-runs.js +4 -945
- package/dist/core/test/item-test-run-tracking.js +1 -63
- package/dist/core/test/run-selectors.js +1 -120
- package/dist/core/validate/estimate-defaults.js +1 -89
- package/dist/core/validate/fix-planning.js +1 -189
- package/dist/core/validate/linked-artifact-reference.js +1 -36
- package/dist/core/validate/missing-by-type.js +1 -34
- package/dist/core/validate/missing-link-owners.js +1 -95
- package/dist/core/validate/stale-file-classification.js +1 -82
- package/dist/mcp/http-server.js +5 -448
- package/dist/mcp/legacy-adapter.js +1 -77
- package/dist/mcp/runtime-capabilities.js +1 -200
- package/dist/mcp/server.js +4 -1233
- package/dist/mcp/tool-definitions.js +1 -804
- package/dist/sdk/actionability.js +1 -13
- package/dist/sdk/agent/closed-domain-contracts.js +1 -161
- package/dist/sdk/agent/command-recovery.js +1 -59
- package/dist/sdk/agent/command-suggestions.js +1 -66
- package/dist/sdk/agent/create-option-policy.js +1 -31
- package/dist/sdk/agent/identity-config.js +1 -106
- package/dist/sdk/agent/item-addressing.js +1 -207
- package/dist/sdk/agent/refusal-closure-census.js +1 -151
- package/dist/sdk/agent/refusal-closure.js +1 -133
- package/dist/sdk/agent/refusal-corpus-contracts.js +1 -193
- package/dist/sdk/agent/refusal-reachability.js +1 -593
- package/dist/sdk/agent/subcommand-recovery.js +1 -83
- package/dist/sdk/agent/task-transcript-contracts.js +1 -197
- package/dist/sdk/agent/tracker-preflight-contracts.js +1 -126
- package/dist/sdk/agent-capability-contracts.js +1 -428
- package/dist/sdk/agent-session-context.js +1 -9
- package/dist/sdk/annotations.js +1 -448
- package/dist/sdk/author-attribution.js +1 -468
- package/dist/sdk/authoring.js +1 -20
- package/dist/sdk/cli-bootstrap.js +1 -838
- package/dist/sdk/cli-contracts/agent-output-contracts.d.ts +1 -1
- package/dist/sdk/cli-contracts/agent-output-contracts.js +4 -476
- package/dist/sdk/cli-contracts/bootstrap-command-scanner.js +1 -79
- package/dist/sdk/cli-contracts/command-aliases.d.ts +4 -0
- package/dist/sdk/cli-contracts/command-aliases.js +1 -107
- package/dist/sdk/cli-contracts/command-exit-contracts.js +1 -151
- package/dist/sdk/cli-contracts/commander-mutation-options.js +1 -1081
- package/dist/sdk/cli-contracts/commander-types.js +1 -159
- package/dist/sdk/cli-contracts/completeness.js +1 -393
- package/dist/sdk/cli-contracts/enum-contracts.d.ts +1 -1
- package/dist/sdk/cli-contracts/enum-contracts.js +1 -222
- package/dist/sdk/cli-contracts/flag-contracts.js +1 -1947
- package/dist/sdk/cli-contracts/flag-lexicon-contracts.js +1 -347
- package/dist/sdk/cli-contracts/grammar-contracts.js +1 -986
- package/dist/sdk/cli-contracts/registration-helpers.js +7 -990
- package/dist/sdk/cli-contracts/runtime-contracts.d.ts +5 -0
- package/dist/sdk/cli-contracts/runtime-contracts.js +1 -2090
- package/dist/sdk/cli-contracts/schemas/assurance-definition.js +1 -324
- package/dist/sdk/cli-contracts/string-lists.js +1 -16
- package/dist/sdk/cli-contracts/tool-option-contracts.js +1 -461
- package/dist/sdk/cli-contracts/tool-parameter-tables.js +1 -2167
- package/dist/sdk/cli-contracts/tool-schema.d.ts +3 -1
- package/dist/sdk/cli-contracts/tool-schema.js +1 -1664
- package/dist/sdk/cli-contracts/typed-action-inputs.js +1 -4
- package/dist/sdk/cli-contracts.d.ts +1 -1
- package/dist/sdk/cli-contracts.js +1 -17
- package/dist/sdk/cli-program.js +1 -49
- package/dist/sdk/command-line.d.ts +2 -5
- package/dist/sdk/command-line.js +1 -78
- package/dist/sdk/comments.js +1 -133
- package/dist/sdk/compile-cache.js +1 -73
- package/dist/sdk/completion.js +174 -839
- package/dist/sdk/compose.js +1 -1090
- package/dist/sdk/config.js +1 -1204
- package/dist/sdk/context/recency.js +1 -33
- package/dist/sdk/context/semantic-session-attribution.js +1 -82
- package/dist/sdk/context/usage-egress.js +1 -29
- package/dist/sdk/context/usage-ledger.js +3 -185
- package/dist/sdk/context-intent-contracts.js +1 -709
- package/dist/sdk/context-intent-runtime.js +1 -115
- package/dist/sdk/context-packing.js +1 -218
- package/dist/sdk/context-relevance.js +1 -503
- package/dist/sdk/context-signal-store.js +2 -426
- package/dist/sdk/context-usage.js +1 -367
- package/dist/sdk/contracts.js +1 -23
- package/dist/sdk/core-governance.js +1 -14
- package/dist/sdk/core.js +1 -14
- package/dist/sdk/corpus-shape.js +1 -401
- package/dist/sdk/define.js +1 -220
- package/dist/sdk/dependencies.js +1 -718
- package/dist/sdk/dependency-flag-validation.js +1 -156
- package/dist/sdk/dependency-provenance.js +1 -135
- package/dist/sdk/docs.js +1 -14
- package/dist/sdk/duplicates.js +1 -40
- package/dist/sdk/environment/agent-environment.js +1 -466
- package/dist/sdk/environment/host-environment-errors.js +1 -8
- package/dist/sdk/environment/project-runtime-compatibility.js +1 -481
- package/dist/sdk/environment/source-context.js +1 -28
- package/dist/sdk/environment/tracker-preflight.js +1 -9
- package/dist/sdk/error-code-catalog.js +1 -153
- package/dist/sdk/error-runtime.js +1 -58
- package/dist/sdk/errors.js +1 -58
- package/dist/sdk/eval.js +1 -190
- package/dist/sdk/extension/author-manifest.js +1 -92
- package/dist/sdk/extension/bundled-catalog.js +1 -332
- package/dist/sdk/extension/concurrency.js +1 -25
- package/dist/sdk/extension/copy-scope.d.ts +2 -0
- package/dist/sdk/extension/copy-scope.js +2 -0
- package/dist/sdk/extension/custom-field-collisions.js +1 -30
- package/dist/sdk/extension/describe.js +3 -189
- package/dist/sdk/extension/doctor.js +1 -606
- package/dist/sdk/extension/install-plan.d.ts +69 -0
- package/dist/sdk/extension/install-plan.js +2 -0
- package/dist/sdk/extension/install-receipts.d.ts +7 -0
- package/dist/sdk/extension/install-receipts.js +2 -0
- package/dist/sdk/extension/install-runtime.js +3 -313
- package/dist/sdk/extension/install-snapshot.js +1 -66
- package/dist/sdk/extension/install-sources.js +5 -1057
- package/dist/sdk/extension/managed-state.js +2 -252
- package/dist/sdk/extension/migrations.js +2 -174
- package/dist/sdk/extension/output-ownership.js +1 -25
- package/dist/sdk/extension/runtime-summary.js +1 -18
- package/dist/sdk/extension/scaffold.js +4 -2308
- package/dist/sdk/extension/shared.js +1 -147
- package/dist/sdk/extension/source-resolution.js +1 -65
- package/dist/sdk/extension/update-check.js +1 -67
- package/dist/sdk/extension-command-context.js +1 -44
- package/dist/sdk/extension-contracts.js +1 -73
- package/dist/sdk/extension.d.ts +7 -2
- package/dist/sdk/extension.js +1 -2196
- package/dist/sdk/files.js +1 -535
- package/dist/sdk/flag-invocation-contracts.d.ts +0 -5
- package/dist/sdk/flag-invocation-contracts.js +1 -344
- package/dist/sdk/generated/generated-error-code-catalog-part-1.js +1 -2224
- package/dist/sdk/generated/generated-error-code-catalog-part-2.js +1 -2236
- package/dist/sdk/generated-error-code-catalog.js +1 -16
- package/dist/sdk/governance/assurance-action-contracts.js +1 -4
- package/dist/sdk/governance/assurance-action.js +1 -411
- package/dist/sdk/governance/assurance-limits.js +1 -10
- package/dist/sdk/governance/assurance-mutation-error.js +1 -81
- package/dist/sdk/governance/assurance-presets.js +1 -135
- package/dist/sdk/governance/assurance-runtime.js +1 -238
- package/dist/sdk/governance/assurance.js +4 -1182
- package/dist/sdk/governance/boundary-fixtures.js +1 -200
- package/dist/sdk/governance/coverage-assurance.js +1 -60
- package/dist/sdk/governance/defect-recurrence-coverage.js +1 -188
- package/dist/sdk/governance/defect-recurrence-graph.js +1 -120
- package/dist/sdk/governance/defect-recurrence-signals.js +1 -24
- package/dist/sdk/governance/defect-recurrence.js +1 -623
- package/dist/sdk/governance/extension-host-version.js +1 -115
- package/dist/sdk/governance/gc.js +1 -368
- package/dist/sdk/governance/health.js +1 -2367
- package/dist/sdk/governance/hierarchy-validation.js +1 -108
- package/dist/sdk/governance/linked-file-report.js +1 -71
- package/dist/sdk/governance/merge-receipt-history.js +1 -206
- package/dist/sdk/governance/provenance-health.js +1 -282
- package/dist/sdk/governance/reindex.js +4 -761
- package/dist/sdk/governance/stale-work.js +1 -82
- package/dist/sdk/governance/status-role-diagnostics.js +1 -35
- package/dist/sdk/governance/storage-integrity.js +1 -280
- package/dist/sdk/governance/tracked-runtime-cache.js +1 -106
- package/dist/sdk/governance/upgrade.js +2 -327
- package/dist/sdk/governance/validate-history-drift.js +1 -81
- package/dist/sdk/governance/validate-item-reader.js +1 -17
- package/dist/sdk/governance/validate-normalization.js +1 -36
- package/dist/sdk/governance/validate.d.ts +3 -1
- package/dist/sdk/governance/validate.js +1 -2261
- package/dist/sdk/governance/workflow-completeness.d.ts +32 -0
- package/dist/sdk/governance/workflow-completeness.js +2 -0
- package/dist/sdk/governance/workflow-policy.d.ts +47 -0
- package/dist/sdk/governance/workflow-policy.js +4 -0
- package/dist/sdk/governance/workspace-position.js +1 -163
- package/dist/sdk/governance.d.ts +2 -0
- package/dist/sdk/governance.js +1 -31
- package/dist/sdk/graph/adapter.js +1 -181
- package/dist/sdk/graph/analytics.js +1 -474
- package/dist/sdk/graph/assembly.js +1 -377
- package/dist/sdk/graph/cache.js +1 -160
- package/dist/sdk/graph/centrality.js +1 -258
- package/dist/sdk/graph/conformance.js +1 -130
- package/dist/sdk/graph/deadline-scheduling.d.ts +90 -0
- package/dist/sdk/graph/deadline-scheduling.js +2 -0
- package/dist/sdk/graph/durable-cache.d.ts +1 -1
- package/dist/sdk/graph/durable-cache.js +1 -361
- package/dist/sdk/graph/governance-contracts.js +1 -34
- package/dist/sdk/graph/governance.d.ts +13 -1
- package/dist/sdk/graph/governance.js +1 -735
- package/dist/sdk/graph/hierarchy-integrity.js +1 -310
- package/dist/sdk/graph/index.d.ts +3 -2
- package/dist/sdk/graph/index.js +1 -26
- package/dist/sdk/graph/lifecycle-coverage.d.ts +32 -0
- package/dist/sdk/graph/lifecycle-coverage.js +2 -0
- package/dist/sdk/graph/mutation-advisory.js +1 -176
- package/dist/sdk/graph/remediation.js +1 -197
- package/dist/sdk/graph/run.d.ts +15 -1
- package/dist/sdk/graph/run.js +1 -768
- package/dist/sdk/graph/scheduling.js +1 -124
- package/dist/sdk/graph/traversal.js +1 -284
- package/dist/sdk/graph/workspace-relationship-kind-registry.js +1 -27
- package/dist/sdk/graph.js +1 -15
- package/dist/sdk/guide-topics.js +1 -707
- package/dist/sdk/guide.js +1 -279
- package/dist/sdk/history/maintenance.d.ts +71 -0
- package/dist/sdk/history/maintenance.js +2 -0
- package/dist/sdk/history/salvage.js +2 -247
- package/dist/sdk/history/subject.d.ts +19 -0
- package/dist/sdk/history/subject.js +2 -0
- package/dist/sdk/history-analytics.js +1 -282
- package/dist/sdk/history-compact.js +1 -527
- package/dist/sdk/history-mcp.js +1 -68
- package/dist/sdk/history-provenance.js +1 -182
- package/dist/sdk/history-read.js +1 -96
- package/dist/sdk/history-redact.d.ts +1 -14
- package/dist/sdk/history-redact.js +1 -643
- package/dist/sdk/history-repair.d.ts +5 -0
- package/dist/sdk/history-repair.js +1 -657
- package/dist/sdk/improvement-ledger-validation.js +1 -62
- package/dist/sdk/improvement-ledger.js +2 -257
- package/dist/sdk/index.d.ts +4 -1
- package/dist/sdk/index.js +1 -183
- package/dist/sdk/init-agent-guidance.js +2 -496
- package/dist/sdk/init.js +2 -820
- package/dist/sdk/invocation-author.js +1 -39
- package/dist/sdk/item-children.js +1 -90
- package/dist/sdk/item-metadata-index.js +1 -15
- package/dist/sdk/item-schedule.js +1 -27
- package/dist/sdk/item-transaction.js +1 -396
- package/dist/sdk/learnings.js +1 -29
- package/dist/sdk/lifecycle/append.js +2 -53
- package/dist/sdk/lifecycle/claim.d.ts +2 -0
- package/dist/sdk/lifecycle/claim.js +1 -242
- package/dist/sdk/lifecycle/close-many.js +1 -438
- package/dist/sdk/lifecycle/close.js +1 -468
- package/dist/sdk/lifecycle/copy.js +1 -212
- package/dist/sdk/lifecycle/create.js +1 -1949
- package/dist/sdk/lifecycle/delete.js +1 -45
- package/dist/sdk/lifecycle/event-validation-messages.js +1 -91
- package/dist/sdk/lifecycle/focus.js +1 -91
- package/dist/sdk/lifecycle/hierarchy-mutation-lock.js +1 -24
- package/dist/sdk/lifecycle/legacy-none-tokens.js +1 -149
- package/dist/sdk/lifecycle/lifecycle-transitions.js +1 -40
- package/dist/sdk/lifecycle/mcp-actions.d.ts +2 -0
- package/dist/sdk/lifecycle/mcp-actions.js +1 -51
- package/dist/sdk/lifecycle/metadata-normalizers.js +1 -46
- package/dist/sdk/lifecycle/mutation-command-options.js +1 -9
- package/dist/sdk/lifecycle/plan.js +1 -1606
- package/dist/sdk/lifecycle/recurrence-parsers.d.ts +1 -1
- package/dist/sdk/lifecycle/recurrence-parsers.js +1 -147
- package/dist/sdk/lifecycle/reopen.js +1 -68
- package/dist/sdk/lifecycle/repeatable-metadata-parsers.js +1 -143
- package/dist/sdk/lifecycle/restore.d.ts +1 -0
- package/dist/sdk/lifecycle/restore.js +1 -330
- package/dist/sdk/lifecycle/shared-unset-fields.js +1 -295
- package/dist/sdk/lifecycle/update-many.js +1 -861
- package/dist/sdk/lifecycle/update.js +1 -2136
- package/dist/sdk/lifecycle-completion.js +1 -92
- package/dist/sdk/lifecycle-policy.js +1 -120
- package/dist/sdk/linked-artifacts.js +1 -530
- package/dist/sdk/mcp/apps.js +4 -133
- package/dist/sdk/mcp/authorization.js +1 -404
- package/dist/sdk/mcp/discovery.js +1 -494
- package/dist/sdk/mcp/interactions.js +1 -336
- package/dist/sdk/mcp/protocol.d.ts +7 -0
- package/dist/sdk/mcp/protocol.js +1 -184
- package/dist/sdk/mcp/skills.js +1 -389
- package/dist/sdk/mcp/subscriptions.js +1 -211
- package/dist/sdk/mcp/tasks.js +2 -430
- package/dist/sdk/mcp/transport.js +1 -260
- package/dist/sdk/merge/abandoned-receipts.js +1 -46
- package/dist/sdk/merge/driver.js +1 -212
- package/dist/sdk/merge/index.js +1 -16
- package/dist/sdk/merge/install.js +3 -561
- package/dist/sdk/merge/receipt-file-boundary.js +1 -46
- package/dist/sdk/merge/receipt-operation.js +1 -96
- package/dist/sdk/merge/receipt-schema.js +1 -397
- package/dist/sdk/merge/receipts.js +4 -525
- package/dist/sdk/merge/reconcile.js +1 -352
- package/dist/sdk/merge/three-way.js +3 -775
- package/dist/sdk/merge.js +1 -10
- package/dist/sdk/mutation-events.js +1 -292
- package/dist/sdk/mutation-guard.js +1 -216
- package/dist/sdk/notes.js +1 -139
- package/dist/sdk/output-contracts.js +1 -172
- package/dist/sdk/output-projection.js +1 -430
- package/dist/sdk/output-token-accounting.js +1 -140
- package/dist/sdk/output.js +1 -64
- package/dist/sdk/ownership-source.js +1 -21
- package/dist/sdk/package-import-adapters.js +1 -442
- package/dist/sdk/package-migrations.js +1 -20
- package/dist/sdk/package-runtime-options.js +1 -80
- package/dist/sdk/pagination.js +1 -162
- package/dist/sdk/profile.js +1 -454
- package/dist/sdk/provenance.js +1 -258
- package/dist/sdk/public-surface.json +1 -1
- package/dist/sdk/query/activity.js +1 -401
- package/dist/sdk/query/aggregate.d.ts +16 -0
- package/dist/sdk/query/aggregate.js +1 -390
- package/dist/sdk/query/calendar.js +1 -964
- package/dist/sdk/query/complete-list.js +1 -215
- package/dist/sdk/query/context.js +1 -1702
- package/dist/sdk/query/duplicate-candidates.js +1 -70
- package/dist/sdk/query/get.js +1 -450
- package/dist/sdk/query/history.js +1 -186
- package/dist/sdk/query/item-filter-options.js +1 -9
- package/dist/sdk/query/light-metadata.js +1 -18
- package/dist/sdk/query/list-filter-shared.js +1 -81
- package/dist/sdk/query/list.js +1 -1304
- package/dist/sdk/query/multi-value-filters.js +1 -78
- package/dist/sdk/query/next.js +1 -513
- package/dist/sdk/query/parsers.js +1 -44
- package/dist/sdk/query/projection-contracts.js +1 -184
- package/dist/sdk/query/search-contracts.d.ts +27 -0
- package/dist/sdk/query/search-contracts.js +1 -230
- package/dist/sdk/query/search-pagination.js +1 -35
- package/dist/sdk/query/search-rendering.js +1 -105
- package/dist/sdk/query/search.d.ts +6 -4
- package/dist/sdk/query/search.js +2 -1987
- package/dist/sdk/query.js +1 -35
- package/dist/sdk/read-output/continuation.js +1 -194
- package/dist/sdk/read-output-budget.js +1 -135
- package/dist/sdk/read-output-contracts.d.ts +1 -1
- package/dist/sdk/read-output-contracts.js +1 -1225
- package/dist/sdk/read-output-rows.js +1 -186
- package/dist/sdk/read-output-session.js +1 -208
- package/dist/sdk/relationship-analytics.js +1 -410
- package/dist/sdk/relationship-context.js +1 -284
- package/dist/sdk/relationship-history.js +4 -519
- package/dist/sdk/relationship-kinds/contract.js +1 -22
- package/dist/sdk/relationship-migration.js +1 -77
- package/dist/sdk/relationships.js +1 -579
- package/dist/sdk/reproducibility/process.js +1 -87
- package/dist/sdk/runtime-action-aliases.js +1 -59
- package/dist/sdk/runtime-extended-actions.js +1 -177
- package/dist/sdk/runtime-input.js +1 -614
- package/dist/sdk/runtime-primitives.js +1 -84
- package/dist/sdk/runtime-public-contracts.d.ts +2 -1
- package/dist/sdk/runtime-public-contracts.js +1 -4
- package/dist/sdk/runtime-stats-options.js +1 -38
- package/dist/sdk/runtime.d.ts +4 -0
- package/dist/sdk/runtime.js +1 -1928
- package/dist/sdk/scheduling-shortcuts.js +1 -63
- package/dist/sdk/schema-migration.js +3 -856
- package/dist/sdk/schema.d.ts +2 -1
- package/dist/sdk/schema.js +1 -1376
- package/dist/sdk/search-refresh-worker.js +1 -18
- package/dist/sdk/similarity-scoring.js +1 -53
- package/dist/sdk/similarity.js +1 -326
- package/dist/sdk/start-task-status.js +1 -14
- package/dist/sdk/stats.js +1 -270
- package/dist/sdk/structured-mutations.js +1 -580
- package/dist/sdk/telemetry-flush.js +1 -13
- package/dist/sdk/telemetry.js +1 -405
- package/dist/sdk/templates.js +2 -292
- package/dist/sdk/test/batch.js +2 -509
- package/dist/sdk/test/entry.js +1 -70
- package/dist/sdk/test/execution.js +6 -2211
- package/dist/sdk/test/linked-command-detection.js +1 -546
- package/dist/sdk/test/measurements.js +1 -91
- package/dist/sdk/test/parsers.js +1 -545
- package/dist/sdk/test/runs.js +1 -193
- package/dist/sdk/test/trust.js +2 -206
- package/dist/sdk/testing.js +4 -1391
- package/dist/sdk/traceability/runtime-files-lookup.js +1 -32
- package/dist/sdk/traceability/source-traceability.js +1 -292
- package/dist/sdk/tracker-root-discovery.js +1 -9
- package/dist/sdk/workspace-contracts-cache.js +1 -28
- package/dist/sdk/workspace-contracts.js +1 -33
- package/dist/sdk/workspace-memory.js +2 -318
- package/dist/sdk/workspace-recipe.js +1 -71
- package/dist/sdk/workspace-snapshot.js +4 -613
- package/dist/sdk/workspace-transaction-gc.js +1 -149
- package/dist/sdk/workspace-transaction.js +2 -363
- package/dist/sdk/workspace.js +3 -127
- package/dist/types/index.js +1 -9
- package/dist/types.d.ts +4 -0
- package/dist/types.js +1 -245
- package/docs/AGENT_GUIDE.md +1 -1
- package/docs/COMMANDS.md +10 -0
- package/docs/CONFIGURATION.md +12 -1
- package/docs/CONTEXT_ALGORITHM_PORTFOLIO.md +167 -0
- package/docs/DIAGNOSTIC_OUTPUT_CONTRACTS.md +9 -3
- package/docs/EXTENSIONS.md +1 -0
- package/docs/HISTORY_MAINTENANCE.md +125 -0
- package/docs/MCP_2026_07_28_CONFORMANCE.md +20 -10
- package/docs/PACKAGE_EVIDENCE.md +92 -0
- package/docs/PLANNING_MEASUREMENTS.md +183 -0
- package/docs/README.md +4 -0
- package/docs/READ_OUTPUT_CONTRACTS.md +5 -0
- package/docs/SCRIPTING.md +21 -0
- package/docs/TESTING.md +33 -0
- package/docs/WORKFLOW_POLICIES.md +129 -0
- package/docs/generated/FLAG_LEXICON_BUDGETS.md +7 -7
- package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +11 -5
- package/marketplace.json +2 -2
- package/package.json +5 -5
- package/packages/pm-beads/package.json +1 -1
- package/packages/pm-calendar/package.json +1 -1
- package/packages/pm-command-kit/package.json +1 -1
- package/packages/pm-digital-twin/package.json +1 -1
- package/packages/pm-governance-audit/package.json +1 -1
- package/packages/pm-guide-shell/package.json +1 -1
- package/packages/pm-kanban/package.json +1 -1
- package/packages/pm-lifecycle-hooks/package.json +1 -1
- package/packages/pm-linked-test-adapters/package.json +1 -1
- package/packages/pm-search-advanced/package.json +1 -1
- package/packages/pm-templates/package.json +1 -1
- package/packages/pm-todos/package.json +1 -1
- package/packages/pm-vcs/package.json +1 -1
- package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
- package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
- package/scripts/finalize-build.mjs +45 -3
- package/dist/cli-bundle/chunks/chunk-AZDFJGH6.js +0 -9
- package/dist/cli-bundle/chunks/chunk-CKOL5U7J.js +0 -77
- package/dist/cli-bundle/chunks/chunk-JX4DH4WC.js +0 -3
- package/dist/cli-bundle/chunks/chunk-OF76PSDQ.js +0 -5
- package/dist/cli-bundle/chunks/chunk-QUWFABDM.js +0 -232
- package/dist/cli-bundle/chunks/chunk-QWRRFYK3.js +0 -2
- package/dist/cli-bundle/chunks/chunk-RWWBOWJ5.js +0 -2
- package/dist/cli-bundle/chunks/chunk-WGAOYSYH.js +0 -40
- package/dist/cli-bundle/chunks/chunk-WI2AYPA7.js +0 -2
- package/dist/cli-bundle/chunks/register-list-query-5JL52D33.js +0 -11
- package/dist/cli-bundle/chunks/register-mutation-ZPG7KMVP.js +0 -20
- package/dist/cli-bundle/chunks/register-operations-I5W3KMGB.js +0 -2
- package/dist/cli-bundle/chunks/register-setup-H4SVAVX7.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-AL5ON6K6.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-CHC2IDXA.js +0 -6
- package/dist/cli-bundle/focused-chunks/chunk-CK6QFAPZ.js +0 -20
- package/dist/cli-bundle/focused-chunks/chunk-EZR3GHFE.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-H2WJWK7L.js +0 -56
- package/dist/cli-bundle/focused-chunks/chunk-NTPY5GSO.js +0 -3
- package/dist/cli-bundle/focused-chunks/chunk-P5O7MP5Y.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-PDMW2E36.js +0 -177
- package/dist/cli-bundle/focused-chunks/chunk-PEFABF7E.js +0 -26
- package/dist/cli-bundle/focused-chunks/chunk-QTVCLMSZ.js +0 -6
- package/dist/cli-bundle/focused-chunks/chunk-QTZRBUYA.js +0 -8
- package/dist/cli-bundle/focused-chunks/chunk-SGQST3PQ.js +0 -12
- package/dist/cli-bundle/focused-chunks/chunk-UKHASMMP.js +0 -10
- package/dist/cli-bundle/focused-chunks/chunk-ZPEKQHOC.js +0 -2
|
@@ -1,142 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* @module core/store/tracker-preflight
|
|
3
|
-
*
|
|
4
|
-
* Owns the filesystem preflight shared by tracker-reading SDK primitives.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="8b0efe32-43f5-51ed-b1d5-5c26a3ae5bf0")}catch(e){}}();
|
|
8
|
-
import fs from "node:fs/promises";
|
|
9
|
-
import path from "node:path";
|
|
10
|
-
import { EXIT_CODE } from "../shared/constants.js";
|
|
11
|
-
import { PmCliError, } from "../shared/errors.js";
|
|
12
|
-
import { pathExists } from "../fs/fs-utils.js";
|
|
13
|
-
import { getSettingsPath } from "./paths.js";
|
|
14
|
-
function isErrno(error, code) {
|
|
15
|
-
return (typeof error === "object" &&
|
|
16
|
-
error !== null &&
|
|
17
|
-
"code" in error &&
|
|
18
|
-
error.code === code);
|
|
19
|
-
}
|
|
20
|
-
/** Build the non-interactive, tokenized retry that initializes a selected tracker root. */
|
|
21
|
-
export function buildTrackerInitializationRecovery(pmRoot) {
|
|
22
|
-
const suggestedRetryArguments = [
|
|
23
|
-
"--pm-path",
|
|
24
|
-
pmRoot,
|
|
25
|
-
"init",
|
|
26
|
-
"--defaults",
|
|
27
|
-
"--agent-guidance",
|
|
28
|
-
"skip",
|
|
29
|
-
];
|
|
30
|
-
return {
|
|
31
|
-
suggested_retry: `pm ${suggestedRetryArguments
|
|
32
|
-
.map((argument) => `'${argument.replaceAll("'", `'"'"'`)}'`)
|
|
33
|
-
.join(" ")}`,
|
|
34
|
-
suggested_retry_args: suggestedRetryArguments,
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
function trackerRootNotDirectoryError(pmRoot) {
|
|
38
|
-
return new PmCliError(`Tracker root is not a directory at ${pmRoot}.`, EXIT_CODE.USAGE, {
|
|
39
|
-
code: "tracker_root_not_directory",
|
|
40
|
-
reason: "not_a_directory",
|
|
41
|
-
resolved_path: pmRoot,
|
|
42
|
-
nextSteps: [
|
|
43
|
-
"Pass a tracker directory, usually <workspace>/.agents/pm, rather than a file path.",
|
|
44
|
-
],
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
function trackerRootUnreadableError(pmRoot) {
|
|
48
|
-
return new PmCliError(`Tracker root is not readable at ${pmRoot}.`, EXIT_CODE.GENERIC_FAILURE, {
|
|
49
|
-
code: "tracker_root_unreadable",
|
|
50
|
-
reason: "unreadable",
|
|
51
|
-
resolved_path: pmRoot,
|
|
52
|
-
nextSteps: [
|
|
53
|
-
"Grant read and directory-search permission to the tracker root, then retry.",
|
|
54
|
-
],
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
async function assertMissingRootAncestors(pmRoot) {
|
|
58
|
-
const resolvedRoot = path.resolve(pmRoot);
|
|
59
|
-
const filesystemRoot = path.parse(resolvedRoot).root;
|
|
60
|
-
let ancestor = path.dirname(resolvedRoot);
|
|
61
|
-
while (ancestor !== filesystemRoot) {
|
|
62
|
-
let ancestorStats;
|
|
63
|
-
try {
|
|
64
|
-
ancestorStats = await fs.stat(ancestor);
|
|
65
|
-
}
|
|
66
|
-
catch (error) {
|
|
67
|
-
if (isErrno(error, "ENOTDIR")) {
|
|
68
|
-
throw trackerRootNotDirectoryError(pmRoot);
|
|
69
|
-
}
|
|
70
|
-
if (!isErrno(error, "ENOENT")) {
|
|
71
|
-
throw error;
|
|
72
|
-
}
|
|
73
|
-
ancestor = path.dirname(ancestor);
|
|
74
|
-
continue;
|
|
75
|
-
}
|
|
76
|
-
if (!ancestorStats.isDirectory()) {
|
|
77
|
-
throw trackerRootNotDirectoryError(pmRoot);
|
|
78
|
-
}
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
/** Require a tracker root to be a readable directory without requiring initialized settings. */
|
|
83
|
-
export async function assertReadableTrackerRoot(pmRoot) {
|
|
84
|
-
let stats;
|
|
85
|
-
try {
|
|
86
|
-
stats = await fs.stat(pmRoot);
|
|
87
|
-
}
|
|
88
|
-
catch (error) {
|
|
89
|
-
if (isErrno(error, "ENOENT")) {
|
|
90
|
-
await assertMissingRootAncestors(pmRoot);
|
|
91
|
-
throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Tracker root does not exist. Run pm init first.`, EXIT_CODE.NOT_FOUND, {
|
|
92
|
-
code: "tracker_root_missing",
|
|
93
|
-
reason: "missing",
|
|
94
|
-
resolved_path: pmRoot,
|
|
95
|
-
nextSteps: [
|
|
96
|
-
"Confirm the tracker root path or initialize it with the emitted retry.",
|
|
97
|
-
],
|
|
98
|
-
recovery: buildTrackerInitializationRecovery(pmRoot),
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
if (isErrno(error, "ENOTDIR")) {
|
|
102
|
-
throw trackerRootNotDirectoryError(pmRoot);
|
|
103
|
-
}
|
|
104
|
-
if (isErrno(error, "EACCES") || isErrno(error, "EPERM")) {
|
|
105
|
-
throw trackerRootUnreadableError(pmRoot);
|
|
106
|
-
}
|
|
107
|
-
throw error;
|
|
108
|
-
}
|
|
109
|
-
if (!stats.isDirectory()) {
|
|
110
|
-
throw trackerRootNotDirectoryError(pmRoot);
|
|
111
|
-
}
|
|
112
|
-
if (process.platform !== "win32" &&
|
|
113
|
-
((stats.mode & 0o444) === 0 || (stats.mode & 0o111) === 0)) {
|
|
114
|
-
throw trackerRootUnreadableError(pmRoot);
|
|
115
|
-
}
|
|
116
|
-
try {
|
|
117
|
-
const directory = await fs.opendir(pmRoot);
|
|
118
|
-
await directory.close();
|
|
119
|
-
}
|
|
120
|
-
catch (error) {
|
|
121
|
-
if (isErrno(error, "EACCES") || isErrno(error, "EPERM")) {
|
|
122
|
-
throw trackerRootUnreadableError(pmRoot);
|
|
123
|
-
}
|
|
124
|
-
throw error;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
/** Require the selected tracker root and its settings marker before an SDK command reads or mutates project state. */
|
|
128
|
-
export async function assertInitializedTracker(pmRoot) {
|
|
129
|
-
await assertReadableTrackerRoot(pmRoot);
|
|
130
|
-
if (await pathExists(getSettingsPath(pmRoot))) {
|
|
131
|
-
return;
|
|
132
|
-
}
|
|
133
|
-
throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND, {
|
|
134
|
-
code: "tracker_not_initialized",
|
|
135
|
-
reason: "settings_missing",
|
|
136
|
-
resolved_path: pmRoot,
|
|
137
|
-
nextSteps: ["Initialize the selected tracker root with the emitted retry."],
|
|
138
|
-
recovery: buildTrackerInitializationRecovery(pmRoot),
|
|
139
|
-
});
|
|
140
|
-
}
|
|
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]="57662b37-0d33-5cde-ad84-0a90fb520439")}catch(e2){}})();import fs from"node:fs/promises";import path from"node:path";import{EXIT_CODE}from"../shared/constants.js";import{PmCliError}from"../shared/errors.js";import{pathExists}from"../fs/fs-utils.js";import{getSettingsPath}from"./paths.js";function isErrno(error,code){return typeof error==="object"&&error!==null&&"code"in error&&error.code===code}function buildTrackerInitializationRecovery(pmRoot){const suggestedRetryArguments=["--pm-path",pmRoot,"init","--defaults","--agent-guidance","skip"];return{suggested_retry:`pm ${suggestedRetryArguments.map(argument=>`'${argument.replaceAll("'",`'"'"'`)}'`).join(" ")}`,suggested_retry_args:suggestedRetryArguments}}function trackerRootNotDirectoryError(pmRoot){return new PmCliError(`Tracker root is not a directory at ${pmRoot}.`,EXIT_CODE.USAGE,{code:"tracker_root_not_directory",reason:"not_a_directory",resolved_path:pmRoot,nextSteps:["Pass a tracker directory, usually <workspace>/.agents/pm, rather than a file path."]})}function trackerRootUnreadableError(pmRoot){return new PmCliError(`Tracker root is not readable at ${pmRoot}.`,EXIT_CODE.GENERIC_FAILURE,{code:"tracker_root_unreadable",reason:"unreadable",resolved_path:pmRoot,nextSteps:["Grant read and directory-search permission to the tracker root, then retry."]})}async function assertMissingRootAncestors(pmRoot){const resolvedRoot=path.resolve(pmRoot);const filesystemRoot=path.parse(resolvedRoot).root;let ancestor=path.dirname(resolvedRoot);while(ancestor!==filesystemRoot){let ancestorStats;try{ancestorStats=await fs.stat(ancestor)}catch(error){if(isErrno(error,"ENOTDIR")){throw trackerRootNotDirectoryError(pmRoot)}if(!isErrno(error,"ENOENT")){throw error}ancestor=path.dirname(ancestor);continue}if(!ancestorStats.isDirectory()){throw trackerRootNotDirectoryError(pmRoot)}return}}async function assertReadableTrackerRoot(pmRoot){let stats;try{stats=await fs.stat(pmRoot)}catch(error){if(isErrno(error,"ENOENT")){await assertMissingRootAncestors(pmRoot);throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Tracker root does not exist. Run pm init first.`,EXIT_CODE.NOT_FOUND,{code:"tracker_root_missing",reason:"missing",resolved_path:pmRoot,nextSteps:["Confirm the tracker root path or initialize it with the emitted retry."],recovery:buildTrackerInitializationRecovery(pmRoot)})}if(isErrno(error,"ENOTDIR")){throw trackerRootNotDirectoryError(pmRoot)}if(isErrno(error,"EACCES")||isErrno(error,"EPERM")){throw trackerRootUnreadableError(pmRoot)}throw error}if(!stats.isDirectory()){throw trackerRootNotDirectoryError(pmRoot)}if(process.platform!=="win32"&&((stats.mode&292)===0||(stats.mode&73)===0)){throw trackerRootUnreadableError(pmRoot)}try{const directory=await fs.opendir(pmRoot);await directory.close()}catch(error){if(isErrno(error,"EACCES")||isErrno(error,"EPERM")){throw trackerRootUnreadableError(pmRoot)}throw error}}async function assertInitializedTracker(pmRoot){await assertReadableTrackerRoot(pmRoot);if(await pathExists(getSettingsPath(pmRoot))){return}throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`,EXIT_CODE.NOT_FOUND,{code:"tracker_not_initialized",reason:"settings_missing",resolved_path:pmRoot,nextSteps:["Initialize the selected tracker root with the emitted retry."],recovery:buildTrackerInitializationRecovery(pmRoot)})}export{assertInitializedTracker,assertReadableTrackerRoot,buildTrackerInitializationRecovery};
|
|
141
2
|
//# sourceMappingURL=tracker-preflight.js.map
|
|
142
|
-
//# debugId=8b0efe32-43f5-51ed-b1d5-5c26a3ae5bf0
|
|
@@ -1,109 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="6783b122-a1a8-5f86-9ac5-2c3e811622ed")}catch(e){}}();
|
|
8
|
-
import readline from "node:readline/promises";
|
|
9
|
-
import { stdin as input, stdout as output } from "node:process";
|
|
10
|
-
import { resolveGlobalPmRoot } from "../store/paths.js";
|
|
11
|
-
import { readSettings, writeSettings } from "../store/settings.js";
|
|
12
|
-
const TELEMETRY_PROMPT_DISABLE_ENV = "PM_TELEMETRY_PROMPT";
|
|
13
|
-
const TELEMETRY_PROMPT_DISABLE_VALUES = new Set(["0", "false", "no", "off"]);
|
|
14
|
-
const TELEMETRY_PROMPT_SKIPPED_COMMANDS = new Set([
|
|
15
|
-
"init",
|
|
16
|
-
"completion",
|
|
17
|
-
"completion-statuses",
|
|
18
|
-
"completion-tags",
|
|
19
|
-
"completion-types",
|
|
20
|
-
]);
|
|
21
|
-
function parseBooleanLike(value) {
|
|
22
|
-
if (typeof value !== "string") {
|
|
23
|
-
return false;
|
|
24
|
-
}
|
|
25
|
-
return TELEMETRY_PROMPT_DISABLE_VALUES.has(value.trim().toLowerCase());
|
|
26
|
-
}
|
|
27
|
-
// pm-0hx2: the CI guard must fire when CI is SET to a truthy value (CI=true,
|
|
28
|
-
// CI=1, ...). An unset or empty CI behaves as "not CI", and the conventional
|
|
29
|
-
// falsy spellings ("0", "false", "no", "off") explicitly opt back out of the
|
|
30
|
-
// guard. This is intentionally NOT parseBooleanLike, which matches only the
|
|
31
|
-
// disable set and would invert the check.
|
|
32
|
-
function isTruthyEnvValue(value) {
|
|
33
|
-
if (typeof value !== "string") {
|
|
34
|
-
return false;
|
|
35
|
-
}
|
|
36
|
-
const normalized = value.trim().toLowerCase();
|
|
37
|
-
if (normalized.length === 0) {
|
|
38
|
-
return false;
|
|
39
|
-
}
|
|
40
|
-
return !TELEMETRY_PROMPT_DISABLE_VALUES.has(normalized);
|
|
41
|
-
}
|
|
42
|
-
function shouldSkipTelemetryPrompt(commandPath, globalOptions) {
|
|
43
|
-
if (globalOptions.json === true || globalOptions.quiet === true) {
|
|
44
|
-
return true;
|
|
45
|
-
}
|
|
46
|
-
if (process.stdin.isTTY !== true || process.stdout.isTTY !== true) {
|
|
47
|
-
return true;
|
|
48
|
-
}
|
|
49
|
-
if (parseBooleanLike(process.env[TELEMETRY_PROMPT_DISABLE_ENV])) {
|
|
50
|
-
return true;
|
|
51
|
-
}
|
|
52
|
-
if (isTruthyEnvValue(process.env.CI)) {
|
|
53
|
-
return true;
|
|
54
|
-
}
|
|
55
|
-
const normalizedCommandPath = commandPath.trim().toLowerCase();
|
|
56
|
-
if (normalizedCommandPath.length === 0) {
|
|
57
|
-
return true;
|
|
58
|
-
}
|
|
59
|
-
return TELEMETRY_PROMPT_SKIPPED_COMMANDS.has(normalizedCommandPath);
|
|
60
|
-
}
|
|
61
|
-
function parseTelemetryPromptAnswer(answer) {
|
|
62
|
-
const normalized = answer.trim().toLowerCase();
|
|
63
|
-
if (normalized === "n" || normalized === "no") {
|
|
64
|
-
return false;
|
|
65
|
-
}
|
|
66
|
-
return true;
|
|
67
|
-
}
|
|
68
|
-
async function promptTelemetryConsent(currentDefault) {
|
|
69
|
-
const defaultLabel = currentDefault ? "Y/n" : "y/N";
|
|
70
|
-
const prompt = `pm telemetry helps improve reliability and usage diagnostics.\n` +
|
|
71
|
-
`It is enabled by default and can be changed anytime via:\n` +
|
|
72
|
-
`pm config global set telemetry-tracking --policy disabled\n` +
|
|
73
|
-
`Enable telemetry now? [${defaultLabel}] `;
|
|
74
|
-
const rl = readline.createInterface({ input, output });
|
|
75
|
-
try {
|
|
76
|
-
const answer = await rl.question(prompt);
|
|
77
|
-
if (answer.trim().length === 0) {
|
|
78
|
-
return currentDefault;
|
|
79
|
-
}
|
|
80
|
-
return parseTelemetryPromptAnswer(answer);
|
|
81
|
-
}
|
|
82
|
-
finally {
|
|
83
|
-
rl.close();
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
/** Implements maybe run first use telemetry prompt for the public runtime surface of this module. */
|
|
87
|
-
export async function maybeRunFirstUseTelemetryPrompt(commandPath, globalOptions) {
|
|
88
|
-
if (shouldSkipTelemetryPrompt(commandPath, globalOptions)) {
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
91
|
-
try {
|
|
92
|
-
const globalPmRoot = resolveGlobalPmRoot(process.cwd());
|
|
93
|
-
const settings = await readSettings(globalPmRoot);
|
|
94
|
-
if (settings.telemetry.first_run_prompt_completed) {
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
const enabled = await promptTelemetryConsent(settings.telemetry.enabled);
|
|
98
|
-
settings.telemetry.enabled = enabled;
|
|
99
|
-
settings.telemetry.first_run_prompt_completed = true;
|
|
100
|
-
await writeSettings(globalPmRoot, settings, "telemetry:first_run_prompt");
|
|
101
|
-
output.write(`Telemetry ${enabled ? "enabled" : "disabled"} for this CLI install. ` +
|
|
102
|
-
`Update any time with pm config global set telemetry-tracking --policy ${enabled ? "disabled" : "enabled"}.\n`);
|
|
103
|
-
}
|
|
104
|
-
catch {
|
|
105
|
-
// Prompt and persistence failures should never block command execution.
|
|
106
|
-
}
|
|
107
|
-
}
|
|
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]="faaf2443-4a68-5a89-be9a-65eade438e4d")}catch(e2){}})();import readline from"node:readline/promises";import{stdin as input,stdout as output}from"node:process";import{resolveGlobalPmRoot}from"../store/paths.js";import{readSettings,writeSettings}from"../store/settings.js";const TELEMETRY_PROMPT_DISABLE_ENV="PM_TELEMETRY_PROMPT";const TELEMETRY_PROMPT_DISABLE_VALUES=new Set(["0","false","no","off"]);const TELEMETRY_PROMPT_SKIPPED_COMMANDS=new Set(["init","completion","completion-statuses","completion-tags","completion-types"]);function parseBooleanLike(value){if(typeof value!=="string"){return false}return TELEMETRY_PROMPT_DISABLE_VALUES.has(value.trim().toLowerCase())}function isTruthyEnvValue(value){if(typeof value!=="string"){return false}const normalized=value.trim().toLowerCase();if(normalized.length===0){return false}return!TELEMETRY_PROMPT_DISABLE_VALUES.has(normalized)}function shouldSkipTelemetryPrompt(commandPath,globalOptions){if(globalOptions.json===true||globalOptions.quiet===true){return true}if(process.stdin.isTTY!==true||process.stdout.isTTY!==true){return true}if(parseBooleanLike(process.env[TELEMETRY_PROMPT_DISABLE_ENV])){return true}if(isTruthyEnvValue(process.env.CI)){return true}const normalizedCommandPath=commandPath.trim().toLowerCase();if(normalizedCommandPath.length===0){return true}return TELEMETRY_PROMPT_SKIPPED_COMMANDS.has(normalizedCommandPath)}function parseTelemetryPromptAnswer(answer){const normalized=answer.trim().toLowerCase();if(normalized==="n"||normalized==="no"){return false}return true}async function promptTelemetryConsent(currentDefault){const defaultLabel=currentDefault?"Y/n":"y/N";const prompt=`pm telemetry helps improve reliability and usage diagnostics.
|
|
2
|
+
It is enabled by default and can be changed anytime via:
|
|
3
|
+
pm config global set telemetry-tracking --policy disabled
|
|
4
|
+
Enable telemetry now? [${defaultLabel}] `;const rl=readline.createInterface({input,output});try{const answer=await rl.question(prompt);if(answer.trim().length===0){return currentDefault}return parseTelemetryPromptAnswer(answer)}finally{rl.close()}}async function maybeRunFirstUseTelemetryPrompt(commandPath,globalOptions){if(shouldSkipTelemetryPrompt(commandPath,globalOptions)){return}try{const globalPmRoot=resolveGlobalPmRoot(process.cwd());const settings=await readSettings(globalPmRoot);if(settings.telemetry.first_run_prompt_completed){return}const enabled=await promptTelemetryConsent(settings.telemetry.enabled);settings.telemetry.enabled=enabled;settings.telemetry.first_run_prompt_completed=true;await writeSettings(globalPmRoot,settings,"telemetry:first_run_prompt");output.write(`Telemetry ${enabled?"enabled":"disabled"} for this CLI install. Update any time with pm config global set telemetry-tracking --policy ${enabled?"disabled":"enabled"}.
|
|
5
|
+
`)}catch{}}export{maybeRunFirstUseTelemetryPrompt};
|
|
108
6
|
//# sourceMappingURL=consent.js.map
|
|
109
|
-
//# debugId=6783b122-a1a8-5f86-9ac5-2c3e811622ed
|
|
@@ -1,247 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* @module core/telemetry/observability
|
|
3
|
-
*
|
|
4
|
-
* Captures consent-aware telemetry and observability events for Observability.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="e896db69-ed90-53f1-a227-e3d061b3bc8d")}catch(e){}}();
|
|
8
|
-
import { EXIT_CODE } from "../shared/constants.js";
|
|
9
|
-
const SETUP_ROOT_COMMANDS = new Set([
|
|
10
|
-
"init",
|
|
11
|
-
"config",
|
|
12
|
-
"completion",
|
|
13
|
-
"completion-statuses",
|
|
14
|
-
"completion-tags",
|
|
15
|
-
"completion-types",
|
|
16
|
-
]);
|
|
17
|
-
const QUERY_ROOT_COMMANDS = new Set([
|
|
18
|
-
"list",
|
|
19
|
-
"list-all",
|
|
20
|
-
"list-open",
|
|
21
|
-
"list-in-progress",
|
|
22
|
-
"list-blocked",
|
|
23
|
-
"list-closed",
|
|
24
|
-
"list-canceled",
|
|
25
|
-
"list-draft",
|
|
26
|
-
"search",
|
|
27
|
-
"get",
|
|
28
|
-
"context",
|
|
29
|
-
"calendar",
|
|
30
|
-
"history",
|
|
31
|
-
"activity",
|
|
32
|
-
"aggregate",
|
|
33
|
-
"deps",
|
|
34
|
-
"contracts",
|
|
35
|
-
"stats",
|
|
36
|
-
]);
|
|
37
|
-
const MUTATION_ROOT_COMMANDS = new Set([
|
|
38
|
-
"create",
|
|
39
|
-
"update",
|
|
40
|
-
"update-many",
|
|
41
|
-
"close-many",
|
|
42
|
-
"append",
|
|
43
|
-
"close",
|
|
44
|
-
"delete",
|
|
45
|
-
"restore",
|
|
46
|
-
"claim",
|
|
47
|
-
"release",
|
|
48
|
-
"comments",
|
|
49
|
-
"notes",
|
|
50
|
-
"learnings",
|
|
51
|
-
"files",
|
|
52
|
-
"docs",
|
|
53
|
-
"start-task",
|
|
54
|
-
"pause-task",
|
|
55
|
-
"close-task",
|
|
56
|
-
]);
|
|
57
|
-
const TESTING_ROOT_COMMANDS = new Set([
|
|
58
|
-
"test",
|
|
59
|
-
"test-all",
|
|
60
|
-
"test-runs",
|
|
61
|
-
"test-verify",
|
|
62
|
-
"trace-test",
|
|
63
|
-
"test-ping",
|
|
64
|
-
]);
|
|
65
|
-
const DIAGNOSTICS_ROOT_COMMANDS = new Set([
|
|
66
|
-
"health",
|
|
67
|
-
"validate",
|
|
68
|
-
"normalize",
|
|
69
|
-
"reindex",
|
|
70
|
-
"gc",
|
|
71
|
-
"telemetry",
|
|
72
|
-
"extension-doctor",
|
|
73
|
-
]);
|
|
74
|
-
function normalizeCommandPath(commandPath) {
|
|
75
|
-
return commandPath.trim().replaceAll(/\s+/g, " ").toLowerCase();
|
|
76
|
-
}
|
|
77
|
-
function normalizeErrorCode(errorCode) {
|
|
78
|
-
const normalized = errorCode?.trim().toLowerCase();
|
|
79
|
-
return normalized && normalized.length > 0 ? normalized : undefined;
|
|
80
|
-
}
|
|
81
|
-
const TELEMETRY_ERROR_MESSAGE_CLASSIFIERS = [
|
|
82
|
-
{
|
|
83
|
-
code: "unknown_command",
|
|
84
|
-
matches: (message) => message.includes("unknown command"),
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
code: "unknown_option",
|
|
88
|
-
matches: (message) => message.includes("unknown option"),
|
|
89
|
-
},
|
|
90
|
-
{
|
|
91
|
-
code: "missing_required_option",
|
|
92
|
-
matches: (message) => message.includes("missing required options") ||
|
|
93
|
-
message.includes("missing required option"),
|
|
94
|
-
},
|
|
95
|
-
{
|
|
96
|
-
code: "missing_required_argument",
|
|
97
|
-
matches: (message) => message.includes("missing required argument"),
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
code: "no_update_fields",
|
|
101
|
-
matches: (message) => message.includes("no update flags provided"),
|
|
102
|
-
},
|
|
103
|
-
{
|
|
104
|
-
code: "ownership_conflict",
|
|
105
|
-
matches: (message) => message.includes("is assigned to") && message.includes("use --force"),
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
code: "lock_conflict",
|
|
109
|
-
matches: (message) => message.includes("is locked"),
|
|
110
|
-
},
|
|
111
|
-
{
|
|
112
|
-
code: "terminal_state_conflict",
|
|
113
|
-
matches: (message) => message.includes("already terminal") && message.includes("use --force"),
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
code: "tracker_not_initialized",
|
|
117
|
-
matches: (message) => message.includes("tracker is not initialized"),
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
code: "item_not_found",
|
|
121
|
-
matches: (message) => message.includes(" not found"),
|
|
122
|
-
},
|
|
123
|
-
{
|
|
124
|
-
code: "close_through_update",
|
|
125
|
-
matches: (message) => message.includes('use "pm close <id> <text>" to close an item') ||
|
|
126
|
-
(message.includes("invalid --status value") &&
|
|
127
|
-
message.includes('"closed"')),
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
code: "invalid_argument_value",
|
|
131
|
-
matches: (message) => message.startsWith("invalid ") ||
|
|
132
|
-
message.includes(" must be ") ||
|
|
133
|
-
message.includes(" requires "),
|
|
134
|
-
},
|
|
135
|
-
{
|
|
136
|
-
code: "invalid_command_usage",
|
|
137
|
-
matches: (message) => message.includes("either as positional") &&
|
|
138
|
-
message.includes("not both"),
|
|
139
|
-
},
|
|
140
|
-
];
|
|
141
|
-
const TELEMETRY_EXIT_CODE_FALLBACKS = new Map([
|
|
142
|
-
[EXIT_CODE.USAGE, "invalid_command_usage"],
|
|
143
|
-
[EXIT_CODE.NOT_FOUND, "item_not_found"],
|
|
144
|
-
[EXIT_CODE.CONFLICT, "lock_conflict"],
|
|
145
|
-
[EXIT_CODE.DEPENDENCY_FAILED, "dependency_failed"],
|
|
146
|
-
]);
|
|
147
|
-
/** Implements derive telemetry command taxonomy for the public runtime surface of this module. */
|
|
148
|
-
export function deriveTelemetryCommandTaxonomy(commandPath) {
|
|
149
|
-
const normalizedPath = normalizeCommandPath(commandPath);
|
|
150
|
-
// tokens always has at least one element (the fallback ["<unknown>"]), so the
|
|
151
|
-
// first/last lookups are never undefined.
|
|
152
|
-
const tokens = normalizedPath.length > 0 ? normalizedPath.split(" ") : ["<unknown>"];
|
|
153
|
-
const root = tokens[0];
|
|
154
|
-
const leaf = tokens[tokens.length - 1];
|
|
155
|
-
let family = "other";
|
|
156
|
-
if (SETUP_ROOT_COMMANDS.has(root)) {
|
|
157
|
-
family = "setup";
|
|
158
|
-
}
|
|
159
|
-
else if (QUERY_ROOT_COMMANDS.has(root)) {
|
|
160
|
-
family = "query";
|
|
161
|
-
}
|
|
162
|
-
else if (MUTATION_ROOT_COMMANDS.has(root)) {
|
|
163
|
-
family = "mutation";
|
|
164
|
-
}
|
|
165
|
-
else if (TESTING_ROOT_COMMANDS.has(root)) {
|
|
166
|
-
family = "testing";
|
|
167
|
-
}
|
|
168
|
-
else if (root === "extension") {
|
|
169
|
-
family = "extension";
|
|
170
|
-
}
|
|
171
|
-
else if (DIAGNOSTICS_ROOT_COMMANDS.has(root)) {
|
|
172
|
-
family = "diagnostics";
|
|
173
|
-
}
|
|
174
|
-
return {
|
|
175
|
-
command_path: normalizedPath.length > 0 ? normalizedPath : "<unknown>",
|
|
176
|
-
command_root: root,
|
|
177
|
-
command_leaf: leaf,
|
|
178
|
-
command_depth: tokens.length,
|
|
179
|
-
command_family: family,
|
|
180
|
-
};
|
|
181
|
-
}
|
|
182
|
-
/** Implements infer telemetry error code for the public runtime surface of this module. */
|
|
183
|
-
export function inferTelemetryErrorCode(params) {
|
|
184
|
-
if (params.ok) {
|
|
185
|
-
return undefined;
|
|
186
|
-
}
|
|
187
|
-
const explicit = normalizeErrorCode(params.errorCode);
|
|
188
|
-
if (explicit) {
|
|
189
|
-
return explicit;
|
|
190
|
-
}
|
|
191
|
-
const message = (params.errorMessage ?? "").trim().toLowerCase();
|
|
192
|
-
// NOTE: A "strict create mode requires concrete values for --" message is always
|
|
193
|
-
// classified as invalid_argument_value by the ordered ` requires ` classifier,
|
|
194
|
-
// so a dedicated branch would be unreachable and is intentionally omitted.
|
|
195
|
-
for (const classifier of TELEMETRY_ERROR_MESSAGE_CLASSIFIERS) {
|
|
196
|
-
if (classifier.matches(message)) {
|
|
197
|
-
return classifier.code;
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
const exitCode = Number.isFinite(params.exitCode)
|
|
201
|
-
? Math.max(0, Math.trunc(params.exitCode))
|
|
202
|
-
: undefined;
|
|
203
|
-
if (exitCode !== undefined) {
|
|
204
|
-
return TELEMETRY_EXIT_CODE_FALLBACKS.get(exitCode) ?? "command_failed";
|
|
205
|
-
}
|
|
206
|
-
return "command_failed";
|
|
207
|
-
}
|
|
208
|
-
/** Implements derive telemetry command resolution for the public runtime surface of this module. */
|
|
209
|
-
export function deriveTelemetryCommandResolution(params) {
|
|
210
|
-
if (params.ok) {
|
|
211
|
-
return "success";
|
|
212
|
-
}
|
|
213
|
-
const normalizedCode = normalizeErrorCode(params.errorCode);
|
|
214
|
-
if (normalizedCode === "unknown_command") {
|
|
215
|
-
return "nonexistent_command";
|
|
216
|
-
}
|
|
217
|
-
if (normalizedCode === "unknown_option") {
|
|
218
|
-
return "invalid_option";
|
|
219
|
-
}
|
|
220
|
-
if (normalizedCode === "missing_required_option") {
|
|
221
|
-
return "missing_required_option";
|
|
222
|
-
}
|
|
223
|
-
if (normalizedCode === "missing_required_argument") {
|
|
224
|
-
return "missing_required_argument";
|
|
225
|
-
}
|
|
226
|
-
if (normalizedCode === "health_findings") {
|
|
227
|
-
return "health_findings";
|
|
228
|
-
}
|
|
229
|
-
if (normalizedCode === "validation_findings") {
|
|
230
|
-
return "validation_findings";
|
|
231
|
-
}
|
|
232
|
-
if (params.errorCategory === "usage") {
|
|
233
|
-
return "invalid_usage";
|
|
234
|
-
}
|
|
235
|
-
if (params.errorCategory === "validation") {
|
|
236
|
-
return "validation_failed";
|
|
237
|
-
}
|
|
238
|
-
if (params.errorCategory === "conflict") {
|
|
239
|
-
return "conflict";
|
|
240
|
-
}
|
|
241
|
-
if (params.errorCategory === "runtime") {
|
|
242
|
-
return "runtime_failed";
|
|
243
|
-
}
|
|
244
|
-
return "unknown_failed";
|
|
245
|
-
}
|
|
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]="4e329152-7e9e-5cf2-a4cf-35260a599360")}catch(e2){}})();import{EXIT_CODE}from"../shared/constants.js";const SETUP_ROOT_COMMANDS=new Set(["init","config","completion","completion-statuses","completion-tags","completion-types"]);const QUERY_ROOT_COMMANDS=new Set(["list","list-all","list-open","list-in-progress","list-blocked","list-closed","list-canceled","list-draft","search","get","context","calendar","history","activity","aggregate","deps","contracts","stats"]);const MUTATION_ROOT_COMMANDS=new Set(["create","update","update-many","close-many","append","close","delete","restore","claim","release","comments","notes","learnings","files","docs","start-task","pause-task","close-task"]);const TESTING_ROOT_COMMANDS=new Set(["test","test-all","test-runs","test-verify","trace-test","test-ping"]);const DIAGNOSTICS_ROOT_COMMANDS=new Set(["health","validate","normalize","reindex","gc","telemetry","extension-doctor"]);function normalizeCommandPath(commandPath){return commandPath.trim().replaceAll(/\s+/g," ").toLowerCase()}function normalizeErrorCode(errorCode){const normalized=errorCode?.trim().toLowerCase();return normalized&&normalized.length>0?normalized:void 0}const TELEMETRY_ERROR_MESSAGE_CLASSIFIERS=[{code:"unknown_command",matches:message=>message.includes("unknown command")},{code:"unknown_option",matches:message=>message.includes("unknown option")},{code:"missing_required_option",matches:message=>message.includes("missing required options")||message.includes("missing required option")},{code:"missing_required_argument",matches:message=>message.includes("missing required argument")},{code:"no_update_fields",matches:message=>message.includes("no update flags provided")},{code:"ownership_conflict",matches:message=>message.includes("is assigned to")&&message.includes("use --force")},{code:"lock_conflict",matches:message=>message.includes("is locked")},{code:"terminal_state_conflict",matches:message=>message.includes("already terminal")&&message.includes("use --force")},{code:"tracker_not_initialized",matches:message=>message.includes("tracker is not initialized")},{code:"item_not_found",matches:message=>message.includes(" not found")},{code:"close_through_update",matches:message=>message.includes('use "pm close <id> <text>" to close an item')||message.includes("invalid --status value")&&message.includes('"closed"')},{code:"invalid_argument_value",matches:message=>message.startsWith("invalid ")||message.includes(" must be ")||message.includes(" requires ")},{code:"invalid_command_usage",matches:message=>message.includes("either as positional")&&message.includes("not both")}];const TELEMETRY_EXIT_CODE_FALLBACKS=new Map([[EXIT_CODE.USAGE,"invalid_command_usage"],[EXIT_CODE.NOT_FOUND,"item_not_found"],[EXIT_CODE.CONFLICT,"lock_conflict"],[EXIT_CODE.DEPENDENCY_FAILED,"dependency_failed"]]);function deriveTelemetryCommandTaxonomy(commandPath){const normalizedPath=normalizeCommandPath(commandPath);const tokens=normalizedPath.length>0?normalizedPath.split(" "):["<unknown>"];const root=tokens[0];const leaf=tokens[tokens.length-1];let family="other";if(SETUP_ROOT_COMMANDS.has(root)){family="setup"}else if(QUERY_ROOT_COMMANDS.has(root)){family="query"}else if(MUTATION_ROOT_COMMANDS.has(root)){family="mutation"}else if(TESTING_ROOT_COMMANDS.has(root)){family="testing"}else if(root==="extension"){family="extension"}else if(DIAGNOSTICS_ROOT_COMMANDS.has(root)){family="diagnostics"}return{command_path:normalizedPath.length>0?normalizedPath:"<unknown>",command_root:root,command_leaf:leaf,command_depth:tokens.length,command_family:family}}function inferTelemetryErrorCode(params){if(params.ok){return void 0}const explicit=normalizeErrorCode(params.errorCode);if(explicit){return explicit}const message=(params.errorMessage??"").trim().toLowerCase();for(const classifier of TELEMETRY_ERROR_MESSAGE_CLASSIFIERS){if(classifier.matches(message)){return classifier.code}}const exitCode=Number.isFinite(params.exitCode)?Math.max(0,Math.trunc(params.exitCode)):void 0;if(exitCode!==void 0){return TELEMETRY_EXIT_CODE_FALLBACKS.get(exitCode)??"command_failed"}return"command_failed"}function deriveTelemetryCommandResolution(params){if(params.ok){return"success"}const normalizedCode=normalizeErrorCode(params.errorCode);if(normalizedCode==="unknown_command"){return"nonexistent_command"}if(normalizedCode==="unknown_option"){return"invalid_option"}if(normalizedCode==="missing_required_option"){return"missing_required_option"}if(normalizedCode==="missing_required_argument"){return"missing_required_argument"}if(normalizedCode==="health_findings"){return"health_findings"}if(normalizedCode==="validation_findings"){return"validation_findings"}if(params.errorCategory==="usage"){return"invalid_usage"}if(params.errorCategory==="validation"){return"validation_failed"}if(params.errorCategory==="conflict"){return"conflict"}if(params.errorCategory==="runtime"){return"runtime_failed"}return"unknown_failed"}export{deriveTelemetryCommandResolution,deriveTelemetryCommandTaxonomy,inferTelemetryErrorCode};
|
|
246
2
|
//# sourceMappingURL=observability.js.map
|
|
247
|
-
//# debugId=e896db69-ed90-53f1-a227-e3d061b3bc8d
|