@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,312 +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]="61c0153b-8fa5-5c26-aa88-ca9807f2d160")}catch(e){}}();
|
|
3
|
-
import { coercePositiveInteger } from "../shared/primitives.js";
|
|
4
|
-
/**
|
|
5
|
-
* Canonical ordered list of corpus field names emitted by {@link buildSearchCorpus}.
|
|
6
|
-
*
|
|
7
|
-
* When `search.corpus_fields` is unset/empty the full set is included (backward
|
|
8
|
-
* compatible). When configured, only the named fields are emitted — letting
|
|
9
|
-
* teams opt structured signals in/out for token efficiency. Unknown names in the
|
|
10
|
-
* configured list are ignored (they simply never match a builder).
|
|
11
|
-
*
|
|
12
|
-
* NOTE: `plan` is conditional — it is only emitted when the item has plan
|
|
13
|
-
* content (see {@link buildPlanCorpus}); it is still part of the default set so
|
|
14
|
-
* plan-bearing items keep their plan corpus.
|
|
15
|
-
*/
|
|
16
|
-
export const DEFAULT_SEARCH_CORPUS_FIELDS = [
|
|
17
|
-
"title",
|
|
18
|
-
"description",
|
|
19
|
-
"tags",
|
|
20
|
-
"status",
|
|
21
|
-
"type",
|
|
22
|
-
"priority",
|
|
23
|
-
"assignee",
|
|
24
|
-
"parent",
|
|
25
|
-
"goal",
|
|
26
|
-
"value",
|
|
27
|
-
"why_now",
|
|
28
|
-
"risk",
|
|
29
|
-
"confidence",
|
|
30
|
-
"estimated_minutes",
|
|
31
|
-
"acceptance_criteria",
|
|
32
|
-
"resolution",
|
|
33
|
-
"expected_result",
|
|
34
|
-
"actual_result",
|
|
35
|
-
"body",
|
|
36
|
-
"comments",
|
|
37
|
-
"notes",
|
|
38
|
-
"learnings",
|
|
39
|
-
"reminders",
|
|
40
|
-
"events",
|
|
41
|
-
"dependencies",
|
|
42
|
-
"plan",
|
|
43
|
-
];
|
|
44
|
-
/**
|
|
45
|
-
* Resolve the effective corpus field list from settings.
|
|
46
|
-
*
|
|
47
|
-
* - unset / not an array / empty array → the full default set (backward compatible).
|
|
48
|
-
* - non-empty array → exactly those names (string entries only; trimmed; empties dropped).
|
|
49
|
-
*/
|
|
50
|
-
export function resolveSearchCorpusFields(settings) {
|
|
51
|
-
const configured = settings?.search?.corpus_fields;
|
|
52
|
-
if (!Array.isArray(configured)) {
|
|
53
|
-
return [...DEFAULT_SEARCH_CORPUS_FIELDS];
|
|
54
|
-
}
|
|
55
|
-
// The type guard is intentional: corpus_fields comes from user-editable
|
|
56
|
-
// settings.json, so entries are not statically guaranteed to be strings.
|
|
57
|
-
// De-duplicate and drop unknown names (they have no builder) so an invalid
|
|
58
|
-
// config cannot produce duplicate or phantom corpus keys.
|
|
59
|
-
const knownFields = new Set(DEFAULT_SEARCH_CORPUS_FIELDS);
|
|
60
|
-
const selected = Array.from(new Set(configured
|
|
61
|
-
.filter((entry) => typeof entry === "string")
|
|
62
|
-
.map((entry) => entry.trim())
|
|
63
|
-
.filter((entry) => entry.length > 0 && knownFields.has(entry))));
|
|
64
|
-
return selected.length > 0 ? selected : [...DEFAULT_SEARCH_CORPUS_FIELDS];
|
|
65
|
-
}
|
|
66
|
-
/** Fallback semantic corpus input max characters used when callers do not provide an override. */
|
|
67
|
-
export const DEFAULT_SEMANTIC_CORPUS_INPUT_MAX_CHARACTERS = 8_000;
|
|
68
|
-
/** Public contract for ollama semantic corpus input max characters, shared by SDK and presentation-layer consumers. */
|
|
69
|
-
export const OLLAMA_SEMANTIC_CORPUS_INPUT_MAX_CHARACTERS = 3_200;
|
|
70
|
-
/** Public contract for semantic corpus truncation suffix, shared by SDK and presentation-layer consumers. */
|
|
71
|
-
export const SEMANTIC_CORPUS_TRUNCATION_SUFFIX = "...[semantic corpus truncated]";
|
|
72
|
-
/** Public contract for search embedding corpus max characters invalid warning, shared by SDK and presentation-layer consumers. */
|
|
73
|
-
export const SEARCH_EMBEDDING_CORPUS_MAX_CHARACTERS_INVALID_WARNING = "search_embedding_corpus_max_characters_invalid:using_provider_default";
|
|
74
|
-
function compactParts(parts) {
|
|
75
|
-
return parts
|
|
76
|
-
.map((part) => part === undefined || part === null ? "" : String(part).trim())
|
|
77
|
-
.filter((part) => part.length > 0)
|
|
78
|
-
.join(" ");
|
|
79
|
-
}
|
|
80
|
-
/** Implements build reminder corpus for the public runtime surface of this module. */
|
|
81
|
-
export function buildReminderCorpus(item) {
|
|
82
|
-
return (item.reminders ?? []).map((reminder) => compactParts([reminder.at, reminder.text]));
|
|
83
|
-
}
|
|
84
|
-
/** Implements build event corpus for the public runtime surface of this module. */
|
|
85
|
-
export function buildEventCorpus(item) {
|
|
86
|
-
return (item.events ?? []).map((event) => compactParts([
|
|
87
|
-
event.start_at,
|
|
88
|
-
event.end_at,
|
|
89
|
-
event.title,
|
|
90
|
-
event.description,
|
|
91
|
-
event.location,
|
|
92
|
-
event.all_day === true ? "all day" : undefined,
|
|
93
|
-
event.timezone,
|
|
94
|
-
event.recurrence?.freq,
|
|
95
|
-
event.recurrence?.interval,
|
|
96
|
-
event.recurrence?.count,
|
|
97
|
-
event.recurrence?.until,
|
|
98
|
-
event.recurrence?.by_weekday?.join(" "),
|
|
99
|
-
event.recurrence?.by_month_day?.join(" "),
|
|
100
|
-
event.recurrence?.exdates?.join(" "),
|
|
101
|
-
]));
|
|
102
|
-
}
|
|
103
|
-
function appendPlanStepFlatCorpus(segments, step) {
|
|
104
|
-
segments.push(step.title, step.body, step.status, step.owner, step.evidence, step.blocked_reason, step.superseded_by);
|
|
105
|
-
for (const link of step.linked_items ?? []) {
|
|
106
|
-
segments.push(`${link.kind} ${link.id}`, link.note);
|
|
107
|
-
}
|
|
108
|
-
for (const file of step.files ?? [])
|
|
109
|
-
segments.push(file.path, file.note);
|
|
110
|
-
for (const test of step.tests ?? [])
|
|
111
|
-
segments.push(test.command, test.path, test.note);
|
|
112
|
-
for (const doc of step.docs ?? [])
|
|
113
|
-
segments.push(doc.path, doc.note);
|
|
114
|
-
}
|
|
115
|
-
function appendPlanMetadataFlatCorpus(segments, item) {
|
|
116
|
-
for (const decision of item.plan_decisions ?? []) {
|
|
117
|
-
segments.push(decision.decision, decision.rationale, decision.evidence);
|
|
118
|
-
}
|
|
119
|
-
for (const discovery of item.plan_discoveries ?? []) {
|
|
120
|
-
segments.push(discovery.text);
|
|
121
|
-
}
|
|
122
|
-
for (const check of item.plan_validation ?? []) {
|
|
123
|
-
segments.push(check.text, check.command, check.expected);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
/** Implements build plan flat corpus for the public runtime surface of this module. */
|
|
127
|
-
export function buildPlanFlatCorpus(item) {
|
|
128
|
-
const segments = [];
|
|
129
|
-
segments.push(item.plan_mode, item.plan_scope, item.plan_harness, item.plan_resume_context);
|
|
130
|
-
for (const step of item.plan_steps ?? []) {
|
|
131
|
-
appendPlanStepFlatCorpus(segments, step);
|
|
132
|
-
}
|
|
133
|
-
appendPlanMetadataFlatCorpus(segments, item);
|
|
134
|
-
return segments
|
|
135
|
-
.filter((segment) => typeof segment === "string" && segment.length > 0)
|
|
136
|
-
.join(" ");
|
|
137
|
-
}
|
|
138
|
-
/** Implements build plan corpus for the public runtime surface of this module. */
|
|
139
|
-
export function buildPlanCorpus(item) {
|
|
140
|
-
const steps = (item.plan_steps ?? []).map((step) => compactParts([
|
|
141
|
-
step.order,
|
|
142
|
-
step.id,
|
|
143
|
-
step.title,
|
|
144
|
-
step.body,
|
|
145
|
-
step.status,
|
|
146
|
-
step.owner,
|
|
147
|
-
step.evidence,
|
|
148
|
-
step.blocked_reason,
|
|
149
|
-
step.superseded_by,
|
|
150
|
-
(step.linked_items ?? [])
|
|
151
|
-
.map((link) => compactParts([link.kind, link.id, link.note]))
|
|
152
|
-
.join(" "),
|
|
153
|
-
(step.files ?? [])
|
|
154
|
-
.map((file) => compactParts([file.path, file.note]))
|
|
155
|
-
.join(" "),
|
|
156
|
-
(step.tests ?? [])
|
|
157
|
-
.map((test) => compactParts([test.command, test.path, test.note]))
|
|
158
|
-
.join(" "),
|
|
159
|
-
(step.docs ?? [])
|
|
160
|
-
.map((doc) => compactParts([doc.path, doc.note]))
|
|
161
|
-
.join(" "),
|
|
162
|
-
]));
|
|
163
|
-
const decisions = (item.plan_decisions ?? []).map((entry) => compactParts([
|
|
164
|
-
entry.decision,
|
|
165
|
-
entry.rationale,
|
|
166
|
-
entry.evidence,
|
|
167
|
-
entry.step_id,
|
|
168
|
-
]));
|
|
169
|
-
const discoveries = (item.plan_discoveries ?? []).map((entry) => compactParts([entry.text, entry.step_id]));
|
|
170
|
-
const validation = (item.plan_validation ?? []).map((entry) => compactParts([entry.text, entry.command, entry.expected]));
|
|
171
|
-
const hasPlanContent = [
|
|
172
|
-
item.plan_mode,
|
|
173
|
-
item.plan_scope,
|
|
174
|
-
item.plan_harness,
|
|
175
|
-
item.plan_resume_context,
|
|
176
|
-
...steps,
|
|
177
|
-
...decisions,
|
|
178
|
-
...discoveries,
|
|
179
|
-
...validation,
|
|
180
|
-
].some((entry) => entry !== undefined);
|
|
181
|
-
if (!hasPlanContent) {
|
|
182
|
-
return undefined;
|
|
183
|
-
}
|
|
184
|
-
return {
|
|
185
|
-
mode: item.plan_mode,
|
|
186
|
-
scope: item.plan_scope,
|
|
187
|
-
harness: item.plan_harness,
|
|
188
|
-
resume_context: item.plan_resume_context,
|
|
189
|
-
steps,
|
|
190
|
-
decisions,
|
|
191
|
-
discoveries,
|
|
192
|
-
validation,
|
|
193
|
-
};
|
|
194
|
-
}
|
|
195
|
-
function isNonEmptyString(value) {
|
|
196
|
-
return typeof value === "string" && value.trim().length > 0;
|
|
197
|
-
}
|
|
198
|
-
/** Builders for each corpus field. Each returns the value to emit, or `undefined` to omit the field entirely (keeps the corpus compact / token-efficient — we do not emit empty strings, empty arrays, or nulls for the optional structured fields). Always-present fields (title/status/etc.) emit their raw value. */
|
|
199
|
-
const CORPUS_FIELD_BUILDERS = {
|
|
200
|
-
title: (document) => document.metadata.title,
|
|
201
|
-
description: (document) => document.metadata.description,
|
|
202
|
-
tags: (document) => document.metadata.tags,
|
|
203
|
-
status: (document) => document.metadata.status,
|
|
204
|
-
type: (document) => document.metadata.type,
|
|
205
|
-
priority: (document) => typeof document.metadata.priority === "number"
|
|
206
|
-
? document.metadata.priority
|
|
207
|
-
: undefined,
|
|
208
|
-
assignee: (document) => isNonEmptyString(document.metadata.assignee)
|
|
209
|
-
? document.metadata.assignee
|
|
210
|
-
: undefined,
|
|
211
|
-
parent: (document) => isNonEmptyString(document.metadata.parent)
|
|
212
|
-
? document.metadata.parent
|
|
213
|
-
: undefined,
|
|
214
|
-
goal: (document) => isNonEmptyString(document.metadata.goal)
|
|
215
|
-
? document.metadata.goal
|
|
216
|
-
: undefined,
|
|
217
|
-
value: (document) => isNonEmptyString(document.metadata.value)
|
|
218
|
-
? document.metadata.value
|
|
219
|
-
: undefined,
|
|
220
|
-
why_now: (document) => isNonEmptyString(document.metadata.why_now)
|
|
221
|
-
? document.metadata.why_now
|
|
222
|
-
: undefined,
|
|
223
|
-
risk: (document) => isNonEmptyString(document.metadata.risk)
|
|
224
|
-
? document.metadata.risk
|
|
225
|
-
: undefined,
|
|
226
|
-
confidence: (document) => document.metadata.confidence !== undefined &&
|
|
227
|
-
document.metadata.confidence !== null
|
|
228
|
-
? document.metadata.confidence
|
|
229
|
-
: undefined,
|
|
230
|
-
estimated_minutes: (document) => typeof document.metadata.estimated_minutes === "number"
|
|
231
|
-
? document.metadata.estimated_minutes
|
|
232
|
-
: undefined,
|
|
233
|
-
acceptance_criteria: (document) => isNonEmptyString(document.metadata.acceptance_criteria)
|
|
234
|
-
? document.metadata.acceptance_criteria
|
|
235
|
-
: undefined,
|
|
236
|
-
resolution: (document) => isNonEmptyString(document.metadata.resolution)
|
|
237
|
-
? document.metadata.resolution
|
|
238
|
-
: undefined,
|
|
239
|
-
expected_result: (document) => isNonEmptyString(document.metadata.expected_result)
|
|
240
|
-
? document.metadata.expected_result
|
|
241
|
-
: undefined,
|
|
242
|
-
actual_result: (document) => isNonEmptyString(document.metadata.actual_result)
|
|
243
|
-
? document.metadata.actual_result
|
|
244
|
-
: undefined,
|
|
245
|
-
body: (document) => document.body,
|
|
246
|
-
comments: (document) => (document.metadata.comments ?? []).map((entry) => entry.text),
|
|
247
|
-
notes: (document) => (document.metadata.notes ?? []).map((entry) => entry.text),
|
|
248
|
-
learnings: (document) => (document.metadata.learnings ?? []).map((entry) => entry.text),
|
|
249
|
-
reminders: (document) => buildReminderCorpus(document.metadata),
|
|
250
|
-
events: (document) => buildEventCorpus(document.metadata),
|
|
251
|
-
dependencies: (document) => (document.metadata.dependencies ?? []).map((entry) => ({
|
|
252
|
-
id: entry.id,
|
|
253
|
-
kind: entry.kind,
|
|
254
|
-
})),
|
|
255
|
-
plan: (document) => buildPlanCorpus(document.metadata),
|
|
256
|
-
};
|
|
257
|
-
/** Implements build search corpus for the public runtime surface of this module. */
|
|
258
|
-
export function buildSearchCorpus(document, options = {}) {
|
|
259
|
-
const fields = options.fields ?? DEFAULT_SEARCH_CORPUS_FIELDS;
|
|
260
|
-
const corpus = {};
|
|
261
|
-
for (const field of fields) {
|
|
262
|
-
const builder = CORPUS_FIELD_BUILDERS[field];
|
|
263
|
-
if (!builder) {
|
|
264
|
-
continue;
|
|
265
|
-
}
|
|
266
|
-
const value = builder(document);
|
|
267
|
-
if (value === undefined) {
|
|
268
|
-
continue;
|
|
269
|
-
}
|
|
270
|
-
corpus[field] = value;
|
|
271
|
-
}
|
|
272
|
-
return corpus;
|
|
273
|
-
}
|
|
274
|
-
/** Implements resolve semantic corpus input character limit for the public runtime surface of this module. */
|
|
275
|
-
export function resolveSemanticCorpusInputCharacterLimit(providerName) {
|
|
276
|
-
if (providerName?.trim().toLowerCase() === "ollama") {
|
|
277
|
-
return OLLAMA_SEMANTIC_CORPUS_INPUT_MAX_CHARACTERS;
|
|
278
|
-
}
|
|
279
|
-
return DEFAULT_SEMANTIC_CORPUS_INPUT_MAX_CHARACTERS;
|
|
280
|
-
}
|
|
281
|
-
/** Implements resolve semantic corpus character limit for the public runtime surface of this module. */
|
|
282
|
-
export function resolveSemanticCorpusCharacterLimit(providerName, configuredMaxCharacters) {
|
|
283
|
-
const providerDefaultLimit = resolveSemanticCorpusInputCharacterLimit(providerName);
|
|
284
|
-
const parsed = coercePositiveInteger(configuredMaxCharacters);
|
|
285
|
-
if (parsed !== null) {
|
|
286
|
-
return {
|
|
287
|
-
maxCharacters: parsed,
|
|
288
|
-
warning: null,
|
|
289
|
-
};
|
|
290
|
-
}
|
|
291
|
-
return {
|
|
292
|
-
maxCharacters: providerDefaultLimit,
|
|
293
|
-
warning: configuredMaxCharacters === undefined || configuredMaxCharacters === null
|
|
294
|
-
? null
|
|
295
|
-
: SEARCH_EMBEDDING_CORPUS_MAX_CHARACTERS_INVALID_WARNING,
|
|
296
|
-
};
|
|
297
|
-
}
|
|
298
|
-
/** Implements build semantic corpus input for the public runtime surface of this module. */
|
|
299
|
-
export function buildSemanticCorpusInput(document, options = {}) {
|
|
300
|
-
const serialized = JSON.stringify(buildSearchCorpus(document, { fields: options.fields }));
|
|
301
|
-
const maxCharacters = resolveSemanticCorpusCharacterLimit(options.providerName, options.maxCharacters).maxCharacters;
|
|
302
|
-
if (serialized.length <= maxCharacters) {
|
|
303
|
-
return serialized;
|
|
304
|
-
}
|
|
305
|
-
if (maxCharacters <= SEMANTIC_CORPUS_TRUNCATION_SUFFIX.length) {
|
|
306
|
-
return SEMANTIC_CORPUS_TRUNCATION_SUFFIX.slice(0, maxCharacters);
|
|
307
|
-
}
|
|
308
|
-
const keepLength = Math.max(0, maxCharacters - SEMANTIC_CORPUS_TRUNCATION_SUFFIX.length);
|
|
309
|
-
return `${serialized.slice(0, keepLength)}${SEMANTIC_CORPUS_TRUNCATION_SUFFIX}`;
|
|
310
|
-
}
|
|
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]="16c567d7-0065-5401-a768-0913cec6d5f4")}catch(e2){}})();import{coercePositiveInteger}from"../shared/primitives.js";const DEFAULT_SEARCH_CORPUS_FIELDS=["title","description","tags","status","type","priority","assignee","parent","goal","value","why_now","risk","confidence","estimated_minutes","acceptance_criteria","resolution","expected_result","actual_result","body","comments","notes","learnings","reminders","events","dependencies","plan"];function resolveSearchCorpusFields(settings){const configured=settings?.search?.corpus_fields;if(!Array.isArray(configured)){return[...DEFAULT_SEARCH_CORPUS_FIELDS]}const knownFields=new Set(DEFAULT_SEARCH_CORPUS_FIELDS);const selected=Array.from(new Set(configured.filter(entry=>typeof entry==="string").map(entry=>entry.trim()).filter(entry=>entry.length>0&&knownFields.has(entry))));return selected.length>0?selected:[...DEFAULT_SEARCH_CORPUS_FIELDS]}const DEFAULT_SEMANTIC_CORPUS_INPUT_MAX_CHARACTERS=8e3;const OLLAMA_SEMANTIC_CORPUS_INPUT_MAX_CHARACTERS=3200;const SEMANTIC_CORPUS_TRUNCATION_SUFFIX="...[semantic corpus truncated]";const SEARCH_EMBEDDING_CORPUS_MAX_CHARACTERS_INVALID_WARNING="search_embedding_corpus_max_characters_invalid:using_provider_default";function compactParts(parts){return parts.map(part=>part===void 0||part===null?"":String(part).trim()).filter(part=>part.length>0).join(" ")}function buildReminderCorpus(item){return(item.reminders??[]).map(reminder=>compactParts([reminder.at,reminder.text]))}function buildEventCorpus(item){return(item.events??[]).map(event=>compactParts([event.start_at,event.end_at,event.title,event.description,event.location,event.all_day===true?"all day":void 0,event.timezone,event.recurrence?.freq,event.recurrence?.interval,event.recurrence?.count,event.recurrence?.until,event.recurrence?.by_weekday?.join(" "),event.recurrence?.by_month_day?.join(" "),event.recurrence?.exdates?.join(" ")]))}function appendPlanStepFlatCorpus(segments,step){segments.push(step.title,step.body,step.status,step.owner,step.evidence,step.blocked_reason,step.superseded_by);for(const link of step.linked_items??[]){segments.push(`${link.kind} ${link.id}`,link.note)}for(const file of step.files??[])segments.push(file.path,file.note);for(const test of step.tests??[])segments.push(test.command,test.path,test.note);for(const doc of step.docs??[])segments.push(doc.path,doc.note)}function appendPlanMetadataFlatCorpus(segments,item){for(const decision of item.plan_decisions??[]){segments.push(decision.decision,decision.rationale,decision.evidence)}for(const discovery of item.plan_discoveries??[]){segments.push(discovery.text)}for(const check of item.plan_validation??[]){segments.push(check.text,check.command,check.expected)}}function buildPlanFlatCorpus(item){const segments=[];segments.push(item.plan_mode,item.plan_scope,item.plan_harness,item.plan_resume_context);for(const step of item.plan_steps??[]){appendPlanStepFlatCorpus(segments,step)}appendPlanMetadataFlatCorpus(segments,item);return segments.filter(segment=>typeof segment==="string"&&segment.length>0).join(" ")}function buildPlanCorpus(item){const steps=(item.plan_steps??[]).map(step=>compactParts([step.order,step.id,step.title,step.body,step.status,step.owner,step.evidence,step.blocked_reason,step.superseded_by,(step.linked_items??[]).map(link=>compactParts([link.kind,link.id,link.note])).join(" "),(step.files??[]).map(file=>compactParts([file.path,file.note])).join(" "),(step.tests??[]).map(test=>compactParts([test.command,test.path,test.note])).join(" "),(step.docs??[]).map(doc=>compactParts([doc.path,doc.note])).join(" ")]));const decisions=(item.plan_decisions??[]).map(entry=>compactParts([entry.decision,entry.rationale,entry.evidence,entry.step_id]));const discoveries=(item.plan_discoveries??[]).map(entry=>compactParts([entry.text,entry.step_id]));const validation=(item.plan_validation??[]).map(entry=>compactParts([entry.text,entry.command,entry.expected]));const hasPlanContent=[item.plan_mode,item.plan_scope,item.plan_harness,item.plan_resume_context,...steps,...decisions,...discoveries,...validation].some(entry=>entry!==void 0);if(!hasPlanContent){return void 0}return{mode:item.plan_mode,scope:item.plan_scope,harness:item.plan_harness,resume_context:item.plan_resume_context,steps,decisions,discoveries,validation}}function isNonEmptyString(value){return typeof value==="string"&&value.trim().length>0}const CORPUS_FIELD_BUILDERS={title:document=>document.metadata.title,description:document=>document.metadata.description,tags:document=>document.metadata.tags,status:document=>document.metadata.status,type:document=>document.metadata.type,priority:document=>typeof document.metadata.priority==="number"?document.metadata.priority:void 0,assignee:document=>isNonEmptyString(document.metadata.assignee)?document.metadata.assignee:void 0,parent:document=>isNonEmptyString(document.metadata.parent)?document.metadata.parent:void 0,goal:document=>isNonEmptyString(document.metadata.goal)?document.metadata.goal:void 0,value:document=>isNonEmptyString(document.metadata.value)?document.metadata.value:void 0,why_now:document=>isNonEmptyString(document.metadata.why_now)?document.metadata.why_now:void 0,risk:document=>isNonEmptyString(document.metadata.risk)?document.metadata.risk:void 0,confidence:document=>document.metadata.confidence!==void 0&&document.metadata.confidence!==null?document.metadata.confidence:void 0,estimated_minutes:document=>typeof document.metadata.estimated_minutes==="number"?document.metadata.estimated_minutes:void 0,acceptance_criteria:document=>isNonEmptyString(document.metadata.acceptance_criteria)?document.metadata.acceptance_criteria:void 0,resolution:document=>isNonEmptyString(document.metadata.resolution)?document.metadata.resolution:void 0,expected_result:document=>isNonEmptyString(document.metadata.expected_result)?document.metadata.expected_result:void 0,actual_result:document=>isNonEmptyString(document.metadata.actual_result)?document.metadata.actual_result:void 0,body:document=>document.body,comments:document=>(document.metadata.comments??[]).map(entry=>entry.text),notes:document=>(document.metadata.notes??[]).map(entry=>entry.text),learnings:document=>(document.metadata.learnings??[]).map(entry=>entry.text),reminders:document=>buildReminderCorpus(document.metadata),events:document=>buildEventCorpus(document.metadata),dependencies:document=>(document.metadata.dependencies??[]).map(entry=>({id:entry.id,kind:entry.kind})),plan:document=>buildPlanCorpus(document.metadata)};function buildSearchCorpus(document,options={}){const fields=options.fields??DEFAULT_SEARCH_CORPUS_FIELDS;const corpus={};for(const field of fields){const builder=CORPUS_FIELD_BUILDERS[field];if(!builder){continue}const value=builder(document);if(value===void 0){continue}corpus[field]=value}return corpus}function resolveSemanticCorpusInputCharacterLimit(providerName){if(providerName?.trim().toLowerCase()==="ollama"){return OLLAMA_SEMANTIC_CORPUS_INPUT_MAX_CHARACTERS}return DEFAULT_SEMANTIC_CORPUS_INPUT_MAX_CHARACTERS}function resolveSemanticCorpusCharacterLimit(providerName,configuredMaxCharacters){const providerDefaultLimit=resolveSemanticCorpusInputCharacterLimit(providerName);const parsed=coercePositiveInteger(configuredMaxCharacters);if(parsed!==null){return{maxCharacters:parsed,warning:null}}return{maxCharacters:providerDefaultLimit,warning:configuredMaxCharacters===void 0||configuredMaxCharacters===null?null:SEARCH_EMBEDDING_CORPUS_MAX_CHARACTERS_INVALID_WARNING}}function buildSemanticCorpusInput(document,options={}){const serialized=JSON.stringify(buildSearchCorpus(document,{fields:options.fields}));const maxCharacters=resolveSemanticCorpusCharacterLimit(options.providerName,options.maxCharacters).maxCharacters;if(serialized.length<=maxCharacters){return serialized}if(maxCharacters<=SEMANTIC_CORPUS_TRUNCATION_SUFFIX.length){return SEMANTIC_CORPUS_TRUNCATION_SUFFIX.slice(0,maxCharacters)}const keepLength=Math.max(0,maxCharacters-SEMANTIC_CORPUS_TRUNCATION_SUFFIX.length);return`${serialized.slice(0,keepLength)}${SEMANTIC_CORPUS_TRUNCATION_SUFFIX}`}export{DEFAULT_SEARCH_CORPUS_FIELDS,DEFAULT_SEMANTIC_CORPUS_INPUT_MAX_CHARACTERS,OLLAMA_SEMANTIC_CORPUS_INPUT_MAX_CHARACTERS,SEARCH_EMBEDDING_CORPUS_MAX_CHARACTERS_INVALID_WARNING,SEMANTIC_CORPUS_TRUNCATION_SUFFIX,buildEventCorpus,buildPlanCorpus,buildPlanFlatCorpus,buildReminderCorpus,buildSearchCorpus,buildSemanticCorpusInput,resolveSearchCorpusFields,resolveSemanticCorpusCharacterLimit,resolveSemanticCorpusInputCharacterLimit};
|
|
311
2
|
//# sourceMappingURL=corpus.js.map
|
|
312
|
-
//# debugId=61c0153b-8fa5-5c26-aa88-ca9807f2d160
|
|
@@ -1,164 +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]="2c518b97-bc75-5e3f-91e8-d6779d565558")}catch(e){}}();
|
|
3
|
-
import { executeEmbeddingRequest } from "./providers.js";
|
|
4
|
-
import { toErrorMessage } from "../shared/primitives.js";
|
|
5
|
-
import { OLLAMA_SEMANTIC_CORPUS_INPUT_MAX_CHARACTERS, SEMANTIC_CORPUS_TRUNCATION_SUFFIX, resolveSemanticCorpusCharacterLimit, } from "./corpus.js";
|
|
6
|
-
function resolveBatchRuntime(settings, maxInputCharacters) {
|
|
7
|
-
const batchSizeCandidate = settings.search.embedding_batch_size;
|
|
8
|
-
const timeoutMsCandidate = settings.search.embedding_timeout_ms;
|
|
9
|
-
const maxRetriesCandidate = settings.search.scanner_max_batch_retries;
|
|
10
|
-
const batchSize = Number.isFinite(batchSizeCandidate) && batchSizeCandidate > 0
|
|
11
|
-
? Math.floor(batchSizeCandidate)
|
|
12
|
-
: 1;
|
|
13
|
-
const timeoutMs = Number.isFinite(timeoutMsCandidate) && timeoutMsCandidate > 0
|
|
14
|
-
? Math.floor(timeoutMsCandidate)
|
|
15
|
-
: 30_000;
|
|
16
|
-
const maxRetries = Number.isFinite(maxRetriesCandidate) && maxRetriesCandidate >= 0
|
|
17
|
-
? Math.floor(maxRetriesCandidate)
|
|
18
|
-
: 0;
|
|
19
|
-
return {
|
|
20
|
-
batchSize,
|
|
21
|
-
timeoutMs,
|
|
22
|
-
maxRetries,
|
|
23
|
-
maxBatchInputCharacters: Number.POSITIVE_INFINITY,
|
|
24
|
-
maxInputCharacters,
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
function createBatches(inputs, batchSize, maxBatchInputCharacters) {
|
|
28
|
-
const batches = [];
|
|
29
|
-
let currentBatch = [];
|
|
30
|
-
let currentCharacters = 0;
|
|
31
|
-
for (const input of inputs) {
|
|
32
|
-
const wouldExceedCount = currentBatch.length >= batchSize;
|
|
33
|
-
const wouldExceedCharacters = currentBatch.length > 0 &&
|
|
34
|
-
Number.isFinite(maxBatchInputCharacters) &&
|
|
35
|
-
currentCharacters + input.length > maxBatchInputCharacters;
|
|
36
|
-
if (wouldExceedCount || wouldExceedCharacters) {
|
|
37
|
-
batches.push(currentBatch);
|
|
38
|
-
currentBatch = [];
|
|
39
|
-
currentCharacters = 0;
|
|
40
|
-
}
|
|
41
|
-
currentBatch.push(input);
|
|
42
|
-
currentCharacters += input.length;
|
|
43
|
-
}
|
|
44
|
-
batches.push(currentBatch);
|
|
45
|
-
return batches;
|
|
46
|
-
}
|
|
47
|
-
function resolveProviderBatchRuntime(provider, runtime) {
|
|
48
|
-
if (provider.name !== "ollama") {
|
|
49
|
-
return runtime;
|
|
50
|
-
}
|
|
51
|
-
return {
|
|
52
|
-
...runtime,
|
|
53
|
-
maxBatchInputCharacters: OLLAMA_SEMANTIC_CORPUS_INPUT_MAX_CHARACTERS,
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
function truncateInputForRuntime(input, maxInputCharacters) {
|
|
57
|
-
if (!Number.isFinite(maxInputCharacters) ||
|
|
58
|
-
maxInputCharacters <= 0 ||
|
|
59
|
-
input.length <= maxInputCharacters) {
|
|
60
|
-
return input;
|
|
61
|
-
}
|
|
62
|
-
const keepLength = Math.max(0, maxInputCharacters - SEMANTIC_CORPUS_TRUNCATION_SUFFIX.length);
|
|
63
|
-
return `${input.slice(0, keepLength)}${SEMANTIC_CORPUS_TRUNCATION_SUFFIX}`.slice(0, maxInputCharacters);
|
|
64
|
-
}
|
|
65
|
-
function isEmbeddingTimeoutError(error) {
|
|
66
|
-
const message = toErrorMessage(error).toLowerCase();
|
|
67
|
-
return message.includes("timed out") || message.includes("timeout");
|
|
68
|
-
}
|
|
69
|
-
function buildEmbeddingFailureMessage(provider, batchLabel, batchSize, timeoutMs, attempts, error) {
|
|
70
|
-
const base = `Embedding batch ${batchLabel} failed after ${attempts} attempt(s): ${toErrorMessage(error)}`;
|
|
71
|
-
const details = `provider=${provider.name} model=${provider.model} batch_size=${batchSize} timeout_ms=${timeoutMs}`;
|
|
72
|
-
if (!isEmbeddingTimeoutError(error)) {
|
|
73
|
-
return `${base} (${details})`;
|
|
74
|
-
}
|
|
75
|
-
return `${base} (${details}; guidance=check provider availability or lower search.embedding_batch_size, raise search.embedding_timeout_ms, or run keyword search while semantic indexing catches up)`;
|
|
76
|
-
}
|
|
77
|
-
async function executeBatchWithAdaptiveSplit(provider, batch, batchLabel, timeoutMs, maxRetries, warnings) {
|
|
78
|
-
let lastError = null;
|
|
79
|
-
for (let attempt = 0; attempt <= maxRetries; attempt += 1) {
|
|
80
|
-
try {
|
|
81
|
-
const batchVectors = await executeEmbeddingRequest(provider, batch, {
|
|
82
|
-
timeout_ms: timeoutMs,
|
|
83
|
-
});
|
|
84
|
-
if (attempt > 0) {
|
|
85
|
-
warnings.push(`search_embedding_batch_retry_succeeded:batch=${batchLabel}:attempt=${attempt + 1}:size=${batch.length}`);
|
|
86
|
-
}
|
|
87
|
-
return batchVectors;
|
|
88
|
-
}
|
|
89
|
-
catch (error) {
|
|
90
|
-
lastError = error;
|
|
91
|
-
if (isEmbeddingTimeoutError(error) && batch.length > 1) {
|
|
92
|
-
const midpoint = Math.ceil(batch.length / 2);
|
|
93
|
-
const left = batch.slice(0, midpoint);
|
|
94
|
-
const right = batch.slice(midpoint);
|
|
95
|
-
warnings.push(`search_embedding_batch_split_after_timeout:batch=${batchLabel}:size=${batch.length}:parts=${left.length}|${right.length}`);
|
|
96
|
-
return [
|
|
97
|
-
...(await executeBatchWithAdaptiveSplit(provider, left, `${batchLabel}.1`, timeoutMs, maxRetries, warnings)),
|
|
98
|
-
...(await executeBatchWithAdaptiveSplit(provider, right, `${batchLabel}.2`, timeoutMs, maxRetries, warnings)),
|
|
99
|
-
];
|
|
100
|
-
}
|
|
101
|
-
if (attempt < maxRetries) {
|
|
102
|
-
const delayMs = Math.min(1000 * 2 ** attempt, 8000);
|
|
103
|
-
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
throw new Error(buildEmbeddingFailureMessage(provider, batchLabel, batch.length, timeoutMs, maxRetries + 1, lastError));
|
|
108
|
-
}
|
|
109
|
-
/** Implements execute embedding batches with retry for the public runtime surface of this module. */
|
|
110
|
-
export async function executeEmbeddingBatchesWithRetry(provider, settings, inputs, options = {}) {
|
|
111
|
-
if (inputs.length === 0) {
|
|
112
|
-
return {
|
|
113
|
-
vectors: [],
|
|
114
|
-
warnings: [],
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
const warnings = [];
|
|
118
|
-
const corpusLimitResolution = resolveSemanticCorpusCharacterLimit(provider.name, settings.search.embedding_corpus_max_characters);
|
|
119
|
-
if (corpusLimitResolution.warning) {
|
|
120
|
-
warnings.push(corpusLimitResolution.warning);
|
|
121
|
-
}
|
|
122
|
-
const runtime = resolveProviderBatchRuntime(provider, resolveBatchRuntime(settings, corpusLimitResolution.maxCharacters));
|
|
123
|
-
let truncatedInputCount = 0;
|
|
124
|
-
const normalizedInputs = inputs.map((input) => {
|
|
125
|
-
const normalized = truncateInputForRuntime(input, runtime.maxInputCharacters);
|
|
126
|
-
if (normalized.length < input.length) {
|
|
127
|
-
truncatedInputCount += 1;
|
|
128
|
-
}
|
|
129
|
-
return normalized;
|
|
130
|
-
});
|
|
131
|
-
if (truncatedInputCount > 0) {
|
|
132
|
-
warnings.push(`search_embedding_input_truncated:count=${truncatedInputCount}:max_characters=${runtime.maxInputCharacters}`);
|
|
133
|
-
}
|
|
134
|
-
const batches = createBatches(normalizedInputs, runtime.batchSize, runtime.maxBatchInputCharacters);
|
|
135
|
-
const vectors = [];
|
|
136
|
-
let completedInputs = 0;
|
|
137
|
-
for (let batchIndex = 0; batchIndex < batches.length; batchIndex += 1) {
|
|
138
|
-
const batch = batches[batchIndex];
|
|
139
|
-
options.onProgress?.({
|
|
140
|
-
batch_index: batchIndex + 1,
|
|
141
|
-
batch_total: batches.length,
|
|
142
|
-
batch_size: batch.length,
|
|
143
|
-
completed_inputs: completedInputs,
|
|
144
|
-
total_inputs: normalizedInputs.length,
|
|
145
|
-
phase: "start",
|
|
146
|
-
});
|
|
147
|
-
vectors.push(...(await executeBatchWithAdaptiveSplit(provider, batch, String(batchIndex + 1), runtime.timeoutMs, runtime.maxRetries, warnings)));
|
|
148
|
-
completedInputs += batch.length;
|
|
149
|
-
options.onProgress?.({
|
|
150
|
-
batch_index: batchIndex + 1,
|
|
151
|
-
batch_total: batches.length,
|
|
152
|
-
batch_size: batch.length,
|
|
153
|
-
completed_inputs: completedInputs,
|
|
154
|
-
total_inputs: normalizedInputs.length,
|
|
155
|
-
phase: "complete",
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
return {
|
|
159
|
-
vectors,
|
|
160
|
-
warnings,
|
|
161
|
-
};
|
|
162
|
-
}
|
|
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]="f0edf7da-87cc-5e66-9f9f-c9a25e21808e")}catch(e2){}})();import{executeEmbeddingRequest}from"./providers.js";import{toErrorMessage}from"../shared/primitives.js";import{OLLAMA_SEMANTIC_CORPUS_INPUT_MAX_CHARACTERS,SEMANTIC_CORPUS_TRUNCATION_SUFFIX,resolveSemanticCorpusCharacterLimit}from"./corpus.js";function resolveBatchRuntime(settings,maxInputCharacters){const batchSizeCandidate=settings.search.embedding_batch_size;const timeoutMsCandidate=settings.search.embedding_timeout_ms;const maxRetriesCandidate=settings.search.scanner_max_batch_retries;const batchSize=Number.isFinite(batchSizeCandidate)&&batchSizeCandidate>0?Math.floor(batchSizeCandidate):1;const timeoutMs=Number.isFinite(timeoutMsCandidate)&&timeoutMsCandidate>0?Math.floor(timeoutMsCandidate):3e4;const maxRetries=Number.isFinite(maxRetriesCandidate)&&maxRetriesCandidate>=0?Math.floor(maxRetriesCandidate):0;return{batchSize,timeoutMs,maxRetries,maxBatchInputCharacters:Number.POSITIVE_INFINITY,maxInputCharacters}}function createBatches(inputs,batchSize,maxBatchInputCharacters){const batches=[];let currentBatch=[];let currentCharacters=0;for(const input of inputs){const wouldExceedCount=currentBatch.length>=batchSize;const wouldExceedCharacters=currentBatch.length>0&&Number.isFinite(maxBatchInputCharacters)&¤tCharacters+input.length>maxBatchInputCharacters;if(wouldExceedCount||wouldExceedCharacters){batches.push(currentBatch);currentBatch=[];currentCharacters=0}currentBatch.push(input);currentCharacters+=input.length}batches.push(currentBatch);return batches}function resolveProviderBatchRuntime(provider,runtime){if(provider.name!=="ollama"){return runtime}return{...runtime,maxBatchInputCharacters:OLLAMA_SEMANTIC_CORPUS_INPUT_MAX_CHARACTERS}}function truncateInputForRuntime(input,maxInputCharacters){if(!Number.isFinite(maxInputCharacters)||maxInputCharacters<=0||input.length<=maxInputCharacters){return input}const keepLength=Math.max(0,maxInputCharacters-SEMANTIC_CORPUS_TRUNCATION_SUFFIX.length);return`${input.slice(0,keepLength)}${SEMANTIC_CORPUS_TRUNCATION_SUFFIX}`.slice(0,maxInputCharacters)}function isEmbeddingTimeoutError(error){const message=toErrorMessage(error).toLowerCase();return message.includes("timed out")||message.includes("timeout")}function buildEmbeddingFailureMessage(provider,batchLabel,batchSize,timeoutMs,attempts,error){const base=`Embedding batch ${batchLabel} failed after ${attempts} attempt(s): ${toErrorMessage(error)}`;const details=`provider=${provider.name} model=${provider.model} batch_size=${batchSize} timeout_ms=${timeoutMs}`;if(!isEmbeddingTimeoutError(error)){return`${base} (${details})`}return`${base} (${details}; guidance=check provider availability or lower search.embedding_batch_size, raise search.embedding_timeout_ms, or run keyword search while semantic indexing catches up)`}async function executeBatchWithAdaptiveSplit(provider,batch,batchLabel,timeoutMs,maxRetries,warnings){let lastError=null;for(let attempt=0;attempt<=maxRetries;attempt+=1){try{const batchVectors=await executeEmbeddingRequest(provider,batch,{timeout_ms:timeoutMs});if(attempt>0){warnings.push(`search_embedding_batch_retry_succeeded:batch=${batchLabel}:attempt=${attempt+1}:size=${batch.length}`)}return batchVectors}catch(error){lastError=error;if(isEmbeddingTimeoutError(error)&&batch.length>1){const midpoint=Math.ceil(batch.length/2);const left=batch.slice(0,midpoint);const right=batch.slice(midpoint);warnings.push(`search_embedding_batch_split_after_timeout:batch=${batchLabel}:size=${batch.length}:parts=${left.length}|${right.length}`);return[...await executeBatchWithAdaptiveSplit(provider,left,`${batchLabel}.1`,timeoutMs,maxRetries,warnings),...await executeBatchWithAdaptiveSplit(provider,right,`${batchLabel}.2`,timeoutMs,maxRetries,warnings)]}if(attempt<maxRetries){const delayMs=Math.min(1e3*2**attempt,8e3);await new Promise(resolve=>setTimeout(resolve,delayMs))}}}throw new Error(buildEmbeddingFailureMessage(provider,batchLabel,batch.length,timeoutMs,maxRetries+1,lastError))}async function executeEmbeddingBatchesWithRetry(provider,settings,inputs,options={}){if(inputs.length===0){return{vectors:[],warnings:[]}}const warnings=[];const corpusLimitResolution=resolveSemanticCorpusCharacterLimit(provider.name,settings.search.embedding_corpus_max_characters);if(corpusLimitResolution.warning){warnings.push(corpusLimitResolution.warning)}const runtime=resolveProviderBatchRuntime(provider,resolveBatchRuntime(settings,corpusLimitResolution.maxCharacters));let truncatedInputCount=0;const normalizedInputs=inputs.map(input=>{const normalized=truncateInputForRuntime(input,runtime.maxInputCharacters);if(normalized.length<input.length){truncatedInputCount+=1}return normalized});if(truncatedInputCount>0){warnings.push(`search_embedding_input_truncated:count=${truncatedInputCount}:max_characters=${runtime.maxInputCharacters}`)}const batches=createBatches(normalizedInputs,runtime.batchSize,runtime.maxBatchInputCharacters);const vectors=[];let completedInputs=0;for(let batchIndex=0;batchIndex<batches.length;batchIndex+=1){const batch=batches[batchIndex];options.onProgress?.({batch_index:batchIndex+1,batch_total:batches.length,batch_size:batch.length,completed_inputs:completedInputs,total_inputs:normalizedInputs.length,phase:"start"});vectors.push(...await executeBatchWithAdaptiveSplit(provider,batch,String(batchIndex+1),runtime.timeoutMs,runtime.maxRetries,warnings));completedInputs+=batch.length;options.onProgress?.({batch_index:batchIndex+1,batch_total:batches.length,batch_size:batch.length,completed_inputs:completedInputs,total_inputs:normalizedInputs.length,phase:"complete"})}return{vectors,warnings}}export{executeEmbeddingBatchesWithRetry};
|
|
163
2
|
//# sourceMappingURL=embedding-batches.js.map
|
|
164
|
-
//# debugId=2c518b97-bc75-5e3f-91e8-d6779d565558
|