@remnic/core 9.6.0 → 9.6.2
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/dist/access-admin-ops-surface.d.ts +7 -8
- package/dist/access-admin-ops-surface.js +8 -8
- package/dist/access-boundary.d.ts +9 -8
- package/dist/access-boundary.js +9 -9
- package/dist/access-cli.js +40 -40
- package/dist/access-http.d.ts +47 -16
- package/dist/access-http.js +13 -13
- package/dist/access-identity-continuity-surface.d.ts +6 -7
- package/dist/access-identity-continuity-surface.js +8 -8
- package/dist/access-lcm-surface.d.ts +7 -8
- package/dist/access-lcm-surface.js +8 -8
- package/dist/access-mcp.d.ts +13 -8
- package/dist/access-mcp.js +12 -12
- package/dist/access-observe-write-surface.d.ts +7 -8
- package/dist/access-observe-write-surface.js +8 -8
- package/dist/access-operations-batch.js +10 -10
- package/dist/access-operations.d.ts +8 -9
- package/dist/access-operations.js +11 -11
- package/dist/access-recall-surface.d.ts +7 -8
- package/dist/access-recall-surface.js +8 -8
- package/dist/access-schema.d.ts +6 -6
- package/dist/{access-service-CXJaql3A.d.ts → access-service-B_sc1w_k.d.ts} +9 -9
- package/dist/access-service.d.ts +7 -8
- package/dist/access-service.js +8 -8
- package/dist/access-surface-catalog.d.ts +7 -8
- package/dist/action-confidence.d.ts +1 -2
- package/dist/active-memory-bridge.d.ts +1 -2
- package/dist/active-recall.d.ts +1 -2
- package/dist/behavior-learner.d.ts +1 -2
- package/dist/behavior-signals.d.ts +1 -2
- package/dist/bootstrap.d.ts +6 -7
- package/dist/briefing.d.ts +2 -3
- package/dist/briefing.js +3 -3
- package/dist/buffer-surprise-report.d.ts +1 -2
- package/dist/buffer.d.ts +2 -3
- package/dist/buffer.js +1 -1
- package/dist/bulk-import/index.d.ts +3 -3
- package/dist/bulk-import/index.js +2 -2
- package/dist/calibration.d.ts +1 -2
- package/dist/capabilities.d.ts +1 -2
- package/dist/{catalog-C9cu67Ig.d.ts → catalog-9WanSGtt.d.ts} +1 -1
- package/dist/causal-behavior.d.ts +1 -2
- package/dist/causal-consolidation.d.ts +1 -2
- package/dist/causal-consolidation.js +4 -4
- package/dist/causal-trajectory-graph.d.ts +1 -2
- package/dist/{chunk-PNLFN2PZ.js → chunk-23G3T2Q5.js} +2 -2
- package/dist/{chunk-SIRPLF54.js → chunk-2K3OSLHE.js} +2 -2
- package/dist/{chunk-JS2HKKOK.js → chunk-3AC5UYKI.js} +1 -1
- package/dist/{chunk-JS2HKKOK.js.map → chunk-3AC5UYKI.js.map} +1 -1
- package/dist/{chunk-FKCRGLRD.js → chunk-4WRKKRTD.js} +266 -160
- package/dist/chunk-4WRKKRTD.js.map +1 -0
- package/dist/{chunk-LQHDIS7L.js → chunk-54BGIBCR.js} +2 -2
- package/dist/{chunk-PVUJ6WVV.js → chunk-5MH5NF3U.js} +5 -5
- package/dist/{chunk-PCLIWBGD.js → chunk-7ARV32PI.js} +8 -6
- package/dist/chunk-7ARV32PI.js.map +1 -0
- package/dist/{chunk-Y7UNNAZD.js → chunk-7ZYBDQ7V.js} +2 -2
- package/dist/{chunk-2PRQG7PV.js → chunk-AJVLDJU6.js} +1 -1
- package/dist/chunk-AJVLDJU6.js.map +1 -0
- package/dist/{chunk-LR5DZ56F.js → chunk-AXALUFAH.js} +2 -2
- package/dist/{chunk-AYZJID4S.js → chunk-B5GBWBCZ.js} +2 -2
- package/dist/{chunk-TLUDFPZL.js → chunk-CAZ3Z5M6.js} +2 -2
- package/dist/{chunk-RGK27ELN.js → chunk-DEKIXXIG.js} +2 -2
- package/dist/{chunk-2KK5WNQB.js → chunk-DQ42IQSK.js} +2 -2
- package/dist/{chunk-UFUKHGZD.js → chunk-F4I5NYBI.js} +89 -33
- package/dist/chunk-F4I5NYBI.js.map +1 -0
- package/dist/{chunk-HOJZMQ4J.js → chunk-FGDKJJZS.js} +2 -2
- package/dist/{chunk-ABP6QMVM.js → chunk-FQ7HAWWC.js} +2 -2
- package/dist/{chunk-CYWA2CXR.js → chunk-FVTLSFWU.js} +2 -2
- package/dist/{chunk-JJEJJ7RK.js → chunk-FXZTL7F7.js} +2 -2
- package/dist/{chunk-LADFWYHY.js → chunk-GOEV7CYF.js} +6 -6
- package/dist/chunk-GOEV7CYF.js.map +1 -0
- package/dist/{chunk-DANV2HTH.js → chunk-GQGDRLDM.js} +3 -3
- package/dist/{chunk-7F7Z6MOS.js → chunk-H4CKS5B2.js} +2 -2
- package/dist/{chunk-SVOHGUMI.js → chunk-H4FHR4UM.js} +174 -197
- package/dist/chunk-H4FHR4UM.js.map +1 -0
- package/dist/{chunk-CKITWVWJ.js → chunk-HSSERO3E.js} +2 -2
- package/dist/{chunk-23JFRB73.js → chunk-JODHPNLN.js} +2 -2
- package/dist/{chunk-DS7MM2ES.js → chunk-JZKR6ZAV.js} +2 -2
- package/dist/{chunk-BEM4D2QG.js → chunk-KJIJNLXT.js} +3 -3
- package/dist/{chunk-JSNVWNGX.js → chunk-KVSVVKHA.js} +2 -2
- package/dist/{chunk-4GNEDXDI.js → chunk-M67TLMP6.js} +2 -2
- package/dist/chunk-M67TLMP6.js.map +1 -0
- package/dist/{chunk-MC4FJXPA.js → chunk-MMACM5G2.js} +2 -2
- package/dist/{chunk-OUELRE5E.js → chunk-NOUJNHWG.js} +1 -1
- package/dist/chunk-NOUJNHWG.js.map +1 -0
- package/dist/{chunk-3XIY7MDQ.js → chunk-O6YI4CVI.js} +2 -2
- package/dist/{chunk-F53UF7CI.js → chunk-QLVLW7UD.js} +6 -2
- package/dist/{chunk-F53UF7CI.js.map → chunk-QLVLW7UD.js.map} +1 -1
- package/dist/{chunk-XCL57M6Q.js → chunk-RRKPLLCC.js} +21 -20
- package/dist/chunk-RRKPLLCC.js.map +1 -0
- package/dist/{chunk-72WG5QKN.js → chunk-SDAXPXER.js} +2 -2
- package/dist/{chunk-4LV23CHK.js → chunk-VHJARF5R.js} +2 -2
- package/dist/{chunk-H2DXDQCQ.js → chunk-VRJG3HIZ.js} +46 -42
- package/dist/chunk-VRJG3HIZ.js.map +1 -0
- package/dist/{chunk-6MMONPHM.js → chunk-W2AHSCKY.js} +2 -2
- package/dist/{chunk-P454KXD6.js → chunk-YAWJMR3Y.js} +21 -21
- package/dist/{chunk-K5LLP4CY.js → chunk-ZGPDSEKG.js} +20 -9
- package/dist/chunk-ZGPDSEKG.js.map +1 -0
- package/dist/{cli-CqdPA6z9.d.ts → cli-CnRsWREp.d.ts} +4 -5
- package/dist/cli.d.ts +9 -10
- package/dist/cli.js +32 -32
- package/dist/compounding/engine.d.ts +2 -3
- package/dist/compounding/engine.js +3 -3
- package/dist/compounding/preference-consolidator.d.ts +1 -2
- package/dist/compression-optimizer.d.ts +1 -2
- package/dist/config.d.ts +1 -2
- package/dist/connectors/codex-materialize-runner.d.ts +1 -2
- package/dist/connectors/codex-materialize-runner.js +3 -3
- package/dist/connectors/codex-materialize.d.ts +1 -2
- package/dist/connectors/index.d.ts +1 -2
- package/dist/connectors/index.js +3 -3
- package/dist/consolidation-provenance-check.d.ts +2 -3
- package/dist/consolidation-undo.d.ts +2 -3
- package/dist/contradiction/index.d.ts +3 -4
- package/dist/conversation-index/backend.d.ts +1 -2
- package/dist/conversation-index/chunker.d.ts +1 -2
- package/dist/conversation-index/faiss-adapter.d.ts +1 -2
- package/dist/conversation-index/indexer.d.ts +1 -2
- package/dist/conversation-index/search.d.ts +1 -2
- package/dist/day-summary.d.ts +1 -2
- package/dist/delinearize.d.ts +1 -2
- package/dist/direct-answer-wiring.d.ts +1 -2
- package/dist/direct-answer.d.ts +1 -2
- package/dist/embedding-fallback.d.ts +1 -2
- package/dist/enrichment/index.d.ts +1 -2
- package/dist/entity-retrieval.d.ts +2 -3
- package/dist/entity-retrieval.js +3 -3
- package/dist/entity-schema.d.ts +1 -2
- package/dist/explicit-capture.d.ts +8 -7
- package/dist/explicit-capture.js +1 -1
- package/dist/extraction-faithfulness.d.ts +1 -2
- package/dist/extraction-judge-telemetry.d.ts +1 -2
- package/dist/extraction-judge-training.d.ts +1 -2
- package/dist/extraction-judge.d.ts +1 -2
- package/dist/extraction.d.ts +1 -2
- package/dist/fallback-llm.d.ts +1 -2
- package/dist/graph-dashboard-diff.d.ts +1 -2
- package/dist/graph-dashboard-key.d.ts +1 -2
- package/dist/graph-dashboard-parser.d.ts +1 -2
- package/dist/graph-edge-reinforcement.d.ts +1 -2
- package/dist/graph-snapshot.d.ts +1 -2
- package/dist/graph.d.ts +1 -2
- package/dist/identity-continuity.d.ts +1 -2
- package/dist/importance.d.ts +1 -2
- package/dist/importers/index.d.ts +1 -1
- package/dist/importers/index.js +2 -2
- package/dist/index.d.ts +14 -15
- package/dist/index.js +40 -40
- package/dist/intent.d.ts +1 -2
- package/dist/lcm/engine.d.ts +1 -2
- package/dist/lcm/index.d.ts +1 -2
- package/dist/lcm/tools.d.ts +1 -2
- package/dist/lifecycle.d.ts +1 -2
- package/dist/live-connectors-runner.d.ts +1 -2
- package/dist/local-llm.d.ts +1 -2
- package/dist/local-model-endpoint.d.ts +1 -2
- package/dist/maintenance/memory-governance.d.ts +1 -2
- package/dist/maintenance/memory-governance.js +3 -3
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +3 -3
- package/dist/maintenance/rebuild-memory-projection.js +4 -4
- package/dist/mcp-memory-inspector-app.d.ts +7 -8
- package/dist/memory-action-policy.d.ts +1 -2
- package/dist/memory-cache.d.ts +1 -2
- package/dist/memory-lifecycle-ledger-utils.d.ts +1 -2
- package/dist/memory-projection-store.d.ts +1 -2
- package/dist/memory-provenance.d.ts +1 -2
- package/dist/memory-worth-outcomes.d.ts +2 -3
- package/dist/models-json.d.ts +1 -2
- package/dist/namespaces/migrate.d.ts +3 -4
- package/dist/namespaces/migrate.js +4 -4
- package/dist/namespaces/principal.d.ts +1 -2
- package/dist/namespaces/search.d.ts +1 -2
- package/dist/namespaces/storage.d.ts +3 -4
- package/dist/namespaces/storage.js +3 -3
- package/dist/native-knowledge.d.ts +1 -2
- package/dist/operator-toolkit.d.ts +2 -3
- package/dist/operator-toolkit.js +7 -7
- package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -3
- package/dist/orchestration/maintenance.d.ts +2 -3
- package/dist/orchestration/maintenance.js +5 -5
- package/dist/{orchestrator-CWFrT8AF.d.ts → orchestrator-NRLVXPpH.d.ts} +40 -15
- package/dist/orchestrator.d.ts +6 -7
- package/dist/orchestrator.js +40 -40
- package/dist/patterns-cli.d.ts +1 -2
- package/dist/{pipeline-DmqtvION.d.ts → pipeline-CiD86zIk.d.ts} +1 -1
- package/dist/policy-runtime.d.ts +1 -2
- package/dist/provenance.d.ts +1 -2
- package/dist/{qmd--fnPMK60.d.ts → qmd-Bef7DDuQ.d.ts} +1 -1
- package/dist/qmd-preflight.d.ts +2 -3
- package/dist/qmd-recall-cache.d.ts +1 -2
- package/dist/qmd.d.ts +2 -3
- package/dist/recall-disclosure-escalation.d.ts +1 -2
- package/dist/recall-explain-renderer.d.ts +1 -2
- package/dist/recall-explain-renderer.js +3 -3
- package/dist/recall-planner-llm.d.ts +1 -2
- package/dist/recall-state.d.ts +1 -2
- package/dist/recall-tag-filter.d.ts +1 -2
- package/dist/recall-timings.d.ts +1 -2
- package/dist/recall-xray-cli.d.ts +1 -2
- package/dist/recall-xray-cli.js +4 -4
- package/dist/recall-xray-renderer.d.ts +1 -2
- package/dist/recall-xray-renderer.js +3 -3
- package/dist/recall-xray.d.ts +1 -2
- package/dist/recall-xray.js +2 -2
- package/dist/replay/normalizers/chatgpt.d.ts +1 -0
- package/dist/replay/normalizers/chatgpt.js +3 -3
- package/dist/replay/normalizers/claude.d.ts +1 -0
- package/dist/replay/normalizers/claude.js +3 -3
- package/dist/replay/normalizers/openclaw.d.ts +1 -0
- package/dist/replay/normalizers/openclaw.js +3 -3
- package/dist/replay/normalizers/shared.d.ts +1 -0
- package/dist/replay/normalizers/shared.js +2 -2
- package/dist/replay/runner.d.ts +1 -0
- package/dist/replay/runner.js +2 -2
- package/dist/replay/types.d.ts +2 -1
- package/dist/replay/types.js +1 -1
- package/dist/resolve-auth-token.d.ts +1 -2
- package/dist/retrieval-agents.d.ts +2 -3
- package/dist/retrieval-tiers.d.ts +1 -2
- package/dist/routing/engine.d.ts +1 -2
- package/dist/routing/store.d.ts +1 -2
- package/dist/schemas.d.ts +44 -44
- package/dist/search/embed-helper.d.ts +1 -2
- package/dist/search/factory.d.ts +1 -2
- package/dist/search/index.d.ts +1 -2
- package/dist/search/lancedb-backend.d.ts +1 -2
- package/dist/search/meilisearch-backend.d.ts +1 -2
- package/dist/search/noop-backend.d.ts +1 -2
- package/dist/search/orama-backend.d.ts +1 -2
- package/dist/search/port.d.ts +1 -2
- package/dist/search/remote-backend.d.ts +1 -2
- package/dist/{semantic-DJR8_DMQ.d.ts → semantic-TddhF0y7.d.ts} +17 -1
- package/dist/{semantic-consolidation-O5lMZ4LG.d.ts → semantic-consolidation-BTShF2Fo.d.ts} +1 -1
- package/dist/semantic-consolidation.d.ts +2 -3
- package/dist/semantic-consolidation.js +4 -4
- package/dist/semantic-rule-promotion.js +3 -3
- package/dist/semantic-rule-verifier.d.ts +1 -2
- package/dist/semantic-rule-verifier.js +3 -3
- package/dist/session-observer-bands.d.ts +1 -2
- package/dist/session-observer-state.d.ts +1 -2
- package/dist/shared-context/manager.d.ts +3 -4
- package/dist/signal.d.ts +1 -2
- package/dist/{storage-C1maCNbc.d.ts → storage-DxPDAiU9.d.ts} +5 -1
- package/dist/storage.d.ts +2 -3
- package/dist/storage.js +2 -2
- package/dist/summarizer.d.ts +1 -2
- package/dist/summary-snapshot.d.ts +1 -2
- package/dist/temporal-supersession.d.ts +2 -3
- package/dist/temporal-validity.d.ts +1 -2
- package/dist/threading.d.ts +1 -2
- package/dist/tier-migration.d.ts +2 -3
- package/dist/tier-routing.d.ts +1 -2
- package/dist/topics.d.ts +1 -2
- package/dist/transcript.d.ts +1 -2
- package/dist/transfer/types.d.ts +12 -12
- package/dist/trust-score-stage.d.ts +1 -2
- package/dist/trust-score.d.ts +1 -2
- package/dist/{types-CGgcNWCG.d.ts → types-DDUDgd7T.d.ts} +93 -4
- package/dist/types.d.ts +1 -2
- package/dist/types.js +1 -1
- package/dist/utility-runtime.d.ts +1 -2
- package/dist/verified-recall.js +3 -3
- package/package.json +2 -2
- package/src/access-admin-ops-surface.ts +1 -0
- package/src/access-boundary.ts +2 -0
- package/src/access-http.test.ts +129 -0
- package/src/access-http.ts +92 -23
- package/src/access-mcp.ts +11 -2
- package/src/access-observe-write-surface.ts +87 -113
- package/src/access-operations-batch.ts +2 -2
- package/src/access-operations.ts +17 -16
- package/src/access-service.ts +11 -3
- package/src/admin/admin-surfaces.ts +2 -0
- package/src/buffer.ts +6 -1
- package/src/bulk-import/types.ts +2 -1
- package/src/coding/architecture-surfaces.test.ts +79 -5
- package/src/coding/architecture-surfaces.ts +7 -1
- package/src/coding/decision-surfaces.test.ts +1 -0
- package/src/coding/decision-surfaces.ts +4 -0
- package/src/connector-provenance-lifecycle.test.ts +618 -0
- package/src/connector-provenance.test.ts +219 -0
- package/src/dedup/semantic.test.ts +105 -0
- package/src/dedup/semantic.ts +69 -1
- package/src/explicit-capture.ts +21 -4
- package/src/orchestration/extraction-persist.ts +154 -6
- package/src/orchestration/extraction-run.ts +138 -228
- package/src/orchestration/persistence-index.ts +40 -5
- package/src/orchestration/turn-ingestion.ts +16 -9
- package/src/orchestrator-connector-dedup.test.ts +1082 -0
- package/src/orchestrator.ts +7 -11
- package/src/replay/types.ts +2 -1
- package/src/storage.ts +426 -553
- package/src/types.ts +11 -2
- package/src/utils/yaml-scalar.ts +20 -0
- package/dist/chunk-2PRQG7PV.js.map +0 -1
- package/dist/chunk-4GNEDXDI.js.map +0 -1
- package/dist/chunk-FKCRGLRD.js.map +0 -1
- package/dist/chunk-H2DXDQCQ.js.map +0 -1
- package/dist/chunk-K5LLP4CY.js.map +0 -1
- package/dist/chunk-LADFWYHY.js.map +0 -1
- package/dist/chunk-OUELRE5E.js.map +0 -1
- package/dist/chunk-PCLIWBGD.js.map +0 -1
- package/dist/chunk-SVOHGUMI.js.map +0 -1
- package/dist/chunk-UFUKHGZD.js.map +0 -1
- package/dist/chunk-XCL57M6Q.js.map +0 -1
- package/dist/types-gb_SNtjR.d.ts +0 -85
- /package/dist/{chunk-PNLFN2PZ.js.map → chunk-23G3T2Q5.js.map} +0 -0
- /package/dist/{chunk-SIRPLF54.js.map → chunk-2K3OSLHE.js.map} +0 -0
- /package/dist/{chunk-LQHDIS7L.js.map → chunk-54BGIBCR.js.map} +0 -0
- /package/dist/{chunk-PVUJ6WVV.js.map → chunk-5MH5NF3U.js.map} +0 -0
- /package/dist/{chunk-Y7UNNAZD.js.map → chunk-7ZYBDQ7V.js.map} +0 -0
- /package/dist/{chunk-LR5DZ56F.js.map → chunk-AXALUFAH.js.map} +0 -0
- /package/dist/{chunk-AYZJID4S.js.map → chunk-B5GBWBCZ.js.map} +0 -0
- /package/dist/{chunk-TLUDFPZL.js.map → chunk-CAZ3Z5M6.js.map} +0 -0
- /package/dist/{chunk-RGK27ELN.js.map → chunk-DEKIXXIG.js.map} +0 -0
- /package/dist/{chunk-2KK5WNQB.js.map → chunk-DQ42IQSK.js.map} +0 -0
- /package/dist/{chunk-HOJZMQ4J.js.map → chunk-FGDKJJZS.js.map} +0 -0
- /package/dist/{chunk-ABP6QMVM.js.map → chunk-FQ7HAWWC.js.map} +0 -0
- /package/dist/{chunk-CYWA2CXR.js.map → chunk-FVTLSFWU.js.map} +0 -0
- /package/dist/{chunk-JJEJJ7RK.js.map → chunk-FXZTL7F7.js.map} +0 -0
- /package/dist/{chunk-DANV2HTH.js.map → chunk-GQGDRLDM.js.map} +0 -0
- /package/dist/{chunk-7F7Z6MOS.js.map → chunk-H4CKS5B2.js.map} +0 -0
- /package/dist/{chunk-CKITWVWJ.js.map → chunk-HSSERO3E.js.map} +0 -0
- /package/dist/{chunk-23JFRB73.js.map → chunk-JODHPNLN.js.map} +0 -0
- /package/dist/{chunk-DS7MM2ES.js.map → chunk-JZKR6ZAV.js.map} +0 -0
- /package/dist/{chunk-BEM4D2QG.js.map → chunk-KJIJNLXT.js.map} +0 -0
- /package/dist/{chunk-JSNVWNGX.js.map → chunk-KVSVVKHA.js.map} +0 -0
- /package/dist/{chunk-MC4FJXPA.js.map → chunk-MMACM5G2.js.map} +0 -0
- /package/dist/{chunk-3XIY7MDQ.js.map → chunk-O6YI4CVI.js.map} +0 -0
- /package/dist/{chunk-72WG5QKN.js.map → chunk-SDAXPXER.js.map} +0 -0
- /package/dist/{chunk-4LV23CHK.js.map → chunk-VHJARF5R.js.map} +0 -0
- /package/dist/{chunk-6MMONPHM.js.map → chunk-W2AHSCKY.js.map} +0 -0
- /package/dist/{chunk-P454KXD6.js.map → chunk-YAWJMR3Y.js.map} +0 -0
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
} from "./chunk-J3XHPFEU.js";
|
|
8
8
|
import {
|
|
9
9
|
MaintenanceScheduler
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-JODHPNLN.js";
|
|
11
11
|
import {
|
|
12
12
|
runPeerProfileReasoner
|
|
13
13
|
} from "./chunk-I74SUMNI.js";
|
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
import {
|
|
30
30
|
CompoundingEngine,
|
|
31
31
|
defaultTierMigrationCycleBudget
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-B5GBWBCZ.js";
|
|
33
33
|
import {
|
|
34
34
|
SharedContextManager
|
|
35
35
|
} from "./chunk-UI4FVU6T.js";
|
|
@@ -198,24 +198,24 @@ import {
|
|
|
198
198
|
buildEntityRecallSection,
|
|
199
199
|
entityRecentTranscriptLookbackHours,
|
|
200
200
|
readRecentEntityTranscriptEntries
|
|
201
|
-
} from "./chunk-
|
|
201
|
+
} from "./chunk-FVTLSFWU.js";
|
|
202
202
|
import {
|
|
203
203
|
normalizeReplaySessionKey
|
|
204
|
-
} from "./chunk-
|
|
204
|
+
} from "./chunk-AJVLDJU6.js";
|
|
205
205
|
import {
|
|
206
206
|
RoutingRulesStore
|
|
207
207
|
} from "./chunk-KQPJLK3X.js";
|
|
208
208
|
import {
|
|
209
209
|
compareVerifiedEpisodeResults,
|
|
210
210
|
searchVerifiedEpisodes
|
|
211
|
-
} from "./chunk-
|
|
211
|
+
} from "./chunk-2K3OSLHE.js";
|
|
212
212
|
import {
|
|
213
213
|
ThreadingManager
|
|
214
214
|
} from "./chunk-DBRYEIGY.js";
|
|
215
215
|
import {
|
|
216
216
|
compareVerifiedSemanticRuleResults,
|
|
217
217
|
searchVerifiedSemanticRules
|
|
218
|
-
} from "./chunk-
|
|
218
|
+
} from "./chunk-DEKIXXIG.js";
|
|
219
219
|
import {
|
|
220
220
|
searchWorkProductLedgerEntries
|
|
221
221
|
} from "./chunk-ZRWB5D4H.js";
|
|
@@ -228,14 +228,14 @@ import {
|
|
|
228
228
|
import {
|
|
229
229
|
runNamespaceMaintenanceFanout,
|
|
230
230
|
summarizeNamespaceMaintenanceHealth
|
|
231
|
-
} from "./chunk-
|
|
231
|
+
} from "./chunk-5MH5NF3U.js";
|
|
232
232
|
import {
|
|
233
233
|
NamespaceCatalog,
|
|
234
234
|
planNamespaceMaintenance
|
|
235
|
-
} from "./chunk-
|
|
235
|
+
} from "./chunk-VHJARF5R.js";
|
|
236
236
|
import {
|
|
237
237
|
NamespaceStorageRouter
|
|
238
|
-
} from "./chunk-
|
|
238
|
+
} from "./chunk-23G3T2Q5.js";
|
|
239
239
|
import {
|
|
240
240
|
searchHarmonicRetrieval
|
|
241
241
|
} from "./chunk-AV5ZEH4M.js";
|
|
@@ -270,7 +270,7 @@ import {
|
|
|
270
270
|
materializeAfterSemanticConsolidation,
|
|
271
271
|
parseConsolidationResponse,
|
|
272
272
|
parseOperatorAwareConsolidationResponse
|
|
273
|
-
} from "./chunk-
|
|
273
|
+
} from "./chunk-AXALUFAH.js";
|
|
274
274
|
import {
|
|
275
275
|
buildRecallQueryPolicy
|
|
276
276
|
} from "./chunk-LBJBNWS2.js";
|
|
@@ -292,7 +292,7 @@ import {
|
|
|
292
292
|
} from "./chunk-UQ7RN5HK.js";
|
|
293
293
|
import {
|
|
294
294
|
SmartBuffer
|
|
295
|
-
} from "./chunk-
|
|
295
|
+
} from "./chunk-QLVLW7UD.js";
|
|
296
296
|
import {
|
|
297
297
|
isDisagreementPrompt
|
|
298
298
|
} from "./chunk-H3FZVNRN.js";
|
|
@@ -319,7 +319,7 @@ import {
|
|
|
319
319
|
createCorrectionService,
|
|
320
320
|
detectPassiveCorrections,
|
|
321
321
|
qmdCollectionPathParts
|
|
322
|
-
} from "./chunk-
|
|
322
|
+
} from "./chunk-VRJG3HIZ.js";
|
|
323
323
|
import {
|
|
324
324
|
importCapsule
|
|
325
325
|
} from "./chunk-CYWCKFCL.js";
|
|
@@ -335,7 +335,7 @@ import {
|
|
|
335
335
|
} from "./chunk-FF4KLI5W.js";
|
|
336
336
|
import {
|
|
337
337
|
buildXraySnapshot
|
|
338
|
-
} from "./chunk-
|
|
338
|
+
} from "./chunk-W2AHSCKY.js";
|
|
339
339
|
import {
|
|
340
340
|
objectiveStateStoreOverrideForNamespace,
|
|
341
341
|
searchObjectiveStateSnapshots
|
|
@@ -377,7 +377,7 @@ import {
|
|
|
377
377
|
} from "./chunk-QDW3E4RD.js";
|
|
378
378
|
import {
|
|
379
379
|
shouldSkipImplicitExtraction
|
|
380
|
-
} from "./chunk-
|
|
380
|
+
} from "./chunk-ZGPDSEKG.js";
|
|
381
381
|
import {
|
|
382
382
|
searchCausalTrajectories
|
|
383
383
|
} from "./chunk-7XGSIUP5.js";
|
|
@@ -390,7 +390,7 @@ import {
|
|
|
390
390
|
} from "./chunk-TBBDFYXW.js";
|
|
391
391
|
import {
|
|
392
392
|
buildChainFollowupGenerator
|
|
393
|
-
} from "./chunk-
|
|
393
|
+
} from "./chunk-7ZYBDQ7V.js";
|
|
394
394
|
import {
|
|
395
395
|
ContentHashIndex,
|
|
396
396
|
StorageManager,
|
|
@@ -405,7 +405,7 @@ import {
|
|
|
405
405
|
reconstructFusionInputs,
|
|
406
406
|
selfDeps,
|
|
407
407
|
serializeFusionDay
|
|
408
|
-
} from "./chunk-
|
|
408
|
+
} from "./chunk-H4FHR4UM.js";
|
|
409
409
|
import {
|
|
410
410
|
bodyIsEscaped,
|
|
411
411
|
decodeTranscriptBody,
|
|
@@ -442,7 +442,7 @@ import {
|
|
|
442
442
|
} from "./chunk-SVOZFLIQ.js";
|
|
443
443
|
import {
|
|
444
444
|
confidenceTier
|
|
445
|
-
} from "./chunk-
|
|
445
|
+
} from "./chunk-3AC5UYKI.js";
|
|
446
446
|
import {
|
|
447
447
|
buildQmdRecallCacheKey,
|
|
448
448
|
getCachedQmdRecall,
|
|
@@ -3380,9 +3380,7 @@ ${normalized}`).digest("hex");
|
|
|
3380
3380
|
this.recentExtractionFingerprints.set(fingerprint, now);
|
|
3381
3381
|
}
|
|
3382
3382
|
if (options.commit !== false && this.recentExtractionFingerprints.size > 200) {
|
|
3383
|
-
const entries = Array.from(
|
|
3384
|
-
this.recentExtractionFingerprints.entries()
|
|
3385
|
-
).sort((a, b) => a[1] - b[1]);
|
|
3383
|
+
const entries = Array.from(this.recentExtractionFingerprints.entries()).sort((a, b) => a[1] - b[1]);
|
|
3386
3384
|
for (const [key] of entries.slice(0, entries.length - 200)) {
|
|
3387
3385
|
this.recentExtractionFingerprints.delete(key);
|
|
3388
3386
|
}
|
|
@@ -3396,10 +3394,7 @@ ${normalized}`).digest("hex");
|
|
|
3396
3394
|
const meta = preloadedMeta ?? await storage.loadMeta();
|
|
3397
3395
|
const observedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
3398
3396
|
const seen = new Map(
|
|
3399
|
-
(meta.processedExtractionFingerprints ?? []).map((entry) => [
|
|
3400
|
-
entry.fingerprint,
|
|
3401
|
-
entry.observedAt
|
|
3402
|
-
])
|
|
3397
|
+
(meta.processedExtractionFingerprints ?? []).map((entry) => [entry.fingerprint, entry.observedAt])
|
|
3403
3398
|
);
|
|
3404
3399
|
seen.set(fingerprint, observedAt);
|
|
3405
3400
|
meta.processedExtractionFingerprints = Array.from(seen.entries()).map(([value, at]) => ({ fingerprint: value, observedAt: at })).sort((left, right) => left.observedAt.localeCompare(right.observedAt)).slice(-500);
|
|
@@ -3444,19 +3439,21 @@ ${normalized}`).digest("hex");
|
|
|
3444
3439
|
durableOutputCount: 0
|
|
3445
3440
|
};
|
|
3446
3441
|
}
|
|
3447
|
-
const normalizedTurns = turns.filter(
|
|
3448
|
-
(t) => (t.role === "user" || t.role === "assistant") && typeof t.content === "string"
|
|
3449
|
-
).map((t) => ({
|
|
3442
|
+
const normalizedTurns = turns.filter((t) => (t.role === "user" || t.role === "assistant") && typeof t.content === "string").map((t) => ({
|
|
3450
3443
|
...t,
|
|
3451
3444
|
content: t.content.trim().slice(0, this.config.extractionMaxTurnChars)
|
|
3452
3445
|
})).filter((t) => t.content.length > 0);
|
|
3453
|
-
const targetTurns = normalizedTurns.filter(
|
|
3454
|
-
(turn) => turn.extractionContextOnly !== true
|
|
3455
|
-
);
|
|
3446
|
+
const targetTurns = normalizedTurns.filter((turn) => turn.extractionContextOnly !== true);
|
|
3456
3447
|
if (targetTurns.length === 0) {
|
|
3457
3448
|
log.debug("skipping extraction: no non-context turns after normalization");
|
|
3458
3449
|
if (normalizedTurns.length > 0) {
|
|
3459
|
-
await this.deps.maybeCapturePassiveCorrections(normalizedTurns, {
|
|
3450
|
+
await this.deps.maybeCapturePassiveCorrections(normalizedTurns, {
|
|
3451
|
+
sessionKey,
|
|
3452
|
+
principal: resolvePrincipal(sessionKey, this.config),
|
|
3453
|
+
namespace: this.deps.resolveSelfNamespace(sessionKey),
|
|
3454
|
+
bufferKey,
|
|
3455
|
+
isLiveSession: clearBufferAfterExtraction
|
|
3456
|
+
});
|
|
3460
3457
|
}
|
|
3461
3458
|
await clearBuffer();
|
|
3462
3459
|
return { status: "skipped", reason: "empty_normalized_turns", persistedCount: 0, durableOutputCount: 0 };
|
|
@@ -3465,23 +3462,27 @@ ${normalized}`).digest("hex");
|
|
|
3465
3462
|
throwIfDeadlineExceeded("before_extract");
|
|
3466
3463
|
throwIfAborted2("before_extract");
|
|
3467
3464
|
const userTurns = targetTurns.filter((t) => t.role === "user");
|
|
3468
|
-
const totalChars = targetTurns.reduce(
|
|
3469
|
-
(sum, t) => sum + t.content.length,
|
|
3470
|
-
0
|
|
3471
|
-
);
|
|
3465
|
+
const totalChars = targetTurns.reduce((sum, t) => sum + t.content.length, 0);
|
|
3472
3466
|
const belowCharThreshold = totalChars < this.config.extractionMinChars;
|
|
3473
3467
|
const belowUserTurnThreshold = !skipUserTurnThreshold && userTurns.length < this.config.extractionMinUserTurns;
|
|
3474
3468
|
if (!skipCharThreshold && belowCharThreshold || belowUserTurnThreshold) {
|
|
3475
|
-
log.debug(
|
|
3476
|
-
`skipping extraction: below threshold (totalChars=${totalChars}, userTurns=${userTurns.length})`
|
|
3477
|
-
);
|
|
3469
|
+
log.debug(`skipping extraction: below threshold (totalChars=${totalChars}, userTurns=${userTurns.length})`);
|
|
3478
3470
|
await clearBuffer();
|
|
3479
3471
|
{
|
|
3480
3472
|
const capturePrincipal = typeof options.principalOverride === "string" && options.principalOverride.length > 0 ? options.principalOverride : resolvePrincipal(sessionKey, this.config);
|
|
3481
3473
|
const captureWO = typeof options.writeNamespaceOverride === "string" && options.writeNamespaceOverride.length > 0 ? options.writeNamespaceOverride : void 0;
|
|
3482
3474
|
const captureCodingCtx = sessionKey ? this.deps.getCodingContextForSession(sessionKey) : null;
|
|
3483
|
-
const captureCodingOv = resolveCodingNamespaceOverlay(
|
|
3484
|
-
|
|
3475
|
+
const captureCodingOv = resolveCodingNamespaceOverlay(
|
|
3476
|
+
captureCodingCtx,
|
|
3477
|
+
this.config.codingMode,
|
|
3478
|
+
this.config.defaultNamespace
|
|
3479
|
+
);
|
|
3480
|
+
const captureScopePlan = resolveScopeProfilePlan({
|
|
3481
|
+
config: this.config,
|
|
3482
|
+
principal: capturePrincipal,
|
|
3483
|
+
codingContext: captureCodingCtx,
|
|
3484
|
+
codingOverlay: captureCodingOv
|
|
3485
|
+
});
|
|
3485
3486
|
const captureNamespace = captureWO ?? captureScopePlan?.writeNamespace ?? this.deps.resolveSelfNamespace(sessionKey);
|
|
3486
3487
|
await this.deps.maybeCapturePassiveCorrections(normalizedTurns, {
|
|
3487
3488
|
sessionKey,
|
|
@@ -3514,9 +3515,7 @@ ${normalized}`).digest("hex");
|
|
|
3514
3515
|
});
|
|
3515
3516
|
const scopeProfileWritePlan = explicitWriteNamespace ? null : scopeProfileGatePlan;
|
|
3516
3517
|
if (scopeProfileWritePlan) {
|
|
3517
|
-
const selectedLayer = scopeProfileWritePlan.layers.find(
|
|
3518
|
-
(layer) => layer.id === scopeProfileWritePlan.writeLayer
|
|
3519
|
-
);
|
|
3518
|
+
const selectedLayer = scopeProfileWritePlan.layers.find((layer) => layer.id === scopeProfileWritePlan.writeLayer);
|
|
3520
3519
|
const writeNamespaceReadable = scopeProfileWritePlan.readNamespaces.includes(
|
|
3521
3520
|
scopeProfileWritePlan.writeNamespace
|
|
3522
3521
|
);
|
|
@@ -3533,25 +3532,13 @@ ${normalized}`).digest("hex");
|
|
|
3533
3532
|
};
|
|
3534
3533
|
}
|
|
3535
3534
|
}
|
|
3536
|
-
const selfNamespace = explicitWriteNamespace ?? scopeProfileWritePlan?.writeNamespace ?? this.deps.applyCodingNamespaceOverlay(
|
|
3537
|
-
sessionKey,
|
|
3538
|
-
defaultNamespaceForPrincipal(principal, this.config)
|
|
3539
|
-
);
|
|
3535
|
+
const selfNamespace = explicitWriteNamespace ?? scopeProfileWritePlan?.writeNamespace ?? this.deps.applyCodingNamespaceOverlay(sessionKey, defaultNamespaceForPrincipal(principal, this.config));
|
|
3540
3536
|
const storage = await this.deps.getStorageRouter().storageFor(selfNamespace);
|
|
3541
|
-
const shouldPersistProcessedFingerprint = targetTurns.some(
|
|
3542
|
-
|
|
3543
|
-
);
|
|
3544
|
-
const extractionFingerprint = this.buildExtractionFingerprint(
|
|
3545
|
-
targetTurns,
|
|
3546
|
-
bufferKey
|
|
3547
|
-
);
|
|
3537
|
+
const shouldPersistProcessedFingerprint = targetTurns.some((turn) => turn.persistProcessedFingerprint === true);
|
|
3538
|
+
const extractionFingerprint = this.buildExtractionFingerprint(targetTurns, bufferKey);
|
|
3548
3539
|
let meta = extractionFingerprint && shouldPersistProcessedFingerprint ? await storage.loadMeta() : null;
|
|
3549
|
-
if (extractionFingerprint && shouldPersistProcessedFingerprint && (meta?.processedExtractionFingerprints ?? []).some(
|
|
3550
|
-
(
|
|
3551
|
-
)) {
|
|
3552
|
-
log.debug(
|
|
3553
|
-
`runExtraction: skipping already-processed extraction fingerprint for ${bufferKey}`
|
|
3554
|
-
);
|
|
3540
|
+
if (extractionFingerprint && shouldPersistProcessedFingerprint && (meta?.processedExtractionFingerprints ?? []).some((entry) => entry.fingerprint === extractionFingerprint)) {
|
|
3541
|
+
log.debug(`runExtraction: skipping already-processed extraction fingerprint for ${bufferKey}`);
|
|
3555
3542
|
await clearBuffer();
|
|
3556
3543
|
return {
|
|
3557
3544
|
status: "skipped",
|
|
@@ -3562,10 +3549,7 @@ ${normalized}`).digest("hex");
|
|
|
3562
3549
|
}
|
|
3563
3550
|
const existingEntities = await storage.listEntityNames();
|
|
3564
3551
|
const result = await raceRecallAbort(
|
|
3565
|
-
this.deps.getExtraction().extract(
|
|
3566
|
-
normalizedTurns,
|
|
3567
|
-
existingEntities
|
|
3568
|
-
),
|
|
3552
|
+
this.deps.getExtraction().extract(normalizedTurns, existingEntities),
|
|
3569
3553
|
options.abortSignal,
|
|
3570
3554
|
"extraction aborted (during_extract)"
|
|
3571
3555
|
);
|
|
@@ -3591,13 +3575,10 @@ ${normalized}`).digest("hex");
|
|
|
3591
3575
|
["profileUpdates", result.profileUpdates]
|
|
3592
3576
|
].filter(([, value]) => !Array.isArray(value)).map(([field]) => field);
|
|
3593
3577
|
if (invalidExtractionResultFields.length > 0) {
|
|
3594
|
-
log.warn(
|
|
3595
|
-
|
|
3596
|
-
|
|
3597
|
-
|
|
3598
|
-
resultKeys: typeof result === "object" && result !== null ? Object.keys(result) : []
|
|
3599
|
-
}
|
|
3600
|
-
);
|
|
3578
|
+
log.warn("runExtraction: extraction returned invalid collection fields", {
|
|
3579
|
+
invalidFields: invalidExtractionResultFields,
|
|
3580
|
+
resultKeys: typeof result === "object" && result !== null ? Object.keys(result) : []
|
|
3581
|
+
});
|
|
3601
3582
|
if (options.failOnExtractionFailure) {
|
|
3602
3583
|
throw new Error("extraction failed: invalid_extraction_result");
|
|
3603
3584
|
}
|
|
@@ -3614,9 +3595,7 @@ ${normalized}`).digest("hex");
|
|
|
3614
3595
|
throw new Error(`extraction failed: ${extractionFailure}`);
|
|
3615
3596
|
}
|
|
3616
3597
|
if (result.facts.length === 0 && result.entities.length === 0 && result.questions.length === 0 && result.profileUpdates.length === 0) {
|
|
3617
|
-
log.debug(
|
|
3618
|
-
"runExtraction: extraction produced no durable outputs; skipping persistence"
|
|
3619
|
-
);
|
|
3598
|
+
log.debug("runExtraction: extraction produced no durable outputs; skipping persistence");
|
|
3620
3599
|
if (extractionFailure) {
|
|
3621
3600
|
log.warn(
|
|
3622
3601
|
"runExtraction: extraction reported failure with no durable outputs; not marking fingerprint processed",
|
|
@@ -3625,16 +3604,18 @@ ${normalized}`).digest("hex");
|
|
|
3625
3604
|
}
|
|
3626
3605
|
if (extractionFingerprint && shouldPersistProcessedFingerprint && !extractionFailure) {
|
|
3627
3606
|
meta ??= await storage.loadMeta();
|
|
3628
|
-
await this.deps.recordProcessedExtractionFingerprint(
|
|
3629
|
-
storage,
|
|
3630
|
-
extractionFingerprint,
|
|
3631
|
-
meta
|
|
3632
|
-
);
|
|
3607
|
+
await this.deps.recordProcessedExtractionFingerprint(storage, extractionFingerprint, meta);
|
|
3633
3608
|
meta.extractionCount += 1;
|
|
3634
3609
|
meta.lastExtractionAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
3635
3610
|
await storage.saveMeta(meta);
|
|
3636
3611
|
}
|
|
3637
|
-
await this.deps.maybeCapturePassiveCorrections(normalizedTurns, {
|
|
3612
|
+
await this.deps.maybeCapturePassiveCorrections(normalizedTurns, {
|
|
3613
|
+
sessionKey,
|
|
3614
|
+
principal,
|
|
3615
|
+
namespace: selfNamespace,
|
|
3616
|
+
bufferKey,
|
|
3617
|
+
isLiveSession: clearBufferAfterExtraction
|
|
3618
|
+
});
|
|
3638
3619
|
await clearBuffer();
|
|
3639
3620
|
return { status: "skipped", reason: "empty_extraction_result", persistedCount: 0, durableOutputCount: 0 };
|
|
3640
3621
|
}
|
|
@@ -3644,17 +3625,14 @@ ${normalized}`).digest("hex");
|
|
|
3644
3625
|
try {
|
|
3645
3626
|
threadIdForExtraction = await this.deps.getThreading().processTurn(lastTurn, []);
|
|
3646
3627
|
} catch (err) {
|
|
3647
|
-
log.warn(
|
|
3648
|
-
"[threading] processTurn failed before persistence (non-fatal)",
|
|
3649
|
-
err
|
|
3650
|
-
);
|
|
3628
|
+
log.warn("[threading] processTurn failed before persistence (non-fatal)", err);
|
|
3651
3629
|
}
|
|
3652
3630
|
}
|
|
3653
3631
|
const persistedIds = await this.deps.persistExtraction(
|
|
3654
3632
|
result,
|
|
3655
3633
|
storage,
|
|
3656
3634
|
threadIdForExtraction,
|
|
3657
|
-
{ sessionKey, principal, validAt: sourceValidAt },
|
|
3635
|
+
{ sessionKey, principal, validAt: sourceValidAt, sourceConnector: deriveSourceConnector(targetTurns) },
|
|
3658
3636
|
// Pass the KNOWN base namespace (NHIdx) so the catalog write touch records the
|
|
3659
3637
|
// real namespace rather than a guess decoded from the storage dir.
|
|
3660
3638
|
selfNamespace,
|
|
@@ -3667,11 +3645,7 @@ ${normalized}`).digest("hex");
|
|
|
3667
3645
|
meta ??= await storage.loadMeta();
|
|
3668
3646
|
if (extractionFingerprint && shouldPersistProcessedFingerprint) {
|
|
3669
3647
|
try {
|
|
3670
|
-
await this.deps.recordProcessedExtractionFingerprint(
|
|
3671
|
-
storage,
|
|
3672
|
-
extractionFingerprint,
|
|
3673
|
-
meta
|
|
3674
|
-
);
|
|
3648
|
+
await this.deps.recordProcessedExtractionFingerprint(storage, extractionFingerprint, meta);
|
|
3675
3649
|
} catch (error) {
|
|
3676
3650
|
log.warn(
|
|
3677
3651
|
"runExtraction: failed to persist processed extraction fingerprint; continuing with buffer clear",
|
|
@@ -3698,11 +3672,7 @@ ${normalized}`).digest("hex");
|
|
|
3698
3672
|
if (clearBufferAfterExtraction && !this.config.extractionJudgeShadow) {
|
|
3699
3673
|
const deferredCount = this.deps.getLastPersistExtractionDeferredCount();
|
|
3700
3674
|
if (deferredCount > 0 && normalizedTurns.length > 0) {
|
|
3701
|
-
await this.deps.getBuffer().retainDeferredTurns(
|
|
3702
|
-
bufferKey,
|
|
3703
|
-
normalizedTurns,
|
|
3704
|
-
10
|
|
3705
|
-
);
|
|
3675
|
+
await this.deps.getBuffer().retainDeferredTurns(bufferKey, normalizedTurns, 10);
|
|
3706
3676
|
} else {
|
|
3707
3677
|
await this.deps.getBuffer().retainDeferredTurns(bufferKey, [], 0);
|
|
3708
3678
|
}
|
|
@@ -3729,54 +3699,34 @@ ${normalized}`).digest("hex");
|
|
|
3729
3699
|
memoryIds: persistedIds,
|
|
3730
3700
|
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
3731
3701
|
goal: boxGoal
|
|
3732
|
-
}).catch(
|
|
3733
|
-
(err) => log.warn("[boxes] onExtraction failed (non-fatal)", err)
|
|
3734
|
-
);
|
|
3702
|
+
}).catch((err) => log.warn("[boxes] onExtraction failed (non-fatal)", err));
|
|
3735
3703
|
}
|
|
3736
3704
|
if (resolvePresentationCapabilities(this.config).threading && threadIdForExtraction && persistedIds.length > 0) {
|
|
3737
|
-
await this.deps.appendPersistedThreadEpisodes(
|
|
3738
|
-
threadIdForExtraction,
|
|
3739
|
-
persistedIds
|
|
3740
|
-
);
|
|
3705
|
+
await this.deps.appendPersistedThreadEpisodes(threadIdForExtraction, persistedIds);
|
|
3741
3706
|
}
|
|
3742
3707
|
if (resolvePresentationCapabilities(this.config).threading && threadIdForExtraction) {
|
|
3743
3708
|
const conversationContent = turns.map((t) => t.content).join(" ");
|
|
3744
3709
|
try {
|
|
3745
|
-
await this.deps.getThreading().updateThreadTitle(
|
|
3746
|
-
threadIdForExtraction,
|
|
3747
|
-
conversationContent
|
|
3748
|
-
);
|
|
3710
|
+
await this.deps.getThreading().updateThreadTitle(threadIdForExtraction, conversationContent);
|
|
3749
3711
|
} catch (err) {
|
|
3750
|
-
log.warn(
|
|
3751
|
-
"[threading] updateThreadTitle failed after persistence (non-fatal)",
|
|
3752
|
-
err
|
|
3753
|
-
);
|
|
3712
|
+
log.warn("[threading] updateThreadTitle failed after persistence (non-fatal)", err);
|
|
3754
3713
|
}
|
|
3755
3714
|
}
|
|
3756
3715
|
const nonZeroExtraction = durableOutputCount > 0;
|
|
3757
3716
|
try {
|
|
3758
3717
|
this.deps.maybeScheduleConsolidation(nonZeroExtraction);
|
|
3759
3718
|
} catch (err) {
|
|
3760
|
-
log.warn(
|
|
3761
|
-
"runExtraction: consolidation scheduling failed after persistence (non-fatal)",
|
|
3762
|
-
err
|
|
3763
|
-
);
|
|
3719
|
+
log.warn("runExtraction: consolidation scheduling failed after persistence (non-fatal)", err);
|
|
3764
3720
|
}
|
|
3765
3721
|
try {
|
|
3766
3722
|
this.deps.requestQmdMaintenance();
|
|
3767
3723
|
} catch (err) {
|
|
3768
|
-
log.warn(
|
|
3769
|
-
"runExtraction: QMD maintenance scheduling failed after persistence (non-fatal)",
|
|
3770
|
-
err
|
|
3771
|
-
);
|
|
3724
|
+
log.warn("runExtraction: QMD maintenance scheduling failed after persistence (non-fatal)", err);
|
|
3772
3725
|
}
|
|
3773
3726
|
try {
|
|
3774
3727
|
await this.deps.runTierMigrationCycle(storage, "extraction");
|
|
3775
3728
|
} catch (err) {
|
|
3776
|
-
log.warn(
|
|
3777
|
-
"runExtraction: tier migration failed after persistence (non-fatal)",
|
|
3778
|
-
err
|
|
3779
|
-
);
|
|
3729
|
+
log.warn("runExtraction: tier migration failed after persistence (non-fatal)", err);
|
|
3780
3730
|
}
|
|
3781
3731
|
return {
|
|
3782
3732
|
status: "completed",
|
|
@@ -3786,6 +3736,20 @@ ${normalized}`).digest("hex");
|
|
|
3786
3736
|
};
|
|
3787
3737
|
}
|
|
3788
3738
|
};
|
|
3739
|
+
function deriveSourceConnector(turns) {
|
|
3740
|
+
if (turns.length === 0) return void 0;
|
|
3741
|
+
const connectors = /* @__PURE__ */ new Set();
|
|
3742
|
+
let untaggedCount = 0;
|
|
3743
|
+
for (const turn of turns) {
|
|
3744
|
+
if (typeof turn.sourceConnector === "string" && turn.sourceConnector.length > 0) {
|
|
3745
|
+
connectors.add(turn.sourceConnector);
|
|
3746
|
+
} else {
|
|
3747
|
+
untaggedCount += 1;
|
|
3748
|
+
}
|
|
3749
|
+
}
|
|
3750
|
+
if (untaggedCount > 0) return void 0;
|
|
3751
|
+
return connectors.size === 1 ? [...connectors][0] : void 0;
|
|
3752
|
+
}
|
|
3789
3753
|
|
|
3790
3754
|
// src/orchestration/consolidation-run.ts
|
|
3791
3755
|
import path5 from "path";
|
|
@@ -4228,7 +4192,9 @@ async function decideSemanticDedup(content, lookup, options) {
|
|
|
4228
4192
|
if (!Array.isArray(hits) || hits.length === 0) {
|
|
4229
4193
|
return { action: "keep", reason: "no_candidates" };
|
|
4230
4194
|
}
|
|
4195
|
+
const candidateConnector = typeof options.sourceConnector === "string" && options.sourceConnector.trim().length > 0 ? options.sourceConnector.trim() : void 0;
|
|
4231
4196
|
let top;
|
|
4197
|
+
let sameConnectorTop;
|
|
4232
4198
|
for (const hit of hits) {
|
|
4233
4199
|
if (!hit || typeof hit.id !== "string" || hit.id.trim().length === 0 || typeof hit.score !== "number" || !Number.isFinite(hit.score)) {
|
|
4234
4200
|
continue;
|
|
@@ -4236,11 +4202,32 @@ async function decideSemanticDedup(content, lookup, options) {
|
|
|
4236
4202
|
if (!top || hit.score > top.score) {
|
|
4237
4203
|
top = hit;
|
|
4238
4204
|
}
|
|
4205
|
+
if (candidateConnector !== void 0 && typeof hit.sourceConnector === "string" && hit.sourceConnector.trim() === candidateConnector && (!sameConnectorTop || hit.score > sameConnectorTop.score)) {
|
|
4206
|
+
sameConnectorTop = hit;
|
|
4207
|
+
}
|
|
4239
4208
|
}
|
|
4240
4209
|
if (!top) {
|
|
4241
4210
|
return { action: "keep", reason: "no_near_duplicate" };
|
|
4242
4211
|
}
|
|
4243
4212
|
if (top.score >= threshold) {
|
|
4213
|
+
if (candidateConnector !== void 0) {
|
|
4214
|
+
const match = sameConnectorTop !== void 0 && sameConnectorTop.score >= threshold ? sameConnectorTop : void 0;
|
|
4215
|
+
if (match) {
|
|
4216
|
+
return {
|
|
4217
|
+
action: "skip",
|
|
4218
|
+
reason: "near_duplicate",
|
|
4219
|
+
topScore: match.score,
|
|
4220
|
+
topId: match.id,
|
|
4221
|
+
topPath: match.path
|
|
4222
|
+
};
|
|
4223
|
+
}
|
|
4224
|
+
return {
|
|
4225
|
+
action: "keep",
|
|
4226
|
+
reason: "connector_mismatch",
|
|
4227
|
+
topScore: top.score,
|
|
4228
|
+
topId: top.id
|
|
4229
|
+
};
|
|
4230
|
+
}
|
|
4244
4231
|
return {
|
|
4245
4232
|
action: "skip",
|
|
4246
4233
|
reason: "near_duplicate",
|
|
@@ -4269,6 +4256,11 @@ var ExtractionPersistCoordinator = class {
|
|
|
4269
4256
|
async persistExtraction(result, storage, threadIdForExtraction, sourceContext, baseNamespace, scopeProfileWritePlan, sourceText, graphCaps = resolveGraphConstructionCapabilities(this.deps.config), lifecycleCaps = resolveMemoryLifecycleCapabilities(this.deps.config)) {
|
|
4270
4257
|
const citationEnabled = resolvePipelineProcessingCapabilities(this.deps.config).inlineSourceAttribution === true;
|
|
4271
4258
|
const citationTemplate = this.deps.config.inlineSourceAttributionFormat;
|
|
4259
|
+
const normalizeStoredHashSource = (raw) => ContentHashIndex.normalizeContent(
|
|
4260
|
+
sanitizeMemoryContent(
|
|
4261
|
+
citationEnabled && hasCitationForTemplate(raw, citationTemplate) ? stripCitationForTemplate(raw, citationTemplate) : raw
|
|
4262
|
+
).text
|
|
4263
|
+
);
|
|
4272
4264
|
const citationContextBase = citationEnabled ? {
|
|
4273
4265
|
agent: sourceContext?.principal,
|
|
4274
4266
|
session: sourceContext?.sessionKey
|
|
@@ -4400,21 +4392,40 @@ var ExtractionPersistCoordinator = class {
|
|
|
4400
4392
|
const targetStorage = await this.deps.getStorageRouter().storageFor(target.namespace);
|
|
4401
4393
|
if (targetStorage.dir === options.sourceStorage.dir) continue;
|
|
4402
4394
|
if (options.category === "fact" && await targetStorage.hasFactContentHash(dedupContent)) {
|
|
4403
|
-
|
|
4404
|
-
|
|
4405
|
-
|
|
4406
|
-
|
|
4407
|
-
|
|
4408
|
-
|
|
4409
|
-
|
|
4410
|
-
|
|
4411
|
-
|
|
4412
|
-
|
|
4413
|
-
|
|
4414
|
-
|
|
4395
|
+
let skipPromotion = true;
|
|
4396
|
+
try {
|
|
4397
|
+
const allMems = await targetStorage.readAllMemories();
|
|
4398
|
+
const nc = sourceContext?.sourceConnector?.trim() || void 0;
|
|
4399
|
+
skipPromotion = allMems.some((m) => {
|
|
4400
|
+
if (m.frontmatter.category !== options.category) return false;
|
|
4401
|
+
if ((m.frontmatter.status ?? "active") !== "active") return false;
|
|
4402
|
+
if (normalizeStoredHashSource(m.content ?? "") !== ContentHashIndex.normalizeContent(dedupContent)) return false;
|
|
4403
|
+
return (m.frontmatter.sourceConnector?.trim() || void 0) === nc;
|
|
4404
|
+
});
|
|
4405
|
+
} catch (err) {
|
|
4406
|
+
log.warn(
|
|
4407
|
+
`connector-aware promotion dedup scan failed; writing fail-open: ${err instanceof Error ? err.message : String(err)}`
|
|
4415
4408
|
);
|
|
4409
|
+
skipPromotion = false;
|
|
4410
|
+
}
|
|
4411
|
+
if (skipPromotion) {
|
|
4412
|
+
if (options.invalidAt || options.validAt) {
|
|
4413
|
+
await this.deps.backfillTemporalBoundsOnDedupHit(
|
|
4414
|
+
targetStorage,
|
|
4415
|
+
dedupContent,
|
|
4416
|
+
{
|
|
4417
|
+
invalidAt: options.invalidAt,
|
|
4418
|
+
// #1707 thread 2 — carry the corrected start bound.
|
|
4419
|
+
validFrom: options.validAt,
|
|
4420
|
+
...options.observedAt ? { observedAt: options.observedAt } : {},
|
|
4421
|
+
...options.eventTimeSource ? { eventTimeSource: options.eventTimeSource } : {}
|
|
4422
|
+
},
|
|
4423
|
+
options.entityRef,
|
|
4424
|
+
sourceContext?.sourceConnector
|
|
4425
|
+
);
|
|
4426
|
+
}
|
|
4427
|
+
continue;
|
|
4416
4428
|
}
|
|
4417
|
-
continue;
|
|
4418
4429
|
}
|
|
4419
4430
|
const targetPromotion = await targetStorage.writeMemory(
|
|
4420
4431
|
options.category,
|
|
@@ -4439,7 +4450,8 @@ var ExtractionPersistCoordinator = class {
|
|
|
4439
4450
|
...options.eventTimeSource ? { eventTimeSource: options.eventTimeSource } : {},
|
|
4440
4451
|
contentHashSource: options.category === "fact" ? dedupContent : rawContent,
|
|
4441
4452
|
...options.sources && options.sources.length > 0 ? { sources: options.sources } : {},
|
|
4442
|
-
...options.provenance ? { provenance: options.provenance } : {}
|
|
4453
|
+
...options.provenance ? { provenance: options.provenance } : {},
|
|
4454
|
+
...sourceContext?.sourceConnector ? { sourceConnector: sourceContext.sourceConnector } : {}
|
|
4443
4455
|
}
|
|
4444
4456
|
);
|
|
4445
4457
|
const promotedId = targetPromotion.id;
|
|
@@ -4499,7 +4511,25 @@ var ExtractionPersistCoordinator = class {
|
|
|
4499
4511
|
const dedupContent = options.category === "fact" && options.structuredAttributes && Object.keys(options.structuredAttributes).length > 0 ? `${sanitizedBase.text}
|
|
4500
4512
|
[Attributes: ${normalizeAttributePairs(options.structuredAttributes)}]` : sanitizedBase.text;
|
|
4501
4513
|
if (options.category === "fact" && await sharedStorage.hasFactContentHash(dedupContent)) {
|
|
4514
|
+
let sharedSameConnector = true;
|
|
4502
4515
|
if (options.invalidAt || options.validAt) {
|
|
4516
|
+
try {
|
|
4517
|
+
const sharedMems = await sharedStorage.readAllMemories();
|
|
4518
|
+
const snc = sourceContext?.sourceConnector?.trim() || void 0;
|
|
4519
|
+
sharedSameConnector = sharedMems.some((m) => {
|
|
4520
|
+
if (m.frontmatter.category !== "fact") return false;
|
|
4521
|
+
if ((m.frontmatter.status ?? "active") !== "active") return false;
|
|
4522
|
+
if (normalizeStoredHashSource(m.content ?? "") !== ContentHashIndex.normalizeContent(dedupContent)) return false;
|
|
4523
|
+
return (m.frontmatter.sourceConnector?.trim() || void 0) === snc;
|
|
4524
|
+
});
|
|
4525
|
+
} catch (scanErr) {
|
|
4526
|
+
sharedSameConnector = false;
|
|
4527
|
+
log.warn(
|
|
4528
|
+
`connector-aware shared backfill scan failed; skipping backfill to avoid cross-connector mutation: ${scanErr instanceof Error ? scanErr.message : String(scanErr)}`
|
|
4529
|
+
);
|
|
4530
|
+
}
|
|
4531
|
+
}
|
|
4532
|
+
if (sharedSameConnector && (options.invalidAt || options.validAt)) {
|
|
4503
4533
|
await this.deps.backfillTemporalBoundsOnDedupHit(
|
|
4504
4534
|
sharedStorage,
|
|
4505
4535
|
dedupContent,
|
|
@@ -4510,7 +4540,8 @@ var ExtractionPersistCoordinator = class {
|
|
|
4510
4540
|
...options.observedAt ? { observedAt: options.observedAt } : {},
|
|
4511
4541
|
...options.eventTimeSource ? { eventTimeSource: options.eventTimeSource } : {}
|
|
4512
4542
|
},
|
|
4513
|
-
options.entityRef
|
|
4543
|
+
options.entityRef,
|
|
4544
|
+
sourceContext?.sourceConnector
|
|
4514
4545
|
);
|
|
4515
4546
|
}
|
|
4516
4547
|
if (lifecycleCaps.temporalSupersession && options.entityRef && options.structuredAttributes && Object.keys(options.structuredAttributes).length > 0) {
|
|
@@ -4530,7 +4561,11 @@ var ExtractionPersistCoordinator = class {
|
|
|
4530
4561
|
);
|
|
4531
4562
|
return false;
|
|
4532
4563
|
}
|
|
4533
|
-
|
|
4564
|
+
if (normalizeStoredHashSource(m.content ?? "") !== normalizedIncoming) return false;
|
|
4565
|
+
const existingConnector = m.frontmatter.sourceConnector?.trim() || void 0;
|
|
4566
|
+
const newConnector = sourceContext?.sourceConnector?.trim() || void 0;
|
|
4567
|
+
if (existingConnector !== newConnector) return false;
|
|
4568
|
+
return true;
|
|
4534
4569
|
});
|
|
4535
4570
|
hashDedupLookupComplete = true;
|
|
4536
4571
|
if (hashDedupMatchingFact) {
|
|
@@ -4562,7 +4597,26 @@ var ExtractionPersistCoordinator = class {
|
|
|
4562
4597
|
);
|
|
4563
4598
|
}
|
|
4564
4599
|
} else {
|
|
4565
|
-
|
|
4600
|
+
let skipSharedPromotion = true;
|
|
4601
|
+
try {
|
|
4602
|
+
const allSharedMems = await sharedStorage.readAllMemories();
|
|
4603
|
+
const snc = sourceContext?.sourceConnector?.trim() || void 0;
|
|
4604
|
+
const sharedNormalized = ContentHashIndex.normalizeContent(dedupContent);
|
|
4605
|
+
skipSharedPromotion = allSharedMems.some((m) => {
|
|
4606
|
+
if (m.frontmatter.category !== "fact") return false;
|
|
4607
|
+
if ((m.frontmatter.status ?? "active") !== "active") return false;
|
|
4608
|
+
if (normalizeStoredHashSource(m.content ?? "") !== sharedNormalized) return false;
|
|
4609
|
+
return (m.frontmatter.sourceConnector?.trim() || void 0) === snc;
|
|
4610
|
+
});
|
|
4611
|
+
} catch (err) {
|
|
4612
|
+
log.warn(
|
|
4613
|
+
`connector-aware shared promotion dedup scan failed; writing fail-open: ${err instanceof Error ? err.message : String(err)}`
|
|
4614
|
+
);
|
|
4615
|
+
skipSharedPromotion = false;
|
|
4616
|
+
}
|
|
4617
|
+
if (skipSharedPromotion) {
|
|
4618
|
+
return;
|
|
4619
|
+
}
|
|
4566
4620
|
}
|
|
4567
4621
|
}
|
|
4568
4622
|
const sharedPromotion = await sharedStorage.writeMemory(
|
|
@@ -4589,7 +4643,8 @@ var ExtractionPersistCoordinator = class {
|
|
|
4589
4643
|
contentHashSource: options.category === "fact" ? dedupContent : rawContent,
|
|
4590
4644
|
// Claim-level provenance spans (issue #1575 PR 2).
|
|
4591
4645
|
...options.sources && options.sources.length > 0 ? { sources: options.sources } : {},
|
|
4592
|
-
...options.provenance ? { provenance: options.provenance } : {}
|
|
4646
|
+
...options.provenance ? { provenance: options.provenance } : {},
|
|
4647
|
+
...sourceContext?.sourceConnector ? { sourceConnector: sourceContext.sourceConnector } : {}
|
|
4593
4648
|
}
|
|
4594
4649
|
);
|
|
4595
4650
|
const promotedId = sharedPromotion.id;
|
|
@@ -4657,7 +4712,8 @@ var ExtractionPersistCoordinator = class {
|
|
|
4657
4712
|
targetStorage,
|
|
4658
4713
|
dedupContent,
|
|
4659
4714
|
args.bounds,
|
|
4660
|
-
args.entityRef
|
|
4715
|
+
args.entityRef,
|
|
4716
|
+
args.sourceConnector
|
|
4661
4717
|
);
|
|
4662
4718
|
} catch (err) {
|
|
4663
4719
|
log.warn(
|
|
@@ -4676,7 +4732,8 @@ var ExtractionPersistCoordinator = class {
|
|
|
4676
4732
|
sharedStorage,
|
|
4677
4733
|
dedupContent,
|
|
4678
4734
|
args.bounds,
|
|
4679
|
-
args.entityRef
|
|
4735
|
+
args.entityRef,
|
|
4736
|
+
args.sourceConnector
|
|
4680
4737
|
);
|
|
4681
4738
|
}
|
|
4682
4739
|
} catch (err) {
|
|
@@ -5012,6 +5069,23 @@ var ExtractionPersistCoordinator = class {
|
|
|
5012
5069
|
`content-hash dedup lookup failed for storage ${targetStorage.dir}; writing fact fail-open: ${err}`
|
|
5013
5070
|
);
|
|
5014
5071
|
}
|
|
5072
|
+
if (exactDuplicate) {
|
|
5073
|
+
try {
|
|
5074
|
+
const allMems = await targetStorage.readAllMemories();
|
|
5075
|
+
const nc = sourceContext?.sourceConnector?.trim() || void 0;
|
|
5076
|
+
exactDuplicate = allMems.some((m) => {
|
|
5077
|
+
if (m.frontmatter.category !== writeCategory) return false;
|
|
5078
|
+
if ((m.frontmatter.status ?? "active") !== "active") return false;
|
|
5079
|
+
if (normalizeStoredHashSource(stripAttributesSuffix(m.content ?? "")) !== ContentHashIndex.normalizeContent(contentHashDedupKey)) return false;
|
|
5080
|
+
return (m.frontmatter.sourceConnector?.trim() || void 0) === nc;
|
|
5081
|
+
});
|
|
5082
|
+
} catch (err) {
|
|
5083
|
+
log.warn(
|
|
5084
|
+
`connector-aware dedup scan failed for storage ${targetStorage.dir}; writing fail-open: ${err instanceof Error ? err.message : String(err)}`
|
|
5085
|
+
);
|
|
5086
|
+
exactDuplicate = false;
|
|
5087
|
+
}
|
|
5088
|
+
}
|
|
5015
5089
|
if (exactDuplicate) {
|
|
5016
5090
|
if (biTemporal && writeCategory === "fact" && (biTemporal.validUntil || biTemporal.validFrom)) {
|
|
5017
5091
|
const fr = faithfulnessResultsByFactIndex?.get(factLoopIndex);
|
|
@@ -5030,7 +5104,8 @@ var ExtractionPersistCoordinator = class {
|
|
|
5030
5104
|
observedAt: biTemporal.observedAt,
|
|
5031
5105
|
eventTimeSource: biTemporal.eventTimeSource
|
|
5032
5106
|
},
|
|
5033
|
-
fact.entityRef
|
|
5107
|
+
fact.entityRef,
|
|
5108
|
+
sourceContext?.sourceConnector
|
|
5034
5109
|
);
|
|
5035
5110
|
await backfillTemporalBoundsOnPromotionCopies({
|
|
5036
5111
|
sourceStorage: targetStorage,
|
|
@@ -5039,6 +5114,7 @@ var ExtractionPersistCoordinator = class {
|
|
|
5039
5114
|
confidence: fact.confidence,
|
|
5040
5115
|
entityRef: fact.entityRef,
|
|
5041
5116
|
structuredAttributes: fact.structuredAttributes,
|
|
5117
|
+
sourceConnector: sourceContext?.sourceConnector,
|
|
5042
5118
|
bounds: {
|
|
5043
5119
|
invalidAt: biTemporal.validUntil,
|
|
5044
5120
|
validFrom: biTemporal.validFrom,
|
|
@@ -5128,7 +5204,8 @@ var ExtractionPersistCoordinator = class {
|
|
|
5128
5204
|
{
|
|
5129
5205
|
enabled: true,
|
|
5130
5206
|
threshold: this.deps.config.semanticDedupThreshold,
|
|
5131
|
-
candidates: this.deps.config.semanticDedupCandidates
|
|
5207
|
+
candidates: this.deps.config.semanticDedupCandidates,
|
|
5208
|
+
sourceConnector: sourceContext?.sourceConnector
|
|
5132
5209
|
}
|
|
5133
5210
|
);
|
|
5134
5211
|
} catch (err) {
|
|
@@ -5152,6 +5229,7 @@ var ExtractionPersistCoordinator = class {
|
|
|
5152
5229
|
`${writeCategory} ${fact.tags.join(" ")} ${fact.content}`
|
|
5153
5230
|
) : null;
|
|
5154
5231
|
const extractionWriteSource = fact.source === "proactive" ? "extraction-proactive" : "extraction";
|
|
5232
|
+
const extractionSourceConnector = sourceContext?.sourceConnector;
|
|
5155
5233
|
let supersedes;
|
|
5156
5234
|
let links = [];
|
|
5157
5235
|
let contradictionDetected = false;
|
|
@@ -5221,6 +5299,7 @@ var ExtractionPersistCoordinator = class {
|
|
|
5221
5299
|
tags: [...fact.tags, "chunked"],
|
|
5222
5300
|
entityRef: fact.entityRef,
|
|
5223
5301
|
source: extractionWriteSource,
|
|
5302
|
+
...extractionSourceConnector ? { sourceConnector: extractionSourceConnector } : {},
|
|
5224
5303
|
importance,
|
|
5225
5304
|
supersedes,
|
|
5226
5305
|
links: links.length > 0 ? links : void 0,
|
|
@@ -5294,7 +5373,8 @@ var ExtractionPersistCoordinator = class {
|
|
|
5294
5373
|
// independently (memory_get/x-ray on a chunk ID) preserves
|
|
5295
5374
|
// the verified span (chatgpt-codex-connector thread Ocvmo).
|
|
5296
5375
|
...fact.sources && fact.sources.length > 0 ? { sources: fact.sources } : {},
|
|
5297
|
-
...fact.provenance ? { provenance: fact.provenance } : {}
|
|
5376
|
+
...fact.provenance ? { provenance: fact.provenance } : {},
|
|
5377
|
+
...extractionSourceConnector ? { sourceConnector: extractionSourceConnector } : {}
|
|
5298
5378
|
}
|
|
5299
5379
|
);
|
|
5300
5380
|
}
|
|
@@ -5356,6 +5436,7 @@ var ExtractionPersistCoordinator = class {
|
|
|
5356
5436
|
...biTemporal.validUntil ? { invalidAt: biTemporal.validUntil } : {}
|
|
5357
5437
|
} : {},
|
|
5358
5438
|
source: extractionWriteSource,
|
|
5439
|
+
...extractionSourceConnector ? { sourceConnector: extractionSourceConnector } : {},
|
|
5359
5440
|
...fact.sources && fact.sources.length > 0 ? { sources: fact.sources } : {},
|
|
5360
5441
|
...fact.provenance ? { provenance: fact.provenance } : {}
|
|
5361
5442
|
});
|
|
@@ -5384,7 +5465,8 @@ var ExtractionPersistCoordinator = class {
|
|
|
5384
5465
|
sourceMemoryId: parentId,
|
|
5385
5466
|
intentGoal: inferredIntent?.goal,
|
|
5386
5467
|
intentActionType: inferredIntent?.actionType,
|
|
5387
|
-
intentEntityTypes: inferredIntent?.entityTypes
|
|
5468
|
+
intentEntityTypes: inferredIntent?.entityTypes,
|
|
5469
|
+
...extractionSourceConnector ? { sourceConnector: extractionSourceConnector } : {}
|
|
5388
5470
|
});
|
|
5389
5471
|
}
|
|
5390
5472
|
if (graphCaps.multiGraphMemory && !postWriteGuard2) {
|
|
@@ -5461,6 +5543,7 @@ var ExtractionPersistCoordinator = class {
|
|
|
5461
5543
|
tags: fact.tags,
|
|
5462
5544
|
entityRef: typeof fact.entityRef === "string" ? fact.entityRef : void 0,
|
|
5463
5545
|
source: extractionWriteSource,
|
|
5546
|
+
...extractionSourceConnector ? { sourceConnector: extractionSourceConnector } : {},
|
|
5464
5547
|
importance,
|
|
5465
5548
|
supersedes,
|
|
5466
5549
|
links: links.length > 0 ? links : void 0,
|
|
@@ -5553,6 +5636,7 @@ var ExtractionPersistCoordinator = class {
|
|
|
5553
5636
|
...biTemporal.validUntil ? { invalidAt: biTemporal.validUntil } : {}
|
|
5554
5637
|
} : {},
|
|
5555
5638
|
source: extractionWriteSource,
|
|
5639
|
+
...extractionSourceConnector ? { sourceConnector: extractionSourceConnector } : {},
|
|
5556
5640
|
...fact.sources && fact.sources.length > 0 ? { sources: fact.sources } : {},
|
|
5557
5641
|
...fact.provenance ? { provenance: fact.provenance } : {}
|
|
5558
5642
|
});
|
|
@@ -5600,7 +5684,8 @@ var ExtractionPersistCoordinator = class {
|
|
|
5600
5684
|
sourceMemoryId: memoryId,
|
|
5601
5685
|
intentGoal: inferredIntent?.goal,
|
|
5602
5686
|
intentActionType: inferredIntent?.actionType,
|
|
5603
|
-
intentEntityTypes: inferredIntent?.entityTypes
|
|
5687
|
+
intentEntityTypes: inferredIntent?.entityTypes,
|
|
5688
|
+
...extractionSourceConnector ? { sourceConnector: extractionSourceConnector } : {}
|
|
5604
5689
|
});
|
|
5605
5690
|
}
|
|
5606
5691
|
try {
|
|
@@ -11371,7 +11456,7 @@ var TurnIngestionCoordinator = class {
|
|
|
11371
11456
|
logicalSessionKey: options.logicalSessionKey ?? bufferKey,
|
|
11372
11457
|
providerThreadId: options.providerThreadId ?? null,
|
|
11373
11458
|
turnFingerprint: options.turnFingerprint,
|
|
11374
|
-
|
|
11459
|
+
...options.sourceConnector ? { sourceConnector: options.sourceConnector } : {}
|
|
11375
11460
|
};
|
|
11376
11461
|
const outcome = typeof this.deps.buffer.addTurnWithOutcome === "function" ? await this.deps.buffer.addTurnWithOutcome(bufferKey, turn) : { decision: await this.deps.buffer.addTurn(bufferKey, turn) };
|
|
11377
11462
|
if (outcome.decision === "keep_buffering") return;
|
|
@@ -11405,7 +11490,8 @@ var TurnIngestionCoordinator = class {
|
|
|
11405
11490
|
sessionKey: key,
|
|
11406
11491
|
parts: turn.parts,
|
|
11407
11492
|
rawContent: turn.rawContent,
|
|
11408
|
-
sourceFormat: turn.sourceFormat
|
|
11493
|
+
sourceFormat: turn.sourceFormat,
|
|
11494
|
+
sourceConnector: turn.sourceConnector
|
|
11409
11495
|
});
|
|
11410
11496
|
bySession.set(key, list);
|
|
11411
11497
|
}
|
|
@@ -11545,7 +11631,8 @@ var TurnIngestionCoordinator = class {
|
|
|
11545
11631
|
sourceFormat: turn.sourceFormat,
|
|
11546
11632
|
importProvenance: turn.importProvenance,
|
|
11547
11633
|
turnFingerprint: turn.turnFingerprint,
|
|
11548
|
-
persistProcessedFingerprint: turn.persistProcessedFingerprint === true
|
|
11634
|
+
persistProcessedFingerprint: turn.persistProcessedFingerprint === true,
|
|
11635
|
+
...turn.sourceConnector ? { sourceConnector: turn.sourceConnector } : {}
|
|
11549
11636
|
});
|
|
11550
11637
|
}
|
|
11551
11638
|
if (sessionTurns.length === 0) {
|
|
@@ -13045,7 +13132,7 @@ var PersistenceIndexCoordinator = class {
|
|
|
13045
13132
|
* Only patches fields the existing copy LACKS — never overwrites a bound the
|
|
13046
13133
|
* copy already carries.
|
|
13047
13134
|
*/
|
|
13048
|
-
async backfillTemporalBoundsOnDedupHit(targetStorage, dedupContent, bounds, entityRef) {
|
|
13135
|
+
async backfillTemporalBoundsOnDedupHit(targetStorage, dedupContent, bounds, entityRef, sourceConnector) {
|
|
13049
13136
|
const hasExtractedStart = bounds.validFrom !== void 0 && bounds.eventTimeSource === "extracted";
|
|
13050
13137
|
if (!bounds.invalidAt && !hasExtractedStart) return;
|
|
13051
13138
|
try {
|
|
@@ -13059,6 +13146,11 @@ var PersistenceIndexCoordinator = class {
|
|
|
13059
13146
|
if (incomingEntityNorm && m.frontmatter.entityRef && normalizeSupersessionKey(m.frontmatter.entityRef) !== incomingEntityNorm) {
|
|
13060
13147
|
return false;
|
|
13061
13148
|
}
|
|
13149
|
+
const incomingConnector = sourceConnector?.trim() || void 0;
|
|
13150
|
+
const candidateConnector = m.frontmatter.sourceConnector?.trim() || void 0;
|
|
13151
|
+
if (incomingConnector !== candidateConnector) {
|
|
13152
|
+
return false;
|
|
13153
|
+
}
|
|
13062
13154
|
if (m.frontmatter.contentHash) {
|
|
13063
13155
|
return m.frontmatter.contentHash === incomingHash;
|
|
13064
13156
|
}
|
|
@@ -13251,11 +13343,24 @@ var PersistenceIndexCoordinator = class {
|
|
|
13251
13343
|
const scope = this.deps.semanticDedupScopeFor(targetStorage);
|
|
13252
13344
|
const hits = await this.deps.embeddingFallback.search(content, limit, { ...scope, throwOnTimeout: true });
|
|
13253
13345
|
if (!Array.isArray(hits) || hits.length === 0) return [];
|
|
13254
|
-
|
|
13255
|
-
|
|
13256
|
-
|
|
13257
|
-
|
|
13258
|
-
|
|
13346
|
+
const enriched = await Promise.all(
|
|
13347
|
+
hits.map(async (hit) => {
|
|
13348
|
+
let sourceConnector;
|
|
13349
|
+
try {
|
|
13350
|
+
const memory = await targetStorage.getMemoryById(hit.id);
|
|
13351
|
+
sourceConnector = typeof memory?.frontmatter.sourceConnector === "string" ? memory.frontmatter.sourceConnector.trim() || void 0 : void 0;
|
|
13352
|
+
} catch {
|
|
13353
|
+
sourceConnector = void 0;
|
|
13354
|
+
}
|
|
13355
|
+
return {
|
|
13356
|
+
id: hit.id,
|
|
13357
|
+
score: hit.score,
|
|
13358
|
+
path: hit.path,
|
|
13359
|
+
...sourceConnector !== void 0 ? { sourceConnector } : {}
|
|
13360
|
+
};
|
|
13361
|
+
})
|
|
13362
|
+
);
|
|
13363
|
+
return enriched;
|
|
13259
13364
|
}
|
|
13260
13365
|
};
|
|
13261
13366
|
|
|
@@ -15605,7 +15710,7 @@ var Orchestrator = class {
|
|
|
15605
15710
|
},
|
|
15606
15711
|
addContentHashDedup: (targetStorage, content) => this.addContentHashDedup(targetStorage, content),
|
|
15607
15712
|
hasContentHashDedup: (targetStorage, content) => this.hasContentHashDedup(targetStorage, content),
|
|
15608
|
-
backfillTemporalBoundsOnDedupHit: (targetStorage, dedupContent, bounds, entityRef) => this.backfillTemporalBoundsOnDedupHit(targetStorage, dedupContent, bounds, entityRef),
|
|
15713
|
+
backfillTemporalBoundsOnDedupHit: (targetStorage, dedupContent, bounds, entityRef, sourceConnector) => this.backfillTemporalBoundsOnDedupHit(targetStorage, dedupContent, bounds, entityRef, sourceConnector),
|
|
15609
15714
|
saveContentHashIndexes: () => this.saveContentHashIndexes(),
|
|
15610
15715
|
artifactTypeForCategory: (category) => this.artifactTypeForCategory(category),
|
|
15611
15716
|
loadRoutingRules: () => this.loadRoutingRules(),
|
|
@@ -15970,12 +16075,13 @@ var Orchestrator = class {
|
|
|
15970
16075
|
context
|
|
15971
16076
|
);
|
|
15972
16077
|
}
|
|
15973
|
-
async backfillTemporalBoundsOnDedupHit(targetStorage, dedupContent, bounds, entityRef) {
|
|
16078
|
+
async backfillTemporalBoundsOnDedupHit(targetStorage, dedupContent, bounds, entityRef, sourceConnector) {
|
|
15974
16079
|
return this.persistenceIndexCoordinator.backfillTemporalBoundsOnDedupHit(
|
|
15975
16080
|
targetStorage,
|
|
15976
16081
|
dedupContent,
|
|
15977
16082
|
bounds,
|
|
15978
|
-
entityRef
|
|
16083
|
+
entityRef,
|
|
16084
|
+
sourceConnector
|
|
15979
16085
|
);
|
|
15980
16086
|
}
|
|
15981
16087
|
async saveContentHashIndexes() {
|
|
@@ -22868,4 +22974,4 @@ export {
|
|
|
22868
22974
|
blendGraphExpandedRecallScore,
|
|
22869
22975
|
Orchestrator
|
|
22870
22976
|
};
|
|
22871
|
-
//# sourceMappingURL=chunk-
|
|
22977
|
+
//# sourceMappingURL=chunk-4WRKKRTD.js.map
|