@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,431 +1,2 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module sdk/output-projection
|
|
3
|
-
*
|
|
4
|
-
* Declares machine-readable field-group omissions for bounded command results.
|
|
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]="db6180ed-0b18-5bf8-bcc1-24171e2dfdc4")}catch(e){}}();
|
|
8
|
-
import { EXIT_CODE } from "../core/shared/constants.js";
|
|
9
|
-
import { PmCliError } from "../core/shared/errors.js";
|
|
10
|
-
const MATERIAL_FIELD_GROUPS_BY_RESULT = new WeakMap();
|
|
11
|
-
/** Register non-serialized materiality evidence used to keep omission receipts token-proportional. */
|
|
12
|
-
export function registerOutputMaterialFieldGroups(result, fieldGroups) {
|
|
13
|
-
MATERIAL_FIELD_GROUPS_BY_RESULT.set(result, new Set(fieldGroups));
|
|
14
|
-
}
|
|
15
|
-
/** Universal selector for results carrying a {@link ReadRowContract}. */
|
|
16
|
-
export const PM_READ_ROW_JQ_SELECTOR = '.row_contract.row_keys[] as $key | getpath($key | split(".")) | if type == "array" then .[] else if type == "object" then to_entries[] else empty end end';
|
|
17
|
-
/** Static row declarations shared by CLI, SDK, MCP, and package consumers. */
|
|
18
|
-
export const PM_READ_ROW_CONTRACTS = {
|
|
19
|
-
context: { row_keys: ["high_level", "low_level"], fields: "supported" },
|
|
20
|
-
get: { row_keys: ["children"], fields: "supported" },
|
|
21
|
-
list: { row_keys: ["items"], fields: "supported" },
|
|
22
|
-
next: {
|
|
23
|
-
row_keys: [
|
|
24
|
-
"recommended",
|
|
25
|
-
"ready",
|
|
26
|
-
"decision_needed",
|
|
27
|
-
"gate_needed",
|
|
28
|
-
"containers",
|
|
29
|
-
"blocked",
|
|
30
|
-
"held_by_others",
|
|
31
|
-
],
|
|
32
|
-
fields: "unsupported",
|
|
33
|
-
},
|
|
34
|
-
search: { row_keys: ["items"], fields: "supported" },
|
|
35
|
-
activity: {
|
|
36
|
-
row_keys: [
|
|
37
|
-
"activity_digest",
|
|
38
|
-
"compact_activity",
|
|
39
|
-
"provenance_activity",
|
|
40
|
-
"activity",
|
|
41
|
-
],
|
|
42
|
-
fields: "unsupported",
|
|
43
|
-
},
|
|
44
|
-
history: {
|
|
45
|
-
row_keys: ["compact_history", "provenance_history", "history"],
|
|
46
|
-
fields: "unsupported",
|
|
47
|
-
},
|
|
48
|
-
deps: {
|
|
49
|
-
row_keys: ["graph.nodes", "graph.edges", "context.nodes", "context.edges"],
|
|
50
|
-
fields: "unsupported",
|
|
51
|
-
},
|
|
52
|
-
health: { row_keys: ["checks"], fields: "unsupported" },
|
|
53
|
-
aggregate: { row_keys: ["groups"], fields: "unsupported" },
|
|
54
|
-
duplicates: { row_keys: ["clusters"], fields: "unsupported" },
|
|
55
|
-
stats: { row_keys: ["by_type", "by_status"], fields: "unsupported" },
|
|
56
|
-
comments: { row_keys: ["comments"], fields: "unsupported" },
|
|
57
|
-
notes: { row_keys: ["notes"], fields: "unsupported" },
|
|
58
|
-
learnings: { row_keys: ["learnings"], fields: "unsupported" },
|
|
59
|
-
files: { row_keys: ["files"], fields: "unsupported" },
|
|
60
|
-
docs: { row_keys: ["docs"], fields: "unsupported" },
|
|
61
|
-
validate: { row_keys: ["checks", "warnings"], fields: "unsupported" },
|
|
62
|
-
contracts: {
|
|
63
|
-
row_keys: ["command_summaries", "commands"],
|
|
64
|
-
fields: "unsupported",
|
|
65
|
-
},
|
|
66
|
-
};
|
|
67
|
-
/** Shared activity/history contract used by CLI, SDK, MCP, and conformance tests. */
|
|
68
|
-
export const PM_MODE_PAIRED_OUTPUT_PROJECTION_CONTRACTS = [
|
|
69
|
-
{
|
|
70
|
-
command: "activity",
|
|
71
|
-
complete_mode: "full",
|
|
72
|
-
omissions_by_mode: {
|
|
73
|
-
digest: [
|
|
74
|
-
{
|
|
75
|
-
name: "event_rows",
|
|
76
|
-
restore_with: "--raw",
|
|
77
|
-
},
|
|
78
|
-
],
|
|
79
|
-
compact: [
|
|
80
|
-
{
|
|
81
|
-
name: "provenance",
|
|
82
|
-
restore_with: "--full",
|
|
83
|
-
},
|
|
84
|
-
],
|
|
85
|
-
provenance: [
|
|
86
|
-
{
|
|
87
|
-
name: "patch_and_hashes",
|
|
88
|
-
restore_with: "--full",
|
|
89
|
-
},
|
|
90
|
-
],
|
|
91
|
-
},
|
|
92
|
-
},
|
|
93
|
-
{
|
|
94
|
-
command: "history",
|
|
95
|
-
complete_mode: "full",
|
|
96
|
-
omissions_by_mode: {
|
|
97
|
-
compact: [
|
|
98
|
-
{
|
|
99
|
-
name: "raw_history",
|
|
100
|
-
restore_with: "--full",
|
|
101
|
-
},
|
|
102
|
-
],
|
|
103
|
-
provenance: [
|
|
104
|
-
{
|
|
105
|
-
name: "patch_and_hashes",
|
|
106
|
-
restore_with: "--full",
|
|
107
|
-
},
|
|
108
|
-
],
|
|
109
|
-
},
|
|
110
|
-
},
|
|
111
|
-
];
|
|
112
|
-
/** Reject a compact projection and its explicit full restoration when callers request both. */
|
|
113
|
-
export function assertProjectionModeChoice(compactRequested, fullRequested, compactFlag) {
|
|
114
|
-
if (compactRequested && fullRequested) {
|
|
115
|
-
throw new PmCliError(`${compactFlag} cannot be combined with --full`, EXIT_CODE.USAGE);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
/** Build an explicit constant-size receipt from declared and included groups. */
|
|
119
|
-
export function createOutputOmissionReceipt(declaredGroups, includedGroupNames = new Set()) {
|
|
120
|
-
const omittedFieldGroups = declaredGroups
|
|
121
|
-
.filter((group) => !includedGroupNames.has(group.name))
|
|
122
|
-
.map((group) => ({ ...group }));
|
|
123
|
-
return {
|
|
124
|
-
has_omissions: omittedFieldGroups.length > 0,
|
|
125
|
-
omitted_field_group_count: omittedFieldGroups.length,
|
|
126
|
-
omitted_field_groups: omittedFieldGroups,
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
/** Resolve the receipt declared for one mode-paired command result. */
|
|
130
|
-
export function resolveModePairedOutputOmissionReceipt(command, mode) {
|
|
131
|
-
const contract = PM_MODE_PAIRED_OUTPUT_PROJECTION_CONTRACTS.find((candidate) => candidate.command === command);
|
|
132
|
-
if (contract === undefined) {
|
|
133
|
-
throw new TypeError(`Unknown mode-paired output command: ${command}`);
|
|
134
|
-
}
|
|
135
|
-
if (mode === contract.complete_mode) {
|
|
136
|
-
return createOutputOmissionReceipt([]);
|
|
137
|
-
}
|
|
138
|
-
const groups = contract.omissions_by_mode[mode];
|
|
139
|
-
if (groups === undefined) {
|
|
140
|
-
throw new TypeError(`Unknown ${command} output mode: ${mode}`);
|
|
141
|
-
}
|
|
142
|
-
return createOutputOmissionReceipt(groups);
|
|
143
|
-
}
|
|
144
|
-
const CONTEXT_FIELD_GROUPS = [
|
|
145
|
-
{ name: "hierarchy", restore_with: "--depth standard" },
|
|
146
|
-
{ name: "activity", restore_with: "--depth standard" },
|
|
147
|
-
{ name: "progress", restore_with: "--depth standard" },
|
|
148
|
-
{ name: "blockers", restore_with: "--depth standard" },
|
|
149
|
-
{ name: "recently_created", restore_with: "--depth standard" },
|
|
150
|
-
{ name: "unparented", restore_with: "--depth standard" },
|
|
151
|
-
{ name: "files", restore_with: "--depth deep" },
|
|
152
|
-
{ name: "workload", restore_with: "--depth standard" },
|
|
153
|
-
{ name: "staleness", restore_with: "--depth deep" },
|
|
154
|
-
{ name: "tests", restore_with: "--depth deep" },
|
|
155
|
-
{ name: "workspace_memory", restore_with: "--depth deep" },
|
|
156
|
-
];
|
|
157
|
-
function isRecord(value) {
|
|
158
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
159
|
-
}
|
|
160
|
-
const READ_ROW_TOON_ENCODINGS = new Set([
|
|
161
|
-
undefined,
|
|
162
|
-
"tabular_when_uniform",
|
|
163
|
-
]);
|
|
164
|
-
const READ_ROW_KINDS = new Set(["collection", "none"]);
|
|
165
|
-
const READ_ROW_FIELD_MODES = new Set(["supported", "unsupported"]);
|
|
166
|
-
function isUniqueNonEmptyStringArray(value, allowEmpty) {
|
|
167
|
-
return (Array.isArray(value) &&
|
|
168
|
-
(allowEmpty || value.length > 0) &&
|
|
169
|
-
value.every((entry) => typeof entry === "string" && entry.length > 0) &&
|
|
170
|
-
new Set(value).size === value.length);
|
|
171
|
-
}
|
|
172
|
-
/** Return whether an unknown value is a structurally valid row declaration. */
|
|
173
|
-
export function isReadRowContract(value) {
|
|
174
|
-
return (isRecord(value) &&
|
|
175
|
-
typeof value.command === "string" &&
|
|
176
|
-
value.command.trim().length > 0 &&
|
|
177
|
-
READ_ROW_KINDS.has(value.row_kind) &&
|
|
178
|
-
isUniqueNonEmptyStringArray(value.row_keys, true) &&
|
|
179
|
-
(value.continuation_row_keys === undefined ||
|
|
180
|
-
isUniqueNonEmptyStringArray(value.continuation_row_keys, false)) &&
|
|
181
|
-
READ_ROW_FIELD_MODES.has(value.fields) &&
|
|
182
|
-
READ_ROW_TOON_ENCODINGS.has(value.toon_encoding) &&
|
|
183
|
-
(value.row_kind === "collection"
|
|
184
|
-
? value.row_keys.length > 0 &&
|
|
185
|
-
typeof value.jq_selector === "string" &&
|
|
186
|
-
value.jq_selector.trim().length > 0
|
|
187
|
-
: value.row_keys.length === 0 && value.jq_selector === undefined));
|
|
188
|
-
}
|
|
189
|
-
const GRAPH_ROW_KEYS = {
|
|
190
|
-
ancestors: ["ids"],
|
|
191
|
-
descendants: ["ids"],
|
|
192
|
-
predecessors: ["ids"],
|
|
193
|
-
successors: ["ids"],
|
|
194
|
-
paths: ["paths"],
|
|
195
|
-
impact: ["affected"],
|
|
196
|
-
audit: ["findings"],
|
|
197
|
-
communities: ["communities"],
|
|
198
|
-
redundancy: ["redundant"],
|
|
199
|
-
dominators: ["bottlenecks"],
|
|
200
|
-
slack: ["rows"],
|
|
201
|
-
centrality: ["rows"],
|
|
202
|
-
articulation: ["articulation_points", "bridges"],
|
|
203
|
-
plan: ["steps"],
|
|
204
|
-
};
|
|
205
|
-
const READ_RESULT_SENTINEL_KEYS = {
|
|
206
|
-
context: ["sections_included", "high_level", "low_level"],
|
|
207
|
-
get: ["item"],
|
|
208
|
-
list: ["items", "projection"],
|
|
209
|
-
next: [
|
|
210
|
-
"recommended",
|
|
211
|
-
"ready",
|
|
212
|
-
"decision_needed",
|
|
213
|
-
"gate_needed",
|
|
214
|
-
"containers",
|
|
215
|
-
"blocked",
|
|
216
|
-
"held_by_others",
|
|
217
|
-
],
|
|
218
|
-
search: ["items", "projection"],
|
|
219
|
-
activity: [
|
|
220
|
-
"activity_digest",
|
|
221
|
-
"compact_activity",
|
|
222
|
-
"provenance_activity",
|
|
223
|
-
"activity",
|
|
224
|
-
],
|
|
225
|
-
history: ["compact_history", "provenance_history", "history"],
|
|
226
|
-
deps: ["tree", "graph", "projection"],
|
|
227
|
-
health: ["checks"],
|
|
228
|
-
aggregate: ["groups"],
|
|
229
|
-
duplicates: ["clusters"],
|
|
230
|
-
stats: ["totals", "by_type", "by_status"],
|
|
231
|
-
comments: ["comments"],
|
|
232
|
-
notes: ["notes"],
|
|
233
|
-
learnings: ["learnings"],
|
|
234
|
-
files: ["files"],
|
|
235
|
-
docs: ["docs"],
|
|
236
|
-
validate: ["checks", "warnings"],
|
|
237
|
-
contracts: ["command_summaries", "commands", "selected"],
|
|
238
|
-
};
|
|
239
|
-
/** Resolve one command's canonical row collection declaration. */
|
|
240
|
-
export function resolveReadRowContract(command, result) {
|
|
241
|
-
const rawRootCommand = command.trim().toLowerCase().split(/\s+/u, 1)[0];
|
|
242
|
-
const rootCommand = rawRootCommand?.startsWith("list-")
|
|
243
|
-
? "list"
|
|
244
|
-
: rawRootCommand;
|
|
245
|
-
if (rootCommand === "graph") {
|
|
246
|
-
const subcommand = typeof result.subcommand === "string" ? result.subcommand : "";
|
|
247
|
-
if (subcommand.length === 0)
|
|
248
|
-
return undefined;
|
|
249
|
-
const rowKeys = GRAPH_ROW_KEYS[subcommand];
|
|
250
|
-
if (rowKeys === undefined)
|
|
251
|
-
return undefined;
|
|
252
|
-
const activeRowKeys = rowKeys.filter((key) => Array.isArray(result[key]) || isRecord(result[key]));
|
|
253
|
-
return {
|
|
254
|
-
command: "graph",
|
|
255
|
-
row_kind: activeRowKeys.length > 0 ? "collection" : "none",
|
|
256
|
-
row_keys: activeRowKeys,
|
|
257
|
-
fields: "unsupported",
|
|
258
|
-
...(activeRowKeys.length > 0
|
|
259
|
-
? { jq_selector: PM_READ_ROW_JQ_SELECTOR }
|
|
260
|
-
: {}),
|
|
261
|
-
toon_encoding: "tabular_when_uniform",
|
|
262
|
-
};
|
|
263
|
-
}
|
|
264
|
-
const declaration = PM_READ_ROW_CONTRACTS[rootCommand];
|
|
265
|
-
const sentinelKeys = READ_RESULT_SENTINEL_KEYS[rootCommand];
|
|
266
|
-
return declaration === undefined ||
|
|
267
|
-
sentinelKeys === undefined ||
|
|
268
|
-
!sentinelKeys.some((key) => Object.hasOwn(result, key))
|
|
269
|
-
? undefined
|
|
270
|
-
: (() => {
|
|
271
|
-
const rowKeys = declaration.row_keys.filter((key) => {
|
|
272
|
-
const value = key
|
|
273
|
-
.split(".")
|
|
274
|
-
.reduce((current, segment) => isRecord(current) ? current[segment] : undefined, result);
|
|
275
|
-
return Array.isArray(value) || isRecord(value);
|
|
276
|
-
});
|
|
277
|
-
return {
|
|
278
|
-
command: rootCommand,
|
|
279
|
-
row_kind: rowKeys.length > 0 ? "collection" : "none",
|
|
280
|
-
row_keys: rowKeys,
|
|
281
|
-
fields: declaration.fields,
|
|
282
|
-
...(rowKeys.length > 0
|
|
283
|
-
? { jq_selector: PM_READ_ROW_JQ_SELECTOR }
|
|
284
|
-
: {}),
|
|
285
|
-
toon_encoding: "tabular_when_uniform",
|
|
286
|
-
};
|
|
287
|
-
})();
|
|
288
|
-
}
|
|
289
|
-
function resolveDeclaredProjectionReceipt(result) {
|
|
290
|
-
if (!isRecord(result.projection))
|
|
291
|
-
return undefined;
|
|
292
|
-
if (typeof result.projection.mode !== "string" ||
|
|
293
|
-
result.projection.mode.trim().length === 0) {
|
|
294
|
-
return undefined;
|
|
295
|
-
}
|
|
296
|
-
const declared = result.projection.declared_field_groups;
|
|
297
|
-
const included = result.projection.included_field_groups;
|
|
298
|
-
if (!Array.isArray(declared) || !Array.isArray(included))
|
|
299
|
-
return undefined;
|
|
300
|
-
const declaredGroups = declared.filter((entry) => isRecord(entry) &&
|
|
301
|
-
typeof entry.name === "string" &&
|
|
302
|
-
entry.name.trim().length > 0 &&
|
|
303
|
-
typeof entry.restore_with === "string" &&
|
|
304
|
-
entry.restore_with.trim().length > 0);
|
|
305
|
-
const includedNames = included.filter((entry) => typeof entry === "string");
|
|
306
|
-
if (declaredGroups.length !== declared.length ||
|
|
307
|
-
includedNames.length !== included.length) {
|
|
308
|
-
return undefined;
|
|
309
|
-
}
|
|
310
|
-
const declaredNames = new Set(declaredGroups.map((group) => group.name));
|
|
311
|
-
if (declaredNames.size !== declaredGroups.length ||
|
|
312
|
-
new Set(includedNames).size !== includedNames.length ||
|
|
313
|
-
includedNames.some((name) => !declaredNames.has(name))) {
|
|
314
|
-
return undefined;
|
|
315
|
-
}
|
|
316
|
-
return createOutputOmissionReceipt(declaredGroups, new Set(includedNames));
|
|
317
|
-
}
|
|
318
|
-
function resolveContextReceipt(result) {
|
|
319
|
-
if (!Array.isArray(result.sections_included))
|
|
320
|
-
return undefined;
|
|
321
|
-
const receipt = createOutputOmissionReceipt(CONTEXT_FIELD_GROUPS, new Set(result.sections_included.filter((section) => typeof section === "string")));
|
|
322
|
-
if (isRecord(result.summary) && result.summary.scope === "matching_items") {
|
|
323
|
-
receipt.summary_scope = "matching_items";
|
|
324
|
-
}
|
|
325
|
-
return receipt;
|
|
326
|
-
}
|
|
327
|
-
function resolveGetReceipt(result) {
|
|
328
|
-
if (!isRecord(result.item))
|
|
329
|
-
return undefined;
|
|
330
|
-
const item = result.item;
|
|
331
|
-
const itemGroups = [
|
|
332
|
-
"comments",
|
|
333
|
-
"notes",
|
|
334
|
-
"learnings",
|
|
335
|
-
"files",
|
|
336
|
-
"tests",
|
|
337
|
-
"docs",
|
|
338
|
-
"reminders",
|
|
339
|
-
"events",
|
|
340
|
-
];
|
|
341
|
-
const resultGroups = [
|
|
342
|
-
"body",
|
|
343
|
-
"children",
|
|
344
|
-
"claim_state",
|
|
345
|
-
"linked",
|
|
346
|
-
"schedule",
|
|
347
|
-
];
|
|
348
|
-
const materialGroups = MATERIAL_FIELD_GROUPS_BY_RESULT.get(result);
|
|
349
|
-
const ownerFor = (name) => itemGroups.includes(name) || name === "body" ? item : result;
|
|
350
|
-
const groups = ["body", ...itemGroups, ...resultGroups.slice(1)]
|
|
351
|
-
.filter((name) => materialGroups === undefined ||
|
|
352
|
-
materialGroups.has(name) ||
|
|
353
|
-
Object.hasOwn(ownerFor(name), name))
|
|
354
|
-
.map((name) => ({
|
|
355
|
-
name,
|
|
356
|
-
restore_with: `--fields ${name}`,
|
|
357
|
-
}));
|
|
358
|
-
return createOutputOmissionReceipt(groups, new Set(groups.flatMap(({ name }) => !Object.hasOwn(ownerFor(name), name)
|
|
359
|
-
? []
|
|
360
|
-
: [name])));
|
|
361
|
-
}
|
|
362
|
-
function resolveListOrSearchReceipt(result) {
|
|
363
|
-
if (!isRecord(result.projection))
|
|
364
|
-
return undefined;
|
|
365
|
-
return createOutputOmissionReceipt([{ name: "full_item_fields", restore_with: "--full" }], new Set(result.projection.mode === "full" ? ["full_item_fields"] : []));
|
|
366
|
-
}
|
|
367
|
-
function resolveHealthReceipt(result) {
|
|
368
|
-
if (!isRecord(result.projection))
|
|
369
|
-
return createOutputOmissionReceipt([]);
|
|
370
|
-
if (typeof result.projection.mode !== "string")
|
|
371
|
-
return undefined;
|
|
372
|
-
return createOutputOmissionReceipt([{ name: "full_check_details", restore_with: "--full" }], new Set(result.projection.mode === "full" ? ["full_check_details"] : []));
|
|
373
|
-
}
|
|
374
|
-
function resolveContractsReceipt(result) {
|
|
375
|
-
if (!isRecord(result.selected) ||
|
|
376
|
-
typeof result.selected.summary !== "boolean") {
|
|
377
|
-
return undefined;
|
|
378
|
-
}
|
|
379
|
-
return createOutputOmissionReceipt([{ name: "full_contract_catalog", restore_with: "--full" }], new Set(result.selected.summary ? [] : ["full_contract_catalog"]));
|
|
380
|
-
}
|
|
381
|
-
/** Derive a receipt from one built-in read result without changing its rows. */
|
|
382
|
-
export function resolveOutputOmissionReceipt(command, result) {
|
|
383
|
-
const declaredReceipt = resolveDeclaredProjectionReceipt(result);
|
|
384
|
-
if (declaredReceipt !== undefined)
|
|
385
|
-
return declaredReceipt;
|
|
386
|
-
const [rootCommand] = command.split(/\s+/u, 1);
|
|
387
|
-
if (rootCommand === "context")
|
|
388
|
-
return resolveContextReceipt(result);
|
|
389
|
-
if (rootCommand === "get")
|
|
390
|
-
return resolveGetReceipt(result);
|
|
391
|
-
if (rootCommand === "list" || rootCommand.startsWith("list-")) {
|
|
392
|
-
return resolveListOrSearchReceipt(result);
|
|
393
|
-
}
|
|
394
|
-
if (rootCommand === "search") {
|
|
395
|
-
return (resolveListOrSearchReceipt(result) ??
|
|
396
|
-
createOutputOmissionReceipt([
|
|
397
|
-
{ name: "projection_metadata", restore_with: "--full" },
|
|
398
|
-
]));
|
|
399
|
-
}
|
|
400
|
-
if (rootCommand === "health")
|
|
401
|
-
return resolveHealthReceipt(result);
|
|
402
|
-
if (rootCommand === "contracts")
|
|
403
|
-
return resolveContractsReceipt(result);
|
|
404
|
-
return undefined;
|
|
405
|
-
}
|
|
406
|
-
/**
|
|
407
|
-
* Attach a receipt to built-in read results that already expose enough
|
|
408
|
-
* projection state to derive omissions without repeating command logic.
|
|
409
|
-
*/
|
|
410
|
-
export function attachOutputOmissionReceipt(command, result) {
|
|
411
|
-
if (command === undefined || !isRecord(result)) {
|
|
412
|
-
return result;
|
|
413
|
-
}
|
|
414
|
-
const receipt = resolveOutputOmissionReceipt(command, result);
|
|
415
|
-
const declaredRowContract = result.row_contract;
|
|
416
|
-
const rowContract = isReadRowContract(declaredRowContract)
|
|
417
|
-
? declaredRowContract
|
|
418
|
-
: resolveReadRowContract(command, result);
|
|
419
|
-
const disclosedResult = rowContract !== undefined
|
|
420
|
-
? { ...result, row_contract: rowContract }
|
|
421
|
-
: Object.hasOwn(result, "row_contract")
|
|
422
|
-
? Object.fromEntries(Object.entries(result).filter(([key]) => key !== "row_contract"))
|
|
423
|
-
: result;
|
|
424
|
-
if (isRecord(disclosedResult.omission_receipt))
|
|
425
|
-
return disclosedResult;
|
|
426
|
-
return receipt === undefined
|
|
427
|
-
? disclosedResult
|
|
428
|
-
: { ...disclosedResult, omission_receipt: receipt };
|
|
429
|
-
}
|
|
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]="6c87b004-3647-531a-9599-d37fd91c2807")}catch(e2){}})();import{EXIT_CODE}from"../core/shared/constants.js";import{PmCliError}from"../core/shared/errors.js";const MATERIAL_FIELD_GROUPS_BY_RESULT=new WeakMap;function registerOutputMaterialFieldGroups(result,fieldGroups){MATERIAL_FIELD_GROUPS_BY_RESULT.set(result,new Set(fieldGroups))}const PM_READ_ROW_JQ_SELECTOR='.row_contract.row_keys[] as $key | getpath($key | split(".")) | if type == "array" then .[] else if type == "object" then to_entries[] else empty end end';const PM_READ_ROW_CONTRACTS={context:{row_keys:["high_level","low_level"],fields:"supported"},get:{row_keys:["children"],fields:"supported"},list:{row_keys:["items"],fields:"supported"},next:{row_keys:["recommended","ready","decision_needed","gate_needed","containers","blocked","held_by_others"],fields:"unsupported"},search:{row_keys:["items"],fields:"supported"},activity:{row_keys:["activity_digest","compact_activity","provenance_activity","activity"],fields:"unsupported"},history:{row_keys:["compact_history","provenance_history","history"],fields:"unsupported"},deps:{row_keys:["graph.nodes","graph.edges","context.nodes","context.edges"],fields:"unsupported"},health:{row_keys:["checks"],fields:"unsupported"},aggregate:{row_keys:["groups"],fields:"unsupported"},duplicates:{row_keys:["clusters"],fields:"unsupported"},stats:{row_keys:["by_type","by_status"],fields:"unsupported"},comments:{row_keys:["comments"],fields:"unsupported"},notes:{row_keys:["notes"],fields:"unsupported"},learnings:{row_keys:["learnings"],fields:"unsupported"},files:{row_keys:["files"],fields:"unsupported"},docs:{row_keys:["docs"],fields:"unsupported"},validate:{row_keys:["checks","warnings"],fields:"unsupported"},contracts:{row_keys:["command_summaries","commands"],fields:"unsupported"}};const PM_MODE_PAIRED_OUTPUT_PROJECTION_CONTRACTS=[{command:"activity",complete_mode:"full",omissions_by_mode:{digest:[{name:"event_rows",restore_with:"--raw"}],compact:[{name:"provenance",restore_with:"--full"}],provenance:[{name:"patch_and_hashes",restore_with:"--full"}]}},{command:"history",complete_mode:"full",omissions_by_mode:{compact:[{name:"raw_history",restore_with:"--full"}],provenance:[{name:"patch_and_hashes",restore_with:"--full"}]}}];function assertProjectionModeChoice(compactRequested,fullRequested,compactFlag){if(compactRequested&&fullRequested){throw new PmCliError(`${compactFlag} cannot be combined with --full`,EXIT_CODE.USAGE)}}function createOutputOmissionReceipt(declaredGroups,includedGroupNames=new Set){const omittedFieldGroups=declaredGroups.filter(group=>!includedGroupNames.has(group.name)).map(group=>({...group}));return{has_omissions:omittedFieldGroups.length>0,omitted_field_group_count:omittedFieldGroups.length,omitted_field_groups:omittedFieldGroups}}function resolveModePairedOutputOmissionReceipt(command,mode){const contract=PM_MODE_PAIRED_OUTPUT_PROJECTION_CONTRACTS.find(candidate=>candidate.command===command);if(contract===void 0){throw new TypeError(`Unknown mode-paired output command: ${command}`)}if(mode===contract.complete_mode){return createOutputOmissionReceipt([])}const groups=contract.omissions_by_mode[mode];if(groups===void 0){throw new TypeError(`Unknown ${command} output mode: ${mode}`)}return createOutputOmissionReceipt(groups)}const CONTEXT_FIELD_GROUPS=[{name:"hierarchy",restore_with:"--depth standard"},{name:"activity",restore_with:"--depth standard"},{name:"progress",restore_with:"--depth standard"},{name:"blockers",restore_with:"--depth standard"},{name:"recently_created",restore_with:"--depth standard"},{name:"unparented",restore_with:"--depth standard"},{name:"files",restore_with:"--depth deep"},{name:"workload",restore_with:"--depth standard"},{name:"staleness",restore_with:"--depth deep"},{name:"tests",restore_with:"--depth deep"},{name:"workspace_memory",restore_with:"--depth deep"}];function isRecord(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)}const READ_ROW_TOON_ENCODINGS=new Set([void 0,"tabular_when_uniform"]);const READ_ROW_KINDS=new Set(["collection","none"]);const READ_ROW_FIELD_MODES=new Set(["supported","unsupported"]);function isUniqueNonEmptyStringArray(value,allowEmpty){return Array.isArray(value)&&(allowEmpty||value.length>0)&&value.every(entry=>typeof entry==="string"&&entry.length>0)&&new Set(value).size===value.length}function isReadRowContract(value){return isRecord(value)&&typeof value.command==="string"&&value.command.trim().length>0&&READ_ROW_KINDS.has(value.row_kind)&&isUniqueNonEmptyStringArray(value.row_keys,true)&&(value.continuation_row_keys===void 0||isUniqueNonEmptyStringArray(value.continuation_row_keys,false))&&READ_ROW_FIELD_MODES.has(value.fields)&&READ_ROW_TOON_ENCODINGS.has(value.toon_encoding)&&(value.row_kind==="collection"?value.row_keys.length>0&&typeof value.jq_selector==="string"&&value.jq_selector.trim().length>0:value.row_keys.length===0&&value.jq_selector===void 0)}const GRAPH_ROW_KEYS={ancestors:["ids"],descendants:["ids"],predecessors:["ids"],successors:["ids"],paths:["paths"],impact:["affected"],audit:["findings"],communities:["communities"],redundancy:["redundant"],dominators:["bottlenecks"],slack:["rows"],centrality:["rows"],articulation:["articulation_points","bridges"],plan:["steps"]};const READ_RESULT_SENTINEL_KEYS={context:["sections_included","high_level","low_level"],get:["item"],list:["items","projection"],next:["recommended","ready","decision_needed","gate_needed","containers","blocked","held_by_others"],search:["items","projection"],activity:["activity_digest","compact_activity","provenance_activity","activity"],history:["compact_history","provenance_history","history"],deps:["tree","graph","projection"],health:["checks"],aggregate:["groups"],duplicates:["clusters"],stats:["totals","by_type","by_status"],comments:["comments"],notes:["notes"],learnings:["learnings"],files:["files"],docs:["docs"],validate:["checks","warnings"],contracts:["command_summaries","commands","selected"]};function resolveReadRowContract(command,result){const rawRootCommand=command.trim().toLowerCase().split(/\s+/u,1)[0];const rootCommand=rawRootCommand?.startsWith("list-")?"list":rawRootCommand;if(rootCommand==="graph"){const subcommand=typeof result.subcommand==="string"?result.subcommand:"";if(subcommand.length===0)return void 0;const rowKeys=GRAPH_ROW_KEYS[subcommand];if(rowKeys===void 0)return void 0;const activeRowKeys=rowKeys.filter(key=>Array.isArray(result[key])||isRecord(result[key]));return{command:"graph",row_kind:activeRowKeys.length>0?"collection":"none",row_keys:activeRowKeys,fields:"unsupported",...activeRowKeys.length>0?{jq_selector:PM_READ_ROW_JQ_SELECTOR}:{},toon_encoding:"tabular_when_uniform"}}const declaration=PM_READ_ROW_CONTRACTS[rootCommand];const sentinelKeys=READ_RESULT_SENTINEL_KEYS[rootCommand];return declaration===void 0||sentinelKeys===void 0||!sentinelKeys.some(key=>Object.hasOwn(result,key))?void 0:(()=>{const rowKeys=declaration.row_keys.filter(key=>{const value=key.split(".").reduce((current,segment)=>isRecord(current)?current[segment]:void 0,result);return Array.isArray(value)||isRecord(value)});return{command:rootCommand,row_kind:rowKeys.length>0?"collection":"none",row_keys:rowKeys,fields:declaration.fields,...rowKeys.length>0?{jq_selector:PM_READ_ROW_JQ_SELECTOR}:{},toon_encoding:"tabular_when_uniform"}})()}function resolveDeclaredProjectionReceipt(result){if(!isRecord(result.projection))return void 0;if(typeof result.projection.mode!=="string"||result.projection.mode.trim().length===0){return void 0}const declared=result.projection.declared_field_groups;const included=result.projection.included_field_groups;if(!Array.isArray(declared)||!Array.isArray(included))return void 0;const declaredGroups=declared.filter(entry=>isRecord(entry)&&typeof entry.name==="string"&&entry.name.trim().length>0&&typeof entry.restore_with==="string"&&entry.restore_with.trim().length>0);const includedNames=included.filter(entry=>typeof entry==="string");if(declaredGroups.length!==declared.length||includedNames.length!==included.length){return void 0}const declaredNames=new Set(declaredGroups.map(group=>group.name));if(declaredNames.size!==declaredGroups.length||new Set(includedNames).size!==includedNames.length||includedNames.some(name=>!declaredNames.has(name))){return void 0}return createOutputOmissionReceipt(declaredGroups,new Set(includedNames))}function resolveContextReceipt(result){if(!Array.isArray(result.sections_included))return void 0;const receipt=createOutputOmissionReceipt(CONTEXT_FIELD_GROUPS,new Set(result.sections_included.filter(section=>typeof section==="string")));if(isRecord(result.summary)&&result.summary.scope==="matching_items"){receipt.summary_scope="matching_items"}return receipt}function resolveGetReceipt(result){if(!isRecord(result.item))return void 0;const item=result.item;const itemGroups=["comments","notes","learnings","files","tests","docs","reminders","events"];const resultGroups=["body","children","claim_state","linked","schedule"];const materialGroups=MATERIAL_FIELD_GROUPS_BY_RESULT.get(result);const ownerFor=name=>itemGroups.includes(name)||name==="body"?item:result;const groups=["body",...itemGroups,...resultGroups.slice(1)].filter(name=>materialGroups===void 0||materialGroups.has(name)||Object.hasOwn(ownerFor(name),name)).map(name=>({name,restore_with:`--fields ${name}`}));return createOutputOmissionReceipt(groups,new Set(groups.flatMap(({name})=>!Object.hasOwn(ownerFor(name),name)?[]:[name])))}function resolveListOrSearchReceipt(result){if(!isRecord(result.projection))return void 0;return createOutputOmissionReceipt([{name:"full_item_fields",restore_with:"--full"}],new Set(result.projection.mode==="full"?["full_item_fields"]:[]))}function resolveHealthReceipt(result){if(!isRecord(result.projection))return createOutputOmissionReceipt([]);if(typeof result.projection.mode!=="string")return void 0;return createOutputOmissionReceipt([{name:"full_check_details",restore_with:"--full"}],new Set(result.projection.mode==="full"?["full_check_details"]:[]))}function resolveContractsReceipt(result){if(!isRecord(result.selected)||typeof result.selected.summary!=="boolean"){return void 0}return createOutputOmissionReceipt([{name:"full_contract_catalog",restore_with:"--full"}],new Set(result.selected.summary?[]:["full_contract_catalog"]))}function resolveOutputOmissionReceipt(command,result){const declaredReceipt=resolveDeclaredProjectionReceipt(result);if(declaredReceipt!==void 0)return declaredReceipt;const[rootCommand]=command.split(/\s+/u,1);if(rootCommand==="context")return resolveContextReceipt(result);if(rootCommand==="get")return resolveGetReceipt(result);if(rootCommand==="list"||rootCommand.startsWith("list-")){return resolveListOrSearchReceipt(result)}if(rootCommand==="search"){return resolveListOrSearchReceipt(result)??createOutputOmissionReceipt([{name:"projection_metadata",restore_with:"--full"}])}if(rootCommand==="health")return resolveHealthReceipt(result);if(rootCommand==="contracts")return resolveContractsReceipt(result);return void 0}function attachOutputOmissionReceipt(command,result){if(command===void 0||!isRecord(result)){return result}const receipt=resolveOutputOmissionReceipt(command,result);const declaredRowContract=result.row_contract;const rowContract=isReadRowContract(declaredRowContract)?declaredRowContract:resolveReadRowContract(command,result);const disclosedResult=rowContract!==void 0?{...result,row_contract:rowContract}:Object.hasOwn(result,"row_contract")?Object.fromEntries(Object.entries(result).filter(([key])=>key!=="row_contract")):result;if(isRecord(disclosedResult.omission_receipt))return disclosedResult;return receipt===void 0?disclosedResult:{...disclosedResult,omission_receipt:receipt}}export{PM_MODE_PAIRED_OUTPUT_PROJECTION_CONTRACTS,PM_READ_ROW_CONTRACTS,PM_READ_ROW_JQ_SELECTOR,assertProjectionModeChoice,attachOutputOmissionReceipt,createOutputOmissionReceipt,isReadRowContract,registerOutputMaterialFieldGroups,resolveModePairedOutputOmissionReceipt,resolveOutputOmissionReceipt,resolveReadRowContract};
|
|
430
2
|
//# sourceMappingURL=output-projection.js.map
|
|
431
|
-
//# debugId=db6180ed-0b18-5bf8-bcc1-24171e2dfdc4
|
|
@@ -1,141 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* @module sdk/output-token-accounting
|
|
3
|
-
*
|
|
4
|
-
* Provides transport-neutral, opt-in attribution for the bytes emitted by a pm
|
|
5
|
-
* command. The receipt deliberately excludes itself from the accounted total,
|
|
6
|
-
* while reporting its own independently measured overhead.
|
|
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]="02baf966-46eb-5e19-b7eb-2f9fe05bb263")}catch(e){}}();
|
|
10
|
-
import { estimatePmOutputTokens } from "./cli-contracts/agent-output-contracts.js";
|
|
11
|
-
const SECTION_ORDER = [
|
|
12
|
-
"result_rows",
|
|
13
|
-
"envelope",
|
|
14
|
-
"diagnostics",
|
|
15
|
-
"hints",
|
|
16
|
-
];
|
|
17
|
-
const ROW_KEYS = /^(?:items|results|rows|ready|blocked|recommended|decision_needed|children|dependencies|events|matches|commands|tools)$/u;
|
|
18
|
-
const DIAGNOSTIC_KEYS = /^(?:diagnostics|errors?|warnings?|findings|violations|failures?)$/u;
|
|
19
|
-
const HINT_KEYS = /^(?:hints?|suggestions?|next_steps?|recovery|remediation|examples?)$/u;
|
|
20
|
-
const MAX_RECEIPT_STABILIZATION_PASSES = 8;
|
|
21
|
-
function utf8Bytes(value) {
|
|
22
|
-
return Buffer.byteLength(value, "utf8");
|
|
23
|
-
}
|
|
24
|
-
function canonicalJsonBytes(value) {
|
|
25
|
-
return utf8Bytes(JSON.stringify(value) ?? "null");
|
|
26
|
-
}
|
|
27
|
-
function sectionForEntry(key, value) {
|
|
28
|
-
if (DIAGNOSTIC_KEYS.test(key))
|
|
29
|
-
return "diagnostics";
|
|
30
|
-
if (HINT_KEYS.test(key))
|
|
31
|
-
return "hints";
|
|
32
|
-
if (ROW_KEYS.test(key) || Array.isArray(value))
|
|
33
|
-
return "result_rows";
|
|
34
|
-
return "envelope";
|
|
35
|
-
}
|
|
36
|
-
function collectSectionWeights(result) {
|
|
37
|
-
const weights = {
|
|
38
|
-
result_rows: 0,
|
|
39
|
-
envelope: 0,
|
|
40
|
-
diagnostics: 0,
|
|
41
|
-
hints: 0,
|
|
42
|
-
};
|
|
43
|
-
if (typeof result !== "object" || result === null || Array.isArray(result)) {
|
|
44
|
-
weights[Array.isArray(result) ? "result_rows" : "envelope"] =
|
|
45
|
-
canonicalJsonBytes(result);
|
|
46
|
-
return weights;
|
|
47
|
-
}
|
|
48
|
-
for (const [key, value] of Object.entries(result)) {
|
|
49
|
-
weights[sectionForEntry(key, value)] += canonicalJsonBytes({
|
|
50
|
-
[key]: value,
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
if (Object.values(weights).every((weight) => weight === 0)) {
|
|
54
|
-
weights.envelope = 1;
|
|
55
|
-
}
|
|
56
|
-
return weights;
|
|
57
|
-
}
|
|
58
|
-
function allocateExactBytes(totalBytes, weights) {
|
|
59
|
-
const weightTotal = SECTION_ORDER.reduce((total, section) => total + weights[section], 0);
|
|
60
|
-
const exact = SECTION_ORDER.map((section) => ({
|
|
61
|
-
section,
|
|
62
|
-
value: (totalBytes * weights[section]) / weightTotal,
|
|
63
|
-
}));
|
|
64
|
-
const allocated = {
|
|
65
|
-
result_rows: 0,
|
|
66
|
-
envelope: 0,
|
|
67
|
-
diagnostics: 0,
|
|
68
|
-
hints: 0,
|
|
69
|
-
};
|
|
70
|
-
for (const entry of exact)
|
|
71
|
-
allocated[entry.section] = Math.floor(entry.value);
|
|
72
|
-
let remainder = totalBytes -
|
|
73
|
-
SECTION_ORDER.reduce((total, section) => total + allocated[section], 0);
|
|
74
|
-
for (const entry of [...exact].sort((left, right) => right.value -
|
|
75
|
-
Math.floor(right.value) -
|
|
76
|
-
(left.value - Math.floor(left.value)) ||
|
|
77
|
-
SECTION_ORDER.indexOf(left.section) -
|
|
78
|
-
SECTION_ORDER.indexOf(right.section))) {
|
|
79
|
-
if (remainder === 0)
|
|
80
|
-
break;
|
|
81
|
-
allocated[entry.section] += 1;
|
|
82
|
-
remainder -= 1;
|
|
83
|
-
}
|
|
84
|
-
return allocated;
|
|
85
|
-
}
|
|
86
|
-
function attachReceipt(result, receipt) {
|
|
87
|
-
if (typeof result === "object" && result !== null && !Array.isArray(result)) {
|
|
88
|
-
return {
|
|
89
|
-
...result,
|
|
90
|
-
token_accounting: receipt,
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
return {
|
|
94
|
-
result,
|
|
95
|
-
token_accounting: receipt,
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Attach a deterministic receipt for exactly the bytes produced by
|
|
100
|
-
* {@link render} before accounting. The renderer is supplied by the transport,
|
|
101
|
-
* so CLI TOON/JSON, MCP JSON, and package-defined hosts all measure their real
|
|
102
|
-
* representation rather than a guessed intermediate shape.
|
|
103
|
-
*/
|
|
104
|
-
export function attachOutputTokenAccounting(result, render) {
|
|
105
|
-
const originalBytes = utf8Bytes(render(result));
|
|
106
|
-
const allocatedBytes = allocateExactBytes(originalBytes, collectSectionWeights(result));
|
|
107
|
-
const sections = Object.fromEntries(SECTION_ORDER.map((section) => [
|
|
108
|
-
section,
|
|
109
|
-
{
|
|
110
|
-
bytes: allocatedBytes[section],
|
|
111
|
-
estimated_tokens: estimatePmOutputTokens(allocatedBytes[section]),
|
|
112
|
-
},
|
|
113
|
-
]));
|
|
114
|
-
let receipt = {
|
|
115
|
-
version: 1,
|
|
116
|
-
measurement_scope: "output_before_token_accounting",
|
|
117
|
-
estimator: "ceil(utf8_bytes / 4)",
|
|
118
|
-
total_bytes: originalBytes,
|
|
119
|
-
total_estimated_tokens: estimatePmOutputTokens(originalBytes),
|
|
120
|
-
sections,
|
|
121
|
-
accounting_receipt_bytes: 0,
|
|
122
|
-
accounting_receipt_estimated_tokens: 0,
|
|
123
|
-
excluded_fields: ["token_accounting"],
|
|
124
|
-
section_allocation: "proportional_canonical_json",
|
|
125
|
-
};
|
|
126
|
-
let accounted = attachReceipt(result, receipt);
|
|
127
|
-
for (let pass = 0; pass < MAX_RECEIPT_STABILIZATION_PASSES; pass += 1) {
|
|
128
|
-
const measuredReceiptBytes = utf8Bytes(render(accounted)) - originalBytes;
|
|
129
|
-
if (measuredReceiptBytes === receipt.accounting_receipt_bytes)
|
|
130
|
-
return accounted;
|
|
131
|
-
receipt = {
|
|
132
|
-
...receipt,
|
|
133
|
-
accounting_receipt_bytes: measuredReceiptBytes,
|
|
134
|
-
accounting_receipt_estimated_tokens: estimatePmOutputTokens(measuredReceiptBytes),
|
|
135
|
-
};
|
|
136
|
-
accounted = attachReceipt(result, receipt);
|
|
137
|
-
}
|
|
138
|
-
return accounted;
|
|
139
|
-
}
|
|
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]="83c82348-64f8-5f10-9396-b03add0b7932")}catch(e2){}})();import{estimatePmOutputTokens}from"./cli-contracts/agent-output-contracts.js";const SECTION_ORDER=["result_rows","envelope","diagnostics","hints"];const ROW_KEYS=/^(?:items|results|rows|ready|blocked|recommended|decision_needed|children|dependencies|events|matches|commands|tools)$/u;const DIAGNOSTIC_KEYS=/^(?:diagnostics|errors?|warnings?|findings|violations|failures?)$/u;const HINT_KEYS=/^(?:hints?|suggestions?|next_steps?|recovery|remediation|examples?)$/u;const MAX_RECEIPT_STABILIZATION_PASSES=8;function utf8Bytes(value){return Buffer.byteLength(value,"utf8")}function canonicalJsonBytes(value){return utf8Bytes(JSON.stringify(value)??"null")}function sectionForEntry(key,value){if(DIAGNOSTIC_KEYS.test(key))return"diagnostics";if(HINT_KEYS.test(key))return"hints";if(ROW_KEYS.test(key)||Array.isArray(value))return"result_rows";return"envelope"}function collectSectionWeights(result){const weights={result_rows:0,envelope:0,diagnostics:0,hints:0};if(typeof result!=="object"||result===null||Array.isArray(result)){weights[Array.isArray(result)?"result_rows":"envelope"]=canonicalJsonBytes(result);return weights}for(const[key,value]of Object.entries(result)){weights[sectionForEntry(key,value)]+=canonicalJsonBytes({[key]:value})}if(Object.values(weights).every(weight=>weight===0)){weights.envelope=1}return weights}function allocateExactBytes(totalBytes,weights){const weightTotal=SECTION_ORDER.reduce((total,section)=>total+weights[section],0);const exact=SECTION_ORDER.map(section=>({section,value:totalBytes*weights[section]/weightTotal}));const allocated={result_rows:0,envelope:0,diagnostics:0,hints:0};for(const entry of exact)allocated[entry.section]=Math.floor(entry.value);let remainder=totalBytes-SECTION_ORDER.reduce((total,section)=>total+allocated[section],0);for(const entry of[...exact].sort((left,right)=>right.value-Math.floor(right.value)-(left.value-Math.floor(left.value))||SECTION_ORDER.indexOf(left.section)-SECTION_ORDER.indexOf(right.section))){if(remainder===0)break;allocated[entry.section]+=1;remainder-=1}return allocated}function attachReceipt(result,receipt){if(typeof result==="object"&&result!==null&&!Array.isArray(result)){return{...result,token_accounting:receipt}}return{result,token_accounting:receipt}}function attachOutputTokenAccounting(result,render){const originalBytes=utf8Bytes(render(result));const allocatedBytes=allocateExactBytes(originalBytes,collectSectionWeights(result));const sections=Object.fromEntries(SECTION_ORDER.map(section=>[section,{bytes:allocatedBytes[section],estimated_tokens:estimatePmOutputTokens(allocatedBytes[section])}]));let receipt={version:1,measurement_scope:"output_before_token_accounting",estimator:"ceil(utf8_bytes / 4)",total_bytes:originalBytes,total_estimated_tokens:estimatePmOutputTokens(originalBytes),sections,accounting_receipt_bytes:0,accounting_receipt_estimated_tokens:0,excluded_fields:["token_accounting"],section_allocation:"proportional_canonical_json"};let accounted=attachReceipt(result,receipt);for(let pass=0;pass<MAX_RECEIPT_STABILIZATION_PASSES;pass+=1){const measuredReceiptBytes=utf8Bytes(render(accounted))-originalBytes;if(measuredReceiptBytes===receipt.accounting_receipt_bytes)return accounted;receipt={...receipt,accounting_receipt_bytes:measuredReceiptBytes,accounting_receipt_estimated_tokens:estimatePmOutputTokens(measuredReceiptBytes)};accounted=attachReceipt(result,receipt)}return accounted}export{attachOutputTokenAccounting};
|
|
140
2
|
//# sourceMappingURL=output-token-accounting.js.map
|
|
141
|
-
//# debugId=02baf966-46eb-5e19-b7eb-2f9fe05bb263
|