@unbrained/pm-cli 2026.9.6 → 2026.9.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/pm-developer/SKILL.md +12 -4
- package/.agents/skills/pm-developer/references/MULTI_AGENT_MERGE.md +19 -10
- package/.agents/skills/pm-extensions/SKILL.md +6 -0
- package/.agents/skills/pm-sdk/SKILL.md +11 -2
- package/.agents/skills/pm-user/SKILL.md +5 -0
- package/.agents/skills/pm-user/references/ECOSYSTEM_PLANNING.md +95 -0
- package/.claude-plugin/marketplace.json +2 -2
- package/CHANGELOG.md +218 -182
- package/dist/cli/after-command-context-usage.js +1 -48
- package/dist/cli/argv-utils.js +1 -40
- package/dist/cli/bootstrap-args.js +1 -9
- package/dist/cli/bundle-integrity.js +2 -110
- package/dist/cli/commander-usage.js +11 -771
- package/dist/cli/commands/activity.js +1 -9
- package/dist/cli/commands/aggregate.js +1 -5
- package/dist/cli/commands/append.js +1 -5
- package/dist/cli/commands/claim.js +1 -5
- package/dist/cli/commands/close-many.js +1 -5
- package/dist/cli/commands/close.js +1 -9
- package/dist/cli/commands/comments.js +1 -5
- package/dist/cli/commands/config.js +1 -9
- package/dist/cli/commands/context.js +1 -9
- package/dist/cli/commands/contracts.js +1 -5
- package/dist/cli/commands/copy.js +1 -9
- package/dist/cli/commands/create.js +1 -9
- package/dist/cli/commands/delete.js +1 -9
- package/dist/cli/commands/deps.js +1 -9
- package/dist/cli/commands/docs.js +1 -9
- package/dist/cli/commands/duplicates.js +1 -9
- package/dist/cli/commands/eval.js +1 -9
- package/dist/cli/commands/extension/describe.js +1 -5
- package/dist/cli/commands/extension/scaffold.js +1 -5
- package/dist/cli/commands/extension/shared.js +1 -5
- package/dist/cli/commands/extension.js +1 -9
- package/dist/cli/commands/files.js +1 -9
- package/dist/cli/commands/focus.js +1 -9
- package/dist/cli/commands/gc.js +1 -9
- package/dist/cli/commands/get.js +1 -9
- package/dist/cli/commands/graph.js +1 -10
- package/dist/cli/commands/health.js +1 -9
- package/dist/cli/commands/history-compact.js +1 -10
- package/dist/cli/commands/history-redact.js +1 -11
- package/dist/cli/commands/history-repair.js +1 -10
- package/dist/cli/commands/history.js +1 -5
- package/dist/cli/commands/index.js +1 -58
- package/dist/cli/commands/init-agent-guidance.js +1 -9
- package/dist/cli/commands/init.js +1 -9
- package/dist/cli/commands/learnings.js +1 -5
- package/dist/cli/commands/lifecycle-transitions.js +1 -5
- package/dist/cli/commands/list.js +1 -9
- package/dist/cli/commands/merge.js +1 -11
- package/dist/cli/commands/next.js +1 -9
- package/dist/cli/commands/notes.js +1 -5
- package/dist/cli/commands/plan.js +1 -9
- package/dist/cli/commands/profile.js +1 -9
- package/dist/cli/commands/restore.js +1 -9
- package/dist/cli/commands/scheduling-shortcuts.js +1 -9
- package/dist/cli/commands/schema.js +1 -10
- package/dist/cli/commands/search.js +1 -9
- package/dist/cli/commands/stats.js +1 -9
- package/dist/cli/commands/telemetry.js +1 -9
- package/dist/cli/commands/test-all.js +1 -9
- package/dist/cli/commands/test-runs.js +1 -9
- package/dist/cli/commands/test.js +1 -9
- package/dist/cli/commands/update-many.js +1 -5
- package/dist/cli/commands/update.js +1 -9
- package/dist/cli/commands/upgrade.js +1 -5
- package/dist/cli/commands/validate.js +1 -15
- package/dist/cli/context-intent-invocation.js +1 -20
- package/dist/cli/description-stdin.js +1 -17
- package/dist/cli/error-guidance.js +1 -1353
- package/dist/cli/extension-command-help.js +5 -636
- package/dist/cli/extension-command-options.js +1 -427
- package/dist/cli/extension-recovery.js +1 -126
- package/dist/cli/help-content.js +2 -1001
- package/dist/cli/help-json-payload.js +4 -570
- package/dist/cli/main.d.ts +4 -0
- package/dist/cli/main.js +5 -2573
- package/dist/cli/migration-gates.js +1 -289
- package/dist/cli/public.js +1 -20
- package/dist/cli/register-annotations.js +1 -270
- package/dist/cli/register-assurance.js +1 -62
- package/dist/cli/register-files-lookup.js +1 -56
- package/dist/cli/register-history-activity.d.ts +8 -0
- package/dist/cli/register-history-activity.js +2 -0
- package/dist/cli/register-history-author.js +1 -38
- package/dist/cli/register-history-maintenance.d.ts +9 -0
- package/dist/cli/register-history-maintenance.js +2 -0
- package/dist/cli/register-list-query.js +10 -943
- package/dist/cli/register-mutation-options.js +1 -9
- package/dist/cli/register-mutation.js +19 -1893
- package/dist/cli/register-operations.js +1 -920
- package/dist/cli/register-setup.js +1 -716
- package/dist/cli/register-structured-mutation.js +1 -196
- package/dist/cli/registration-helpers.js +1 -5
- package/dist/cli/runtime-compatibility-boundary.js +4 -42
- package/dist/cli/schema-registration-helpers.js +1 -73
- package/dist/cli/search-refresh.js +1 -13
- package/dist/cli/stats-analytics-json.js +1 -68
- package/dist/cli/telemetry-flush.js +1 -10
- package/dist/cli-bundle/bundle-manifest.json +164 -156
- package/dist/cli-bundle/chunks/chunk-3BZZA6A3.js +5 -0
- package/dist/cli-bundle/chunks/chunk-AMRDVX36.js +235 -0
- package/dist/cli-bundle/chunks/chunk-DAM4CBBR.js +2202 -0
- package/dist/cli-bundle/chunks/{chunk-WYRZZ5ZE.js → chunk-DEZPZOQ7.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-FLDWYEND.js +77 -0
- package/dist/cli-bundle/chunks/{chunk-NPN5I67J.js → chunk-G5ADGQ2D.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-JAAEYHUA.js +2 -0
- package/dist/cli-bundle/chunks/{chunk-JX4DH4WC.js → chunk-KR3RP4FH.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-LEZOUXG6.js +2 -0
- package/dist/cli-bundle/chunks/chunk-NSAPNEYH.js +2 -0
- package/dist/cli-bundle/chunks/chunk-QOEKOECV.js +29 -0
- package/dist/cli-bundle/chunks/chunk-RHSFOMHU.js +2 -0
- package/dist/cli-bundle/chunks/chunk-XOD2PCB6.js +20 -0
- package/dist/cli-bundle/chunks/{chunk-JT6XF6GE.js → chunk-YVEQ2AMO.js} +4 -4
- package/dist/cli-bundle/chunks/register-list-query-KSK3R63M.js +11 -0
- package/dist/cli-bundle/chunks/register-mutation-IQ5C7U6O.js +20 -0
- package/dist/cli-bundle/chunks/{register-operations-I5W3KMGB.js → register-operations-DWVHR2NC.js} +2 -2
- package/dist/cli-bundle/chunks/register-setup-BQ5SVD4B.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-3WRPWLA7.js +3 -0
- package/dist/cli-bundle/focused-chunks/chunk-7MBUII7U.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-COPBO5HW.js +8 -0
- package/dist/cli-bundle/focused-chunks/chunk-DUN4IXYN.js +20 -0
- package/dist/cli-bundle/focused-chunks/{chunk-LIJIA4TY.js → chunk-EE5QSM4Z.js} +3 -3
- package/dist/cli-bundle/focused-chunks/chunk-HJVARYM3.js +6 -0
- package/dist/cli-bundle/focused-chunks/chunk-IAUOUGVR.js +177 -0
- package/dist/cli-bundle/focused-chunks/chunk-KOOMJ54F.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-MZDXX7JY.js +56 -0
- package/dist/cli-bundle/focused-chunks/{chunk-M6PBRFSH.js → chunk-OPFHFGDD.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-QHNETP77.js +9 -0
- package/dist/cli-bundle/focused-chunks/{chunk-3BZEOXLT.js → chunk-RMWES4M6.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-RXT4P5QH.js +10 -0
- package/dist/cli-bundle/focused-chunks/chunk-SDOL6FM2.js +12 -0
- package/dist/cli-bundle/focused-chunks/chunk-SQV4AAUC.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-PEFABF7E.js → chunk-WE3IUNIW.js} +3 -3
- package/dist/cli-bundle/focused-chunks/chunk-YALOUBWJ.js +2 -0
- package/dist/cli-bundle/main.js +20 -20
- package/dist/cli-bundle/sdk-authoring.js +1 -1
- package/dist/cli-bundle/sdk-contracts.js +2 -2
- package/dist/cli-bundle/sdk-core.js +29 -29
- package/dist/cli-bundle/sdk-governance.js +1 -1
- package/dist/cli-bundle/sdk-graph.js +1 -1
- package/dist/cli-bundle/sdk-merge.js +42 -42
- package/dist/cli-bundle/sdk-query.js +1 -1
- package/dist/cli-bundle/sdk-runtime.js +1 -1
- package/dist/cli-bundle/sdk-testing.js +1 -1
- package/dist/cli-bundle/sdk.js +11 -11
- package/dist/cli.js +1 -104
- package/dist/core/checkpoint/checkpoint-gc.js +1 -169
- package/dist/core/checkpoint/mutation-checkpoint.js +2 -133
- package/dist/core/config/nested-settings.js +1 -534
- package/dist/core/config/positional-value.js +1 -109
- package/dist/core/diagnostics/remediation.js +1 -506
- package/dist/core/extensions/activation-summary-markdown.js +2 -145
- package/dist/core/extensions/activation-summary.js +1 -92
- package/dist/core/extensions/activation-transaction.js +1 -46
- package/dist/core/extensions/capability-usage.js +1 -173
- package/dist/core/extensions/command-hook-context.js +1 -13
- package/dist/core/extensions/command-metadata-contract.js +1 -22
- package/dist/core/extensions/command-visibility-tier.js +1 -29
- package/dist/core/extensions/contribution-inventory.js +1 -173
- package/dist/core/extensions/exporter-output-contract.js +1 -66
- package/dist/core/extensions/extension-candidate.js +1 -18
- package/dist/core/extensions/extension-capability-aliases.js +1 -158
- package/dist/core/extensions/extension-hook-runtime.js +1 -699
- package/dist/core/extensions/extension-policy.js +1 -599
- package/dist/core/extensions/extension-registries.js +1 -62
- package/dist/core/extensions/extension-runtime-helpers.js +1 -33
- package/dist/core/extensions/extension-types.js +1 -102
- package/dist/core/extensions/flag-definition-validation.js +1 -52
- package/dist/core/extensions/flag-value-types.js +1 -64
- package/dist/core/extensions/index.js +1 -526
- package/dist/core/extensions/item-field-types.js +1 -39
- package/dist/core/extensions/item-fields.js +1 -261
- package/dist/core/extensions/loader.js +1 -2223
- package/dist/core/extensions/manifest-schema.js +1 -69
- package/dist/core/extensions/module-graph-snapshot.js +1 -33
- package/dist/core/extensions/preflight-ownership.js +1 -41
- package/dist/core/extensions/registration-validation.js +1 -82
- package/dist/core/extensions/registration-values.js +1 -209
- package/dist/core/extensions/reserved-host-flags.js +1 -36
- package/dist/core/extensions/runtime-registrations.js +1 -67
- package/dist/core/extensions/service-ownership.js +1 -19
- package/dist/core/extensions/version-compat.js +1 -216
- package/dist/core/fs/fs-utils.js +2 -158
- package/dist/core/fs/host-environment-errors.js +1 -141
- package/dist/core/fs/index.js +1 -9
- package/dist/core/fs/path-utils.js +1 -17
- package/dist/core/governance/content-fields.js +1 -160
- package/dist/core/governance/issue-codes.js +1 -151
- package/dist/core/governance/metadata-coverage.js +1 -358
- package/dist/core/history/drift-cache.js +3 -72
- package/dist/core/history/drift-scan.js +1 -342
- package/dist/core/history/event-classification.js +1 -109
- package/dist/core/history/event-index.js +8 -784
- package/dist/core/history/history-compact-bulk.js +1 -104
- package/dist/core/history/history-diff.js +1 -158
- package/dist/core/history/history-rewrite.d.ts +6 -1
- package/dist/core/history/history-rewrite.js +1 -107
- package/dist/core/history/history-storage-stats.js +1 -102
- package/dist/core/history/history-stream-policy.js +1 -62
- package/dist/core/history/history.js +2 -617
- package/dist/core/history/identity.js +1 -30
- package/dist/core/history/index.js +1 -9
- package/dist/core/history/projection.js +1 -196
- package/dist/core/history/read.d.ts +9 -0
- package/dist/core/history/read.js +1 -57
- package/dist/core/history/replay.js +2 -439
- package/dist/core/history/version-address.js +1 -32
- package/dist/core/history/workspace-history.js +2 -433
- package/dist/core/io/body-file.js +1 -62
- package/dist/core/io/bulk-ids-input.js +1 -112
- package/dist/core/item/actionability.js +1 -327
- package/dist/core/item/dependency-reference.js +1 -20
- package/dist/core/item/id.js +1 -112
- package/dist/core/item/index.js +1 -12
- package/dist/core/item/item-format-version.js +1 -78
- package/dist/core/item/item-format.js +5 -1473
- package/dist/core/item/item-record.js +1 -23
- package/dist/core/item/item-type-definition.js +1 -133
- package/dist/core/item/parent-reference-policy.js +1 -57
- package/dist/core/item/parse.js +2 -603
- package/dist/core/item/plan-lifecycle.js +1 -19
- package/dist/core/item/priority.js +1 -61
- package/dist/core/item/sprint-release-format.js +1 -38
- package/dist/core/item/status-filter.js +1 -115
- package/dist/core/item/status.js +1 -43
- package/dist/core/item/toon-decode.js +1 -29
- package/dist/core/item/type-registry.js +1 -715
- package/dist/core/item/type-synonyms.js +1 -38
- package/dist/core/lock/index.js +1 -9
- package/dist/core/lock/lock-gc.js +1 -240
- package/dist/core/lock/lock.js +3 -590
- package/dist/core/output/mutation-projection.js +1 -217
- package/dist/core/output/output-control.js +1 -25
- package/dist/core/output/output.js +11 -494
- package/dist/core/output/query-summary.js +1 -58
- package/dist/core/output/tabular.js +1 -77
- package/dist/core/packages/manifest.js +1 -244
- package/dist/core/packages/root.js +1 -84
- package/dist/core/profile/profile-describe.js +1 -83
- package/dist/core/profile/profile-lint.js +1 -415
- package/dist/core/profile/profile-plan.js +0 -0
- package/dist/core/profile/profile-presets.js +1 -370
- package/dist/core/reproducibility/context.js +1 -82
- package/dist/core/schema/fields-file.js +2 -288
- package/dist/core/schema/item-types-file.js +2 -296
- package/dist/core/schema/runtime-field-filters.js +1 -49
- package/dist/core/schema/runtime-field-values.js +1 -313
- package/dist/core/schema/runtime-schema.js +2 -826
- package/dist/core/schema/status-defs-file.js +2 -227
- package/dist/core/schema/status-token.js +1 -31
- package/dist/core/schema/type-inference.js +1 -95
- package/dist/core/schema/type-presets.js +1 -87
- package/dist/core/schema/type-workflows.js +1 -104
- package/dist/core/search/background-refresh.js +2 -286
- package/dist/core/search/bm25.js +1 -146
- package/dist/core/search/cache.js +2 -534
- package/dist/core/search/corpus.js +1 -311
- package/dist/core/search/embedding-batches.js +1 -163
- package/dist/core/search/eval.js +1 -225
- package/dist/core/search/http-client.js +1 -75
- package/dist/core/search/providers.js +1 -242
- package/dist/core/search/relevance.js +1 -244
- package/dist/core/search/semantic-defaults.js +1 -199
- package/dist/core/search/staleness.js +1 -30
- package/dist/core/search/vector-stores.js +2 -664
- package/dist/core/search/vectorization-metadata.js +1 -81
- package/dist/core/sentry/helpers.js +1 -272
- package/dist/core/sentry/instrument.js +1 -387
- package/dist/core/session/session-state.js +1 -260
- package/dist/core/shared/agent-session-context.js +1 -133
- package/dist/core/shared/author.js +1 -1172
- package/dist/core/shared/command-types.js +1 -4
- package/dist/core/shared/conflict-markers.js +1 -31
- package/dist/core/shared/constants.js +1 -405
- package/dist/core/shared/errors.js +1 -20
- package/dist/core/shared/html-entity-decode.js +1 -131
- package/dist/core/shared/index.js +1 -12
- package/dist/core/shared/item-metadata-contract.js +1 -89
- package/dist/core/shared/lazy-module.js +1 -16
- package/dist/core/shared/levenshtein.js +1 -61
- package/dist/core/shared/memo.js +1 -19
- package/dist/core/shared/numeric-parsers.js +1 -20
- package/dist/core/shared/option-alias-visibility.js +1 -67
- package/dist/core/shared/primitives.js +1 -127
- package/dist/core/shared/serial-queue.js +1 -79
- package/dist/core/shared/serialization.js +1 -210
- package/dist/core/shared/split-comma-list.js +1 -30
- package/dist/core/shared/text-normalization.js +1 -38
- package/dist/core/shared/time.js +1 -306
- package/dist/core/store/index.js +1 -12
- package/dist/core/store/item-format-migration.js +1 -125
- package/dist/core/store/item-metadata-cache.js +1 -1116
- package/dist/core/store/item-metadata-query-index.js +9 -394
- package/dist/core/store/item-metadata-read-work.js +1 -43
- package/dist/core/store/item-store.js +1 -693
- package/dist/core/store/paths.d.ts +1 -1
- package/dist/core/store/paths.js +1 -214
- package/dist/core/store/settings-read-cache.js +1 -85
- package/dist/core/store/settings-validator.js +1 -421
- package/dist/core/store/settings.js +3 -1309
- package/dist/core/store/tracker-preflight.js +1 -141
- package/dist/core/telemetry/consent.js +5 -108
- package/dist/core/telemetry/observability.js +1 -246
- package/dist/core/telemetry/runtime.js +4 -1988
- package/dist/core/test/background-runs.js +4 -945
- package/dist/core/test/item-test-run-tracking.js +1 -63
- package/dist/core/test/run-selectors.js +1 -120
- package/dist/core/validate/estimate-defaults.js +1 -89
- package/dist/core/validate/fix-planning.js +1 -189
- package/dist/core/validate/linked-artifact-reference.js +1 -36
- package/dist/core/validate/missing-by-type.js +1 -34
- package/dist/core/validate/missing-link-owners.js +1 -95
- package/dist/core/validate/stale-file-classification.js +1 -82
- package/dist/mcp/http-server.js +5 -448
- package/dist/mcp/legacy-adapter.js +1 -77
- package/dist/mcp/runtime-capabilities.js +1 -200
- package/dist/mcp/server.js +4 -1233
- package/dist/mcp/tool-definitions.js +1 -804
- package/dist/sdk/actionability.js +1 -13
- package/dist/sdk/agent/closed-domain-contracts.js +1 -161
- package/dist/sdk/agent/command-recovery.js +1 -59
- package/dist/sdk/agent/command-suggestions.js +1 -66
- package/dist/sdk/agent/create-option-policy.js +1 -31
- package/dist/sdk/agent/identity-config.js +1 -106
- package/dist/sdk/agent/item-addressing.js +1 -207
- package/dist/sdk/agent/refusal-closure-census.js +1 -151
- package/dist/sdk/agent/refusal-closure.js +1 -133
- package/dist/sdk/agent/refusal-corpus-contracts.js +1 -193
- package/dist/sdk/agent/refusal-reachability.js +1 -593
- package/dist/sdk/agent/subcommand-recovery.js +1 -83
- package/dist/sdk/agent/task-transcript-contracts.js +1 -197
- package/dist/sdk/agent/tracker-preflight-contracts.js +1 -126
- package/dist/sdk/agent-capability-contracts.js +1 -428
- package/dist/sdk/agent-session-context.js +1 -9
- package/dist/sdk/annotations.js +1 -448
- package/dist/sdk/author-attribution.js +1 -468
- package/dist/sdk/authoring.js +1 -20
- package/dist/sdk/cli-bootstrap.js +1 -838
- package/dist/sdk/cli-contracts/agent-output-contracts.d.ts +1 -1
- package/dist/sdk/cli-contracts/agent-output-contracts.js +4 -476
- package/dist/sdk/cli-contracts/bootstrap-command-scanner.js +1 -79
- package/dist/sdk/cli-contracts/command-aliases.d.ts +4 -0
- package/dist/sdk/cli-contracts/command-aliases.js +1 -107
- package/dist/sdk/cli-contracts/command-exit-contracts.js +1 -151
- package/dist/sdk/cli-contracts/commander-mutation-options.js +1 -1081
- package/dist/sdk/cli-contracts/commander-types.js +1 -159
- package/dist/sdk/cli-contracts/completeness.js +1 -393
- package/dist/sdk/cli-contracts/enum-contracts.js +1 -222
- package/dist/sdk/cli-contracts/flag-contracts.js +1 -1947
- package/dist/sdk/cli-contracts/flag-lexicon-contracts.js +1 -347
- package/dist/sdk/cli-contracts/grammar-contracts.js +1 -986
- package/dist/sdk/cli-contracts/registration-helpers.js +7 -990
- package/dist/sdk/cli-contracts/runtime-contracts.d.ts +5 -0
- package/dist/sdk/cli-contracts/runtime-contracts.js +1 -2090
- package/dist/sdk/cli-contracts/schemas/assurance-definition.js +1 -324
- package/dist/sdk/cli-contracts/string-lists.js +1 -16
- package/dist/sdk/cli-contracts/tool-option-contracts.js +1 -461
- package/dist/sdk/cli-contracts/tool-parameter-tables.js +1 -2167
- package/dist/sdk/cli-contracts/tool-schema.d.ts +3 -1
- package/dist/sdk/cli-contracts/tool-schema.js +1 -1664
- package/dist/sdk/cli-contracts/typed-action-inputs.js +1 -4
- package/dist/sdk/cli-contracts.d.ts +1 -1
- package/dist/sdk/cli-contracts.js +1 -17
- package/dist/sdk/cli-program.js +1 -49
- package/dist/sdk/command-line.d.ts +2 -5
- package/dist/sdk/command-line.js +1 -78
- package/dist/sdk/comments.js +1 -133
- package/dist/sdk/compile-cache.js +1 -73
- package/dist/sdk/completion.js +157 -837
- package/dist/sdk/compose.js +1 -1090
- package/dist/sdk/config.js +1 -1204
- package/dist/sdk/context/recency.js +1 -33
- package/dist/sdk/context/semantic-session-attribution.js +1 -82
- package/dist/sdk/context/usage-egress.js +1 -29
- package/dist/sdk/context/usage-ledger.js +3 -185
- package/dist/sdk/context-intent-contracts.js +1 -709
- package/dist/sdk/context-intent-runtime.js +1 -115
- package/dist/sdk/context-packing.js +1 -218
- package/dist/sdk/context-relevance.js +1 -503
- package/dist/sdk/context-signal-store.js +2 -426
- package/dist/sdk/context-usage.js +1 -367
- package/dist/sdk/contracts.js +1 -23
- package/dist/sdk/core-governance.js +1 -14
- package/dist/sdk/core.js +1 -14
- package/dist/sdk/corpus-shape.js +1 -401
- package/dist/sdk/define.js +1 -220
- package/dist/sdk/dependencies.js +1 -718
- package/dist/sdk/dependency-flag-validation.js +1 -156
- package/dist/sdk/dependency-provenance.js +1 -135
- package/dist/sdk/docs.js +1 -14
- package/dist/sdk/duplicates.js +1 -40
- package/dist/sdk/environment/agent-environment.js +1 -466
- package/dist/sdk/environment/host-environment-errors.js +1 -8
- package/dist/sdk/environment/project-runtime-compatibility.js +1 -481
- package/dist/sdk/environment/source-context.js +1 -28
- package/dist/sdk/environment/tracker-preflight.js +1 -9
- package/dist/sdk/error-code-catalog.js +1 -153
- package/dist/sdk/error-runtime.js +1 -58
- package/dist/sdk/errors.js +1 -58
- package/dist/sdk/eval.js +1 -190
- package/dist/sdk/extension/author-manifest.js +1 -92
- package/dist/sdk/extension/bundled-catalog.js +1 -332
- package/dist/sdk/extension/concurrency.js +1 -25
- package/dist/sdk/extension/copy-scope.d.ts +2 -0
- package/dist/sdk/extension/copy-scope.js +2 -0
- package/dist/sdk/extension/custom-field-collisions.js +1 -30
- package/dist/sdk/extension/describe.js +3 -189
- package/dist/sdk/extension/doctor.js +1 -606
- package/dist/sdk/extension/install-plan.d.ts +69 -0
- package/dist/sdk/extension/install-plan.js +2 -0
- package/dist/sdk/extension/install-receipts.d.ts +7 -0
- package/dist/sdk/extension/install-receipts.js +2 -0
- package/dist/sdk/extension/install-runtime.js +3 -313
- package/dist/sdk/extension/install-snapshot.js +1 -66
- package/dist/sdk/extension/install-sources.js +5 -1057
- package/dist/sdk/extension/managed-state.js +2 -252
- package/dist/sdk/extension/migrations.js +2 -174
- package/dist/sdk/extension/output-ownership.js +1 -25
- package/dist/sdk/extension/runtime-summary.js +1 -18
- package/dist/sdk/extension/scaffold.js +4 -2308
- package/dist/sdk/extension/shared.js +1 -147
- package/dist/sdk/extension/source-resolution.js +1 -65
- package/dist/sdk/extension/update-check.js +1 -67
- package/dist/sdk/extension-command-context.js +1 -44
- package/dist/sdk/extension-contracts.js +1 -73
- package/dist/sdk/extension.d.ts +7 -2
- package/dist/sdk/extension.js +1 -2196
- package/dist/sdk/files.js +1 -535
- package/dist/sdk/flag-invocation-contracts.d.ts +0 -5
- package/dist/sdk/flag-invocation-contracts.js +1 -344
- package/dist/sdk/generated/generated-error-code-catalog-part-1.js +1 -2224
- package/dist/sdk/generated/generated-error-code-catalog-part-2.js +1 -2236
- package/dist/sdk/generated-error-code-catalog.js +1 -16
- package/dist/sdk/governance/assurance-action-contracts.js +1 -4
- package/dist/sdk/governance/assurance-action.js +1 -411
- package/dist/sdk/governance/assurance-limits.js +1 -10
- package/dist/sdk/governance/assurance-mutation-error.js +1 -81
- package/dist/sdk/governance/assurance-presets.js +1 -135
- package/dist/sdk/governance/assurance-runtime.js +1 -238
- package/dist/sdk/governance/assurance.js +4 -1182
- package/dist/sdk/governance/boundary-fixtures.js +1 -200
- package/dist/sdk/governance/coverage-assurance.js +1 -60
- package/dist/sdk/governance/defect-recurrence-coverage.js +1 -188
- package/dist/sdk/governance/defect-recurrence-graph.js +1 -120
- package/dist/sdk/governance/defect-recurrence-signals.js +1 -24
- package/dist/sdk/governance/defect-recurrence.js +1 -623
- package/dist/sdk/governance/extension-host-version.js +1 -115
- package/dist/sdk/governance/gc.js +1 -368
- package/dist/sdk/governance/health.js +1 -2367
- package/dist/sdk/governance/hierarchy-validation.js +1 -108
- package/dist/sdk/governance/linked-file-report.js +1 -71
- package/dist/sdk/governance/merge-receipt-history.js +1 -206
- package/dist/sdk/governance/provenance-health.js +1 -282
- package/dist/sdk/governance/reindex.js +4 -761
- package/dist/sdk/governance/stale-work.js +1 -82
- package/dist/sdk/governance/status-role-diagnostics.js +1 -35
- package/dist/sdk/governance/storage-integrity.js +1 -280
- package/dist/sdk/governance/tracked-runtime-cache.js +1 -106
- package/dist/sdk/governance/upgrade.js +2 -327
- package/dist/sdk/governance/validate-history-drift.js +1 -81
- package/dist/sdk/governance/validate-item-reader.js +1 -17
- package/dist/sdk/governance/validate-normalization.js +1 -36
- package/dist/sdk/governance/validate.js +1 -2261
- package/dist/sdk/governance/workspace-position.js +1 -163
- package/dist/sdk/governance.d.ts +1 -0
- package/dist/sdk/governance.js +1 -31
- package/dist/sdk/graph/adapter.js +1 -181
- package/dist/sdk/graph/analytics.js +1 -474
- package/dist/sdk/graph/assembly.js +1 -377
- package/dist/sdk/graph/cache.js +1 -160
- package/dist/sdk/graph/centrality.js +1 -258
- package/dist/sdk/graph/conformance.js +1 -130
- package/dist/sdk/graph/deadline-scheduling.d.ts +90 -0
- package/dist/sdk/graph/deadline-scheduling.js +2 -0
- package/dist/sdk/graph/durable-cache.d.ts +1 -1
- package/dist/sdk/graph/durable-cache.js +1 -361
- package/dist/sdk/graph/governance-contracts.js +1 -34
- package/dist/sdk/graph/governance.d.ts +13 -1
- package/dist/sdk/graph/governance.js +1 -735
- package/dist/sdk/graph/hierarchy-integrity.js +1 -310
- package/dist/sdk/graph/index.d.ts +3 -2
- package/dist/sdk/graph/index.js +1 -26
- package/dist/sdk/graph/lifecycle-coverage.d.ts +32 -0
- package/dist/sdk/graph/lifecycle-coverage.js +2 -0
- package/dist/sdk/graph/mutation-advisory.js +1 -176
- package/dist/sdk/graph/remediation.js +1 -197
- package/dist/sdk/graph/run.d.ts +15 -1
- package/dist/sdk/graph/run.js +1 -768
- package/dist/sdk/graph/scheduling.js +1 -124
- package/dist/sdk/graph/traversal.js +1 -284
- package/dist/sdk/graph/workspace-relationship-kind-registry.js +1 -27
- package/dist/sdk/graph.js +1 -15
- package/dist/sdk/guide-topics.js +1 -707
- package/dist/sdk/guide.js +1 -279
- package/dist/sdk/history/maintenance.d.ts +71 -0
- package/dist/sdk/history/maintenance.js +2 -0
- package/dist/sdk/history/salvage.js +2 -247
- package/dist/sdk/history/subject.d.ts +19 -0
- package/dist/sdk/history/subject.js +2 -0
- package/dist/sdk/history-analytics.js +1 -282
- package/dist/sdk/history-compact.js +1 -527
- package/dist/sdk/history-mcp.js +1 -68
- package/dist/sdk/history-provenance.js +1 -182
- package/dist/sdk/history-read.js +1 -96
- package/dist/sdk/history-redact.d.ts +1 -14
- package/dist/sdk/history-redact.js +1 -643
- package/dist/sdk/history-repair.d.ts +5 -0
- package/dist/sdk/history-repair.js +1 -657
- package/dist/sdk/improvement-ledger-validation.js +1 -62
- package/dist/sdk/improvement-ledger.js +2 -257
- package/dist/sdk/index.d.ts +4 -0
- package/dist/sdk/index.js +1 -183
- package/dist/sdk/init-agent-guidance.js +2 -496
- package/dist/sdk/init.js +2 -820
- package/dist/sdk/invocation-author.js +1 -39
- package/dist/sdk/item-children.js +1 -90
- package/dist/sdk/item-metadata-index.js +1 -15
- package/dist/sdk/item-schedule.js +1 -27
- package/dist/sdk/item-transaction.js +1 -396
- package/dist/sdk/learnings.js +1 -29
- package/dist/sdk/lifecycle/append.js +2 -53
- package/dist/sdk/lifecycle/claim.d.ts +2 -0
- package/dist/sdk/lifecycle/claim.js +1 -242
- package/dist/sdk/lifecycle/close-many.js +1 -438
- package/dist/sdk/lifecycle/close.js +1 -468
- package/dist/sdk/lifecycle/copy.js +1 -212
- package/dist/sdk/lifecycle/create.js +1 -1949
- package/dist/sdk/lifecycle/delete.js +1 -45
- package/dist/sdk/lifecycle/event-validation-messages.js +1 -91
- package/dist/sdk/lifecycle/focus.js +1 -91
- package/dist/sdk/lifecycle/hierarchy-mutation-lock.js +1 -24
- package/dist/sdk/lifecycle/legacy-none-tokens.js +1 -149
- package/dist/sdk/lifecycle/lifecycle-transitions.js +1 -40
- package/dist/sdk/lifecycle/mcp-actions.d.ts +2 -0
- package/dist/sdk/lifecycle/mcp-actions.js +1 -51
- package/dist/sdk/lifecycle/metadata-normalizers.js +1 -46
- package/dist/sdk/lifecycle/mutation-command-options.js +1 -9
- package/dist/sdk/lifecycle/plan.js +1 -1606
- package/dist/sdk/lifecycle/recurrence-parsers.js +1 -147
- package/dist/sdk/lifecycle/reopen.js +1 -68
- package/dist/sdk/lifecycle/repeatable-metadata-parsers.js +1 -143
- package/dist/sdk/lifecycle/restore.d.ts +1 -0
- package/dist/sdk/lifecycle/restore.js +1 -330
- package/dist/sdk/lifecycle/shared-unset-fields.js +1 -295
- package/dist/sdk/lifecycle/update-many.js +1 -861
- package/dist/sdk/lifecycle/update.js +1 -2136
- package/dist/sdk/lifecycle-completion.js +1 -92
- package/dist/sdk/lifecycle-policy.js +1 -120
- package/dist/sdk/linked-artifacts.js +1 -530
- package/dist/sdk/mcp/apps.js +4 -133
- package/dist/sdk/mcp/authorization.js +1 -404
- package/dist/sdk/mcp/discovery.js +1 -494
- package/dist/sdk/mcp/interactions.js +1 -336
- package/dist/sdk/mcp/protocol.d.ts +7 -0
- package/dist/sdk/mcp/protocol.js +1 -184
- package/dist/sdk/mcp/skills.js +1 -389
- package/dist/sdk/mcp/subscriptions.js +1 -211
- package/dist/sdk/mcp/tasks.js +2 -430
- package/dist/sdk/mcp/transport.js +1 -260
- package/dist/sdk/merge/abandoned-receipts.js +1 -46
- package/dist/sdk/merge/driver.js +1 -212
- package/dist/sdk/merge/index.js +1 -16
- package/dist/sdk/merge/install.js +3 -561
- package/dist/sdk/merge/receipt-file-boundary.js +1 -46
- package/dist/sdk/merge/receipt-operation.js +1 -96
- package/dist/sdk/merge/receipt-schema.js +1 -397
- package/dist/sdk/merge/receipts.js +4 -525
- package/dist/sdk/merge/reconcile.js +1 -352
- package/dist/sdk/merge/three-way.js +3 -775
- package/dist/sdk/merge.js +1 -10
- package/dist/sdk/mutation-events.js +1 -292
- package/dist/sdk/mutation-guard.js +1 -216
- package/dist/sdk/notes.js +1 -139
- package/dist/sdk/output-contracts.js +1 -172
- package/dist/sdk/output-projection.js +1 -430
- package/dist/sdk/output-token-accounting.js +1 -140
- package/dist/sdk/output.js +1 -64
- package/dist/sdk/ownership-source.js +1 -21
- package/dist/sdk/package-import-adapters.js +1 -442
- package/dist/sdk/package-migrations.js +1 -20
- package/dist/sdk/package-runtime-options.js +1 -80
- package/dist/sdk/pagination.js +1 -162
- package/dist/sdk/profile.js +1 -454
- package/dist/sdk/provenance.js +1 -258
- package/dist/sdk/public-surface.json +1 -1
- package/dist/sdk/query/activity.js +1 -401
- package/dist/sdk/query/aggregate.d.ts +16 -0
- package/dist/sdk/query/aggregate.js +1 -390
- package/dist/sdk/query/calendar.js +1 -964
- package/dist/sdk/query/complete-list.js +1 -215
- package/dist/sdk/query/context.js +1 -1702
- package/dist/sdk/query/duplicate-candidates.js +1 -70
- package/dist/sdk/query/get.js +1 -450
- package/dist/sdk/query/history.js +1 -186
- package/dist/sdk/query/item-filter-options.js +1 -9
- package/dist/sdk/query/light-metadata.js +1 -18
- package/dist/sdk/query/list-filter-shared.js +1 -81
- package/dist/sdk/query/list.js +1 -1304
- package/dist/sdk/query/multi-value-filters.js +1 -78
- package/dist/sdk/query/next.js +1 -513
- package/dist/sdk/query/parsers.js +1 -44
- package/dist/sdk/query/projection-contracts.js +1 -184
- package/dist/sdk/query/search-contracts.js +1 -230
- package/dist/sdk/query/search-pagination.js +1 -35
- package/dist/sdk/query/search-rendering.js +1 -105
- package/dist/sdk/query/search.js +2 -1987
- package/dist/sdk/query.js +1 -35
- package/dist/sdk/read-output/continuation.js +1 -194
- package/dist/sdk/read-output-budget.js +1 -135
- package/dist/sdk/read-output-contracts.js +1 -1225
- package/dist/sdk/read-output-rows.js +1 -186
- package/dist/sdk/read-output-session.js +1 -208
- package/dist/sdk/relationship-analytics.js +1 -410
- package/dist/sdk/relationship-context.js +1 -284
- package/dist/sdk/relationship-history.js +4 -519
- package/dist/sdk/relationship-kinds/contract.js +1 -22
- package/dist/sdk/relationship-migration.js +1 -77
- package/dist/sdk/relationships.js +1 -579
- package/dist/sdk/reproducibility/process.js +1 -87
- package/dist/sdk/runtime-action-aliases.js +1 -59
- package/dist/sdk/runtime-extended-actions.js +1 -177
- package/dist/sdk/runtime-input.js +1 -614
- package/dist/sdk/runtime-primitives.js +1 -84
- package/dist/sdk/runtime-public-contracts.js +1 -4
- package/dist/sdk/runtime-stats-options.js +1 -38
- package/dist/sdk/runtime.js +1 -1928
- package/dist/sdk/scheduling-shortcuts.js +1 -63
- package/dist/sdk/schema-migration.js +3 -856
- package/dist/sdk/schema.js +1 -1376
- package/dist/sdk/search-refresh-worker.js +1 -18
- package/dist/sdk/similarity-scoring.js +1 -53
- package/dist/sdk/similarity.js +1 -326
- package/dist/sdk/start-task-status.js +1 -14
- package/dist/sdk/stats.js +1 -270
- package/dist/sdk/structured-mutations.js +1 -580
- package/dist/sdk/telemetry-flush.js +1 -13
- package/dist/sdk/telemetry.js +1 -405
- package/dist/sdk/templates.js +2 -292
- package/dist/sdk/test/batch.js +2 -509
- package/dist/sdk/test/entry.js +1 -70
- package/dist/sdk/test/execution.js +6 -2211
- package/dist/sdk/test/linked-command-detection.js +1 -546
- package/dist/sdk/test/measurements.js +1 -91
- package/dist/sdk/test/parsers.js +1 -545
- package/dist/sdk/test/runs.js +1 -193
- package/dist/sdk/test/trust.js +2 -206
- package/dist/sdk/testing.js +4 -1391
- package/dist/sdk/traceability/runtime-files-lookup.js +1 -32
- package/dist/sdk/traceability/source-traceability.js +1 -292
- package/dist/sdk/tracker-root-discovery.js +1 -9
- package/dist/sdk/workspace-contracts-cache.js +1 -28
- package/dist/sdk/workspace-contracts.js +1 -33
- package/dist/sdk/workspace-memory.js +2 -318
- package/dist/sdk/workspace-recipe.js +1 -71
- package/dist/sdk/workspace-snapshot.js +4 -613
- package/dist/sdk/workspace-transaction-gc.js +1 -149
- package/dist/sdk/workspace-transaction.js +2 -363
- package/dist/sdk/workspace.js +3 -127
- package/dist/types/index.js +1 -9
- package/dist/types.js +1 -245
- package/docs/AGENT_GUIDE.md +1 -1
- package/docs/CONTEXT_ALGORITHM_PORTFOLIO.md +167 -0
- package/docs/DIAGNOSTIC_OUTPUT_CONTRACTS.md +9 -3
- package/docs/EXTENSIONS.md +1 -0
- package/docs/HISTORY_MAINTENANCE.md +125 -0
- package/docs/MCP_2026_07_28_CONFORMANCE.md +20 -10
- package/docs/PACKAGE_EVIDENCE.md +92 -0
- package/docs/PLANNING_MEASUREMENTS.md +183 -0
- package/docs/README.md +3 -0
- package/docs/RELEASING.md +1 -0
- package/docs/SCRIPTING.md +21 -0
- package/docs/TESTING.md +23 -0
- package/docs/generated/FLAG_LEXICON_BUDGETS.md +5 -5
- package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +2 -2
- package/marketplace.json +2 -2
- package/package.json +1 -1
- package/packages/pm-beads/package.json +1 -1
- package/packages/pm-calendar/package.json +1 -1
- package/packages/pm-command-kit/package.json +1 -1
- package/packages/pm-digital-twin/package.json +1 -1
- package/packages/pm-governance-audit/package.json +1 -1
- package/packages/pm-guide-shell/package.json +1 -1
- package/packages/pm-kanban/package.json +1 -1
- package/packages/pm-lifecycle-hooks/package.json +1 -1
- package/packages/pm-linked-test-adapters/package.json +1 -1
- package/packages/pm-search-advanced/package.json +1 -1
- package/packages/pm-templates/package.json +1 -1
- package/packages/pm-todos/package.json +1 -1
- package/packages/pm-vcs/package.json +1 -1
- package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
- package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
- package/scripts/finalize-build.mjs +45 -3
- package/dist/cli-bundle/chunks/chunk-AZDFJGH6.js +0 -9
- package/dist/cli-bundle/chunks/chunk-BAX2BYUW.js +0 -2111
- package/dist/cli-bundle/chunks/chunk-CKOL5U7J.js +0 -77
- package/dist/cli-bundle/chunks/chunk-OF76PSDQ.js +0 -5
- package/dist/cli-bundle/chunks/chunk-QUWFABDM.js +0 -232
- package/dist/cli-bundle/chunks/chunk-QWRRFYK3.js +0 -2
- package/dist/cli-bundle/chunks/chunk-RWWBOWJ5.js +0 -2
- package/dist/cli-bundle/chunks/chunk-WGAOYSYH.js +0 -40
- package/dist/cli-bundle/chunks/chunk-WI2AYPA7.js +0 -2
- package/dist/cli-bundle/chunks/register-list-query-5JL52D33.js +0 -11
- package/dist/cli-bundle/chunks/register-mutation-ZPG7KMVP.js +0 -20
- package/dist/cli-bundle/chunks/register-setup-H4SVAVX7.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-AL5ON6K6.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-CHC2IDXA.js +0 -6
- package/dist/cli-bundle/focused-chunks/chunk-CK6QFAPZ.js +0 -20
- package/dist/cli-bundle/focused-chunks/chunk-EZR3GHFE.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-H2WJWK7L.js +0 -56
- package/dist/cli-bundle/focused-chunks/chunk-NTPY5GSO.js +0 -3
- package/dist/cli-bundle/focused-chunks/chunk-P5O7MP5Y.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-PDMW2E36.js +0 -177
- package/dist/cli-bundle/focused-chunks/chunk-QTVCLMSZ.js +0 -6
- package/dist/cli-bundle/focused-chunks/chunk-QTZRBUYA.js +0 -8
- package/dist/cli-bundle/focused-chunks/chunk-SGQST3PQ.js +0 -12
- package/dist/cli-bundle/focused-chunks/chunk-UKHASMMP.js +0 -10
- package/dist/cli-bundle/focused-chunks/chunk-ZPEKQHOC.js +0 -2
|
@@ -1,547 +1,2 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module sdk/test/linked-command-detection
|
|
3
|
-
*
|
|
4
|
-
* Parses linked-test command invocations for sandbox and context-safety checks.
|
|
5
|
-
*/
|
|
6
|
-
// Pure, leaf-level helpers for detecting how linked-test shell commands invoke
|
|
7
|
-
// the pm CLI (directly, via npx/pnpm/npm exec, or a launcher subcommand) and for
|
|
8
|
-
// pulling structured context (subcommand, referenced item ids, runner) out of a
|
|
9
|
-
// normalized command string. Kept in core so SDK governance and CLI test
|
|
10
|
-
// execution share one dependency-direction-safe parser.
|
|
11
|
-
|
|
12
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="673a5a26-6214-58d6-af19-baee5a8359f0")}catch(e){}}();
|
|
13
|
-
import { readFileSync } from "node:fs";
|
|
14
|
-
import path from "node:path";
|
|
15
|
-
const PM_SUBCOMMANDS_WITH_ITEM_REFERENCE = new Set([
|
|
16
|
-
"get",
|
|
17
|
-
"history",
|
|
18
|
-
"restore",
|
|
19
|
-
"update",
|
|
20
|
-
"close",
|
|
21
|
-
"delete",
|
|
22
|
-
"append",
|
|
23
|
-
"claim",
|
|
24
|
-
"release",
|
|
25
|
-
"comments",
|
|
26
|
-
"notes",
|
|
27
|
-
"learnings",
|
|
28
|
-
"files",
|
|
29
|
-
"docs",
|
|
30
|
-
"deps",
|
|
31
|
-
"test",
|
|
32
|
-
]);
|
|
33
|
-
/** Public contract for pm global flags with value, shared by SDK and presentation-layer consumers. */
|
|
34
|
-
export const PM_GLOBAL_FLAGS_WITH_VALUE = new Set([
|
|
35
|
-
"--pm-path",
|
|
36
|
-
"--path",
|
|
37
|
-
"--author",
|
|
38
|
-
]);
|
|
39
|
-
/** Value-bearing flags accepted before item positionals by item-referencing commands. */
|
|
40
|
-
export const PM_ITEM_REFERENCE_FLAGS_WITH_VALUE = {
|
|
41
|
-
get: new Set([
|
|
42
|
-
"--depth",
|
|
43
|
-
"--fields",
|
|
44
|
-
"--tree-depth",
|
|
45
|
-
"--tree_depth",
|
|
46
|
-
"--at",
|
|
47
|
-
"--format",
|
|
48
|
-
]),
|
|
49
|
-
history: new Set(["--limit", "--field", "--format"]),
|
|
50
|
-
restore: new Set(["--message"]),
|
|
51
|
-
update: new Set([
|
|
52
|
-
"--title",
|
|
53
|
-
"-t",
|
|
54
|
-
"--description",
|
|
55
|
-
"-d",
|
|
56
|
-
"--body",
|
|
57
|
-
"-b",
|
|
58
|
-
"--status",
|
|
59
|
-
"-s",
|
|
60
|
-
"--close-reason",
|
|
61
|
-
"--close_reason",
|
|
62
|
-
"--priority",
|
|
63
|
-
"-p",
|
|
64
|
-
"--type",
|
|
65
|
-
"--tags",
|
|
66
|
-
"--add-tags",
|
|
67
|
-
"--add_tags",
|
|
68
|
-
"--remove-tags",
|
|
69
|
-
"--remove_tags",
|
|
70
|
-
"--deadline",
|
|
71
|
-
"--estimated-minutes",
|
|
72
|
-
"--estimate",
|
|
73
|
-
"--estimated_minutes",
|
|
74
|
-
"--acceptance-criteria",
|
|
75
|
-
"--ac",
|
|
76
|
-
"--acceptance_criteria",
|
|
77
|
-
"--definition-of-ready",
|
|
78
|
-
"--definition_of_ready",
|
|
79
|
-
"--order",
|
|
80
|
-
"--rank",
|
|
81
|
-
"--goal",
|
|
82
|
-
"--objective",
|
|
83
|
-
"--value",
|
|
84
|
-
"--impact",
|
|
85
|
-
"--outcome",
|
|
86
|
-
"--why-now",
|
|
87
|
-
"--why_now",
|
|
88
|
-
"--message",
|
|
89
|
-
"--assignee",
|
|
90
|
-
"--parent",
|
|
91
|
-
"--reviewer",
|
|
92
|
-
"--risk",
|
|
93
|
-
"--confidence",
|
|
94
|
-
"--sprint",
|
|
95
|
-
"--release",
|
|
96
|
-
"--blocked-by",
|
|
97
|
-
"--blocked_by",
|
|
98
|
-
"--blocked-reason",
|
|
99
|
-
"--blocked_reason",
|
|
100
|
-
"--unblock-note",
|
|
101
|
-
"--unblock_note",
|
|
102
|
-
"--reporter",
|
|
103
|
-
"--severity",
|
|
104
|
-
"--environment",
|
|
105
|
-
"--repro-steps",
|
|
106
|
-
"--repro_steps",
|
|
107
|
-
"--resolution",
|
|
108
|
-
"--expected-result",
|
|
109
|
-
"--expected_result",
|
|
110
|
-
"--expected",
|
|
111
|
-
"--actual-result",
|
|
112
|
-
"--actual_result",
|
|
113
|
-
"--actual",
|
|
114
|
-
"--affected-version",
|
|
115
|
-
"--affected_version",
|
|
116
|
-
"--fixed-version",
|
|
117
|
-
"--fixed_version",
|
|
118
|
-
"--component",
|
|
119
|
-
"--regression",
|
|
120
|
-
"--customer-impact",
|
|
121
|
-
"--customer_impact",
|
|
122
|
-
"--dep",
|
|
123
|
-
"--dep-remove",
|
|
124
|
-
"--dep_remove",
|
|
125
|
-
"--comment",
|
|
126
|
-
"--note",
|
|
127
|
-
"--learning",
|
|
128
|
-
"--file",
|
|
129
|
-
"--test",
|
|
130
|
-
"--doc",
|
|
131
|
-
"--reminder",
|
|
132
|
-
"--event",
|
|
133
|
-
"--type-option",
|
|
134
|
-
"--type_option",
|
|
135
|
-
"--field",
|
|
136
|
-
"--unset",
|
|
137
|
-
"--body-file",
|
|
138
|
-
]),
|
|
139
|
-
close: new Set([
|
|
140
|
-
"--reason",
|
|
141
|
-
"-r",
|
|
142
|
-
"--close-reason",
|
|
143
|
-
"--duplicate-of",
|
|
144
|
-
"-d",
|
|
145
|
-
"--message",
|
|
146
|
-
"-m",
|
|
147
|
-
"--validate-close",
|
|
148
|
-
"--resolution",
|
|
149
|
-
"--expected-result",
|
|
150
|
-
"--expected_result",
|
|
151
|
-
"--expected",
|
|
152
|
-
"--actual-result",
|
|
153
|
-
"--actual_result",
|
|
154
|
-
"--actual",
|
|
155
|
-
]),
|
|
156
|
-
delete: new Set(["--message"]),
|
|
157
|
-
append: new Set(["--body", "--text", "--message"]),
|
|
158
|
-
claim: new Set([
|
|
159
|
-
"--assignee",
|
|
160
|
-
"--message",
|
|
161
|
-
"--type",
|
|
162
|
-
"--tag",
|
|
163
|
-
"--priority",
|
|
164
|
-
"--assignee-filter",
|
|
165
|
-
"--parent",
|
|
166
|
-
"--sprint",
|
|
167
|
-
"--release",
|
|
168
|
-
"--max-attempts",
|
|
169
|
-
]),
|
|
170
|
-
release: new Set(["--assignee", "--message"]),
|
|
171
|
-
comments: new Set([
|
|
172
|
-
"--add",
|
|
173
|
-
"--body",
|
|
174
|
-
"--comment",
|
|
175
|
-
"--file",
|
|
176
|
-
"--edit",
|
|
177
|
-
"--delete",
|
|
178
|
-
"--limit",
|
|
179
|
-
"--message",
|
|
180
|
-
]),
|
|
181
|
-
notes: new Set([
|
|
182
|
-
"--add",
|
|
183
|
-
"--file",
|
|
184
|
-
"--edit",
|
|
185
|
-
"--delete",
|
|
186
|
-
"--limit",
|
|
187
|
-
"--message",
|
|
188
|
-
]),
|
|
189
|
-
learnings: new Set([
|
|
190
|
-
"--add",
|
|
191
|
-
"--file",
|
|
192
|
-
"--edit",
|
|
193
|
-
"--delete",
|
|
194
|
-
"--limit",
|
|
195
|
-
"--message",
|
|
196
|
-
]),
|
|
197
|
-
files: new Set([
|
|
198
|
-
"--add",
|
|
199
|
-
"--add-glob",
|
|
200
|
-
"--remove",
|
|
201
|
-
"--migrate",
|
|
202
|
-
"--note",
|
|
203
|
-
"--message",
|
|
204
|
-
]),
|
|
205
|
-
docs: new Set([
|
|
206
|
-
"--add",
|
|
207
|
-
"--add-glob",
|
|
208
|
-
"--remove",
|
|
209
|
-
"--migrate",
|
|
210
|
-
"--note",
|
|
211
|
-
"--message",
|
|
212
|
-
]),
|
|
213
|
-
deps: new Set([
|
|
214
|
-
"--format",
|
|
215
|
-
"--max-depth",
|
|
216
|
-
"--collapse",
|
|
217
|
-
"--node-limit",
|
|
218
|
-
"--edge-limit",
|
|
219
|
-
"--token-budget",
|
|
220
|
-
"--cursor",
|
|
221
|
-
"--direction",
|
|
222
|
-
"--kind",
|
|
223
|
-
]),
|
|
224
|
-
test: new Set([
|
|
225
|
-
"--add",
|
|
226
|
-
"--add-json",
|
|
227
|
-
"--remove",
|
|
228
|
-
"--match",
|
|
229
|
-
"--only-index",
|
|
230
|
-
"--timeout",
|
|
231
|
-
"--env-set",
|
|
232
|
-
"--env-clear",
|
|
233
|
-
"--pm-context",
|
|
234
|
-
"--message",
|
|
235
|
-
]),
|
|
236
|
-
};
|
|
237
|
-
/** Public contract for npx flags with value, shared by SDK and presentation-layer consumers. */
|
|
238
|
-
export const NPX_FLAGS_WITH_VALUE = new Set(["-p", "--package"]);
|
|
239
|
-
/** Public contract for npx flags whose value is the command string itself. */
|
|
240
|
-
export const NPX_COMMAND_STRING_FLAGS = new Set(["-c", "--call"]);
|
|
241
|
-
/** Public contract for pnpm global flags with value, shared by SDK and presentation-layer consumers. */
|
|
242
|
-
export const PNPM_GLOBAL_FLAGS_WITH_VALUE = new Set([
|
|
243
|
-
"-c",
|
|
244
|
-
"-C",
|
|
245
|
-
"--config",
|
|
246
|
-
"--dir",
|
|
247
|
-
"--filter",
|
|
248
|
-
"--workspace-dir",
|
|
249
|
-
]);
|
|
250
|
-
/** Public contract for npm global flags with value, shared by SDK and presentation-layer consumers. */
|
|
251
|
-
export const NPM_GLOBAL_FLAGS_WITH_VALUE = new Set([
|
|
252
|
-
"-C",
|
|
253
|
-
"--prefix",
|
|
254
|
-
"--userconfig",
|
|
255
|
-
"--cache",
|
|
256
|
-
]);
|
|
257
|
-
/** Public contract for yarn global flags with value, shared by SDK and presentation-layer consumers. */
|
|
258
|
-
export const YARN_GLOBAL_FLAGS_WITH_VALUE = new Set(["--cwd"]);
|
|
259
|
-
/** Public contract for bun global flags with value, shared by SDK and presentation-layer consumers. */
|
|
260
|
-
export const BUN_GLOBAL_FLAGS_WITH_VALUE = new Set(["--cwd"]);
|
|
261
|
-
/** Public contract for npm exec subcommands, shared by SDK and presentation-layer consumers. */
|
|
262
|
-
export const NPM_EXEC_SUBCOMMANDS = new Set(["exec", "x"]);
|
|
263
|
-
/** Public contract for script run subcommands, shared by SDK and presentation-layer consumers. */
|
|
264
|
-
export const SCRIPT_RUN_SUBCOMMANDS = new Set(["run", "run-script"]);
|
|
265
|
-
/** Public contract for script run flags with value, shared by SDK and presentation-layer consumers. */
|
|
266
|
-
export const SCRIPT_RUN_FLAGS_WITH_VALUE = new Set([
|
|
267
|
-
"-C",
|
|
268
|
-
"--dir",
|
|
269
|
-
"--cwd",
|
|
270
|
-
"-w",
|
|
271
|
-
"--workspace",
|
|
272
|
-
"--filter",
|
|
273
|
-
]);
|
|
274
|
-
/** Implements split normalized command segments for the public runtime surface of this module. */
|
|
275
|
-
export function splitNormalizedCommandSegments(normalizedCommand) {
|
|
276
|
-
return normalizedCommand
|
|
277
|
-
.split(/&&|\|\||\||;/)
|
|
278
|
-
.map((segment) => segment.trim())
|
|
279
|
-
.filter((segment) => segment.length > 0);
|
|
280
|
-
}
|
|
281
|
-
/** Extract pm CLI arguments from one normalized shell-command segment. */
|
|
282
|
-
export function extractPmInvocationArgsFromSegment(segment, cwd = process.cwd()) {
|
|
283
|
-
const tokens = stripLeadingEnvAssignments(segment.split(" ").filter((token) => token.length > 0));
|
|
284
|
-
if (tokens.length === 0)
|
|
285
|
-
return null;
|
|
286
|
-
const [executable, ...args] = tokens;
|
|
287
|
-
if (isPmExecutableToken(executable) || isPmCliScriptToken(executable, cwd)) {
|
|
288
|
-
return args;
|
|
289
|
-
}
|
|
290
|
-
if (executable === "node" && args[0] && isPmCliScriptToken(args[0], cwd)) {
|
|
291
|
-
return args.slice(1);
|
|
292
|
-
}
|
|
293
|
-
const invocation = executable === "npx" || executable === "bunx"
|
|
294
|
-
? parseNpxCommand(args)
|
|
295
|
-
: executable === "pnpm"
|
|
296
|
-
? parsePnpmDlxCommand(args)
|
|
297
|
-
: executable === "npm"
|
|
298
|
-
? parseNpmExecCommand(args)
|
|
299
|
-
: null;
|
|
300
|
-
return invocation &&
|
|
301
|
-
(isPmExecutableToken(invocation.command) ||
|
|
302
|
-
isPmCliPackageToken(invocation.command))
|
|
303
|
-
? invocation.args
|
|
304
|
-
: null;
|
|
305
|
-
}
|
|
306
|
-
/** Extract referenced item IDs from pm CLI invocations embedded in one command. */
|
|
307
|
-
export const extractReferencedPmItemIdsFromCommand = (command, idPrefix = "pm") => {
|
|
308
|
-
// Trim trailing dashes with an index scan: the prefix flows from workspace
|
|
309
|
-
// settings, and a /-+$/ regex backtracks polynomially on hostile dash runs
|
|
310
|
-
// (CodeQL js/polynomial-redos, alert 27).
|
|
311
|
-
const lowered = idPrefix.trim().toLowerCase();
|
|
312
|
-
let prefixEnd = lowered.length;
|
|
313
|
-
while (prefixEnd > 0 && lowered[prefixEnd - 1] === "-")
|
|
314
|
-
prefixEnd -= 1;
|
|
315
|
-
const normalizedPrefix = lowered.slice(0, prefixEnd);
|
|
316
|
-
if (normalizedPrefix.length === 0)
|
|
317
|
-
return [];
|
|
318
|
-
const normalizedCommand = command
|
|
319
|
-
.trim()
|
|
320
|
-
.replaceAll("\\", "/")
|
|
321
|
-
.replaceAll('"', "")
|
|
322
|
-
.replaceAll("'", "")
|
|
323
|
-
.replaceAll(/\s+/g, " ")
|
|
324
|
-
.toLowerCase();
|
|
325
|
-
const ids = new Set();
|
|
326
|
-
for (const segment of splitNormalizedCommandSegments(normalizedCommand)) {
|
|
327
|
-
const invocationArgs = extractPmInvocationArgsFromSegment(segment);
|
|
328
|
-
const context = invocationArgs
|
|
329
|
-
? resolvePmSubcommandContext(invocationArgs)
|
|
330
|
-
: null;
|
|
331
|
-
const candidate = context && PM_SUBCOMMANDS_WITH_ITEM_REFERENCE.has(context.subcommand)
|
|
332
|
-
? firstPositionalToken(context.remaining, PM_ITEM_REFERENCE_FLAGS_WITH_VALUE[context.subcommand])
|
|
333
|
-
: undefined;
|
|
334
|
-
const normalizedCandidate = candidate?.trim().toLowerCase();
|
|
335
|
-
if (normalizedCandidate?.startsWith(`${normalizedPrefix}-`) === true &&
|
|
336
|
-
normalizedCandidate.length > normalizedPrefix.length + 1) {
|
|
337
|
-
ids.add(candidate);
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
return [...ids].sort((left, right) => left.localeCompare(right));
|
|
341
|
-
};
|
|
342
|
-
/** Implements strip leading env assignments for the public runtime surface of this module. */
|
|
343
|
-
export function stripLeadingEnvAssignments(tokens) {
|
|
344
|
-
let start = 0;
|
|
345
|
-
if (tokens[start] === "env") {
|
|
346
|
-
start += 1;
|
|
347
|
-
}
|
|
348
|
-
while (start < tokens.length) {
|
|
349
|
-
const token = tokens[start];
|
|
350
|
-
if (/^(?:[a-z_][a-z0-9_]*|\$env:[a-z_][a-z0-9_]*)=.*/.test(token)) {
|
|
351
|
-
start += 1;
|
|
352
|
-
continue;
|
|
353
|
-
}
|
|
354
|
-
break;
|
|
355
|
-
}
|
|
356
|
-
return tokens.slice(start);
|
|
357
|
-
}
|
|
358
|
-
/** Implements first pm subcommand for the public runtime surface of this module. */
|
|
359
|
-
export function firstPmSubcommand(args) {
|
|
360
|
-
let index = 0;
|
|
361
|
-
while (index < args.length) {
|
|
362
|
-
const token = args[index];
|
|
363
|
-
if (token === "--") {
|
|
364
|
-
index += 1;
|
|
365
|
-
continue;
|
|
366
|
-
}
|
|
367
|
-
if (token.startsWith("-")) {
|
|
368
|
-
if (PM_GLOBAL_FLAGS_WITH_VALUE.has(token)) {
|
|
369
|
-
index += 2;
|
|
370
|
-
continue;
|
|
371
|
-
}
|
|
372
|
-
index += 1;
|
|
373
|
-
continue;
|
|
374
|
-
}
|
|
375
|
-
return token;
|
|
376
|
-
}
|
|
377
|
-
return undefined;
|
|
378
|
-
}
|
|
379
|
-
/** Implements check whether pm executable token for the public runtime surface of this module. */
|
|
380
|
-
export function isPmExecutableToken(token) {
|
|
381
|
-
return (token === "pm" ||
|
|
382
|
-
token === "pm.cmd" ||
|
|
383
|
-
token === "pm.exe" ||
|
|
384
|
-
token.endsWith("/pm") ||
|
|
385
|
-
token.endsWith("/pm.cmd") ||
|
|
386
|
-
token.endsWith("/pm.exe"));
|
|
387
|
-
}
|
|
388
|
-
/** Implements normalize package specifier for the public runtime surface of this module. */
|
|
389
|
-
export function normalizePackageSpecifier(token) {
|
|
390
|
-
const trimmed = token.trim();
|
|
391
|
-
if (!trimmed.startsWith("@")) {
|
|
392
|
-
const versionSeparator = trimmed.indexOf("@");
|
|
393
|
-
return versionSeparator === -1
|
|
394
|
-
? trimmed
|
|
395
|
-
: trimmed.slice(0, versionSeparator);
|
|
396
|
-
}
|
|
397
|
-
const scopeSeparator = trimmed.indexOf("/");
|
|
398
|
-
if (scopeSeparator === -1) {
|
|
399
|
-
return trimmed;
|
|
400
|
-
}
|
|
401
|
-
const versionSeparator = trimmed.indexOf("@", scopeSeparator + 1);
|
|
402
|
-
return versionSeparator === -1 ? trimmed : trimmed.slice(0, versionSeparator);
|
|
403
|
-
}
|
|
404
|
-
/** Implements check whether pm cli package token for the public runtime surface of this module. */
|
|
405
|
-
export function isPmCliPackageToken(token) {
|
|
406
|
-
const normalizedSpecifier = normalizePackageSpecifier(token);
|
|
407
|
-
return (normalizedSpecifier === "pm-cli" ||
|
|
408
|
-
normalizedSpecifier.endsWith("/pm-cli") ||
|
|
409
|
-
token === "pm-cli" ||
|
|
410
|
-
token.endsWith("/pm-cli"));
|
|
411
|
-
}
|
|
412
|
-
/** Implements check whether pm cli script token for the public runtime surface of this module. */
|
|
413
|
-
export function isPmCliScriptToken(token, cwd = process.cwd()) {
|
|
414
|
-
const normalized = token.replaceAll("\\", "/");
|
|
415
|
-
if (normalized !== "dist/cli.js" &&
|
|
416
|
-
normalized !== "./dist/cli.js" &&
|
|
417
|
-
!normalized.endsWith("/dist/cli.js")) {
|
|
418
|
-
return false;
|
|
419
|
-
}
|
|
420
|
-
const scriptPath = path.resolve(cwd, token);
|
|
421
|
-
try {
|
|
422
|
-
const packageJson = JSON.parse(readFileSync(path.join(path.dirname(path.dirname(scriptPath)), "package.json"), "utf8"));
|
|
423
|
-
return packageJson.name === "@unbrained/pm-cli";
|
|
424
|
-
}
|
|
425
|
-
catch {
|
|
426
|
-
return false;
|
|
427
|
-
}
|
|
428
|
-
}
|
|
429
|
-
/** Implements parse npx command for the public runtime surface of this module. */
|
|
430
|
-
export function parseNpxCommand(tokens) {
|
|
431
|
-
let index = 0;
|
|
432
|
-
while (index < tokens.length) {
|
|
433
|
-
const token = tokens[index];
|
|
434
|
-
if (token === "--") {
|
|
435
|
-
index += 1;
|
|
436
|
-
break;
|
|
437
|
-
}
|
|
438
|
-
if (!token.startsWith("-")) {
|
|
439
|
-
break;
|
|
440
|
-
}
|
|
441
|
-
const inlineCommandMatch = /^(?:-c|--call)=(.*)$/.exec(token);
|
|
442
|
-
if (inlineCommandMatch) {
|
|
443
|
-
const command = inlineCommandMatch[1];
|
|
444
|
-
return command ? { command, args: tokens.slice(index + 1) } : null;
|
|
445
|
-
}
|
|
446
|
-
if (NPX_COMMAND_STRING_FLAGS.has(token)) {
|
|
447
|
-
index += 1;
|
|
448
|
-
break;
|
|
449
|
-
}
|
|
450
|
-
index += NPX_FLAGS_WITH_VALUE.has(token) && !token.includes("=") ? 2 : 1;
|
|
451
|
-
}
|
|
452
|
-
const command = tokens[index];
|
|
453
|
-
if (!command) {
|
|
454
|
-
return null;
|
|
455
|
-
}
|
|
456
|
-
return {
|
|
457
|
-
command,
|
|
458
|
-
args: tokens.slice(index + 1),
|
|
459
|
-
};
|
|
460
|
-
}
|
|
461
|
-
/** Implements parse launcher subcommand for the public runtime surface of this module. */
|
|
462
|
-
export function parseLauncherSubcommand(tokens, flagsWithValue) {
|
|
463
|
-
let index = 0;
|
|
464
|
-
while (index < tokens.length) {
|
|
465
|
-
const token = tokens[index];
|
|
466
|
-
if (token === "--") {
|
|
467
|
-
index += 1;
|
|
468
|
-
continue;
|
|
469
|
-
}
|
|
470
|
-
if (token.startsWith("-")) {
|
|
471
|
-
if (token.includes("=")) {
|
|
472
|
-
index += 1;
|
|
473
|
-
continue;
|
|
474
|
-
}
|
|
475
|
-
if (flagsWithValue.has(token)) {
|
|
476
|
-
index += 2;
|
|
477
|
-
continue;
|
|
478
|
-
}
|
|
479
|
-
index += 1;
|
|
480
|
-
continue;
|
|
481
|
-
}
|
|
482
|
-
return {
|
|
483
|
-
subcommand: token,
|
|
484
|
-
args: tokens.slice(index + 1),
|
|
485
|
-
};
|
|
486
|
-
}
|
|
487
|
-
return null;
|
|
488
|
-
}
|
|
489
|
-
/** Implements parse pnpm dlx command for the public runtime surface of this module. */
|
|
490
|
-
export function parsePnpmDlxCommand(tokens) {
|
|
491
|
-
const parsed = parseLauncherSubcommand(tokens, PNPM_GLOBAL_FLAGS_WITH_VALUE);
|
|
492
|
-
if (parsed?.subcommand !== "dlx") {
|
|
493
|
-
return null;
|
|
494
|
-
}
|
|
495
|
-
return parseNpxCommand(parsed.args);
|
|
496
|
-
}
|
|
497
|
-
/** Implements parse npm exec command for the public runtime surface of this module. */
|
|
498
|
-
export function parseNpmExecCommand(tokens) {
|
|
499
|
-
const parsed = parseLauncherSubcommand(tokens, NPM_GLOBAL_FLAGS_WITH_VALUE);
|
|
500
|
-
if (!parsed || !NPM_EXEC_SUBCOMMANDS.has(parsed.subcommand)) {
|
|
501
|
-
return null;
|
|
502
|
-
}
|
|
503
|
-
return parseNpxCommand(parsed.args);
|
|
504
|
-
}
|
|
505
|
-
/** Implements resolve pm subcommand context for the public runtime surface of this module. */
|
|
506
|
-
export function resolvePmSubcommandContext(args) {
|
|
507
|
-
let index = 0;
|
|
508
|
-
while (index < args.length) {
|
|
509
|
-
const token = args[index];
|
|
510
|
-
if (token === "--") {
|
|
511
|
-
index += 1;
|
|
512
|
-
continue;
|
|
513
|
-
}
|
|
514
|
-
if (token.startsWith("-")) {
|
|
515
|
-
if (PM_GLOBAL_FLAGS_WITH_VALUE.has(token)) {
|
|
516
|
-
index += 2;
|
|
517
|
-
continue;
|
|
518
|
-
}
|
|
519
|
-
index += 1;
|
|
520
|
-
continue;
|
|
521
|
-
}
|
|
522
|
-
return {
|
|
523
|
-
subcommand: token,
|
|
524
|
-
remaining: args.slice(index + 1),
|
|
525
|
-
};
|
|
526
|
-
}
|
|
527
|
-
return null;
|
|
528
|
-
}
|
|
529
|
-
/** Implements first positional token for the public runtime surface of this module. */
|
|
530
|
-
export function firstPositionalToken(tokens, flagsWithValue = new Set()) {
|
|
531
|
-
for (let index = 0; index < tokens.length; index += 1) {
|
|
532
|
-
const token = tokens[index];
|
|
533
|
-
if (token === "--") {
|
|
534
|
-
return tokens[index + 1];
|
|
535
|
-
}
|
|
536
|
-
if (!token.startsWith("-")) {
|
|
537
|
-
return token;
|
|
538
|
-
}
|
|
539
|
-
if (!token.includes("=") &&
|
|
540
|
-
(PM_GLOBAL_FLAGS_WITH_VALUE.has(token) || flagsWithValue.has(token))) {
|
|
541
|
-
index += 1;
|
|
542
|
-
}
|
|
543
|
-
}
|
|
544
|
-
return undefined;
|
|
545
|
-
}
|
|
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]="e69d7d9b-9ae8-5337-9ea3-a8e40a62d3af")}catch(e2){}})();import{readFileSync}from"node:fs";import path from"node:path";const PM_SUBCOMMANDS_WITH_ITEM_REFERENCE=new Set(["get","history","restore","update","close","delete","append","claim","release","comments","notes","learnings","files","docs","deps","test"]);const PM_GLOBAL_FLAGS_WITH_VALUE=new Set(["--pm-path","--path","--author"]);const PM_ITEM_REFERENCE_FLAGS_WITH_VALUE={get:new Set(["--depth","--fields","--tree-depth","--tree_depth","--at","--format"]),history:new Set(["--limit","--field","--format"]),restore:new Set(["--message"]),update:new Set(["--title","-t","--description","-d","--body","-b","--status","-s","--close-reason","--close_reason","--priority","-p","--type","--tags","--add-tags","--add_tags","--remove-tags","--remove_tags","--deadline","--estimated-minutes","--estimate","--estimated_minutes","--acceptance-criteria","--ac","--acceptance_criteria","--definition-of-ready","--definition_of_ready","--order","--rank","--goal","--objective","--value","--impact","--outcome","--why-now","--why_now","--message","--assignee","--parent","--reviewer","--risk","--confidence","--sprint","--release","--blocked-by","--blocked_by","--blocked-reason","--blocked_reason","--unblock-note","--unblock_note","--reporter","--severity","--environment","--repro-steps","--repro_steps","--resolution","--expected-result","--expected_result","--expected","--actual-result","--actual_result","--actual","--affected-version","--affected_version","--fixed-version","--fixed_version","--component","--regression","--customer-impact","--customer_impact","--dep","--dep-remove","--dep_remove","--comment","--note","--learning","--file","--test","--doc","--reminder","--event","--type-option","--type_option","--field","--unset","--body-file"]),close:new Set(["--reason","-r","--close-reason","--duplicate-of","-d","--message","-m","--validate-close","--resolution","--expected-result","--expected_result","--expected","--actual-result","--actual_result","--actual"]),delete:new Set(["--message"]),append:new Set(["--body","--text","--message"]),claim:new Set(["--assignee","--message","--type","--tag","--priority","--assignee-filter","--parent","--sprint","--release","--max-attempts"]),release:new Set(["--assignee","--message"]),comments:new Set(["--add","--body","--comment","--file","--edit","--delete","--limit","--message"]),notes:new Set(["--add","--file","--edit","--delete","--limit","--message"]),learnings:new Set(["--add","--file","--edit","--delete","--limit","--message"]),files:new Set(["--add","--add-glob","--remove","--migrate","--note","--message"]),docs:new Set(["--add","--add-glob","--remove","--migrate","--note","--message"]),deps:new Set(["--format","--max-depth","--collapse","--node-limit","--edge-limit","--token-budget","--cursor","--direction","--kind"]),test:new Set(["--add","--add-json","--remove","--match","--only-index","--timeout","--env-set","--env-clear","--pm-context","--message"])};const NPX_FLAGS_WITH_VALUE=new Set(["-p","--package"]);const NPX_COMMAND_STRING_FLAGS=new Set(["-c","--call"]);const PNPM_GLOBAL_FLAGS_WITH_VALUE=new Set(["-c","-C","--config","--dir","--filter","--workspace-dir"]);const NPM_GLOBAL_FLAGS_WITH_VALUE=new Set(["-C","--prefix","--userconfig","--cache"]);const YARN_GLOBAL_FLAGS_WITH_VALUE=new Set(["--cwd"]);const BUN_GLOBAL_FLAGS_WITH_VALUE=new Set(["--cwd"]);const NPM_EXEC_SUBCOMMANDS=new Set(["exec","x"]);const SCRIPT_RUN_SUBCOMMANDS=new Set(["run","run-script"]);const SCRIPT_RUN_FLAGS_WITH_VALUE=new Set(["-C","--dir","--cwd","-w","--workspace","--filter"]);function splitNormalizedCommandSegments(normalizedCommand){return normalizedCommand.split(/&&|\|\||\||;/).map(segment=>segment.trim()).filter(segment=>segment.length>0)}function extractPmInvocationArgsFromSegment(segment,cwd=process.cwd()){const tokens=stripLeadingEnvAssignments(segment.split(" ").filter(token=>token.length>0));if(tokens.length===0)return null;const[executable,...args]=tokens;if(isPmExecutableToken(executable)||isPmCliScriptToken(executable,cwd)){return args}if(executable==="node"&&args[0]&&isPmCliScriptToken(args[0],cwd)){return args.slice(1)}const invocation=executable==="npx"||executable==="bunx"?parseNpxCommand(args):executable==="pnpm"?parsePnpmDlxCommand(args):executable==="npm"?parseNpmExecCommand(args):null;return invocation&&(isPmExecutableToken(invocation.command)||isPmCliPackageToken(invocation.command))?invocation.args:null}const extractReferencedPmItemIdsFromCommand=(command,idPrefix="pm")=>{const lowered=idPrefix.trim().toLowerCase();let prefixEnd=lowered.length;while(prefixEnd>0&&lowered[prefixEnd-1]==="-")prefixEnd-=1;const normalizedPrefix=lowered.slice(0,prefixEnd);if(normalizedPrefix.length===0)return[];const normalizedCommand=command.trim().replaceAll("\\","/").replaceAll('"',"").replaceAll("'","").replaceAll(/\s+/g," ").toLowerCase();const ids=new Set;for(const segment of splitNormalizedCommandSegments(normalizedCommand)){const invocationArgs=extractPmInvocationArgsFromSegment(segment);const context=invocationArgs?resolvePmSubcommandContext(invocationArgs):null;const candidate=context&&PM_SUBCOMMANDS_WITH_ITEM_REFERENCE.has(context.subcommand)?firstPositionalToken(context.remaining,PM_ITEM_REFERENCE_FLAGS_WITH_VALUE[context.subcommand]):void 0;const normalizedCandidate=candidate?.trim().toLowerCase();if(normalizedCandidate?.startsWith(`${normalizedPrefix}-`)===true&&normalizedCandidate.length>normalizedPrefix.length+1){ids.add(candidate)}}return[...ids].sort((left,right)=>left.localeCompare(right))};function stripLeadingEnvAssignments(tokens){let start=0;if(tokens[start]==="env"){start+=1}while(start<tokens.length){const token=tokens[start];if(/^(?:[a-z_][a-z0-9_]*|\$env:[a-z_][a-z0-9_]*)=.*/.test(token)){start+=1;continue}break}return tokens.slice(start)}function firstPmSubcommand(args){let index=0;while(index<args.length){const token=args[index];if(token==="--"){index+=1;continue}if(token.startsWith("-")){if(PM_GLOBAL_FLAGS_WITH_VALUE.has(token)){index+=2;continue}index+=1;continue}return token}return void 0}function isPmExecutableToken(token){return token==="pm"||token==="pm.cmd"||token==="pm.exe"||token.endsWith("/pm")||token.endsWith("/pm.cmd")||token.endsWith("/pm.exe")}function normalizePackageSpecifier(token){const trimmed=token.trim();if(!trimmed.startsWith("@")){const versionSeparator2=trimmed.indexOf("@");return versionSeparator2===-1?trimmed:trimmed.slice(0,versionSeparator2)}const scopeSeparator=trimmed.indexOf("/");if(scopeSeparator===-1){return trimmed}const versionSeparator=trimmed.indexOf("@",scopeSeparator+1);return versionSeparator===-1?trimmed:trimmed.slice(0,versionSeparator)}function isPmCliPackageToken(token){const normalizedSpecifier=normalizePackageSpecifier(token);return normalizedSpecifier==="pm-cli"||normalizedSpecifier.endsWith("/pm-cli")||token==="pm-cli"||token.endsWith("/pm-cli")}function isPmCliScriptToken(token,cwd=process.cwd()){const normalized=token.replaceAll("\\","/");if(normalized!=="dist/cli.js"&&normalized!=="./dist/cli.js"&&!normalized.endsWith("/dist/cli.js")){return false}const scriptPath=path.resolve(cwd,token);try{const packageJson=JSON.parse(readFileSync(path.join(path.dirname(path.dirname(scriptPath)),"package.json"),"utf8"));return packageJson.name==="@unbrained/pm-cli"}catch{return false}}function parseNpxCommand(tokens){let index=0;while(index<tokens.length){const token=tokens[index];if(token==="--"){index+=1;break}if(!token.startsWith("-")){break}const inlineCommandMatch=/^(?:-c|--call)=(.*)$/.exec(token);if(inlineCommandMatch){const command2=inlineCommandMatch[1];return command2?{command:command2,args:tokens.slice(index+1)}:null}if(NPX_COMMAND_STRING_FLAGS.has(token)){index+=1;break}index+=NPX_FLAGS_WITH_VALUE.has(token)&&!token.includes("=")?2:1}const command=tokens[index];if(!command){return null}return{command,args:tokens.slice(index+1)}}function parseLauncherSubcommand(tokens,flagsWithValue){let index=0;while(index<tokens.length){const token=tokens[index];if(token==="--"){index+=1;continue}if(token.startsWith("-")){if(token.includes("=")){index+=1;continue}if(flagsWithValue.has(token)){index+=2;continue}index+=1;continue}return{subcommand:token,args:tokens.slice(index+1)}}return null}function parsePnpmDlxCommand(tokens){const parsed=parseLauncherSubcommand(tokens,PNPM_GLOBAL_FLAGS_WITH_VALUE);if(parsed?.subcommand!=="dlx"){return null}return parseNpxCommand(parsed.args)}function parseNpmExecCommand(tokens){const parsed=parseLauncherSubcommand(tokens,NPM_GLOBAL_FLAGS_WITH_VALUE);if(!parsed||!NPM_EXEC_SUBCOMMANDS.has(parsed.subcommand)){return null}return parseNpxCommand(parsed.args)}function resolvePmSubcommandContext(args){let index=0;while(index<args.length){const token=args[index];if(token==="--"){index+=1;continue}if(token.startsWith("-")){if(PM_GLOBAL_FLAGS_WITH_VALUE.has(token)){index+=2;continue}index+=1;continue}return{subcommand:token,remaining:args.slice(index+1)}}return null}function firstPositionalToken(tokens,flagsWithValue=new Set){for(let index=0;index<tokens.length;index+=1){const token=tokens[index];if(token==="--"){return tokens[index+1]}if(!token.startsWith("-")){return token}if(!token.includes("=")&&(PM_GLOBAL_FLAGS_WITH_VALUE.has(token)||flagsWithValue.has(token))){index+=1}}return void 0}export{BUN_GLOBAL_FLAGS_WITH_VALUE,NPM_EXEC_SUBCOMMANDS,NPM_GLOBAL_FLAGS_WITH_VALUE,NPX_COMMAND_STRING_FLAGS,NPX_FLAGS_WITH_VALUE,PM_GLOBAL_FLAGS_WITH_VALUE,PM_ITEM_REFERENCE_FLAGS_WITH_VALUE,PNPM_GLOBAL_FLAGS_WITH_VALUE,SCRIPT_RUN_FLAGS_WITH_VALUE,SCRIPT_RUN_SUBCOMMANDS,YARN_GLOBAL_FLAGS_WITH_VALUE,extractPmInvocationArgsFromSegment,extractReferencedPmItemIdsFromCommand,firstPmSubcommand,firstPositionalToken,isPmCliPackageToken,isPmCliScriptToken,isPmExecutableToken,normalizePackageSpecifier,parseLauncherSubcommand,parseNpmExecCommand,parseNpxCommand,parsePnpmDlxCommand,resolvePmSubcommandContext,splitNormalizedCommandSegments,stripLeadingEnvAssignments};
|
|
546
2
|
//# sourceMappingURL=linked-command-detection.js.map
|
|
547
|
-
//# debugId=673a5a26-6214-58d6-af19-baee5a8359f0
|
|
@@ -1,92 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
!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]="6e840281-a386-57db-bee0-c9b93b27deb1")}catch(e){}}();
|
|
3
|
-
import { EXIT_CODE, PmCliError } from "../runtime-primitives.js";
|
|
4
|
-
/** Maximum measurements retained on one run summary. */
|
|
5
|
-
export const TEST_RUN_MEASUREMENT_LIMIT = 32;
|
|
6
|
-
function splitTestRunMeasurementSpecs(values) {
|
|
7
|
-
const specs = [];
|
|
8
|
-
for (const raw of values ?? []) {
|
|
9
|
-
let current = [];
|
|
10
|
-
for (const segment of raw.split(",")) {
|
|
11
|
-
const key = segment.slice(0, segment.indexOf("=")).trim();
|
|
12
|
-
if (current.length > 0 && key !== "unit" && key !== "threshold") {
|
|
13
|
-
specs.push(current.join(","));
|
|
14
|
-
current = [];
|
|
15
|
-
}
|
|
16
|
-
current.push(segment);
|
|
17
|
-
}
|
|
18
|
-
specs.push(current.join(","));
|
|
19
|
-
}
|
|
20
|
-
return specs;
|
|
21
|
-
}
|
|
22
|
-
/** Parse repeatable `name=value[,unit=...][,threshold=...]` CLI evidence. */
|
|
23
|
-
export function parseTestRunMeasurements(values, recordedAt) {
|
|
24
|
-
const measurements = splitTestRunMeasurementSpecs(values).map((raw) => {
|
|
25
|
-
const [metricPair, ...attributes] = raw.split(",");
|
|
26
|
-
const separator = metricPair.indexOf("=");
|
|
27
|
-
const name = metricPair.slice(0, separator).trim();
|
|
28
|
-
const valueText = metricPair.slice(separator + 1).trim();
|
|
29
|
-
const value = Number(valueText);
|
|
30
|
-
if (separator <= 0 ||
|
|
31
|
-
name.length === 0 ||
|
|
32
|
-
valueText.length === 0 ||
|
|
33
|
-
!Number.isFinite(value)) {
|
|
34
|
-
throw new PmCliError(`Invalid --measure "${raw}"; expected name=value[,unit=...][,threshold=...]`, EXIT_CODE.USAGE);
|
|
35
|
-
}
|
|
36
|
-
let unit;
|
|
37
|
-
let threshold;
|
|
38
|
-
for (const attribute of attributes) {
|
|
39
|
-
const attributeSeparator = attribute.indexOf("=");
|
|
40
|
-
const key = attribute.slice(0, attributeSeparator).trim();
|
|
41
|
-
const attributeValue = attribute.slice(attributeSeparator + 1).trim();
|
|
42
|
-
if (key === "unit" && attributeValue.length > 0) {
|
|
43
|
-
unit = attributeValue;
|
|
44
|
-
}
|
|
45
|
-
else if (key === "threshold" &&
|
|
46
|
-
attributeValue.length > 0 &&
|
|
47
|
-
Number.isFinite(Number(attributeValue))) {
|
|
48
|
-
threshold = Number(attributeValue);
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
throw new PmCliError(`Invalid --measure attribute "${attribute}"`, EXIT_CODE.USAGE);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
return {
|
|
55
|
-
name,
|
|
56
|
-
value,
|
|
57
|
-
unit,
|
|
58
|
-
threshold,
|
|
59
|
-
recorded_at: recordedAt,
|
|
60
|
-
};
|
|
61
|
-
});
|
|
62
|
-
const deduplicated = new Map(measurements.map((measurement) => [measurement.name, measurement]));
|
|
63
|
-
return [...deduplicated.values()]
|
|
64
|
-
.sort((left, right) => left.name.localeCompare(right.name))
|
|
65
|
-
.slice(0, TEST_RUN_MEASUREMENT_LIMIT);
|
|
66
|
-
}
|
|
67
|
-
/** Return run-bound measurements below a caller-provided metric threshold. */
|
|
68
|
-
export function queryTestRunMeasurementsBelow(runs, name, threshold) {
|
|
69
|
-
return runs.flatMap((run) => (run.measurements ?? [])
|
|
70
|
-
.filter((measurement) => measurement.name === name && measurement.value < threshold)
|
|
71
|
-
.map((measurement) => ({ ...measurement, run_id: run.run_id })));
|
|
72
|
-
}
|
|
73
|
-
/** Compare the two newest values of one metric across bounded run history. */
|
|
74
|
-
export function diffTestRunMeasurements(runs, name) {
|
|
75
|
-
const values = runs
|
|
76
|
-
.flatMap((run) => run.measurements ?? [])
|
|
77
|
-
.filter((measurement) => measurement.name === name)
|
|
78
|
-
.sort((left, right) => right.recorded_at.localeCompare(left.recorded_at));
|
|
79
|
-
const latest = values[0];
|
|
80
|
-
const previous = values[1];
|
|
81
|
-
return {
|
|
82
|
-
name,
|
|
83
|
-
latest: latest?.value ?? null,
|
|
84
|
-
previous: previous?.value ?? null,
|
|
85
|
-
delta: latest !== undefined && previous !== undefined
|
|
86
|
-
? latest.value - previous.value
|
|
87
|
-
: null,
|
|
88
|
-
unit: latest?.unit,
|
|
89
|
-
};
|
|
90
|
-
}
|
|
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]="c81415a5-81fa-57ed-936f-236841e5f066")}catch(e2){}})();import{EXIT_CODE,PmCliError}from"../runtime-primitives.js";const TEST_RUN_MEASUREMENT_LIMIT=32;function splitTestRunMeasurementSpecs(values){const specs=[];for(const raw of values??[]){let current=[];for(const segment of raw.split(",")){const key=segment.slice(0,segment.indexOf("=")).trim();if(current.length>0&&key!=="unit"&&key!=="threshold"){specs.push(current.join(","));current=[]}current.push(segment)}specs.push(current.join(","))}return specs}function parseTestRunMeasurements(values,recordedAt){const measurements=splitTestRunMeasurementSpecs(values).map(raw=>{const[metricPair,...attributes]=raw.split(",");const separator=metricPair.indexOf("=");const name=metricPair.slice(0,separator).trim();const valueText=metricPair.slice(separator+1).trim();const value=Number(valueText);if(separator<=0||name.length===0||valueText.length===0||!Number.isFinite(value)){throw new PmCliError(`Invalid --measure "${raw}"; expected name=value[,unit=...][,threshold=...]`,EXIT_CODE.USAGE)}let unit;let threshold;for(const attribute of attributes){const attributeSeparator=attribute.indexOf("=");const key=attribute.slice(0,attributeSeparator).trim();const attributeValue=attribute.slice(attributeSeparator+1).trim();if(key==="unit"&&attributeValue.length>0){unit=attributeValue}else if(key==="threshold"&&attributeValue.length>0&&Number.isFinite(Number(attributeValue))){threshold=Number(attributeValue)}else{throw new PmCliError(`Invalid --measure attribute "${attribute}"`,EXIT_CODE.USAGE)}}return{name,value,unit,threshold,recorded_at:recordedAt}});const deduplicated=new Map(measurements.map(measurement=>[measurement.name,measurement]));return[...deduplicated.values()].sort((left,right)=>left.name.localeCompare(right.name)).slice(0,TEST_RUN_MEASUREMENT_LIMIT)}function queryTestRunMeasurementsBelow(runs,name,threshold){return runs.flatMap(run=>(run.measurements??[]).filter(measurement=>measurement.name===name&&measurement.value<threshold).map(measurement=>({...measurement,run_id:run.run_id})))}function diffTestRunMeasurements(runs,name){const values=runs.flatMap(run=>run.measurements??[]).filter(measurement=>measurement.name===name).sort((left,right)=>right.recorded_at.localeCompare(left.recorded_at));const latest=values[0];const previous=values[1];return{name,latest:latest?.value??null,previous:previous?.value??null,delta:latest!==void 0&&previous!==void 0?latest.value-previous.value:null,unit:latest?.unit}}export{TEST_RUN_MEASUREMENT_LIMIT,diffTestRunMeasurements,parseTestRunMeasurements,queryTestRunMeasurementsBelow};
|
|
91
2
|
//# sourceMappingURL=measurements.js.map
|
|
92
|
-
//# debugId=6e840281-a386-57db-bee0-c9b93b27deb1
|