@unbrained/pm-cli 2026.9.7 → 2026.9.9
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 +7 -2
- package/.agents/skills/pm-user/references/ECOSYSTEM_PLANNING.md +95 -0
- package/.claude-plugin/marketplace.json +2 -2
- package/CHANGELOG.md +231 -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.d.ts +0 -5
- 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-NPN5I67J.js → chunk-3IPRM75M.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-4VL5P22L.js +2 -0
- package/dist/cli-bundle/chunks/chunk-AAFBV3U3.js +29 -0
- package/dist/cli-bundle/chunks/chunk-D3YVILJJ.js +20 -0
- package/dist/cli-bundle/chunks/{chunk-WYRZZ5ZE.js → chunk-DEZPZOQ7.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-ECBLPN7B.js +3 -0
- package/dist/cli-bundle/chunks/chunk-J6ERHBV2.js +235 -0
- package/dist/cli-bundle/chunks/chunk-JUNJ5EKI.js +2 -0
- package/dist/cli-bundle/chunks/chunk-L5RCDKQ2.js +2 -0
- package/dist/cli-bundle/chunks/chunk-NSAPNEYH.js +2 -0
- package/dist/cli-bundle/chunks/chunk-OHNLSGGV.js +79 -0
- package/dist/cli-bundle/chunks/chunk-WQKMSFBV.js +5 -0
- package/dist/cli-bundle/chunks/{chunk-BAX2BYUW.js → chunk-XZ6T7YPP.js} +256 -150
- package/dist/cli-bundle/chunks/{chunk-JT6XF6GE.js → chunk-Z3XVXUVF.js} +4 -4
- package/dist/cli-bundle/chunks/register-list-query-UIHRCS6D.js +11 -0
- package/dist/cli-bundle/chunks/register-mutation-WHWMGRVX.js +20 -0
- package/dist/cli-bundle/chunks/register-operations-64YZYTC5.js +2 -0
- package/dist/cli-bundle/chunks/register-setup-PERI45EM.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-2W4XIYOB.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-2WSBXIGF.js +12 -0
- package/dist/cli-bundle/focused-chunks/chunk-5FHTCOHS.js +3 -0
- package/dist/cli-bundle/focused-chunks/chunk-7N6DOREF.js +26 -0
- package/dist/cli-bundle/focused-chunks/{chunk-3BZEOXLT.js → chunk-7PC4R5QB.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-BUCJUZVG.js +6 -0
- package/dist/cli-bundle/focused-chunks/chunk-FE3BABLJ.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-IWITF53W.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-OQUGRHKV.js +10 -0
- package/dist/cli-bundle/focused-chunks/{chunk-M6PBRFSH.js → chunk-PNKIANFZ.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-LIJIA4TY.js → chunk-QQQ4SAUO.js} +3 -3
- package/dist/cli-bundle/focused-chunks/chunk-TTYXF5YD.js +177 -0
- package/dist/cli-bundle/focused-chunks/chunk-XNR3DM6J.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-XSS3APUF.js +9 -0
- package/dist/cli-bundle/focused-chunks/chunk-YCDQ2N23.js +8 -0
- package/dist/cli-bundle/focused-chunks/chunk-YJUXGS57.js +20 -0
- package/dist/cli-bundle/focused-chunks/chunk-ZTCE4UO6.js +58 -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 +37 -37
- 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/policy/workflow-policy-schema.d.ts +312 -0
- package/dist/core/policy/workflow-policy-schema.js +2 -0
- package/dist/core/policy/workflow-policy-store.d.ts +24 -0
- package/dist/core/policy/workflow-policy-store.js +2 -0
- package/dist/core/policy/workflow-policy.d.ts +139 -0
- package/dist/core/policy/workflow-policy.js +2 -0
- 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.d.ts +1 -0
- 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.d.ts +1 -1
- 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 +174 -839
- 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.d.ts +3 -1
- package/dist/sdk/governance/validate.js +1 -2261
- package/dist/sdk/governance/workflow-completeness.d.ts +32 -0
- package/dist/sdk/governance/workflow-completeness.js +2 -0
- package/dist/sdk/governance/workflow-policy.d.ts +47 -0
- package/dist/sdk/governance/workflow-policy.js +4 -0
- package/dist/sdk/governance/workspace-position.js +1 -163
- package/dist/sdk/governance.d.ts +2 -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 -1
- 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.d.ts +1 -1
- 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.d.ts +27 -0
- 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.d.ts +6 -4
- 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.d.ts +1 -1
- 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.d.ts +2 -1
- package/dist/sdk/runtime-public-contracts.js +1 -4
- package/dist/sdk/runtime-stats-options.js +1 -38
- package/dist/sdk/runtime.d.ts +4 -0
- 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.d.ts +2 -1
- 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.d.ts +4 -0
- package/dist/types.js +1 -245
- package/docs/AGENT_GUIDE.md +1 -1
- package/docs/COMMANDS.md +10 -0
- package/docs/CONFIGURATION.md +12 -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 +4 -0
- package/docs/READ_OUTPUT_CONTRACTS.md +5 -0
- package/docs/SCRIPTING.md +21 -0
- package/docs/TESTING.md +33 -0
- package/docs/WORKFLOW_POLICIES.md +129 -0
- package/docs/generated/FLAG_LEXICON_BUDGETS.md +7 -7
- package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +11 -5
- package/marketplace.json +2 -2
- package/package.json +5 -5
- 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-CKOL5U7J.js +0 -77
- package/dist/cli-bundle/chunks/chunk-JX4DH4WC.js +0 -3
- 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-operations-I5W3KMGB.js +0 -2
- 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-PEFABF7E.js +0 -26
- 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,125 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* @module sdk/graph/scheduling
|
|
3
|
-
*
|
|
4
|
-
* Critical Path Method (CPM) scheduling over the order-bearing relationship
|
|
5
|
-
* DAG. The forward pass — topological order, earliest-start distances, the
|
|
6
|
-
* longest deterministic path, and genuine-cycle isolation — is reused from the
|
|
7
|
-
* exact execution analysis; this module adds the backward pass that derives
|
|
8
|
-
* each task's latest start, latest finish, and total float (slack), then
|
|
9
|
-
* classifies zero-slack tasks as critical. Durations are unit-weighted so the
|
|
10
|
-
* schedule is deterministic and metadata-independent: slack counts how many
|
|
11
|
-
* whole prerequisite hops a task can drift without extending the makespan.
|
|
12
|
-
* Only tasks with a well-defined earliest start are scheduled: nodes with no
|
|
13
|
-
* order-bearing edge, genuine ordering cycles, and any task transitively gated
|
|
14
|
-
* by a cycle (whose earliest start is undefined) are all omitted from `rows`.
|
|
15
|
-
* Genuine ordering cycles are additionally reported in `cycles`.
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
!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]="f155ac72-64eb-5316-b016-954abd48c0e7")}catch(e){}}();
|
|
19
|
-
import { analyzeRelationshipExecution, } from "../relationship-analytics.js";
|
|
20
|
-
import { orientOrderingEdge } from "./traversal.js";
|
|
21
|
-
/**
|
|
22
|
-
* Collect the execution-oriented forward adjacency and the set of tasks that
|
|
23
|
-
* carry any order-bearing edge. Each ordering edge is oriented through the
|
|
24
|
-
* registry's declared precedence so inverse spellings agree, and self-loops
|
|
25
|
-
* (which the execution cycle analysis reports) never enter the adjacency.
|
|
26
|
-
*/
|
|
27
|
-
function collectOrderingParticipation(graph) {
|
|
28
|
-
const registry = graph.registry();
|
|
29
|
-
const forward = new Map();
|
|
30
|
-
const participants = new Set();
|
|
31
|
-
for (const edge of graph.edges()) {
|
|
32
|
-
const definition = registry.require(edge.kind);
|
|
33
|
-
if (!definition.ordering)
|
|
34
|
-
continue;
|
|
35
|
-
const { predecessor, successor } = orientOrderingEdge(edge, definition);
|
|
36
|
-
participants.add(predecessor);
|
|
37
|
-
participants.add(successor);
|
|
38
|
-
if (predecessor === successor)
|
|
39
|
-
continue;
|
|
40
|
-
const targets = forward.get(predecessor);
|
|
41
|
-
if (targets === undefined)
|
|
42
|
-
forward.set(predecessor, new Set([successor]));
|
|
43
|
-
else
|
|
44
|
-
targets.add(successor);
|
|
45
|
-
}
|
|
46
|
-
return { forward, participants };
|
|
47
|
-
}
|
|
48
|
-
/** Resolve a task's latest finish from its acyclic successors, or the makespan when it has none. */
|
|
49
|
-
function latestFinishFor(successors, acyclic, latestStart, makespan) {
|
|
50
|
-
if (successors === undefined)
|
|
51
|
-
return makespan;
|
|
52
|
-
let bound = makespan;
|
|
53
|
-
for (const successor of successors) {
|
|
54
|
-
if (!acyclic.has(successor))
|
|
55
|
-
continue;
|
|
56
|
-
bound = Math.min(bound, latestStart.get(successor));
|
|
57
|
-
}
|
|
58
|
-
return bound;
|
|
59
|
-
}
|
|
60
|
-
/** Build one scheduled row from the forward earliest-start depth and backward latest-start. */
|
|
61
|
-
function scheduleRow(id, earliestStart, latestStart) {
|
|
62
|
-
const slack = latestStart - earliestStart;
|
|
63
|
-
return {
|
|
64
|
-
id,
|
|
65
|
-
earliestStart,
|
|
66
|
-
earliestFinish: earliestStart + 1,
|
|
67
|
-
latestStart,
|
|
68
|
-
latestFinish: latestStart + 1,
|
|
69
|
-
slack,
|
|
70
|
-
critical: slack === 0,
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
/** Run the backward CPM pass over the acyclic participants in reverse topological order. */
|
|
74
|
-
function computeScheduleRows(topoParticipants, participation, depth, acyclic, makespan) {
|
|
75
|
-
const latestStart = new Map();
|
|
76
|
-
for (let index = topoParticipants.length - 1; index >= 0; index -= 1) {
|
|
77
|
-
const id = topoParticipants[index];
|
|
78
|
-
const finish = latestFinishFor(participation.forward.get(id), acyclic, latestStart, makespan);
|
|
79
|
-
latestStart.set(id, finish - 1);
|
|
80
|
-
}
|
|
81
|
-
return topoParticipants
|
|
82
|
-
.map((id) => scheduleRow(id, depth[id], latestStart.get(id)))
|
|
83
|
-
.sort((left, right) => left.slack - right.slack ||
|
|
84
|
-
left.earliestStart - right.earliestStart ||
|
|
85
|
-
left.id.localeCompare(right.id));
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Compute the deterministic critical-path schedule of the order-bearing
|
|
89
|
-
* subgraph. Earliest-start distances and the critical path come from the exact
|
|
90
|
-
* execution analysis; the backward pass then assigns each task the latest start
|
|
91
|
-
* that preserves the makespan and reports total float as `slack`. Zero-slack
|
|
92
|
-
* tasks are `critical`. Only tasks with a well-defined earliest start are
|
|
93
|
-
* scheduled: tasks with no order-bearing edge, tasks on a genuine ordering
|
|
94
|
-
* cycle, and tasks transitively gated by a cycle (excluded from Kahn's partial
|
|
95
|
-
* order) are all omitted from `rows`; genuine cycles are reported in `cycles`.
|
|
96
|
-
*/
|
|
97
|
-
export function analyzeRelationshipSchedule(graph, options = {}) {
|
|
98
|
-
options.signal?.throwIfAborted();
|
|
99
|
-
const execution = analyzeRelationshipExecution(graph, { registry: graph.registry() });
|
|
100
|
-
const participation = collectOrderingParticipation(graph);
|
|
101
|
-
const acyclic = new Set(execution.order);
|
|
102
|
-
const topoParticipants = execution.order.filter((id) => participation.participants.has(id));
|
|
103
|
-
const makespan = topoParticipants.reduce((peak, id) => Math.max(peak, execution.depth[id] + 1), 0);
|
|
104
|
-
const rows = computeScheduleRows(topoParticipants, participation, execution.depth, acyclic, makespan);
|
|
105
|
-
const scheduled = rows.length > 0;
|
|
106
|
-
return {
|
|
107
|
-
exact: true,
|
|
108
|
-
acyclic: execution.acyclic,
|
|
109
|
-
makespan,
|
|
110
|
-
scheduledCount: rows.length,
|
|
111
|
-
// A single-node execution "path" over a workspace with no order-bearing
|
|
112
|
-
// edge is not a real critical path, so report it only when work is scheduled.
|
|
113
|
-
criticalPath: scheduled ? execution.criticalPath : [],
|
|
114
|
-
criticalPathLength: scheduled ? execution.criticalPathLength : 0,
|
|
115
|
-
cycles: execution.cycles,
|
|
116
|
-
rows,
|
|
117
|
-
provenance: {
|
|
118
|
-
algorithm: "critical-path-method",
|
|
119
|
-
edgeFamily: "ordering",
|
|
120
|
-
weighting: "unit",
|
|
121
|
-
},
|
|
122
|
-
};
|
|
123
|
-
}
|
|
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]="1c9d9d0c-e989-568c-a49a-202f77e94806")}catch(e2){}})();import{analyzeRelationshipExecution}from"../relationship-analytics.js";import{orientOrderingEdge}from"./traversal.js";function collectOrderingParticipation(graph){const registry=graph.registry();const forward=new Map;const participants=new Set;for(const edge of graph.edges()){const definition=registry.require(edge.kind);if(!definition.ordering)continue;const{predecessor,successor}=orientOrderingEdge(edge,definition);participants.add(predecessor);participants.add(successor);if(predecessor===successor)continue;const targets=forward.get(predecessor);if(targets===void 0)forward.set(predecessor,new Set([successor]));else targets.add(successor)}return{forward,participants}}function latestFinishFor(successors,acyclic,latestStart,makespan){if(successors===void 0)return makespan;let bound=makespan;for(const successor of successors){if(!acyclic.has(successor))continue;bound=Math.min(bound,latestStart.get(successor))}return bound}function scheduleRow(id,earliestStart,latestStart){const slack=latestStart-earliestStart;return{id,earliestStart,earliestFinish:earliestStart+1,latestStart,latestFinish:latestStart+1,slack,critical:slack===0}}function computeScheduleRows(topoParticipants,participation,depth,acyclic,makespan){const latestStart=new Map;for(let index=topoParticipants.length-1;index>=0;index-=1){const id=topoParticipants[index];const finish=latestFinishFor(participation.forward.get(id),acyclic,latestStart,makespan);latestStart.set(id,finish-1)}return topoParticipants.map(id=>scheduleRow(id,depth[id],latestStart.get(id))).sort((left,right)=>left.slack-right.slack||left.earliestStart-right.earliestStart||left.id.localeCompare(right.id))}function analyzeRelationshipSchedule(graph,options={}){options.signal?.throwIfAborted();const execution=analyzeRelationshipExecution(graph,{registry:graph.registry()});const participation=collectOrderingParticipation(graph);const acyclic=new Set(execution.order);const topoParticipants=execution.order.filter(id=>participation.participants.has(id));const makespan=topoParticipants.reduce((peak,id)=>Math.max(peak,execution.depth[id]+1),0);const rows=computeScheduleRows(topoParticipants,participation,execution.depth,acyclic,makespan);const scheduled=rows.length>0;return{exact:true,acyclic:execution.acyclic,makespan,scheduledCount:rows.length,criticalPath:scheduled?execution.criticalPath:[],criticalPathLength:scheduled?execution.criticalPathLength:0,cycles:execution.cycles,rows,provenance:{algorithm:"critical-path-method",edgeFamily:"ordering",weighting:"unit"}}}export{analyzeRelationshipSchedule};
|
|
124
2
|
//# sourceMappingURL=scheduling.js.map
|
|
125
|
-
//# debugId=f155ac72-64eb-5316-b016-954abd48c0e7
|
|
@@ -1,285 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
!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]="ac2b3cd9-5a98-5fea-888c-e96de8cd593d")}catch(e){}}();
|
|
4
|
-
const DEFAULT_MAX_PATHS = 5;
|
|
5
|
-
/** Default expansion-safety bound for bounded path enumeration. */
|
|
6
|
-
const DEFAULT_MAX_VISITED_PATHS = 10_000;
|
|
7
|
-
/** Default depth bound applied to bounded path enumeration. */
|
|
8
|
-
const DEFAULT_PATH_MAX_DEPTH = 8;
|
|
9
|
-
/** Require a finite non-negative integer for one path-enumeration bound. */
|
|
10
|
-
function assertPathBound(name, value) {
|
|
11
|
-
if (!Number.isFinite(value) || !Number.isInteger(value) || value < 0)
|
|
12
|
-
throw new TypeError(`Invalid path ${name} bound: ${String(value)}`);
|
|
13
|
-
}
|
|
14
|
-
/** Endpoint of a hierarchy edge that represents the structural parent. */
|
|
15
|
-
export function hierarchyParentEndpoint(edge, definition) {
|
|
16
|
-
// Custom hierarchy kinds may omit the direction; the registry documents the
|
|
17
|
-
// source endpoint as the default parent.
|
|
18
|
-
return definition.hierarchyDirection === "target_parent"
|
|
19
|
-
? edge.target
|
|
20
|
-
: edge.source;
|
|
21
|
-
}
|
|
22
|
-
/** Endpoint of an ordering edge that must finish first. */
|
|
23
|
-
export function orderingPredecessorEndpoint(edge, definition) {
|
|
24
|
-
// Ordering kinds registered without explicit precedence default to
|
|
25
|
-
// source-before-target, matching the execution-analytics interpretation.
|
|
26
|
-
return (definition.precedence ?? "source_before_target") ===
|
|
27
|
-
"target_before_source"
|
|
28
|
-
? edge.target
|
|
29
|
-
: edge.source;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Orient one ordering edge into its execution direction — the predecessor that
|
|
33
|
-
* must finish first and the successor it gates — honoring the kind's declared
|
|
34
|
-
* precedence so inverse spellings (`blocked_by`/`blocks`) agree. This is the
|
|
35
|
-
* single ordering-orientation primitive shared by scheduling and degree
|
|
36
|
-
* analytics.
|
|
37
|
-
*/
|
|
38
|
-
export function orientOrderingEdge(edge, definition) {
|
|
39
|
-
const predecessor = orderingPredecessorEndpoint(edge, definition);
|
|
40
|
-
return {
|
|
41
|
-
predecessor,
|
|
42
|
-
successor: predecessor === edge.source ? edge.target : edge.source,
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
/** Validate optional kind filters against one semantic edge family. */
|
|
46
|
-
function resolveFamilyKinds(graph, kinds, family) {
|
|
47
|
-
if (kinds === undefined)
|
|
48
|
-
return undefined;
|
|
49
|
-
const registry = graph.registry();
|
|
50
|
-
const resolved = new Set();
|
|
51
|
-
for (const kind of kinds) {
|
|
52
|
-
const definition = registry.require(kind);
|
|
53
|
-
// Registry registration normalizes this optional compatibility field before
|
|
54
|
-
// definitions become queryable.
|
|
55
|
-
const traversal = definition.traversal;
|
|
56
|
-
if (traversal === "association")
|
|
57
|
-
throw new TypeError(`Relationship kind ${definition.kind} uses association traversal; use graph impact --direction both`);
|
|
58
|
-
if (traversal !== family && traversal !== "semantic") {
|
|
59
|
-
const redirect = traversal === "hierarchy"
|
|
60
|
-
? "graph ancestors or graph descendants"
|
|
61
|
-
: "graph predecessors or graph successors";
|
|
62
|
-
throw new TypeError(`Relationship kind ${definition.kind} uses ${traversal} traversal; use ${redirect}`);
|
|
63
|
-
}
|
|
64
|
-
resolved.add(definition.kind);
|
|
65
|
-
}
|
|
66
|
-
return resolved;
|
|
67
|
-
}
|
|
68
|
-
/** Expand one node into its deterministic semantic neighbors. */
|
|
69
|
-
function expandSemanticNeighbors(graph, nodeId, familyKinds, family, matches) {
|
|
70
|
-
const registry = graph.registry();
|
|
71
|
-
const rows = graph.neighborEdges(nodeId, {
|
|
72
|
-
direction: "both",
|
|
73
|
-
...(familyKinds === undefined ? {} : { kinds: [...familyKinds] }),
|
|
74
|
-
});
|
|
75
|
-
const neighbors = [];
|
|
76
|
-
const seen = new Set();
|
|
77
|
-
for (const row of rows.value) {
|
|
78
|
-
const definition = registry.require(row.edge.kind);
|
|
79
|
-
if (familyKinds === undefined && !definition[family])
|
|
80
|
-
continue;
|
|
81
|
-
if (!matches(row, definition, nodeId))
|
|
82
|
-
continue;
|
|
83
|
-
if (seen.has(row.id))
|
|
84
|
-
continue;
|
|
85
|
-
seen.add(row.id);
|
|
86
|
-
neighbors.push(row.id);
|
|
87
|
-
}
|
|
88
|
-
return { neighbors, inspectedEdges: rows.meta.inspectedEdges };
|
|
89
|
-
}
|
|
90
|
-
/** Append one semantic expansion and report whether the page limit was reached. */
|
|
91
|
-
function appendSemanticExpansion(expansion, currentDepth, maxDepth, limit, after, state) {
|
|
92
|
-
if (currentDepth >= maxDepth) {
|
|
93
|
-
if (expansion.neighbors.some((neighbor) => !state.seen.has(neighbor)))
|
|
94
|
-
state.truncated = true;
|
|
95
|
-
return false;
|
|
96
|
-
}
|
|
97
|
-
for (const neighbor of expansion.neighbors) {
|
|
98
|
-
if (state.seen.has(neighbor))
|
|
99
|
-
continue;
|
|
100
|
-
state.seen.add(neighbor);
|
|
101
|
-
state.queue.push({ id: neighbor, depth: currentDepth + 1 });
|
|
102
|
-
if (!state.resumed) {
|
|
103
|
-
if (neighbor === after)
|
|
104
|
-
state.resumed = true;
|
|
105
|
-
continue;
|
|
106
|
-
}
|
|
107
|
-
if (state.value.length >= limit) {
|
|
108
|
-
state.truncated = true;
|
|
109
|
-
return true;
|
|
110
|
-
}
|
|
111
|
-
state.value.push(neighbor);
|
|
112
|
-
}
|
|
113
|
-
return false;
|
|
114
|
-
}
|
|
115
|
-
/** Run one deterministic bounded breadth-first semantic walk. */
|
|
116
|
-
function boundedSemanticWalk(graph, start, options, family, matches) {
|
|
117
|
-
if (!graph.hasNode(start))
|
|
118
|
-
throw new TypeError(`Relationship node not found: ${start}`);
|
|
119
|
-
const familyKinds = resolveFamilyKinds(graph, options.kinds, family);
|
|
120
|
-
const limit = options.limit ?? Number.POSITIVE_INFINITY;
|
|
121
|
-
const maxDepth = options.maxDepth ?? Number.POSITIVE_INFINITY;
|
|
122
|
-
const after = options.after;
|
|
123
|
-
const state = {
|
|
124
|
-
seen: new Set([start]),
|
|
125
|
-
value: [],
|
|
126
|
-
queue: [{ id: start, depth: 0 }],
|
|
127
|
-
resumed: after === undefined,
|
|
128
|
-
truncated: false,
|
|
129
|
-
};
|
|
130
|
-
let visitedNodes = 0;
|
|
131
|
-
let inspectedEdges = 0;
|
|
132
|
-
for (let index = 0; index < state.queue.length; index += 1) {
|
|
133
|
-
options.signal?.throwIfAborted();
|
|
134
|
-
const current = state.queue[index];
|
|
135
|
-
visitedNodes += 1;
|
|
136
|
-
const expansion = expandSemanticNeighbors(graph, current.id, familyKinds, family, matches);
|
|
137
|
-
inspectedEdges += expansion.inspectedEdges;
|
|
138
|
-
if (appendSemanticExpansion(expansion, current.depth, maxDepth, limit, after, state))
|
|
139
|
-
break;
|
|
140
|
-
}
|
|
141
|
-
if (!state.resumed)
|
|
142
|
-
throw new TypeError(`Traversal cursor not found in sequence: ${after}`);
|
|
143
|
-
return {
|
|
144
|
-
value: state.value,
|
|
145
|
-
meta: {
|
|
146
|
-
visitedNodes,
|
|
147
|
-
inspectedEdges,
|
|
148
|
-
truncated: state.truncated,
|
|
149
|
-
nextCursor: state.value.at(-1),
|
|
150
|
-
},
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
/** Validate one path endpoint against the indexed graph. */
|
|
154
|
-
function assertPathEndpoint(graph, id) {
|
|
155
|
-
if (!graph.hasNode(id))
|
|
156
|
-
throw new TypeError(`Relationship node not found: ${id}`);
|
|
157
|
-
}
|
|
158
|
-
/** Return eligible simple-path continuations and account for inspected edges. */
|
|
159
|
-
function readPathContinuations(graph, partial, options, direction, state) {
|
|
160
|
-
const rows = graph.neighborEdges(partial.nodes.at(-1), {
|
|
161
|
-
direction,
|
|
162
|
-
...(options.kinds === undefined ? {} : { kinds: options.kinds }),
|
|
163
|
-
});
|
|
164
|
-
state.inspectedEdges += rows.meta.inspectedEdges;
|
|
165
|
-
return rows.value.filter((row) => !partial.nodeSet.has(row.id));
|
|
166
|
-
}
|
|
167
|
-
/** Expand one partial simple path and report whether the probe cap was reached. */
|
|
168
|
-
function expandPartialPath(graph, partial, target, options, direction, probeLimit, state) {
|
|
169
|
-
for (const row of readPathContinuations(graph, partial, options, direction, state)) {
|
|
170
|
-
const nodes = [...partial.nodes, row.id];
|
|
171
|
-
const nodeSet = new Set(partial.nodeSet).add(row.id);
|
|
172
|
-
const edges = [...partial.edges, row.edge];
|
|
173
|
-
if (row.id === target) {
|
|
174
|
-
state.value.push({ nodes, edges, length: edges.length });
|
|
175
|
-
if (state.value.length >= probeLimit)
|
|
176
|
-
return true;
|
|
177
|
-
}
|
|
178
|
-
else {
|
|
179
|
-
state.queue.push({ nodes, nodeSet, edges });
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
return false;
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* Return the bounded transitive hierarchy ancestors of one node in
|
|
186
|
-
* breadth-first discovery order, honoring each hierarchy kind's declared
|
|
187
|
-
* parent endpoint (so `parent` and inverse `child` spellings agree).
|
|
188
|
-
*/
|
|
189
|
-
export function hierarchyAncestors(graph, id, options = {}) {
|
|
190
|
-
return boundedSemanticWalk(graph, id, options, "hierarchy", (row, definition) => hierarchyParentEndpoint(row.edge, definition) === row.id);
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* Return the bounded transitive hierarchy descendants of one node in
|
|
194
|
-
* breadth-first discovery order, honoring each hierarchy kind's declared
|
|
195
|
-
* parent endpoint.
|
|
196
|
-
*/
|
|
197
|
-
export function hierarchyDescendants(graph, id, options = {}) {
|
|
198
|
-
return boundedSemanticWalk(graph, id, options, "hierarchy", (row, definition, nodeId) => hierarchyParentEndpoint(row.edge, definition) === nodeId);
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Return the bounded transitive execution predecessors of one node — the work
|
|
202
|
-
* that must finish before it — in breadth-first discovery order, honoring each
|
|
203
|
-
* ordering kind's declared precedence (so `blocked_by` and inverse `blocks`
|
|
204
|
-
* spellings agree).
|
|
205
|
-
*/
|
|
206
|
-
export function orderingPredecessors(graph, id, options = {}) {
|
|
207
|
-
return boundedSemanticWalk(graph, id, options, "ordering", (row, definition) => orderingPredecessorEndpoint(row.edge, definition) === row.id);
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* Return the bounded transitive execution successors of one node — the work
|
|
211
|
-
* this node gates — in breadth-first discovery order, honoring each ordering
|
|
212
|
-
* kind's declared precedence.
|
|
213
|
-
*/
|
|
214
|
-
export function orderingSuccessors(graph, id, options = {}) {
|
|
215
|
-
return boundedSemanticWalk(graph, id, options, "ordering", (row, definition, nodeId) => orderingPredecessorEndpoint(row.edge, definition) === nodeId);
|
|
216
|
-
}
|
|
217
|
-
/** Run bounded non-zero path enumeration after public option validation. */
|
|
218
|
-
function enumerateNonZeroRelationshipPaths(graph, source, target, options, maxPaths, maxVisitedPaths, maxDepth, direction) {
|
|
219
|
-
const state = {
|
|
220
|
-
value: [],
|
|
221
|
-
queue: [{ nodes: [source], nodeSet: new Set([source]), edges: [] }],
|
|
222
|
-
inspectedEdges: 0,
|
|
223
|
-
};
|
|
224
|
-
let visitedNodes = 0;
|
|
225
|
-
let truncated = false;
|
|
226
|
-
const probeLimit = maxPaths + 1;
|
|
227
|
-
for (let index = 0; index < state.queue.length; index += 1) {
|
|
228
|
-
options.signal?.throwIfAborted();
|
|
229
|
-
if (state.value.length >= probeLimit || visitedNodes >= maxVisitedPaths) {
|
|
230
|
-
truncated = true;
|
|
231
|
-
break;
|
|
232
|
-
}
|
|
233
|
-
const partial = state.queue[index];
|
|
234
|
-
visitedNodes += 1;
|
|
235
|
-
if (partial.edges.length >= maxDepth) {
|
|
236
|
-
if (readPathContinuations(graph, partial, options, direction, state)
|
|
237
|
-
.length > 0)
|
|
238
|
-
truncated = true;
|
|
239
|
-
continue;
|
|
240
|
-
}
|
|
241
|
-
if (expandPartialPath(graph, partial, target, options, direction, probeLimit, state)) {
|
|
242
|
-
truncated = true;
|
|
243
|
-
break;
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
return {
|
|
247
|
-
value: state.value.slice(0, maxPaths),
|
|
248
|
-
meta: { visitedNodes, inspectedEdges: state.inspectedEdges, truncated },
|
|
249
|
-
};
|
|
250
|
-
}
|
|
251
|
-
/**
|
|
252
|
-
* Enumerate bounded simple paths between two nodes, shortest first and
|
|
253
|
-
* lexicographic within equal length. Traversal honors direction and kind
|
|
254
|
-
* filters, caps returned paths, and reports truncation when depth, path-count,
|
|
255
|
-
* or the expansion-safety bound stops the search early.
|
|
256
|
-
*/
|
|
257
|
-
export function enumerateRelationshipPaths(graph, source, target, options = {}) {
|
|
258
|
-
assertPathEndpoint(graph, source);
|
|
259
|
-
assertPathEndpoint(graph, target);
|
|
260
|
-
const maxPaths = options.maxPaths ?? DEFAULT_MAX_PATHS;
|
|
261
|
-
const maxVisitedPaths = options.maxVisitedPaths ?? DEFAULT_MAX_VISITED_PATHS;
|
|
262
|
-
const maxDepth = options.maxDepth ?? DEFAULT_PATH_MAX_DEPTH;
|
|
263
|
-
assertPathBound("maxPaths", maxPaths);
|
|
264
|
-
assertPathBound("maxVisitedPaths", maxVisitedPaths);
|
|
265
|
-
assertPathBound("maxDepth", maxDepth);
|
|
266
|
-
const direction = options.direction ?? "outgoing";
|
|
267
|
-
options.signal?.throwIfAborted();
|
|
268
|
-
for (const kind of options.kinds ?? [])
|
|
269
|
-
graph.registry().require(kind);
|
|
270
|
-
if (source === target) {
|
|
271
|
-
if (maxPaths === 0) {
|
|
272
|
-
return {
|
|
273
|
-
value: [],
|
|
274
|
-
meta: { visitedNodes: 1, inspectedEdges: 0, truncated: true },
|
|
275
|
-
};
|
|
276
|
-
}
|
|
277
|
-
return {
|
|
278
|
-
value: [{ nodes: [source], edges: [], length: 0 }],
|
|
279
|
-
meta: { visitedNodes: 1, inspectedEdges: 0, truncated: false },
|
|
280
|
-
};
|
|
281
|
-
}
|
|
282
|
-
return enumerateNonZeroRelationshipPaths(graph, source, target, options, maxPaths, maxVisitedPaths, maxDepth, direction);
|
|
283
|
-
}
|
|
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]="f01a7c5d-0cb1-5dfa-90e8-14bb66bedd94")}catch(e2){}})();const DEFAULT_MAX_PATHS=5;const DEFAULT_MAX_VISITED_PATHS=1e4;const DEFAULT_PATH_MAX_DEPTH=8;function assertPathBound(name,value){if(!Number.isFinite(value)||!Number.isInteger(value)||value<0)throw new TypeError(`Invalid path ${name} bound: ${String(value)}`)}function hierarchyParentEndpoint(edge,definition){return definition.hierarchyDirection==="target_parent"?edge.target:edge.source}function orderingPredecessorEndpoint(edge,definition){return(definition.precedence??"source_before_target")==="target_before_source"?edge.target:edge.source}function orientOrderingEdge(edge,definition){const predecessor=orderingPredecessorEndpoint(edge,definition);return{predecessor,successor:predecessor===edge.source?edge.target:edge.source}}function resolveFamilyKinds(graph,kinds,family){if(kinds===void 0)return void 0;const registry=graph.registry();const resolved=new Set;for(const kind of kinds){const definition=registry.require(kind);const traversal=definition.traversal;if(traversal==="association")throw new TypeError(`Relationship kind ${definition.kind} uses association traversal; use graph impact --direction both`);if(traversal!==family&&traversal!=="semantic"){const redirect=traversal==="hierarchy"?"graph ancestors or graph descendants":"graph predecessors or graph successors";throw new TypeError(`Relationship kind ${definition.kind} uses ${traversal} traversal; use ${redirect}`)}resolved.add(definition.kind)}return resolved}function expandSemanticNeighbors(graph,nodeId,familyKinds,family,matches){const registry=graph.registry();const rows=graph.neighborEdges(nodeId,{direction:"both",...familyKinds===void 0?{}:{kinds:[...familyKinds]}});const neighbors=[];const seen=new Set;for(const row of rows.value){const definition=registry.require(row.edge.kind);if(familyKinds===void 0&&!definition[family])continue;if(!matches(row,definition,nodeId))continue;if(seen.has(row.id))continue;seen.add(row.id);neighbors.push(row.id)}return{neighbors,inspectedEdges:rows.meta.inspectedEdges}}function appendSemanticExpansion(expansion,currentDepth,maxDepth,limit,after,state){if(currentDepth>=maxDepth){if(expansion.neighbors.some(neighbor=>!state.seen.has(neighbor)))state.truncated=true;return false}for(const neighbor of expansion.neighbors){if(state.seen.has(neighbor))continue;state.seen.add(neighbor);state.queue.push({id:neighbor,depth:currentDepth+1});if(!state.resumed){if(neighbor===after)state.resumed=true;continue}if(state.value.length>=limit){state.truncated=true;return true}state.value.push(neighbor)}return false}function boundedSemanticWalk(graph,start,options,family,matches){if(!graph.hasNode(start))throw new TypeError(`Relationship node not found: ${start}`);const familyKinds=resolveFamilyKinds(graph,options.kinds,family);const limit=options.limit??Number.POSITIVE_INFINITY;const maxDepth=options.maxDepth??Number.POSITIVE_INFINITY;const after=options.after;const state={seen:new Set([start]),value:[],queue:[{id:start,depth:0}],resumed:after===void 0,truncated:false};let visitedNodes=0;let inspectedEdges=0;for(let index=0;index<state.queue.length;index+=1){options.signal?.throwIfAborted();const current=state.queue[index];visitedNodes+=1;const expansion=expandSemanticNeighbors(graph,current.id,familyKinds,family,matches);inspectedEdges+=expansion.inspectedEdges;if(appendSemanticExpansion(expansion,current.depth,maxDepth,limit,after,state))break}if(!state.resumed)throw new TypeError(`Traversal cursor not found in sequence: ${after}`);return{value:state.value,meta:{visitedNodes,inspectedEdges,truncated:state.truncated,nextCursor:state.value.at(-1)}}}function assertPathEndpoint(graph,id){if(!graph.hasNode(id))throw new TypeError(`Relationship node not found: ${id}`)}function readPathContinuations(graph,partial,options,direction,state){const rows=graph.neighborEdges(partial.nodes.at(-1),{direction,...options.kinds===void 0?{}:{kinds:options.kinds}});state.inspectedEdges+=rows.meta.inspectedEdges;return rows.value.filter(row=>!partial.nodeSet.has(row.id))}function expandPartialPath(graph,partial,target,options,direction,probeLimit,state){for(const row of readPathContinuations(graph,partial,options,direction,state)){const nodes=[...partial.nodes,row.id];const nodeSet=new Set(partial.nodeSet).add(row.id);const edges=[...partial.edges,row.edge];if(row.id===target){state.value.push({nodes,edges,length:edges.length});if(state.value.length>=probeLimit)return true}else{state.queue.push({nodes,nodeSet,edges})}}return false}function hierarchyAncestors(graph,id,options={}){return boundedSemanticWalk(graph,id,options,"hierarchy",(row,definition)=>hierarchyParentEndpoint(row.edge,definition)===row.id)}function hierarchyDescendants(graph,id,options={}){return boundedSemanticWalk(graph,id,options,"hierarchy",(row,definition,nodeId)=>hierarchyParentEndpoint(row.edge,definition)===nodeId)}function orderingPredecessors(graph,id,options={}){return boundedSemanticWalk(graph,id,options,"ordering",(row,definition)=>orderingPredecessorEndpoint(row.edge,definition)===row.id)}function orderingSuccessors(graph,id,options={}){return boundedSemanticWalk(graph,id,options,"ordering",(row,definition,nodeId)=>orderingPredecessorEndpoint(row.edge,definition)===nodeId)}function enumerateNonZeroRelationshipPaths(graph,source,target,options,maxPaths,maxVisitedPaths,maxDepth,direction){const state={value:[],queue:[{nodes:[source],nodeSet:new Set([source]),edges:[]}],inspectedEdges:0};let visitedNodes=0;let truncated=false;const probeLimit=maxPaths+1;for(let index=0;index<state.queue.length;index+=1){options.signal?.throwIfAborted();if(state.value.length>=probeLimit||visitedNodes>=maxVisitedPaths){truncated=true;break}const partial=state.queue[index];visitedNodes+=1;if(partial.edges.length>=maxDepth){if(readPathContinuations(graph,partial,options,direction,state).length>0)truncated=true;continue}if(expandPartialPath(graph,partial,target,options,direction,probeLimit,state)){truncated=true;break}}return{value:state.value.slice(0,maxPaths),meta:{visitedNodes,inspectedEdges:state.inspectedEdges,truncated}}}function enumerateRelationshipPaths(graph,source,target,options={}){assertPathEndpoint(graph,source);assertPathEndpoint(graph,target);const maxPaths=options.maxPaths??DEFAULT_MAX_PATHS;const maxVisitedPaths=options.maxVisitedPaths??DEFAULT_MAX_VISITED_PATHS;const maxDepth=options.maxDepth??DEFAULT_PATH_MAX_DEPTH;assertPathBound("maxPaths",maxPaths);assertPathBound("maxVisitedPaths",maxVisitedPaths);assertPathBound("maxDepth",maxDepth);const direction=options.direction??"outgoing";options.signal?.throwIfAborted();for(const kind of options.kinds??[])graph.registry().require(kind);if(source===target){if(maxPaths===0){return{value:[],meta:{visitedNodes:1,inspectedEdges:0,truncated:true}}}return{value:[{nodes:[source],edges:[],length:0}],meta:{visitedNodes:1,inspectedEdges:0,truncated:false}}}return enumerateNonZeroRelationshipPaths(graph,source,target,options,maxPaths,maxVisitedPaths,maxDepth,direction)}export{enumerateRelationshipPaths,hierarchyAncestors,hierarchyDescendants,hierarchyParentEndpoint,orderingPredecessorEndpoint,orderingPredecessors,orderingSuccessors,orientOrderingEdge};
|
|
284
2
|
//# sourceMappingURL=traversal.js.map
|
|
285
|
-
//# debugId=ac2b3cd9-5a98-5fea-888c-e96de8cd593d
|
|
@@ -1,28 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* @module sdk/graph/workspace-relationship-kind-registry
|
|
3
|
-
*
|
|
4
|
-
* Resolves the built-in relationship ontology together with active extension
|
|
5
|
-
* registrations without coupling hierarchy analysis to graph assembly.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="d49d73c9-f988-5c3c-a22d-0580ee5526f6")}catch(e){}}();
|
|
9
|
-
import { getActiveExtensionRegistrations } from "../../core/extensions/index.js";
|
|
10
|
-
import { createRelationshipKindRegistry, } from "../relationships.js";
|
|
11
|
-
/**
|
|
12
|
-
* Resolve the relationship-kind registry active for the current workspace.
|
|
13
|
-
*
|
|
14
|
-
* Callers that omit an explicit registry must still recognize extension-owned
|
|
15
|
-
* hierarchy and ordering kinds instead of silently falling back to built-ins.
|
|
16
|
-
*/
|
|
17
|
-
export function resolveWorkspaceRelationshipKindRegistry() {
|
|
18
|
-
const registry = createRelationshipKindRegistry();
|
|
19
|
-
for (const registration of getActiveExtensionRegistrations()
|
|
20
|
-
?.relationship_kinds ?? []) {
|
|
21
|
-
for (const definition of registration.definitions) {
|
|
22
|
-
registry.register(definition);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return registry;
|
|
26
|
-
}
|
|
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]="0a3dd0c1-2dea-5143-a2eb-65e758a0cc71")}catch(e2){}})();import{getActiveExtensionRegistrations}from"../../core/extensions/index.js";import{createRelationshipKindRegistry}from"../relationships.js";function resolveWorkspaceRelationshipKindRegistry(){const registry=createRelationshipKindRegistry();for(const registration of getActiveExtensionRegistrations()?.relationship_kinds??[]){for(const definition of registration.definitions){registry.register(definition)}}return registry}export{resolveWorkspaceRelationshipKindRegistry};
|
|
27
2
|
//# sourceMappingURL=workspace-relationship-kind-registry.js.map
|
|
28
|
-
//# debugId=d49d73c9-f988-5c3c-a22d-0580ee5526f6
|
package/dist/sdk/graph.js
CHANGED
|
@@ -1,16 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* @module sdk/graph
|
|
3
|
-
*
|
|
4
|
-
* Provides relationship modeling, traversal, analytics, and remediation APIs.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b6d6f773-8336-5e0e-8dfb-d5729caa18d9")}catch(e){}}();
|
|
8
|
-
export * from "./graph/index.js";
|
|
9
|
-
export * from "./actionability.js";
|
|
10
|
-
export * from "./relationships.js";
|
|
11
|
-
export * from "./relationship-analytics.js";
|
|
12
|
-
export * from "./relationship-context.js";
|
|
13
|
-
export * from "./relationship-history.js";
|
|
14
|
-
export * from "./relationship-migration.js";
|
|
1
|
+
!(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="3160880c-9d85-52c5-ae1d-ada213f56ce6")}catch(e2){}})();export*from"./graph/index.js";export*from"./actionability.js";export*from"./relationships.js";export*from"./relationship-analytics.js";export*from"./relationship-context.js";export*from"./relationship-history.js";export*from"./relationship-migration.js";
|
|
15
2
|
//# sourceMappingURL=graph.js.map
|
|
16
|
-
//# debugId=b6d6f773-8336-5e0e-8dfb-d5729caa18d9
|