@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,154 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* @module sdk/error-code-catalog
|
|
3
|
-
*
|
|
4
|
-
* Defines the stable, discoverable error vocabulary used across CLI, SDK, MCP,
|
|
5
|
-
* packages, and generated contract surfaces.
|
|
6
|
-
*/
|
|
7
|
-
/** Stable shell exit-code taxonomy shared by every structured error. */
|
|
8
|
-
|
|
9
|
-
!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]="c76fa303-6672-5c1e-9cf5-3a08bd3a7814")}catch(e){}}();
|
|
10
|
-
export const PM_ERROR_CODE_EXIT_CLASS_CONTRACTS = [
|
|
11
|
-
{ exit_code: 1, class: "generic_failure" },
|
|
12
|
-
{ exit_code: 2, class: "usage" },
|
|
13
|
-
{ exit_code: 3, class: "not_found" },
|
|
14
|
-
{ exit_code: 4, class: "conflict" },
|
|
15
|
-
{ exit_code: 5, class: "dependency_failed" },
|
|
16
|
-
];
|
|
17
|
-
const ERROR_CLASS_BY_EXIT_CODE = new Map(PM_ERROR_CODE_EXIT_CLASS_CONTRACTS.map((contract) => [contract.exit_code, contract.class]));
|
|
18
|
-
/** Normalize a declared non-empty string set into stable contract order. */
|
|
19
|
-
function normalizeContractList(values) {
|
|
20
|
-
return [
|
|
21
|
-
...new Set(values.map((value) => value.trim()).filter(Boolean)),
|
|
22
|
-
].sort();
|
|
23
|
-
}
|
|
24
|
-
function normalizeOwnedStates(states) {
|
|
25
|
-
if (!states)
|
|
26
|
-
return [];
|
|
27
|
-
const seenStates = new Set();
|
|
28
|
-
const seenProbes = new Set();
|
|
29
|
-
return states
|
|
30
|
-
.map((state) => {
|
|
31
|
-
const normalizedState = state.state.trim();
|
|
32
|
-
const probeId = state.probe_id.trim();
|
|
33
|
-
const entrypoints = normalizeContractList(state.entrypoints);
|
|
34
|
-
if (!/^[a-z][a-z0-9_]*$/.test(normalizedState) ||
|
|
35
|
-
!/^[a-z][a-z0-9-]*$/.test(probeId) ||
|
|
36
|
-
entrypoints.length === 0 ||
|
|
37
|
-
seenStates.has(normalizedState) ||
|
|
38
|
-
seenProbes.has(probeId)) {
|
|
39
|
-
throw new TypeError("Invalid pm refusal state contract");
|
|
40
|
-
}
|
|
41
|
-
seenStates.add(normalizedState);
|
|
42
|
-
seenProbes.add(probeId);
|
|
43
|
-
return {
|
|
44
|
-
state: normalizedState,
|
|
45
|
-
probe_id: probeId,
|
|
46
|
-
entrypoints,
|
|
47
|
-
expected_exit_class: state.expected_exit_class,
|
|
48
|
-
};
|
|
49
|
-
})
|
|
50
|
-
.sort((left, right) => left.state.localeCompare(right.state));
|
|
51
|
-
}
|
|
52
|
-
function isValidNormalizedErrorCodeContract(declaration, sources, emittingCommands, canonicalCode, aliases) {
|
|
53
|
-
return ![
|
|
54
|
-
[1, 2, 3, 4, 5].includes(declaration.exit_code),
|
|
55
|
-
declaration.meaning.trim().length > 0,
|
|
56
|
-
declaration.recovery.trim().length > 0,
|
|
57
|
-
sources.length > 0,
|
|
58
|
-
emittingCommands.length > 0,
|
|
59
|
-
/^[a-z][a-z0-9_]*$/.test(canonicalCode),
|
|
60
|
-
aliases.every((alias) => /^[a-z][a-z0-9_]*$/.test(alias)),
|
|
61
|
-
ERROR_CLASS_BY_EXIT_CODE.get(declaration.exit_code) === declaration.class,
|
|
62
|
-
].includes(false);
|
|
63
|
-
}
|
|
64
|
-
function resolveCanonicalErrorCodeDeclaration(declaration, byCode) {
|
|
65
|
-
let current = declaration;
|
|
66
|
-
const path = new Set();
|
|
67
|
-
while (current.canonical_code !== current.code) {
|
|
68
|
-
if (path.has(current.code)) {
|
|
69
|
-
throw new TypeError(`Alias cycle in pm error code catalog: ${declaration.code}`);
|
|
70
|
-
}
|
|
71
|
-
path.add(current.code);
|
|
72
|
-
const target = byCode.get(current.canonical_code);
|
|
73
|
-
if (!target) {
|
|
74
|
-
throw new TypeError(`Invalid pm error code contract: ${declaration.code}`);
|
|
75
|
-
}
|
|
76
|
-
current = target;
|
|
77
|
-
}
|
|
78
|
-
return current;
|
|
79
|
-
}
|
|
80
|
-
function validateErrorCodeAliases(declarations) {
|
|
81
|
-
const byCode = new Map(declarations.map((entry) => [entry.code, entry]));
|
|
82
|
-
for (const declaration of declarations) {
|
|
83
|
-
const canonical = resolveCanonicalErrorCodeDeclaration(declaration, byCode);
|
|
84
|
-
if (canonical.exit_code !== declaration.exit_code ||
|
|
85
|
-
canonical.class !== declaration.class) {
|
|
86
|
-
throw new TypeError(`Alias transport mismatch for pm error code: ${declaration.code}`);
|
|
87
|
-
}
|
|
88
|
-
const expectedAliases = declarations
|
|
89
|
-
.filter((candidate) => candidate.code !== canonical.code &&
|
|
90
|
-
candidate.canonical_code === canonical.code)
|
|
91
|
-
.map((candidate) => candidate.code)
|
|
92
|
-
.sort();
|
|
93
|
-
if (declaration.code === canonical.code
|
|
94
|
-
? JSON.stringify(declaration.aliases) !==
|
|
95
|
-
JSON.stringify(expectedAliases)
|
|
96
|
-
: declaration.aliases.length > 0) {
|
|
97
|
-
throw new TypeError(`Invalid pm error code contract: ${declaration.code}`);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
/** Validate, normalize, sort, and freeze an error-code catalog. */
|
|
102
|
-
export function definePmErrorCodeCatalog(declarations) {
|
|
103
|
-
const seen = new Set();
|
|
104
|
-
const normalized = declarations.map((declaration) => {
|
|
105
|
-
const code = declaration.code.trim();
|
|
106
|
-
if (!/^[a-z][a-z0-9_]*$/.test(code)) {
|
|
107
|
-
throw new TypeError(`Invalid pm error code: ${JSON.stringify(declaration.code)}`);
|
|
108
|
-
}
|
|
109
|
-
if (seen.has(code)) {
|
|
110
|
-
throw new TypeError(`Duplicate pm error code: ${code}`);
|
|
111
|
-
}
|
|
112
|
-
seen.add(code);
|
|
113
|
-
const sources = normalizeContractList(declaration.sources);
|
|
114
|
-
const emittingCommands = normalizeContractList(declaration.emitting_commands);
|
|
115
|
-
const canonicalCode = (declaration.canonical_code ?? code).trim();
|
|
116
|
-
const aliases = normalizeContractList(declaration.aliases ?? []);
|
|
117
|
-
const ownedStates = normalizeOwnedStates(declaration.owned_states);
|
|
118
|
-
if (!isValidNormalizedErrorCodeContract(declaration, sources, emittingCommands, canonicalCode, aliases)) {
|
|
119
|
-
throw new TypeError(`Invalid pm error code contract: ${code}`);
|
|
120
|
-
}
|
|
121
|
-
if (ownedStates.some((state) => state.expected_exit_class !== declaration.class)) {
|
|
122
|
-
throw new TypeError(`Invalid pm refusal state exit class: ${code}`);
|
|
123
|
-
}
|
|
124
|
-
return Object.freeze({
|
|
125
|
-
...declaration,
|
|
126
|
-
code,
|
|
127
|
-
meaning: declaration.meaning.trim(),
|
|
128
|
-
recovery: declaration.recovery.trim(),
|
|
129
|
-
sources,
|
|
130
|
-
emitting_commands: emittingCommands,
|
|
131
|
-
canonical_code: canonicalCode,
|
|
132
|
-
aliases,
|
|
133
|
-
owned_states: ownedStates,
|
|
134
|
-
});
|
|
135
|
-
});
|
|
136
|
-
validateErrorCodeAliases(normalized);
|
|
137
|
-
return Object.freeze(normalized.sort((left, right) => left.code.localeCompare(right.code)));
|
|
138
|
-
}
|
|
139
|
-
/** Resolve an emitted code through its stable compatibility alias group. */
|
|
140
|
-
export function resolveCanonicalPmErrorCodeContract(code, catalog) {
|
|
141
|
-
const emitted = resolvePmErrorCodeContract(code, catalog);
|
|
142
|
-
return resolvePmErrorCodeContract(emitted.canonical_code ?? emitted.code, catalog);
|
|
143
|
-
}
|
|
144
|
-
/** Resolve one declared error contract and fail closed for unknown vocabulary. */
|
|
145
|
-
export function resolvePmErrorCodeContract(code, catalog) {
|
|
146
|
-
const normalized = code.trim();
|
|
147
|
-
const contract = catalog.find((entry) => entry.code === normalized);
|
|
148
|
-
if (!contract) {
|
|
149
|
-
throw new TypeError(`Unknown pm error code "${normalized}"`);
|
|
150
|
-
}
|
|
151
|
-
return contract;
|
|
152
|
-
}
|
|
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]="a2e77c4f-3899-518a-885f-ce5dd2090ac6")}catch(e2){}})();const PM_ERROR_CODE_EXIT_CLASS_CONTRACTS=[{exit_code:1,class:"generic_failure"},{exit_code:2,class:"usage"},{exit_code:3,class:"not_found"},{exit_code:4,class:"conflict"},{exit_code:5,class:"dependency_failed"}];const ERROR_CLASS_BY_EXIT_CODE=new Map(PM_ERROR_CODE_EXIT_CLASS_CONTRACTS.map(contract=>[contract.exit_code,contract.class]));function normalizeContractList(values){return[...new Set(values.map(value=>value.trim()).filter(Boolean))].sort()}function normalizeOwnedStates(states){if(!states)return[];const seenStates=new Set;const seenProbes=new Set;return states.map(state=>{const normalizedState=state.state.trim();const probeId=state.probe_id.trim();const entrypoints=normalizeContractList(state.entrypoints);if(!/^[a-z][a-z0-9_]*$/.test(normalizedState)||!/^[a-z][a-z0-9-]*$/.test(probeId)||entrypoints.length===0||seenStates.has(normalizedState)||seenProbes.has(probeId)){throw new TypeError("Invalid pm refusal state contract")}seenStates.add(normalizedState);seenProbes.add(probeId);return{state:normalizedState,probe_id:probeId,entrypoints,expected_exit_class:state.expected_exit_class}}).sort((left,right)=>left.state.localeCompare(right.state))}function isValidNormalizedErrorCodeContract(declaration,sources,emittingCommands,canonicalCode,aliases){return![[1,2,3,4,5].includes(declaration.exit_code),declaration.meaning.trim().length>0,declaration.recovery.trim().length>0,sources.length>0,emittingCommands.length>0,/^[a-z][a-z0-9_]*$/.test(canonicalCode),aliases.every(alias=>/^[a-z][a-z0-9_]*$/.test(alias)),ERROR_CLASS_BY_EXIT_CODE.get(declaration.exit_code)===declaration.class].includes(false)}function resolveCanonicalErrorCodeDeclaration(declaration,byCode){let current=declaration;const path=new Set;while(current.canonical_code!==current.code){if(path.has(current.code)){throw new TypeError(`Alias cycle in pm error code catalog: ${declaration.code}`)}path.add(current.code);const target=byCode.get(current.canonical_code);if(!target){throw new TypeError(`Invalid pm error code contract: ${declaration.code}`)}current=target}return current}function validateErrorCodeAliases(declarations){const byCode=new Map(declarations.map(entry=>[entry.code,entry]));for(const declaration of declarations){const canonical=resolveCanonicalErrorCodeDeclaration(declaration,byCode);if(canonical.exit_code!==declaration.exit_code||canonical.class!==declaration.class){throw new TypeError(`Alias transport mismatch for pm error code: ${declaration.code}`)}const expectedAliases=declarations.filter(candidate=>candidate.code!==canonical.code&&candidate.canonical_code===canonical.code).map(candidate=>candidate.code).sort();if(declaration.code===canonical.code?JSON.stringify(declaration.aliases)!==JSON.stringify(expectedAliases):declaration.aliases.length>0){throw new TypeError(`Invalid pm error code contract: ${declaration.code}`)}}}function definePmErrorCodeCatalog(declarations){const seen=new Set;const normalized=declarations.map(declaration=>{const code=declaration.code.trim();if(!/^[a-z][a-z0-9_]*$/.test(code)){throw new TypeError(`Invalid pm error code: ${JSON.stringify(declaration.code)}`)}if(seen.has(code)){throw new TypeError(`Duplicate pm error code: ${code}`)}seen.add(code);const sources=normalizeContractList(declaration.sources);const emittingCommands=normalizeContractList(declaration.emitting_commands);const canonicalCode=(declaration.canonical_code??code).trim();const aliases=normalizeContractList(declaration.aliases??[]);const ownedStates=normalizeOwnedStates(declaration.owned_states);if(!isValidNormalizedErrorCodeContract(declaration,sources,emittingCommands,canonicalCode,aliases)){throw new TypeError(`Invalid pm error code contract: ${code}`)}if(ownedStates.some(state=>state.expected_exit_class!==declaration.class)){throw new TypeError(`Invalid pm refusal state exit class: ${code}`)}return Object.freeze({...declaration,code,meaning:declaration.meaning.trim(),recovery:declaration.recovery.trim(),sources,emitting_commands:emittingCommands,canonical_code:canonicalCode,aliases,owned_states:ownedStates})});validateErrorCodeAliases(normalized);return Object.freeze(normalized.sort((left,right)=>left.code.localeCompare(right.code)))}function resolveCanonicalPmErrorCodeContract(code,catalog){const emitted=resolvePmErrorCodeContract(code,catalog);return resolvePmErrorCodeContract(emitted.canonical_code??emitted.code,catalog)}function resolvePmErrorCodeContract(code,catalog){const normalized=code.trim();const contract=catalog.find(entry=>entry.code===normalized);if(!contract){throw new TypeError(`Unknown pm error code "${normalized}"`)}return contract}export{PM_ERROR_CODE_EXIT_CLASS_CONTRACTS,definePmErrorCodeCatalog,resolveCanonicalPmErrorCodeContract,resolvePmErrorCodeContract};
|
|
153
2
|
//# sourceMappingURL=error-code-catalog.js.map
|
|
154
|
-
//# debugId=c76fa303-6672-5c1e-9cf5-3a08bd3a7814
|
|
@@ -1,59 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* @module sdk/error-runtime
|
|
3
|
-
*
|
|
4
|
-
* Provides presentation-independent normalization for values thrown through CLI and SDK runtimes.
|
|
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]="5810cf1d-fc9a-597b-a47e-a914009fadfa")}catch(e){}}();
|
|
8
|
-
import { EXIT_CODE } from "../core/shared/constants.js";
|
|
9
|
-
import { PmCliError } from "../core/shared/errors.js";
|
|
10
|
-
/** Returns a stable message for errors and unknown thrown values. */
|
|
11
|
-
export function describeUnknownError(error) {
|
|
12
|
-
if (error instanceof PmCliError) {
|
|
13
|
-
return error.message;
|
|
14
|
-
}
|
|
15
|
-
if (error instanceof Error) {
|
|
16
|
-
return error.message;
|
|
17
|
-
}
|
|
18
|
-
return "Unknown failure";
|
|
19
|
-
}
|
|
20
|
-
/** Reads a finite numeric exit code from an arbitrary thrown value. */
|
|
21
|
-
export function readThrownExitCode(error) {
|
|
22
|
-
if (typeof error !== "object" || error === null || !("exitCode" in error)) {
|
|
23
|
-
return undefined;
|
|
24
|
-
}
|
|
25
|
-
const exitCode = error.exitCode;
|
|
26
|
-
return typeof exitCode === "number" && Number.isFinite(exitCode)
|
|
27
|
-
? exitCode
|
|
28
|
-
: undefined;
|
|
29
|
-
}
|
|
30
|
-
/** Normalizes thrown exit codes to a positive integer failure status. */
|
|
31
|
-
export function normalizeThrownExitCode(exitCode) {
|
|
32
|
-
const normalized = Math.trunc(exitCode);
|
|
33
|
-
return normalized > EXIT_CODE.SUCCESS
|
|
34
|
-
? normalized
|
|
35
|
-
: EXIT_CODE.GENERIC_FAILURE;
|
|
36
|
-
}
|
|
37
|
-
/** Identifies errors emitted by Commander without importing its private classes. */
|
|
38
|
-
export function isCommanderError(error) {
|
|
39
|
-
return (typeof error === "object" &&
|
|
40
|
-
error !== null &&
|
|
41
|
-
"code" in error &&
|
|
42
|
-
typeof error.code === "string" &&
|
|
43
|
-
error.code.startsWith("commander."));
|
|
44
|
-
}
|
|
45
|
-
/** Converts non-Error thrown values into errors suitable for Sentry capture. */
|
|
46
|
-
export function wrapThrownErrorForSentry(error, message) {
|
|
47
|
-
if (error instanceof Error) {
|
|
48
|
-
return error;
|
|
49
|
-
}
|
|
50
|
-
const wrapped = new Error(message);
|
|
51
|
-
const exitCode = readThrownExitCode(error);
|
|
52
|
-
/* c8 ignore next */
|
|
53
|
-
if (exitCode !== undefined) {
|
|
54
|
-
wrapped.exitCode = normalizeThrownExitCode(exitCode);
|
|
55
|
-
}
|
|
56
|
-
return wrapped;
|
|
57
|
-
}
|
|
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]="bdf3dec8-63d1-5ea6-a413-64be0ae8f69f")}catch(e2){}})();import{EXIT_CODE}from"../core/shared/constants.js";import{PmCliError}from"../core/shared/errors.js";function describeUnknownError(error){if(error instanceof PmCliError){return error.message}if(error instanceof Error){return error.message}return"Unknown failure"}function readThrownExitCode(error){if(typeof error!=="object"||error===null||!("exitCode"in error)){return void 0}const exitCode=error.exitCode;return typeof exitCode==="number"&&Number.isFinite(exitCode)?exitCode:void 0}function normalizeThrownExitCode(exitCode){const normalized=Math.trunc(exitCode);return normalized>EXIT_CODE.SUCCESS?normalized:EXIT_CODE.GENERIC_FAILURE}function isCommanderError(error){return typeof error==="object"&&error!==null&&"code"in error&&typeof error.code==="string"&&error.code.startsWith("commander.")}function wrapThrownErrorForSentry(error,message){if(error instanceof Error){return error}const wrapped=new Error(message);const exitCode=readThrownExitCode(error);if(exitCode!==void 0){wrapped.exitCode=normalizeThrownExitCode(exitCode)}return wrapped}export{describeUnknownError,isCommanderError,normalizeThrownExitCode,readThrownExitCode,wrapThrownErrorForSentry};
|
|
58
2
|
//# sourceMappingURL=error-runtime.js.map
|
|
59
|
-
//# debugId=5810cf1d-fc9a-597b-a47e-a914009fadfa
|
package/dist/sdk/errors.js
CHANGED
|
@@ -1,59 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* @module sdk/errors
|
|
3
|
-
*
|
|
4
|
-
* Defines public SDK APIs and package-author helpers for Errors.
|
|
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]="41012e87-ed61-56b2-8505-8f786b3952b2")}catch(e){}}();
|
|
8
|
-
import { EXIT_CODE } from "../core/shared/constants.js";
|
|
9
|
-
import { PmCliError } from "../core/shared/errors.js";
|
|
10
|
-
/**
|
|
11
|
-
* The `Error.name` value carried by every {@link PmCliExpectedError}. The CLI's
|
|
12
|
-
* top-level handler and the Sentry crash filter recognise expected errors by
|
|
13
|
-
* matching this exact string rather than by `instanceof`, so an error thrown
|
|
14
|
-
* from a separately bundled or linked extension is still treated as expected.
|
|
15
|
-
*/
|
|
16
|
-
export const PM_CLI_EXPECTED_ERROR_NAME = "PmCliError";
|
|
17
|
-
function normalizeExpectedErrorExitCode(value) {
|
|
18
|
-
if (!Number.isFinite(value)) {
|
|
19
|
-
throw new TypeError("createPmCliExpectedError options.exitCode must be a finite number");
|
|
20
|
-
}
|
|
21
|
-
const normalized = Math.trunc(value);
|
|
22
|
-
if (normalized <= EXIT_CODE.SUCCESS) {
|
|
23
|
-
throw new TypeError("createPmCliExpectedError options.exitCode must be a positive exit code");
|
|
24
|
-
}
|
|
25
|
-
return normalized;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Create a package-safe expected CLI error.
|
|
29
|
-
*
|
|
30
|
-
* The CLI and Sentry filtering rely on the public error shape rather than a
|
|
31
|
-
* shared class identity, so package authors can throw this from bundled,
|
|
32
|
-
* linked, or separately installed extension code.
|
|
33
|
-
*/
|
|
34
|
-
export function createPmCliExpectedError(message, options = {}) {
|
|
35
|
-
if (typeof message !== "string" || message.trim().length === 0) {
|
|
36
|
-
throw new TypeError("createPmCliExpectedError message must be a non-empty string");
|
|
37
|
-
}
|
|
38
|
-
const error = new PmCliError(message, normalizeExpectedErrorExitCode(options.exitCode ?? EXIT_CODE.USAGE), options.context ?? {});
|
|
39
|
-
if ("cause" in options) {
|
|
40
|
-
Object.defineProperty(error, "cause", {
|
|
41
|
-
value: options.cause,
|
|
42
|
-
enumerable: false,
|
|
43
|
-
configurable: true,
|
|
44
|
-
writable: true,
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
return error;
|
|
48
|
-
}
|
|
49
|
-
/** Implements check whether pm cli expected error for the public runtime surface of this module. */
|
|
50
|
-
export function isPmCliExpectedError(error) {
|
|
51
|
-
if (!(error instanceof Error) || error.name !== PM_CLI_EXPECTED_ERROR_NAME) {
|
|
52
|
-
return false;
|
|
53
|
-
}
|
|
54
|
-
const candidate = error;
|
|
55
|
-
return (typeof candidate.exitCode === "number" &&
|
|
56
|
-
Number.isFinite(candidate.exitCode));
|
|
57
|
-
}
|
|
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]="9133d39d-b2fb-5f99-8fd3-87a7d2f8df6d")}catch(e2){}})();import{EXIT_CODE}from"../core/shared/constants.js";import{PmCliError}from"../core/shared/errors.js";const PM_CLI_EXPECTED_ERROR_NAME="PmCliError";function normalizeExpectedErrorExitCode(value){if(!Number.isFinite(value)){throw new TypeError("createPmCliExpectedError options.exitCode must be a finite number")}const normalized=Math.trunc(value);if(normalized<=EXIT_CODE.SUCCESS){throw new TypeError("createPmCliExpectedError options.exitCode must be a positive exit code")}return normalized}function createPmCliExpectedError(message,options={}){if(typeof message!=="string"||message.trim().length===0){throw new TypeError("createPmCliExpectedError message must be a non-empty string")}const error=new PmCliError(message,normalizeExpectedErrorExitCode(options.exitCode??EXIT_CODE.USAGE),options.context??{});if("cause"in options){Object.defineProperty(error,"cause",{value:options.cause,enumerable:false,configurable:true,writable:true})}return error}function isPmCliExpectedError(error){if(!(error instanceof Error)||error.name!==PM_CLI_EXPECTED_ERROR_NAME){return false}const candidate=error;return typeof candidate.exitCode==="number"&&Number.isFinite(candidate.exitCode)}export{PM_CLI_EXPECTED_ERROR_NAME,createPmCliExpectedError,isPmCliExpectedError};
|
|
58
2
|
//# sourceMappingURL=errors.js.map
|
|
59
|
-
//# debugId=41012e87-ed61-56b2-8505-8f786b3952b2
|
package/dist/sdk/eval.js
CHANGED
|
@@ -1,191 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* @module sdk/eval
|
|
3
|
-
*
|
|
4
|
-
* Implements the `pm eval` command surface (pm-u8n5): a search-relevance
|
|
5
|
-
* evaluation runner that scores a human-curated golden-query set against the
|
|
6
|
-
* live retrieval path and reports nDCG@k, MRR@k, precision@k, and recall@k per
|
|
7
|
-
* query plus the macro average. With `--fail-under` it doubles as a CI gate so
|
|
8
|
-
* relevance regressions — from corpus changes, hybrid-weight changes, or
|
|
9
|
-
* provider swaps (including the offline BM25 provider, pm-75k9) — fail the build
|
|
10
|
-
* instead of silently degrading retrieval quality.
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
!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]="9cc9405b-d2b8-59aa-893f-54892595788a")}catch(e){}}();
|
|
14
|
-
import { assertInitializedTracker } from "./environment/tracker-preflight.js";
|
|
15
|
-
import fs from "node:fs/promises";
|
|
16
|
-
import path from "node:path";
|
|
17
|
-
import { aggregateEvalMetrics, DEFAULT_EVAL_K, EVAL_QUERY_SET_EXAMPLE, EVAL_QUERY_SET_SCHEMA_ID, evaluateRanking, parseEvalQuerySet, } from "../core/search/eval.js";
|
|
18
|
-
import { EXIT_CODE } from "../core/shared/constants.js";
|
|
19
|
-
import { PmCliError } from "../core/shared/errors.js";
|
|
20
|
-
import { coercePositiveInteger } from "../core/shared/primitives.js";
|
|
21
|
-
import { resolvePmRoot } from "../core/store/paths.js";
|
|
22
|
-
import { runSearch } from "./query/search.js";
|
|
23
|
-
export { EVAL_QUERY_SET_CONTRACT, EVAL_QUERY_SET_EXAMPLE, EVAL_QUERY_SET_SCHEMA_ID, parseEvalQuerySet, } from "../core/search/eval.js";
|
|
24
|
-
/** Relative location (under the pm root) of the default golden-query set. A git-tracked, human-curated file so relevance ground truth lives alongside the tracker it evaluates. */
|
|
25
|
-
export const DEFAULT_EVAL_QUERIES_RELATIVE_PATH = path.join("search", "eval-queries.json");
|
|
26
|
-
/** Actionable context attached to every query-set loading or validation error. */
|
|
27
|
-
const EVAL_QUERY_SET_ERROR_CONTEXT = {
|
|
28
|
-
schema: EVAL_QUERY_SET_SCHEMA_ID,
|
|
29
|
-
examples: [JSON.stringify(EVAL_QUERY_SET_EXAMPLE)],
|
|
30
|
-
nextSteps: [
|
|
31
|
-
"Create a git-tracked golden-query JSON file that follows the schema, then re-run pm eval.",
|
|
32
|
-
],
|
|
33
|
-
};
|
|
34
|
-
const VALID_EVAL_MODES = new Set([
|
|
35
|
-
"keyword",
|
|
36
|
-
"semantic",
|
|
37
|
-
"hybrid",
|
|
38
|
-
]);
|
|
39
|
-
/** Resolves and validates the default retrieval mode for an evaluation run. */
|
|
40
|
-
const parseEvalMode = (raw) => {
|
|
41
|
-
if (raw === undefined) {
|
|
42
|
-
return "keyword";
|
|
43
|
-
}
|
|
44
|
-
const normalized = raw.trim().toLowerCase();
|
|
45
|
-
if (!VALID_EVAL_MODES.has(normalized)) {
|
|
46
|
-
throw new PmCliError("Eval --mode must be one of keyword|semantic|hybrid", EXIT_CODE.USAGE);
|
|
47
|
-
}
|
|
48
|
-
return normalized;
|
|
49
|
-
};
|
|
50
|
-
/** Resolves and validates the positive ranking cutoff for an evaluation run. */
|
|
51
|
-
const parseEvalK = (raw) => {
|
|
52
|
-
if (raw === undefined || raw === "") {
|
|
53
|
-
return DEFAULT_EVAL_K;
|
|
54
|
-
}
|
|
55
|
-
const parsed = coercePositiveInteger(raw);
|
|
56
|
-
if (parsed === null) {
|
|
57
|
-
throw new PmCliError("Eval --k must be a positive integer", EXIT_CODE.USAGE);
|
|
58
|
-
}
|
|
59
|
-
return parsed;
|
|
60
|
-
};
|
|
61
|
-
/** Resolves and validates an optional normalized nDCG gate threshold. */
|
|
62
|
-
const parseFailUnder = (raw) => {
|
|
63
|
-
if (raw === undefined || raw === "") {
|
|
64
|
-
return undefined;
|
|
65
|
-
}
|
|
66
|
-
const normalized = String(raw).trim();
|
|
67
|
-
const parsed = Number(normalized);
|
|
68
|
-
if ([
|
|
69
|
-
normalized.length === 0,
|
|
70
|
-
!Number.isFinite(parsed),
|
|
71
|
-
parsed < 0,
|
|
72
|
-
parsed > 1,
|
|
73
|
-
].includes(true)) {
|
|
74
|
-
throw new PmCliError("Eval --fail-under must be a number in the range [0, 1]", EXIT_CODE.USAGE);
|
|
75
|
-
}
|
|
76
|
-
return parsed;
|
|
77
|
-
};
|
|
78
|
-
/** Round a metric to four decimals to keep the JSON output compact and stable. */
|
|
79
|
-
const roundMetric = (value) => Math.round(value * 10_000) / 10_000;
|
|
80
|
-
/** Reads a golden-query file and translates missing-file failures to CLI guidance. */
|
|
81
|
-
const readEvalQuerySetFile = async (queriesPath) => {
|
|
82
|
-
try {
|
|
83
|
-
return await fs.readFile(queriesPath, "utf8");
|
|
84
|
-
}
|
|
85
|
-
catch {
|
|
86
|
-
throw new PmCliError(`Eval query set not found at ${queriesPath}`, EXIT_CODE.NOT_FOUND, {
|
|
87
|
-
...EVAL_QUERY_SET_ERROR_CONTEXT,
|
|
88
|
-
examples: [
|
|
89
|
-
`echo '${JSON.stringify(EVAL_QUERY_SET_EXAMPLE)}' > ${queriesPath}`,
|
|
90
|
-
"pm eval --queries ./my-eval.json",
|
|
91
|
-
],
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
};
|
|
95
|
-
/** Parses golden-query JSON while preserving a path-specific usage diagnostic. */
|
|
96
|
-
const parseEvalQuerySetJson = (raw, queriesPath) => {
|
|
97
|
-
try {
|
|
98
|
-
return JSON.parse(raw);
|
|
99
|
-
}
|
|
100
|
-
catch (error) {
|
|
101
|
-
throw new PmCliError(
|
|
102
|
-
/* c8 ignore next -- JSON.parse throws Error instances; String fallback protects nonstandard hosts. */
|
|
103
|
-
`Eval query set at ${queriesPath} is not valid JSON: ${error instanceof Error ? error.message : String(error)}`, EXIT_CODE.USAGE, EVAL_QUERY_SET_ERROR_CONTEXT);
|
|
104
|
-
}
|
|
105
|
-
};
|
|
106
|
-
/** Applies the structured golden-query contract and preserves its diagnostics. */
|
|
107
|
-
const validateEvalQuerySet = (parsed) => {
|
|
108
|
-
try {
|
|
109
|
-
return parseEvalQuerySet(parsed);
|
|
110
|
-
}
|
|
111
|
-
catch (error) {
|
|
112
|
-
throw new PmCliError(
|
|
113
|
-
/* c8 ignore next -- parseEvalQuerySet throws Error instances; String fallback protects nonstandard hosts. */
|
|
114
|
-
error instanceof Error ? error.message : String(error), EXIT_CODE.USAGE, EVAL_QUERY_SET_ERROR_CONTEXT);
|
|
115
|
-
}
|
|
116
|
-
};
|
|
117
|
-
/** Loads and validates a golden-query set from one resolved filesystem path. */
|
|
118
|
-
const loadEvalQuerySet = async (queriesPath) => validateEvalQuerySet(parseEvalQuerySetJson(await readEvalQuerySetFile(queriesPath), queriesPath));
|
|
119
|
-
/** Resolves the caller override or tracker-owned default golden-query path. */
|
|
120
|
-
const resolveEvalQueriesPath = (pmRoot, queries) => queries
|
|
121
|
-
? path.resolve(process.cwd(), queries)
|
|
122
|
-
: path.join(pmRoot, DEFAULT_EVAL_QUERIES_RELATIVE_PATH);
|
|
123
|
-
/** Executes and scores one golden query without rounding its aggregate input. */
|
|
124
|
-
const evaluateEvalQuery = async (evalQuery, defaultMode, k, global) => {
|
|
125
|
-
const mode = evalQuery.mode ?? defaultMode;
|
|
126
|
-
const searchResult = await runSearch(evalQuery.query, { mode, limit: String(k), fields: "id" }, global);
|
|
127
|
-
const rankedIds = searchResult.items
|
|
128
|
-
.map((item) => item.id)
|
|
129
|
-
.filter((id) => typeof id === "string");
|
|
130
|
-
const metrics = evaluateRanking(rankedIds, new Set(evalQuery.relevant_ids), k);
|
|
131
|
-
return {
|
|
132
|
-
metrics,
|
|
133
|
-
report: {
|
|
134
|
-
query: evalQuery.query,
|
|
135
|
-
mode,
|
|
136
|
-
relevant_total: metrics.relevant_total,
|
|
137
|
-
retrieved_relevant: metrics.retrieved_relevant,
|
|
138
|
-
ndcg: roundMetric(metrics.ndcg),
|
|
139
|
-
mrr: roundMetric(metrics.mrr),
|
|
140
|
-
precision: roundMetric(metrics.precision),
|
|
141
|
-
recall: roundMetric(metrics.recall),
|
|
142
|
-
},
|
|
143
|
-
};
|
|
144
|
-
};
|
|
145
|
-
/** Shapes rounded aggregate metrics and the optional gate result. */
|
|
146
|
-
const buildEvalResult = (k, reports, rawMetrics, failUnder) => {
|
|
147
|
-
const aggregate = aggregateEvalMetrics(rawMetrics);
|
|
148
|
-
return {
|
|
149
|
-
k,
|
|
150
|
-
query_count: reports.length,
|
|
151
|
-
aggregate: {
|
|
152
|
-
ndcg: roundMetric(aggregate.ndcg),
|
|
153
|
-
mrr: roundMetric(aggregate.mrr),
|
|
154
|
-
precision: roundMetric(aggregate.precision),
|
|
155
|
-
recall: roundMetric(aggregate.recall),
|
|
156
|
-
},
|
|
157
|
-
queries: reports,
|
|
158
|
-
...(failUnder !== undefined ? { fail_under: failUnder } : {}),
|
|
159
|
-
passed: failUnder === undefined || aggregate.ndcg >= failUnder,
|
|
160
|
-
};
|
|
161
|
-
};
|
|
162
|
-
/**
|
|
163
|
-
* Run the search-relevance evaluation (pm-u8n5). Loads the golden-query set
|
|
164
|
-
* (default `<pmRoot>/search/eval-queries.json`, overridable via `--queries`),
|
|
165
|
-
* runs each query through {@link runSearch} at the resolved mode, scores the
|
|
166
|
-
* returned ranking with the nDCG/MRR/precision/recall metrics, and macro-averages
|
|
167
|
-
* across queries. When `--fail-under` is supplied, `passed` reflects whether the
|
|
168
|
-
* aggregate nDCG@k cleared the threshold; the CLI layer maps a failed gate to a
|
|
169
|
-
* non-zero exit code.
|
|
170
|
-
*/
|
|
171
|
-
export const runEval = async (options, global) => {
|
|
172
|
-
const pmRoot = resolvePmRoot(process.cwd(), global.path);
|
|
173
|
-
await assertInitializedTracker(pmRoot);
|
|
174
|
-
const k = parseEvalK(options.k);
|
|
175
|
-
const defaultMode = parseEvalMode(options.mode);
|
|
176
|
-
const failUnder = parseFailUnder(options.failUnder);
|
|
177
|
-
const queriesPath = resolveEvalQueriesPath(pmRoot, options.queries);
|
|
178
|
-
const querySet = await loadEvalQuerySet(queriesPath);
|
|
179
|
-
const reports = [];
|
|
180
|
-
// Aggregate and gate on the UNROUNDED metrics; rounding is applied only to the
|
|
181
|
-
// emitted report values so display precision never flips a --fail-under decision.
|
|
182
|
-
const rawMetrics = [];
|
|
183
|
-
for (const evalQuery of querySet.queries) {
|
|
184
|
-
const { report, metrics } = await evaluateEvalQuery(evalQuery, defaultMode, k, global);
|
|
185
|
-
rawMetrics.push(metrics);
|
|
186
|
-
reports.push(report);
|
|
187
|
-
}
|
|
188
|
-
return buildEvalResult(k, reports, rawMetrics, failUnder);
|
|
189
|
-
};
|
|
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]="7f6cfdef-5456-5716-9067-8ccadf077f5f")}catch(e2){}})();import{assertInitializedTracker}from"./environment/tracker-preflight.js";import fs from"node:fs/promises";import path from"node:path";import{aggregateEvalMetrics,DEFAULT_EVAL_K,EVAL_QUERY_SET_EXAMPLE,EVAL_QUERY_SET_SCHEMA_ID,evaluateRanking,parseEvalQuerySet}from"../core/search/eval.js";import{EXIT_CODE}from"../core/shared/constants.js";import{PmCliError}from"../core/shared/errors.js";import{coercePositiveInteger}from"../core/shared/primitives.js";import{resolvePmRoot}from"../core/store/paths.js";import{runSearch}from"./query/search.js";import{EVAL_QUERY_SET_CONTRACT,EVAL_QUERY_SET_EXAMPLE as EVAL_QUERY_SET_EXAMPLE2,EVAL_QUERY_SET_SCHEMA_ID as EVAL_QUERY_SET_SCHEMA_ID2,parseEvalQuerySet as parseEvalQuerySet2}from"../core/search/eval.js";const DEFAULT_EVAL_QUERIES_RELATIVE_PATH=path.join("search","eval-queries.json");const EVAL_QUERY_SET_ERROR_CONTEXT={schema:EVAL_QUERY_SET_SCHEMA_ID,examples:[JSON.stringify(EVAL_QUERY_SET_EXAMPLE)],nextSteps:["Create a git-tracked golden-query JSON file that follows the schema, then re-run pm eval."]};const VALID_EVAL_MODES=new Set(["keyword","semantic","hybrid"]);const parseEvalMode=raw=>{if(raw===void 0){return"keyword"}const normalized=raw.trim().toLowerCase();if(!VALID_EVAL_MODES.has(normalized)){throw new PmCliError("Eval --mode must be one of keyword|semantic|hybrid",EXIT_CODE.USAGE)}return normalized};const parseEvalK=raw=>{if(raw===void 0||raw===""){return DEFAULT_EVAL_K}const parsed=coercePositiveInteger(raw);if(parsed===null){throw new PmCliError("Eval --k must be a positive integer",EXIT_CODE.USAGE)}return parsed};const parseFailUnder=raw=>{if(raw===void 0||raw===""){return void 0}const normalized=String(raw).trim();const parsed=Number(normalized);if([normalized.length===0,!Number.isFinite(parsed),parsed<0,parsed>1].includes(true)){throw new PmCliError("Eval --fail-under must be a number in the range [0, 1]",EXIT_CODE.USAGE)}return parsed};const roundMetric=value=>Math.round(value*1e4)/1e4;const readEvalQuerySetFile=async queriesPath=>{try{return await fs.readFile(queriesPath,"utf8")}catch{throw new PmCliError(`Eval query set not found at ${queriesPath}`,EXIT_CODE.NOT_FOUND,{...EVAL_QUERY_SET_ERROR_CONTEXT,examples:[`echo '${JSON.stringify(EVAL_QUERY_SET_EXAMPLE)}' > ${queriesPath}`,"pm eval --queries ./my-eval.json"]})}};const parseEvalQuerySetJson=(raw,queriesPath)=>{try{return JSON.parse(raw)}catch(error){throw new PmCliError(`Eval query set at ${queriesPath} is not valid JSON: ${error instanceof Error?error.message:String(error)}`,EXIT_CODE.USAGE,EVAL_QUERY_SET_ERROR_CONTEXT)}};const validateEvalQuerySet=parsed=>{try{return parseEvalQuerySet(parsed)}catch(error){throw new PmCliError(error instanceof Error?error.message:String(error),EXIT_CODE.USAGE,EVAL_QUERY_SET_ERROR_CONTEXT)}};const loadEvalQuerySet=async queriesPath=>validateEvalQuerySet(parseEvalQuerySetJson(await readEvalQuerySetFile(queriesPath),queriesPath));const resolveEvalQueriesPath=(pmRoot,queries)=>queries?path.resolve(process.cwd(),queries):path.join(pmRoot,DEFAULT_EVAL_QUERIES_RELATIVE_PATH);const evaluateEvalQuery=async(evalQuery,defaultMode,k,global2)=>{const mode=evalQuery.mode??defaultMode;const searchResult=await runSearch(evalQuery.query,{mode,limit:String(k),fields:"id"},global2);const rankedIds=searchResult.items.map(item=>item.id).filter(id=>typeof id==="string");const metrics=evaluateRanking(rankedIds,new Set(evalQuery.relevant_ids),k);return{metrics,report:{query:evalQuery.query,mode,relevant_total:metrics.relevant_total,retrieved_relevant:metrics.retrieved_relevant,ndcg:roundMetric(metrics.ndcg),mrr:roundMetric(metrics.mrr),precision:roundMetric(metrics.precision),recall:roundMetric(metrics.recall)}}};const buildEvalResult=(k,reports,rawMetrics,failUnder)=>{const aggregate=aggregateEvalMetrics(rawMetrics);return{k,query_count:reports.length,aggregate:{ndcg:roundMetric(aggregate.ndcg),mrr:roundMetric(aggregate.mrr),precision:roundMetric(aggregate.precision),recall:roundMetric(aggregate.recall)},queries:reports,...failUnder!==void 0?{fail_under:failUnder}:{},passed:failUnder===void 0||aggregate.ndcg>=failUnder}};const runEval=async(options,global2)=>{const pmRoot=resolvePmRoot(process.cwd(),global2.path);await assertInitializedTracker(pmRoot);const k=parseEvalK(options.k);const defaultMode=parseEvalMode(options.mode);const failUnder=parseFailUnder(options.failUnder);const queriesPath=resolveEvalQueriesPath(pmRoot,options.queries);const querySet=await loadEvalQuerySet(queriesPath);const reports=[];const rawMetrics=[];for(const evalQuery of querySet.queries){const{report,metrics}=await evaluateEvalQuery(evalQuery,defaultMode,k,global2);rawMetrics.push(metrics);reports.push(report)}return buildEvalResult(k,reports,rawMetrics,failUnder)};export{DEFAULT_EVAL_QUERIES_RELATIVE_PATH,EVAL_QUERY_SET_CONTRACT,EVAL_QUERY_SET_EXAMPLE2 as EVAL_QUERY_SET_EXAMPLE,EVAL_QUERY_SET_SCHEMA_ID2 as EVAL_QUERY_SET_SCHEMA_ID,parseEvalQuerySet2 as parseEvalQuerySet,runEval};
|
|
190
2
|
//# sourceMappingURL=eval.js.map
|
|
191
|
-
//# debugId=9cc9405b-d2b8-59aa-893f-54892595788a
|
|
@@ -1,93 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* @module sdk/extension/author-manifest
|
|
3
|
-
*
|
|
4
|
-
* Reads the optional extension manifest at a package-author workspace root and
|
|
5
|
-
* projects the public schema lint into health/doctor diagnostics.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="5755dee7-d2df-5ced-8a94-aeb51762edb7")}catch(e){}}();
|
|
9
|
-
import fs from "node:fs/promises";
|
|
10
|
-
import path from "node:path";
|
|
11
|
-
import { isFileAbsentError } from "../../core/fs/fs-utils.js";
|
|
12
|
-
import { lintExtensionManifestSchema, } from "../../core/extensions/manifest-schema.js";
|
|
13
|
-
import { resolveWorkspaceRoot } from "../../core/store/paths.js";
|
|
14
|
-
function manifestName(raw) {
|
|
15
|
-
return typeof raw.name === "string" && raw.name.trim().length > 0
|
|
16
|
-
? raw.name.trim()
|
|
17
|
-
: "workspace-manifest";
|
|
18
|
-
}
|
|
19
|
-
function authorManifestWarning(name, finding) {
|
|
20
|
-
return finding.code === "manifest_unknown_key"
|
|
21
|
-
? `extension_manifest_unknown_key:author:${name}:key=${finding.path}${finding.suggested_key ? `:suggested=${finding.suggested_key}` : ""}`
|
|
22
|
-
: `extension_manifest_no_version_bounds:author:${name}:suggested=pm_min_version`;
|
|
23
|
-
}
|
|
24
|
-
/** Inspect `<workspace>/manifest.json` without loading extension code. */
|
|
25
|
-
export async function inspectExtensionAuthorManifest(workspaceRoot) {
|
|
26
|
-
const manifestPath = path.join(workspaceRoot, "manifest.json");
|
|
27
|
-
let content;
|
|
28
|
-
try {
|
|
29
|
-
content = await fs.readFile(manifestPath, "utf8");
|
|
30
|
-
}
|
|
31
|
-
catch (error) {
|
|
32
|
-
if (isFileAbsentError(error)) {
|
|
33
|
-
return {
|
|
34
|
-
path: manifestPath,
|
|
35
|
-
present: false,
|
|
36
|
-
parse_status: "absent",
|
|
37
|
-
package_metadata_location: "package.json#pm",
|
|
38
|
-
schema_findings: [],
|
|
39
|
-
warnings: [],
|
|
40
|
-
remediation: [],
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
throw error;
|
|
44
|
-
}
|
|
45
|
-
let parsed;
|
|
46
|
-
try {
|
|
47
|
-
parsed = JSON.parse(content);
|
|
48
|
-
}
|
|
49
|
-
catch {
|
|
50
|
-
return {
|
|
51
|
-
path: manifestPath,
|
|
52
|
-
present: true,
|
|
53
|
-
parse_status: "invalid_json",
|
|
54
|
-
package_metadata_location: "package.json#pm",
|
|
55
|
-
schema_findings: [],
|
|
56
|
-
warnings: ["extension_author_manifest_invalid_json:manifest.json"],
|
|
57
|
-
remediation: [
|
|
58
|
-
"Repair manifest.json so it contains one valid JSON object, then rerun pm package doctor --project.",
|
|
59
|
-
],
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
63
|
-
return {
|
|
64
|
-
path: manifestPath,
|
|
65
|
-
present: true,
|
|
66
|
-
parse_status: "invalid_shape",
|
|
67
|
-
package_metadata_location: "package.json#pm",
|
|
68
|
-
schema_findings: [],
|
|
69
|
-
warnings: ["extension_author_manifest_invalid_shape:manifest.json"],
|
|
70
|
-
remediation: [
|
|
71
|
-
"Replace manifest.json with one JSON object, then rerun pm package doctor --project.",
|
|
72
|
-
],
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
const raw = parsed;
|
|
76
|
-
const lint = lintExtensionManifestSchema(raw);
|
|
77
|
-
const name = manifestName(raw);
|
|
78
|
-
return {
|
|
79
|
-
path: manifestPath,
|
|
80
|
-
present: true,
|
|
81
|
-
parse_status: "valid",
|
|
82
|
-
package_metadata_location: "package.json#pm",
|
|
83
|
-
schema_findings: lint.findings,
|
|
84
|
-
warnings: lint.findings.map((finding) => authorManifestWarning(name, finding)),
|
|
85
|
-
remediation: lint.findings.map((finding) => finding.message),
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
/** Inspect the author manifest for a resolved project tracker root. */
|
|
89
|
-
export function inspectExtensionAuthorManifestAtPmRoot(pmRoot) {
|
|
90
|
-
return inspectExtensionAuthorManifest(resolveWorkspaceRoot(pmRoot));
|
|
91
|
-
}
|
|
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]="b1bf79a0-1f04-590f-b613-45ca1b534d5d")}catch(e2){}})();import fs from"node:fs/promises";import path from"node:path";import{isFileAbsentError}from"../../core/fs/fs-utils.js";import{lintExtensionManifestSchema}from"../../core/extensions/manifest-schema.js";import{resolveWorkspaceRoot}from"../../core/store/paths.js";function manifestName(raw){return typeof raw.name==="string"&&raw.name.trim().length>0?raw.name.trim():"workspace-manifest"}function authorManifestWarning(name,finding){return finding.code==="manifest_unknown_key"?`extension_manifest_unknown_key:author:${name}:key=${finding.path}${finding.suggested_key?`:suggested=${finding.suggested_key}`:""}`:`extension_manifest_no_version_bounds:author:${name}:suggested=pm_min_version`}async function inspectExtensionAuthorManifest(workspaceRoot){const manifestPath=path.join(workspaceRoot,"manifest.json");let content;try{content=await fs.readFile(manifestPath,"utf8")}catch(error){if(isFileAbsentError(error)){return{path:manifestPath,present:false,parse_status:"absent",package_metadata_location:"package.json#pm",schema_findings:[],warnings:[],remediation:[]}}throw error}let parsed;try{parsed=JSON.parse(content)}catch{return{path:manifestPath,present:true,parse_status:"invalid_json",package_metadata_location:"package.json#pm",schema_findings:[],warnings:["extension_author_manifest_invalid_json:manifest.json"],remediation:["Repair manifest.json so it contains one valid JSON object, then rerun pm package doctor --project."]}}if(typeof parsed!=="object"||parsed===null||Array.isArray(parsed)){return{path:manifestPath,present:true,parse_status:"invalid_shape",package_metadata_location:"package.json#pm",schema_findings:[],warnings:["extension_author_manifest_invalid_shape:manifest.json"],remediation:["Replace manifest.json with one JSON object, then rerun pm package doctor --project."]}}const raw=parsed;const lint=lintExtensionManifestSchema(raw);const name=manifestName(raw);return{path:manifestPath,present:true,parse_status:"valid",package_metadata_location:"package.json#pm",schema_findings:lint.findings,warnings:lint.findings.map(finding=>authorManifestWarning(name,finding)),remediation:lint.findings.map(finding=>finding.message)}}function inspectExtensionAuthorManifestAtPmRoot(pmRoot){return inspectExtensionAuthorManifest(resolveWorkspaceRoot(pmRoot))}export{inspectExtensionAuthorManifest,inspectExtensionAuthorManifestAtPmRoot};
|
|
92
2
|
//# sourceMappingURL=author-manifest.js.map
|
|
93
|
-
//# debugId=5755dee7-d2df-5ced-8a94-aeb51762edb7
|