@unbrained/pm-cli 2026.9.7 → 2026.9.8
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 +5 -0
- package/.agents/skills/pm-user/references/ECOSYSTEM_PLANNING.md +95 -0
- package/.claude-plugin/marketplace.json +2 -2
- package/CHANGELOG.md +211 -181
- 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.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-3BZZA6A3.js +5 -0
- package/dist/cli-bundle/chunks/chunk-AMRDVX36.js +235 -0
- package/dist/cli-bundle/chunks/chunk-DAM4CBBR.js +2202 -0
- package/dist/cli-bundle/chunks/{chunk-WYRZZ5ZE.js → chunk-DEZPZOQ7.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-FLDWYEND.js +77 -0
- package/dist/cli-bundle/chunks/{chunk-NPN5I67J.js → chunk-G5ADGQ2D.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-JAAEYHUA.js +2 -0
- package/dist/cli-bundle/chunks/{chunk-JX4DH4WC.js → chunk-KR3RP4FH.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-LEZOUXG6.js +2 -0
- package/dist/cli-bundle/chunks/chunk-NSAPNEYH.js +2 -0
- package/dist/cli-bundle/chunks/chunk-QOEKOECV.js +29 -0
- package/dist/cli-bundle/chunks/chunk-RHSFOMHU.js +2 -0
- package/dist/cli-bundle/chunks/chunk-XOD2PCB6.js +20 -0
- package/dist/cli-bundle/chunks/{chunk-JT6XF6GE.js → chunk-YVEQ2AMO.js} +4 -4
- package/dist/cli-bundle/chunks/register-list-query-KSK3R63M.js +11 -0
- package/dist/cli-bundle/chunks/register-mutation-IQ5C7U6O.js +20 -0
- package/dist/cli-bundle/chunks/{register-operations-I5W3KMGB.js → register-operations-DWVHR2NC.js} +2 -2
- package/dist/cli-bundle/chunks/register-setup-BQ5SVD4B.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-3WRPWLA7.js +3 -0
- package/dist/cli-bundle/focused-chunks/chunk-7MBUII7U.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-COPBO5HW.js +8 -0
- package/dist/cli-bundle/focused-chunks/chunk-DUN4IXYN.js +20 -0
- package/dist/cli-bundle/focused-chunks/{chunk-LIJIA4TY.js → chunk-EE5QSM4Z.js} +3 -3
- package/dist/cli-bundle/focused-chunks/chunk-HJVARYM3.js +6 -0
- package/dist/cli-bundle/focused-chunks/chunk-IAUOUGVR.js +177 -0
- package/dist/cli-bundle/focused-chunks/chunk-KOOMJ54F.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-MZDXX7JY.js +56 -0
- package/dist/cli-bundle/focused-chunks/{chunk-M6PBRFSH.js → chunk-OPFHFGDD.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-QHNETP77.js +9 -0
- package/dist/cli-bundle/focused-chunks/{chunk-3BZEOXLT.js → chunk-RMWES4M6.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-RXT4P5QH.js +10 -0
- package/dist/cli-bundle/focused-chunks/chunk-SDOL6FM2.js +12 -0
- package/dist/cli-bundle/focused-chunks/chunk-SQV4AAUC.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-PEFABF7E.js → chunk-WE3IUNIW.js} +3 -3
- package/dist/cli-bundle/focused-chunks/chunk-YALOUBWJ.js +2 -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 +29 -29
- 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/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.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.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 +157 -837
- 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.js +1 -2261
- package/dist/sdk/governance/workspace-position.js +1 -163
- package/dist/sdk/governance.d.ts +1 -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 -0
- 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.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.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.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.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.js +1 -4
- package/dist/sdk/runtime-stats-options.js +1 -38
- 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.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.js +1 -245
- package/docs/AGENT_GUIDE.md +1 -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 +3 -0
- package/docs/SCRIPTING.md +21 -0
- package/docs/TESTING.md +23 -0
- package/docs/generated/FLAG_LEXICON_BUDGETS.md +5 -5
- package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +2 -2
- package/marketplace.json +2 -2
- package/package.json +1 -1
- package/packages/pm-beads/package.json +1 -1
- package/packages/pm-calendar/package.json +1 -1
- package/packages/pm-command-kit/package.json +1 -1
- package/packages/pm-digital-twin/package.json +1 -1
- package/packages/pm-governance-audit/package.json +1 -1
- package/packages/pm-guide-shell/package.json +1 -1
- package/packages/pm-kanban/package.json +1 -1
- package/packages/pm-lifecycle-hooks/package.json +1 -1
- package/packages/pm-linked-test-adapters/package.json +1 -1
- package/packages/pm-search-advanced/package.json +1 -1
- package/packages/pm-templates/package.json +1 -1
- package/packages/pm-todos/package.json +1 -1
- package/packages/pm-vcs/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-BAX2BYUW.js +0 -2111
- package/dist/cli-bundle/chunks/chunk-CKOL5U7J.js +0 -77
- 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-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-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,148 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* @module sdk/extension/shared
|
|
3
|
-
*
|
|
4
|
-
* Implements extension package-management support for Shared.
|
|
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]="af718efb-d1cf-5adc-9518-c858627e1b54")}catch(e){}}();
|
|
8
|
-
import fs from "node:fs/promises";
|
|
9
|
-
import path from "node:path";
|
|
10
|
-
import { pathExists } from "../../core/fs/fs-utils.js";
|
|
11
|
-
import { isPathWithinDirectory } from "../../core/fs/path-utils.js";
|
|
12
|
-
import { EXIT_CODE } from "../../core/shared/constants.js";
|
|
13
|
-
import { PmCliError } from "../../core/shared/errors.js";
|
|
14
|
-
import { DEFAULT_EXTENSION_PRIORITY, isCanonicalPathWithinDirectory, parseExtensionManifestDocument, } from "../../core/extensions/loader.js";
|
|
15
|
-
export { DEFAULT_EXTENSION_PRIORITY, isCanonicalPathWithinDirectory };
|
|
16
|
-
/** Implements normalize string list for the public runtime surface of this module. */
|
|
17
|
-
export function normalizeStringList(values) {
|
|
18
|
-
return [
|
|
19
|
-
...new Set(values.map((value) => value.trim()).filter((value) => value.length > 0)),
|
|
20
|
-
].sort((left, right) => left.localeCompare(right));
|
|
21
|
-
}
|
|
22
|
-
/** Implements normalize extension name for match for the public runtime surface of this module. */
|
|
23
|
-
export function normalizeExtensionNameForMatch(value) {
|
|
24
|
-
return value.trim().toLowerCase();
|
|
25
|
-
}
|
|
26
|
-
/** Implements normalize managed directory name for the public runtime surface of this module. */
|
|
27
|
-
export function normalizeManagedDirectoryName(name) {
|
|
28
|
-
const normalized = name
|
|
29
|
-
.trim()
|
|
30
|
-
.toLowerCase()
|
|
31
|
-
.replace(/[^a-z0-9._-]+/g, "-");
|
|
32
|
-
let start = 0;
|
|
33
|
-
while (normalized[start] === "-") {
|
|
34
|
-
start += 1;
|
|
35
|
-
}
|
|
36
|
-
let end = normalized.length;
|
|
37
|
-
while (end > start && normalized[end - 1] === "-") {
|
|
38
|
-
end -= 1;
|
|
39
|
-
}
|
|
40
|
-
const directoryName = normalized.slice(start, end);
|
|
41
|
-
if (directoryName.length === 0) {
|
|
42
|
-
throw new PmCliError("Extension manifest name must resolve to a non-empty directory name.", EXIT_CODE.USAGE);
|
|
43
|
-
}
|
|
44
|
-
if (directoryName === "." || directoryName === "..") {
|
|
45
|
-
// Manifest-controlled input must resolve to a dedicated child directory, never
|
|
46
|
-
// the extensions root itself or its parent (path-traversal guard).
|
|
47
|
-
throw new PmCliError('Extension manifest name must not resolve to "." or "..".', EXIT_CODE.USAGE);
|
|
48
|
-
}
|
|
49
|
-
return directoryName;
|
|
50
|
-
}
|
|
51
|
-
/** Implements parse extension manifest for the public runtime surface of this module. */
|
|
52
|
-
export function parseExtensionManifest(raw) {
|
|
53
|
-
return parseExtensionManifestDocument(raw);
|
|
54
|
-
}
|
|
55
|
-
/** Read advisory package metadata without replacing the primary validation error. */
|
|
56
|
-
async function readGithubSourcePackageMetadata(sourceRoot) {
|
|
57
|
-
try {
|
|
58
|
-
const packageJson = JSON.parse(await fs.readFile(path.join(sourceRoot, "package.json"), "utf8"));
|
|
59
|
-
const packageName = typeof packageJson.name === "string" &&
|
|
60
|
-
/^(?:@[a-z0-9._~-]+\/)?[a-z0-9._~-]+$/iu.test(packageJson.name)
|
|
61
|
-
? packageJson.name
|
|
62
|
-
: undefined;
|
|
63
|
-
return {
|
|
64
|
-
...(packageName ? { package_name: packageName } : {}),
|
|
65
|
-
has_build_script: ["build", "prepare", "prepack"].some((key) => typeof packageJson.scripts?.[key] === "string"),
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
catch {
|
|
69
|
-
return { has_build_script: false };
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
/** Build the source-aware error returned for a missing extension entry. */
|
|
73
|
-
async function missingExtensionEntryError(manifest, entryPath, context) {
|
|
74
|
-
if (context.source_kind !== "github" ||
|
|
75
|
-
typeof context.source_root !== "string") {
|
|
76
|
-
return new PmCliError(`Extension entry file is missing at "${entryPath}".`, EXIT_CODE.USAGE);
|
|
77
|
-
}
|
|
78
|
-
const packageMetadata = await readGithubSourcePackageMetadata(context.source_root);
|
|
79
|
-
const npmCommand = packageMetadata.package_name
|
|
80
|
-
? `pm install npm:${packageMetadata.package_name}`
|
|
81
|
-
: undefined;
|
|
82
|
-
const source = context.source_input ?? context.source_root;
|
|
83
|
-
return new PmCliError(`Extension entry "${manifest.entry}" is absent from GitHub source "${source}". pm install copies GitHub repositories without running package scripts${packageMetadata.has_build_script ? ", and this package declares a build or publish script" : ""}. ${npmCommand ? `Try "${npmCommand}" if the package is published, or install a locally built directory.` : "Build the source locally and install that directory, or use its published npm: package."}`, EXIT_CODE.USAGE, {
|
|
84
|
-
code: "github_source_entry_unbuilt",
|
|
85
|
-
required: "Use a GitHub tree with committed runtime output, a published npm artifact, or a locally built source directory.",
|
|
86
|
-
why: "GitHub installation is a source copy and never executes untrusted package build scripts.",
|
|
87
|
-
examples: npmCommand
|
|
88
|
-
? [npmCommand, `pm install ${context.source_root}`]
|
|
89
|
-
: [`pm install ${context.source_root}`],
|
|
90
|
-
nextSteps: npmCommand
|
|
91
|
-
? [
|
|
92
|
-
`Retry with ${npmCommand}.`,
|
|
93
|
-
"Or build the repository locally, then install its directory.",
|
|
94
|
-
]
|
|
95
|
-
: [
|
|
96
|
-
"Build the repository locally, then install its directory.",
|
|
97
|
-
"If it is published, retry with pm install npm:<package-name>.",
|
|
98
|
-
],
|
|
99
|
-
recovery: {
|
|
100
|
-
attempted_command: `pm install ${source}`,
|
|
101
|
-
normalized_args: ["install", source],
|
|
102
|
-
...(npmCommand ? { next_best_command: npmCommand } : {}),
|
|
103
|
-
},
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
/** Implements validate extension directory for the public runtime surface of this module. */
|
|
107
|
-
export async function validateExtensionDirectory(directory, context = {}) {
|
|
108
|
-
const manifestPath = path.join(directory, "manifest.json");
|
|
109
|
-
if (!(await pathExists(manifestPath))) {
|
|
110
|
-
throw new PmCliError(`Extension manifest is missing at "${manifestPath}".`, EXIT_CODE.USAGE);
|
|
111
|
-
}
|
|
112
|
-
let parsedManifest;
|
|
113
|
-
try {
|
|
114
|
-
parsedManifest = JSON.parse(await fs.readFile(manifestPath, "utf8"));
|
|
115
|
-
}
|
|
116
|
-
catch (error) {
|
|
117
|
-
throw new PmCliError(`Failed to parse extension manifest at "${manifestPath}": ${formatManifestReadError(error)}`, EXIT_CODE.USAGE);
|
|
118
|
-
}
|
|
119
|
-
const manifest = parseExtensionManifest(parsedManifest);
|
|
120
|
-
if (!manifest) {
|
|
121
|
-
throw new PmCliError(`Extension manifest at "${manifestPath}" is invalid.`, EXIT_CODE.USAGE);
|
|
122
|
-
}
|
|
123
|
-
const entryPath = path.resolve(directory, manifest.entry);
|
|
124
|
-
if (!isPathWithinDirectory(directory, entryPath)) {
|
|
125
|
-
throw new PmCliError(`Extension entry "${manifest.entry}" resolves outside extension directory "${directory}".`, EXIT_CODE.USAGE);
|
|
126
|
-
}
|
|
127
|
-
if (!(await pathExists(entryPath))) {
|
|
128
|
-
throw await missingExtensionEntryError(manifest, entryPath, context);
|
|
129
|
-
}
|
|
130
|
-
if (!(await isCanonicalPathWithinDirectory(directory, entryPath))) {
|
|
131
|
-
throw new PmCliError(`Extension entry "${manifest.entry}" resolves outside extension directory after symlink resolution.`, EXIT_CODE.USAGE);
|
|
132
|
-
}
|
|
133
|
-
return {
|
|
134
|
-
directory,
|
|
135
|
-
manifest_path: manifestPath,
|
|
136
|
-
entry_path: entryPath,
|
|
137
|
-
manifest,
|
|
138
|
-
};
|
|
139
|
-
}
|
|
140
|
-
function formatManifestReadError(error) {
|
|
141
|
-
return error instanceof Error ? error.message : String(error);
|
|
142
|
-
}
|
|
143
|
-
/** Public contract for test only extension shared, shared by SDK and presentation-layer consumers. */
|
|
144
|
-
export const _testOnlyExtensionShared = {
|
|
145
|
-
formatManifestReadError,
|
|
146
|
-
};
|
|
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]="209566d6-107e-5c01-995a-96a6dc0e40ed")}catch(e2){}})();import fs from"node:fs/promises";import path from"node:path";import{pathExists}from"../../core/fs/fs-utils.js";import{isPathWithinDirectory}from"../../core/fs/path-utils.js";import{EXIT_CODE}from"../../core/shared/constants.js";import{PmCliError}from"../../core/shared/errors.js";import{DEFAULT_EXTENSION_PRIORITY,isCanonicalPathWithinDirectory,parseExtensionManifestDocument}from"../../core/extensions/loader.js";function normalizeStringList(values){return[...new Set(values.map(value=>value.trim()).filter(value=>value.length>0))].sort((left,right)=>left.localeCompare(right))}function normalizeExtensionNameForMatch(value){return value.trim().toLowerCase()}function normalizeManagedDirectoryName(name){const normalized=name.trim().toLowerCase().replace(/[^a-z0-9._-]+/g,"-");let start=0;while(normalized[start]==="-"){start+=1}let end=normalized.length;while(end>start&&normalized[end-1]==="-"){end-=1}const directoryName=normalized.slice(start,end);if(directoryName.length===0){throw new PmCliError("Extension manifest name must resolve to a non-empty directory name.",EXIT_CODE.USAGE)}if(directoryName==="."||directoryName===".."){throw new PmCliError('Extension manifest name must not resolve to "." or "..".',EXIT_CODE.USAGE)}return directoryName}function parseExtensionManifest(raw){return parseExtensionManifestDocument(raw)}async function readGithubSourcePackageMetadata(sourceRoot){try{const packageJson=JSON.parse(await fs.readFile(path.join(sourceRoot,"package.json"),"utf8"));const packageName=typeof packageJson.name==="string"&&/^(?:@[a-z0-9._~-]+\/)?[a-z0-9._~-]+$/iu.test(packageJson.name)?packageJson.name:void 0;return{...packageName?{package_name:packageName}:{},has_build_script:["build","prepare","prepack"].some(key=>typeof packageJson.scripts?.[key]==="string")}}catch{return{has_build_script:false}}}async function missingExtensionEntryError(manifest,entryPath,context){if(context.source_kind!=="github"||typeof context.source_root!=="string"){return new PmCliError(`Extension entry file is missing at "${entryPath}".`,EXIT_CODE.USAGE)}const packageMetadata=await readGithubSourcePackageMetadata(context.source_root);const npmCommand=packageMetadata.package_name?`pm install npm:${packageMetadata.package_name}`:void 0;const source=context.source_input??context.source_root;return new PmCliError(`Extension entry "${manifest.entry}" is absent from GitHub source "${source}". pm install copies GitHub repositories without running package scripts${packageMetadata.has_build_script?", and this package declares a build or publish script":""}. ${npmCommand?`Try "${npmCommand}" if the package is published, or install a locally built directory.`:"Build the source locally and install that directory, or use its published npm: package."}`,EXIT_CODE.USAGE,{code:"github_source_entry_unbuilt",required:"Use a GitHub tree with committed runtime output, a published npm artifact, or a locally built source directory.",why:"GitHub installation is a source copy and never executes untrusted package build scripts.",examples:npmCommand?[npmCommand,`pm install ${context.source_root}`]:[`pm install ${context.source_root}`],nextSteps:npmCommand?[`Retry with ${npmCommand}.`,"Or build the repository locally, then install its directory."]:["Build the repository locally, then install its directory.","If it is published, retry with pm install npm:<package-name>."],recovery:{attempted_command:`pm install ${source}`,normalized_args:["install",source],...npmCommand?{next_best_command:npmCommand}:{}}})}async function validateExtensionDirectory(directory,context={}){const manifestPath=path.join(directory,"manifest.json");if(!await pathExists(manifestPath)){throw new PmCliError(`Extension manifest is missing at "${manifestPath}".`,EXIT_CODE.USAGE)}let parsedManifest;try{parsedManifest=JSON.parse(await fs.readFile(manifestPath,"utf8"))}catch(error){throw new PmCliError(`Failed to parse extension manifest at "${manifestPath}": ${formatManifestReadError(error)}`,EXIT_CODE.USAGE)}const manifest=parseExtensionManifest(parsedManifest);if(!manifest){throw new PmCliError(`Extension manifest at "${manifestPath}" is invalid.`,EXIT_CODE.USAGE)}const entryPath=path.resolve(directory,manifest.entry);if(!isPathWithinDirectory(directory,entryPath)){throw new PmCliError(`Extension entry "${manifest.entry}" resolves outside extension directory "${directory}".`,EXIT_CODE.USAGE)}if(!await pathExists(entryPath)){throw await missingExtensionEntryError(manifest,entryPath,context)}if(!await isCanonicalPathWithinDirectory(directory,entryPath)){throw new PmCliError(`Extension entry "${manifest.entry}" resolves outside extension directory after symlink resolution.`,EXIT_CODE.USAGE)}return{directory,manifest_path:manifestPath,entry_path:entryPath,manifest}}function formatManifestReadError(error){return error instanceof Error?error.message:String(error)}const _testOnlyExtensionShared={formatManifestReadError};export{DEFAULT_EXTENSION_PRIORITY,_testOnlyExtensionShared,isCanonicalPathWithinDirectory,normalizeExtensionNameForMatch,normalizeManagedDirectoryName,normalizeStringList,parseExtensionManifest,validateExtensionDirectory};
|
|
147
2
|
//# sourceMappingURL=shared.js.map
|
|
148
|
-
//# debugId=af718efb-d1cf-5adc-9518-c858627e1b54
|
|
@@ -1,66 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* @module sdk/extension/source-resolution
|
|
3
|
-
*
|
|
4
|
-
* Resolves install-source identity without executing package code.
|
|
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]="39bc7f14-2d32-5b58-97ab-647f9f238273")}catch(e){}}();
|
|
8
|
-
import { findInstalledNpmPackageCandidate, parseExtensionInstallSource, } from "./install-sources.js";
|
|
9
|
-
import { resolveBundledExtensionAliasSource, resolveBundledPackageNpmName, } from "./bundled-catalog.js";
|
|
10
|
-
/** Resolve bundled-alias provenance and competing installed npm identity. */
|
|
11
|
-
export async function resolveExtensionInstallSourceIdentity(explicitSourceInput, githubOption, ref) {
|
|
12
|
-
const bundledAliasSource = typeof githubOption === "string"
|
|
13
|
-
? null
|
|
14
|
-
: await resolveBundledExtensionAliasSource(explicitSourceInput);
|
|
15
|
-
const bundledAliasName = bundledAliasSource === null
|
|
16
|
-
? null
|
|
17
|
-
: explicitSourceInput.trim().toLowerCase();
|
|
18
|
-
const bundledPackageName = bundledAliasName === null
|
|
19
|
-
? null
|
|
20
|
-
: await resolveBundledPackageNpmName(bundledAliasName);
|
|
21
|
-
const installSource = parseExtensionInstallSource(bundledAliasSource ?? explicitSourceInput, { forceGithub: typeof githubOption === "string", ref });
|
|
22
|
-
const installedNpmCandidate = bundledAliasName === null
|
|
23
|
-
? null
|
|
24
|
-
: await findInstalledNpmPackageCandidate(explicitSourceInput);
|
|
25
|
-
return {
|
|
26
|
-
bundledAliasName,
|
|
27
|
-
bundledPackageName,
|
|
28
|
-
installSource,
|
|
29
|
-
sourceResolution: {
|
|
30
|
-
requested: explicitSourceInput,
|
|
31
|
-
selected: {
|
|
32
|
-
kind: bundledAliasName === null ? installSource.kind : "builtin",
|
|
33
|
-
input: bundledAliasName ?? installSource.input,
|
|
34
|
-
...(bundledPackageName === null ? {} : { package: bundledPackageName }),
|
|
35
|
-
},
|
|
36
|
-
ambiguous: installedNpmCandidate !== null,
|
|
37
|
-
precedence: "bundled_alias_before_installed_npm",
|
|
38
|
-
candidates: [
|
|
39
|
-
...(bundledAliasName === null
|
|
40
|
-
? []
|
|
41
|
-
: [{
|
|
42
|
-
kind: "builtin",
|
|
43
|
-
input: bundledAliasName,
|
|
44
|
-
...(bundledPackageName === null
|
|
45
|
-
? {}
|
|
46
|
-
: { package: bundledPackageName }),
|
|
47
|
-
command: `pm install ${bundledAliasName}`,
|
|
48
|
-
}]),
|
|
49
|
-
...(installedNpmCandidate === null
|
|
50
|
-
? []
|
|
51
|
-
: [{
|
|
52
|
-
kind: "npm",
|
|
53
|
-
input: `npm:${installedNpmCandidate.package}`,
|
|
54
|
-
package: installedNpmCandidate.package,
|
|
55
|
-
...(installedNpmCandidate.version === undefined
|
|
56
|
-
? {}
|
|
57
|
-
: { version: installedNpmCandidate.version }),
|
|
58
|
-
directory: installedNpmCandidate.directory,
|
|
59
|
-
command: `pm install npm:${installedNpmCandidate.package}`,
|
|
60
|
-
}]),
|
|
61
|
-
],
|
|
62
|
-
},
|
|
63
|
-
};
|
|
64
|
-
}
|
|
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]="dcdfdabd-8862-502f-8cd1-298c08825985")}catch(e2){}})();import{findInstalledNpmPackageCandidate,parseExtensionInstallSource}from"./install-sources.js";import{resolveBundledExtensionAliasSource,resolveBundledPackageNpmName}from"./bundled-catalog.js";async function resolveExtensionInstallSourceIdentity(explicitSourceInput,githubOption,ref){const bundledAliasSource=typeof githubOption==="string"?null:await resolveBundledExtensionAliasSource(explicitSourceInput);const bundledAliasName=bundledAliasSource===null?null:explicitSourceInput.trim().toLowerCase();const bundledPackageName=bundledAliasName===null?null:await resolveBundledPackageNpmName(bundledAliasName);const installSource=parseExtensionInstallSource(bundledAliasSource??explicitSourceInput,{forceGithub:typeof githubOption==="string",ref});const installedNpmCandidate=bundledAliasName===null?null:await findInstalledNpmPackageCandidate(explicitSourceInput);return{bundledAliasName,bundledPackageName,installSource,sourceResolution:{requested:explicitSourceInput,selected:{kind:bundledAliasName===null?installSource.kind:"builtin",input:bundledAliasName??installSource.input,...bundledPackageName===null?{}:{package:bundledPackageName}},ambiguous:installedNpmCandidate!==null,precedence:"bundled_alias_before_installed_npm",candidates:[...bundledAliasName===null?[]:[{kind:"builtin",input:bundledAliasName,...bundledPackageName===null?{}:{package:bundledPackageName},command:`pm install ${bundledAliasName}`}],...installedNpmCandidate===null?[]:[{kind:"npm",input:`npm:${installedNpmCandidate.package}`,package:installedNpmCandidate.package,...installedNpmCandidate.version===void 0?{}:{version:installedNpmCandidate.version},directory:installedNpmCandidate.directory,command:`pm install npm:${installedNpmCandidate.package}`}]]}}}export{resolveExtensionInstallSourceIdentity};
|
|
65
2
|
//# sourceMappingURL=source-resolution.js.map
|
|
66
|
-
//# debugId=39bc7f14-2d32-5b58-97ab-647f9f238273
|
|
@@ -1,68 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* @module sdk/extension/update-check
|
|
3
|
-
*
|
|
4
|
-
* Provides bounded and annotated-tag-aware update checks for managed extensions.
|
|
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]="ccb857a5-045d-57a7-91d2-b761225fe53a")}catch(e){}}();
|
|
8
|
-
import { nowIso } from "../../core/shared/time.js";
|
|
9
|
-
import { runGitCommand } from "./install-sources.js";
|
|
10
|
-
const GITHUB_UPDATE_CHECK_TIMEOUT_MS = 10_000;
|
|
11
|
-
/** Compare ls-remote output with an optional installed revision baseline. */
|
|
12
|
-
const resolveGithubUpdateOutput = (output, installedCommitInput, checkedAt) => {
|
|
13
|
-
const references = output
|
|
14
|
-
.split(/\r?\n/)
|
|
15
|
-
.map((line) => line.trim())
|
|
16
|
-
.filter(Boolean)
|
|
17
|
-
.map((line) => {
|
|
18
|
-
const [commit, ref = ""] = line.split(/\s+/);
|
|
19
|
-
return { commit, ref };
|
|
20
|
-
});
|
|
21
|
-
const remoteReference = references.find((reference) => reference.ref.endsWith("^{}")) ??
|
|
22
|
-
references[0];
|
|
23
|
-
if (!remoteReference) {
|
|
24
|
-
return {
|
|
25
|
-
checked_at: checkedAt,
|
|
26
|
-
available: null,
|
|
27
|
-
error: "no_remote_reference_found",
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
const installedCommit = installedCommitInput?.trim();
|
|
31
|
-
return installedCommit
|
|
32
|
-
? {
|
|
33
|
-
checked_at: checkedAt,
|
|
34
|
-
remote_commit: remoteReference.commit,
|
|
35
|
-
available: remoteReference.commit !== installedCommit,
|
|
36
|
-
}
|
|
37
|
-
: {
|
|
38
|
-
checked_at: checkedAt,
|
|
39
|
-
remote_commit: remoteReference.commit,
|
|
40
|
-
available: null,
|
|
41
|
-
error: "missing_installed_commit",
|
|
42
|
-
};
|
|
43
|
-
};
|
|
44
|
-
/** Compare one managed GitHub extension against its remote revision. */
|
|
45
|
-
export const checkGithubUpdate = async (source, gitCommandRunner = runGitCommand) => {
|
|
46
|
-
const checkedAt = nowIso();
|
|
47
|
-
if (source.kind !== "github" || !source.repository) {
|
|
48
|
-
return {
|
|
49
|
-
checked_at: checkedAt,
|
|
50
|
-
available: null,
|
|
51
|
-
error: "not_a_github_managed_source",
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
try {
|
|
55
|
-
const ref = [source.ref?.trim(), "HEAD"].find(Boolean);
|
|
56
|
-
const output = await gitCommandRunner(["ls-remote", source.repository, ref, `${ref}^{}`], undefined, GITHUB_UPDATE_CHECK_TIMEOUT_MS);
|
|
57
|
-
return resolveGithubUpdateOutput(output, source.commit, checkedAt);
|
|
58
|
-
}
|
|
59
|
-
catch (error) {
|
|
60
|
-
return {
|
|
61
|
-
checked_at: checkedAt,
|
|
62
|
-
available: null,
|
|
63
|
-
error: error instanceof Error ? error.message : String(error),
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
};
|
|
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]="8507f364-e079-5743-a54b-bb3a68ab66d0")}catch(e2){}})();import{nowIso}from"../../core/shared/time.js";import{runGitCommand}from"./install-sources.js";const GITHUB_UPDATE_CHECK_TIMEOUT_MS=1e4;const resolveGithubUpdateOutput=(output,installedCommitInput,checkedAt)=>{const references=output.split(/\r?\n/).map(line=>line.trim()).filter(Boolean).map(line=>{const[commit,ref=""]=line.split(/\s+/);return{commit,ref}});const remoteReference=references.find(reference=>reference.ref.endsWith("^{}"))??references[0];if(!remoteReference){return{checked_at:checkedAt,available:null,error:"no_remote_reference_found"}}const installedCommit=installedCommitInput?.trim();return installedCommit?{checked_at:checkedAt,remote_commit:remoteReference.commit,available:remoteReference.commit!==installedCommit}:{checked_at:checkedAt,remote_commit:remoteReference.commit,available:null,error:"missing_installed_commit"}};const checkGithubUpdate=async(source,gitCommandRunner=runGitCommand)=>{const checkedAt=nowIso();if(source.kind!=="github"||!source.repository){return{checked_at:checkedAt,available:null,error:"not_a_github_managed_source"}}try{const ref=[source.ref?.trim(),"HEAD"].find(Boolean);const output=await gitCommandRunner(["ls-remote",source.repository,ref,`${ref}^{}`],void 0,GITHUB_UPDATE_CHECK_TIMEOUT_MS);return resolveGithubUpdateOutput(output,source.commit,checkedAt)}catch(error){return{checked_at:checkedAt,available:null,error:error instanceof Error?error.message:String(error)}}};export{checkGithubUpdate};
|
|
67
2
|
//# sourceMappingURL=update-check.js.map
|
|
68
|
-
//# debugId=ccb857a5-045d-57a7-91d2-b761225fe53a
|
|
@@ -1,45 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="ff13ec2a-64a8-5512-973f-5447be945978")}catch(e){}}();
|
|
3
|
-
import { EXIT_CODE } from "../core/shared/constants.js";
|
|
4
|
-
import { isPmCliExpectedError } from "./errors.js";
|
|
5
|
-
import { getItemAt } from "./history-read.js";
|
|
6
|
-
import { RelationshipEventLog, RelationshipEventStore, } from "./relationship-history.js";
|
|
7
|
-
import { analyzeGraphImpact } from "./relationship-analytics.js";
|
|
8
|
-
import { RelationshipGraph, createRelationshipKindRegistry, } from "./relationships.js";
|
|
9
|
-
import { commitWorkspaceTransaction } from "./workspace-transaction.js";
|
|
10
|
-
/** Build a relationship-kind registry from extension-owned definitions. */
|
|
11
|
-
function buildRelationshipKindRegistry(definitions) {
|
|
12
|
-
const registry = createRelationshipKindRegistry();
|
|
13
|
-
for (const definition of definitions)
|
|
14
|
-
registry.register(definition);
|
|
15
|
-
return registry;
|
|
16
|
-
}
|
|
17
|
-
/** Bind public SDK services to one tracker and one caller-owned client. */
|
|
18
|
-
export function createExtensionCommandSdk(pmRoot, client) {
|
|
19
|
-
return {
|
|
20
|
-
client,
|
|
21
|
-
isItemNotFoundError: (error) => isPmCliExpectedError(error) && error.exitCode === EXIT_CODE.NOT_FOUND,
|
|
22
|
-
getItemAt: (id, target) => getItemAt(id, target, { pmRoot }),
|
|
23
|
-
openRelationshipEventStore: (options) => {
|
|
24
|
-
return RelationshipEventStore.open({
|
|
25
|
-
pmRoot,
|
|
26
|
-
nodes: options.nodes,
|
|
27
|
-
registry: buildRelationshipKindRegistry(options.definitions),
|
|
28
|
-
...(options.relativePath === undefined
|
|
29
|
-
? {}
|
|
30
|
-
: { relativePath: options.relativePath }),
|
|
31
|
-
});
|
|
32
|
-
},
|
|
33
|
-
createRelationshipGraph: (options) => new RelationshipGraph(options.nodes, options.edges, buildRelationshipKindRegistry(options.definitions)),
|
|
34
|
-
analyzeRelationshipImpact: (graph, root, options) => analyzeGraphImpact(graph, root, options),
|
|
35
|
-
validateRelationshipEvents: (options) => {
|
|
36
|
-
const log = new RelationshipEventLog(options.nodes, {
|
|
37
|
-
registry: buildRelationshipKindRegistry(options.definitions),
|
|
38
|
-
});
|
|
39
|
-
return options.events.map((event) => log.append({ ...event, expectedVersion: log.version }));
|
|
40
|
-
},
|
|
41
|
-
commitWorkspaceTransaction: (options) => commitWorkspaceTransaction({ ...options, pmRoot }),
|
|
42
|
-
};
|
|
43
|
-
}
|
|
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]="3113ad4b-282a-50af-a836-8e9abfde7d7e")}catch(e2){}})();import{EXIT_CODE}from"../core/shared/constants.js";import{isPmCliExpectedError}from"./errors.js";import{getItemAt}from"./history-read.js";import{RelationshipEventLog,RelationshipEventStore}from"./relationship-history.js";import{analyzeGraphImpact}from"./relationship-analytics.js";import{RelationshipGraph,createRelationshipKindRegistry}from"./relationships.js";import{commitWorkspaceTransaction}from"./workspace-transaction.js";function buildRelationshipKindRegistry(definitions){const registry=createRelationshipKindRegistry();for(const definition of definitions)registry.register(definition);return registry}function createExtensionCommandSdk(pmRoot,client){return{client,isItemNotFoundError:error=>isPmCliExpectedError(error)&&error.exitCode===EXIT_CODE.NOT_FOUND,getItemAt:(id,target)=>getItemAt(id,target,{pmRoot}),openRelationshipEventStore:options=>{return RelationshipEventStore.open({pmRoot,nodes:options.nodes,registry:buildRelationshipKindRegistry(options.definitions),...options.relativePath===void 0?{}:{relativePath:options.relativePath}})},createRelationshipGraph:options=>new RelationshipGraph(options.nodes,options.edges,buildRelationshipKindRegistry(options.definitions)),analyzeRelationshipImpact:(graph,root,options)=>analyzeGraphImpact(graph,root,options),validateRelationshipEvents:options=>{const log=new RelationshipEventLog(options.nodes,{registry:buildRelationshipKindRegistry(options.definitions)});return options.events.map(event=>log.append({...event,expectedVersion:log.version}))},commitWorkspaceTransaction:options=>commitWorkspaceTransaction({...options,pmRoot})}}export{createExtensionCommandSdk};
|
|
44
2
|
//# sourceMappingURL=extension-command-context.js.map
|
|
45
|
-
//# debugId=ff13ec2a-64a8-5512-973f-5447be945978
|
|
@@ -1,74 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* @module sdk/extension-contracts
|
|
3
|
-
*
|
|
4
|
-
* Publishes the stable extension capability vocabulary without loading the
|
|
5
|
-
* aggregate SDK entrypoint.
|
|
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]="bb16b445-3bd4-520d-becf-c55621bfa186")}catch(e){}}();
|
|
9
|
-
import { EXTENSION_CAPABILITY_CONTRACT, EXTENSION_CAPABILITY_CONTRACT_VERSION, EXTENSION_CAPABILITY_LEGACY_ALIASES, KNOWN_EXTENSION_CAPABILITIES, KNOWN_EXTENSION_POLICY_MODES, KNOWN_EXTENSION_POLICY_SURFACES, KNOWN_EXTENSION_SANDBOX_PROFILES, KNOWN_EXTENSION_TRUST_MODES, } from "../core/extensions/loader.js";
|
|
10
|
-
import { LIST_COMMANDER_STRING_OPTION_CONTRACTS, SEARCH_COMMANDER_STRING_OPTION_CONTRACTS, } from "./cli-contracts/commander-types.js";
|
|
11
|
-
import { compactFlagAliasContracts, LIST_FILTER_FLAG_CONTRACTS, SEARCH_FLAG_CONTRACTS, } from "./cli-contracts/flag-contracts.js";
|
|
12
|
-
/**
|
|
13
|
-
* Canonical extension capability names accepted by pm.
|
|
14
|
-
*
|
|
15
|
-
* Extension manifests should declare one or more of these values in
|
|
16
|
-
* `capabilities`.
|
|
17
|
-
*/
|
|
18
|
-
export const EXTENSION_CAPABILITIES = KNOWN_EXTENSION_CAPABILITIES;
|
|
19
|
-
/** Canonical extension governance policy modes. */
|
|
20
|
-
export const EXTENSION_POLICY_MODES = KNOWN_EXTENSION_POLICY_MODES;
|
|
21
|
-
/** Canonical extension registration surfaces governed by policy. */
|
|
22
|
-
export const EXTENSION_POLICY_SURFACES = KNOWN_EXTENSION_POLICY_SURFACES;
|
|
23
|
-
/** Canonical extension trust modes shared by authoring and runtime consumers. */
|
|
24
|
-
export const EXTENSION_TRUST_MODES = KNOWN_EXTENSION_TRUST_MODES;
|
|
25
|
-
/** Canonical extension sandbox profiles shared by authoring and runtime consumers. */
|
|
26
|
-
export const EXTENSION_SANDBOX_PROFILES = KNOWN_EXTENSION_SANDBOX_PROFILES;
|
|
27
|
-
/** Build one canonical or alias flag definition from a shared CLI contract. */
|
|
28
|
-
function toExtensionFlagDefinition(contract, long, stringOptionKeys, short) {
|
|
29
|
-
const normalizedKey = contract.flag
|
|
30
|
-
.slice(2)
|
|
31
|
-
.replace(/[-_]([a-z])/gu, (_match, letter) => letter.toUpperCase());
|
|
32
|
-
const stringValued = stringOptionKeys.has(normalizedKey);
|
|
33
|
-
return {
|
|
34
|
-
long,
|
|
35
|
-
...(short ? { short } : {}),
|
|
36
|
-
description: contract.description ?? `Standard pm ${contract.flag} option.`,
|
|
37
|
-
...(contract.required === true ? { required: true } : {}),
|
|
38
|
-
...(contract.list === true ? { list: true } : {}),
|
|
39
|
-
...(contract.repeatable === true ? { repeatable: true } : {}),
|
|
40
|
-
value_type: stringValued ? "string" : "boolean",
|
|
41
|
-
...(stringValued
|
|
42
|
-
? { value_name: contract.value_name ?? "value" }
|
|
43
|
-
: {}),
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Convert canonical CLI flag contracts into extension command definitions.
|
|
48
|
-
*
|
|
49
|
-
* Alias rows are expanded because extension registration deliberately stores
|
|
50
|
-
* one long spelling per definition. String-valued options come from the same
|
|
51
|
-
* Commander option contracts the CLI parser consumes; every other contract is
|
|
52
|
-
* boolean. This keeps aliases, list accumulation, requiredness, and value
|
|
53
|
-
* behavior single-sourced while giving package authors the exact shape
|
|
54
|
-
* accepted by `api.registerCommand` and `api.registerFlags`.
|
|
55
|
-
*/
|
|
56
|
-
export function toExtensionFlagDefinitions(contracts, stringOptions = []) {
|
|
57
|
-
const stringOptionKeys = new Set(stringOptions.flatMap((contract) => contract.keys));
|
|
58
|
-
const definitions = [];
|
|
59
|
-
for (const contract of compactFlagAliasContracts(contracts.map((entry) => ({ ...entry })))) {
|
|
60
|
-
definitions.push(toExtensionFlagDefinition(contract, contract.flag, stringOptionKeys, contract.short));
|
|
61
|
-
for (const alias of contract.aliases ?? []) {
|
|
62
|
-
definitions.push(toExtensionFlagDefinition(contract, alias, stringOptionKeys));
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
return definitions;
|
|
66
|
-
}
|
|
67
|
-
/** Extension-ready form of the canonical list/filter flag baseline. */
|
|
68
|
-
export const LIST_FILTER_EXTENSION_FLAG_DEFINITIONS = toExtensionFlagDefinitions(LIST_FILTER_FLAG_CONTRACTS, LIST_COMMANDER_STRING_OPTION_CONTRACTS);
|
|
69
|
-
/** Extension-ready form of the canonical search flag baseline. */
|
|
70
|
-
export const SEARCH_EXTENSION_FLAG_DEFINITIONS = toExtensionFlagDefinitions(SEARCH_FLAG_CONTRACTS, SEARCH_COMMANDER_STRING_OPTION_CONTRACTS);
|
|
71
|
-
/** Versioned capability contract metadata emitted by runtime diagnostics. */
|
|
72
|
-
export { EXTENSION_CAPABILITY_CONTRACT, EXTENSION_CAPABILITY_CONTRACT_VERSION, EXTENSION_CAPABILITY_LEGACY_ALIASES, };
|
|
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]="cde4f476-6821-53be-b70e-62794fa2ae52")}catch(e2){}})();import{EXTENSION_CAPABILITY_CONTRACT,EXTENSION_CAPABILITY_CONTRACT_VERSION,EXTENSION_CAPABILITY_LEGACY_ALIASES,KNOWN_EXTENSION_CAPABILITIES,KNOWN_EXTENSION_POLICY_MODES,KNOWN_EXTENSION_POLICY_SURFACES,KNOWN_EXTENSION_SANDBOX_PROFILES,KNOWN_EXTENSION_TRUST_MODES}from"../core/extensions/loader.js";import{LIST_COMMANDER_STRING_OPTION_CONTRACTS,SEARCH_COMMANDER_STRING_OPTION_CONTRACTS}from"./cli-contracts/commander-types.js";import{compactFlagAliasContracts,LIST_FILTER_FLAG_CONTRACTS,SEARCH_FLAG_CONTRACTS}from"./cli-contracts/flag-contracts.js";const EXTENSION_CAPABILITIES=KNOWN_EXTENSION_CAPABILITIES;const EXTENSION_POLICY_MODES=KNOWN_EXTENSION_POLICY_MODES;const EXTENSION_POLICY_SURFACES=KNOWN_EXTENSION_POLICY_SURFACES;const EXTENSION_TRUST_MODES=KNOWN_EXTENSION_TRUST_MODES;const EXTENSION_SANDBOX_PROFILES=KNOWN_EXTENSION_SANDBOX_PROFILES;function toExtensionFlagDefinition(contract,long,stringOptionKeys,short){const normalizedKey=contract.flag.slice(2).replace(/[-_]([a-z])/gu,(_match,letter)=>letter.toUpperCase());const stringValued=stringOptionKeys.has(normalizedKey);return{long,...short?{short}:{},description:contract.description??`Standard pm ${contract.flag} option.`,...contract.required===true?{required:true}:{},...contract.list===true?{list:true}:{},...contract.repeatable===true?{repeatable:true}:{},value_type:stringValued?"string":"boolean",...stringValued?{value_name:contract.value_name??"value"}:{}}}function toExtensionFlagDefinitions(contracts,stringOptions=[]){const stringOptionKeys=new Set(stringOptions.flatMap(contract=>contract.keys));const definitions=[];for(const contract of compactFlagAliasContracts(contracts.map(entry=>({...entry})))){definitions.push(toExtensionFlagDefinition(contract,contract.flag,stringOptionKeys,contract.short));for(const alias of contract.aliases??[]){definitions.push(toExtensionFlagDefinition(contract,alias,stringOptionKeys))}}return definitions}const LIST_FILTER_EXTENSION_FLAG_DEFINITIONS=toExtensionFlagDefinitions(LIST_FILTER_FLAG_CONTRACTS,LIST_COMMANDER_STRING_OPTION_CONTRACTS);const SEARCH_EXTENSION_FLAG_DEFINITIONS=toExtensionFlagDefinitions(SEARCH_FLAG_CONTRACTS,SEARCH_COMMANDER_STRING_OPTION_CONTRACTS);export{EXTENSION_CAPABILITIES,EXTENSION_CAPABILITY_CONTRACT,EXTENSION_CAPABILITY_CONTRACT_VERSION,EXTENSION_CAPABILITY_LEGACY_ALIASES,EXTENSION_POLICY_MODES,EXTENSION_POLICY_SURFACES,EXTENSION_SANDBOX_PROFILES,EXTENSION_TRUST_MODES,LIST_FILTER_EXTENSION_FLAG_DEFINITIONS,SEARCH_EXTENSION_FLAG_DEFINITIONS,toExtensionFlagDefinitions};
|
|
73
2
|
//# sourceMappingURL=extension-contracts.js.map
|
|
74
|
-
//# debugId=bb16b445-3bd4-520d-becf-c55621bfa186
|
package/dist/sdk/extension.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ import { readManagedExtensionState, writeManagedExtensionState, resolveManagedEx
|
|
|
12
12
|
import { parseExtensionInstallSource } from "./extension/install-sources.js";
|
|
13
13
|
import { copyExtensionDirectoryForInstall, resolveCanonicalExtensionInstallDestination } from "./extension/install-runtime.js";
|
|
14
14
|
import { collectGlobalOutputOverrideDoctorWarnings } from "./extension/output-ownership.js";
|
|
15
|
+
import { type ExtensionInstallPlan, type ExtensionCopyPlanOptions } from "./extension/install-plan.js";
|
|
15
16
|
export { parseExtensionManifest, validateExtensionDirectory, readManagedExtensionState, writeManagedExtensionState, resolveManagedExtensionStatePath, parseExtensionInstallSource, copyExtensionDirectoryForInstall, resolveCanonicalExtensionInstallDestination, };
|
|
16
17
|
export type { ManagedExtensionSource, ManagedExtensionRecord, ManagedExtensionState, };
|
|
17
18
|
export type { ManagedExtensionStateReadResult } from "./extension/managed-state.js";
|
|
@@ -95,8 +96,10 @@ export interface ExtensionCommandOptions {
|
|
|
95
96
|
declarative?: boolean;
|
|
96
97
|
/** Value that configures or reports vocabulary for this contract. */
|
|
97
98
|
vocabulary?: "extension" | "package";
|
|
98
|
-
/** Plan
|
|
99
|
+
/** Plan migrations or resolve install sources and estimate copying without destination writes or activation. */
|
|
99
100
|
dryRun?: boolean;
|
|
101
|
+
/** SDK limits and cancellation for install copy-cost enumeration. */
|
|
102
|
+
copyPlan?: ExtensionCopyPlanOptions;
|
|
100
103
|
}
|
|
101
104
|
/** Documents the managed extension summary payload exchanged by command, SDK, and package integrations. */
|
|
102
105
|
export interface ManagedExtensionSummary {
|
|
@@ -159,7 +162,9 @@ export interface ExtensionCommandResult {
|
|
|
159
162
|
/** Value that configures or reports warnings for this contract. */
|
|
160
163
|
warnings: string[];
|
|
161
164
|
/** Value that configures or reports details for this contract. */
|
|
162
|
-
details: Record<string, unknown
|
|
165
|
+
details: Record<string, unknown> & {
|
|
166
|
+
install_plan?: ExtensionInstallPlan;
|
|
167
|
+
};
|
|
163
168
|
}
|
|
164
169
|
/** Documents the extension triage summary payload exchanged by command, SDK, and package integrations. */
|
|
165
170
|
export interface ExtensionTriageSummary {
|