@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/context-intent-runtime
|
|
3
|
-
*
|
|
4
|
-
* Loads request-scoped context-intent declarations from workspace data and
|
|
5
|
-
* active package modules without adding filesystem work to the contracts-only
|
|
6
|
-
* SDK entrypoint.
|
|
7
|
-
*/
|
|
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]="1a7548f2-93a0-5dfc-9d9a-c5aef4656c7c")}catch(e){}}();
|
|
10
|
-
import { readFile } from "node:fs/promises";
|
|
11
|
-
import path from "node:path";
|
|
12
|
-
import { isFileAbsentError } from "../core/fs/fs-utils.js";
|
|
13
|
-
import { assertReadableTrackerRoot } from "./environment/tracker-preflight.js";
|
|
14
|
-
import { runWithContextIntentContracts, } from "./context-intent-contracts.js";
|
|
15
|
-
/** Conventional workspace declaration file relative to the tracker root. */
|
|
16
|
-
export const PM_CONTEXT_INTENTS_FILE = "context-intents.json";
|
|
17
|
-
function isRecord(value) {
|
|
18
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
19
|
-
}
|
|
20
|
-
function parseDeclaration(value, sourceLabel, index) {
|
|
21
|
-
if (!isRecord(value)) {
|
|
22
|
-
throw new TypeError(`${sourceLabel} context intent at index ${String(index)} must be an object`);
|
|
23
|
-
}
|
|
24
|
-
const includedFieldGroups = value.included_field_groups;
|
|
25
|
-
if (typeof value.command !== "string" ||
|
|
26
|
-
typeof value.intent !== "string" ||
|
|
27
|
-
typeof value.description !== "string" ||
|
|
28
|
-
!Array.isArray(includedFieldGroups) ||
|
|
29
|
-
!includedFieldGroups.every((entry) => typeof entry === "string") ||
|
|
30
|
-
typeof value.token_budget !== "number") {
|
|
31
|
-
throw new TypeError(`${sourceLabel} context intent at index ${String(index)} has an invalid contract shape`);
|
|
32
|
-
}
|
|
33
|
-
return {
|
|
34
|
-
command: value.command,
|
|
35
|
-
intent: value.intent,
|
|
36
|
-
description: value.description,
|
|
37
|
-
included_field_groups: includedFieldGroups,
|
|
38
|
-
token_budget: value.token_budget,
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
/** Parse a JSON/module declaration array and reject malformed entries before composition. */
|
|
42
|
-
export function parseContextIntentDeclarations(value, sourceLabel) {
|
|
43
|
-
const declarations = Array.isArray(value)
|
|
44
|
-
? value
|
|
45
|
-
: isRecord(value) && Array.isArray(value.intents)
|
|
46
|
-
? value.intents
|
|
47
|
-
: undefined;
|
|
48
|
-
if (!declarations) {
|
|
49
|
-
throw new TypeError(`${sourceLabel} context intents must be an array or an object with an intents array`);
|
|
50
|
-
}
|
|
51
|
-
return declarations.map((entry, index) => parseDeclaration(entry, sourceLabel, index));
|
|
52
|
-
}
|
|
53
|
-
/** Read optional workspace declarations from .agents/pm/context-intents.json. */
|
|
54
|
-
export async function readWorkspaceContextIntentContracts(pmRoot) {
|
|
55
|
-
const declarationPath = path.join(pmRoot, PM_CONTEXT_INTENTS_FILE);
|
|
56
|
-
let source;
|
|
57
|
-
try {
|
|
58
|
-
source = await readFile(declarationPath, "utf8");
|
|
59
|
-
}
|
|
60
|
-
catch (error) {
|
|
61
|
-
// Absent declarations are the norm. `ENOTDIR` counts as absent too: when
|
|
62
|
-
// the tracker root is a regular file the declaration cannot exist, and the
|
|
63
|
-
// authoritative root guard downstream owns that refusal. Other read
|
|
64
|
-
// failures first pass through the same root guard so permissions failures
|
|
65
|
-
// cannot pre-empt it with an unclassified runtime fault.
|
|
66
|
-
if (isFileAbsentError(error)) {
|
|
67
|
-
return [];
|
|
68
|
-
}
|
|
69
|
-
await assertReadableTrackerRoot(pmRoot);
|
|
70
|
-
throw error;
|
|
71
|
-
}
|
|
72
|
-
let parsed;
|
|
73
|
-
try {
|
|
74
|
-
parsed = JSON.parse(source);
|
|
75
|
-
}
|
|
76
|
-
catch (error) {
|
|
77
|
-
const detail = error instanceof Error ? error.message : String(error);
|
|
78
|
-
throw new TypeError(`Invalid ${PM_CONTEXT_INTENTS_FILE}: ${detail}`, {
|
|
79
|
-
cause: error,
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
return parseContextIntentDeclarations(parsed, PM_CONTEXT_INTENTS_FILE);
|
|
83
|
-
}
|
|
84
|
-
function packageDeclarationExport(module) {
|
|
85
|
-
if (!isRecord(module))
|
|
86
|
-
return undefined;
|
|
87
|
-
const direct = module.contextIntents ?? module.context_intents;
|
|
88
|
-
if (direct !== undefined)
|
|
89
|
-
return direct;
|
|
90
|
-
const defaultExport = module.default;
|
|
91
|
-
return isRecord(defaultExport)
|
|
92
|
-
? (defaultExport.contextIntents ?? defaultExport.context_intents)
|
|
93
|
-
: undefined;
|
|
94
|
-
}
|
|
95
|
-
/** Collect contextIntents exports from active package modules. */
|
|
96
|
-
export function collectPackageContextIntentContracts(packages) {
|
|
97
|
-
return packages.flatMap((entry) => {
|
|
98
|
-
const declaration = packageDeclarationExport(entry.module);
|
|
99
|
-
return declaration === undefined
|
|
100
|
-
? []
|
|
101
|
-
: parseContextIntentDeclarations(declaration, `package ${entry.name}`);
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
/** Load both runtime declaration layers without changing the active request scope. */
|
|
105
|
-
export async function loadContextIntentRuntimeLayers(options) {
|
|
106
|
-
const workspaceContracts = await readWorkspaceContextIntentContracts(options.pmRoot);
|
|
107
|
-
const packageContracts = collectPackageContextIntentContracts(options.packages ?? []);
|
|
108
|
-
return { workspaceContracts, packageContracts };
|
|
109
|
-
}
|
|
110
|
-
/** Discover declarations and execute one request with isolated composed intents. */
|
|
111
|
-
export async function runWithDiscoveredContextIntentContracts(options, run) {
|
|
112
|
-
const layers = await loadContextIntentRuntimeLayers(options);
|
|
113
|
-
return await runWithContextIntentContracts(layers, run);
|
|
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]="c64f304d-9081-5bad-8187-7bf6b65e4a07")}catch(e2){}})();import{readFile}from"node:fs/promises";import path from"node:path";import{isFileAbsentError}from"../core/fs/fs-utils.js";import{assertReadableTrackerRoot}from"./environment/tracker-preflight.js";import{runWithContextIntentContracts}from"./context-intent-contracts.js";const PM_CONTEXT_INTENTS_FILE="context-intents.json";function isRecord(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)}function parseDeclaration(value,sourceLabel,index){if(!isRecord(value)){throw new TypeError(`${sourceLabel} context intent at index ${String(index)} must be an object`)}const includedFieldGroups=value.included_field_groups;if(typeof value.command!=="string"||typeof value.intent!=="string"||typeof value.description!=="string"||!Array.isArray(includedFieldGroups)||!includedFieldGroups.every(entry=>typeof entry==="string")||typeof value.token_budget!=="number"){throw new TypeError(`${sourceLabel} context intent at index ${String(index)} has an invalid contract shape`)}return{command:value.command,intent:value.intent,description:value.description,included_field_groups:includedFieldGroups,token_budget:value.token_budget}}function parseContextIntentDeclarations(value,sourceLabel){const declarations=Array.isArray(value)?value:isRecord(value)&&Array.isArray(value.intents)?value.intents:void 0;if(!declarations){throw new TypeError(`${sourceLabel} context intents must be an array or an object with an intents array`)}return declarations.map((entry,index)=>parseDeclaration(entry,sourceLabel,index))}async function readWorkspaceContextIntentContracts(pmRoot){const declarationPath=path.join(pmRoot,PM_CONTEXT_INTENTS_FILE);let source;try{source=await readFile(declarationPath,"utf8")}catch(error){if(isFileAbsentError(error)){return[]}await assertReadableTrackerRoot(pmRoot);throw error}let parsed;try{parsed=JSON.parse(source)}catch(error){const detail=error instanceof Error?error.message:String(error);throw new TypeError(`Invalid ${PM_CONTEXT_INTENTS_FILE}: ${detail}`,{cause:error})}return parseContextIntentDeclarations(parsed,PM_CONTEXT_INTENTS_FILE)}function packageDeclarationExport(module){if(!isRecord(module))return void 0;const direct=module.contextIntents??module.context_intents;if(direct!==void 0)return direct;const defaultExport=module.default;return isRecord(defaultExport)?defaultExport.contextIntents??defaultExport.context_intents:void 0}function collectPackageContextIntentContracts(packages){return packages.flatMap(entry=>{const declaration=packageDeclarationExport(entry.module);return declaration===void 0?[]:parseContextIntentDeclarations(declaration,`package ${entry.name}`)})}async function loadContextIntentRuntimeLayers(options){const workspaceContracts=await readWorkspaceContextIntentContracts(options.pmRoot);const packageContracts=collectPackageContextIntentContracts(options.packages??[]);return{workspaceContracts,packageContracts}}async function runWithDiscoveredContextIntentContracts(options,run){const layers=await loadContextIntentRuntimeLayers(options);return await runWithContextIntentContracts(layers,run)}export{PM_CONTEXT_INTENTS_FILE,collectPackageContextIntentContracts,loadContextIntentRuntimeLayers,parseContextIntentDeclarations,readWorkspaceContextIntentContracts,runWithDiscoveredContextIntentContracts};
|
|
115
2
|
//# sourceMappingURL=context-intent-runtime.js.map
|
|
116
|
-
//# debugId=1a7548f2-93a0-5dfc-9d9a-c5aef4656c7c
|
|
@@ -1,219 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* @module sdk/context-packing
|
|
3
|
-
*
|
|
4
|
-
* Deterministic, token-budget-aware packing primitives for ranked context and
|
|
5
|
-
* next-work candidates. The packer is deliberately storage-agnostic so custom
|
|
6
|
-
* tools can reuse the exact selection contract with their own projections.
|
|
7
|
-
*/
|
|
8
|
-
/** Stable intent-keyed policies for risk, diversity, and safety-aware packing. */
|
|
9
|
-
|
|
10
|
-
!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]="b5c90a16-c075-5dc6-a326-ad2da7a6ef6d")}catch(e){}}();
|
|
11
|
-
export const CONTEXT_PACKING_PROFILES = {
|
|
12
|
-
balanced: { redundancyPenalty: 0.35, uncertaintyPenalty: 0.2 },
|
|
13
|
-
context: { redundancyPenalty: 0.45, uncertaintyPenalty: 0.15 },
|
|
14
|
-
next: { redundancyPenalty: 0.25, uncertaintyPenalty: 0.3 },
|
|
15
|
-
};
|
|
16
|
-
const PROJECTION_LEVELS = [
|
|
17
|
-
"identity",
|
|
18
|
-
"summary",
|
|
19
|
-
"full",
|
|
20
|
-
];
|
|
21
|
-
function assertPackingCandidate(candidate) {
|
|
22
|
-
if (!candidate.id.trim() ||
|
|
23
|
-
!Number.isInteger(candidate.rank) ||
|
|
24
|
-
candidate.rank < 1) {
|
|
25
|
-
throw new TypeError("Context packing candidates require a non-empty id and positive integer rank");
|
|
26
|
-
}
|
|
27
|
-
if (!Number.isFinite(candidate.score) || candidate.score < 0) {
|
|
28
|
-
throw new TypeError("Context packing candidate scores must be finite and non-negative");
|
|
29
|
-
}
|
|
30
|
-
const costs = PROJECTION_LEVELS.map((level) => candidate.token_costs[level]);
|
|
31
|
-
if (costs.some((cost) => !Number.isInteger(cost) || cost < 1) ||
|
|
32
|
-
costs[0] > costs[1] ||
|
|
33
|
-
costs[1] > costs[2]) {
|
|
34
|
-
throw new TypeError("Context projection costs must be positive monotone integers");
|
|
35
|
-
}
|
|
36
|
-
if (candidate.uncertainty !== undefined &&
|
|
37
|
-
(!Number.isFinite(candidate.uncertainty) || candidate.uncertainty < 0)) {
|
|
38
|
-
throw new TypeError("Context packing uncertainty must be finite and non-negative");
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
function resolvePackingPenalties(options) {
|
|
42
|
-
if (!Number.isInteger(options.tokenBudget) || options.tokenBudget < 1) {
|
|
43
|
-
throw new TypeError("Context packing tokenBudget must be a positive integer");
|
|
44
|
-
}
|
|
45
|
-
const profile = options.profile ?? "balanced";
|
|
46
|
-
const policy = CONTEXT_PACKING_PROFILES[profile];
|
|
47
|
-
if (!policy)
|
|
48
|
-
throw new TypeError("Unknown context packing profile");
|
|
49
|
-
const redundancy = options.redundancyPenalty ?? policy.redundancyPenalty;
|
|
50
|
-
const uncertainty = options.uncertaintyPenalty ?? policy.uncertaintyPenalty;
|
|
51
|
-
if (!Number.isFinite(redundancy) ||
|
|
52
|
-
redundancy < 0 ||
|
|
53
|
-
redundancy > 1 ||
|
|
54
|
-
!Number.isFinite(uncertainty) ||
|
|
55
|
-
uncertainty < 0) {
|
|
56
|
-
throw new TypeError("Context packing penalties must be finite and within their supported ranges");
|
|
57
|
-
}
|
|
58
|
-
if (options.latencyBudgetMs !== undefined &&
|
|
59
|
-
(!Number.isFinite(options.latencyBudgetMs) || options.latencyBudgetMs <= 0)) {
|
|
60
|
-
throw new TypeError("Context packing latencyBudgetMs must be positive");
|
|
61
|
-
}
|
|
62
|
-
return { redundancy, uncertainty, profile };
|
|
63
|
-
}
|
|
64
|
-
function orderPackingCandidates(candidates) {
|
|
65
|
-
const ids = new Set();
|
|
66
|
-
for (const candidate of candidates) {
|
|
67
|
-
assertPackingCandidate(candidate);
|
|
68
|
-
if (ids.has(candidate.id)) {
|
|
69
|
-
throw new TypeError("Context packing candidates require unique ids");
|
|
70
|
-
}
|
|
71
|
-
ids.add(candidate.id);
|
|
72
|
-
}
|
|
73
|
-
return [...candidates].sort((left, right) => left.rank - right.rank || left.id.localeCompare(right.id));
|
|
74
|
-
}
|
|
75
|
-
function findBestAffordableCandidate(candidates, remaining, valueOf, deadline, readClock) {
|
|
76
|
-
let bestIndex = -1;
|
|
77
|
-
let evaluated = 0;
|
|
78
|
-
for (let index = 0; index < candidates.length; index += 1) {
|
|
79
|
-
if (index % 128 === 0 && readClock() >= deadline) {
|
|
80
|
-
return { index: bestIndex, evaluated, timedOut: true };
|
|
81
|
-
}
|
|
82
|
-
const candidate = candidates[index];
|
|
83
|
-
if (candidate.token_costs.identity > remaining)
|
|
84
|
-
continue;
|
|
85
|
-
evaluated += 1;
|
|
86
|
-
const best = bestIndex < 0 ? undefined : candidates[bestIndex];
|
|
87
|
-
const density = valueOf(candidate) / candidate.token_costs.identity;
|
|
88
|
-
const bestDensity = best === undefined
|
|
89
|
-
? Number.NEGATIVE_INFINITY
|
|
90
|
-
: valueOf(best) / best.token_costs.identity;
|
|
91
|
-
if (density > bestDensity ||
|
|
92
|
-
(density === bestDensity &&
|
|
93
|
-
best !== undefined &&
|
|
94
|
-
(candidate.rank < best.rank ||
|
|
95
|
-
(candidate.rank === best.rank &&
|
|
96
|
-
candidate.id.localeCompare(best.id) < 0)))) {
|
|
97
|
-
bestIndex = index;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
return { index: bestIndex, evaluated, timedOut: false };
|
|
101
|
-
}
|
|
102
|
-
function selectIdentityCandidates(params) {
|
|
103
|
-
const represented = new Set();
|
|
104
|
-
const included = [];
|
|
105
|
-
let remaining = params.tokenBudget;
|
|
106
|
-
const valueOf = (candidate) => {
|
|
107
|
-
const key = candidate.lineage ?? candidate.cluster;
|
|
108
|
-
const redundancy = key && represented.has(key) ? 1 - params.redundancyPenalty : 1;
|
|
109
|
-
return Math.max(0, (candidate.score -
|
|
110
|
-
params.uncertaintyPenalty * (candidate.uncertainty ?? 0)) *
|
|
111
|
-
redundancy);
|
|
112
|
-
};
|
|
113
|
-
const admit = (candidate) => {
|
|
114
|
-
const tokens = candidate.token_costs.identity;
|
|
115
|
-
included.push({
|
|
116
|
-
...candidate,
|
|
117
|
-
projection: "identity",
|
|
118
|
-
tokens,
|
|
119
|
-
marginal_value: valueOf(candidate),
|
|
120
|
-
});
|
|
121
|
-
remaining -= tokens;
|
|
122
|
-
const key = candidate.lineage ?? candidate.cluster;
|
|
123
|
-
if (key)
|
|
124
|
-
represented.add(key);
|
|
125
|
-
};
|
|
126
|
-
for (const candidate of params.ordered.filter((entry) => entry.required)) {
|
|
127
|
-
if (candidate.token_costs.identity <= remaining)
|
|
128
|
-
admit(candidate);
|
|
129
|
-
}
|
|
130
|
-
const optional = params.ordered.filter((entry) => !entry.required);
|
|
131
|
-
let selectionComplete = true;
|
|
132
|
-
let evaluatedCandidates = 0;
|
|
133
|
-
while (optional.length > 0) {
|
|
134
|
-
const selection = findBestAffordableCandidate(optional, remaining, valueOf, params.deadline, params.readClock);
|
|
135
|
-
evaluatedCandidates += selection.evaluated;
|
|
136
|
-
if (selection.timedOut)
|
|
137
|
-
selectionComplete = false;
|
|
138
|
-
if (selection.index < 0 || selection.timedOut)
|
|
139
|
-
break;
|
|
140
|
-
admit(optional.splice(selection.index, 1)[0]);
|
|
141
|
-
}
|
|
142
|
-
return {
|
|
143
|
-
included,
|
|
144
|
-
remaining,
|
|
145
|
-
selectionComplete,
|
|
146
|
-
evaluatedCandidates,
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
function upgradeSelectedProjections(included, initialRemaining) {
|
|
150
|
-
let remaining = initialRemaining;
|
|
151
|
-
for (const target of ["summary", "full"]) {
|
|
152
|
-
const previous = target === "summary" ? "identity" : "summary";
|
|
153
|
-
const upgrades = [...included].sort((left, right) => {
|
|
154
|
-
const leftCost = left.token_costs[target] - left.token_costs[previous];
|
|
155
|
-
const rightCost = right.token_costs[target] - right.token_costs[previous];
|
|
156
|
-
return (right.marginal_value / Math.max(rightCost, 1) -
|
|
157
|
-
left.marginal_value / Math.max(leftCost, 1) || left.rank - right.rank || left.id.localeCompare(right.id));
|
|
158
|
-
});
|
|
159
|
-
for (const entry of upgrades) {
|
|
160
|
-
if (entry.projection !== previous)
|
|
161
|
-
continue;
|
|
162
|
-
const extra = entry.token_costs[target] - entry.tokens;
|
|
163
|
-
if (extra > remaining)
|
|
164
|
-
continue;
|
|
165
|
-
entry.projection = target;
|
|
166
|
-
entry.tokens += extra;
|
|
167
|
-
remaining -= extra;
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
return remaining;
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* Packs ranked candidates under an explicit token budget. Required anchors are
|
|
174
|
-
* admitted first, optional rows compete by marginal value per token, and then
|
|
175
|
-
* selected rows are upgraded from identity to summary to full detail. This
|
|
176
|
-
* guarantees projection degradation happens before omission.
|
|
177
|
-
*/
|
|
178
|
-
export function packContextCandidates(candidates, options) {
|
|
179
|
-
const penalties = resolvePackingPenalties(options);
|
|
180
|
-
const ordered = orderPackingCandidates(candidates);
|
|
181
|
-
const readClock = options.readClock ?? performance.now.bind(performance);
|
|
182
|
-
const deadline = options.latencyBudgetMs === undefined
|
|
183
|
-
? Number.POSITIVE_INFINITY
|
|
184
|
-
: readClock() + options.latencyBudgetMs;
|
|
185
|
-
const selection = selectIdentityCandidates({
|
|
186
|
-
ordered,
|
|
187
|
-
tokenBudget: options.tokenBudget,
|
|
188
|
-
redundancyPenalty: penalties.redundancy,
|
|
189
|
-
uncertaintyPenalty: penalties.uncertainty,
|
|
190
|
-
deadline,
|
|
191
|
-
readClock,
|
|
192
|
-
});
|
|
193
|
-
const { included } = selection;
|
|
194
|
-
const remaining = upgradeSelectedProjections(included, selection.remaining);
|
|
195
|
-
included.sort((left, right) => left.rank - right.rank || left.id.localeCompare(right.id));
|
|
196
|
-
const selected = new Set(included.map((entry) => entry.id));
|
|
197
|
-
return {
|
|
198
|
-
included,
|
|
199
|
-
omitted_ids: ordered
|
|
200
|
-
.filter((entry) => !selected.has(entry.id))
|
|
201
|
-
.map((entry) => entry.id),
|
|
202
|
-
token_budget: options.tokenBudget,
|
|
203
|
-
used_tokens: options.tokenBudget - remaining,
|
|
204
|
-
remaining_tokens: remaining,
|
|
205
|
-
complete: selection.selectionComplete &&
|
|
206
|
-
included.length === candidates.length &&
|
|
207
|
-
included.every((entry) => entry.projection === "full"),
|
|
208
|
-
selection_complete: selection.selectionComplete,
|
|
209
|
-
termination_reason: selection.selectionComplete
|
|
210
|
-
? "exhausted"
|
|
211
|
-
: "latency_budget",
|
|
212
|
-
evaluated_candidates: selection.evaluatedCandidates,
|
|
213
|
-
latency_budget_ms: options.latencyBudgetMs ?? null,
|
|
214
|
-
profile: penalties.profile,
|
|
215
|
-
degradation_ladder: ["full", "summary", "identity"],
|
|
216
|
-
};
|
|
217
|
-
}
|
|
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]="a533ce49-ef4f-50a0-9785-acd716999b29")}catch(e2){}})();const CONTEXT_PACKING_PROFILES={balanced:{redundancyPenalty:.35,uncertaintyPenalty:.2},context:{redundancyPenalty:.45,uncertaintyPenalty:.15},next:{redundancyPenalty:.25,uncertaintyPenalty:.3}};const PROJECTION_LEVELS=["identity","summary","full"];function assertPackingCandidate(candidate){if(!candidate.id.trim()||!Number.isInteger(candidate.rank)||candidate.rank<1){throw new TypeError("Context packing candidates require a non-empty id and positive integer rank")}if(!Number.isFinite(candidate.score)||candidate.score<0){throw new TypeError("Context packing candidate scores must be finite and non-negative")}const costs=PROJECTION_LEVELS.map(level=>candidate.token_costs[level]);if(costs.some(cost=>!Number.isInteger(cost)||cost<1)||costs[0]>costs[1]||costs[1]>costs[2]){throw new TypeError("Context projection costs must be positive monotone integers")}if(candidate.uncertainty!==void 0&&(!Number.isFinite(candidate.uncertainty)||candidate.uncertainty<0)){throw new TypeError("Context packing uncertainty must be finite and non-negative")}}function resolvePackingPenalties(options){if(!Number.isInteger(options.tokenBudget)||options.tokenBudget<1){throw new TypeError("Context packing tokenBudget must be a positive integer")}const profile=options.profile??"balanced";const policy=CONTEXT_PACKING_PROFILES[profile];if(!policy)throw new TypeError("Unknown context packing profile");const redundancy=options.redundancyPenalty??policy.redundancyPenalty;const uncertainty=options.uncertaintyPenalty??policy.uncertaintyPenalty;if(!Number.isFinite(redundancy)||redundancy<0||redundancy>1||!Number.isFinite(uncertainty)||uncertainty<0){throw new TypeError("Context packing penalties must be finite and within their supported ranges")}if(options.latencyBudgetMs!==void 0&&(!Number.isFinite(options.latencyBudgetMs)||options.latencyBudgetMs<=0)){throw new TypeError("Context packing latencyBudgetMs must be positive")}return{redundancy,uncertainty,profile}}function orderPackingCandidates(candidates){const ids=new Set;for(const candidate of candidates){assertPackingCandidate(candidate);if(ids.has(candidate.id)){throw new TypeError("Context packing candidates require unique ids")}ids.add(candidate.id)}return[...candidates].sort((left,right)=>left.rank-right.rank||left.id.localeCompare(right.id))}function findBestAffordableCandidate(candidates,remaining,valueOf,deadline,readClock){let bestIndex=-1;let evaluated=0;for(let index=0;index<candidates.length;index+=1){if(index%128===0&&readClock()>=deadline){return{index:bestIndex,evaluated,timedOut:true}}const candidate=candidates[index];if(candidate.token_costs.identity>remaining)continue;evaluated+=1;const best=bestIndex<0?void 0:candidates[bestIndex];const density=valueOf(candidate)/candidate.token_costs.identity;const bestDensity=best===void 0?Number.NEGATIVE_INFINITY:valueOf(best)/best.token_costs.identity;if(density>bestDensity||density===bestDensity&&best!==void 0&&(candidate.rank<best.rank||candidate.rank===best.rank&&candidate.id.localeCompare(best.id)<0)){bestIndex=index}}return{index:bestIndex,evaluated,timedOut:false}}function selectIdentityCandidates(params){const represented=new Set;const included=[];let remaining=params.tokenBudget;const valueOf=candidate=>{const key=candidate.lineage??candidate.cluster;const redundancy=key&&represented.has(key)?1-params.redundancyPenalty:1;return Math.max(0,(candidate.score-params.uncertaintyPenalty*(candidate.uncertainty??0))*redundancy)};const admit=candidate=>{const tokens=candidate.token_costs.identity;included.push({...candidate,projection:"identity",tokens,marginal_value:valueOf(candidate)});remaining-=tokens;const key=candidate.lineage??candidate.cluster;if(key)represented.add(key)};for(const candidate of params.ordered.filter(entry=>entry.required)){if(candidate.token_costs.identity<=remaining)admit(candidate)}const optional=params.ordered.filter(entry=>!entry.required);let selectionComplete=true;let evaluatedCandidates=0;while(optional.length>0){const selection=findBestAffordableCandidate(optional,remaining,valueOf,params.deadline,params.readClock);evaluatedCandidates+=selection.evaluated;if(selection.timedOut)selectionComplete=false;if(selection.index<0||selection.timedOut)break;admit(optional.splice(selection.index,1)[0])}return{included,remaining,selectionComplete,evaluatedCandidates}}function upgradeSelectedProjections(included,initialRemaining){let remaining=initialRemaining;for(const target of["summary","full"]){const previous=target==="summary"?"identity":"summary";const upgrades=[...included].sort((left,right)=>{const leftCost=left.token_costs[target]-left.token_costs[previous];const rightCost=right.token_costs[target]-right.token_costs[previous];return right.marginal_value/Math.max(rightCost,1)-left.marginal_value/Math.max(leftCost,1)||left.rank-right.rank||left.id.localeCompare(right.id)});for(const entry of upgrades){if(entry.projection!==previous)continue;const extra=entry.token_costs[target]-entry.tokens;if(extra>remaining)continue;entry.projection=target;entry.tokens+=extra;remaining-=extra}}return remaining}function packContextCandidates(candidates,options){const penalties=resolvePackingPenalties(options);const ordered=orderPackingCandidates(candidates);const readClock=options.readClock??performance.now.bind(performance);const deadline=options.latencyBudgetMs===void 0?Number.POSITIVE_INFINITY:readClock()+options.latencyBudgetMs;const selection=selectIdentityCandidates({ordered,tokenBudget:options.tokenBudget,redundancyPenalty:penalties.redundancy,uncertaintyPenalty:penalties.uncertainty,deadline,readClock});const{included}=selection;const remaining=upgradeSelectedProjections(included,selection.remaining);included.sort((left,right)=>left.rank-right.rank||left.id.localeCompare(right.id));const selected=new Set(included.map(entry=>entry.id));return{included,omitted_ids:ordered.filter(entry=>!selected.has(entry.id)).map(entry=>entry.id),token_budget:options.tokenBudget,used_tokens:options.tokenBudget-remaining,remaining_tokens:remaining,complete:selection.selectionComplete&&included.length===candidates.length&&included.every(entry=>entry.projection==="full"),selection_complete:selection.selectionComplete,termination_reason:selection.selectionComplete?"exhausted":"latency_budget",evaluated_candidates:selection.evaluatedCandidates,latency_budget_ms:options.latencyBudgetMs??null,profile:penalties.profile,degradation_ladder:["full","summary","identity"]}}export{CONTEXT_PACKING_PROFILES,packContextCandidates};
|
|
218
2
|
//# sourceMappingURL=context-packing.js.map
|
|
219
|
-
//# debugId=b5c90a16-c075-5dc6-a326-ad2da7a6ef6d
|