@unbrained/pm-cli 2026.9.6 → 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 +218 -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.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/RELEASING.md +1 -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,217 +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]="849502d0-2616-500c-96de-228c0759459d")}catch(e){}}();
|
|
3
|
-
function formatVersionBoundValue(value) {
|
|
4
|
-
return typeof value === "string" ? value : String(value);
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* Parse a comparable release string into numeric segments, or `null` when it is
|
|
8
|
-
* not an interpretable dotted-numeric version.
|
|
9
|
-
*
|
|
10
|
-
* Leniently strips a leading inclusive-minimum `>=` and an optional `v` prefix
|
|
11
|
-
* (so `engines.pm`-style `">=2026.5.31"` and `"v1.2.3"` both parse), then drops
|
|
12
|
-
* any build/pre-release suffix and keeps the leading dotted-numeric release.
|
|
13
|
-
*/
|
|
14
|
-
export function parseComparableVersion(value) {
|
|
15
|
-
const normalized = value
|
|
16
|
-
.trim()
|
|
17
|
-
.replace(/^>=\s*/, "")
|
|
18
|
-
.replace(/^v/i, "");
|
|
19
|
-
const release = normalized.split(/[+-]/, 1)[0];
|
|
20
|
-
if (!/^\d+(?:[.-]\d+)*$/.test(release)) {
|
|
21
|
-
return null;
|
|
22
|
-
}
|
|
23
|
-
return release.split(/[.-]/).map((part) => Number(part));
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Compare two comparable version strings segment by segment.
|
|
27
|
-
*
|
|
28
|
-
* Returns `1` when `currentVersion` is greater, `-1` when it is smaller, `0` when
|
|
29
|
-
* equal, and `null` when either side is not an interpretable version (so callers
|
|
30
|
-
* can classify the comparison as `unchecked`). Missing trailing segments are
|
|
31
|
-
* treated as `0`, so `1.2` and `1.2.0` compare equal.
|
|
32
|
-
*/
|
|
33
|
-
export function compareComparableVersions(currentVersion, otherVersion) {
|
|
34
|
-
const currentParts = parseComparableVersion(currentVersion);
|
|
35
|
-
const otherParts = parseComparableVersion(otherVersion);
|
|
36
|
-
if (!currentParts || !otherParts) {
|
|
37
|
-
return null;
|
|
38
|
-
}
|
|
39
|
-
const width = Math.max(currentParts.length, otherParts.length);
|
|
40
|
-
for (let index = 0; index < width; index += 1) {
|
|
41
|
-
const current = currentParts[index] ?? 0;
|
|
42
|
-
const other = otherParts[index] ?? 0;
|
|
43
|
-
if (current > other) {
|
|
44
|
-
return 1;
|
|
45
|
-
}
|
|
46
|
-
if (current < other) {
|
|
47
|
-
return -1;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
return 0;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Evaluate a manifest `pm_min_version` inclusive lower bound against the current
|
|
54
|
-
* pm version.
|
|
55
|
-
*
|
|
56
|
-
* An omitted bound is `absent`; a blank, non-string, or unparseable bound is
|
|
57
|
-
* `invalid`; an unknown or incomparable current version is `unchecked`; a current
|
|
58
|
-
* version below the bound is `unmet`; otherwise the bound is satisfied (`ok`).
|
|
59
|
-
* `currentVersion` is `null` when the loader could not resolve the running CLI
|
|
60
|
-
* version.
|
|
61
|
-
*/
|
|
62
|
-
export function evaluatePmMinVersionBound(required, currentVersion) {
|
|
63
|
-
if (required === undefined || required === null) {
|
|
64
|
-
return {
|
|
65
|
-
kind: "pm_min_version",
|
|
66
|
-
status: "absent",
|
|
67
|
-
allowed: true,
|
|
68
|
-
required: "",
|
|
69
|
-
current: currentVersion,
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
const declared = formatVersionBoundValue(required);
|
|
73
|
-
if (typeof required !== "string" || declared.trim().length === 0) {
|
|
74
|
-
return {
|
|
75
|
-
kind: "pm_min_version",
|
|
76
|
-
status: "invalid",
|
|
77
|
-
allowed: false,
|
|
78
|
-
required: declared,
|
|
79
|
-
current: currentVersion,
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
if (!parseComparableVersion(declared)) {
|
|
83
|
-
return {
|
|
84
|
-
kind: "pm_min_version",
|
|
85
|
-
status: "invalid",
|
|
86
|
-
allowed: false,
|
|
87
|
-
required: declared,
|
|
88
|
-
current: currentVersion,
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
if (currentVersion === null) {
|
|
92
|
-
return {
|
|
93
|
-
kind: "pm_min_version",
|
|
94
|
-
status: "unchecked",
|
|
95
|
-
allowed: true,
|
|
96
|
-
required: declared,
|
|
97
|
-
current: null,
|
|
98
|
-
};
|
|
99
|
-
}
|
|
100
|
-
const comparison = compareComparableVersions(currentVersion, declared);
|
|
101
|
-
if (comparison === null) {
|
|
102
|
-
return {
|
|
103
|
-
kind: "pm_min_version",
|
|
104
|
-
status: "unchecked",
|
|
105
|
-
allowed: true,
|
|
106
|
-
required: declared,
|
|
107
|
-
current: currentVersion,
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
if (comparison < 0) {
|
|
111
|
-
return {
|
|
112
|
-
kind: "pm_min_version",
|
|
113
|
-
status: "unmet",
|
|
114
|
-
allowed: false,
|
|
115
|
-
required: declared,
|
|
116
|
-
current: currentVersion,
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
return {
|
|
120
|
-
kind: "pm_min_version",
|
|
121
|
-
status: "ok",
|
|
122
|
-
allowed: true,
|
|
123
|
-
required: declared,
|
|
124
|
-
current: currentVersion,
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Evaluate a manifest `pm_max_version` inclusive upper bound against the current
|
|
129
|
-
* pm version.
|
|
130
|
-
*
|
|
131
|
-
* An omitted bound is `absent`. A blank or non-string bound is `invalid`. The
|
|
132
|
-
* upper bound must be an exact version: a range prefix (`<`/`>`/`=`/`~`/`^`) is
|
|
133
|
-
* rejected as `invalid`, because
|
|
134
|
-
* {@link parseComparableVersion} leniently strips a leading `>=` for
|
|
135
|
-
* `engines.pm` min-version compatibility and would otherwise turn a range-like
|
|
136
|
-
* `">=2026.6.1"` into an inclusive max and wrongly block newer CLIs. An
|
|
137
|
-
* unparseable bound is `invalid`; an unknown or incomparable current version is
|
|
138
|
-
* `unchecked`; a current version above the bound is `exceeded` (or
|
|
139
|
-
* `exceeded_warn` when `exceededMode` is `warn`, so the extension still loads
|
|
140
|
-
* during a controlled upgrade window); otherwise the bound is satisfied (`ok`).
|
|
141
|
-
*/
|
|
142
|
-
export function evaluatePmMaxVersionBound(required, currentVersion, exceededMode) {
|
|
143
|
-
if (required === undefined || required === null) {
|
|
144
|
-
return {
|
|
145
|
-
kind: "pm_max_version",
|
|
146
|
-
status: "absent",
|
|
147
|
-
allowed: true,
|
|
148
|
-
required: "",
|
|
149
|
-
current: currentVersion,
|
|
150
|
-
};
|
|
151
|
-
}
|
|
152
|
-
const declared = formatVersionBoundValue(required);
|
|
153
|
-
if (typeof required !== "string" || declared.trim().length === 0) {
|
|
154
|
-
return {
|
|
155
|
-
kind: "pm_max_version",
|
|
156
|
-
status: "invalid",
|
|
157
|
-
allowed: false,
|
|
158
|
-
required: declared,
|
|
159
|
-
current: currentVersion,
|
|
160
|
-
};
|
|
161
|
-
}
|
|
162
|
-
if (/^[<>=~^]/.test(declared.trim()) || !parseComparableVersion(declared)) {
|
|
163
|
-
return {
|
|
164
|
-
kind: "pm_max_version",
|
|
165
|
-
status: "invalid",
|
|
166
|
-
allowed: false,
|
|
167
|
-
required: declared,
|
|
168
|
-
current: currentVersion,
|
|
169
|
-
};
|
|
170
|
-
}
|
|
171
|
-
if (currentVersion === null) {
|
|
172
|
-
return {
|
|
173
|
-
kind: "pm_max_version",
|
|
174
|
-
status: "unchecked",
|
|
175
|
-
allowed: true,
|
|
176
|
-
required: declared,
|
|
177
|
-
current: null,
|
|
178
|
-
};
|
|
179
|
-
}
|
|
180
|
-
const comparison = compareComparableVersions(currentVersion, declared);
|
|
181
|
-
if (comparison === null) {
|
|
182
|
-
return {
|
|
183
|
-
kind: "pm_max_version",
|
|
184
|
-
status: "unchecked",
|
|
185
|
-
allowed: true,
|
|
186
|
-
required: declared,
|
|
187
|
-
current: currentVersion,
|
|
188
|
-
};
|
|
189
|
-
}
|
|
190
|
-
if (comparison > 0) {
|
|
191
|
-
if (exceededMode === "warn") {
|
|
192
|
-
return {
|
|
193
|
-
kind: "pm_max_version",
|
|
194
|
-
status: "exceeded_warn",
|
|
195
|
-
allowed: true,
|
|
196
|
-
required: declared,
|
|
197
|
-
current: currentVersion,
|
|
198
|
-
};
|
|
199
|
-
}
|
|
200
|
-
return {
|
|
201
|
-
kind: "pm_max_version",
|
|
202
|
-
status: "exceeded",
|
|
203
|
-
allowed: false,
|
|
204
|
-
required: declared,
|
|
205
|
-
current: currentVersion,
|
|
206
|
-
};
|
|
207
|
-
}
|
|
208
|
-
return {
|
|
209
|
-
kind: "pm_max_version",
|
|
210
|
-
status: "ok",
|
|
211
|
-
allowed: true,
|
|
212
|
-
required: declared,
|
|
213
|
-
current: currentVersion,
|
|
214
|
-
};
|
|
215
|
-
}
|
|
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]="d2feae50-9a1e-54fa-98a3-df529be63069")}catch(e2){}})();function formatVersionBoundValue(value){return typeof value==="string"?value:String(value)}function parseComparableVersion(value){const normalized=value.trim().replace(/^>=\s*/,"").replace(/^v/i,"");const release=normalized.split(/[+-]/,1)[0];if(!/^\d+(?:[.-]\d+)*$/.test(release)){return null}return release.split(/[.-]/).map(part=>Number(part))}function compareComparableVersions(currentVersion,otherVersion){const currentParts=parseComparableVersion(currentVersion);const otherParts=parseComparableVersion(otherVersion);if(!currentParts||!otherParts){return null}const width=Math.max(currentParts.length,otherParts.length);for(let index=0;index<width;index+=1){const current=currentParts[index]??0;const other=otherParts[index]??0;if(current>other){return 1}if(current<other){return-1}}return 0}function evaluatePmMinVersionBound(required,currentVersion){if(required===void 0||required===null){return{kind:"pm_min_version",status:"absent",allowed:true,required:"",current:currentVersion}}const declared=formatVersionBoundValue(required);if(typeof required!=="string"||declared.trim().length===0){return{kind:"pm_min_version",status:"invalid",allowed:false,required:declared,current:currentVersion}}if(!parseComparableVersion(declared)){return{kind:"pm_min_version",status:"invalid",allowed:false,required:declared,current:currentVersion}}if(currentVersion===null){return{kind:"pm_min_version",status:"unchecked",allowed:true,required:declared,current:null}}const comparison=compareComparableVersions(currentVersion,declared);if(comparison===null){return{kind:"pm_min_version",status:"unchecked",allowed:true,required:declared,current:currentVersion}}if(comparison<0){return{kind:"pm_min_version",status:"unmet",allowed:false,required:declared,current:currentVersion}}return{kind:"pm_min_version",status:"ok",allowed:true,required:declared,current:currentVersion}}function evaluatePmMaxVersionBound(required,currentVersion,exceededMode){if(required===void 0||required===null){return{kind:"pm_max_version",status:"absent",allowed:true,required:"",current:currentVersion}}const declared=formatVersionBoundValue(required);if(typeof required!=="string"||declared.trim().length===0){return{kind:"pm_max_version",status:"invalid",allowed:false,required:declared,current:currentVersion}}if(/^[<>=~^]/.test(declared.trim())||!parseComparableVersion(declared)){return{kind:"pm_max_version",status:"invalid",allowed:false,required:declared,current:currentVersion}}if(currentVersion===null){return{kind:"pm_max_version",status:"unchecked",allowed:true,required:declared,current:null}}const comparison=compareComparableVersions(currentVersion,declared);if(comparison===null){return{kind:"pm_max_version",status:"unchecked",allowed:true,required:declared,current:currentVersion}}if(comparison>0){if(exceededMode==="warn"){return{kind:"pm_max_version",status:"exceeded_warn",allowed:true,required:declared,current:currentVersion}}return{kind:"pm_max_version",status:"exceeded",allowed:false,required:declared,current:currentVersion}}return{kind:"pm_max_version",status:"ok",allowed:true,required:declared,current:currentVersion}}export{compareComparableVersions,evaluatePmMaxVersionBound,evaluatePmMinVersionBound,parseComparableVersion};
|
|
216
2
|
//# sourceMappingURL=version-compat.js.map
|
|
217
|
-
//# debugId=849502d0-2616-500c-96de-228c0759459d
|
package/dist/core/fs/fs-utils.js
CHANGED
|
@@ -1,159 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* Provides filesystem helpers for Fs Utils.
|
|
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]="23fc5fcb-5c80-57ab-8d91-8d15ee35ab53")}catch(e){}}();
|
|
8
|
-
import * as fs from "node:fs/promises";
|
|
9
|
-
import path from "node:path";
|
|
10
|
-
import crypto from "node:crypto";
|
|
11
|
-
const WINDOWS_RENAME_RETRY_DELAYS_MS = [10, 25, 50, 100];
|
|
12
|
-
/** Implements ensure dir for the public runtime surface of this module. */
|
|
13
|
-
export async function ensureDir(dirPath) {
|
|
14
|
-
await fs.mkdir(dirPath, { recursive: true });
|
|
15
|
-
}
|
|
16
|
-
/** Implements path exists for the public runtime surface of this module. */
|
|
17
|
-
export async function pathExists(targetPath) {
|
|
18
|
-
try {
|
|
19
|
-
await fs.access(targetPath);
|
|
20
|
-
return true;
|
|
21
|
-
}
|
|
22
|
-
catch {
|
|
23
|
-
return false;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Report whether an error means "this file is not there".
|
|
28
|
-
*
|
|
29
|
-
* `ENOENT` is the common case. `ENOTDIR` is the same answer reached from a
|
|
30
|
-
* different direction: a path component is a regular file, so the target
|
|
31
|
-
* cannot exist under it either. Absence-tolerant readers must accept both,
|
|
32
|
-
* otherwise a misdirected root turns a graceful default into an unclassified
|
|
33
|
-
* runtime fault instead of reaching the caller's own root validation.
|
|
34
|
-
*/
|
|
35
|
-
export function isFileAbsentError(error) {
|
|
36
|
-
return isFileMissingError(error) || isErrno(error, "ENOTDIR");
|
|
37
|
-
}
|
|
38
|
-
/** Report an exact missing-entry race while preserving ENOTDIR as structural corruption. */
|
|
39
|
-
export function isFileMissingError(error) {
|
|
40
|
-
return isErrno(error, "ENOENT");
|
|
41
|
-
}
|
|
42
|
-
/** Implements read file if exists for the public runtime surface of this module. */
|
|
43
|
-
export async function readFileIfExists(targetPath) {
|
|
44
|
-
try {
|
|
45
|
-
return await fs.readFile(targetPath, "utf8");
|
|
46
|
-
}
|
|
47
|
-
catch (error) {
|
|
48
|
-
if (isFileAbsentError(error)) {
|
|
49
|
-
return null;
|
|
50
|
-
}
|
|
51
|
-
throw error;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
/** Implements write file atomic for the public runtime surface of this module. */
|
|
55
|
-
export async function writeFileAtomic(targetPath, contents) {
|
|
56
|
-
const dirPath = path.dirname(targetPath);
|
|
57
|
-
await ensureDir(dirPath);
|
|
58
|
-
const tempPath = path.join(dirPath, `.${path.basename(targetPath)}.${process.pid}.${Date.now()}.${crypto.randomBytes(4).toString("hex")}.tmp`);
|
|
59
|
-
await fs.writeFile(tempPath, contents, "utf8");
|
|
60
|
-
try {
|
|
61
|
-
await fs.rename(tempPath, targetPath);
|
|
62
|
-
}
|
|
63
|
-
catch (error) {
|
|
64
|
-
if (process.platform === "win32" &&
|
|
65
|
-
(isErrno(error, "EPERM") || isErrno(error, "EBUSY"))) {
|
|
66
|
-
let lastError = error;
|
|
67
|
-
for (const delayMs of WINDOWS_RENAME_RETRY_DELAYS_MS) {
|
|
68
|
-
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
69
|
-
try {
|
|
70
|
-
await fs.rename(tempPath, targetPath);
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
catch (retryError) {
|
|
74
|
-
lastError = retryError;
|
|
75
|
-
if (!isErrno(retryError, "EPERM") && !isErrno(retryError, "EBUSY")) {
|
|
76
|
-
break;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
try {
|
|
81
|
-
await fs.unlink(tempPath);
|
|
82
|
-
}
|
|
83
|
-
catch {
|
|
84
|
-
// Best-effort cleanup only.
|
|
85
|
-
}
|
|
86
|
-
throw lastError;
|
|
87
|
-
}
|
|
88
|
-
if (isErrno(error, "EXDEV")) {
|
|
89
|
-
try {
|
|
90
|
-
await fs.copyFile(tempPath, targetPath);
|
|
91
|
-
}
|
|
92
|
-
finally {
|
|
93
|
-
try {
|
|
94
|
-
await fs.unlink(tempPath);
|
|
95
|
-
}
|
|
96
|
-
catch {
|
|
97
|
-
// Best-effort cleanup only.
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
try {
|
|
103
|
-
await fs.unlink(tempPath);
|
|
104
|
-
}
|
|
105
|
-
catch {
|
|
106
|
-
// Best-effort cleanup only.
|
|
107
|
-
}
|
|
108
|
-
throw error;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Append a single newline-terminated line to a file, opened with `O_APPEND`.
|
|
113
|
-
*
|
|
114
|
-
* Concurrency contract: `O_APPEND` makes the seek-to-EOF that precedes each
|
|
115
|
-
* `write(2)` atomic, so independent appenders never overwrite each other's
|
|
116
|
-
* bytes. For the common case the whole `${line}\n` buffer is handed to the
|
|
117
|
-
* kernel in one `write(2)`, which mainstream filesystems (ext4/xfs/apfs) commit
|
|
118
|
-
* atomically under the inode lock — concurrent multi-process appends of small
|
|
119
|
-
* records (e.g. the telemetry and OTLP-span queues) therefore stay
|
|
120
|
-
* line-coherent without an external lock.
|
|
121
|
-
*
|
|
122
|
-
* The guarantee weakens only for a single record large enough that the OS
|
|
123
|
-
* splits it across multiple `write(2)` calls (multi-KiB lines), where another
|
|
124
|
-
* process's append could interleave between fragments. History JSONL — the only
|
|
125
|
-
* caller that can produce large lines — is always written while the per-item
|
|
126
|
-
* store lock is held (see core/store/item-store.ts), so those appends are
|
|
127
|
-
* serialized regardless. Callers writing large records concurrently from
|
|
128
|
-
* multiple processes must hold an equivalent lock.
|
|
129
|
-
*/
|
|
130
|
-
export async function appendLineAtomic(targetPath, line) {
|
|
131
|
-
const dirPath = path.dirname(targetPath);
|
|
132
|
-
await ensureDir(dirPath);
|
|
133
|
-
const handle = await fs.open(targetPath, "a");
|
|
134
|
-
try {
|
|
135
|
-
await handle.writeFile(`${line}\n`, "utf8");
|
|
136
|
-
}
|
|
137
|
-
finally {
|
|
138
|
-
await handle.close();
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
/** Implements remove file if exists for the public runtime surface of this module. */
|
|
142
|
-
export async function removeFileIfExists(targetPath) {
|
|
143
|
-
try {
|
|
144
|
-
await fs.unlink(targetPath);
|
|
145
|
-
}
|
|
146
|
-
catch (error) {
|
|
147
|
-
if (!isFileAbsentError(error)) {
|
|
148
|
-
throw error;
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
function isErrno(error, code) {
|
|
153
|
-
return (typeof error === "object" &&
|
|
154
|
-
error !== null &&
|
|
155
|
-
"code" in error &&
|
|
156
|
-
error.code === code);
|
|
157
|
-
}
|
|
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]="1240aa49-b3fa-57d3-b6e1-7f911005a757")}catch(e2){}})();import*as fs from"node:fs/promises";import path from"node:path";import crypto from"node:crypto";const WINDOWS_RENAME_RETRY_DELAYS_MS=[10,25,50,100];async function ensureDir(dirPath){await fs.mkdir(dirPath,{recursive:true})}async function pathExists(targetPath){try{await fs.access(targetPath);return true}catch{return false}}function isFileAbsentError(error){return isFileMissingError(error)||isErrno(error,"ENOTDIR")}function isFileMissingError(error){return isErrno(error,"ENOENT")}async function readFileIfExists(targetPath){try{return await fs.readFile(targetPath,"utf8")}catch(error){if(isFileAbsentError(error)){return null}throw error}}async function writeFileAtomic(targetPath,contents){const dirPath=path.dirname(targetPath);await ensureDir(dirPath);const tempPath=path.join(dirPath,`.${path.basename(targetPath)}.${process.pid}.${Date.now()}.${crypto.randomBytes(4).toString("hex")}.tmp`);await fs.writeFile(tempPath,contents,"utf8");try{await fs.rename(tempPath,targetPath)}catch(error){if(process.platform==="win32"&&(isErrno(error,"EPERM")||isErrno(error,"EBUSY"))){let lastError=error;for(const delayMs of WINDOWS_RENAME_RETRY_DELAYS_MS){await new Promise(resolve=>setTimeout(resolve,delayMs));try{await fs.rename(tempPath,targetPath);return}catch(retryError){lastError=retryError;if(!isErrno(retryError,"EPERM")&&!isErrno(retryError,"EBUSY")){break}}}try{await fs.unlink(tempPath)}catch{}throw lastError}if(isErrno(error,"EXDEV")){try{await fs.copyFile(tempPath,targetPath)}finally{try{await fs.unlink(tempPath)}catch{}}return}try{await fs.unlink(tempPath)}catch{}throw error}}async function appendLineAtomic(targetPath,line){const dirPath=path.dirname(targetPath);await ensureDir(dirPath);const handle=await fs.open(targetPath,"a");try{await handle.writeFile(`${line}
|
|
2
|
+
`,"utf8")}finally{await handle.close()}}async function removeFileIfExists(targetPath){try{await fs.unlink(targetPath)}catch(error){if(!isFileAbsentError(error)){throw error}}}function isErrno(error,code){return typeof error==="object"&&error!==null&&"code"in error&&error.code===code}export{appendLineAtomic,ensureDir,isFileAbsentError,isFileMissingError,pathExists,readFileIfExists,removeFileIfExists,writeFileAtomic};
|
|
158
3
|
//# sourceMappingURL=fs-utils.js.map
|
|
159
|
-
//# debugId=23fc5fcb-5c80-57ab-8d91-8d15ee35ab53
|
|
@@ -1,142 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* @module core/fs/host-environment-errors
|
|
3
|
-
*
|
|
4
|
-
* Classifies host filesystem/resource failures at SDK boundaries without
|
|
5
|
-
* leaking local paths or swallowing genuine implementation defects.
|
|
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]="1262c682-2b8a-506f-a3e1-155ad682d763")}catch(e){}}();
|
|
9
|
-
import { constants as osConstants } from "node:os";
|
|
10
|
-
import { EXIT_CODE } from "../shared/constants.js";
|
|
11
|
-
import { PmCliError } from "../shared/errors.js";
|
|
12
|
-
const HOST_ENVIRONMENT_FAULTS = new Map([
|
|
13
|
-
[
|
|
14
|
-
"EACCES",
|
|
15
|
-
{
|
|
16
|
-
summary: "was denied filesystem permission",
|
|
17
|
-
recovery: "Grant the required filesystem access, then retry.",
|
|
18
|
-
category: "permission",
|
|
19
|
-
},
|
|
20
|
-
],
|
|
21
|
-
[
|
|
22
|
-
"EDQUOT",
|
|
23
|
-
{
|
|
24
|
-
summary: "exceeded the filesystem quota",
|
|
25
|
-
recovery: "Raise or reclaim the filesystem quota, then retry.",
|
|
26
|
-
category: "capacity",
|
|
27
|
-
},
|
|
28
|
-
],
|
|
29
|
-
[
|
|
30
|
-
"EMFILE",
|
|
31
|
-
{
|
|
32
|
-
summary: "exhausted the process file-descriptor limit",
|
|
33
|
-
recovery: "Close unused file handles or raise the process limit, then retry.",
|
|
34
|
-
category: "resource",
|
|
35
|
-
},
|
|
36
|
-
],
|
|
37
|
-
[
|
|
38
|
-
"ENFILE",
|
|
39
|
-
{
|
|
40
|
-
summary: "exhausted the host file-descriptor limit",
|
|
41
|
-
recovery: "Free host file descriptors or raise the host limit, then retry.",
|
|
42
|
-
category: "resource",
|
|
43
|
-
},
|
|
44
|
-
],
|
|
45
|
-
[
|
|
46
|
-
"ENOMEM",
|
|
47
|
-
{
|
|
48
|
-
summary: "ran out of available memory",
|
|
49
|
-
recovery: "Free memory or reduce concurrent work, then retry.",
|
|
50
|
-
category: "resource",
|
|
51
|
-
},
|
|
52
|
-
],
|
|
53
|
-
[
|
|
54
|
-
"ENOSPC",
|
|
55
|
-
{
|
|
56
|
-
summary: "ran out of storage space",
|
|
57
|
-
recovery: "Free storage on the filesystem holding the project, then retry.",
|
|
58
|
-
category: "capacity",
|
|
59
|
-
},
|
|
60
|
-
],
|
|
61
|
-
[
|
|
62
|
-
"EPERM",
|
|
63
|
-
{
|
|
64
|
-
summary: "was denied by the host permission policy",
|
|
65
|
-
recovery: "Grant the required filesystem permission, then retry.",
|
|
66
|
-
category: "permission",
|
|
67
|
-
},
|
|
68
|
-
],
|
|
69
|
-
[
|
|
70
|
-
"EROFS",
|
|
71
|
-
{
|
|
72
|
-
summary: "targeted a read-only filesystem",
|
|
73
|
-
recovery: "Use a writable project filesystem or remount it read-write, then retry.",
|
|
74
|
-
category: "permission",
|
|
75
|
-
},
|
|
76
|
-
],
|
|
77
|
-
]);
|
|
78
|
-
const OPERATION_PATTERN = /^[a-z][a-z0-9_]{0,63}$/u;
|
|
79
|
-
const HOST_ENVIRONMENT_ERRNO_NAMES = new Map([
|
|
80
|
-
[osConstants.errno.EACCES, "EACCES"],
|
|
81
|
-
[osConstants.errno.EDQUOT, "EDQUOT"],
|
|
82
|
-
[osConstants.errno.EMFILE, "EMFILE"],
|
|
83
|
-
[osConstants.errno.ENFILE, "ENFILE"],
|
|
84
|
-
[osConstants.errno.ENOMEM, "ENOMEM"],
|
|
85
|
-
[osConstants.errno.ENOSPC, "ENOSPC"],
|
|
86
|
-
[osConstants.errno.EPERM, "EPERM"],
|
|
87
|
-
[osConstants.errno.EROFS, "EROFS"],
|
|
88
|
-
].filter(([errno]) => Number.isInteger(errno)));
|
|
89
|
-
const HOST_ENVIRONMENT_FAULT_CODES = {
|
|
90
|
-
capacity: { code: "host_environment_capacity_fault" },
|
|
91
|
-
permission: { code: "host_environment_permission_fault" },
|
|
92
|
-
resource: { code: "host_environment_resource_fault" },
|
|
93
|
-
};
|
|
94
|
-
/** Return a declared host errno only when it represents recoverable environment state. */
|
|
95
|
-
export function classifyHostEnvironmentFault(error) {
|
|
96
|
-
if (typeof error !== "object" || error === null) {
|
|
97
|
-
return null;
|
|
98
|
-
}
|
|
99
|
-
const errorRecord = error;
|
|
100
|
-
if (typeof errorRecord.code === "string" &&
|
|
101
|
-
HOST_ENVIRONMENT_FAULTS.has(errorRecord.code)) {
|
|
102
|
-
return errorRecord.code;
|
|
103
|
-
}
|
|
104
|
-
if (typeof errorRecord.errno !== "number" ||
|
|
105
|
-
!Number.isInteger(errorRecord.errno)) {
|
|
106
|
-
return null;
|
|
107
|
-
}
|
|
108
|
-
return HOST_ENVIRONMENT_ERRNO_NAMES.get(Math.abs(errorRecord.errno)) ?? null;
|
|
109
|
-
}
|
|
110
|
-
/** Translate one known host fault into a stable path-redacted SDK refusal. */
|
|
111
|
-
export function translateHostEnvironmentFault(error, operation, options = {}) {
|
|
112
|
-
const errno = classifyHostEnvironmentFault(error);
|
|
113
|
-
if (errno === null)
|
|
114
|
-
return null;
|
|
115
|
-
if (!OPERATION_PATTERN.test(operation)) {
|
|
116
|
-
throw new PmCliError("Host environment operation labels must be bounded identifiers.", EXIT_CODE.USAGE, { code: "host_environment_operation_invalid", field: "operation" });
|
|
117
|
-
}
|
|
118
|
-
const fault = HOST_ENVIRONMENT_FAULTS.get(errno);
|
|
119
|
-
return new PmCliError(`Host filesystem operation ${operation} ${fault.summary}.`, EXIT_CODE.GENERIC_FAILURE, {
|
|
120
|
-
code: options.codes?.[fault.category] ??
|
|
121
|
-
HOST_ENVIRONMENT_FAULT_CODES[fault.category].code,
|
|
122
|
-
reason: errno,
|
|
123
|
-
required: fault.recovery,
|
|
124
|
-
why: options.why ??
|
|
125
|
-
"The operating system refused a required project filesystem operation.",
|
|
126
|
-
nextSteps: [fault.recovery, ...(options.nextSteps ?? [])],
|
|
127
|
-
...(options.suggestedRetry
|
|
128
|
-
? { recovery: { suggested_retry: options.suggestedRetry } }
|
|
129
|
-
: {}),
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
/** Run one SDK filesystem stage and translate only declared host faults. */
|
|
133
|
-
export async function withHostEnvironmentBoundary(operation, run, options = {}) {
|
|
134
|
-
try {
|
|
135
|
-
return await run();
|
|
136
|
-
}
|
|
137
|
-
catch (error) {
|
|
138
|
-
throw translateHostEnvironmentFault(error, operation, options) ?? error;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
1
|
+
!(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="aaf1c6ce-1bc9-5974-a38f-7daf8e4e63cc")}catch(e2){}})();import{constants as osConstants}from"node:os";import{EXIT_CODE}from"../shared/constants.js";import{PmCliError}from"../shared/errors.js";const HOST_ENVIRONMENT_FAULTS=new Map([["EACCES",{summary:"was denied filesystem permission",recovery:"Grant the required filesystem access, then retry.",category:"permission"}],["EDQUOT",{summary:"exceeded the filesystem quota",recovery:"Raise or reclaim the filesystem quota, then retry.",category:"capacity"}],["EMFILE",{summary:"exhausted the process file-descriptor limit",recovery:"Close unused file handles or raise the process limit, then retry.",category:"resource"}],["ENFILE",{summary:"exhausted the host file-descriptor limit",recovery:"Free host file descriptors or raise the host limit, then retry.",category:"resource"}],["ENOMEM",{summary:"ran out of available memory",recovery:"Free memory or reduce concurrent work, then retry.",category:"resource"}],["ENOSPC",{summary:"ran out of storage space",recovery:"Free storage on the filesystem holding the project, then retry.",category:"capacity"}],["EPERM",{summary:"was denied by the host permission policy",recovery:"Grant the required filesystem permission, then retry.",category:"permission"}],["EROFS",{summary:"targeted a read-only filesystem",recovery:"Use a writable project filesystem or remount it read-write, then retry.",category:"permission"}]]);const OPERATION_PATTERN=/^[a-z][a-z0-9_]{0,63}$/u;const HOST_ENVIRONMENT_ERRNO_NAMES=new Map([[osConstants.errno.EACCES,"EACCES"],[osConstants.errno.EDQUOT,"EDQUOT"],[osConstants.errno.EMFILE,"EMFILE"],[osConstants.errno.ENFILE,"ENFILE"],[osConstants.errno.ENOMEM,"ENOMEM"],[osConstants.errno.ENOSPC,"ENOSPC"],[osConstants.errno.EPERM,"EPERM"],[osConstants.errno.EROFS,"EROFS"]].filter(([errno])=>Number.isInteger(errno)));const HOST_ENVIRONMENT_FAULT_CODES={capacity:{code:"host_environment_capacity_fault"},permission:{code:"host_environment_permission_fault"},resource:{code:"host_environment_resource_fault"}};function classifyHostEnvironmentFault(error){if(typeof error!=="object"||error===null){return null}const errorRecord=error;if(typeof errorRecord.code==="string"&&HOST_ENVIRONMENT_FAULTS.has(errorRecord.code)){return errorRecord.code}if(typeof errorRecord.errno!=="number"||!Number.isInteger(errorRecord.errno)){return null}return HOST_ENVIRONMENT_ERRNO_NAMES.get(Math.abs(errorRecord.errno))??null}function translateHostEnvironmentFault(error,operation,options={}){const errno=classifyHostEnvironmentFault(error);if(errno===null)return null;if(!OPERATION_PATTERN.test(operation)){throw new PmCliError("Host environment operation labels must be bounded identifiers.",EXIT_CODE.USAGE,{code:"host_environment_operation_invalid",field:"operation"})}const fault=HOST_ENVIRONMENT_FAULTS.get(errno);return new PmCliError(`Host filesystem operation ${operation} ${fault.summary}.`,EXIT_CODE.GENERIC_FAILURE,{code:options.codes?.[fault.category]??HOST_ENVIRONMENT_FAULT_CODES[fault.category].code,reason:errno,required:fault.recovery,why:options.why??"The operating system refused a required project filesystem operation.",nextSteps:[fault.recovery,...options.nextSteps??[]],...options.suggestedRetry?{recovery:{suggested_retry:options.suggestedRetry}}:{}})}async function withHostEnvironmentBoundary(operation,run,options={}){try{return await run()}catch(error){throw translateHostEnvironmentFault(error,operation,options)??error}}export{classifyHostEnvironmentFault,translateHostEnvironmentFault,withHostEnvironmentBoundary};
|
|
141
2
|
//# sourceMappingURL=host-environment-errors.js.map
|
|
142
|
-
//# debugId=1262c682-2b8a-506f-a3e1-155ad682d763
|
package/dist/core/fs/index.js
CHANGED
|
@@ -1,10 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* @module core/fs/index
|
|
3
|
-
*
|
|
4
|
-
* Provides filesystem helpers for Index.
|
|
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]="141337ab-9bf6-57cc-adac-43cfddd67e64")}catch(e){}}();
|
|
8
|
-
export * from "./fs-utils.js";
|
|
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]="c24aeefc-5ee2-5a06-9a16-941d89b10cd7")}catch(e2){}})();export*from"./fs-utils.js";
|
|
9
2
|
//# sourceMappingURL=index.js.map
|
|
10
|
-
//# debugId=141337ab-9bf6-57cc-adac-43cfddd67e64
|
|
@@ -1,18 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* @module core/fs/path-utils
|
|
3
|
-
*
|
|
4
|
-
* Provides filesystem helpers for Path Utils.
|
|
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]="624aced5-552c-5354-9e34-b96e267d34d1")}catch(e){}}();
|
|
8
|
-
import path from "path";
|
|
9
|
-
/** Implements check whether path within directory for the public runtime surface of this module. */
|
|
10
|
-
export function isPathWithinDirectory(directory, targetPath) {
|
|
11
|
-
const relative = path.relative(directory, targetPath);
|
|
12
|
-
if (relative.length === 0) {
|
|
13
|
-
return true;
|
|
14
|
-
}
|
|
15
|
-
return !relative.startsWith("..") && !path.isAbsolute(relative);
|
|
16
|
-
}
|
|
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]="83a29a06-1b0b-52e6-9617-2fc03861cb18")}catch(e2){}})();import path from"path";function isPathWithinDirectory(directory,targetPath){const relative=path.relative(directory,targetPath);if(relative.length===0){return true}return!relative.startsWith("..")&&!path.isAbsolute(relative)}export{isPathWithinDirectory};
|
|
17
2
|
//# sourceMappingURL=path-utils.js.map
|
|
18
|
-
//# debugId=624aced5-552c-5354-9e34-b96e267d34d1
|