@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,116 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* @module sdk/governance/extension-host-version
|
|
3
|
-
*
|
|
4
|
-
* Discovers the pm-cli copy that each loaded extension resolves at runtime so
|
|
5
|
-
* package-manager layout skew is visible before SDK singleton state diverges.
|
|
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]="c21b1a94-1d80-57c0-b090-c4831fc505a2")}catch(e){}}();
|
|
9
|
-
import fs from "node:fs/promises";
|
|
10
|
-
import { createRequire } from "node:module";
|
|
11
|
-
import path from "node:path";
|
|
12
|
-
import { resolvePmPackageRootFromModule } from "../../core/packages/root.js";
|
|
13
|
-
function displayPackagePath(packageJsonPath, workspaceRoot) {
|
|
14
|
-
const relative = path.relative(workspaceRoot, packageJsonPath);
|
|
15
|
-
if (relative.length > 0 &&
|
|
16
|
-
relative !== ".." &&
|
|
17
|
-
!relative.startsWith(`..${path.sep}`) &&
|
|
18
|
-
!path.isAbsolute(relative)) {
|
|
19
|
-
return relative.split(path.sep).join("/");
|
|
20
|
-
}
|
|
21
|
-
const externalPath = path.resolve(packageJsonPath);
|
|
22
|
-
let fingerprint = 0xcbf29ce484222325n;
|
|
23
|
-
for (let index = 0; index < externalPath.length; index += 1) {
|
|
24
|
-
fingerprint ^= BigInt(externalPath.charCodeAt(index));
|
|
25
|
-
fingerprint = BigInt.asUintN(64, fingerprint * 0x100000001b3n);
|
|
26
|
-
}
|
|
27
|
-
const installationId = fingerprint.toString(16).padStart(16, "0");
|
|
28
|
-
return `<external>/${installationId}/${path.basename(path.dirname(packageJsonPath))}/package.json`;
|
|
29
|
-
}
|
|
30
|
-
function dependencyLayout(packageJsonPath) {
|
|
31
|
-
if (packageJsonPath.includes(`${path.sep}.pnpm${path.sep}`))
|
|
32
|
-
return "pnpm";
|
|
33
|
-
if (packageJsonPath.includes(`${path.sep}node_modules${path.sep}`)) {
|
|
34
|
-
return "npm";
|
|
35
|
-
}
|
|
36
|
-
return "other";
|
|
37
|
-
}
|
|
38
|
-
async function readPackageVersion(packageJsonPath) {
|
|
39
|
-
try {
|
|
40
|
-
const parsed = JSON.parse(await fs.readFile(packageJsonPath, "utf8"));
|
|
41
|
-
return parsed.name === "@unbrained/pm-cli" &&
|
|
42
|
-
typeof parsed.version === "string" &&
|
|
43
|
-
parsed.version.trim().length > 0
|
|
44
|
-
? parsed.version.trim()
|
|
45
|
-
: undefined;
|
|
46
|
-
}
|
|
47
|
-
catch {
|
|
48
|
-
return undefined;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
/** Resolve symlink and platform alias segments without failing soft scans for absent hosts. */
|
|
52
|
-
async function canonicalPath(candidate) {
|
|
53
|
-
try {
|
|
54
|
-
return await fs.realpath(candidate);
|
|
55
|
-
}
|
|
56
|
-
catch {
|
|
57
|
-
return path.resolve(candidate);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
/** Scan the host plus the nearest pm-cli package resolvable by every loaded extension. */
|
|
61
|
-
export async function scanExtensionHostVersions(loadedExtensions, workspaceRoot, hostPackageRoot = resolvePmPackageRootFromModule(import.meta.url, [
|
|
62
|
-
"../../..",
|
|
63
|
-
])) {
|
|
64
|
-
const canonicalWorkspaceRoot = await canonicalPath(workspaceRoot);
|
|
65
|
-
const hostPackageJson = await canonicalPath(path.join(hostPackageRoot, "package.json"));
|
|
66
|
-
const hostVersion = await readPackageVersion(hostPackageJson);
|
|
67
|
-
const copies = new Map();
|
|
68
|
-
if (hostVersion !== undefined) {
|
|
69
|
-
copies.set(hostPackageJson, {
|
|
70
|
-
version: hostVersion,
|
|
71
|
-
path: displayPackagePath(hostPackageJson, canonicalWorkspaceRoot),
|
|
72
|
-
layout: "host",
|
|
73
|
-
consumers: ["pm-cli-host"],
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
for (const extension of loadedExtensions) {
|
|
77
|
-
try {
|
|
78
|
-
const resolved = createRequire(extension.entry_path).resolve("@unbrained/pm-cli/package.json");
|
|
79
|
-
const canonicalPackageJson = await canonicalPath(resolved);
|
|
80
|
-
const version = await readPackageVersion(canonicalPackageJson);
|
|
81
|
-
if (version === undefined)
|
|
82
|
-
continue;
|
|
83
|
-
const key = canonicalPackageJson;
|
|
84
|
-
const existing = copies.get(key);
|
|
85
|
-
if (existing) {
|
|
86
|
-
if (!existing.consumers.includes(extension.name)) {
|
|
87
|
-
existing.consumers.push(extension.name);
|
|
88
|
-
existing.consumers.sort((left, right) => left.localeCompare(right));
|
|
89
|
-
}
|
|
90
|
-
continue;
|
|
91
|
-
}
|
|
92
|
-
copies.set(key, {
|
|
93
|
-
version,
|
|
94
|
-
path: displayPackagePath(canonicalPackageJson, canonicalWorkspaceRoot),
|
|
95
|
-
layout: dependencyLayout(canonicalPackageJson),
|
|
96
|
-
consumers: [extension.name],
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
catch {
|
|
100
|
-
// Extensions that do not resolve pm-cli use the host surface they were
|
|
101
|
-
// handed. Load/activation diagnostics own unrelated resolution failures.
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
const sortedCopies = [...copies.values()].sort((left, right) => left.path.localeCompare(right.path));
|
|
105
|
-
const mismatches = hostVersion === undefined
|
|
106
|
-
? []
|
|
107
|
-
: sortedCopies.filter((copy) => copy.version !== hostVersion);
|
|
108
|
-
return {
|
|
109
|
-
host_version: hostVersion ?? null,
|
|
110
|
-
copies: sortedCopies,
|
|
111
|
-
mismatches,
|
|
112
|
-
warnings: mismatches.map((copy) => `extension_host_pm_cli_version_skew:${hostVersion}:${copy.version}:${copy.consumers.join("+")}`),
|
|
113
|
-
};
|
|
114
|
-
}
|
|
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]="a0014621-9e3d-5620-8f36-081811054843")}catch(e2){}})();import fs from"node:fs/promises";import{createRequire}from"node:module";import path from"node:path";import{resolvePmPackageRootFromModule}from"../../core/packages/root.js";function displayPackagePath(packageJsonPath,workspaceRoot){const relative=path.relative(workspaceRoot,packageJsonPath);if(relative.length>0&&relative!==".."&&!relative.startsWith(`..${path.sep}`)&&!path.isAbsolute(relative)){return relative.split(path.sep).join("/")}const externalPath=path.resolve(packageJsonPath);let fingerprint=0xcbf29ce484222325n;for(let index=0;index<externalPath.length;index+=1){fingerprint^=BigInt(externalPath.charCodeAt(index));fingerprint=BigInt.asUintN(64,fingerprint*0x100000001b3n)}const installationId=fingerprint.toString(16).padStart(16,"0");return`<external>/${installationId}/${path.basename(path.dirname(packageJsonPath))}/package.json`}function dependencyLayout(packageJsonPath){if(packageJsonPath.includes(`${path.sep}.pnpm${path.sep}`))return"pnpm";if(packageJsonPath.includes(`${path.sep}node_modules${path.sep}`)){return"npm"}return"other"}async function readPackageVersion(packageJsonPath){try{const parsed=JSON.parse(await fs.readFile(packageJsonPath,"utf8"));return parsed.name==="@unbrained/pm-cli"&&typeof parsed.version==="string"&&parsed.version.trim().length>0?parsed.version.trim():void 0}catch{return void 0}}async function canonicalPath(candidate){try{return await fs.realpath(candidate)}catch{return path.resolve(candidate)}}async function scanExtensionHostVersions(loadedExtensions,workspaceRoot,hostPackageRoot=resolvePmPackageRootFromModule(import.meta.url,["../../.."])){const canonicalWorkspaceRoot=await canonicalPath(workspaceRoot);const hostPackageJson=await canonicalPath(path.join(hostPackageRoot,"package.json"));const hostVersion=await readPackageVersion(hostPackageJson);const copies=new Map;if(hostVersion!==void 0){copies.set(hostPackageJson,{version:hostVersion,path:displayPackagePath(hostPackageJson,canonicalWorkspaceRoot),layout:"host",consumers:["pm-cli-host"]})}for(const extension of loadedExtensions){try{const resolved=createRequire(extension.entry_path).resolve("@unbrained/pm-cli/package.json");const canonicalPackageJson=await canonicalPath(resolved);const version=await readPackageVersion(canonicalPackageJson);if(version===void 0)continue;const key=canonicalPackageJson;const existing=copies.get(key);if(existing){if(!existing.consumers.includes(extension.name)){existing.consumers.push(extension.name);existing.consumers.sort((left,right)=>left.localeCompare(right))}continue}copies.set(key,{version,path:displayPackagePath(canonicalPackageJson,canonicalWorkspaceRoot),layout:dependencyLayout(canonicalPackageJson),consumers:[extension.name]})}catch{}}const sortedCopies=[...copies.values()].sort((left,right)=>left.path.localeCompare(right.path));const mismatches=hostVersion===void 0?[]:sortedCopies.filter(copy=>copy.version!==hostVersion);return{host_version:hostVersion??null,copies:sortedCopies,mismatches,warnings:mismatches.map(copy=>`extension_host_pm_cli_version_skew:${hostVersion}:${copy.version}:${copy.consumers.join("+")}`)}}export{scanExtensionHostVersions};
|
|
115
2
|
//# sourceMappingURL=extension-host-version.js.map
|
|
116
|
-
//# debugId=c21b1a94-1d80-57c0-b090-c4831fc505a2
|
|
@@ -1,369 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* @module sdk/governance/gc
|
|
3
|
-
*
|
|
4
|
-
* Implements the pm gc command surface and its agent-facing runtime behavior.
|
|
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]="76f8405f-138d-5119-a300-f068354394a5")}catch(e){}}();
|
|
8
|
-
import { assertInitializedTracker } from "../environment/tracker-preflight.js";
|
|
9
|
-
import fs from "node:fs/promises";
|
|
10
|
-
import path from "node:path";
|
|
11
|
-
import { runCheckpointGc } from "../../core/checkpoint/checkpoint-gc.js";
|
|
12
|
-
import { runWorkspaceTransactionGc } from "../workspace-transaction-gc.js";
|
|
13
|
-
import { runActiveOnIndexHooks, runActiveOnReadHooks, runActiveOnWriteHooks, } from "../../core/extensions/index.js";
|
|
14
|
-
import { isFileMissingError, pathExists } from "../../core/fs/fs-utils.js";
|
|
15
|
-
import { runLockGc } from "../../core/lock/lock-gc.js";
|
|
16
|
-
import { EXIT_CODE } from "../../core/shared/constants.js";
|
|
17
|
-
import { PmCliError } from "../../core/shared/errors.js";
|
|
18
|
-
import { nowIso } from "../../core/shared/time.js";
|
|
19
|
-
import { resolvePmRoot } from "../../core/store/paths.js";
|
|
20
|
-
import { readSettings } from "../../core/store/settings.js";
|
|
21
|
-
const GC_SCOPE_VALUES = [
|
|
22
|
-
"index",
|
|
23
|
-
"embeddings",
|
|
24
|
-
"runtime",
|
|
25
|
-
"locks",
|
|
26
|
-
"checkpoints",
|
|
27
|
-
"transactions",
|
|
28
|
-
];
|
|
29
|
-
const WORKSPACE_SNAPSHOT_TEMP_RETENTION_MS = 24 * 60 * 60 * 1_000;
|
|
30
|
-
const GC_TARGETS = [
|
|
31
|
-
{
|
|
32
|
-
scope: "index",
|
|
33
|
-
relativePath: "index/manifest.json",
|
|
34
|
-
kind: "file",
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
scope: "embeddings",
|
|
38
|
-
relativePath: "search/embeddings.jsonl",
|
|
39
|
-
kind: "file",
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
scope: "embeddings",
|
|
43
|
-
relativePath: "search/vectorization-status.json",
|
|
44
|
-
kind: "file",
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
scope: "embeddings",
|
|
48
|
-
relativePath: "search/lancedb",
|
|
49
|
-
kind: "directory",
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
// Removing embeddings invalidates the whole semantic index, so the queued
|
|
53
|
-
// background-refresh work is also meaningless: a worker draining a stale
|
|
54
|
-
// queue against an empty ledger would rebuild a partial, inconsistent index
|
|
55
|
-
// (only the queued items vectorized). Clear the queue and its gate so the
|
|
56
|
-
// next mutation re-seeds from a clean slate. See core/search/background-refresh.ts.
|
|
57
|
-
scope: "embeddings",
|
|
58
|
-
relativePath: "search/pending-refresh.json",
|
|
59
|
-
kind: "file",
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
scope: "embeddings",
|
|
63
|
-
relativePath: "search/pending-refresh.gate.lock",
|
|
64
|
-
kind: "directory",
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
scope: "runtime",
|
|
68
|
-
relativePath: "runtime/test-runs",
|
|
69
|
-
kind: "directory",
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
scope: "runtime",
|
|
73
|
-
relativePath: "runtime/history-drift-cache.json",
|
|
74
|
-
kind: "file",
|
|
75
|
-
},
|
|
76
|
-
];
|
|
77
|
-
async function removeCacheFile(pmRoot, target, dryRun) {
|
|
78
|
-
const relativePath = target.relativePath;
|
|
79
|
-
const absolutePath = path.join(pmRoot, relativePath);
|
|
80
|
-
const warnings = await runActiveOnReadHooks({
|
|
81
|
-
path: absolutePath,
|
|
82
|
-
scope: "project",
|
|
83
|
-
});
|
|
84
|
-
try {
|
|
85
|
-
const stats = await fs.stat(absolutePath);
|
|
86
|
-
if (target.kind === "file" && !stats.isFile()) {
|
|
87
|
-
return {
|
|
88
|
-
removed: false,
|
|
89
|
-
warnings: [...warnings, `not_a_file:${relativePath}`],
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
if (target.kind === "directory" && !stats.isDirectory()) {
|
|
93
|
-
return {
|
|
94
|
-
removed: false,
|
|
95
|
-
warnings: [...warnings, `not_a_directory:${relativePath}`],
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
if (dryRun) {
|
|
99
|
-
return {
|
|
100
|
-
removed: true,
|
|
101
|
-
warnings,
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
if (target.kind === "file") {
|
|
105
|
-
await fs.unlink(absolutePath);
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
await fs.rm(absolutePath, { recursive: true, force: true });
|
|
109
|
-
}
|
|
110
|
-
const writeWarnings = await runActiveOnWriteHooks({
|
|
111
|
-
path: absolutePath,
|
|
112
|
-
scope: "project",
|
|
113
|
-
op: "gc:remove",
|
|
114
|
-
});
|
|
115
|
-
return {
|
|
116
|
-
removed: true,
|
|
117
|
-
warnings: [...warnings, ...writeWarnings],
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
catch (error) {
|
|
121
|
-
if (isFileMissingError(error)) {
|
|
122
|
-
return {
|
|
123
|
-
removed: false,
|
|
124
|
-
warnings,
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
throw error;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
async function sweepWorkspaceSnapshotTemps(pmRoot, dryRun) {
|
|
131
|
-
const roots = [
|
|
132
|
-
{
|
|
133
|
-
relativePath: "runtime/workspace-snapshots/objects",
|
|
134
|
-
prefix: ".create-",
|
|
135
|
-
},
|
|
136
|
-
{
|
|
137
|
-
relativePath: "runtime/workspace-snapshots/refs",
|
|
138
|
-
prefix: ".ref-",
|
|
139
|
-
},
|
|
140
|
-
];
|
|
141
|
-
const removed = [];
|
|
142
|
-
const retained = [];
|
|
143
|
-
const warnings = [];
|
|
144
|
-
const staleBefore = Date.now() - WORKSPACE_SNAPSHOT_TEMP_RETENTION_MS;
|
|
145
|
-
for (const root of roots) {
|
|
146
|
-
const absoluteRoot = path.join(pmRoot, root.relativePath);
|
|
147
|
-
if (!(await pathExists(absoluteRoot))) {
|
|
148
|
-
continue;
|
|
149
|
-
}
|
|
150
|
-
const names = (await fs.readdir(absoluteRoot))
|
|
151
|
-
.filter((name) => name.startsWith(root.prefix))
|
|
152
|
-
.sort();
|
|
153
|
-
for (const name of names) {
|
|
154
|
-
const relativePath = path.posix.join(root.relativePath, name);
|
|
155
|
-
const absolutePath = path.join(absoluteRoot, name);
|
|
156
|
-
warnings.push(...(await runActiveOnReadHooks({
|
|
157
|
-
path: absolutePath,
|
|
158
|
-
scope: "project",
|
|
159
|
-
})));
|
|
160
|
-
const stats = await fs.stat(absolutePath).catch((error) => {
|
|
161
|
-
if (isFileMissingError(error)) {
|
|
162
|
-
return undefined;
|
|
163
|
-
}
|
|
164
|
-
throw error;
|
|
165
|
-
});
|
|
166
|
-
if (!stats) {
|
|
167
|
-
continue;
|
|
168
|
-
}
|
|
169
|
-
if (stats.mtimeMs > staleBefore) {
|
|
170
|
-
retained.push(relativePath);
|
|
171
|
-
continue;
|
|
172
|
-
}
|
|
173
|
-
removed.push(relativePath);
|
|
174
|
-
if (dryRun) {
|
|
175
|
-
continue;
|
|
176
|
-
}
|
|
177
|
-
await fs.rm(absolutePath, { recursive: true, force: true });
|
|
178
|
-
warnings.push(...(await runActiveOnWriteHooks({
|
|
179
|
-
path: absolutePath,
|
|
180
|
-
scope: "project",
|
|
181
|
-
op: "gc:workspace_snapshot_temp_remove",
|
|
182
|
-
})));
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
return { removed, retained, warnings };
|
|
186
|
-
}
|
|
187
|
-
function parseScopes(raw) {
|
|
188
|
-
if (!raw || raw.length === 0) {
|
|
189
|
-
return [...GC_SCOPE_VALUES];
|
|
190
|
-
}
|
|
191
|
-
const tokens = raw
|
|
192
|
-
.flatMap((entry) => entry.split(","))
|
|
193
|
-
.map((entry) => entry.trim().toLowerCase())
|
|
194
|
-
.filter((entry) => entry.length > 0);
|
|
195
|
-
if (tokens.length === 0) {
|
|
196
|
-
throw new PmCliError(`--scope requires at least one value (${GC_SCOPE_VALUES.join(",")})`, EXIT_CODE.USAGE);
|
|
197
|
-
}
|
|
198
|
-
const resolved = new Set();
|
|
199
|
-
for (const token of tokens) {
|
|
200
|
-
if (!GC_SCOPE_VALUES.includes(token)) {
|
|
201
|
-
throw new PmCliError(`Invalid --scope value "${token}". Expected one or more of: ${GC_SCOPE_VALUES.join(", ")}`, EXIT_CODE.USAGE);
|
|
202
|
-
}
|
|
203
|
-
resolved.add(token);
|
|
204
|
-
}
|
|
205
|
-
return GC_SCOPE_VALUES.filter((scope) => resolved.has(scope));
|
|
206
|
-
}
|
|
207
|
-
function buildGcGuidance(params) {
|
|
208
|
-
const guidance = [];
|
|
209
|
-
if (params.dryRun) {
|
|
210
|
-
guidance.push("Dry-run preview only: no cache artifacts were deleted.");
|
|
211
|
-
}
|
|
212
|
-
const searchScopeSelected = params.scopes.includes("index") || params.scopes.includes("embeddings");
|
|
213
|
-
const searchArtifactsAffected = params.removed.some((entry) => entry === "index/manifest.json" ||
|
|
214
|
-
entry === "search/embeddings.jsonl" ||
|
|
215
|
-
entry === "search/vectorization-status.json" ||
|
|
216
|
-
entry === "search/lancedb" ||
|
|
217
|
-
entry === "search/pending-refresh.json" ||
|
|
218
|
-
entry === "search/pending-refresh.gate.lock");
|
|
219
|
-
if (searchScopeSelected && searchArtifactsAffected) {
|
|
220
|
-
guidance.push('Search artifacts were removed; the semantic index (including any queued background refresh) is invalidated. Run "pm install search-advanced --project" if reindex is unavailable, then "pm reindex --mode keyword" (and "--mode semantic" when semantic search is enabled) before search-heavy workflows.');
|
|
221
|
-
}
|
|
222
|
-
if (params.removed.includes("runtime/history-drift-cache.json")) {
|
|
223
|
-
guidance.push('History drift cache was removed; the next "pm health" run performs a full history-drift re-scan.');
|
|
224
|
-
}
|
|
225
|
-
if (!params.dryRun &&
|
|
226
|
-
params.removed.some((entry) => entry.startsWith("checkpoints/"))) {
|
|
227
|
-
guidance.push('Aged rollback checkpoints were removed; their "pm update-many"/"pm close-many --rollback" windows are no longer recoverable.');
|
|
228
|
-
}
|
|
229
|
-
if (!params.dryRun &&
|
|
230
|
-
params.removed.some((entry) => entry.startsWith("transactions/"))) {
|
|
231
|
-
guidance.push("Aged terminal workspace-transaction journals were removed; replaying those transactionIds re-executes their idempotent steps instead of short-circuiting.");
|
|
232
|
-
}
|
|
233
|
-
return guidance;
|
|
234
|
-
}
|
|
235
|
-
/** Implements run gc for the public runtime surface of this module. */
|
|
236
|
-
export async function runGc(global, options = {}) {
|
|
237
|
-
const pmRoot = resolvePmRoot(process.cwd(), global.path);
|
|
238
|
-
await assertInitializedTracker(pmRoot);
|
|
239
|
-
const settings = await readSettings(pmRoot);
|
|
240
|
-
const dryRun = options.dryRun === true;
|
|
241
|
-
const scopes = parseScopes(options.scope);
|
|
242
|
-
const selectedTargets = GC_TARGETS.filter((target) => scopes.includes(target.scope));
|
|
243
|
-
const removed = [];
|
|
244
|
-
const retained = [];
|
|
245
|
-
const warnings = [];
|
|
246
|
-
for (const target of selectedTargets) {
|
|
247
|
-
const result = await removeCacheFile(pmRoot, target, dryRun);
|
|
248
|
-
if (result.removed) {
|
|
249
|
-
removed.push(target.relativePath);
|
|
250
|
-
}
|
|
251
|
-
else {
|
|
252
|
-
retained.push(target.relativePath);
|
|
253
|
-
}
|
|
254
|
-
warnings.push(...result.warnings);
|
|
255
|
-
}
|
|
256
|
-
if (scopes.includes("runtime")) {
|
|
257
|
-
const snapshotTempResult = await sweepWorkspaceSnapshotTemps(pmRoot, dryRun);
|
|
258
|
-
removed.push(...snapshotTempResult.removed);
|
|
259
|
-
retained.push(...snapshotTempResult.retained);
|
|
260
|
-
warnings.push(...snapshotTempResult.warnings);
|
|
261
|
-
}
|
|
262
|
-
// The locks scope is not a path-based GC_TARGET: it sweeps the locks/ directory
|
|
263
|
-
// and removes only locks whose own embedded ttl has expired (crashed-process
|
|
264
|
-
// debris), retaining active and unparseable locks. See core/lock/lock-gc.ts.
|
|
265
|
-
let locksSummary;
|
|
266
|
-
if (scopes.includes("locks")) {
|
|
267
|
-
const lockResult = await runLockGc(pmRoot, {
|
|
268
|
-
dryRun,
|
|
269
|
-
hooks: {
|
|
270
|
-
onRead: (lockPath) => runActiveOnReadHooks({ path: lockPath, scope: "project" }),
|
|
271
|
-
onWrite: (lockPath) => runActiveOnWriteHooks({
|
|
272
|
-
path: lockPath,
|
|
273
|
-
scope: "project",
|
|
274
|
-
op: "gc:lock_remove",
|
|
275
|
-
}),
|
|
276
|
-
},
|
|
277
|
-
});
|
|
278
|
-
removed.push(...lockResult.removed);
|
|
279
|
-
retained.push(...lockResult.retained);
|
|
280
|
-
warnings.push(...lockResult.warnings);
|
|
281
|
-
locksSummary = {
|
|
282
|
-
scanned: lockResult.scanned,
|
|
283
|
-
removed: lockResult.removed.length,
|
|
284
|
-
retained: lockResult.retained.length,
|
|
285
|
-
};
|
|
286
|
-
}
|
|
287
|
-
// The checkpoints scope is also not a path-based GC_TARGET: it sweeps
|
|
288
|
-
// checkpoints/ and removes only rollback checkpoints older than the configured
|
|
289
|
-
// checkpoints.retention_days, retaining active and unparseable files. See
|
|
290
|
-
// core/checkpoint/checkpoint-gc.ts.
|
|
291
|
-
// The transactions scope sweeps transactions/sdk/ and removes only terminal
|
|
292
|
-
// (committed/compensated) workspace-transaction journals older than the
|
|
293
|
-
// shared recovery-receipt retention, retaining in-flight and unparseable
|
|
294
|
-
// journals. See sdk/workspace-transaction-gc.ts.
|
|
295
|
-
let transactionsSummary;
|
|
296
|
-
if (scopes.includes("transactions")) {
|
|
297
|
-
const retentionDays = settings.checkpoints.retention_days;
|
|
298
|
-
const transactionResult = await runWorkspaceTransactionGc(pmRoot, {
|
|
299
|
-
dryRun,
|
|
300
|
-
retentionDays,
|
|
301
|
-
hooks: {
|
|
302
|
-
onRead: (journalPath) => runActiveOnReadHooks({ path: journalPath, scope: "project" }),
|
|
303
|
-
onWrite: (journalPath) => runActiveOnWriteHooks({
|
|
304
|
-
path: journalPath,
|
|
305
|
-
scope: "project",
|
|
306
|
-
op: "gc:transaction_journal_remove",
|
|
307
|
-
}),
|
|
308
|
-
},
|
|
309
|
-
});
|
|
310
|
-
removed.push(...transactionResult.removed);
|
|
311
|
-
retained.push(...transactionResult.retained);
|
|
312
|
-
warnings.push(...transactionResult.warnings);
|
|
313
|
-
transactionsSummary = {
|
|
314
|
-
scanned: transactionResult.scanned,
|
|
315
|
-
removed: transactionResult.removed.length,
|
|
316
|
-
retained: transactionResult.retained.length,
|
|
317
|
-
retention_days: retentionDays,
|
|
318
|
-
};
|
|
319
|
-
}
|
|
320
|
-
let checkpointsSummary;
|
|
321
|
-
if (scopes.includes("checkpoints")) {
|
|
322
|
-
const retentionDays = settings.checkpoints.retention_days;
|
|
323
|
-
const checkpointResult = await runCheckpointGc(pmRoot, {
|
|
324
|
-
dryRun,
|
|
325
|
-
retentionDays,
|
|
326
|
-
hooks: {
|
|
327
|
-
onRead: (checkpointPath) => runActiveOnReadHooks({ path: checkpointPath, scope: "project" }),
|
|
328
|
-
onWrite: (checkpointPath) => runActiveOnWriteHooks({
|
|
329
|
-
path: checkpointPath,
|
|
330
|
-
scope: "project",
|
|
331
|
-
op: "gc:checkpoint_remove",
|
|
332
|
-
}),
|
|
333
|
-
},
|
|
334
|
-
});
|
|
335
|
-
removed.push(...checkpointResult.removed);
|
|
336
|
-
retained.push(...checkpointResult.retained);
|
|
337
|
-
warnings.push(...checkpointResult.warnings);
|
|
338
|
-
checkpointsSummary = {
|
|
339
|
-
scanned: checkpointResult.scanned,
|
|
340
|
-
removed: checkpointResult.removed.length,
|
|
341
|
-
retained: checkpointResult.retained.length,
|
|
342
|
-
retention_days: retentionDays,
|
|
343
|
-
};
|
|
344
|
-
}
|
|
345
|
-
warnings.push(...(await runActiveOnIndexHooks({
|
|
346
|
-
mode: dryRun ? "gc:dry-run" : "gc",
|
|
347
|
-
total_items: selectedTargets.length,
|
|
348
|
-
})));
|
|
349
|
-
const guidance = buildGcGuidance({
|
|
350
|
-
dryRun,
|
|
351
|
-
scopes,
|
|
352
|
-
removed,
|
|
353
|
-
});
|
|
354
|
-
return {
|
|
355
|
-
ok: warnings.length === 0,
|
|
356
|
-
dry_run: dryRun,
|
|
357
|
-
scope: scopes,
|
|
358
|
-
removed,
|
|
359
|
-
retained,
|
|
360
|
-
warnings,
|
|
361
|
-
...(locksSummary ? { locks: locksSummary } : {}),
|
|
362
|
-
...(checkpointsSummary ? { checkpoints: checkpointsSummary } : {}),
|
|
363
|
-
...(transactionsSummary ? { transactions: transactionsSummary } : {}),
|
|
364
|
-
guidance,
|
|
365
|
-
generated_at: nowIso(),
|
|
366
|
-
};
|
|
367
|
-
}
|
|
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]="8e2e3b62-5eb1-5773-96bf-866b26a59345")}catch(e2){}})();import{assertInitializedTracker}from"../environment/tracker-preflight.js";import fs from"node:fs/promises";import path from"node:path";import{runCheckpointGc}from"../../core/checkpoint/checkpoint-gc.js";import{runWorkspaceTransactionGc}from"../workspace-transaction-gc.js";import{runActiveOnIndexHooks,runActiveOnReadHooks,runActiveOnWriteHooks}from"../../core/extensions/index.js";import{isFileMissingError,pathExists}from"../../core/fs/fs-utils.js";import{runLockGc}from"../../core/lock/lock-gc.js";import{EXIT_CODE}from"../../core/shared/constants.js";import{PmCliError}from"../../core/shared/errors.js";import{nowIso}from"../../core/shared/time.js";import{resolvePmRoot}from"../../core/store/paths.js";import{readSettings}from"../../core/store/settings.js";const GC_SCOPE_VALUES=["index","embeddings","runtime","locks","checkpoints","transactions"];const WORKSPACE_SNAPSHOT_TEMP_RETENTION_MS=24*60*60*1e3;const GC_TARGETS=[{scope:"index",relativePath:"index/manifest.json",kind:"file"},{scope:"embeddings",relativePath:"search/embeddings.jsonl",kind:"file"},{scope:"embeddings",relativePath:"search/vectorization-status.json",kind:"file"},{scope:"embeddings",relativePath:"search/lancedb",kind:"directory"},{scope:"embeddings",relativePath:"search/pending-refresh.json",kind:"file"},{scope:"embeddings",relativePath:"search/pending-refresh.gate.lock",kind:"directory"},{scope:"runtime",relativePath:"runtime/test-runs",kind:"directory"},{scope:"runtime",relativePath:"runtime/history-drift-cache.json",kind:"file"}];async function removeCacheFile(pmRoot,target,dryRun){const relativePath=target.relativePath;const absolutePath=path.join(pmRoot,relativePath);const warnings=await runActiveOnReadHooks({path:absolutePath,scope:"project"});try{const stats=await fs.stat(absolutePath);if(target.kind==="file"&&!stats.isFile()){return{removed:false,warnings:[...warnings,`not_a_file:${relativePath}`]}}if(target.kind==="directory"&&!stats.isDirectory()){return{removed:false,warnings:[...warnings,`not_a_directory:${relativePath}`]}}if(dryRun){return{removed:true,warnings}}if(target.kind==="file"){await fs.unlink(absolutePath)}else{await fs.rm(absolutePath,{recursive:true,force:true})}const writeWarnings=await runActiveOnWriteHooks({path:absolutePath,scope:"project",op:"gc:remove"});return{removed:true,warnings:[...warnings,...writeWarnings]}}catch(error){if(isFileMissingError(error)){return{removed:false,warnings}}throw error}}async function sweepWorkspaceSnapshotTemps(pmRoot,dryRun){const roots=[{relativePath:"runtime/workspace-snapshots/objects",prefix:".create-"},{relativePath:"runtime/workspace-snapshots/refs",prefix:".ref-"}];const removed=[];const retained=[];const warnings=[];const staleBefore=Date.now()-WORKSPACE_SNAPSHOT_TEMP_RETENTION_MS;for(const root of roots){const absoluteRoot=path.join(pmRoot,root.relativePath);if(!await pathExists(absoluteRoot)){continue}const names=(await fs.readdir(absoluteRoot)).filter(name=>name.startsWith(root.prefix)).sort();for(const name of names){const relativePath=path.posix.join(root.relativePath,name);const absolutePath=path.join(absoluteRoot,name);warnings.push(...await runActiveOnReadHooks({path:absolutePath,scope:"project"}));const stats=await fs.stat(absolutePath).catch(error=>{if(isFileMissingError(error)){return void 0}throw error});if(!stats){continue}if(stats.mtimeMs>staleBefore){retained.push(relativePath);continue}removed.push(relativePath);if(dryRun){continue}await fs.rm(absolutePath,{recursive:true,force:true});warnings.push(...await runActiveOnWriteHooks({path:absolutePath,scope:"project",op:"gc:workspace_snapshot_temp_remove"}))}}return{removed,retained,warnings}}function parseScopes(raw){if(!raw||raw.length===0){return[...GC_SCOPE_VALUES]}const tokens=raw.flatMap(entry=>entry.split(",")).map(entry=>entry.trim().toLowerCase()).filter(entry=>entry.length>0);if(tokens.length===0){throw new PmCliError(`--scope requires at least one value (${GC_SCOPE_VALUES.join(",")})`,EXIT_CODE.USAGE)}const resolved=new Set;for(const token of tokens){if(!GC_SCOPE_VALUES.includes(token)){throw new PmCliError(`Invalid --scope value "${token}". Expected one or more of: ${GC_SCOPE_VALUES.join(", ")}`,EXIT_CODE.USAGE)}resolved.add(token)}return GC_SCOPE_VALUES.filter(scope=>resolved.has(scope))}function buildGcGuidance(params){const guidance=[];if(params.dryRun){guidance.push("Dry-run preview only: no cache artifacts were deleted.")}const searchScopeSelected=params.scopes.includes("index")||params.scopes.includes("embeddings");const searchArtifactsAffected=params.removed.some(entry=>entry==="index/manifest.json"||entry==="search/embeddings.jsonl"||entry==="search/vectorization-status.json"||entry==="search/lancedb"||entry==="search/pending-refresh.json"||entry==="search/pending-refresh.gate.lock");if(searchScopeSelected&&searchArtifactsAffected){guidance.push('Search artifacts were removed; the semantic index (including any queued background refresh) is invalidated. Run "pm install search-advanced --project" if reindex is unavailable, then "pm reindex --mode keyword" (and "--mode semantic" when semantic search is enabled) before search-heavy workflows.')}if(params.removed.includes("runtime/history-drift-cache.json")){guidance.push('History drift cache was removed; the next "pm health" run performs a full history-drift re-scan.')}if(!params.dryRun&¶ms.removed.some(entry=>entry.startsWith("checkpoints/"))){guidance.push('Aged rollback checkpoints were removed; their "pm update-many"/"pm close-many --rollback" windows are no longer recoverable.')}if(!params.dryRun&¶ms.removed.some(entry=>entry.startsWith("transactions/"))){guidance.push("Aged terminal workspace-transaction journals were removed; replaying those transactionIds re-executes their idempotent steps instead of short-circuiting.")}return guidance}async function runGc(global2,options={}){const pmRoot=resolvePmRoot(process.cwd(),global2.path);await assertInitializedTracker(pmRoot);const settings=await readSettings(pmRoot);const dryRun=options.dryRun===true;const scopes=parseScopes(options.scope);const selectedTargets=GC_TARGETS.filter(target=>scopes.includes(target.scope));const removed=[];const retained=[];const warnings=[];for(const target of selectedTargets){const result=await removeCacheFile(pmRoot,target,dryRun);if(result.removed){removed.push(target.relativePath)}else{retained.push(target.relativePath)}warnings.push(...result.warnings)}if(scopes.includes("runtime")){const snapshotTempResult=await sweepWorkspaceSnapshotTemps(pmRoot,dryRun);removed.push(...snapshotTempResult.removed);retained.push(...snapshotTempResult.retained);warnings.push(...snapshotTempResult.warnings)}let locksSummary;if(scopes.includes("locks")){const lockResult=await runLockGc(pmRoot,{dryRun,hooks:{onRead:lockPath=>runActiveOnReadHooks({path:lockPath,scope:"project"}),onWrite:lockPath=>runActiveOnWriteHooks({path:lockPath,scope:"project",op:"gc:lock_remove"})}});removed.push(...lockResult.removed);retained.push(...lockResult.retained);warnings.push(...lockResult.warnings);locksSummary={scanned:lockResult.scanned,removed:lockResult.removed.length,retained:lockResult.retained.length}}let transactionsSummary;if(scopes.includes("transactions")){const retentionDays=settings.checkpoints.retention_days;const transactionResult=await runWorkspaceTransactionGc(pmRoot,{dryRun,retentionDays,hooks:{onRead:journalPath=>runActiveOnReadHooks({path:journalPath,scope:"project"}),onWrite:journalPath=>runActiveOnWriteHooks({path:journalPath,scope:"project",op:"gc:transaction_journal_remove"})}});removed.push(...transactionResult.removed);retained.push(...transactionResult.retained);warnings.push(...transactionResult.warnings);transactionsSummary={scanned:transactionResult.scanned,removed:transactionResult.removed.length,retained:transactionResult.retained.length,retention_days:retentionDays}}let checkpointsSummary;if(scopes.includes("checkpoints")){const retentionDays=settings.checkpoints.retention_days;const checkpointResult=await runCheckpointGc(pmRoot,{dryRun,retentionDays,hooks:{onRead:checkpointPath=>runActiveOnReadHooks({path:checkpointPath,scope:"project"}),onWrite:checkpointPath=>runActiveOnWriteHooks({path:checkpointPath,scope:"project",op:"gc:checkpoint_remove"})}});removed.push(...checkpointResult.removed);retained.push(...checkpointResult.retained);warnings.push(...checkpointResult.warnings);checkpointsSummary={scanned:checkpointResult.scanned,removed:checkpointResult.removed.length,retained:checkpointResult.retained.length,retention_days:retentionDays}}warnings.push(...await runActiveOnIndexHooks({mode:dryRun?"gc:dry-run":"gc",total_items:selectedTargets.length}));const guidance=buildGcGuidance({dryRun,scopes,removed});return{ok:warnings.length===0,dry_run:dryRun,scope:scopes,removed,retained,warnings,...locksSummary?{locks:locksSummary}:{},...checkpointsSummary?{checkpoints:checkpointsSummary}:{},...transactionsSummary?{transactions:transactionsSummary}:{},guidance,generated_at:nowIso()}}export{runGc};
|
|
368
2
|
//# sourceMappingURL=gc.js.map
|
|
369
|
-
//# debugId=76f8405f-138d-5119-a300-f068354394a5
|