@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,368 +1,2 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module sdk/context-usage
|
|
3
|
-
*
|
|
4
|
-
* Privacy-minimal, derived context-usage feedback primitives. The JSONL ledger
|
|
5
|
-
* contains only item ids, timestamps, authors, ranks, profiles, and command
|
|
6
|
-
* intents; it never enters item history and is safe to delete or rebuild.
|
|
7
|
-
* Persistence requires trusted, stable workspace directory entries and
|
|
8
|
-
* ancestors. For a workspace writable by an untrusted concurrent actor, set
|
|
9
|
-
* PM_CONTEXT_USAGE_DISABLED=1 or use an isolated copy owned by the caller.
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
!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]="b1b1aa19-b1de-5140-8aea-ee1994ee9ecd")}catch(e){}}();
|
|
13
|
-
import { randomUUID } from "node:crypto";
|
|
14
|
-
import { appendEvents, readEvents, resolveNow, ContextUsageValidationError, CONTEXT_USAGE_LIMITS, } from "./context/usage-ledger.js";
|
|
15
|
-
export { ContextUsageValidationError, CONTEXT_USAGE_LIMITS } from "./context/usage-ledger.js";
|
|
16
|
-
const DAY_MS = 86_400_000;
|
|
17
|
-
const CONTEXT_USAGE_SERVING_RECEIPT = Symbol.for("@unbrained/pm-cli/context-usage-serving-receipt");
|
|
18
|
-
function asObjectRecord(value) {
|
|
19
|
-
return typeof value === "object" && value !== null && !Array.isArray(value)
|
|
20
|
-
? value
|
|
21
|
-
: null;
|
|
22
|
-
}
|
|
23
|
-
/** Attach a JSON-invisible serving receipt to a result for later egress. */
|
|
24
|
-
export function attachContextUsageServingReceipt(result, receipt) {
|
|
25
|
-
const record = asObjectRecord(result);
|
|
26
|
-
if (record !== null && receipt !== null) {
|
|
27
|
-
record[CONTEXT_USAGE_SERVING_RECEIPT] = receipt;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
/** Copy an attached serving receipt across a result projection boundary. */
|
|
31
|
-
export function propagateContextUsageServingReceipt(source, target) {
|
|
32
|
-
const sourceRecord = asObjectRecord(source);
|
|
33
|
-
const targetRecord = asObjectRecord(target);
|
|
34
|
-
const receipt = sourceRecord?.[CONTEXT_USAGE_SERVING_RECEIPT];
|
|
35
|
-
if (targetRecord !== null && receipt !== undefined) {
|
|
36
|
-
targetRecord[CONTEXT_USAGE_SERVING_RECEIPT] = receipt;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
function receiptFromResult(result) {
|
|
40
|
-
return (asObjectRecord(result)?.[CONTEXT_USAGE_SERVING_RECEIPT] ?? null);
|
|
41
|
-
}
|
|
42
|
-
function resultReceiptSaysOmitted(result) {
|
|
43
|
-
const record = asObjectRecord(result);
|
|
44
|
-
for (const key of ["read_output", "context_intent"]) {
|
|
45
|
-
const receipt = asObjectRecord(record?.[key]);
|
|
46
|
-
if (receipt?.result_omitted === true)
|
|
47
|
-
return true;
|
|
48
|
-
}
|
|
49
|
-
return false;
|
|
50
|
-
}
|
|
51
|
-
function addContextUsageId(ids, value) {
|
|
52
|
-
if (typeof value === "string" && value.trim().length > 0) {
|
|
53
|
-
ids.add(value.trim());
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
function addContextUsageDirectRows(ids, value) {
|
|
57
|
-
if (!Array.isArray(value))
|
|
58
|
-
return;
|
|
59
|
-
for (const row of value) {
|
|
60
|
-
addContextUsageId(ids, asObjectRecord(row)?.id);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
function addContextUsageIdList(ids, value) {
|
|
64
|
-
if (!Array.isArray(value))
|
|
65
|
-
return;
|
|
66
|
-
for (const itemId of value)
|
|
67
|
-
addContextUsageId(ids, itemId);
|
|
68
|
-
}
|
|
69
|
-
function collectNextResultItemIds(record, ids) {
|
|
70
|
-
const rows = asObjectRecord(record.recommended) === null
|
|
71
|
-
? []
|
|
72
|
-
: [record.recommended];
|
|
73
|
-
for (const key of ["ready", "decision_needed", "gate_needed", "containers", "blocked", "held_by_others"]) {
|
|
74
|
-
if (Array.isArray(record[key]))
|
|
75
|
-
rows.push(...record[key]);
|
|
76
|
-
}
|
|
77
|
-
for (const value of rows) {
|
|
78
|
-
const row = asObjectRecord(value);
|
|
79
|
-
addContextUsageId(ids, row?.id);
|
|
80
|
-
for (const blocker of Array.isArray(row?.blockers) ? row.blockers : []) {
|
|
81
|
-
addContextUsageId(ids, asObjectRecord(blocker)?.id);
|
|
82
|
-
}
|
|
83
|
-
for (const unblockedId of Array.isArray(row?.unblocks)
|
|
84
|
-
? row.unblocks
|
|
85
|
-
: []) {
|
|
86
|
-
addContextUsageId(ids, unblockedId);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
function collectContextResultItemIds(record, ids) {
|
|
91
|
-
for (const key of [
|
|
92
|
-
"high_level",
|
|
93
|
-
"low_level",
|
|
94
|
-
"blocked_fallback",
|
|
95
|
-
"recently_created",
|
|
96
|
-
"unparented",
|
|
97
|
-
"activity",
|
|
98
|
-
"progress",
|
|
99
|
-
"blockers",
|
|
100
|
-
"staleness",
|
|
101
|
-
]) {
|
|
102
|
-
addContextUsageDirectRows(ids, record[key]);
|
|
103
|
-
}
|
|
104
|
-
for (const value of Array.isArray(record.blockers)
|
|
105
|
-
? record.blockers
|
|
106
|
-
: []) {
|
|
107
|
-
addContextUsageId(ids, asObjectRecord(value)?.blocked_by);
|
|
108
|
-
}
|
|
109
|
-
collectContextNestedItemIds(record, ids);
|
|
110
|
-
}
|
|
111
|
-
function collectContextNestedItemIds(record, ids) {
|
|
112
|
-
for (const value of Array.isArray(record.hierarchy)
|
|
113
|
-
? record.hierarchy
|
|
114
|
-
: []) {
|
|
115
|
-
const node = asObjectRecord(value);
|
|
116
|
-
addContextUsageId(ids, node?.id);
|
|
117
|
-
addContextUsageDirectRows(ids, node?.children);
|
|
118
|
-
}
|
|
119
|
-
for (const key of ["files", "workload"]) {
|
|
120
|
-
for (const value of Array.isArray(record[key]) ? record[key] : []) {
|
|
121
|
-
addContextUsageIdList(ids, asObjectRecord(value)?.items);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
const agenda = asObjectRecord(record.agenda);
|
|
125
|
-
for (const value of Array.isArray(agenda?.events) ? agenda.events : []) {
|
|
126
|
-
addContextUsageId(ids, asObjectRecord(value)?.item_id);
|
|
127
|
-
}
|
|
128
|
-
const tests = asObjectRecord(record.tests);
|
|
129
|
-
addContextUsageIdList(ids, tests?.items_failing);
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Collect every item identifier visible in a final context or next result.
|
|
133
|
-
* The traversal is shape-aware so summary counters and unrelated identifier
|
|
134
|
-
* fields cannot enter the privacy-minimal usage ledger.
|
|
135
|
-
*/
|
|
136
|
-
export function collectContextUsageDeliveredItemIds(result, surface) {
|
|
137
|
-
const record = asObjectRecord(result);
|
|
138
|
-
if (record === null || resultReceiptSaysOmitted(result))
|
|
139
|
-
return [];
|
|
140
|
-
const ids = new Set();
|
|
141
|
-
if (surface === "next") {
|
|
142
|
-
collectNextResultItemIds(record, ids);
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
collectContextResultItemIds(record, ids);
|
|
146
|
-
}
|
|
147
|
-
return [...ids];
|
|
148
|
-
}
|
|
149
|
-
/** Resolve and append one post-egress decision carried by a context result. */
|
|
150
|
-
export async function finalizeContextUsageDelivery(options) {
|
|
151
|
-
const receipt = receiptFromResult(options.result);
|
|
152
|
-
if (receipt === null)
|
|
153
|
-
return false;
|
|
154
|
-
const resultOmitted = resultReceiptSaysOmitted(options.result);
|
|
155
|
-
await recordContextUsageDelivery({
|
|
156
|
-
pmRoot: options.pmRoot,
|
|
157
|
-
receipt,
|
|
158
|
-
deliveredItemIds: collectContextUsageDeliveredItemIds(options.result, receipt.surface),
|
|
159
|
-
resultOmitted,
|
|
160
|
-
});
|
|
161
|
-
return true;
|
|
162
|
-
}
|
|
163
|
-
/** Records a bounded prefix of ranked context candidates with explicit sampling counts. */
|
|
164
|
-
export async function recordContextUsageServing(options) {
|
|
165
|
-
if ([
|
|
166
|
-
process.env.PM_CONTEXT_USAGE_DISABLED === "1",
|
|
167
|
-
options.enabled === false,
|
|
168
|
-
].includes(true))
|
|
169
|
-
return null;
|
|
170
|
-
if (!options.author.trim() ||
|
|
171
|
-
options.rows.some((row) => !row.id.trim() || !Number.isInteger(row.rank) || row.rank < 1)) {
|
|
172
|
-
throw new ContextUsageValidationError("Context usage serving requires an author and valid ranked rows");
|
|
173
|
-
}
|
|
174
|
-
const normalizedRows = options.rows.map((row) => ({
|
|
175
|
-
id: row.id.trim(),
|
|
176
|
-
rank: row.rank,
|
|
177
|
-
included: row.included,
|
|
178
|
-
}));
|
|
179
|
-
if (new Set(normalizedRows.map((row) => row.id)).size !== normalizedRows.length) {
|
|
180
|
-
throw new ContextUsageValidationError("Context usage serving requires unique normalized row ids");
|
|
181
|
-
}
|
|
182
|
-
const recordedRows = normalizedRows.slice(0, CONTEXT_USAGE_LIMITS.max_serving_rows);
|
|
183
|
-
const receipt = {
|
|
184
|
-
serve_id: randomUUID(),
|
|
185
|
-
author: options.author.trim(),
|
|
186
|
-
surface: options.surface,
|
|
187
|
-
rows: normalizedRows,
|
|
188
|
-
recorded_item_ids: recordedRows.map((row) => row.id),
|
|
189
|
-
};
|
|
190
|
-
receipt.storage = await appendEvents(options, [{
|
|
191
|
-
kind: "serve",
|
|
192
|
-
schema_version: 2,
|
|
193
|
-
serve_id: receipt.serve_id,
|
|
194
|
-
at: resolveNow(options).iso,
|
|
195
|
-
author: options.author.trim(),
|
|
196
|
-
surface: options.surface,
|
|
197
|
-
profile: options.profile.trim() || "balanced",
|
|
198
|
-
rows: recordedRows,
|
|
199
|
-
candidate_count: normalizedRows.length,
|
|
200
|
-
omitted_row_count: normalizedRows.length - recordedRows.length,
|
|
201
|
-
result_omitted: false,
|
|
202
|
-
packed_item_ids: recordedRows
|
|
203
|
-
.filter((row) => row.included)
|
|
204
|
-
.map((row) => row.id),
|
|
205
|
-
}]);
|
|
206
|
-
return receipt;
|
|
207
|
-
}
|
|
208
|
-
/** Append the exact post-egress delivery decision for one serving receipt. */
|
|
209
|
-
export async function recordContextUsageDelivery(options) {
|
|
210
|
-
if (options.receipt === null ||
|
|
211
|
-
process.env.PM_CONTEXT_USAGE_DISABLED === "1" ||
|
|
212
|
-
options.enabled === false) {
|
|
213
|
-
return;
|
|
214
|
-
}
|
|
215
|
-
const rankedIds = new Set(options.receipt.rows.map((row) => row.id));
|
|
216
|
-
const deliveredItemIds = [
|
|
217
|
-
...new Set(options.deliveredItemIds.map((id) => id.trim())),
|
|
218
|
-
];
|
|
219
|
-
if (deliveredItemIds.some((id) => id.length === 0 || !rankedIds.has(id)) ||
|
|
220
|
-
(options.resultOmitted && deliveredItemIds.length > 0)) {
|
|
221
|
-
throw new ContextUsageValidationError("Context usage delivery requires emitted ranked ids and zero ids for an omitted result");
|
|
222
|
-
}
|
|
223
|
-
const recordedIds = new Set(options.receipt.recorded_item_ids ?? options.receipt.rows.map((row) => row.id));
|
|
224
|
-
const delivery = {
|
|
225
|
-
kind: "delivery",
|
|
226
|
-
schema_version: 2,
|
|
227
|
-
serve_id: options.receipt.serve_id,
|
|
228
|
-
at: resolveNow(options).iso,
|
|
229
|
-
author: options.receipt.author,
|
|
230
|
-
surface: options.receipt.surface,
|
|
231
|
-
result_omitted: options.resultOmitted,
|
|
232
|
-
delivered_item_ids: deliveredItemIds.filter((id) => recordedIds.has(id)),
|
|
233
|
-
};
|
|
234
|
-
await appendEvents(options, [delivery], delivery.serve_id);
|
|
235
|
-
}
|
|
236
|
-
/** Records one subsequent item read or mutation outcome. */
|
|
237
|
-
export async function recordContextUsageTouch(options) {
|
|
238
|
-
if (process.env.PM_CONTEXT_USAGE_DISABLED === "1" ||
|
|
239
|
-
options.enabled === false)
|
|
240
|
-
return;
|
|
241
|
-
if (!options.author.trim() ||
|
|
242
|
-
!options.itemId.trim() ||
|
|
243
|
-
!options.intent.trim()) {
|
|
244
|
-
throw new ContextUsageValidationError("Context usage touch requires author, itemId, and intent");
|
|
245
|
-
}
|
|
246
|
-
await appendEvents(options, [{
|
|
247
|
-
kind: "touch",
|
|
248
|
-
at: resolveNow(options).iso,
|
|
249
|
-
author: options.author.trim(),
|
|
250
|
-
item_id: options.itemId.trim(),
|
|
251
|
-
intent: options.intent.trim(),
|
|
252
|
-
}]);
|
|
253
|
-
}
|
|
254
|
-
/**
|
|
255
|
-
* Records mutation outcomes as one append and one optional compaction pass.
|
|
256
|
-
*/
|
|
257
|
-
export async function recordContextUsageTouches(options) {
|
|
258
|
-
if (process.env.PM_CONTEXT_USAGE_DISABLED === "1" ||
|
|
259
|
-
options.enabled === false ||
|
|
260
|
-
options.itemIds.length === 0)
|
|
261
|
-
return;
|
|
262
|
-
const author = options.author.trim();
|
|
263
|
-
const intent = options.intent.trim();
|
|
264
|
-
if (!author || !intent) {
|
|
265
|
-
throw new ContextUsageValidationError("Context usage touch requires author and intent");
|
|
266
|
-
}
|
|
267
|
-
const itemIds = new Set();
|
|
268
|
-
for (const itemId of options.itemIds) {
|
|
269
|
-
if (typeof itemId !== "string") {
|
|
270
|
-
throw new ContextUsageValidationError("Context usage touch requires string itemIds");
|
|
271
|
-
}
|
|
272
|
-
const trimmedId = itemId.trim();
|
|
273
|
-
if (!trimmedId)
|
|
274
|
-
throw new ContextUsageValidationError("Context usage touch requires non-empty itemId");
|
|
275
|
-
itemIds.add(trimmedId);
|
|
276
|
-
}
|
|
277
|
-
const at = resolveNow(options).iso;
|
|
278
|
-
const events = [...itemIds].map((itemId) => ({
|
|
279
|
-
kind: "touch",
|
|
280
|
-
at,
|
|
281
|
-
author,
|
|
282
|
-
item_id: itemId,
|
|
283
|
-
intent,
|
|
284
|
-
}));
|
|
285
|
-
await appendEvents(options, events);
|
|
286
|
-
}
|
|
287
|
-
function findTouchTimeInHorizon(touches, itemId, servedAt, horizonMs) {
|
|
288
|
-
return touches.find(({ entry, time }) => entry.item_id === itemId &&
|
|
289
|
-
time >= servedAt &&
|
|
290
|
-
time - servedAt <= horizonMs)?.time;
|
|
291
|
-
}
|
|
292
|
-
function firstDeliveriesByServeId(events, author) {
|
|
293
|
-
const deliveries = new Map();
|
|
294
|
-
for (const event of events) {
|
|
295
|
-
if (event.kind === "delivery" &&
|
|
296
|
-
event.schema_version === 2 &&
|
|
297
|
-
event.author === author &&
|
|
298
|
-
!deliveries.has(event.serve_id)) {
|
|
299
|
-
deliveries.set(event.serve_id, event);
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
return deliveries;
|
|
303
|
-
}
|
|
304
|
-
/**
|
|
305
|
-
* Derives decayed served-then-touched affinity. A small exploration floor keeps
|
|
306
|
-
* ignored and unseen items eligible, preventing a popularity feedback lock-in.
|
|
307
|
-
*/
|
|
308
|
-
export async function readContextUsageAffinity(options) {
|
|
309
|
-
if (process.env.PM_CONTEXT_USAGE_DISABLED === "1" ||
|
|
310
|
-
options.enabled === false)
|
|
311
|
-
return {
|
|
312
|
-
affinity: {},
|
|
313
|
-
positive_judgments: 0,
|
|
314
|
-
serving_events: 0,
|
|
315
|
-
untrusted_serving_events: 0,
|
|
316
|
-
};
|
|
317
|
-
const events = await readEvents(options);
|
|
318
|
-
const now = resolveNow(options).ms;
|
|
319
|
-
const horizonMs = (options.horizonHours ?? 24) * 3_600_000;
|
|
320
|
-
if (![Number.isFinite(horizonMs), horizonMs > 0].every(Boolean))
|
|
321
|
-
throw new ContextUsageValidationError("Context usage horizonHours must be positive");
|
|
322
|
-
const author = options.author.trim();
|
|
323
|
-
const touches = events
|
|
324
|
-
.filter((event) => event.kind === "touch")
|
|
325
|
-
.filter((event) => event.author === author)
|
|
326
|
-
.map((entry) => ({ entry, time: Date.parse(entry.at) }));
|
|
327
|
-
const scores = new Map();
|
|
328
|
-
let servingEvents = 0;
|
|
329
|
-
let untrustedServingEvents = 0;
|
|
330
|
-
let positiveJudgments = 0;
|
|
331
|
-
const deliveries = firstDeliveriesByServeId(events, author);
|
|
332
|
-
events
|
|
333
|
-
.filter((event) => event.kind === "serve")
|
|
334
|
-
.filter((event) => event.author === author)
|
|
335
|
-
.forEach((event) => {
|
|
336
|
-
if (![event.schema_version === 2, Boolean(event.serve_id)].every(Boolean)) {
|
|
337
|
-
untrustedServingEvents += 1;
|
|
338
|
-
return;
|
|
339
|
-
}
|
|
340
|
-
servingEvents += 1;
|
|
341
|
-
const servedAt = Date.parse(event.at);
|
|
342
|
-
const delivery = deliveries.get(event.serve_id);
|
|
343
|
-
const deliveredIds = new Set(delivery?.delivered_item_ids ?? []);
|
|
344
|
-
for (const row of event.rows) {
|
|
345
|
-
if (!deliveredIds.has(row.id))
|
|
346
|
-
continue;
|
|
347
|
-
const touchTime = findTouchTimeInHorizon(touches, row.id, servedAt, horizonMs);
|
|
348
|
-
if (touchTime === undefined)
|
|
349
|
-
continue;
|
|
350
|
-
positiveJudgments += 1;
|
|
351
|
-
const ageDays = Math.max(0, (now - touchTime) / DAY_MS);
|
|
352
|
-
scores.set(row.id, (scores.get(row.id) ?? 0) + Math.exp(-ageDays / 14));
|
|
353
|
-
}
|
|
354
|
-
});
|
|
355
|
-
const maximum = Math.max(0, ...scores.values());
|
|
356
|
-
const affinity = Object.fromEntries([...scores.entries()].map(([id, score]) => [
|
|
357
|
-
id,
|
|
358
|
-
maximum === 0 ? 0.05 : 0.05 + (0.95 * score) / maximum,
|
|
359
|
-
]));
|
|
360
|
-
return {
|
|
361
|
-
affinity,
|
|
362
|
-
positive_judgments: positiveJudgments,
|
|
363
|
-
serving_events: servingEvents,
|
|
364
|
-
untrusted_serving_events: untrustedServingEvents,
|
|
365
|
-
};
|
|
366
|
-
}
|
|
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]="3b38d564-6034-54ae-ad24-eddba01a2c5c")}catch(e2){}})();import{randomUUID}from"node:crypto";import{appendEvents,readEvents,resolveNow,ContextUsageValidationError,CONTEXT_USAGE_LIMITS}from"./context/usage-ledger.js";import{ContextUsageValidationError as ContextUsageValidationError2,CONTEXT_USAGE_LIMITS as CONTEXT_USAGE_LIMITS2}from"./context/usage-ledger.js";const DAY_MS=864e5;const CONTEXT_USAGE_SERVING_RECEIPT=Symbol.for("@unbrained/pm-cli/context-usage-serving-receipt");function asObjectRecord(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)?value:null}function attachContextUsageServingReceipt(result,receipt){const record=asObjectRecord(result);if(record!==null&&receipt!==null){record[CONTEXT_USAGE_SERVING_RECEIPT]=receipt}}function propagateContextUsageServingReceipt(source,target){const sourceRecord=asObjectRecord(source);const targetRecord=asObjectRecord(target);const receipt=sourceRecord?.[CONTEXT_USAGE_SERVING_RECEIPT];if(targetRecord!==null&&receipt!==void 0){targetRecord[CONTEXT_USAGE_SERVING_RECEIPT]=receipt}}function receiptFromResult(result){return asObjectRecord(result)?.[CONTEXT_USAGE_SERVING_RECEIPT]??null}function resultReceiptSaysOmitted(result){const record=asObjectRecord(result);for(const key of["read_output","context_intent"]){const receipt=asObjectRecord(record?.[key]);if(receipt?.result_omitted===true)return true}return false}function addContextUsageId(ids,value){if(typeof value==="string"&&value.trim().length>0){ids.add(value.trim())}}function addContextUsageDirectRows(ids,value){if(!Array.isArray(value))return;for(const row of value){addContextUsageId(ids,asObjectRecord(row)?.id)}}function addContextUsageIdList(ids,value){if(!Array.isArray(value))return;for(const itemId of value)addContextUsageId(ids,itemId)}function collectNextResultItemIds(record,ids){const rows=asObjectRecord(record.recommended)===null?[]:[record.recommended];for(const key of["ready","decision_needed","gate_needed","containers","blocked","held_by_others"]){if(Array.isArray(record[key]))rows.push(...record[key])}for(const value of rows){const row=asObjectRecord(value);addContextUsageId(ids,row?.id);for(const blocker of Array.isArray(row?.blockers)?row.blockers:[]){addContextUsageId(ids,asObjectRecord(blocker)?.id)}for(const unblockedId of Array.isArray(row?.unblocks)?row.unblocks:[]){addContextUsageId(ids,unblockedId)}}}function collectContextResultItemIds(record,ids){for(const key of["high_level","low_level","blocked_fallback","recently_created","unparented","activity","progress","blockers","staleness"]){addContextUsageDirectRows(ids,record[key])}for(const value of Array.isArray(record.blockers)?record.blockers:[]){addContextUsageId(ids,asObjectRecord(value)?.blocked_by)}collectContextNestedItemIds(record,ids)}function collectContextNestedItemIds(record,ids){for(const value of Array.isArray(record.hierarchy)?record.hierarchy:[]){const node=asObjectRecord(value);addContextUsageId(ids,node?.id);addContextUsageDirectRows(ids,node?.children)}for(const key of["files","workload"]){for(const value of Array.isArray(record[key])?record[key]:[]){addContextUsageIdList(ids,asObjectRecord(value)?.items)}}const agenda=asObjectRecord(record.agenda);for(const value of Array.isArray(agenda?.events)?agenda.events:[]){addContextUsageId(ids,asObjectRecord(value)?.item_id)}const tests=asObjectRecord(record.tests);addContextUsageIdList(ids,tests?.items_failing)}function collectContextUsageDeliveredItemIds(result,surface){const record=asObjectRecord(result);if(record===null||resultReceiptSaysOmitted(result))return[];const ids=new Set;if(surface==="next"){collectNextResultItemIds(record,ids)}else{collectContextResultItemIds(record,ids)}return[...ids]}async function finalizeContextUsageDelivery(options){const receipt=receiptFromResult(options.result);if(receipt===null)return false;const resultOmitted=resultReceiptSaysOmitted(options.result);await recordContextUsageDelivery({pmRoot:options.pmRoot,receipt,deliveredItemIds:collectContextUsageDeliveredItemIds(options.result,receipt.surface),resultOmitted});return true}async function recordContextUsageServing(options){if([process.env.PM_CONTEXT_USAGE_DISABLED==="1",options.enabled===false].includes(true))return null;if(!options.author.trim()||options.rows.some(row=>!row.id.trim()||!Number.isInteger(row.rank)||row.rank<1)){throw new ContextUsageValidationError("Context usage serving requires an author and valid ranked rows")}const normalizedRows=options.rows.map(row=>({id:row.id.trim(),rank:row.rank,included:row.included}));if(new Set(normalizedRows.map(row=>row.id)).size!==normalizedRows.length){throw new ContextUsageValidationError("Context usage serving requires unique normalized row ids")}const recordedRows=normalizedRows.slice(0,CONTEXT_USAGE_LIMITS.max_serving_rows);const receipt={serve_id:randomUUID(),author:options.author.trim(),surface:options.surface,rows:normalizedRows,recorded_item_ids:recordedRows.map(row=>row.id)};receipt.storage=await appendEvents(options,[{kind:"serve",schema_version:2,serve_id:receipt.serve_id,at:resolveNow(options).iso,author:options.author.trim(),surface:options.surface,profile:options.profile.trim()||"balanced",rows:recordedRows,candidate_count:normalizedRows.length,omitted_row_count:normalizedRows.length-recordedRows.length,result_omitted:false,packed_item_ids:recordedRows.filter(row=>row.included).map(row=>row.id)}]);return receipt}async function recordContextUsageDelivery(options){if(options.receipt===null||process.env.PM_CONTEXT_USAGE_DISABLED==="1"||options.enabled===false){return}const rankedIds=new Set(options.receipt.rows.map(row=>row.id));const deliveredItemIds=[...new Set(options.deliveredItemIds.map(id=>id.trim()))];if(deliveredItemIds.some(id=>id.length===0||!rankedIds.has(id))||options.resultOmitted&&deliveredItemIds.length>0){throw new ContextUsageValidationError("Context usage delivery requires emitted ranked ids and zero ids for an omitted result")}const recordedIds=new Set(options.receipt.recorded_item_ids??options.receipt.rows.map(row=>row.id));const delivery={kind:"delivery",schema_version:2,serve_id:options.receipt.serve_id,at:resolveNow(options).iso,author:options.receipt.author,surface:options.receipt.surface,result_omitted:options.resultOmitted,delivered_item_ids:deliveredItemIds.filter(id=>recordedIds.has(id))};await appendEvents(options,[delivery],delivery.serve_id)}async function recordContextUsageTouch(options){if(process.env.PM_CONTEXT_USAGE_DISABLED==="1"||options.enabled===false)return;if(!options.author.trim()||!options.itemId.trim()||!options.intent.trim()){throw new ContextUsageValidationError("Context usage touch requires author, itemId, and intent")}await appendEvents(options,[{kind:"touch",at:resolveNow(options).iso,author:options.author.trim(),item_id:options.itemId.trim(),intent:options.intent.trim()}])}async function recordContextUsageTouches(options){if(process.env.PM_CONTEXT_USAGE_DISABLED==="1"||options.enabled===false||options.itemIds.length===0)return;const author=options.author.trim();const intent=options.intent.trim();if(!author||!intent){throw new ContextUsageValidationError("Context usage touch requires author and intent")}const itemIds=new Set;for(const itemId of options.itemIds){if(typeof itemId!=="string"){throw new ContextUsageValidationError("Context usage touch requires string itemIds")}const trimmedId=itemId.trim();if(!trimmedId)throw new ContextUsageValidationError("Context usage touch requires non-empty itemId");itemIds.add(trimmedId)}const at=resolveNow(options).iso;const events=[...itemIds].map(itemId=>({kind:"touch",at,author,item_id:itemId,intent}));await appendEvents(options,events)}function findTouchTimeInHorizon(touches,itemId,servedAt,horizonMs){return touches.find(({entry,time})=>entry.item_id===itemId&&time>=servedAt&&time-servedAt<=horizonMs)?.time}function firstDeliveriesByServeId(events,author){const deliveries=new Map;for(const event of events){if(event.kind==="delivery"&&event.schema_version===2&&event.author===author&&!deliveries.has(event.serve_id)){deliveries.set(event.serve_id,event)}}return deliveries}async function readContextUsageAffinity(options){if(process.env.PM_CONTEXT_USAGE_DISABLED==="1"||options.enabled===false)return{affinity:{},positive_judgments:0,serving_events:0,untrusted_serving_events:0};const events=await readEvents(options);const now=resolveNow(options).ms;const horizonMs=(options.horizonHours??24)*36e5;if(![Number.isFinite(horizonMs),horizonMs>0].every(Boolean))throw new ContextUsageValidationError("Context usage horizonHours must be positive");const author=options.author.trim();const touches=events.filter(event=>event.kind==="touch").filter(event=>event.author===author).map(entry=>({entry,time:Date.parse(entry.at)}));const scores=new Map;let servingEvents=0;let untrustedServingEvents=0;let positiveJudgments=0;const deliveries=firstDeliveriesByServeId(events,author);events.filter(event=>event.kind==="serve").filter(event=>event.author===author).forEach(event=>{if(![event.schema_version===2,Boolean(event.serve_id)].every(Boolean)){untrustedServingEvents+=1;return}servingEvents+=1;const servedAt=Date.parse(event.at);const delivery=deliveries.get(event.serve_id);const deliveredIds=new Set(delivery?.delivered_item_ids??[]);for(const row of event.rows){if(!deliveredIds.has(row.id))continue;const touchTime=findTouchTimeInHorizon(touches,row.id,servedAt,horizonMs);if(touchTime===void 0)continue;positiveJudgments+=1;const ageDays=Math.max(0,(now-touchTime)/DAY_MS);scores.set(row.id,(scores.get(row.id)??0)+Math.exp(-ageDays/14))}});const maximum=Math.max(0,...scores.values());const affinity=Object.fromEntries([...scores.entries()].map(([id,score])=>[id,maximum===0?.05:.05+.95*score/maximum]));return{affinity,positive_judgments:positiveJudgments,serving_events:servingEvents,untrusted_serving_events:untrustedServingEvents}}export{CONTEXT_USAGE_LIMITS2 as CONTEXT_USAGE_LIMITS,ContextUsageValidationError2 as ContextUsageValidationError,attachContextUsageServingReceipt,collectContextUsageDeliveredItemIds,finalizeContextUsageDelivery,propagateContextUsageServingReceipt,readContextUsageAffinity,recordContextUsageDelivery,recordContextUsageServing,recordContextUsageTouch,recordContextUsageTouches};
|
|
367
2
|
//# sourceMappingURL=context-usage.js.map
|
|
368
|
-
//# debugId=b1b1aa19-b1de-5140-8aea-ee1994ee9ecd
|
package/dist/sdk/contracts.js
CHANGED
|
@@ -1,24 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* @module sdk/contracts
|
|
3
|
-
*
|
|
4
|
-
* Exposes command and action contract data without loading SDK runtime code.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b47a3cc6-caba-5de8-8813-a4e6112dbe61")}catch(e){}}();
|
|
8
|
-
export * from "./cli-contracts.js";
|
|
9
|
-
export * from "./cli-contracts/grammar-contracts.js";
|
|
10
|
-
export * from "./cli-contracts/command-exit-contracts.js";
|
|
11
|
-
export * from "./context-intent-contracts.js";
|
|
12
|
-
export * from "./error-code-catalog.js";
|
|
13
|
-
export * from "./generated-error-code-catalog.js";
|
|
14
|
-
export * from "./flag-invocation-contracts.js";
|
|
15
|
-
export * from "./cli-contracts/flag-lexicon-contracts.js";
|
|
16
|
-
export * from "./output-token-accounting.js";
|
|
17
|
-
export * from "./output-contracts.js";
|
|
18
|
-
export * from "./agent/task-transcript-contracts.js";
|
|
19
|
-
export * from "./read-output-contracts.js";
|
|
20
|
-
export * from "./agent/refusal-closure.js";
|
|
21
|
-
export * from "./agent/closed-domain-contracts.js";
|
|
22
|
-
export * from "./agent/tracker-preflight-contracts.js";
|
|
1
|
+
!(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="caf705f9-2eb5-5af8-986e-27936dafe7c8")}catch(e2){}})();export*from"./cli-contracts.js";export*from"./cli-contracts/grammar-contracts.js";export*from"./cli-contracts/command-exit-contracts.js";export*from"./context-intent-contracts.js";export*from"./error-code-catalog.js";export*from"./generated-error-code-catalog.js";export*from"./flag-invocation-contracts.js";export*from"./cli-contracts/flag-lexicon-contracts.js";export*from"./output-token-accounting.js";export*from"./output-contracts.js";export*from"./agent/task-transcript-contracts.js";export*from"./read-output-contracts.js";export*from"./agent/refusal-closure.js";export*from"./agent/closed-domain-contracts.js";export*from"./agent/tracker-preflight-contracts.js";
|
|
23
2
|
//# sourceMappingURL=contracts.js.map
|
|
24
|
-
//# debugId=b47a3cc6-caba-5de8-8813-a4e6112dbe61
|
|
@@ -1,15 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* @module sdk/core-governance
|
|
3
|
-
*
|
|
4
|
-
* Defines the shared agent-provenance and CLI-completeness governance surface
|
|
5
|
-
* exposed by both the focused core entrypoint and the complete SDK barrel.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="cea03617-5e90-5683-a9d1-289087ed4646")}catch(e){}}();
|
|
9
|
-
export { AGENT_PROVENANCE_DIMENSIONS, BUILTIN_AGENT_PROVENANCE_ADAPTERS, BUILTIN_HARNESS_SIGNAL_DESCRIPTORS, diagnoseAgentIdentity, detectAgentIdentity, detectHarnessIdentity, listAgentProvenanceAdapters, normalizeAgentProvenanceAdapterValue, readAuthorEnvironment, registerHarnessSignalDescriptors, registerAgentProvenanceAdapters, resolveAuthorIdentity, runWithHarnessDetectionSignals, runWithWorkspaceHarnessSignalDescriptors, writeAuthorEnvironment, } from "../core/shared/author.js";
|
|
10
|
-
export { SEMANTIC_ATTRIBUTION_LIMITS, recordClaimSemanticAttribution, recordFocusSemanticAttribution, recordReleaseSemanticAttribution, resolveSemanticLineageIds, semanticAttributionAffinity, } from "./context/semantic-session-attribution.js";
|
|
11
|
-
export { explainSourceTraceability, parseSourceLineRange, } from "./traceability/source-traceability.js";
|
|
12
|
-
export { analyzeAgentProvenanceDescriptorCoverage, evaluateSemanticAttributionCoverage, groupHistoryByEpisode, resolveHistoryEpisodeGroupIdentity, summarizeAgentProvenance, summarizeAgentModelProvenance, } from "./provenance.js";
|
|
13
|
-
export { analyzeSdkCliParameterCompleteness, } from "./cli-contracts.js";
|
|
1
|
+
!(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="48d03e9b-14a4-545c-8e5d-5f5f2092a113")}catch(e2){}})();import{AGENT_PROVENANCE_DIMENSIONS,BUILTIN_AGENT_PROVENANCE_ADAPTERS,BUILTIN_HARNESS_SIGNAL_DESCRIPTORS,diagnoseAgentIdentity,detectAgentIdentity,detectHarnessIdentity,listAgentProvenanceAdapters,normalizeAgentProvenanceAdapterValue,readAuthorEnvironment,registerHarnessSignalDescriptors,registerAgentProvenanceAdapters,resolveAuthorIdentity,runWithHarnessDetectionSignals,runWithWorkspaceHarnessSignalDescriptors,writeAuthorEnvironment}from"../core/shared/author.js";import{SEMANTIC_ATTRIBUTION_LIMITS,recordClaimSemanticAttribution,recordFocusSemanticAttribution,recordReleaseSemanticAttribution,resolveSemanticLineageIds,semanticAttributionAffinity}from"./context/semantic-session-attribution.js";import{explainSourceTraceability,parseSourceLineRange}from"./traceability/source-traceability.js";import{analyzeAgentProvenanceDescriptorCoverage,evaluateSemanticAttributionCoverage,groupHistoryByEpisode,resolveHistoryEpisodeGroupIdentity,summarizeAgentProvenance,summarizeAgentModelProvenance}from"./provenance.js";import{analyzeSdkCliParameterCompleteness}from"./cli-contracts.js";export{AGENT_PROVENANCE_DIMENSIONS,BUILTIN_AGENT_PROVENANCE_ADAPTERS,BUILTIN_HARNESS_SIGNAL_DESCRIPTORS,SEMANTIC_ATTRIBUTION_LIMITS,analyzeAgentProvenanceDescriptorCoverage,analyzeSdkCliParameterCompleteness,detectAgentIdentity,detectHarnessIdentity,diagnoseAgentIdentity,evaluateSemanticAttributionCoverage,explainSourceTraceability,groupHistoryByEpisode,listAgentProvenanceAdapters,normalizeAgentProvenanceAdapterValue,parseSourceLineRange,readAuthorEnvironment,recordClaimSemanticAttribution,recordFocusSemanticAttribution,recordReleaseSemanticAttribution,registerAgentProvenanceAdapters,registerHarnessSignalDescriptors,resolveAuthorIdentity,resolveHistoryEpisodeGroupIdentity,resolveSemanticLineageIds,runWithHarnessDetectionSignals,runWithWorkspaceHarnessSignalDescriptors,semanticAttributionAffinity,summarizeAgentModelProvenance,summarizeAgentProvenance,writeAuthorEnvironment};
|
|
14
2
|
//# sourceMappingURL=core-governance.js.map
|
|
15
|
-
//# debugId=cea03617-5e90-5683-a9d1-289087ed4646
|
package/dist/sdk/core.js
CHANGED
|
@@ -1,15 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* @module sdk/core
|
|
3
|
-
*
|
|
4
|
-
* Provides the stable item lifecycle client and universal project data types.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="f44898af-0809-51e1-a6fb-74716c0971f5")}catch(e){}}();
|
|
8
|
-
export { BASELINE_ITEM_FORMAT_VERSION, BUILTIN_ITEM_TYPE_VALUES, CONFIDENCE_TEXT_VALUES, CURRENT_ITEM_FORMAT_VERSION, DEPENDENCY_KIND_VALUES, EXIT_CODE, ISSUE_SEVERITY_VALUES, ITEM_TYPE_VALUES, PM_CLI_EXPECTED_ERROR_NAME, PmCliError, PmClient, RISK_VALUES, STATUS_VALUES, canonicalDocument, classifyItemFormatVersion, createPmCliExpectedError, effectiveItemFormatVersion, emptyImportedDocument, isPmCliExpectedError, normalizeItemFormatVersion, normalizeItemId, normalizeStatusInput, nowIso, runAction, serializeItemDocument, aggregate, append, claim, claimNext, close, comments, context, copy, create, deleteItem, deps, docs, files, filesDiscover, focus, get, graph, learnings, list, next, notes, release, reopen, restore, search, update, listAllComplete, } from "./runtime.js";
|
|
9
|
-
export * from "./core-governance.js";
|
|
10
|
-
export * from "./agent-session-context.js";
|
|
11
|
-
export { isAlreadyClaimedError } from "./lifecycle/claim.js";
|
|
12
|
-
export { PM_READ_OUTPUT_DIMENSIONS, PM_READ_OUTPUT_OPTION_FLAGS, PM_READ_OUTPUT_COMPOSITION_OPTION_FLAGS, PM_READ_OUTPUT_SURFACE_CONTRACTS, applyReadOutputDimensions, decodeReadOutputContinuationCursor, encodeReadOutputContinuationCursor, isReadOutputBudgetExceeded, resolveReadOutputDimensions, resolveReadOutputEncoding, resolveReadOutputSurface, validateReadOutputOptions, } from "./read-output-contracts.js";
|
|
13
|
-
export { applyReadOutputSessionReferences, attachReadOutputSessionReceipt, parseReadOutputSession, readOutputSessionRemainingTokens, } from "./read-output-session.js";
|
|
1
|
+
!(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="3eaa41f7-77a1-5838-8a2f-2ab6a49c21ef")}catch(e2){}})();import{BASELINE_ITEM_FORMAT_VERSION,BUILTIN_ITEM_TYPE_VALUES,CONFIDENCE_TEXT_VALUES,CURRENT_ITEM_FORMAT_VERSION,DEPENDENCY_KIND_VALUES,EXIT_CODE,ISSUE_SEVERITY_VALUES,ITEM_TYPE_VALUES,PM_CLI_EXPECTED_ERROR_NAME,PmCliError,PmClient,RISK_VALUES,STATUS_VALUES,canonicalDocument,classifyItemFormatVersion,createPmCliExpectedError,effectiveItemFormatVersion,emptyImportedDocument,isPmCliExpectedError,normalizeItemFormatVersion,normalizeItemId,normalizeStatusInput,nowIso,runAction,serializeItemDocument,aggregate,append,claim,claimNext,close,comments,context,copy,create,deleteItem,deps,docs,files,filesDiscover,focus,get,graph,learnings,list,next,notes,release,reopen,restore,search,update,listAllComplete}from"./runtime.js";export*from"./core-governance.js";export*from"./agent-session-context.js";import{isAlreadyClaimedError}from"./lifecycle/claim.js";import{PM_READ_OUTPUT_DIMENSIONS,PM_READ_OUTPUT_OPTION_FLAGS,PM_READ_OUTPUT_COMPOSITION_OPTION_FLAGS,PM_READ_OUTPUT_SURFACE_CONTRACTS,applyReadOutputDimensions,decodeReadOutputContinuationCursor,encodeReadOutputContinuationCursor,isReadOutputBudgetExceeded,resolveReadOutputDimensions,resolveReadOutputEncoding,resolveReadOutputSurface,validateReadOutputOptions}from"./read-output-contracts.js";import{applyReadOutputSessionReferences,attachReadOutputSessionReceipt,parseReadOutputSession,readOutputSessionRemainingTokens}from"./read-output-session.js";export{BASELINE_ITEM_FORMAT_VERSION,BUILTIN_ITEM_TYPE_VALUES,CONFIDENCE_TEXT_VALUES,CURRENT_ITEM_FORMAT_VERSION,DEPENDENCY_KIND_VALUES,EXIT_CODE,ISSUE_SEVERITY_VALUES,ITEM_TYPE_VALUES,PM_CLI_EXPECTED_ERROR_NAME,PM_READ_OUTPUT_COMPOSITION_OPTION_FLAGS,PM_READ_OUTPUT_DIMENSIONS,PM_READ_OUTPUT_OPTION_FLAGS,PM_READ_OUTPUT_SURFACE_CONTRACTS,PmCliError,PmClient,RISK_VALUES,STATUS_VALUES,aggregate,append,applyReadOutputDimensions,applyReadOutputSessionReferences,attachReadOutputSessionReceipt,canonicalDocument,claim,claimNext,classifyItemFormatVersion,close,comments,context,copy,create,createPmCliExpectedError,decodeReadOutputContinuationCursor,deleteItem,deps,docs,effectiveItemFormatVersion,emptyImportedDocument,encodeReadOutputContinuationCursor,files,filesDiscover,focus,get,graph,isAlreadyClaimedError,isPmCliExpectedError,isReadOutputBudgetExceeded,learnings,list,listAllComplete,next,normalizeItemFormatVersion,normalizeItemId,normalizeStatusInput,notes,nowIso,parseReadOutputSession,readOutputSessionRemainingTokens,release,reopen,resolveReadOutputDimensions,resolveReadOutputEncoding,resolveReadOutputSurface,restore,runAction,search,serializeItemDocument,update,validateReadOutputOptions};
|
|
14
2
|
//# sourceMappingURL=core.js.map
|
|
15
|
-
//# debugId=f44898af-0809-51e1-a6fb-74716c0971f5
|