@remnic/core 9.18.0 → 9.20.0
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 +8 -8
- package/dist/access-admin-ops-surface.js +8 -8
- package/dist/access-boundary.d.ts +8 -8
- package/dist/access-boundary.js +8 -8
- package/dist/access-cli.js +32 -32
- package/dist/access-http.d.ts +8 -8
- package/dist/access-http.js +12 -12
- package/dist/access-identity-continuity-surface.d.ts +6 -6
- package/dist/access-identity-continuity-surface.js +8 -8
- package/dist/access-lcm-surface.d.ts +8 -8
- package/dist/access-lcm-surface.js +8 -8
- package/dist/access-mcp.d.ts +8 -8
- package/dist/access-mcp.js +11 -11
- package/dist/access-memory-search-fanout.d.ts +2 -2
- package/dist/{access-namespace-preflight-IbQ0O8Kf.d.ts → access-namespace-preflight-tmwQgCT6.d.ts} +1 -1
- package/dist/access-namespace-preflight.d.ts +3 -3
- package/dist/access-namespace-preflight.js +8 -8
- package/dist/access-observe-write-surface.d.ts +8 -8
- package/dist/access-observe-write-surface.js +8 -8
- package/dist/access-operations-batch.js +9 -9
- package/dist/access-operations.d.ts +8 -8
- package/dist/access-operations.js +10 -10
- package/dist/access-recall-concurrency.d.ts +8 -8
- package/dist/access-recall-concurrency.js +8 -8
- package/dist/access-recall-response.d.ts +8 -8
- package/dist/access-recall-response.js +8 -8
- package/dist/access-recall-surface.d.ts +8 -8
- package/dist/access-recall-surface.js +8 -8
- package/dist/{access-service-BqjsJRn_.d.ts → access-service-BqUii7LY.d.ts} +6 -6
- package/dist/access-service.d.ts +8 -8
- package/dist/access-service.js +8 -8
- package/dist/access-surface-catalog.d.ts +8 -8
- package/dist/action-confidence.d.ts +1 -1
- package/dist/active-memory-bridge.d.ts +1 -1
- package/dist/active-recall.d.ts +1 -1
- package/dist/active-recall.js +1 -1
- package/dist/{auto-sync-IH3G25MT.js → auto-sync-UPTUVE4X.js} +3 -3
- package/dist/behavior-learner.d.ts +1 -1
- package/dist/behavior-signals.d.ts +1 -1
- package/dist/bootstrap.d.ts +6 -6
- package/dist/briefing.d.ts +2 -2
- package/dist/briefing.js +4 -4
- package/dist/buffer-surprise-report.d.ts +1 -1
- package/dist/buffer.d.ts +2 -2
- package/dist/bulk-import/index.d.ts +3 -3
- package/dist/calibration.d.ts +1 -1
- package/dist/capabilities.d.ts +1 -1
- package/dist/{catalog-D_ToaAZM.d.ts → catalog-iWvWz61I.d.ts} +1 -1
- package/dist/causal-behavior.d.ts +1 -1
- package/dist/causal-consolidation.d.ts +1 -1
- package/dist/causal-consolidation.js +5 -5
- package/dist/causal-trajectory-graph.d.ts +1 -1
- package/dist/{chunk-52H7OB7Y.js → chunk-275ENJDK.js} +2 -2
- package/dist/{chunk-OR3OQHHS.js → chunk-3ZUY2VQF.js} +2 -2
- package/dist/{chunk-NEFMSUC2.js → chunk-4F6AANKS.js} +3 -3
- package/dist/{chunk-NGO4QKMY.js → chunk-4PYLBXX6.js} +2 -2
- package/dist/{chunk-UQXIW7OZ.js → chunk-53WDAG7X.js} +2 -2
- package/dist/{chunk-CNNQVI2A.js → chunk-5IXPWEQB.js} +5 -5
- package/dist/{chunk-XGYCI23S.js → chunk-5JQLAQUZ.js} +2 -2
- package/dist/{chunk-ALPBE5EC.js → chunk-62QM5MKY.js} +7 -7
- package/dist/{chunk-KPEIWAZY.js → chunk-6NZ7U4R4.js} +1 -1
- package/dist/chunk-6NZ7U4R4.js.map +1 -0
- package/dist/{chunk-ZHWEUG7Y.js → chunk-7M6APKJL.js} +333 -8
- package/dist/chunk-7M6APKJL.js.map +1 -0
- package/dist/{chunk-AKWX5E6R.js → chunk-AT3TDN6O.js} +1017 -296
- package/dist/chunk-AT3TDN6O.js.map +1 -0
- package/dist/{chunk-LU22QKFA.js → chunk-B7C3TF5H.js} +2 -2
- package/dist/{chunk-JHIEQCMG.js → chunk-EILX7SQR.js} +3 -3
- package/dist/{chunk-WIP3MQZY.js → chunk-EXU5IQ3S.js} +2 -2
- package/dist/{chunk-UL6WTQN4.js → chunk-EZKKHVFY.js} +2 -2
- package/dist/{chunk-LTGSOACX.js → chunk-GEUDRENF.js} +2 -2
- package/dist/{chunk-B3R5CC35.js → chunk-HJEEAO4O.js} +2 -2
- package/dist/{chunk-7NHIHUBW.js → chunk-HPOY2PHQ.js} +3 -3
- package/dist/{chunk-VMALXCR5.js → chunk-JFDEYXF7.js} +2 -2
- package/dist/{chunk-WMMT6W7C.js → chunk-JN3IUA2Q.js} +2 -2
- package/dist/{chunk-A2KGXUOU.js → chunk-JWMYVQAM.js} +2 -2
- package/dist/{chunk-6P6ZR6JR.js → chunk-KHRKEELC.js} +17 -17
- package/dist/{chunk-UVCY7VDX.js → chunk-LI4ZOFHW.js} +2 -2
- package/dist/{chunk-6YJLLDWO.js → chunk-LMHDFOVV.js} +3 -3
- package/dist/{chunk-UHOUNNY3.js → chunk-N7EVMKP6.js} +6 -6
- package/dist/{chunk-7JXXI3GW.js → chunk-Q3FWRDCP.js} +2 -2
- package/dist/{chunk-JEMLK7ED.js → chunk-QO2KODU6.js} +2 -2
- package/dist/{chunk-7KXE7KN5.js → chunk-TCZWBJBO.js} +2 -2
- package/dist/{chunk-B3ABVQ36.js → chunk-UHVXE24Y.js} +2 -1
- package/dist/{chunk-UX3ZXN34.js → chunk-UV72DEZD.js} +2 -2
- package/dist/{chunk-FO3WM76R.js → chunk-V5TSUGRB.js} +5 -5
- package/dist/{chunk-SGCWBLHN.js → chunk-X5QS5C2O.js} +2 -2
- package/dist/{cli-D2g5mRgf.d.ts → cli-DPEhq0Cp.d.ts} +5 -5
- package/dist/cli.d.ts +10 -10
- package/dist/cli.js +25 -25
- package/dist/compounding/engine.d.ts +2 -2
- package/dist/compounding/engine.js +4 -4
- package/dist/compounding/preference-consolidator.d.ts +1 -1
- package/dist/compression-optimizer.d.ts +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.js +1 -1
- package/dist/connectors/codex-materialize-runner.d.ts +1 -1
- package/dist/connectors/codex-materialize-runner.js +4 -4
- package/dist/connectors/codex-materialize.d.ts +1 -1
- package/dist/connectors/index.d.ts +1 -1
- package/dist/connectors/index.js +4 -4
- package/dist/consolidation-provenance-check.d.ts +2 -2
- package/dist/consolidation-undo.d.ts +2 -2
- package/dist/contradiction/index.d.ts +2 -2
- package/dist/conversation-index/backend.d.ts +1 -1
- package/dist/conversation-index/chunker.d.ts +1 -1
- package/dist/conversation-index/faiss-adapter.d.ts +1 -1
- package/dist/conversation-index/indexer.d.ts +1 -1
- package/dist/conversation-index/search.d.ts +1 -1
- package/dist/day-summary.d.ts +1 -1
- package/dist/delinearize.d.ts +1 -1
- package/dist/direct-answer-wiring.d.ts +1 -1
- package/dist/direct-answer.d.ts +1 -1
- package/dist/embedding-fallback.d.ts +1 -1
- package/dist/enrichment/index.d.ts +1 -1
- package/dist/entity-retrieval.d.ts +2 -2
- package/dist/entity-retrieval.js +4 -4
- package/dist/entity-schema.d.ts +1 -1
- package/dist/explicit-capture.d.ts +6 -6
- package/dist/extraction-faithfulness.d.ts +1 -1
- package/dist/extraction-judge-telemetry.d.ts +1 -1
- package/dist/extraction-judge-training.d.ts +1 -1
- package/dist/extraction-judge.d.ts +1 -1
- package/dist/extraction.d.ts +1 -1
- package/dist/fallback-llm.d.ts +1 -1
- package/dist/graph-dashboard-diff.d.ts +1 -1
- package/dist/graph-dashboard-key.d.ts +1 -1
- package/dist/graph-dashboard-parser.d.ts +1 -1
- package/dist/graph-edge-reinforcement.d.ts +1 -1
- package/dist/graph-snapshot.d.ts +1 -1
- package/dist/graph.d.ts +1 -1
- package/dist/importance.d.ts +1 -1
- package/dist/importers/index.d.ts +1 -1
- package/dist/in-flight-reads.d.ts +1 -1
- package/dist/index.d.ts +470 -90
- package/dist/index.js +66 -36
- package/dist/intent.d.ts +1 -1
- package/dist/lcm/engine.d.ts +1 -1
- package/dist/lcm/index.d.ts +1 -1
- package/dist/lcm/tools.d.ts +1 -1
- package/dist/lifecycle.d.ts +1 -1
- package/dist/live-connectors-runner.d.ts +1 -1
- package/dist/local-llm.d.ts +1 -1
- package/dist/local-model-endpoint.d.ts +1 -1
- package/dist/maintenance/memory-governance.d.ts +1 -1
- package/dist/maintenance/memory-governance.js +4 -4
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +2 -2
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +4 -4
- package/dist/maintenance/rebuild-memory-projection.d.ts +2 -2
- package/dist/maintenance/rebuild-memory-projection.js +5 -5
- package/dist/mcp-memory-inspector-app.d.ts +8 -8
- package/dist/memory-action-policy.d.ts +1 -1
- package/dist/memory-cache.d.ts +1 -1
- package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
- package/dist/memory-projection-store.d.ts +1 -1
- package/dist/memory-provenance.d.ts +1 -1
- package/dist/memory-worth-outcomes.d.ts +2 -2
- package/dist/models-json.d.ts +1 -1
- package/dist/namespaces/migrate.d.ts +3 -3
- package/dist/namespaces/migrate.js +5 -5
- package/dist/namespaces/principal.d.ts +1 -1
- package/dist/namespaces/search.d.ts +1 -1
- package/dist/namespaces/storage.d.ts +3 -3
- package/dist/namespaces/storage.js +4 -4
- package/dist/native-knowledge.d.ts +1 -1
- package/dist/offline-sync-impression-drain.d.ts +1 -1
- package/dist/operator-toolkit.d.ts +2 -2
- package/dist/operator-toolkit.js +9 -9
- package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -2
- package/dist/orchestration/maintenance.d.ts +3 -3
- package/dist/orchestration/maintenance.js +9 -9
- package/dist/{orchestrator-DrILRi-n.d.ts → orchestrator-DB93S48I.d.ts} +5 -5
- package/dist/orchestrator.d.ts +6 -6
- package/dist/orchestrator.js +32 -32
- package/dist/patterns-cli.d.ts +1 -1
- package/dist/{pipeline-BYo4b_y9.d.ts → pipeline-DmGc-H66.d.ts} +1 -1
- package/dist/policy-runtime.d.ts +1 -1
- package/dist/proactive-contention.d.ts +1 -1
- package/dist/provenance.d.ts +1 -1
- package/dist/{qmd-BIrL8e69.d.ts → qmd-cJT0crkF.d.ts} +1 -1
- package/dist/qmd-preflight.d.ts +2 -2
- package/dist/qmd-recall-cache.d.ts +1 -1
- package/dist/qmd.d.ts +2 -2
- package/dist/recall-concurrency-config.d.ts +1 -1
- package/dist/recall-disclosure-escalation.d.ts +1 -1
- package/dist/recall-explain-renderer.d.ts +1 -1
- package/dist/recall-explain-renderer.js +3 -3
- package/dist/recall-memory-map.d.ts +1 -1
- package/dist/recall-planner-llm.d.ts +1 -1
- package/dist/recall-state.d.ts +1 -1
- package/dist/recall-tag-filter.d.ts +1 -1
- package/dist/recall-timings.d.ts +1 -1
- package/dist/recall-xray-cli.d.ts +1 -1
- package/dist/recall-xray-cli.js +4 -4
- package/dist/recall-xray-renderer.d.ts +1 -1
- package/dist/recall-xray-renderer.js +3 -3
- package/dist/recall-xray.d.ts +1 -1
- package/dist/recall-xray.js +2 -2
- package/dist/replay/normalizers/chatgpt.d.ts +1 -1
- package/dist/replay/normalizers/claude.d.ts +1 -1
- package/dist/replay/normalizers/openclaw.d.ts +1 -1
- package/dist/replay/normalizers/shared.d.ts +1 -1
- package/dist/replay/runner.d.ts +1 -1
- package/dist/replay/types.d.ts +1 -1
- package/dist/resolve-auth-token.d.ts +1 -1
- package/dist/resume-bundles.js +2 -2
- package/dist/retrieval-agents.d.ts +2 -2
- package/dist/retrieval-tiers.d.ts +1 -1
- package/dist/routing/engine.d.ts +1 -1
- package/dist/routing/store.d.ts +1 -1
- package/dist/salvage-envelope.d.ts +1 -1
- package/dist/schemas.d.ts +22 -22
- package/dist/{scope-profiles-BiQ9yXP4.d.ts → scope-profiles-KG2nODX7.d.ts} +1 -1
- package/dist/search/embed-helper.d.ts +1 -1
- package/dist/search/factory.d.ts +1 -1
- package/dist/search/index.d.ts +1 -1
- package/dist/search/lancedb-backend.d.ts +1 -1
- package/dist/search/meilisearch-backend.d.ts +1 -1
- package/dist/search/noop-backend.d.ts +1 -1
- package/dist/search/orama-backend.d.ts +1 -1
- package/dist/search/port.d.ts +1 -1
- package/dist/search/remote-backend.d.ts +1 -1
- package/dist/{semantic-consolidation-C-cSATcR.d.ts → semantic-consolidation-BaZlg0D8.d.ts} +1 -1
- package/dist/semantic-consolidation.d.ts +2 -2
- package/dist/semantic-consolidation.js +5 -5
- package/dist/semantic-rule-promotion.js +4 -4
- package/dist/semantic-rule-verifier.d.ts +1 -1
- package/dist/semantic-rule-verifier.js +4 -4
- package/dist/session-observer-bands.d.ts +1 -1
- package/dist/session-observer-state.d.ts +1 -1
- package/dist/shared-context/manager.d.ts +1 -1
- package/dist/signal.d.ts +1 -1
- package/dist/{storage-ByTv05qM.d.ts → storage-BKhHHnRo.d.ts} +2 -221
- package/dist/storage.d.ts +2 -2
- package/dist/storage.js +3 -3
- package/dist/summarizer.d.ts +1 -1
- package/dist/summary-snapshot.d.ts +1 -1
- package/dist/temporal-supersession.d.ts +2 -2
- package/dist/temporal-timeline-recall.d.ts +1 -1
- package/dist/temporal-validity.d.ts +1 -1
- package/dist/threading.d.ts +1 -1
- package/dist/tier-migration.d.ts +2 -2
- package/dist/tier-routing.d.ts +1 -1
- package/dist/topics.d.ts +1 -1
- package/dist/transcript.d.ts +1 -1
- package/dist/transfer/types.d.ts +12 -12
- package/dist/trust-score-stage.d.ts +1 -1
- package/dist/trust-score.d.ts +1 -1
- package/dist/{types-e0_MI3Iq.d.ts → types-GBQZuT7l.d.ts} +397 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.js +1 -1
- package/dist/utility-runtime.d.ts +1 -1
- package/dist/verified-recall.js +4 -4
- package/dist/write-envelope.d.ts +1 -1
- package/package.json +2 -2
- package/src/config.test.ts +11 -0
- package/src/config.ts +5 -6
- package/src/meetings/build.test.ts +646 -0
- package/src/meetings/build.ts +365 -0
- package/src/meetings/cli.test.ts +276 -0
- package/src/meetings/cli.ts +242 -0
- package/src/meetings/config.test.ts +72 -0
- package/src/meetings/config.ts +183 -0
- package/src/meetings/errors.ts +13 -0
- package/src/meetings/fuse.test.ts +208 -0
- package/src/meetings/fuse.ts +297 -0
- package/src/meetings/index.ts +11 -1
- package/src/meetings/memory-generator.ts +116 -0
- package/src/meetings/recall-exclusion.test.ts +88 -0
- package/src/meetings/store.test.ts +232 -0
- package/src/meetings/store.ts +465 -0
- package/src/meetings/types.ts +111 -0
- package/src/orchestration/orchestrator-helpers.ts +23 -3
- package/src/orchestration/recall-search-pipeline.test.ts +182 -0
- package/src/orchestration/recall-search-pipeline.ts +36 -15
- package/src/types.ts +8 -0
- package/dist/chunk-AKWX5E6R.js.map +0 -1
- package/dist/chunk-KPEIWAZY.js.map +0 -1
- package/dist/chunk-ZHWEUG7Y.js.map +0 -1
- /package/dist/{auto-sync-IH3G25MT.js.map → auto-sync-UPTUVE4X.js.map} +0 -0
- /package/dist/{chunk-52H7OB7Y.js.map → chunk-275ENJDK.js.map} +0 -0
- /package/dist/{chunk-OR3OQHHS.js.map → chunk-3ZUY2VQF.js.map} +0 -0
- /package/dist/{chunk-NEFMSUC2.js.map → chunk-4F6AANKS.js.map} +0 -0
- /package/dist/{chunk-NGO4QKMY.js.map → chunk-4PYLBXX6.js.map} +0 -0
- /package/dist/{chunk-UQXIW7OZ.js.map → chunk-53WDAG7X.js.map} +0 -0
- /package/dist/{chunk-CNNQVI2A.js.map → chunk-5IXPWEQB.js.map} +0 -0
- /package/dist/{chunk-XGYCI23S.js.map → chunk-5JQLAQUZ.js.map} +0 -0
- /package/dist/{chunk-ALPBE5EC.js.map → chunk-62QM5MKY.js.map} +0 -0
- /package/dist/{chunk-LU22QKFA.js.map → chunk-B7C3TF5H.js.map} +0 -0
- /package/dist/{chunk-JHIEQCMG.js.map → chunk-EILX7SQR.js.map} +0 -0
- /package/dist/{chunk-WIP3MQZY.js.map → chunk-EXU5IQ3S.js.map} +0 -0
- /package/dist/{chunk-UL6WTQN4.js.map → chunk-EZKKHVFY.js.map} +0 -0
- /package/dist/{chunk-LTGSOACX.js.map → chunk-GEUDRENF.js.map} +0 -0
- /package/dist/{chunk-B3R5CC35.js.map → chunk-HJEEAO4O.js.map} +0 -0
- /package/dist/{chunk-7NHIHUBW.js.map → chunk-HPOY2PHQ.js.map} +0 -0
- /package/dist/{chunk-VMALXCR5.js.map → chunk-JFDEYXF7.js.map} +0 -0
- /package/dist/{chunk-WMMT6W7C.js.map → chunk-JN3IUA2Q.js.map} +0 -0
- /package/dist/{chunk-A2KGXUOU.js.map → chunk-JWMYVQAM.js.map} +0 -0
- /package/dist/{chunk-6P6ZR6JR.js.map → chunk-KHRKEELC.js.map} +0 -0
- /package/dist/{chunk-UVCY7VDX.js.map → chunk-LI4ZOFHW.js.map} +0 -0
- /package/dist/{chunk-6YJLLDWO.js.map → chunk-LMHDFOVV.js.map} +0 -0
- /package/dist/{chunk-UHOUNNY3.js.map → chunk-N7EVMKP6.js.map} +0 -0
- /package/dist/{chunk-7JXXI3GW.js.map → chunk-Q3FWRDCP.js.map} +0 -0
- /package/dist/{chunk-JEMLK7ED.js.map → chunk-QO2KODU6.js.map} +0 -0
- /package/dist/{chunk-7KXE7KN5.js.map → chunk-TCZWBJBO.js.map} +0 -0
- /package/dist/{chunk-B3ABVQ36.js.map → chunk-UHVXE24Y.js.map} +0 -0
- /package/dist/{chunk-UX3ZXN34.js.map → chunk-UV72DEZD.js.map} +0 -0
- /package/dist/{chunk-FO3WM76R.js.map → chunk-V5TSUGRB.js.map} +0 -0
- /package/dist/{chunk-SGCWBLHN.js.map → chunk-X5QS5C2O.js.map} +0 -0
|
@@ -84,6 +84,395 @@ declare function isImportRole(value: unknown): value is ImportSourceRole;
|
|
|
84
84
|
declare function parseIsoTimestamp(value: string): number | null;
|
|
85
85
|
declare function validateImportTurn(turn: ImportTurn, index?: number): ImportTurnValidationIssue[];
|
|
86
86
|
|
|
87
|
+
/**
|
|
88
|
+
* Wearable cross-source fusion — shared types (issue #1810).
|
|
89
|
+
*
|
|
90
|
+
* Fusion merges same-day conversations from multiple enabled wearable
|
|
91
|
+
* sources into `FusedWearableConversation` artifacts: one reconciled
|
|
92
|
+
* timeline per real-world conversation, with per-segment source
|
|
93
|
+
* provenance and unresolved conflicts surfaced as `disagreements[]`.
|
|
94
|
+
*
|
|
95
|
+
* Everything in this module is DETERMINISTIC — no LLM calls. LLM-assisted
|
|
96
|
+
* reconciliation, memory-extraction over fused artifacts, and full
|
|
97
|
+
* segment-level alignment are deferred follow-ups (see PR body).
|
|
98
|
+
*/
|
|
99
|
+
/**
|
|
100
|
+
* One normalized segment fed into fusion. Speaker labels are already
|
|
101
|
+
* resolved through the speaker registry (`resolveSpeaker`), and text is
|
|
102
|
+
* post-cleanup + post-redaction — fusion consumes the same material day
|
|
103
|
+
* transcripts store, never raw provider output.
|
|
104
|
+
*/
|
|
105
|
+
interface FusionSegmentInput {
|
|
106
|
+
/** Resolved speaker label (e.g. "Jane", "Me (you)", "Speaker 0"). */
|
|
107
|
+
speaker: string;
|
|
108
|
+
/** Whether this speaker is the wearer. */
|
|
109
|
+
isSelf: boolean;
|
|
110
|
+
/** Utterance text. */
|
|
111
|
+
text: string;
|
|
112
|
+
/** ISO 8601 start, when known. */
|
|
113
|
+
startIso?: string;
|
|
114
|
+
/** ISO 8601 end, when known. */
|
|
115
|
+
endIso?: string;
|
|
116
|
+
}
|
|
117
|
+
/** One normalized conversation fed into fusion. */
|
|
118
|
+
interface FusionConversationInput {
|
|
119
|
+
/** Source id this conversation came from. */
|
|
120
|
+
source: string;
|
|
121
|
+
/** Provider-stable conversation id within that source. */
|
|
122
|
+
conversationId: string;
|
|
123
|
+
/** Provider title, when available. */
|
|
124
|
+
title?: string;
|
|
125
|
+
/** Provider summary, when available. */
|
|
126
|
+
summary?: string;
|
|
127
|
+
/** ISO 8601 conversation start. */
|
|
128
|
+
startIso: string;
|
|
129
|
+
/** ISO 8601 conversation end, when known. */
|
|
130
|
+
endIso?: string;
|
|
131
|
+
/** Ordered normalized segments. */
|
|
132
|
+
segments: FusionSegmentInput[];
|
|
133
|
+
}
|
|
134
|
+
/** Why a particular source's text was chosen for a fused segment. */
|
|
135
|
+
type SegmentPickReason = "only-source" | "higher-trust" | "more-complete" | "tie-break";
|
|
136
|
+
/** Kind of unresolved conflict surfaced during reconciliation. */
|
|
137
|
+
type DisagreementKind = "asr-text" | "speaker" | "timestamp";
|
|
138
|
+
/** Per-segment record of where the chosen text came from and what else was considered. */
|
|
139
|
+
interface FusedSegmentProvenance {
|
|
140
|
+
/** Source id the chosen text came from. */
|
|
141
|
+
source: string;
|
|
142
|
+
/** Conversation id within that source. */
|
|
143
|
+
conversationId: string;
|
|
144
|
+
/** Trust weight of the chosen source at reconciliation time (0..1). */
|
|
145
|
+
sourceTrust: number;
|
|
146
|
+
/** Why this source won the pick. */
|
|
147
|
+
reason: SegmentPickReason;
|
|
148
|
+
/** Other sources that offered a candidate text for this window/speaker. */
|
|
149
|
+
alternatives: Array<{
|
|
150
|
+
source: string;
|
|
151
|
+
text: string;
|
|
152
|
+
}>;
|
|
153
|
+
/** The chosen source's ORIGINAL start time (ISO), when known. The fused
|
|
154
|
+
* segment is emitted on the group/window ANCHOR timeline position so
|
|
155
|
+
* pre-sorted chronology stays valid even when the higher-trust source's
|
|
156
|
+
* clock is later than the anchor; this preserves WHERE the chosen text
|
|
157
|
+
* was actually recorded for provenance/traceability. */
|
|
158
|
+
sourceStartIso?: string;
|
|
159
|
+
/** The chosen source's ORIGINAL end time (ISO), when known (see sourceStartIso). */
|
|
160
|
+
sourceEndIso?: string;
|
|
161
|
+
}
|
|
162
|
+
/** One reconciled utterance in a fused conversation. */
|
|
163
|
+
interface FusedSegment {
|
|
164
|
+
/** Reconciled speaker label. */
|
|
165
|
+
speaker: string;
|
|
166
|
+
/** Whether this speaker is the wearer. */
|
|
167
|
+
isSelf: boolean;
|
|
168
|
+
/** Reconciled utterance text. */
|
|
169
|
+
text: string;
|
|
170
|
+
/** Window start (ISO), when known. */
|
|
171
|
+
startIso?: string;
|
|
172
|
+
/** Window end (ISO), when known. */
|
|
173
|
+
endIso?: string;
|
|
174
|
+
/** 0..1 confidence in this segment's text + attribution. */
|
|
175
|
+
confidence: number;
|
|
176
|
+
provenance: FusedSegmentProvenance;
|
|
177
|
+
}
|
|
178
|
+
/** An unresolved conflict that reconciliation could not settle deterministically. */
|
|
179
|
+
interface FusedDisagreement {
|
|
180
|
+
kind: DisagreementKind;
|
|
181
|
+
/**
|
|
182
|
+
* What the disagreement concerns — an ISO window anchor, a speaker
|
|
183
|
+
* label, or "(no timestamp)" for un-timestamped windows.
|
|
184
|
+
*/
|
|
185
|
+
subject: string;
|
|
186
|
+
/** The conflicting candidates that could not be auto-resolved. */
|
|
187
|
+
candidates: Array<{
|
|
188
|
+
source: string;
|
|
189
|
+
value: string;
|
|
190
|
+
}>;
|
|
191
|
+
/** Best-effort provisional winner; marked uncertain, NOT authoritative. */
|
|
192
|
+
provisional?: {
|
|
193
|
+
source: string;
|
|
194
|
+
value: string;
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
/** A reconciled speaker that appears in the fused conversation. */
|
|
198
|
+
interface FusedSpeaker {
|
|
199
|
+
/** Display label. */
|
|
200
|
+
label: string;
|
|
201
|
+
/** Whether this speaker is the wearer. */
|
|
202
|
+
isSelf: boolean;
|
|
203
|
+
/**
|
|
204
|
+
* 0..1 — lowered when a speaker could not be confidently matched
|
|
205
|
+
* across sources (e.g. a generic diarization label seen in one
|
|
206
|
+
* source only).
|
|
207
|
+
*/
|
|
208
|
+
confidence: number;
|
|
209
|
+
/** Source ids that produced this speaker. */
|
|
210
|
+
sources: string[];
|
|
211
|
+
}
|
|
212
|
+
/** Record of one source conversation that fed a fused conversation. */
|
|
213
|
+
interface FusedContribution {
|
|
214
|
+
source: string;
|
|
215
|
+
conversationId: string;
|
|
216
|
+
startIso: string;
|
|
217
|
+
endIso?: string;
|
|
218
|
+
segmentCount: number;
|
|
219
|
+
}
|
|
220
|
+
/** How a fused conversation was assembled. */
|
|
221
|
+
interface FusedConversationProvenance {
|
|
222
|
+
/** Source conversations that fed this cluster. */
|
|
223
|
+
contributions: FusedContribution[];
|
|
224
|
+
/** Max gap (ms) two conversations could span and still merge. */
|
|
225
|
+
proximityGapMs: number;
|
|
226
|
+
/** Max drift (ms) for two segments to align across sources. */
|
|
227
|
+
windowToleranceMs: number;
|
|
228
|
+
/** Clustering method (deterministic, time-proximity based). */
|
|
229
|
+
method: "time-proximity";
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* A real-world conversation reconstructed from one or more wearable
|
|
233
|
+
* sources recording at the same time. The fused artifact.
|
|
234
|
+
*/
|
|
235
|
+
interface FusedWearableConversation {
|
|
236
|
+
/** Stable content-hash id (deterministic from inputs; idempotent). */
|
|
237
|
+
id: string;
|
|
238
|
+
/** YYYY-MM-DD the conversation was recorded. */
|
|
239
|
+
date: string;
|
|
240
|
+
/** Earliest start across contributing sources. */
|
|
241
|
+
startIso: string;
|
|
242
|
+
/** Latest end across contributing sources, when known. */
|
|
243
|
+
endIso?: string;
|
|
244
|
+
/** Source ids that contributed at least one conversation. */
|
|
245
|
+
sources: string[];
|
|
246
|
+
/** Reconciled speakers (deduped across sources). */
|
|
247
|
+
speakers: FusedSpeaker[];
|
|
248
|
+
/** Provider title, when any source supplied one. */
|
|
249
|
+
title?: string;
|
|
250
|
+
/** Provider summary, when any source supplied one. */
|
|
251
|
+
summary?: string;
|
|
252
|
+
/** Aligned, reconciled segments in chronological order. */
|
|
253
|
+
segments: FusedSegment[];
|
|
254
|
+
/** Unresolved conflicts surfaced during reconciliation. */
|
|
255
|
+
disagreements: FusedDisagreement[];
|
|
256
|
+
provenance: FusedConversationProvenance;
|
|
257
|
+
}
|
|
258
|
+
/** Options for a fusion pass. */
|
|
259
|
+
interface FusionOptions {
|
|
260
|
+
/** Max gap (ms) between conversations to merge into one cluster. */
|
|
261
|
+
proximityGapMs?: number;
|
|
262
|
+
/** Max drift (ms) for two segments to align across sources. */
|
|
263
|
+
windowToleranceMs?: number;
|
|
264
|
+
/** Per-source trust weights (unknown sources default to 0.8). */
|
|
265
|
+
sourceTrust?: Record<string, number>;
|
|
266
|
+
}
|
|
267
|
+
/** Result of fusing one day across all sources. */
|
|
268
|
+
interface FusionDayResult {
|
|
269
|
+
date: string;
|
|
270
|
+
conversations: FusedWearableConversation[];
|
|
271
|
+
/** Distinct source ids that contributed any conversation. */
|
|
272
|
+
sources: string[];
|
|
273
|
+
/** SHA-256 over the canonical input serialization + effective fusion config (idempotency key). */
|
|
274
|
+
contentHash: string;
|
|
275
|
+
}
|
|
276
|
+
/** Frontmatter persisted on a fused-day derived file. */
|
|
277
|
+
interface FusedDayMeta {
|
|
278
|
+
kind: "wearable-fusion";
|
|
279
|
+
date: string;
|
|
280
|
+
sourceCount: number;
|
|
281
|
+
conversationCount: number;
|
|
282
|
+
contentHash: string;
|
|
283
|
+
/**
|
|
284
|
+
* SHA-256 over the canonical serialized body (`hashFusionBody`). Stored
|
|
285
|
+
* so the skip-unchanged path can detect a body whose bytes drifted from
|
|
286
|
+
* the recomputed artifact even when `contentHash` + conversation count
|
|
287
|
+
* still match — forcing a self-repair rewrite on body-level corruption.
|
|
288
|
+
*/
|
|
289
|
+
bodyHash: string;
|
|
290
|
+
fusedAt: string;
|
|
291
|
+
}
|
|
292
|
+
/** A parsed fused-day derived file. */
|
|
293
|
+
interface FusedDayFile {
|
|
294
|
+
meta: FusedDayMeta;
|
|
295
|
+
conversations: FusedWearableConversation[];
|
|
296
|
+
/**
|
|
297
|
+
* False when the JSON body failed to parse (truncated/corrupt). A
|
|
298
|
+
* legitimately empty (`[]`) body parses fine — parseOk stays true — so
|
|
299
|
+
* callers can distinguish "nothing to fuse" from a broken file and force
|
|
300
|
+
* a self-repair rewrite even when the frontmatter hash matches and the
|
|
301
|
+
* parsed conversation count is also zero.
|
|
302
|
+
*/
|
|
303
|
+
parseOk: boolean;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
/**
|
|
307
|
+
* Meeting-intelligence subsystem — shared types (issue #1900).
|
|
308
|
+
*
|
|
309
|
+
* Retrospective meeting detection over already-ingested day signals: audio
|
|
310
|
+
* conversation windows (from wearable day transcripts, any source) plus
|
|
311
|
+
* meeting-app foreground spans (derived from screen activity in a later slice).
|
|
312
|
+
* This slice is pure detection — no store, no fusion, no surfaces. All
|
|
313
|
+
* timestamps are UTC ISO-8601; windows are half-open [startUtc, endUtc).
|
|
314
|
+
*/
|
|
315
|
+
|
|
316
|
+
/** A contiguous meeting-app foreground span (derived from activity in a later slice). */
|
|
317
|
+
interface MeetingAppSpan {
|
|
318
|
+
/** Meeting app label (e.g. "Zoom", "Google Meet"). */
|
|
319
|
+
app: string;
|
|
320
|
+
startUtc: string;
|
|
321
|
+
endUtc: string;
|
|
322
|
+
}
|
|
323
|
+
/** An audio conversation window from a wearable/connector day transcript. */
|
|
324
|
+
interface MeetingAudioWindow {
|
|
325
|
+
/** Wearable source id the conversation came from (desktop, limitless, granola, …). */
|
|
326
|
+
source: string;
|
|
327
|
+
startUtc: string;
|
|
328
|
+
endUtc: string;
|
|
329
|
+
/** Distinct non-wearer speakers in the conversation (drives the audio-only rule). */
|
|
330
|
+
distinctNonWearerSpeakers: number;
|
|
331
|
+
/**
|
|
332
|
+
* True when the source is a cloud meeting provider that supplies explicit
|
|
333
|
+
* meeting boundaries (Granola/Fireflies): such a window is a meeting on its
|
|
334
|
+
* own, without a matching app span.
|
|
335
|
+
*/
|
|
336
|
+
providerMeeting?: boolean;
|
|
337
|
+
/** Provider-supplied meeting title, when available. */
|
|
338
|
+
title?: string;
|
|
339
|
+
}
|
|
340
|
+
/** How a meeting was detected. */
|
|
341
|
+
type MeetingDetectionSource = "app+audio" | "audio" | "provider";
|
|
342
|
+
/** One detected meeting for a day (non-overlapping after merge). */
|
|
343
|
+
interface DetectedMeeting {
|
|
344
|
+
/** Stable id `mtg-<date>-<hash>`, hashed from date + the exact START instant
|
|
345
|
+
* (app + end deliberately excluded) so a resync that grows the meeting never
|
|
346
|
+
* renumbers it, while non-overlapping meetings keep distinct ids. */
|
|
347
|
+
id: string;
|
|
348
|
+
/** Local day YYYY-MM-DD. */
|
|
349
|
+
date: string;
|
|
350
|
+
startUtc: string;
|
|
351
|
+
endUtc: string;
|
|
352
|
+
/** Meeting app, when app context contributed to detection. */
|
|
353
|
+
app?: string;
|
|
354
|
+
detectionSource: MeetingDetectionSource;
|
|
355
|
+
/** Contributing wearable source ids, sorted, de-duplicated. */
|
|
356
|
+
sources: string[];
|
|
357
|
+
/** Title, when a provider supplied one. */
|
|
358
|
+
title?: string;
|
|
359
|
+
}
|
|
360
|
+
/** Per-day detection input (assembled by a later wiring slice). */
|
|
361
|
+
interface MeetingsDetectionInput {
|
|
362
|
+
date: string;
|
|
363
|
+
appSpans: MeetingAppSpan[];
|
|
364
|
+
audioWindows: MeetingAudioWindow[];
|
|
365
|
+
}
|
|
366
|
+
/** Detection-relevant configuration (full parseConfig wiring lands in a later slice). */
|
|
367
|
+
interface MeetingsDetectionConfig {
|
|
368
|
+
/** Meeting-app match patterns (used when deriving app spans from activity). */
|
|
369
|
+
appPatterns: string[];
|
|
370
|
+
/** Min app-span ∩ audio-window overlap to pair them (minutes). */
|
|
371
|
+
minOverlapMinutes: number;
|
|
372
|
+
/** Audio-only fallback: min conversation length (minutes). */
|
|
373
|
+
audioOnlyMinMinutes: number;
|
|
374
|
+
/** Merge candidates within this gap of each other (minutes). */
|
|
375
|
+
mergeGapMinutes: number;
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* One screen-activity snapshot fed into meeting fusion (assembled from the
|
|
379
|
+
* activity store by a later wiring slice; injected directly in tests). Text is
|
|
380
|
+
* already post-redaction — meeting fusion never sees raw capture.
|
|
381
|
+
*/
|
|
382
|
+
interface MeetingActivitySnapshot {
|
|
383
|
+
/** ISO 8601 UTC instant the snapshot was captured. */
|
|
384
|
+
tsUtc: string;
|
|
385
|
+
/** Foreground application label (e.g. "Preview", "Chrome", "Zoom"). */
|
|
386
|
+
app: string;
|
|
387
|
+
/** Window title, when known. */
|
|
388
|
+
title?: string;
|
|
389
|
+
/** Browser URL, when known. */
|
|
390
|
+
url?: string;
|
|
391
|
+
/** Extracted on-screen text excerpt, when known. */
|
|
392
|
+
text?: string;
|
|
393
|
+
}
|
|
394
|
+
/** One entry in a meeting's screen-context timeline (an other-app dwell). */
|
|
395
|
+
interface MeetingScreenContextEvent {
|
|
396
|
+
/** ISO 8601 UTC instant the dwell began (clamped to the meeting window). */
|
|
397
|
+
tsUtc: string;
|
|
398
|
+
/** `HH:MM` (UTC) render used on the timeline line. */
|
|
399
|
+
clock: string;
|
|
400
|
+
/** App label. */
|
|
401
|
+
app: string;
|
|
402
|
+
/** Compact label, e.g. `Preview: Q3-roadmap.pdf` or `Chrome: github.com/x`. */
|
|
403
|
+
label: string;
|
|
404
|
+
/** Foreground dwell within the meeting window, in whole seconds. */
|
|
405
|
+
dwellSeconds: number;
|
|
406
|
+
}
|
|
407
|
+
/** LLM meeting-summary mode: off (episode only), review (all to review queue),
|
|
408
|
+
* or smart (trust-gated). */
|
|
409
|
+
type MeetingSummaryMode = "off" | "review" | "smart";
|
|
410
|
+
/** Detection-plus-fusion configuration for meeting building. */
|
|
411
|
+
interface MeetingsConfig extends MeetingsDetectionConfig {
|
|
412
|
+
/** Master gate for the meetings subsystem. */
|
|
413
|
+
enabled: boolean;
|
|
414
|
+
/** Min foreground dwell (seconds) for an other-app span to enter context. */
|
|
415
|
+
contextDwellSeconds: number;
|
|
416
|
+
/** Cap on total deduped screen-context excerpt characters. */
|
|
417
|
+
maxContextChars: number;
|
|
418
|
+
/** LLM summary/facts mode: off | review | smart (default smart). */
|
|
419
|
+
summaryMode: MeetingSummaryMode;
|
|
420
|
+
/** Provenance trust prior for meeting-derived facts (0..1). */
|
|
421
|
+
sourceTrust: number;
|
|
422
|
+
/** Trust at/above which a smart-mode fact is auto-approved to active. */
|
|
423
|
+
autoApproveTrust: number;
|
|
424
|
+
/** Trust at/above which a smart-mode fact is queued for review. */
|
|
425
|
+
reviewTrust: number;
|
|
426
|
+
}
|
|
427
|
+
/** Per-meeting build input (day conversations + activity are clipped here). */
|
|
428
|
+
interface MeetingBuildInput {
|
|
429
|
+
meeting: DetectedMeeting;
|
|
430
|
+
/**
|
|
431
|
+
* Fusion conversation inputs across ALL wearable sources for the day. Only
|
|
432
|
+
* segments overlapping the meeting window are used; passing whole-day inputs
|
|
433
|
+
* is fine (they are clipped in `fuseMeeting`).
|
|
434
|
+
*/
|
|
435
|
+
conversations: FusionConversationInput[];
|
|
436
|
+
/** Day screen-activity snapshots (filtered to the window in `fuseMeeting`). */
|
|
437
|
+
activity?: MeetingActivitySnapshot[];
|
|
438
|
+
}
|
|
439
|
+
/** The fused, screen-aware view of a meeting produced by `fuseMeeting`. */
|
|
440
|
+
interface FusedMeeting {
|
|
441
|
+
/** Distinct resolved non-wearer attendee labels, sorted. */
|
|
442
|
+
attendees: string[];
|
|
443
|
+
/** Contributing transcript sources, sorted + de-duplicated. */
|
|
444
|
+
sources: string[];
|
|
445
|
+
/** Sources that corroborated a higher-trust pick (alternatives), sorted. */
|
|
446
|
+
corroboratedBy: string[];
|
|
447
|
+
/** Screen-context timeline (other-app dwell >= contextDwellSeconds). */
|
|
448
|
+
screenContext: MeetingScreenContextEvent[];
|
|
449
|
+
/** Deduped notable on-screen text excerpts (capped by maxContextChars). */
|
|
450
|
+
contextExcerpts: string[];
|
|
451
|
+
/** Fused, reconciled transcript segments in chronological order. */
|
|
452
|
+
transcript: FusedSegment[];
|
|
453
|
+
/** Reconciled speakers (deduped across sources). */
|
|
454
|
+
speakers: FusedSpeaker[];
|
|
455
|
+
/** Count of activity snapshots inside the meeting window. */
|
|
456
|
+
snapshotCount: number;
|
|
457
|
+
}
|
|
458
|
+
/**
|
|
459
|
+
* A persisted meeting record. Frontmatter + fused body serialize to
|
|
460
|
+
* `<memoryDir>/meetings/<date>/<id>.md`; rebuilt idempotently on contentHash.
|
|
461
|
+
*/
|
|
462
|
+
interface MeetingRecord extends FusedMeeting {
|
|
463
|
+
id: string;
|
|
464
|
+
date: string;
|
|
465
|
+
startUtc: string;
|
|
466
|
+
endUtc: string;
|
|
467
|
+
app?: string;
|
|
468
|
+
detectionSource: MeetingDetectionSource;
|
|
469
|
+
title?: string;
|
|
470
|
+
/** SHA-256 over the record's canonical semantic content (idempotency key). */
|
|
471
|
+
contentHash: string;
|
|
472
|
+
/** Serializer format version (bump invalidates older files). */
|
|
473
|
+
formatVersion: number;
|
|
474
|
+
}
|
|
475
|
+
|
|
87
476
|
/**
|
|
88
477
|
* Screen-activity subsystem — shared types (issue #1899).
|
|
89
478
|
*
|
|
@@ -1715,6 +2104,11 @@ interface PluginConfig extends BoundedJsonlStateConfig {
|
|
|
1715
2104
|
*/
|
|
1716
2105
|
wearables: WearablesConfig;
|
|
1717
2106
|
activity: ActivityConfig;
|
|
2107
|
+
/**
|
|
2108
|
+
* Retrospective meeting intelligence (issue #1900): detect + fuse meetings
|
|
2109
|
+
* from already-ingested audio + screen activity. Disabled by default.
|
|
2110
|
+
*/
|
|
2111
|
+
meetings: MeetingsConfig;
|
|
1718
2112
|
/**
|
|
1719
2113
|
* At-rest encryption configuration (issue #690 PR 3/4).
|
|
1720
2114
|
*
|
|
@@ -1735,6 +2129,8 @@ interface PluginConfig extends BoundedJsonlStateConfig {
|
|
|
1735
2129
|
heartbeat: HeartbeatConfig;
|
|
1736
2130
|
chat: ChatConfig;
|
|
1737
2131
|
slotBehavior: SlotBehaviorConfig;
|
|
2132
|
+
/** OpenClaw bridge mode (#2120): `"embedded"` (default) or `"delegate"`. */
|
|
2133
|
+
bridgeMode: string;
|
|
1738
2134
|
codexCompat: CodexCompatConfig;
|
|
1739
2135
|
/**
|
|
1740
2136
|
* When true (default), the extraction prompt instructs the LLM to classify
|
|
@@ -4055,4 +4451,4 @@ interface HourlySummary {
|
|
|
4055
4451
|
generatedAt: string;
|
|
4056
4452
|
}
|
|
4057
4453
|
|
|
4058
|
-
export { type BehaviorSignalEvent as $, type ActiveRecallChatType as A, type BriefingSections as B, type CalendarSource as C, type DreamsPhase as D, type EntityFile as E, type FaithfulnessFrontmatter as F, type GatewayConfig as G, type HourlySummary as H, type IdentityInjectionMode as I, type ExtractionResult as J, type ConsolidationResult as K, type LiveConnectorsConfig as L, type MemoryFile as M, type DaySummaryResult as N, type ExtractionFailureClass as O, type PluginConfig as P, type QmdSearchResult as Q, type RecallPlanMode as R, type SessionObserverBandConfig as S, type TranscriptEntry as T, type ProvenanceSource as U, type TrustWeights as V, type ConversationThread as W, type LifecycleState as X, type VerificationState as Y, type PolicyClass as Z, type ImportanceLevel as _, type DreamsRunResult as a, type
|
|
4454
|
+
export { type BehaviorSignalEvent as $, type ActiveRecallChatType as A, type BriefingSections as B, type CalendarSource as C, type DreamsPhase as D, type EntityFile as E, type FaithfulnessFrontmatter as F, type GatewayConfig as G, type HourlySummary as H, type IdentityInjectionMode as I, type ExtractionResult as J, type ConsolidationResult as K, type LiveConnectorsConfig as L, type MemoryFile as M, type DaySummaryResult as N, type ExtractionFailureClass as O, type PluginConfig as P, type QmdSearchResult as Q, type RecallPlanMode as R, type SessionObserverBandConfig as S, type TranscriptEntry as T, type ProvenanceSource as U, type TrustWeights as V, type ConversationThread as W, type LifecycleState as X, type VerificationState as Y, type PolicyClass as Z, type ImportanceLevel as _, type DreamsRunResult as a, type FusionOptions as a$, type BufferSurpriseEvent as a0, type ImportTurn as a1, type BulkImportOptions as a2, type BulkImportSource as a3, type BulkImportResult as a4, type SecretRef as a5, type AgentAccessAuthToken as a6, type CompressionGuidelineOptimizerEventCounts as a7, type CompressionGuidelineOptimizerActionSummary as a8, type CompressionGuidelineOptimizerRuleUpdate as a9, type MetaState as aA, type FileHygieneConfig as aB, type EntityRelationship as aC, type EntityActivityEntry as aD, type AccessTrackingEntry as aE, type MemorySummary as aF, type CodingContext as aG, type DreamsStatusResult as aH, type WearableConversation as aI, type WearableSourceSettings as aJ, type WearableNativeMemory as aK, type WearableMemoryMode as aL, type WearableSourceConnector as aM, type WearablesConfig as aN, type WearableSyncSummary as aO, type WearableSourceStatus as aP, type WearableDayTranscript as aQ, type WearableCorrectionRule as aR, type RecallSectionConfig as aS, type BootstrapOptions as aT, type BootstrapResult as aU, type ConsolidationObservation as aV, type CodingModeConfig as aW, type FusionConversationInput as aX, type FusedSpeaker as aY, type FusedSegment as aZ, type FusedDisagreement as a_, type MemoryActionType as aa, type MemoryActionEvent as ab, type CompressionGuidelineOptimizerState as ac, type EntityMention as ad, type EntitySchemaDefinition as ae, type EntitySchemaSectionDefinition as af, type EntityStructuredSection as ag, type ImportanceScore as ah, type MemoryIntent as ai, type MemoryActionEligibilityContext as aj, type MemoryActionPolicyResult as ak, type MemoryLifecycleEventType as al, type MemoryLifecycleStateSummary as am, type ModelProviderConfig as an, type NativeKnowledgeConfig as ao, type ProvenanceConfig as ap, type RetrievalTier as aq, type SignalScanResult as ar, type TopicScore as as, type QmdSearchExplain as at, type FusedWearableConversation as au, type FusedDayMeta as av, type FusedDayFile as aw, type EntityTimelineEntry as ax, type MemoryLink as ay, type BufferState as az, type RecallDisclosure as b, type BufferEntryState as b$, type FusionDayResult as b0, type CodingKnowledgeConfig as b1, type WearableCleanupSettings as b2, type WearableFusionConfig as b3, type WearableDayTranscriptMeta as b4, type ActivitySnapshot as b5, type ActivityDayMeta as b6, type ActivityDayDigest as b7, type ActivitySourceClient as b8, type ActivitySourceCheck as b9, type ImportSourceRole as bA, type ImportTurnValidationIssue as bB, type MeetingAppSpan as bC, type MeetingAudioWindow as bD, type MeetingScreenContextEvent as bE, type MeetingSummaryMode as bF, type MemoryActionEligibilitySource as bG, type MemoryObservation as bH, type MemoryScope as bI, RECALL_DISCLOSURE_LEVELS as bJ, type SegmentPickReason as bK, type WearableAuthCheck as bL, type WearableFetchOptions as bM, type WearableFetchPage as bN, type WearableNativeMemoryPage as bO, type WearableTranscriptSegment as bP, isImportRole as bQ, isRecallDisclosure as bR, parseIsoTimestamp as bS, validateImportTurn as bT, type AgentAccessHttpConfig as bU, type AgentDefaultsConfig as bV, type AgentPersona as bW, type BehaviorLoopAdjustment as bX, type BehaviorSignalDirection as bY, type BehaviorSignalType as bZ, type BriefingCalendarSourceError as b_, type ActivitySnapshotPage as ba, type ActivityConfig as bb, type ActivitySourceConfig as bc, type MeetingsDetectionConfig as bd, type MeetingsDetectionInput as be, type DetectedMeeting as bf, type MeetingsConfig as bg, type MeetingBuildInput as bh, type FusedMeeting as bi, type MeetingDetectionSource as bj, type MeetingRecord as bk, type MeetingActivitySnapshot as bl, type ActivityExtractionMode as bm, type BriefingConfig as bn, type BriefingOpenCommitment as bo, type BriefingWindow as bp, type BulkImportError as bq, type BulkImportSourceAdapter as br, type CodexCompatConfig as bs, DEFAULT_RECALL_DISCLOSURE as bt, type DisagreementKind as bu, type ExtractedFact as bv, type FusedContribution as bw, type FusedConversationProvenance as bx, type FusedSegmentProvenance as by, type FusionSegmentInput as bz, type ActiveRecallQueryMode as c, type SlotBehaviorConfig as c$, type CaptureMode as c0, type ChatConfig as c1, type CodexCliReasoningEffort as c2, type CodexCompactionFlushMode as c3, type CodexConnectorConfig as c4, type CodingGraphLspConfig as c5, type CompressionGuidelineActivationState as c6, type CompressionGuidelineOptimizerSourceWindow as c7, type ConfidenceTier as c8, type ConsolidationAction as c9, type MemoryActionPolicyDecision as cA, type MemoryActionStatus as cB, type MemoryLinkType as cC, type MemoryOsPresetName as cD, type ModelApi as cE, type ModelDefinitionConfig as cF, type ModelProviderAuthMode as cG, type NamespacePolicy as cH, type NativeKnowledgeFolderRuleConfig as cI, type NativeKnowledgeObsidianVaultConfig as cJ, type NativeKnowledgeOpenClawWorkspaceConfig as cK, type NotionLiveConnectorConfig as cL, type PrincipalFromSessionKeyMode as cM, type PrincipalRule as cN, type ProceduralConfig as cO, type QuestionEntry as cP, type ReasoningEffort as cQ, type RecallPipelineConfig as cR, type RecallTraceEvent as cS, type RelevanceFeedback as cT, SPECULATIVE_TTL_DAYS as cU, type ScopeProfileAutoPromoteConfig as cV, type ScopeProfileTeamProjectConfig as cW, type ScopeTeamConfig as cX, type ScoredEntity as cY, type SemanticChunkingConfigShape as cZ, type SignalLevel as c_, type ConsolidationItem as ca, type ContradictionScanConfig as cb, type CronConversationRecallMode as cc, type CronRecallMode as cd, type DreamingConfig as ce, type DreamingNarrativePromptStyle as cf, type DreamsDeepSleepConfig as cg, type DreamsLightSleepConfig as ch, type DreamsPhaseStatus as ci, type DreamsPhasesConfig as cj, type DreamsRemConfig as ck, type EngramTraceEvent as cl, type ExtractedProcedureStep as cm, type ExtractedQuestion as cn, type ExtractedReasoningTrace as co, type ExtractedReasoningTraceStep as cp, type ExtractedRelationship as cq, type ExtractionPassSource as cr, type GitHubLiveConnectorConfig as cs, type GmailLiveConnectorConfig as ct, type GoogleDriveLiveConnectorConfig as cu, type HeartbeatConfig as cv, type HeartbeatDetectionMode as cw, type LlmTraceCallback as cx, type LlmTraceEvent as cy, type MemoryActionOutcome as cz, type ActiveRecallPromptStyle as d, type SlotMismatchMode as d0, type TriggerMode as d1, confidenceTier as d2, type ActiveRecallThinking as e, type ActiveRecallModelFallbackPolicy as f, type RecallTierExplain as g, type BriefingFollowup as h, type BriefingFocus as i, type CalendarEvent as j, type BriefingActiveThread as k, type BriefingResult as l, type BriefingRecentEntity as m, type BufferTurn as n, type MemoryFrontmatter as o, type Checkpoint as p, type AgentPersonaModelConfig as q, type SourceConnectorProvenance as r, type ScopeProfileConfig as s, type ScopeProfileLayerId as t, type ScopeProfilePromotionTarget as u, type BehaviorLoopPolicyState as v, type MemoryCategory as w, type MemoryStatus as x, type MemoryProjectionCurrentState as y, type MemoryLifecycleEvent as z };
|
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { aE as AccessTrackingEntry, A as ActiveRecallChatType, f as ActiveRecallModelFallbackPolicy, d as ActiveRecallPromptStyle, c as ActiveRecallQueryMode, e as ActiveRecallThinking, a6 as AgentAccessAuthToken, bU as AgentAccessHttpConfig, bV as AgentDefaultsConfig, bW as AgentPersona, q as AgentPersonaModelConfig, bX as BehaviorLoopAdjustment, v as BehaviorLoopPolicyState, bY as BehaviorSignalDirection, $ as BehaviorSignalEvent, bZ as BehaviorSignalType, aT as BootstrapOptions, aU as BootstrapResult, k as BriefingActiveThread, b_ as BriefingCalendarSourceError, bn as BriefingConfig, i as BriefingFocus, h as BriefingFollowup, bo as BriefingOpenCommitment, m as BriefingRecentEntity, l as BriefingResult, B as BriefingSections, bp as BriefingWindow, b$ as BufferEntryState, az as BufferState, a0 as BufferSurpriseEvent, n as BufferTurn, j as CalendarEvent, C as CalendarSource, c0 as CaptureMode, c1 as ChatConfig, p as Checkpoint, c2 as CodexCliReasoningEffort, c3 as CodexCompactionFlushMode, bs as CodexCompatConfig, c4 as CodexConnectorConfig, aG as CodingContext, c5 as CodingGraphLspConfig, b1 as CodingKnowledgeConfig, aW as CodingModeConfig, c6 as CompressionGuidelineActivationState, a8 as CompressionGuidelineOptimizerActionSummary, a7 as CompressionGuidelineOptimizerEventCounts, a9 as CompressionGuidelineOptimizerRuleUpdate, c7 as CompressionGuidelineOptimizerSourceWindow, ac as CompressionGuidelineOptimizerState, c8 as ConfidenceTier, c9 as ConsolidationAction, ca as ConsolidationItem, aV as ConsolidationObservation, K as ConsolidationResult, cb as ContradictionScanConfig, W as ConversationThread, cc as CronConversationRecallMode, cd as CronRecallMode, bt as DEFAULT_RECALL_DISCLOSURE, N as DaySummaryResult, ce as DreamingConfig, cf as DreamingNarrativePromptStyle, cg as DreamsDeepSleepConfig, ch as DreamsLightSleepConfig, D as DreamsPhase, ci as DreamsPhaseStatus, cj as DreamsPhasesConfig, ck as DreamsRemConfig, a as DreamsRunResult, aH as DreamsStatusResult, cl as EngramTraceEvent, aD as EntityActivityEntry, E as EntityFile, ad as EntityMention, aC as EntityRelationship, ae as EntitySchemaDefinition, af as EntitySchemaSectionDefinition, ag as EntityStructuredSection, ax as EntityTimelineEntry, bv as ExtractedFact, cm as ExtractedProcedureStep, cn as ExtractedQuestion, co as ExtractedReasoningTrace, cp as ExtractedReasoningTraceStep, cq as ExtractedRelationship, O as ExtractionFailureClass, cr as ExtractionPassSource, J as ExtractionResult, F as FaithfulnessFrontmatter, aB as FileHygieneConfig, G as GatewayConfig, cs as GitHubLiveConnectorConfig, ct as GmailLiveConnectorConfig, cu as GoogleDriveLiveConnectorConfig, cv as HeartbeatConfig, cw as HeartbeatDetectionMode, H as HourlySummary, I as IdentityInjectionMode, _ as ImportanceLevel, ah as ImportanceScore, X as LifecycleState, L as LiveConnectorsConfig, cx as LlmTraceCallback, cy as LlmTraceEvent, aj as MemoryActionEligibilityContext, bG as MemoryActionEligibilitySource, ab as MemoryActionEvent, cz as MemoryActionOutcome, cA as MemoryActionPolicyDecision, ak as MemoryActionPolicyResult, cB as MemoryActionStatus, aa as MemoryActionType, w as MemoryCategory, M as MemoryFile, o as MemoryFrontmatter, ai as MemoryIntent, z as MemoryLifecycleEvent, al as MemoryLifecycleEventType, am as MemoryLifecycleStateSummary, ay as MemoryLink, cC as MemoryLinkType, bH as MemoryObservation, cD as MemoryOsPresetName, y as MemoryProjectionCurrentState, bI as MemoryScope, x as MemoryStatus, aF as MemorySummary, aA as MetaState, cE as ModelApi, cF as ModelDefinitionConfig, cG as ModelProviderAuthMode, an as ModelProviderConfig, cH as NamespacePolicy, ao as NativeKnowledgeConfig, cI as NativeKnowledgeFolderRuleConfig, cJ as NativeKnowledgeObsidianVaultConfig, cK as NativeKnowledgeOpenClawWorkspaceConfig, cL as NotionLiveConnectorConfig, P as PluginConfig, Z as PolicyClass, cM as PrincipalFromSessionKeyMode, cN as PrincipalRule, cO as ProceduralConfig, ap as ProvenanceConfig, U as ProvenanceSource, at as QmdSearchExplain, Q as QmdSearchResult, cP as QuestionEntry, bJ as RECALL_DISCLOSURE_LEVELS, cQ as ReasoningEffort, b as RecallDisclosure, cR as RecallPipelineConfig, R as RecallPlanMode, aS as RecallSectionConfig, g as RecallTierExplain, cS as RecallTraceEvent, cT as RelevanceFeedback, aq as RetrievalTier, cU as SPECULATIVE_TTL_DAYS, cV as ScopeProfileAutoPromoteConfig, s as ScopeProfileConfig, t as ScopeProfileLayerId, u as ScopeProfilePromotionTarget, cW as ScopeProfileTeamProjectConfig, cX as ScopeTeamConfig, cY as ScoredEntity, a5 as SecretRef, cZ as SemanticChunkingConfigShape, S as SessionObserverBandConfig, c_ as SignalLevel, ar as SignalScanResult, c$ as SlotBehaviorConfig, d0 as SlotMismatchMode, r as SourceConnectorProvenance, as as TopicScore, T as TranscriptEntry, d1 as TriggerMode, V as TrustWeights, Y as VerificationState, d2 as confidenceTier, bR as isRecallDisclosure } from './types-GBQZuT7l.js';
|
|
2
2
|
import './message-parts/index.js';
|
|
3
3
|
import './bounded-jsonl-state.js';
|
|
4
4
|
export { ContinuityImprovementLoop, ContinuityIncidentCloseInput, ContinuityIncidentOpenInput, ContinuityIncidentRecord, ContinuityIncidentState, ContinuityLoopCadence, ContinuityLoopReviewInput, ContinuityLoopStatus, ContinuityLoopUpsertInput } from './types-continuity.js';
|
package/dist/types.js
CHANGED
package/dist/verified-recall.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import {
|
|
2
2
|
compareVerifiedEpisodeResults,
|
|
3
3
|
searchVerifiedEpisodes
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-5JQLAQUZ.js";
|
|
5
5
|
import "./chunk-B7RWBZXW.js";
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-4F6AANKS.js";
|
|
7
|
+
import "./chunk-UHVXE24Y.js";
|
|
8
8
|
import "./chunk-2QMKMVHH.js";
|
|
9
9
|
import "./chunk-DEBHXHJR.js";
|
|
10
10
|
import "./chunk-DNHVPZOD.js";
|
|
11
11
|
import "./chunk-6CIAGZ6X.js";
|
|
12
12
|
import "./chunk-J6A3CX5N.js";
|
|
13
13
|
import "./chunk-HKF5VASQ.js";
|
|
14
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-6NZ7U4R4.js";
|
|
15
15
|
import "./chunk-XKGPIWGI.js";
|
|
16
16
|
import "./chunk-EGGE52UU.js";
|
|
17
17
|
import "./chunk-GCASGYIO.js";
|
package/dist/write-envelope.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remnic/core",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.20.0",
|
|
4
4
|
"description": "Framework-agnostic Remnic memory engine — orchestrator, storage, extraction, search, trust zones",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -3045,7 +3045,7 @@
|
|
|
3045
3045
|
"core"
|
|
3046
3046
|
],
|
|
3047
3047
|
"peerDependencies": {
|
|
3048
|
-
"@remnic/coding-graph": "^9.
|
|
3048
|
+
"@remnic/coding-graph": "^9.20.0"
|
|
3049
3049
|
},
|
|
3050
3050
|
"peerDependenciesMeta": {
|
|
3051
3051
|
"@remnic/coding-graph": {
|
package/src/config.test.ts
CHANGED
|
@@ -2396,3 +2396,14 @@ test("parseConfig forwards activity source settings", () => {
|
|
|
2396
2396
|
maxMemoriesPerDay: 0,
|
|
2397
2397
|
});
|
|
2398
2398
|
});
|
|
2399
|
+
|
|
2400
|
+
test("parseConfig forwards bridgeMode as a raw passthrough (validation is in resolveBridgeMode)", () => {
|
|
2401
|
+
assert.equal(parseConfig({}).bridgeMode, "embedded");
|
|
2402
|
+
assert.equal(parseConfig({ bridgeMode: "delegate" }).bridgeMode, "delegate");
|
|
2403
|
+
assert.equal(parseConfig({ bridgeMode: "embedded" }).bridgeMode, "embedded");
|
|
2404
|
+
// Invalid values pass through unchanged — resolveBridgeMode rejects them.
|
|
2405
|
+
assert.equal(parseConfig({ bridgeMode: "daemon" }).bridgeMode, "daemon");
|
|
2406
|
+
// Non-strings stringify so they REACH the downstream validator instead of
|
|
2407
|
+
// silently defaulting to embedded.
|
|
2408
|
+
assert.equal(parseConfig({ bridgeMode: true }).bridgeMode, "true");
|
|
2409
|
+
});
|
package/src/config.ts
CHANGED
|
@@ -51,6 +51,7 @@ import {
|
|
|
51
51
|
resolveNamespaceCatalogEnabled,
|
|
52
52
|
} from "./emit-legacy-tools.js";
|
|
53
53
|
import { parseWearablesConfig } from "./wearables/config.js";
|
|
54
|
+
import { parseMeetingsConfig } from "./meetings/config.js";
|
|
54
55
|
import { parseActivityConfig } from "./activity/config.js";
|
|
55
56
|
import { parseProvenanceConfig } from "./provenance.js";
|
|
56
57
|
import { parseBoundedJsonlStateConfig } from "./bounded-jsonl-state.js";
|
|
@@ -1170,11 +1171,9 @@ export function parseConfig(
|
|
|
1170
1171
|
proceduralMiningCronAutoRegister: coerceBool(rawProcedural.proceduralMiningCronAutoRegister) === true,
|
|
1171
1172
|
recallMaxProcedures,
|
|
1172
1173
|
};
|
|
1173
|
-
|
|
1174
|
-
// Wearable transcript ingestion (Limitless / Bee / Omi) — delegated to the wearables module.
|
|
1175
1174
|
const wearables = parseWearablesConfig(cfg.wearables);
|
|
1176
1175
|
const activity = parseActivityConfig(cfg.activity);
|
|
1177
|
-
|
|
1176
|
+
const meetings = parseMeetingsConfig(cfg.meetings);
|
|
1178
1177
|
const provenance = parseProvenanceConfig(cfg.provenance);
|
|
1179
1178
|
// Coding-agent project/branch scoping (issue #569)
|
|
1180
1179
|
const rawCodingMode =
|
|
@@ -2337,16 +2336,16 @@ export function parseConfig(
|
|
|
2337
2336
|
dreamsPhases,
|
|
2338
2337
|
procedural,
|
|
2339
2338
|
wearables,
|
|
2339
|
+
meetings,
|
|
2340
2340
|
activity,
|
|
2341
2341
|
provenance,
|
|
2342
|
-
// At-rest encryption (
|
|
2343
|
-
// coerceBool handles CLI string inputs: `--config secureStoreEnabled=true`
|
|
2344
|
-
// arrives as the string "true" which `=== true` would reject (CLAUDE.md #36).
|
|
2342
|
+
// At-rest encryption (#690): coerceBool handles CLI string "true" (#36).
|
|
2345
2343
|
secureStoreEnabled: coerceBool(cfg.secureStoreEnabled) === true,
|
|
2346
2344
|
secureStoreEncryptOnWrite: coerceBool(cfg.secureStoreEncryptOnWrite) !== false, // default: true
|
|
2347
2345
|
codingMode,
|
|
2348
2346
|
heartbeat,
|
|
2349
2347
|
slotBehavior,
|
|
2348
|
+
bridgeMode: cfg.bridgeMode === undefined ? "embedded" : String(cfg.bridgeMode),
|
|
2350
2349
|
codexCompat,
|
|
2351
2350
|
codingKnowledge: parseCodingKnowledgeConfig(cfg.codingKnowledge),
|
|
2352
2351
|
chat: parseChatConfig(cfg.chat),
|