@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,495 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
import { attachReadOutputContracts } from "../../sdk/context-intent-contracts.js";
|
|
13
|
-
import { attachOutputTokenAccounting } from "../../sdk/output-token-accounting.js";
|
|
14
|
-
import { propagateContextUsageServingReceipt } from "../../sdk/context-usage.js";
|
|
15
|
-
import { isReadOutputBudgetExceeded, resolveReadOutputEncoding, } from "../../sdk/read-output-contracts.js";
|
|
16
|
-
import { encode as encodeToon } from "@toon-format/toon";
|
|
17
|
-
const DECLARED_PROCESS_EXIT_CODES = new Set(Object.values(EXIT_CODE));
|
|
18
|
-
const NATIVE_OUTPUT_MARKER = "__pm_native_output";
|
|
19
|
-
let streamErrorHandlersInstalled = false;
|
|
20
|
-
function isPlainObject(value) {
|
|
21
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
22
|
-
}
|
|
23
|
-
function setActiveCommandResultOmitted(source) {
|
|
24
|
-
const omitted = { read_output: { result_omitted: true } };
|
|
25
|
-
propagateContextUsageServingReceipt(source, omitted);
|
|
26
|
-
setActiveCommandResult(omitted);
|
|
27
|
-
}
|
|
28
|
-
function setActiveCommandDeliveryResult(result, receiptSource, structuredDeliveryPreserved) {
|
|
29
|
-
if (structuredDeliveryPreserved) {
|
|
30
|
-
setActiveCommandResult(result);
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
setActiveCommandResultOmitted(receiptSource);
|
|
34
|
-
}
|
|
35
|
-
function shouldUseNativeOutput(result) {
|
|
36
|
-
return isPlainObject(result) && result[NATIVE_OUTPUT_MARKER] === true;
|
|
37
|
-
}
|
|
38
|
-
function stripNativeOutputMarker(result) {
|
|
39
|
-
if (!isPlainObject(result) || result[NATIVE_OUTPUT_MARKER] !== true) {
|
|
40
|
-
return result;
|
|
41
|
-
}
|
|
42
|
-
const { [NATIVE_OUTPUT_MARKER]: _marker, ...rest } = result;
|
|
43
|
-
return rest;
|
|
44
|
-
}
|
|
45
|
-
function isBrokenPipeError(error) {
|
|
46
|
-
return (typeof error === "object" &&
|
|
47
|
-
error !== null &&
|
|
48
|
-
error.code === "EPIPE");
|
|
49
|
-
}
|
|
50
|
-
function markStdoutBrokenPipeExitCode() {
|
|
51
|
-
if (process.exitCode === undefined ||
|
|
52
|
-
process.exitCode === EXIT_CODE.SUCCESS) {
|
|
53
|
-
process.exitCode = EXIT_CODE.SUCCESS;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
function markStderrBrokenPipeExitCode() {
|
|
57
|
-
if (process.exitCode === undefined ||
|
|
58
|
-
process.exitCode === EXIT_CODE.SUCCESS) {
|
|
59
|
-
process.exitCode = EXIT_CODE.GENERIC_FAILURE;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
function markBrokenPipeExitCode(target) {
|
|
63
|
-
if (target === "stdout") {
|
|
64
|
-
markStdoutBrokenPipeExitCode();
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
markStderrBrokenPipeExitCode();
|
|
68
|
-
}
|
|
69
|
-
function handleUnhandledStreamError(error) {
|
|
70
|
-
const unhandled = error instanceof Error ? error : new Error(String(error));
|
|
71
|
-
setImmediate(() => {
|
|
72
|
-
throw unhandled;
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
function installStreamErrorHandlers() {
|
|
76
|
-
if (streamErrorHandlersInstalled) {
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
streamErrorHandlersInstalled = true;
|
|
80
|
-
process.stdout.on("error", (error) => {
|
|
81
|
-
if (isBrokenPipeError(error)) {
|
|
82
|
-
markBrokenPipeExitCode("stdout");
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
handleUnhandledStreamError(error);
|
|
86
|
-
});
|
|
87
|
-
process.stderr.on("error", (error) => {
|
|
88
|
-
if (isBrokenPipeError(error)) {
|
|
89
|
-
markBrokenPipeExitCode("stderr");
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
handleUnhandledStreamError(error);
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
function writeToStream(target, text) {
|
|
96
|
-
installStreamErrorHandlers();
|
|
97
|
-
try {
|
|
98
|
-
if (target === "stdout") {
|
|
99
|
-
process.stdout.write(text);
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
process.stderr.write(text);
|
|
103
|
-
}
|
|
104
|
-
return true;
|
|
105
|
-
}
|
|
106
|
-
catch (error) {
|
|
107
|
-
if (isBrokenPipeError(error)) {
|
|
108
|
-
markBrokenPipeExitCode(target);
|
|
109
|
-
return false;
|
|
110
|
-
}
|
|
111
|
-
throw error;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
/** Implements write stdout for the public runtime surface of this module. */
|
|
115
|
-
export function writeStdout(text) {
|
|
116
|
-
return writeToStream("stdout", text);
|
|
117
|
-
}
|
|
118
|
-
/** Implements write stderr for the public runtime surface of this module. */
|
|
119
|
-
export function writeStderr(text) {
|
|
120
|
-
return writeToStream("stderr", text);
|
|
121
|
-
}
|
|
122
|
-
function renderScalar(value) {
|
|
123
|
-
if (typeof value === "string")
|
|
124
|
-
return JSON.stringify(value);
|
|
125
|
-
if (typeof value === "number" || typeof value === "boolean")
|
|
126
|
-
return String(value);
|
|
127
|
-
if (value === null)
|
|
128
|
-
return "null";
|
|
129
|
-
return JSON.stringify(value);
|
|
130
|
-
}
|
|
131
|
-
function isToonPrimitive(value) {
|
|
132
|
-
return (value === null ||
|
|
133
|
-
typeof value === "string" ||
|
|
134
|
-
typeof value === "number" ||
|
|
135
|
-
typeof value === "boolean");
|
|
136
|
-
}
|
|
137
|
-
function tabularObjectArray(value) {
|
|
138
|
-
if (value.length === 0 || !value.every(isPlainObject))
|
|
139
|
-
return false;
|
|
140
|
-
const keys = Object.keys(value[0]);
|
|
141
|
-
return (keys.length > 0 &&
|
|
142
|
-
value.every((entry) => Object.keys(entry).length === keys.length &&
|
|
143
|
-
keys.every((key) => Object.hasOwn(entry, key) && isToonPrimitive(entry[key]))));
|
|
144
|
-
}
|
|
145
|
-
function indentToon(encoded, depth) {
|
|
146
|
-
const indent = " ".repeat(depth);
|
|
147
|
-
return encoded
|
|
148
|
-
.split("\n")
|
|
149
|
-
.map((line) => `${indent}${line}`)
|
|
150
|
-
.join("\n");
|
|
151
|
-
}
|
|
152
|
-
/** Render one object field while preserving nested and tabular TOON structure. */
|
|
153
|
-
function renderToonObjectEntry(key, entry, depth) {
|
|
154
|
-
const indent = " ".repeat(depth);
|
|
155
|
-
if (!isPlainObject(entry) && !Array.isArray(entry)) {
|
|
156
|
-
return `${indent}${key}: ${renderScalar(entry)}`;
|
|
157
|
-
}
|
|
158
|
-
if (Array.isArray(entry) && entry.length === 0) {
|
|
159
|
-
return `${indent}${key}: []`;
|
|
160
|
-
}
|
|
161
|
-
if (Array.isArray(entry) && tabularObjectArray(entry)) {
|
|
162
|
-
return indentToon(encodeToon({ [key]: entry }), depth);
|
|
163
|
-
}
|
|
164
|
-
if (isPlainObject(entry) && Object.keys(entry).length === 0) {
|
|
165
|
-
return `${indent}${key}: {}`;
|
|
166
|
-
}
|
|
167
|
-
return `${indent}${key}:\n${renderToonValue(entry, depth + 1)}`;
|
|
168
|
-
}
|
|
169
|
-
function compactToonValue(value) {
|
|
170
|
-
if (value === null || value === undefined) {
|
|
171
|
-
return undefined;
|
|
172
|
-
}
|
|
173
|
-
if (Array.isArray(value)) {
|
|
174
|
-
const compactedEntries = value
|
|
175
|
-
.map((entry) => compactToonValue(entry))
|
|
176
|
-
.filter((entry) => entry !== undefined);
|
|
177
|
-
return compactedEntries.length > 0 ? compactedEntries : undefined;
|
|
178
|
-
}
|
|
179
|
-
if (isPlainObject(value)) {
|
|
180
|
-
const compacted = {};
|
|
181
|
-
for (const [key, entry] of Object.entries(value)) {
|
|
182
|
-
if (key === "omitted_field_groups" &&
|
|
183
|
-
Array.isArray(entry) &&
|
|
184
|
-
entry.length === 0) {
|
|
185
|
-
compacted[key] = [];
|
|
186
|
-
continue;
|
|
187
|
-
}
|
|
188
|
-
const compactedEntry = compactToonValue(entry);
|
|
189
|
-
if (compactedEntry !== undefined) {
|
|
190
|
-
compacted[key] = compactedEntry;
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
return Object.keys(compacted).length > 0 ? compacted : undefined;
|
|
194
|
-
}
|
|
195
|
-
return value;
|
|
196
|
-
}
|
|
197
|
-
function renderToonValue(value, depth) {
|
|
198
|
-
const indent = " ".repeat(depth);
|
|
199
|
-
if (Array.isArray(value)) {
|
|
200
|
-
if (value.length === 0)
|
|
201
|
-
return "[]";
|
|
202
|
-
if (tabularObjectArray(value)) {
|
|
203
|
-
return indentToon(encodeToon(value), depth);
|
|
204
|
-
}
|
|
205
|
-
return value
|
|
206
|
-
.map((entry) => {
|
|
207
|
-
if (!isPlainObject(entry) && !Array.isArray(entry)) {
|
|
208
|
-
return `${indent}- ${renderScalar(entry)}`;
|
|
209
|
-
}
|
|
210
|
-
const rendered = renderToonValue(entry, depth + 1);
|
|
211
|
-
const lines = rendered.split("\n");
|
|
212
|
-
const [firstLine, ...rest] = lines;
|
|
213
|
-
if (rest.length === 0) {
|
|
214
|
-
return `${indent}- ${firstLine.trimStart()}`;
|
|
215
|
-
}
|
|
216
|
-
return `${indent}- ${firstLine.trimStart()}\n${rest.join("\n")}`;
|
|
217
|
-
})
|
|
218
|
-
.join("\n");
|
|
219
|
-
}
|
|
220
|
-
if (isPlainObject(value)) {
|
|
221
|
-
const entries = Object.entries(value);
|
|
222
|
-
if (entries.length === 0)
|
|
223
|
-
return "{}";
|
|
224
|
-
return entries
|
|
225
|
-
.map(([key, entry]) => renderToonObjectEntry(key, entry, depth))
|
|
226
|
-
.join("\n");
|
|
227
|
-
}
|
|
228
|
-
return `${indent}${renderScalar(value)}`;
|
|
229
|
-
}
|
|
230
|
-
function renderDefaultMarkdownResult(value) {
|
|
231
|
-
if (!isPlainObject(value) || value.output_default !== "markdown") {
|
|
232
|
-
return null;
|
|
233
|
-
}
|
|
234
|
-
if (typeof value.view !== "string" ||
|
|
235
|
-
!Array.isArray(value.events) ||
|
|
236
|
-
!Array.isArray(value.days)) {
|
|
237
|
-
return null;
|
|
238
|
-
}
|
|
239
|
-
const lines = [`# pm calendar (${value.view})`, ""];
|
|
240
|
-
const summary = isPlainObject(value.summary) ? value.summary : {};
|
|
241
|
-
lines.push(`- events: ${String(summary.events ?? 0)}`);
|
|
242
|
-
lines.push("");
|
|
243
|
-
if (value.events.length === 0) {
|
|
244
|
-
lines.push("No calendar events matched the selected filters.");
|
|
245
|
-
return `${lines.join("\n")}\n`;
|
|
246
|
-
}
|
|
247
|
-
for (const event of value.events) {
|
|
248
|
-
if (!isPlainObject(event)) {
|
|
249
|
-
continue;
|
|
250
|
-
}
|
|
251
|
-
const kind = typeof event.kind === "string" ? event.kind : "event";
|
|
252
|
-
const title = typeof event.item_title === "string" ? event.item_title : "";
|
|
253
|
-
const itemId = typeof event.item_id === "string" ? event.item_id : "";
|
|
254
|
-
const reminderText = typeof event.reminder_text === "string" && event.reminder_text.length > 0
|
|
255
|
-
? ` ${event.reminder_text}`
|
|
256
|
-
: "";
|
|
257
|
-
lines.push(`- [${kind}] ${itemId} ${title}${reminderText}`.trim());
|
|
258
|
-
}
|
|
259
|
-
return `${lines.join("\n")}\n`;
|
|
260
|
-
}
|
|
261
|
-
function resolveOutputFormat(options) {
|
|
262
|
-
return options.json === true ||
|
|
263
|
-
(options.json === undefined && options.defaultOutputFormat === "json")
|
|
264
|
-
? "json"
|
|
265
|
-
: "toon";
|
|
266
|
-
}
|
|
267
|
-
const LEAN_READ_ENVELOPE_ECHO_KEYS = new Set([
|
|
268
|
-
"filters",
|
|
269
|
-
"now",
|
|
270
|
-
"projection",
|
|
271
|
-
"sorting",
|
|
272
|
-
]);
|
|
273
|
-
function projectLeanJsonValue(value) {
|
|
274
|
-
const compacted = compactToonValue(value);
|
|
275
|
-
if (!isPlainObject(compacted) || !Array.isArray(compacted.items)) {
|
|
276
|
-
return compacted ?? null;
|
|
277
|
-
}
|
|
278
|
-
const projected = Object.fromEntries(Object.entries(compacted).filter(([key]) => !LEAN_READ_ENVELOPE_ECHO_KEYS.has(key)));
|
|
279
|
-
if (projected.has_more !== true) {
|
|
280
|
-
delete projected.next_cursor;
|
|
281
|
-
}
|
|
282
|
-
return projected;
|
|
283
|
-
}
|
|
284
|
-
/**
|
|
285
|
-
* Hoist an invocation-wide linked-test sandbox context out of repeated result
|
|
286
|
-
* rows. Lean output also removes successful-process streams while retaining
|
|
287
|
-
* failure diagnostics, so agents pay once for context and only for actionable
|
|
288
|
-
* evidence.
|
|
289
|
-
*/
|
|
290
|
-
function projectLinkedTestEvidence(value, lean) {
|
|
291
|
-
if (!isPlainObject(value) || !Array.isArray(value.run_results)) {
|
|
292
|
-
return value;
|
|
293
|
-
}
|
|
294
|
-
if (!value.run_results.every(isPlainObject)) {
|
|
295
|
-
return value;
|
|
296
|
-
}
|
|
297
|
-
const rows = value.run_results;
|
|
298
|
-
const contexts = rows
|
|
299
|
-
.map((row) => row.execution_context)
|
|
300
|
-
.filter((context) => context !== undefined);
|
|
301
|
-
const sharedContext = contexts.length === rows.length &&
|
|
302
|
-
contexts.length > 0 &&
|
|
303
|
-
contexts.every((context) => JSON.stringify(context) === JSON.stringify(contexts[0]))
|
|
304
|
-
? contexts[0]
|
|
305
|
-
: undefined;
|
|
306
|
-
const runResults = rows.map((row) => {
|
|
307
|
-
const { execution_context: _executionContext, stdout, stderr, ...rest } = row;
|
|
308
|
-
if (sharedContext === undefined) {
|
|
309
|
-
return row;
|
|
310
|
-
}
|
|
311
|
-
if (!lean || row.status !== "passed") {
|
|
312
|
-
return { ...rest, stdout, stderr };
|
|
313
|
-
}
|
|
314
|
-
return rest;
|
|
315
|
-
});
|
|
316
|
-
return {
|
|
317
|
-
...value,
|
|
318
|
-
...(sharedContext === undefined
|
|
319
|
-
? {}
|
|
320
|
-
: { execution_context: sharedContext }),
|
|
321
|
-
run_results: runResults,
|
|
322
|
-
};
|
|
323
|
-
}
|
|
324
|
-
/**
|
|
325
|
-
* Render a result with pm's built-in JSON or TOON formatter without invoking
|
|
326
|
-
* extension overrides. SDK budget accounting uses this exact representation
|
|
327
|
-
* so reported token cost describes the bytes the host emits by default.
|
|
328
|
-
*/
|
|
329
|
-
export function formatBuiltInOutput(result, format) {
|
|
330
|
-
if (format === "json") {
|
|
331
|
-
return `${JSON.stringify(result, null, 2)}\n`;
|
|
332
|
-
}
|
|
333
|
-
const compactedToon = compactToonValue(result);
|
|
334
|
-
return compactedToon === undefined
|
|
335
|
-
? "{}\n"
|
|
336
|
-
: `${renderToonValue(compactedToon, 0)}\n`;
|
|
337
|
-
}
|
|
338
|
-
/** Resolve extension service ownership before built-in projection and rendering. */
|
|
339
|
-
function resolveOutputService(effectiveResult, nativeOutput, options, format) {
|
|
340
|
-
const serviceOverride = nativeOutput
|
|
341
|
-
? { handled: false, result: effectiveResult, warnings: [] }
|
|
342
|
-
: runActiveServiceOverrideSync("output_format", {
|
|
343
|
-
command: options.command,
|
|
344
|
-
args: options.commandArgs,
|
|
345
|
-
command_options: options.commandOptions,
|
|
346
|
-
global: { ...options },
|
|
347
|
-
pm_root: options.pmRoot,
|
|
348
|
-
format,
|
|
349
|
-
options: { ...options },
|
|
350
|
-
result: effectiveResult,
|
|
351
|
-
});
|
|
352
|
-
const legacyPayloadEchoWarning = serviceOverride.warnings.find((warning) => warning.startsWith("extension_output_format_payload_echo_deprecated:"));
|
|
353
|
-
if (legacyPayloadEchoWarning !== undefined) {
|
|
354
|
-
writeStderr(`Warning: ${legacyPayloadEchoWarning}. Returning context.payload now declines safely for compatibility; migrate the override to declineServiceOverride() or { handled: false }.\n`);
|
|
355
|
-
}
|
|
356
|
-
if (serviceOverride.handled && typeof serviceOverride.result === "string") {
|
|
357
|
-
return {
|
|
358
|
-
result: serviceOverride.result,
|
|
359
|
-
rendered: serviceOverride.result.endsWith("\n")
|
|
360
|
-
? serviceOverride.result
|
|
361
|
-
: `${serviceOverride.result}\n`,
|
|
362
|
-
structuredDeliveryPreserved: false,
|
|
363
|
-
};
|
|
364
|
-
}
|
|
365
|
-
return {
|
|
366
|
-
result: serviceOverride.handled ? serviceOverride.result : effectiveResult,
|
|
367
|
-
rendered: null,
|
|
368
|
-
structuredDeliveryPreserved: !serviceOverride.handled || isPlainObject(serviceOverride.result),
|
|
369
|
-
};
|
|
370
|
-
}
|
|
371
|
-
/** Formats a command result after command-level output ownership is resolved. */
|
|
372
|
-
function formatEffectiveOutput(effectiveResult, nativeOutput, options) {
|
|
373
|
-
const activeCommandContext = getActiveCommandContext();
|
|
374
|
-
const command = options.command ?? activeCommandContext?.command;
|
|
375
|
-
const commandOptions = {
|
|
376
|
-
...activeCommandContext?.options,
|
|
377
|
-
...options.commandOptions,
|
|
378
|
-
...Object.fromEntries([
|
|
379
|
-
["outputInclude", options.outputInclude],
|
|
380
|
-
["outputLimit", options.outputLimit],
|
|
381
|
-
["outputBudget", options.outputBudget],
|
|
382
|
-
["outputFormat", options.outputFormat],
|
|
383
|
-
["outputSession", options.outputSession],
|
|
384
|
-
["outputCursor", options.outputCursor],
|
|
385
|
-
["outputRowContract", options.outputRowContract],
|
|
386
|
-
].filter((entry) => entry[1] !== undefined)),
|
|
387
|
-
};
|
|
388
|
-
const format = resolveReadOutputEncoding(command ?? "", commandOptions) ??
|
|
389
|
-
resolveOutputFormat(options);
|
|
390
|
-
const resolvedCommandOptions = {
|
|
391
|
-
...commandOptions,
|
|
392
|
-
resolvedOutputFormat: format,
|
|
393
|
-
};
|
|
394
|
-
const effectiveOptions = {
|
|
395
|
-
...options,
|
|
396
|
-
command,
|
|
397
|
-
commandOptions: resolvedCommandOptions,
|
|
398
|
-
};
|
|
399
|
-
const service = resolveOutputService(effectiveResult, nativeOutput, effectiveOptions, format);
|
|
400
|
-
if (service.rendered !== null) {
|
|
401
|
-
setActiveCommandResultOmitted(effectiveResult);
|
|
402
|
-
return service.rendered;
|
|
403
|
-
}
|
|
404
|
-
const outputResult = service.result;
|
|
405
|
-
propagateContextUsageServingReceipt(effectiveResult, outputResult);
|
|
406
|
-
const projectedOutputResult = command === "test"
|
|
407
|
-
? projectLinkedTestEvidence(outputResult, options.lean === true)
|
|
408
|
-
: outputResult;
|
|
409
|
-
const intentOutputResult = attachReadOutputContracts(command, resolvedCommandOptions, projectedOutputResult);
|
|
410
|
-
if (isReadOutputBudgetExceeded(intentOutputResult)) {
|
|
411
|
-
process.exitCode ||= EXIT_CODE.USAGE;
|
|
412
|
-
}
|
|
413
|
-
let { structuredDeliveryPreserved } = service;
|
|
414
|
-
const renderResolvedOutput = (value) => {
|
|
415
|
-
if (format === "toon") {
|
|
416
|
-
const markdownDefault = renderDefaultMarkdownResult(value);
|
|
417
|
-
if (markdownDefault !== null)
|
|
418
|
-
return markdownDefault;
|
|
419
|
-
}
|
|
420
|
-
const rendererOverride = nativeOutput
|
|
421
|
-
? { rendered: null }
|
|
422
|
-
: runActiveRendererOverride(format, value);
|
|
423
|
-
if (rendererOverride.rendered !== null) {
|
|
424
|
-
structuredDeliveryPreserved = false;
|
|
425
|
-
return rendererOverride.rendered.endsWith("\n")
|
|
426
|
-
? rendererOverride.rendered
|
|
427
|
-
: `${rendererOverride.rendered}\n`;
|
|
428
|
-
}
|
|
429
|
-
if (format === "json") {
|
|
430
|
-
return formatBuiltInOutput(options.lean === true ? projectLeanJsonValue(value) : value, "json");
|
|
431
|
-
}
|
|
432
|
-
return formatBuiltInOutput(value, "toon");
|
|
433
|
-
};
|
|
434
|
-
const accountedOutputResult = options.tokenAccounting === true
|
|
435
|
-
? attachOutputTokenAccounting(intentOutputResult, renderResolvedOutput)
|
|
436
|
-
: intentOutputResult;
|
|
437
|
-
const rendered = renderResolvedOutput(accountedOutputResult);
|
|
438
|
-
setActiveCommandDeliveryResult(accountedOutputResult, effectiveResult, options.quiet !== true && structuredDeliveryPreserved);
|
|
439
|
-
return rendered;
|
|
440
|
-
}
|
|
441
|
-
/** Implements format output for the public runtime surface of this module. */
|
|
442
|
-
export function formatOutput(result, options) {
|
|
443
|
-
const commandOverride = runActiveCommandOverride(result);
|
|
444
|
-
const suppressedOutput = isHostOutputSuppressed(commandOverride.result)
|
|
445
|
-
? commandOverride.result
|
|
446
|
-
: null;
|
|
447
|
-
const nativeOutput = shouldUseNativeOutput(commandOverride.result);
|
|
448
|
-
const effectiveResult = suppressedOutput
|
|
449
|
-
? suppressedOutput.result
|
|
450
|
-
: stripNativeOutputMarker(commandOverride.result);
|
|
451
|
-
setActiveCommandResult(effectiveResult);
|
|
452
|
-
if (suppressedOutput) {
|
|
453
|
-
setActiveCommandResultOmitted(effectiveResult);
|
|
454
|
-
return "";
|
|
455
|
-
}
|
|
456
|
-
return formatEffectiveOutput(effectiveResult, nativeOutput, options);
|
|
457
|
-
}
|
|
458
|
-
/** Implements print result for the public runtime surface of this module. */
|
|
459
|
-
export function printResult(result, options) {
|
|
460
|
-
if (isPlainObject(result) &&
|
|
461
|
-
Number.isInteger(result.exit_code) &&
|
|
462
|
-
DECLARED_PROCESS_EXIT_CODES.has(Number(result.exit_code)) &&
|
|
463
|
-
(process.exitCode === undefined || process.exitCode === EXIT_CODE.SUCCESS)) {
|
|
464
|
-
process.exitCode = Number(result.exit_code);
|
|
465
|
-
}
|
|
466
|
-
const projected = options.idOnly
|
|
467
|
-
? projectMutationResult(result, { idOnly: true })
|
|
468
|
-
: options.fullChangedFields
|
|
469
|
-
? result
|
|
470
|
-
: options.noChangedFields
|
|
471
|
-
? projectMutationResult(result, { changedFields: "compact" })
|
|
472
|
-
: projectMutationResult(result, { compactEnvelope: true });
|
|
473
|
-
const rendered = formatOutput(projected, options);
|
|
474
|
-
if (options.quiet) {
|
|
475
|
-
return;
|
|
476
|
-
}
|
|
477
|
-
writeStdout(rendered);
|
|
478
|
-
}
|
|
479
|
-
/** Implements print error for the public runtime surface of this module. */
|
|
480
|
-
export function printError(message) {
|
|
481
|
-
const override = runActiveServiceOverrideSync("error_format", {
|
|
482
|
-
message,
|
|
483
|
-
});
|
|
484
|
-
const rendered = override.handled && typeof override.result === "string"
|
|
485
|
-
? override.result
|
|
486
|
-
: message;
|
|
487
|
-
writeStderr(rendered.endsWith("\n") ? rendered : `${rendered}\n`);
|
|
488
|
-
}
|
|
489
|
-
/** Public contract for output test only, shared by SDK and presentation-layer consumers. */
|
|
490
|
-
export const outputTestOnly = {
|
|
491
|
-
compactToonValue,
|
|
492
|
-
renderToonValue,
|
|
493
|
-
};
|
|
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]="1a9ff3c9-9c7e-50ec-bb12-8a7f91de757f")}catch(e2){}})();import{getActiveCommandContext,runActiveCommandOverride,runActiveRendererOverride,runActiveServiceOverrideSync,setActiveCommandResult}from"../extensions/index.js";import{EXIT_CODE}from"../shared/constants.js";import{isHostOutputSuppressed}from"./output-control.js";import{projectMutationResult}from"./mutation-projection.js";import{attachReadOutputContracts}from"../../sdk/context-intent-contracts.js";import{attachOutputTokenAccounting}from"../../sdk/output-token-accounting.js";import{propagateContextUsageServingReceipt}from"../../sdk/context-usage.js";import{isReadOutputBudgetExceeded,resolveReadOutputEncoding}from"../../sdk/read-output-contracts.js";import{encode as encodeToon}from"@toon-format/toon";const DECLARED_PROCESS_EXIT_CODES=new Set(Object.values(EXIT_CODE));const NATIVE_OUTPUT_MARKER="__pm_native_output";let streamErrorHandlersInstalled=false;function isPlainObject(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)}function setActiveCommandResultOmitted(source){const omitted={read_output:{result_omitted:true}};propagateContextUsageServingReceipt(source,omitted);setActiveCommandResult(omitted)}function setActiveCommandDeliveryResult(result,receiptSource,structuredDeliveryPreserved){if(structuredDeliveryPreserved){setActiveCommandResult(result);return}setActiveCommandResultOmitted(receiptSource)}function shouldUseNativeOutput(result){return isPlainObject(result)&&result[NATIVE_OUTPUT_MARKER]===true}function stripNativeOutputMarker(result){if(!isPlainObject(result)||result[NATIVE_OUTPUT_MARKER]!==true){return result}const{[NATIVE_OUTPUT_MARKER]:_marker,...rest}=result;return rest}function isBrokenPipeError(error){return typeof error==="object"&&error!==null&&error.code==="EPIPE"}function markStdoutBrokenPipeExitCode(){if(process.exitCode===void 0||process.exitCode===EXIT_CODE.SUCCESS){process.exitCode=EXIT_CODE.SUCCESS}}function markStderrBrokenPipeExitCode(){if(process.exitCode===void 0||process.exitCode===EXIT_CODE.SUCCESS){process.exitCode=EXIT_CODE.GENERIC_FAILURE}}function markBrokenPipeExitCode(target){if(target==="stdout"){markStdoutBrokenPipeExitCode();return}markStderrBrokenPipeExitCode()}function handleUnhandledStreamError(error){const unhandled=error instanceof Error?error:new Error(String(error));setImmediate(()=>{throw unhandled})}function installStreamErrorHandlers(){if(streamErrorHandlersInstalled){return}streamErrorHandlersInstalled=true;process.stdout.on("error",error=>{if(isBrokenPipeError(error)){markBrokenPipeExitCode("stdout");return}handleUnhandledStreamError(error)});process.stderr.on("error",error=>{if(isBrokenPipeError(error)){markBrokenPipeExitCode("stderr");return}handleUnhandledStreamError(error)})}function writeToStream(target,text){installStreamErrorHandlers();try{if(target==="stdout"){process.stdout.write(text)}else{process.stderr.write(text)}return true}catch(error){if(isBrokenPipeError(error)){markBrokenPipeExitCode(target);return false}throw error}}function writeStdout(text){return writeToStream("stdout",text)}function writeStderr(text){return writeToStream("stderr",text)}function renderScalar(value){if(typeof value==="string")return JSON.stringify(value);if(typeof value==="number"||typeof value==="boolean")return String(value);if(value===null)return"null";return JSON.stringify(value)}function isToonPrimitive(value){return value===null||typeof value==="string"||typeof value==="number"||typeof value==="boolean"}function tabularObjectArray(value){if(value.length===0||!value.every(isPlainObject))return false;const keys=Object.keys(value[0]);return keys.length>0&&value.every(entry=>Object.keys(entry).length===keys.length&&keys.every(key=>Object.hasOwn(entry,key)&&isToonPrimitive(entry[key])))}function indentToon(encoded,depth){const indent=" ".repeat(depth);return encoded.split("\n").map(line=>`${indent}${line}`).join("\n")}function renderToonObjectEntry(key,entry,depth){const indent=" ".repeat(depth);if(!isPlainObject(entry)&&!Array.isArray(entry)){return`${indent}${key}: ${renderScalar(entry)}`}if(Array.isArray(entry)&&entry.length===0){return`${indent}${key}: []`}if(Array.isArray(entry)&&tabularObjectArray(entry)){return indentToon(encodeToon({[key]:entry}),depth)}if(isPlainObject(entry)&&Object.keys(entry).length===0){return`${indent}${key}: {}`}return`${indent}${key}:
|
|
2
|
+
${renderToonValue(entry,depth+1)}`}function compactToonValue(value){if(value===null||value===void 0){return void 0}if(Array.isArray(value)){const compactedEntries=value.map(entry=>compactToonValue(entry)).filter(entry=>entry!==void 0);return compactedEntries.length>0?compactedEntries:void 0}if(isPlainObject(value)){const compacted={};for(const[key,entry]of Object.entries(value)){if(key==="omitted_field_groups"&&Array.isArray(entry)&&entry.length===0){compacted[key]=[];continue}const compactedEntry=compactToonValue(entry);if(compactedEntry!==void 0){compacted[key]=compactedEntry}}return Object.keys(compacted).length>0?compacted:void 0}return value}function renderToonValue(value,depth){const indent=" ".repeat(depth);if(Array.isArray(value)){if(value.length===0)return"[]";if(tabularObjectArray(value)){return indentToon(encodeToon(value),depth)}return value.map(entry=>{if(!isPlainObject(entry)&&!Array.isArray(entry)){return`${indent}- ${renderScalar(entry)}`}const rendered=renderToonValue(entry,depth+1);const lines=rendered.split("\n");const[firstLine,...rest]=lines;if(rest.length===0){return`${indent}- ${firstLine.trimStart()}`}return`${indent}- ${firstLine.trimStart()}
|
|
3
|
+
${rest.join("\n")}`}).join("\n")}if(isPlainObject(value)){const entries=Object.entries(value);if(entries.length===0)return"{}";return entries.map(([key,entry])=>renderToonObjectEntry(key,entry,depth)).join("\n")}return`${indent}${renderScalar(value)}`}function renderDefaultMarkdownResult(value){if(!isPlainObject(value)||value.output_default!=="markdown"){return null}if(typeof value.view!=="string"||!Array.isArray(value.events)||!Array.isArray(value.days)){return null}const lines=[`# pm calendar (${value.view})`,""];const summary=isPlainObject(value.summary)?value.summary:{};lines.push(`- events: ${String(summary.events??0)}`);lines.push("");if(value.events.length===0){lines.push("No calendar events matched the selected filters.");return`${lines.join("\n")}
|
|
4
|
+
`}for(const event of value.events){if(!isPlainObject(event)){continue}const kind=typeof event.kind==="string"?event.kind:"event";const title=typeof event.item_title==="string"?event.item_title:"";const itemId=typeof event.item_id==="string"?event.item_id:"";const reminderText=typeof event.reminder_text==="string"&&event.reminder_text.length>0?` ${event.reminder_text}`:"";lines.push(`- [${kind}] ${itemId} ${title}${reminderText}`.trim())}return`${lines.join("\n")}
|
|
5
|
+
`}function resolveOutputFormat(options){return options.json===true||options.json===void 0&&options.defaultOutputFormat==="json"?"json":"toon"}const LEAN_READ_ENVELOPE_ECHO_KEYS=new Set(["filters","now","projection","sorting"]);function projectLeanJsonValue(value){const compacted=compactToonValue(value);if(!isPlainObject(compacted)||!Array.isArray(compacted.items)){return compacted??null}const projected=Object.fromEntries(Object.entries(compacted).filter(([key])=>!LEAN_READ_ENVELOPE_ECHO_KEYS.has(key)));if(projected.has_more!==true){delete projected.next_cursor}return projected}function projectLinkedTestEvidence(value,lean){if(!isPlainObject(value)||!Array.isArray(value.run_results)){return value}if(!value.run_results.every(isPlainObject)){return value}const rows=value.run_results;const contexts=rows.map(row=>row.execution_context).filter(context=>context!==void 0);const sharedContext=contexts.length===rows.length&&contexts.length>0&&contexts.every(context=>JSON.stringify(context)===JSON.stringify(contexts[0]))?contexts[0]:void 0;const runResults=rows.map(row=>{const{execution_context:_executionContext,stdout,stderr,...rest}=row;if(sharedContext===void 0){return row}if(!lean||row.status!=="passed"){return{...rest,stdout,stderr}}return rest});return{...value,...sharedContext===void 0?{}:{execution_context:sharedContext},run_results:runResults}}function formatBuiltInOutput(result,format){if(format==="json"){return`${JSON.stringify(result,null,2)}
|
|
6
|
+
`}const compactedToon=compactToonValue(result);return compactedToon===void 0?"{}\n":`${renderToonValue(compactedToon,0)}
|
|
7
|
+
`}function resolveOutputService(effectiveResult,nativeOutput,options,format){const serviceOverride=nativeOutput?{handled:false,result:effectiveResult,warnings:[]}:runActiveServiceOverrideSync("output_format",{command:options.command,args:options.commandArgs,command_options:options.commandOptions,global:{...options},pm_root:options.pmRoot,format,options:{...options},result:effectiveResult});const legacyPayloadEchoWarning=serviceOverride.warnings.find(warning=>warning.startsWith("extension_output_format_payload_echo_deprecated:"));if(legacyPayloadEchoWarning!==void 0){writeStderr(`Warning: ${legacyPayloadEchoWarning}. Returning context.payload now declines safely for compatibility; migrate the override to declineServiceOverride() or { handled: false }.
|
|
8
|
+
`)}if(serviceOverride.handled&&typeof serviceOverride.result==="string"){return{result:serviceOverride.result,rendered:serviceOverride.result.endsWith("\n")?serviceOverride.result:`${serviceOverride.result}
|
|
9
|
+
`,structuredDeliveryPreserved:false}}return{result:serviceOverride.handled?serviceOverride.result:effectiveResult,rendered:null,structuredDeliveryPreserved:!serviceOverride.handled||isPlainObject(serviceOverride.result)}}function formatEffectiveOutput(effectiveResult,nativeOutput,options){const activeCommandContext=getActiveCommandContext();const command=options.command??activeCommandContext?.command;const commandOptions={...activeCommandContext?.options,...options.commandOptions,...Object.fromEntries([["outputInclude",options.outputInclude],["outputLimit",options.outputLimit],["outputBudget",options.outputBudget],["outputFormat",options.outputFormat],["outputSession",options.outputSession],["outputCursor",options.outputCursor],["outputRowContract",options.outputRowContract]].filter(entry=>entry[1]!==void 0))};const format=resolveReadOutputEncoding(command??"",commandOptions)??resolveOutputFormat(options);const resolvedCommandOptions={...commandOptions,resolvedOutputFormat:format};const effectiveOptions={...options,command,commandOptions:resolvedCommandOptions};const service=resolveOutputService(effectiveResult,nativeOutput,effectiveOptions,format);if(service.rendered!==null){setActiveCommandResultOmitted(effectiveResult);return service.rendered}const outputResult=service.result;propagateContextUsageServingReceipt(effectiveResult,outputResult);const projectedOutputResult=command==="test"?projectLinkedTestEvidence(outputResult,options.lean===true):outputResult;const intentOutputResult=attachReadOutputContracts(command,resolvedCommandOptions,projectedOutputResult);if(isReadOutputBudgetExceeded(intentOutputResult)){process.exitCode||=EXIT_CODE.USAGE}let{structuredDeliveryPreserved}=service;const renderResolvedOutput=value=>{if(format==="toon"){const markdownDefault=renderDefaultMarkdownResult(value);if(markdownDefault!==null)return markdownDefault}const rendererOverride=nativeOutput?{rendered:null}:runActiveRendererOverride(format,value);if(rendererOverride.rendered!==null){structuredDeliveryPreserved=false;return rendererOverride.rendered.endsWith("\n")?rendererOverride.rendered:`${rendererOverride.rendered}
|
|
10
|
+
`}if(format==="json"){return formatBuiltInOutput(options.lean===true?projectLeanJsonValue(value):value,"json")}return formatBuiltInOutput(value,"toon")};const accountedOutputResult=options.tokenAccounting===true?attachOutputTokenAccounting(intentOutputResult,renderResolvedOutput):intentOutputResult;const rendered=renderResolvedOutput(accountedOutputResult);setActiveCommandDeliveryResult(accountedOutputResult,effectiveResult,options.quiet!==true&&structuredDeliveryPreserved);return rendered}function formatOutput(result,options){const commandOverride=runActiveCommandOverride(result);const suppressedOutput=isHostOutputSuppressed(commandOverride.result)?commandOverride.result:null;const nativeOutput=shouldUseNativeOutput(commandOverride.result);const effectiveResult=suppressedOutput?suppressedOutput.result:stripNativeOutputMarker(commandOverride.result);setActiveCommandResult(effectiveResult);if(suppressedOutput){setActiveCommandResultOmitted(effectiveResult);return""}return formatEffectiveOutput(effectiveResult,nativeOutput,options)}function printResult(result,options){if(isPlainObject(result)&&Number.isInteger(result.exit_code)&&DECLARED_PROCESS_EXIT_CODES.has(Number(result.exit_code))&&(process.exitCode===void 0||process.exitCode===EXIT_CODE.SUCCESS)){process.exitCode=Number(result.exit_code)}const projected=options.idOnly?projectMutationResult(result,{idOnly:true}):options.fullChangedFields?result:options.noChangedFields?projectMutationResult(result,{changedFields:"compact"}):projectMutationResult(result,{compactEnvelope:true});const rendered=formatOutput(projected,options);if(options.quiet){return}writeStdout(rendered)}function printError(message){const override=runActiveServiceOverrideSync("error_format",{message});const rendered=override.handled&&typeof override.result==="string"?override.result:message;writeStderr(rendered.endsWith("\n")?rendered:`${rendered}
|
|
11
|
+
`)}const outputTestOnly={compactToonValue,renderToonValue};export{formatBuiltInOutput,formatOutput,outputTestOnly,printError,printResult,writeStderr,writeStdout};
|
|
494
12
|
//# sourceMappingURL=output.js.map
|
|
495
|
-
//# debugId=fa89762b-915f-5ef0-a091-f05338c11683
|
|
@@ -1,59 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* Applied-query echo for agent-facing list/search results (pm-rmjy).
|
|
3
|
-
*
|
|
4
|
-
* Narrow MCP tools accept filters nested inside `options: {}`, so an agent has
|
|
5
|
-
* no structured confirmation of which filters were actually applied or which
|
|
6
|
-
* projection mode resolved. `withQuerySummary` attaches a small `query_summary`
|
|
7
|
-
* block ({ filters, projection }) to the result so the feedback loop closes
|
|
8
|
-
* without the agent re-echoing its inputs.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
!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]="27dd77f6-e53d-55b7-be15-db0e60eaec4e")}catch(e){}}();
|
|
12
|
-
function isRecord(value) {
|
|
13
|
-
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
14
|
-
}
|
|
15
|
-
/** Resolve the projection label implied by list/search projection options. Used when the result payload itself carries no projection metadata (the compact summary paths omit it for token efficiency). */
|
|
16
|
-
export function resolveQueryProjectionLabel(options) {
|
|
17
|
-
if (options.brief === true) {
|
|
18
|
-
return "brief";
|
|
19
|
-
}
|
|
20
|
-
if (typeof options.fields === "string" && options.fields.trim().length > 0) {
|
|
21
|
-
return "fields";
|
|
22
|
-
}
|
|
23
|
-
// The MCP boundary coerces fields arrays to CSV, but tolerate array input
|
|
24
|
-
// here too so direct callers get the same projection label.
|
|
25
|
-
if (Array.isArray(options.fields) && options.fields.length > 0) {
|
|
26
|
-
return "fields";
|
|
27
|
-
}
|
|
28
|
-
if (options.compact === true) {
|
|
29
|
-
return "compact";
|
|
30
|
-
}
|
|
31
|
-
return "full";
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Attach a `query_summary` to a list/search result.
|
|
35
|
-
*
|
|
36
|
-
* `brief` is the most specific requested label, so it wins outright (the list
|
|
37
|
-
* command reports brief as projection mode "compact" with narrowed fields).
|
|
38
|
-
* Otherwise the result's own `projection.mode` states the resolved mode for
|
|
39
|
-
* verbose payloads, and the options-derived label covers the compact summary
|
|
40
|
-
* paths that omit projection metadata.
|
|
41
|
-
*/
|
|
42
|
-
export function withQuerySummary(result, options) {
|
|
43
|
-
const requestedLabel = resolveQueryProjectionLabel(options);
|
|
44
|
-
const projection = requestedLabel === "brief"
|
|
45
|
-
? requestedLabel
|
|
46
|
-
: isRecord(result.projection) &&
|
|
47
|
-
typeof result.projection.mode === "string"
|
|
48
|
-
? result.projection.mode
|
|
49
|
-
: requestedLabel;
|
|
50
|
-
return {
|
|
51
|
-
...result,
|
|
52
|
-
query_summary: {
|
|
53
|
-
filters: isRecord(result.filters) ? result.filters : {},
|
|
54
|
-
projection,
|
|
55
|
-
},
|
|
56
|
-
};
|
|
57
|
-
}
|
|
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]="176b4ac2-2c47-50d6-beee-62e1d3dc9281")}catch(e2){}})();function isRecord(value){return value!==null&&typeof value==="object"&&!Array.isArray(value)}function resolveQueryProjectionLabel(options){if(options.brief===true){return"brief"}if(typeof options.fields==="string"&&options.fields.trim().length>0){return"fields"}if(Array.isArray(options.fields)&&options.fields.length>0){return"fields"}if(options.compact===true){return"compact"}return"full"}function withQuerySummary(result,options){const requestedLabel=resolveQueryProjectionLabel(options);const projection=requestedLabel==="brief"?requestedLabel:isRecord(result.projection)&&typeof result.projection.mode==="string"?result.projection.mode:requestedLabel;return{...result,query_summary:{filters:isRecord(result.filters)?result.filters:{},projection}}}export{resolveQueryProjectionLabel,withQuerySummary};
|
|
58
2
|
//# sourceMappingURL=query-summary.js.map
|
|
59
|
-
//# debugId=27dd77f6-e53d-55b7-be15-db0e60eaec4e
|