@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
|
@@ -120,7 +120,7 @@ export interface PmProjectedTextDiagnostic {
|
|
|
120
120
|
/** Binding diagnostic budget receipt. */
|
|
121
121
|
diagnostic_output: PmDiagnosticOutputReceipt;
|
|
122
122
|
}
|
|
123
|
-
/** Bind human-readable diagnostics
|
|
123
|
+
/** Bind human-readable diagnostics while retaining their first identifying line and corrective action. */
|
|
124
124
|
export declare function projectPmDiagnosticText(output: string, correctiveAction: string, options?: {
|
|
125
125
|
diagnosticClass?: PmDiagnosticOutputClass;
|
|
126
126
|
maxEstimatedTokens?: number;
|
|
@@ -1,478 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module sdk/cli-contracts/agent-output-contracts
|
|
3
|
-
*
|
|
4
|
-
* Declares the agent-facing output budget vocabulary shared by CLI, SDK,
|
|
5
|
-
* packages, contract discovery, and regression gates. The contracts describe
|
|
6
|
-
* output policy without coupling package authors to pm's renderer.
|
|
7
|
-
*/
|
|
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]="b4036040-c0b8-5d01-b490-3405722fd1c5")}catch(e2){}})();import{stripVTControlCharacters}from"node:util";import{resolvePmHistoryOperation}from"./command-aliases.js";import{PM_CORE_COMMAND_NAMES}from"./enum-contracts.js";const PM_OUTPUT_DEGRADATION_STEPS=["full","compact","brief","summary","counts"];const PM_OUTPUT_BUDGET_CLASSES=["mutation","read","discovery","governance"];const PM_DIAGNOSTIC_OUTPUT_CLASSES=["error","warning","validation_summary","recovery_bundle"];const PM_DIAGNOSTIC_DEGRADATION_STEPS=["full","omit_explanation","limit_collections","compact_recovery","action_only"];const MUTATION_COMMANDS=new Set(["append","claim","close","close-many","close-task","comments","config","copy","create","delete","docs","event","files","focus","history-author-acknowledge","history-compact","history-redact","history-repair","init","item","learnings","meet","notes","pause-task","release","remind","restore","schema","start-task","update","update-many"]);const DISCOVERY_COMMANDS=new Set(["contracts","extension","help","install","package","packages","profile","upgrade"]);const GOVERNANCE_COMMANDS=new Set(["gc","health","merge","stats","telemetry","test","test-all","validate"]);const DEFAULT_MAX_ESTIMATED_TOKENS={mutation:2e3,read:4e3,discovery:3e3,governance:6e3};const JSON_BUDGET_NUMERATOR=3;const JSON_BUDGET_DENOMINATOR=2;const MINIMUM_DIAGNOSTIC_BUDGET=192;const DIAGNOSTIC_DEFAULT_BUDGETS={error:{text:768,json:2e3},warning:{text:768,json:2e3},validation_summary:{text:1500,json:3e3},recovery_bundle:{text:768,json:2e3}};const PM_DIAGNOSTIC_OUTPUT_BUDGET_CONTRACTS=PM_DIAGNOSTIC_OUTPUT_CLASSES.map(diagnosticClass=>({diagnostic_class:diagnosticClass,default_max_estimated_tokens_by_format:DIAGNOSTIC_DEFAULT_BUDGETS[diagnosticClass],minimum_max_estimated_tokens:MINIMUM_DIAGNOSTIC_BUDGET,degradation_ladder:PM_DIAGNOSTIC_DEGRADATION_STEPS,corrective_action_paths:["required","recovery.suggested_retry","recovery.suggested_retry_args","recovery.next_best_command","next_steps[0]"],token_estimate:"ceil(utf8_bytes / 4)"}));const DIAGNOSTIC_BUDGET_BY_CLASS=new Map(PM_DIAGNOSTIC_OUTPUT_BUDGET_CONTRACTS.map(contract=>[contract.diagnostic_class,contract]));function inferPmOutputBudgetClass(command){const[rootCommand=""]=resolvePmHistoryOperation(command).split(/\s+/u);return MUTATION_COMMANDS.has(rootCommand)?"mutation":DISCOVERY_COMMANDS.has(rootCommand)?"discovery":GOVERNANCE_COMMANDS.has(rootCommand)?"governance":"read"}function createPmCommandOutputBudget(command,budgetClass=inferPmOutputBudgetClass(command)){const normalizedCommand=command.trim().replace(/\s+/gu," ");if(normalizedCommand.length===0){throw new TypeError("command must be a non-empty command path")}const toonBudget=DEFAULT_MAX_ESTIMATED_TOKENS[budgetClass];return definePmCommandOutputBudget({command:normalizedCommand,budget_class:budgetClass,default_max_estimated_tokens:toonBudget,default_max_estimated_tokens_by_format:{toon:toonBudget,json:Math.ceil(toonBudget*JSON_BUDGET_NUMERATOR/JSON_BUDGET_DENOMINATOR)},degradation_ladder:PM_OUTPUT_DEGRADATION_STEPS,allows_unbounded_opt_out:true,token_estimate:"ceil(utf8_bytes / 4)"})}function definePmCommandOutputBudget(contract){if(!Number.isSafeInteger(contract.default_max_estimated_tokens)||contract.default_max_estimated_tokens<=0){throw new RangeError("default_max_estimated_tokens must be a positive safe integer")}for(const[format,ceiling]of Object.entries(contract.default_max_estimated_tokens_by_format)){if(!Number.isSafeInteger(ceiling)||ceiling<=0){throw new RangeError(`default_max_estimated_tokens_by_format.${format} must be a positive safe integer`)}}return contract}const PM_COMMAND_OUTPUT_BUDGET_CONTRACTS=PM_CORE_COMMAND_NAMES.map(command=>createPmCommandOutputBudget(command));const OUTPUT_BUDGET_BY_COMMAND=new Map(PM_COMMAND_OUTPUT_BUDGET_CONTRACTS.map(contract=>[contract.command,contract]));function resolvePmCommandOutputBudget(command,options={}){const normalizedCommand=command.trim().replace(/\s+/gu," ");const[rootCommand]=resolvePmHistoryOperation(normalizedCommand).split(" ");const declared=OUTPUT_BUDGET_BY_COMMAND.get(rootCommand);if(declared)return{...declared,command:normalizedCommand};return options.generateFallback?createPmCommandOutputBudget(normalizedCommand):null}function estimatePmOutputTokens(utf8Bytes){return Math.ceil(Math.max(0,utf8Bytes)/4)}function resolvePmDiagnosticOutputBudget(diagnosticClass){const contract=DIAGNOSTIC_BUDGET_BY_CLASS.get(diagnosticClass);if(contract===void 0){throw new TypeError(`diagnosticClass must be one of: ${PM_DIAGNOSTIC_OUTPUT_CLASSES.join(", ")}`)}return contract}function estimateJsonDiagnosticTokens(value){return estimatePmOutputTokens(Buffer.byteLength(JSON.stringify(value,null,2),"utf8"))}function isDiagnosticRecord(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)}function compactDiagnosticRecovery(value){if(!isDiagnosticRecord(value))return void 0;const compact={};for(const key of["suggested_retry","suggested_retry_args","next_best_command","allowed_values","candidate_commands","missing","missing_required_fields","option_scope","retry_after_ms"]){const candidate=value[key];if(Array.isArray(candidate)){compact[key]=key==="suggested_retry_args"?candidate:candidate.slice(0,3)}else if(candidate!==void 0)compact[key]=candidate}return Object.keys(compact).length>0?compact:void 0}function truncateDiagnosticString(value,maximum){if(typeof value!=="string"||value.length<=maximum)return value;return`${value.slice(0,Math.max(1,maximum-3))}...`}function truncateDiagnosticUtf8Text(value,maximumBytes){if(Buffer.byteLength(value,"utf8")<=maximumBytes)return value;const suffix="...";const codePoints=Array.from(value);let lower=0;let upper=codePoints.length;while(lower<upper){const middle=Math.ceil((lower+upper)/2);const candidate=`${codePoints.slice(0,middle).join("")}${suffix}`;if(Buffer.byteLength(candidate,"utf8")<=maximumBytes)lower=middle;else upper=middle-1}return`${codePoints.slice(0,lower).join("")}${suffix}`}function prioritizeDiagnosticFields(diagnostic){const prioritized={};for(const key of["code","required","recovery","next_steps","exit_code","type","title","detail","why","examples"]){if(Object.hasOwn(diagnostic,key)&&diagnostic[key]!==void 0){prioritized[key]=diagnostic[key]}}for(const[key,value]of Object.entries(diagnostic)){if(key!=="__proto__"&&!Object.hasOwn(prioritized,key)){prioritized[key]=value}}return prioritized}const DIAGNOSTIC_COLLECTION_LIMIT_STAGES=new Set(["limit_collections","compact_recovery","action_only"]);const DIAGNOSTIC_RECOVERY_COMPACTION_STAGES=new Set(["compact_recovery","action_only"]);function actionOnlyDiagnostic(candidate){const actionOnly={code:typeof candidate.code==="string"?candidate.code:"diagnostic",required:truncateDiagnosticString(candidate.required,160)??"Inspect the diagnostic code and retry with corrected input."};const recovery=compactDiagnosticRecovery(candidate.recovery);if(recovery!==void 0){actionOnly.recovery=recovery}else if(Array.isArray(candidate.next_steps)){actionOnly.next_steps=candidate.next_steps.slice(0,1)}if(candidate.exit_code!==void 0)actionOnly.exit_code=candidate.exit_code;if(candidate.type!==void 0)actionOnly.type=candidate.type;return actionOnly}function diagnosticCandidate(diagnostic,stage){const candidate=structuredClone(diagnostic);if(stage!=="full"){delete candidate.why;delete candidate.examples}if(DIAGNOSTIC_COLLECTION_LIMIT_STAGES.has(stage)){for(const[key,value]of Object.entries(candidate)){if(Array.isArray(value))candidate[key]=value.slice(0,3)}}if(DIAGNOSTIC_RECOVERY_COMPACTION_STAGES.has(stage)){const recovery=compactDiagnosticRecovery(candidate.recovery);if(recovery)candidate.recovery=recovery;else delete candidate.recovery}if(stage!=="action_only")return prioritizeDiagnosticFields(candidate);return actionOnlyDiagnostic(candidate)}function attachDiagnosticReceipt(candidate,receipt){const projected={...candidate,diagnostic_output:{...receipt,estimated_tokens:0}};for(let attempt=0;attempt<4;attempt+=1){const estimatedTokens=estimateJsonDiagnosticTokens(projected);const outputReceipt=projected.diagnostic_output;if(outputReceipt.estimated_tokens===estimatedTokens)break;outputReceipt.estimated_tokens=estimatedTokens}return projected}function shrinkMinimalDiagnosticCandidate(candidate,receipt,budget){let fallback=attachDiagnosticReceipt(candidate,receipt);for(const optionalField of["recovery","exit_code"]){if(estimateJsonDiagnosticTokens(fallback)<=budget||candidate[optionalField]===void 0){continue}delete candidate[optionalField];fallback=attachDiagnosticReceipt(candidate,receipt)}let maximumActionBytes=40;while(estimateJsonDiagnosticTokens(fallback)>budget&&maximumActionBytes>4){maximumActionBytes-=4;candidate.code=truncateDiagnosticUtf8Text(String(candidate.code),maximumActionBytes);candidate.required=truncateDiagnosticUtf8Text(String(candidate.required),maximumActionBytes);fallback=attachDiagnosticReceipt(candidate,receipt)}return fallback}function createMinimalDiagnosticFallback(projected,budget){const receipt=projected.diagnostic_output;const{estimated_tokens:_estimatedTokens,...receiptWithoutEstimate}=receipt;const boundedOmittedFields=receiptWithoutEstimate.omitted_fields.slice(0,8).map(field=>truncateDiagnosticUtf8Text(field,32));const boundedReceipt={...receiptWithoutEstimate,omitted_fields:boundedOmittedFields,...receiptWithoutEstimate.omitted_fields.length>boundedOmittedFields.length?{omitted_fields_overflow_count:receiptWithoutEstimate.omitted_fields.length-boundedOmittedFields.length}:{}};const recoveryCandidate=compactDiagnosticRecovery(projected.recovery);const recovery=recoveryCandidate&&estimateJsonDiagnosticTokens(recoveryCandidate)<=48?recoveryCandidate:void 0;const candidate={code:truncateDiagnosticUtf8Text(String(projected.code),320),required:truncateDiagnosticUtf8Text(String(projected.required),320),...recovery?{recovery}:{},...projected.exit_code!==void 0?{exit_code:projected.exit_code}:{}};let fallback=attachDiagnosticReceipt(candidate,boundedReceipt);while(estimateJsonDiagnosticTokens(fallback)>budget&&boundedReceipt.omitted_fields.length>0){boundedReceipt.omitted_fields.pop();boundedReceipt.omitted_fields_overflow_count=receiptWithoutEstimate.omitted_fields.length-boundedReceipt.omitted_fields.length;fallback=attachDiagnosticReceipt(candidate,boundedReceipt)}fallback=shrinkMinimalDiagnosticCandidate(candidate,boundedReceipt,budget);return fallback}function projectPmDiagnosticOutput(diagnostic,options={}){const diagnosticRecord=diagnostic;const diagnosticClass=options.diagnosticClass??"error";const contract=resolvePmDiagnosticOutputBudget(diagnosticClass);const explicitBudget=options.maxEstimatedTokens;if(explicitBudget!==void 0&&(!Number.isSafeInteger(explicitBudget)||explicitBudget<contract.minimum_max_estimated_tokens)){throw new RangeError(`maxEstimatedTokens must be a safe integer >= ${contract.minimum_max_estimated_tokens}`)}const budget=explicitBudget??contract.default_max_estimated_tokens_by_format.json;const originalEstimatedTokens=estimateJsonDiagnosticTokens(diagnosticRecord);const originalFields=Object.keys(diagnosticRecord);if(originalEstimatedTokens<=budget){return prioritizeDiagnosticFields(structuredClone(diagnosticRecord))}let projected;for(const[index,stage]of contract.degradation_ladder.entries()){const candidate=diagnosticCandidate(diagnosticRecord,stage);const omittedFields=originalFields.filter(field=>!Object.hasOwn(candidate,field));const withReceipt=attachDiagnosticReceipt(candidate,{diagnostic_class:diagnosticClass,format:"json",budget,budget_source:explicitBudget===void 0?"default":"explicit",original_estimated_tokens:originalEstimatedTokens,truncated:index>0,degradation_steps:contract.degradation_ladder.slice(0,index+1),omitted_fields:omittedFields});projected=withReceipt;if(estimateJsonDiagnosticTokens(withReceipt)<=budget)break}if(estimateJsonDiagnosticTokens(projected)>budget){projected=createMinimalDiagnosticFallback(projected,budget)}return projected}function sanitizeDiagnosticText(text){return stripVTControlCharacters(text).replace(/\r\n/gu,"\n").replace(/[^\P{Cc}\n]/gu," ")}function projectPmDiagnosticText(output,correctiveAction,options={}){const diagnosticClass=options.diagnosticClass??"error";const contract=resolvePmDiagnosticOutputBudget(diagnosticClass);const explicitBudget=options.maxEstimatedTokens;if(explicitBudget!==void 0&&(!Number.isSafeInteger(explicitBudget)||explicitBudget<contract.minimum_max_estimated_tokens)){throw new RangeError(`maxEstimatedTokens must be a safe integer >= ${contract.minimum_max_estimated_tokens}`)}const budget=explicitBudget??contract.default_max_estimated_tokens_by_format.text;const sanitizedOutput=sanitizeDiagnosticText(output);const originalEstimatedTokens=estimatePmOutputTokens(Buffer.byteLength(sanitizedOutput,"utf8"));const truncated=originalEstimatedTokens>budget;const actionPrefix="What is required:\n ";const identity=truncateDiagnosticUtf8Text(sanitizedOutput.trimStart().split(/\r?\n/u,1)[0].trim(),320);const actionSuffix=`
|
|
8
2
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
export const PM_OUTPUT_DEGRADATION_STEPS = [
|
|
13
|
-
"full",
|
|
14
|
-
"compact",
|
|
15
|
-
"brief",
|
|
16
|
-
"summary",
|
|
17
|
-
"counts",
|
|
18
|
-
];
|
|
19
|
-
/** Stable command-output classes used to assign conservative default budgets. */
|
|
20
|
-
export const PM_OUTPUT_BUDGET_CLASSES = [
|
|
21
|
-
"mutation",
|
|
22
|
-
"read",
|
|
23
|
-
"discovery",
|
|
24
|
-
"governance",
|
|
25
|
-
];
|
|
26
|
-
/** Stable diagnostic families that require independent output ceilings. */
|
|
27
|
-
export const PM_DIAGNOSTIC_OUTPUT_CLASSES = [
|
|
28
|
-
"error",
|
|
29
|
-
"warning",
|
|
30
|
-
"validation_summary",
|
|
31
|
-
"recovery_bundle",
|
|
32
|
-
];
|
|
33
|
-
/** Deterministic diagnostic degradation stages, from richest to smallest. */
|
|
34
|
-
export const PM_DIAGNOSTIC_DEGRADATION_STEPS = [
|
|
35
|
-
"full",
|
|
36
|
-
"omit_explanation",
|
|
37
|
-
"limit_collections",
|
|
38
|
-
"compact_recovery",
|
|
39
|
-
"action_only",
|
|
40
|
-
];
|
|
41
|
-
const MUTATION_COMMANDS = new Set([
|
|
42
|
-
"append",
|
|
43
|
-
"claim",
|
|
44
|
-
"close",
|
|
45
|
-
"close-many",
|
|
46
|
-
"close-task",
|
|
47
|
-
"comments",
|
|
48
|
-
"config",
|
|
49
|
-
"copy",
|
|
50
|
-
"create",
|
|
51
|
-
"delete",
|
|
52
|
-
"docs",
|
|
53
|
-
"event",
|
|
54
|
-
"files",
|
|
55
|
-
"focus",
|
|
56
|
-
"history-author-acknowledge",
|
|
57
|
-
"history-compact",
|
|
58
|
-
"history-redact",
|
|
59
|
-
"history-repair",
|
|
60
|
-
"init",
|
|
61
|
-
"item",
|
|
62
|
-
"learnings",
|
|
63
|
-
"meet",
|
|
64
|
-
"notes",
|
|
65
|
-
"pause-task",
|
|
66
|
-
"release",
|
|
67
|
-
"remind",
|
|
68
|
-
"restore",
|
|
69
|
-
"schema",
|
|
70
|
-
"start-task",
|
|
71
|
-
"update",
|
|
72
|
-
"update-many",
|
|
73
|
-
]);
|
|
74
|
-
const DISCOVERY_COMMANDS = new Set([
|
|
75
|
-
"contracts",
|
|
76
|
-
"extension",
|
|
77
|
-
"help",
|
|
78
|
-
"install",
|
|
79
|
-
"package",
|
|
80
|
-
"packages",
|
|
81
|
-
"profile",
|
|
82
|
-
"upgrade",
|
|
83
|
-
]);
|
|
84
|
-
const GOVERNANCE_COMMANDS = new Set([
|
|
85
|
-
"gc",
|
|
86
|
-
"health",
|
|
87
|
-
"merge",
|
|
88
|
-
"stats",
|
|
89
|
-
"telemetry",
|
|
90
|
-
"test",
|
|
91
|
-
"test-all",
|
|
92
|
-
"validate",
|
|
93
|
-
]);
|
|
94
|
-
const DEFAULT_MAX_ESTIMATED_TOKENS = {
|
|
95
|
-
mutation: 2_000,
|
|
96
|
-
read: 4_000,
|
|
97
|
-
discovery: 3_000,
|
|
98
|
-
governance: 6_000,
|
|
99
|
-
};
|
|
100
|
-
const JSON_BUDGET_NUMERATOR = 3;
|
|
101
|
-
const JSON_BUDGET_DENOMINATOR = 2;
|
|
102
|
-
const MINIMUM_DIAGNOSTIC_BUDGET = 192;
|
|
103
|
-
const DIAGNOSTIC_DEFAULT_BUDGETS = {
|
|
104
|
-
error: { text: 768, json: 2_000 },
|
|
105
|
-
warning: { text: 768, json: 2_000 },
|
|
106
|
-
validation_summary: { text: 1_500, json: 3_000 },
|
|
107
|
-
recovery_bundle: { text: 768, json: 2_000 },
|
|
108
|
-
};
|
|
109
|
-
/** Public default contract for every diagnostic family. */
|
|
110
|
-
export const PM_DIAGNOSTIC_OUTPUT_BUDGET_CONTRACTS = PM_DIAGNOSTIC_OUTPUT_CLASSES.map((diagnosticClass) => ({
|
|
111
|
-
diagnostic_class: diagnosticClass,
|
|
112
|
-
default_max_estimated_tokens_by_format: DIAGNOSTIC_DEFAULT_BUDGETS[diagnosticClass],
|
|
113
|
-
minimum_max_estimated_tokens: MINIMUM_DIAGNOSTIC_BUDGET,
|
|
114
|
-
degradation_ladder: PM_DIAGNOSTIC_DEGRADATION_STEPS,
|
|
115
|
-
corrective_action_paths: [
|
|
116
|
-
"required",
|
|
117
|
-
"recovery.suggested_retry",
|
|
118
|
-
"recovery.suggested_retry_args",
|
|
119
|
-
"recovery.next_best_command",
|
|
120
|
-
"next_steps[0]",
|
|
121
|
-
],
|
|
122
|
-
token_estimate: "ceil(utf8_bytes / 4)",
|
|
123
|
-
}));
|
|
124
|
-
const DIAGNOSTIC_BUDGET_BY_CLASS = new Map(PM_DIAGNOSTIC_OUTPUT_BUDGET_CONTRACTS.map((contract) => [contract.diagnostic_class, contract]));
|
|
125
|
-
/** Infer the conservative workload class for a core or package command. */
|
|
126
|
-
export function inferPmOutputBudgetClass(command) {
|
|
127
|
-
const [rootCommand = ""] = command.trim().split(/\s+/u);
|
|
128
|
-
return MUTATION_COMMANDS.has(rootCommand)
|
|
129
|
-
? "mutation"
|
|
130
|
-
: DISCOVERY_COMMANDS.has(rootCommand)
|
|
131
|
-
? "discovery"
|
|
132
|
-
: GOVERNANCE_COMMANDS.has(rootCommand)
|
|
133
|
-
? "governance"
|
|
134
|
-
: "read";
|
|
135
|
-
}
|
|
136
|
-
/** Build the generated default budget for a core or package command. */
|
|
137
|
-
export function createPmCommandOutputBudget(command, budgetClass = inferPmOutputBudgetClass(command)) {
|
|
138
|
-
const normalizedCommand = command.trim().replace(/\s+/gu, " ");
|
|
139
|
-
if (normalizedCommand.length === 0) {
|
|
140
|
-
throw new TypeError("command must be a non-empty command path");
|
|
141
|
-
}
|
|
142
|
-
const toonBudget = DEFAULT_MAX_ESTIMATED_TOKENS[budgetClass];
|
|
143
|
-
return definePmCommandOutputBudget({
|
|
144
|
-
command: normalizedCommand,
|
|
145
|
-
budget_class: budgetClass,
|
|
146
|
-
default_max_estimated_tokens: toonBudget,
|
|
147
|
-
default_max_estimated_tokens_by_format: {
|
|
148
|
-
toon: toonBudget,
|
|
149
|
-
json: Math.ceil((toonBudget * JSON_BUDGET_NUMERATOR) / JSON_BUDGET_DENOMINATOR),
|
|
150
|
-
},
|
|
151
|
-
degradation_ladder: PM_OUTPUT_DEGRADATION_STEPS,
|
|
152
|
-
allows_unbounded_opt_out: true,
|
|
153
|
-
token_estimate: "ceil(utf8_bytes / 4)",
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Declares one budget contract while preserving literal command metadata for
|
|
158
|
-
* package-authored registries and test fixtures. Rejects ceilings that cannot
|
|
159
|
-
* represent a positive, deterministic token allowance.
|
|
160
|
-
*/
|
|
161
|
-
export function definePmCommandOutputBudget(contract) {
|
|
162
|
-
if (!Number.isSafeInteger(contract.default_max_estimated_tokens) ||
|
|
163
|
-
contract.default_max_estimated_tokens <= 0) {
|
|
164
|
-
throw new RangeError("default_max_estimated_tokens must be a positive safe integer");
|
|
165
|
-
}
|
|
166
|
-
for (const [format, ceiling] of Object.entries(contract.default_max_estimated_tokens_by_format)) {
|
|
167
|
-
if (!Number.isSafeInteger(ceiling) || ceiling <= 0) {
|
|
168
|
-
throw new RangeError(`default_max_estimated_tokens_by_format.${format} must be a positive safe integer`);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
return contract;
|
|
172
|
-
}
|
|
173
|
-
/** Public default budget contract for every built-in pm command. */
|
|
174
|
-
export const PM_COMMAND_OUTPUT_BUDGET_CONTRACTS = PM_CORE_COMMAND_NAMES.map((command) => createPmCommandOutputBudget(command));
|
|
175
|
-
const OUTPUT_BUDGET_BY_COMMAND = new Map(PM_COMMAND_OUTPUT_BUDGET_CONTRACTS.map((contract) => [contract.command, contract]));
|
|
176
|
-
/** Implement built-in lookup with an opt-in generated package fallback. */
|
|
177
|
-
export function resolvePmCommandOutputBudget(command, options = {}) {
|
|
178
|
-
const normalizedCommand = command.trim().replace(/\s+/gu, " ");
|
|
179
|
-
const [rootCommand] = normalizedCommand.split(" ");
|
|
180
|
-
const declared = OUTPUT_BUDGET_BY_COMMAND.get(rootCommand);
|
|
181
|
-
if (declared)
|
|
182
|
-
return { ...declared, command: normalizedCommand };
|
|
183
|
-
return options.generateFallback
|
|
184
|
-
? createPmCommandOutputBudget(normalizedCommand)
|
|
185
|
-
: null;
|
|
186
|
-
}
|
|
187
|
-
/** Estimate conservative token usage from UTF-8 output bytes. */
|
|
188
|
-
export function estimatePmOutputTokens(utf8Bytes) {
|
|
189
|
-
return Math.ceil(Math.max(0, utf8Bytes) / 4);
|
|
190
|
-
}
|
|
191
|
-
/** Resolve the binding output contract for one diagnostic family. */
|
|
192
|
-
export function resolvePmDiagnosticOutputBudget(diagnosticClass) {
|
|
193
|
-
const contract = DIAGNOSTIC_BUDGET_BY_CLASS.get(diagnosticClass);
|
|
194
|
-
if (contract === undefined) {
|
|
195
|
-
throw new TypeError(`diagnosticClass must be one of: ${PM_DIAGNOSTIC_OUTPUT_CLASSES.join(", ")}`);
|
|
196
|
-
}
|
|
197
|
-
return contract;
|
|
198
|
-
}
|
|
199
|
-
function estimateJsonDiagnosticTokens(value) {
|
|
200
|
-
return estimatePmOutputTokens(Buffer.byteLength(JSON.stringify(value, null, 2), "utf8"));
|
|
201
|
-
}
|
|
202
|
-
function isDiagnosticRecord(value) {
|
|
203
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
204
|
-
}
|
|
205
|
-
function compactDiagnosticRecovery(value) {
|
|
206
|
-
if (!isDiagnosticRecord(value))
|
|
207
|
-
return undefined;
|
|
208
|
-
const compact = {};
|
|
209
|
-
for (const key of [
|
|
210
|
-
"suggested_retry",
|
|
211
|
-
"suggested_retry_args",
|
|
212
|
-
"next_best_command",
|
|
213
|
-
"allowed_values",
|
|
214
|
-
"candidate_commands",
|
|
215
|
-
"missing",
|
|
216
|
-
"missing_required_fields",
|
|
217
|
-
"option_scope",
|
|
218
|
-
"retry_after_ms",
|
|
219
|
-
]) {
|
|
220
|
-
const candidate = value[key];
|
|
221
|
-
if (Array.isArray(candidate)) {
|
|
222
|
-
compact[key] =
|
|
223
|
-
key === "suggested_retry_args" ? candidate : candidate.slice(0, 3);
|
|
224
|
-
}
|
|
225
|
-
else if (candidate !== undefined)
|
|
226
|
-
compact[key] = candidate;
|
|
227
|
-
}
|
|
228
|
-
return Object.keys(compact).length > 0 ? compact : undefined;
|
|
229
|
-
}
|
|
230
|
-
function truncateDiagnosticString(value, maximum) {
|
|
231
|
-
if (typeof value !== "string" || value.length <= maximum)
|
|
232
|
-
return value;
|
|
233
|
-
return `${value.slice(0, Math.max(1, maximum - 3))}...`;
|
|
234
|
-
}
|
|
235
|
-
function truncateDiagnosticUtf8Text(value, maximumBytes) {
|
|
236
|
-
if (Buffer.byteLength(value, "utf8") <= maximumBytes)
|
|
237
|
-
return value;
|
|
238
|
-
const suffix = "...";
|
|
239
|
-
const codePoints = Array.from(value);
|
|
240
|
-
let lower = 0;
|
|
241
|
-
let upper = codePoints.length;
|
|
242
|
-
while (lower < upper) {
|
|
243
|
-
const middle = Math.ceil((lower + upper) / 2);
|
|
244
|
-
const candidate = `${codePoints.slice(0, middle).join("")}${suffix}`;
|
|
245
|
-
if (Buffer.byteLength(candidate, "utf8") <= maximumBytes)
|
|
246
|
-
lower = middle;
|
|
247
|
-
else
|
|
248
|
-
upper = middle - 1;
|
|
249
|
-
}
|
|
250
|
-
return `${codePoints.slice(0, lower).join("")}${suffix}`;
|
|
251
|
-
}
|
|
252
|
-
function prioritizeDiagnosticFields(diagnostic) {
|
|
253
|
-
const prioritized = {};
|
|
254
|
-
for (const key of [
|
|
255
|
-
"code",
|
|
256
|
-
"required",
|
|
257
|
-
"recovery",
|
|
258
|
-
"next_steps",
|
|
259
|
-
"exit_code",
|
|
260
|
-
"type",
|
|
261
|
-
"title",
|
|
262
|
-
"detail",
|
|
263
|
-
"why",
|
|
264
|
-
"examples",
|
|
265
|
-
]) {
|
|
266
|
-
if (Object.hasOwn(diagnostic, key) && diagnostic[key] !== undefined) {
|
|
267
|
-
prioritized[key] = diagnostic[key];
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
for (const [key, value] of Object.entries(diagnostic)) {
|
|
271
|
-
if (key !== "__proto__" && !Object.hasOwn(prioritized, key)) {
|
|
272
|
-
prioritized[key] = value;
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
return prioritized;
|
|
276
|
-
}
|
|
277
|
-
const DIAGNOSTIC_COLLECTION_LIMIT_STAGES = new Set(["limit_collections", "compact_recovery", "action_only"]);
|
|
278
|
-
const DIAGNOSTIC_RECOVERY_COMPACTION_STAGES = new Set(["compact_recovery", "action_only"]);
|
|
279
|
-
function actionOnlyDiagnostic(candidate) {
|
|
280
|
-
const actionOnly = {
|
|
281
|
-
code: typeof candidate.code === "string" ? candidate.code : "diagnostic",
|
|
282
|
-
required: truncateDiagnosticString(candidate.required, 160) ??
|
|
283
|
-
"Inspect the diagnostic code and retry with corrected input.",
|
|
284
|
-
};
|
|
285
|
-
const recovery = compactDiagnosticRecovery(candidate.recovery);
|
|
286
|
-
if (recovery !== undefined) {
|
|
287
|
-
actionOnly.recovery = recovery;
|
|
288
|
-
}
|
|
289
|
-
else if (Array.isArray(candidate.next_steps)) {
|
|
290
|
-
actionOnly.next_steps = candidate.next_steps.slice(0, 1);
|
|
291
|
-
}
|
|
292
|
-
if (candidate.exit_code !== undefined)
|
|
293
|
-
actionOnly.exit_code = candidate.exit_code;
|
|
294
|
-
if (candidate.type !== undefined)
|
|
295
|
-
actionOnly.type = candidate.type;
|
|
296
|
-
return actionOnly;
|
|
297
|
-
}
|
|
298
|
-
function diagnosticCandidate(diagnostic, stage) {
|
|
299
|
-
const candidate = structuredClone(diagnostic);
|
|
300
|
-
if (stage !== "full") {
|
|
301
|
-
delete candidate.why;
|
|
302
|
-
delete candidate.examples;
|
|
303
|
-
}
|
|
304
|
-
if (DIAGNOSTIC_COLLECTION_LIMIT_STAGES.has(stage)) {
|
|
305
|
-
for (const [key, value] of Object.entries(candidate)) {
|
|
306
|
-
if (Array.isArray(value))
|
|
307
|
-
candidate[key] = value.slice(0, 3);
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
if (DIAGNOSTIC_RECOVERY_COMPACTION_STAGES.has(stage)) {
|
|
311
|
-
const recovery = compactDiagnosticRecovery(candidate.recovery);
|
|
312
|
-
if (recovery)
|
|
313
|
-
candidate.recovery = recovery;
|
|
314
|
-
else
|
|
315
|
-
delete candidate.recovery;
|
|
316
|
-
}
|
|
317
|
-
if (stage !== "action_only")
|
|
318
|
-
return prioritizeDiagnosticFields(candidate);
|
|
319
|
-
return actionOnlyDiagnostic(candidate);
|
|
320
|
-
}
|
|
321
|
-
function attachDiagnosticReceipt(candidate, receipt) {
|
|
322
|
-
const projected = {
|
|
323
|
-
...candidate,
|
|
324
|
-
diagnostic_output: { ...receipt, estimated_tokens: 0 },
|
|
325
|
-
};
|
|
326
|
-
for (let attempt = 0; attempt < 4; attempt += 1) {
|
|
327
|
-
const estimatedTokens = estimateJsonDiagnosticTokens(projected);
|
|
328
|
-
const outputReceipt = projected.diagnostic_output;
|
|
329
|
-
if (outputReceipt.estimated_tokens === estimatedTokens)
|
|
330
|
-
break;
|
|
331
|
-
outputReceipt.estimated_tokens = estimatedTokens;
|
|
332
|
-
}
|
|
333
|
-
return projected;
|
|
334
|
-
}
|
|
335
|
-
function shrinkMinimalDiagnosticCandidate(candidate, receipt, budget) {
|
|
336
|
-
let fallback = attachDiagnosticReceipt(candidate, receipt);
|
|
337
|
-
for (const optionalField of ["recovery", "exit_code"]) {
|
|
338
|
-
if (estimateJsonDiagnosticTokens(fallback) <= budget ||
|
|
339
|
-
candidate[optionalField] === undefined) {
|
|
340
|
-
continue;
|
|
341
|
-
}
|
|
342
|
-
delete candidate[optionalField];
|
|
343
|
-
fallback = attachDiagnosticReceipt(candidate, receipt);
|
|
344
|
-
}
|
|
345
|
-
let maximumActionBytes = 40;
|
|
346
|
-
while (estimateJsonDiagnosticTokens(fallback) > budget &&
|
|
347
|
-
maximumActionBytes > 4) {
|
|
348
|
-
maximumActionBytes -= 4;
|
|
349
|
-
candidate.code = truncateDiagnosticUtf8Text(String(candidate.code), maximumActionBytes);
|
|
350
|
-
candidate.required = truncateDiagnosticUtf8Text(String(candidate.required), maximumActionBytes);
|
|
351
|
-
fallback = attachDiagnosticReceipt(candidate, receipt);
|
|
352
|
-
}
|
|
353
|
-
return fallback;
|
|
354
|
-
}
|
|
355
|
-
function createMinimalDiagnosticFallback(projected, budget) {
|
|
356
|
-
const receipt = projected.diagnostic_output;
|
|
357
|
-
const { estimated_tokens: _estimatedTokens, ...receiptWithoutEstimate } = receipt;
|
|
358
|
-
const boundedOmittedFields = receiptWithoutEstimate.omitted_fields
|
|
359
|
-
.slice(0, 8)
|
|
360
|
-
.map((field) => truncateDiagnosticUtf8Text(field, 32));
|
|
361
|
-
const boundedReceipt = {
|
|
362
|
-
...receiptWithoutEstimate,
|
|
363
|
-
omitted_fields: boundedOmittedFields,
|
|
364
|
-
...(receiptWithoutEstimate.omitted_fields.length >
|
|
365
|
-
boundedOmittedFields.length
|
|
366
|
-
? {
|
|
367
|
-
omitted_fields_overflow_count: receiptWithoutEstimate.omitted_fields.length -
|
|
368
|
-
boundedOmittedFields.length,
|
|
369
|
-
}
|
|
370
|
-
: {}),
|
|
371
|
-
};
|
|
372
|
-
const recoveryCandidate = compactDiagnosticRecovery(projected.recovery);
|
|
373
|
-
const recovery = recoveryCandidate && estimateJsonDiagnosticTokens(recoveryCandidate) <= 48
|
|
374
|
-
? recoveryCandidate
|
|
375
|
-
: undefined;
|
|
376
|
-
const candidate = {
|
|
377
|
-
code: truncateDiagnosticUtf8Text(String(projected.code), 320),
|
|
378
|
-
required: truncateDiagnosticUtf8Text(String(projected.required), 320),
|
|
379
|
-
...(recovery ? { recovery } : {}),
|
|
380
|
-
...(projected.exit_code !== undefined
|
|
381
|
-
? { exit_code: projected.exit_code }
|
|
382
|
-
: {}),
|
|
383
|
-
};
|
|
384
|
-
let fallback = attachDiagnosticReceipt(candidate, boundedReceipt);
|
|
385
|
-
while (estimateJsonDiagnosticTokens(fallback) > budget &&
|
|
386
|
-
boundedReceipt.omitted_fields.length > 0) {
|
|
387
|
-
boundedReceipt.omitted_fields.pop();
|
|
388
|
-
boundedReceipt.omitted_fields_overflow_count =
|
|
389
|
-
receiptWithoutEstimate.omitted_fields.length -
|
|
390
|
-
boundedReceipt.omitted_fields.length;
|
|
391
|
-
fallback = attachDiagnosticReceipt(candidate, boundedReceipt);
|
|
392
|
-
}
|
|
393
|
-
fallback = shrinkMinimalDiagnosticCandidate(candidate, boundedReceipt, budget);
|
|
394
|
-
return fallback;
|
|
395
|
-
}
|
|
396
|
-
/**
|
|
397
|
-
* Bind a JSON diagnostic to its declared ceiling while preserving the first
|
|
398
|
-
* corrective action and reporting every top-level omission.
|
|
399
|
-
*/
|
|
400
|
-
export function projectPmDiagnosticOutput(diagnostic, options = {}) {
|
|
401
|
-
const diagnosticRecord = diagnostic;
|
|
402
|
-
const diagnosticClass = options.diagnosticClass ?? "error";
|
|
403
|
-
const contract = resolvePmDiagnosticOutputBudget(diagnosticClass);
|
|
404
|
-
const explicitBudget = options.maxEstimatedTokens;
|
|
405
|
-
if (explicitBudget !== undefined &&
|
|
406
|
-
(!Number.isSafeInteger(explicitBudget) ||
|
|
407
|
-
explicitBudget < contract.minimum_max_estimated_tokens)) {
|
|
408
|
-
throw new RangeError(`maxEstimatedTokens must be a safe integer >= ${contract.minimum_max_estimated_tokens}`);
|
|
409
|
-
}
|
|
410
|
-
const budget = explicitBudget ?? contract.default_max_estimated_tokens_by_format.json;
|
|
411
|
-
const originalEstimatedTokens = estimateJsonDiagnosticTokens(diagnosticRecord);
|
|
412
|
-
const originalFields = Object.keys(diagnosticRecord);
|
|
413
|
-
if (originalEstimatedTokens <= budget) {
|
|
414
|
-
return prioritizeDiagnosticFields(structuredClone(diagnosticRecord));
|
|
415
|
-
}
|
|
416
|
-
let projected;
|
|
417
|
-
for (const [index, stage] of contract.degradation_ladder.entries()) {
|
|
418
|
-
const candidate = diagnosticCandidate(diagnosticRecord, stage);
|
|
419
|
-
const omittedFields = originalFields.filter((field) => !Object.hasOwn(candidate, field));
|
|
420
|
-
const withReceipt = attachDiagnosticReceipt(candidate, {
|
|
421
|
-
diagnostic_class: diagnosticClass,
|
|
422
|
-
format: "json",
|
|
423
|
-
budget,
|
|
424
|
-
budget_source: explicitBudget === undefined ? "default" : "explicit",
|
|
425
|
-
original_estimated_tokens: originalEstimatedTokens,
|
|
426
|
-
truncated: index > 0,
|
|
427
|
-
degradation_steps: contract.degradation_ladder.slice(0, index + 1),
|
|
428
|
-
omitted_fields: omittedFields,
|
|
429
|
-
});
|
|
430
|
-
projected = withReceipt;
|
|
431
|
-
if (estimateJsonDiagnosticTokens(withReceipt) <= budget)
|
|
432
|
-
break;
|
|
433
|
-
}
|
|
434
|
-
if (estimateJsonDiagnosticTokens(projected) > budget) {
|
|
435
|
-
projected = createMinimalDiagnosticFallback(projected, budget);
|
|
436
|
-
}
|
|
437
|
-
return projected;
|
|
438
|
-
}
|
|
439
|
-
/** Bind human-readable diagnostics without ever truncating the corrective action away. */
|
|
440
|
-
export function projectPmDiagnosticText(output, correctiveAction, options = {}) {
|
|
441
|
-
const diagnosticClass = options.diagnosticClass ?? "error";
|
|
442
|
-
const contract = resolvePmDiagnosticOutputBudget(diagnosticClass);
|
|
443
|
-
const explicitBudget = options.maxEstimatedTokens;
|
|
444
|
-
if (explicitBudget !== undefined &&
|
|
445
|
-
(!Number.isSafeInteger(explicitBudget) ||
|
|
446
|
-
explicitBudget < contract.minimum_max_estimated_tokens)) {
|
|
447
|
-
throw new RangeError(`maxEstimatedTokens must be a safe integer >= ${contract.minimum_max_estimated_tokens}`);
|
|
448
|
-
}
|
|
449
|
-
const budget = explicitBudget ?? contract.default_max_estimated_tokens_by_format.text;
|
|
450
|
-
const originalEstimatedTokens = estimatePmOutputTokens(Buffer.byteLength(output, "utf8"));
|
|
451
|
-
const truncated = originalEstimatedTokens > budget;
|
|
452
|
-
const actionPrefix = "What is required:\n ";
|
|
453
|
-
const actionSuffix = `\n\nDiagnostic output exceeded its declared ${budget}-token ceiling; rerun with structured JSON for the bounded recovery envelope.`;
|
|
454
|
-
const correctiveActionText = correctiveAction.trim() ||
|
|
455
|
-
"Inspect the diagnostic code and retry with corrected input.";
|
|
456
|
-
const availableActionBytes = Math.max(1, budget * 4 - Buffer.byteLength(`${actionPrefix}${actionSuffix}`, "utf8"));
|
|
457
|
-
const projectedOutput = truncated
|
|
458
|
-
? `${actionPrefix}${truncateDiagnosticUtf8Text(correctiveActionText, availableActionBytes)}${actionSuffix}`
|
|
459
|
-
: output;
|
|
460
|
-
return {
|
|
461
|
-
output: projectedOutput,
|
|
462
|
-
diagnostic_output: {
|
|
463
|
-
diagnostic_class: diagnosticClass,
|
|
464
|
-
format: "text",
|
|
465
|
-
budget,
|
|
466
|
-
budget_source: explicitBudget === undefined ? "default" : "explicit",
|
|
467
|
-
original_estimated_tokens: originalEstimatedTokens,
|
|
468
|
-
estimated_tokens: estimatePmOutputTokens(Buffer.byteLength(projectedOutput, "utf8")),
|
|
469
|
-
truncated,
|
|
470
|
-
degradation_steps: truncated
|
|
471
|
-
? [...contract.degradation_ladder]
|
|
472
|
-
: ["full"],
|
|
473
|
-
omitted_fields: truncated ? ["explanation", "collections"] : [],
|
|
474
|
-
},
|
|
475
|
-
};
|
|
476
|
-
}
|
|
3
|
+
${identity}
|
|
4
|
+
|
|
5
|
+
Diagnostic output exceeded its declared ${budget}-token ceiling; rerun with structured JSON for the bounded recovery envelope.`;const correctiveActionText=sanitizeDiagnosticText(correctiveAction).trim()||"Inspect the diagnostic code and retry with corrected input.";const availableActionBytes=Math.max(1,budget*4-Buffer.byteLength(`${actionPrefix}${actionSuffix}`,"utf8"));const projectedOutput=truncated?`${actionPrefix}${truncateDiagnosticUtf8Text(correctiveActionText,availableActionBytes)}${actionSuffix}`:sanitizedOutput;return{output:projectedOutput,diagnostic_output:{diagnostic_class:diagnosticClass,format:"text",budget,budget_source:explicitBudget===void 0?"default":"explicit",original_estimated_tokens:originalEstimatedTokens,estimated_tokens:estimatePmOutputTokens(Buffer.byteLength(projectedOutput,"utf8")),truncated,degradation_steps:truncated?[...contract.degradation_ladder]:["full"],omitted_fields:truncated?["explanation","collections"]:[]}}}export{PM_COMMAND_OUTPUT_BUDGET_CONTRACTS,PM_DIAGNOSTIC_DEGRADATION_STEPS,PM_DIAGNOSTIC_OUTPUT_BUDGET_CONTRACTS,PM_DIAGNOSTIC_OUTPUT_CLASSES,PM_OUTPUT_BUDGET_CLASSES,PM_OUTPUT_DEGRADATION_STEPS,createPmCommandOutputBudget,definePmCommandOutputBudget,estimatePmOutputTokens,inferPmOutputBudgetClass,projectPmDiagnosticOutput,projectPmDiagnosticText,resolvePmCommandOutputBudget,resolvePmDiagnosticOutputBudget};
|
|
477
6
|
//# sourceMappingURL=agent-output-contracts.js.map
|
|
478
|
-
//# debugId=1d338971-5a60-5b4e-b4c8-0705c8e8c98c
|
|
@@ -1,80 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* @module sdk/cli-contracts/bootstrap-command-scanner
|
|
3
|
-
*
|
|
4
|
-
* Resolves command position from shell-free argv without loading CLI runtime
|
|
5
|
-
* normalization, error, filesystem, or item-addressing dependencies.
|
|
6
|
-
*/
|
|
7
|
-
/** Global options that consume a following value when one is present. */
|
|
8
|
-
|
|
9
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="9d04e30a-caf5-59b4-8853-9df39c1728aa")}catch(e){}}();
|
|
10
|
-
export const GLOBAL_VALUE_CONSUMING_FLAGS = new Set([
|
|
11
|
-
"--pm-path",
|
|
12
|
-
"--path",
|
|
13
|
-
"--author",
|
|
14
|
-
"--output-include",
|
|
15
|
-
"--output-limit",
|
|
16
|
-
"--output-budget",
|
|
17
|
-
"--output-format",
|
|
18
|
-
"--output-session",
|
|
19
|
-
"--output-cursor",
|
|
20
|
-
]);
|
|
21
|
-
/** Boolean global options ignored while locating the command token. */
|
|
22
|
-
export const BOOTSTRAP_BOOLEAN_FLAGS = new Set([
|
|
23
|
-
"--no-extensions",
|
|
24
|
-
"--no-pager",
|
|
25
|
-
"--json",
|
|
26
|
-
"--quiet",
|
|
27
|
-
"--lean",
|
|
28
|
-
"--token-accounting",
|
|
29
|
-
"--output-row-contract",
|
|
30
|
-
"--all",
|
|
31
|
-
]);
|
|
32
|
-
/** Whether a global value-consuming flag uses its inline `--flag=value` form. */
|
|
33
|
-
export function isInlineGlobalValueToken(token) {
|
|
34
|
-
const equalsIndex = token.indexOf("=");
|
|
35
|
-
return (equalsIndex > 0 &&
|
|
36
|
-
GLOBAL_VALUE_CONSUMING_FLAGS.has(token.slice(0, equalsIndex)));
|
|
37
|
-
}
|
|
38
|
-
/** Whether a bootstrap value flag consumes its following token. */
|
|
39
|
-
export function consumesBootstrapValue(flag, next) {
|
|
40
|
-
if (typeof next !== "string")
|
|
41
|
-
return false;
|
|
42
|
-
return flag === "--path" || flag === "--pm-path" || !next.startsWith("-");
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Locate the first command token after global flags and their values.
|
|
46
|
-
*
|
|
47
|
-
* A leading `--` terminates command discovery. Unknown flags are ignored so
|
|
48
|
-
* later command-specific validation can return the canonical diagnostic.
|
|
49
|
-
*/
|
|
50
|
-
export function findBootstrapCommandTokenIndex(argv) {
|
|
51
|
-
for (let index = 0; index < argv.length; index += 1) {
|
|
52
|
-
const token = argv[index];
|
|
53
|
-
if (token === "--") {
|
|
54
|
-
return undefined;
|
|
55
|
-
}
|
|
56
|
-
if (GLOBAL_VALUE_CONSUMING_FLAGS.has(token)) {
|
|
57
|
-
index += consumesBootstrapValue(token, argv[index + 1]) ? 1 : 0;
|
|
58
|
-
continue;
|
|
59
|
-
}
|
|
60
|
-
if (isInlineGlobalValueToken(token) ||
|
|
61
|
-
BOOTSTRAP_BOOLEAN_FLAGS.has(token) ||
|
|
62
|
-
token === "--profile" ||
|
|
63
|
-
token === "--id-only" ||
|
|
64
|
-
token === "--explain") {
|
|
65
|
-
continue;
|
|
66
|
-
}
|
|
67
|
-
if (token.startsWith("-")) {
|
|
68
|
-
continue;
|
|
69
|
-
}
|
|
70
|
-
return index;
|
|
71
|
-
}
|
|
72
|
-
return undefined;
|
|
73
|
-
}
|
|
74
|
-
/** Resolve the normalized command name from shell-free invocation arguments. */
|
|
75
|
-
export function parseBootstrapCommandName(argv) {
|
|
76
|
-
const index = findBootstrapCommandTokenIndex(argv);
|
|
77
|
-
return index === undefined ? undefined : argv[index].trim().toLowerCase();
|
|
78
|
-
}
|
|
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]="b18eefc1-0d1d-5c9c-b98a-b96771070301")}catch(e2){}})();const GLOBAL_VALUE_CONSUMING_FLAGS=new Set(["--pm-path","--path","--author","--output-include","--output-limit","--output-budget","--output-format","--output-session","--output-cursor"]);const BOOTSTRAP_BOOLEAN_FLAGS=new Set(["--no-extensions","--no-pager","--json","--quiet","--lean","--token-accounting","--output-row-contract","--all"]);function isInlineGlobalValueToken(token){const equalsIndex=token.indexOf("=");return equalsIndex>0&&GLOBAL_VALUE_CONSUMING_FLAGS.has(token.slice(0,equalsIndex))}function consumesBootstrapValue(flag,next){if(typeof next!=="string")return false;return flag==="--path"||flag==="--pm-path"||!next.startsWith("-")}function findBootstrapCommandTokenIndex(argv){for(let index=0;index<argv.length;index+=1){const token=argv[index];if(token==="--"){return void 0}if(GLOBAL_VALUE_CONSUMING_FLAGS.has(token)){index+=consumesBootstrapValue(token,argv[index+1])?1:0;continue}if(isInlineGlobalValueToken(token)||BOOTSTRAP_BOOLEAN_FLAGS.has(token)||token==="--profile"||token==="--id-only"||token==="--explain"){continue}if(token.startsWith("-")){continue}return index}return void 0}function parseBootstrapCommandName(argv){const index=findBootstrapCommandTokenIndex(argv);return index===void 0?void 0:argv[index].trim().toLowerCase()}export{BOOTSTRAP_BOOLEAN_FLAGS,GLOBAL_VALUE_CONSUMING_FLAGS,consumesBootstrapValue,findBootstrapCommandTokenIndex,isInlineGlobalValueToken,parseBootstrapCommandName};
|
|
79
2
|
//# sourceMappingURL=bootstrap-command-scanner.js.map
|
|
80
|
-
//# debugId=9d04e30a-caf5-59b4-8853-9df39c1728aa
|
|
@@ -26,6 +26,10 @@ export interface PmCommandAliasContract {
|
|
|
26
26
|
/** PM item that owns the compatibility disposition. */
|
|
27
27
|
owner: string;
|
|
28
28
|
}
|
|
29
|
+
/** History namespace aliases preserve the existing SDK and MCP operation identities. */
|
|
30
|
+
export declare const PM_HISTORY_COMMAND_ALIASES: readonly PmCommandAliasContract[];
|
|
31
|
+
/** Resolve a native history leaf to its stable SDK operation; other paths retain their identity. */
|
|
32
|
+
export declare function resolvePmHistoryOperation(command: string): string;
|
|
29
33
|
/**
|
|
30
34
|
* Public command-alias table. Deprecated aliases must remain executable but
|
|
31
35
|
* are intentionally absent from default help and completion discovery.
|