@remnic/core 9.6.1 → 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 +22 -22
- 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/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
package/src/access-service.ts
CHANGED
|
@@ -180,7 +180,7 @@ import type {
|
|
|
180
180
|
EntityFile,
|
|
181
181
|
MemoryFile,
|
|
182
182
|
MemoryActionOutcome,
|
|
183
|
-
CodingContext,
|
|
183
|
+
CodingContext, SourceConnectorProvenance,
|
|
184
184
|
MemoryActionType,
|
|
185
185
|
MemoryLifecycleEvent,
|
|
186
186
|
MemoryStatus,
|
|
@@ -1019,7 +1019,7 @@ export interface EngramAccessObserveMessage {
|
|
|
1019
1019
|
sourceFormat?: MessagePartSourceFormat;
|
|
1020
1020
|
}
|
|
1021
1021
|
|
|
1022
|
-
export interface EngramAccessObserveRequest {
|
|
1022
|
+
export interface EngramAccessObserveRequest extends SourceConnectorProvenance {
|
|
1023
1023
|
sessionKey: string;
|
|
1024
1024
|
messages: EngramAccessObserveMessage[];
|
|
1025
1025
|
namespace?: string;
|
|
@@ -2961,6 +2961,7 @@ export class EngramAccessService {
|
|
|
2961
2961
|
entityRef: request.entityRef,
|
|
2962
2962
|
ttl: request.ttl,
|
|
2963
2963
|
sourceReason: request.sourceReason,
|
|
2964
|
+
sourceConnector: request.sourceConnector,
|
|
2964
2965
|
},
|
|
2965
2966
|
skip: request.dryRun === true,
|
|
2966
2967
|
});
|
|
@@ -2997,6 +2998,7 @@ export class EngramAccessService {
|
|
|
2997
2998
|
entityRef: request.entityRef,
|
|
2998
2999
|
ttl: request.ttl,
|
|
2999
3000
|
sourceReason: request.sourceReason,
|
|
3001
|
+
sourceConnector: request.sourceConnector,
|
|
3000
3002
|
},
|
|
3001
3003
|
skip: request.dryRun === true,
|
|
3002
3004
|
});
|
|
@@ -3061,6 +3063,7 @@ export class EngramAccessService {
|
|
|
3061
3063
|
async codegraphTool(
|
|
3062
3064
|
request: CodegraphSurfaceRequest,
|
|
3063
3065
|
authenticatedPrincipal?: string,
|
|
3066
|
+
sourceConnector?: string,
|
|
3064
3067
|
): Promise<CodegraphSurfaceResponse> {
|
|
3065
3068
|
const principal = authenticatedPrincipal ?? "default";
|
|
3066
3069
|
const memoryDir = this.orchestrator.config.memoryDir;
|
|
@@ -3097,7 +3100,7 @@ export class EngramAccessService {
|
|
|
3097
3100
|
throw new EngramAccessInputError(msg);
|
|
3098
3101
|
},
|
|
3099
3102
|
delegateDecisionRecord: async (decisionRequest) => {
|
|
3100
|
-
return this.codingDecision(decisionRequest, authenticatedPrincipal);
|
|
3103
|
+
return this.codingDecision(decisionRequest, authenticatedPrincipal, sourceConnector);
|
|
3101
3104
|
},
|
|
3102
3105
|
buildArchitectureCard: async (repoRoot) => {
|
|
3103
3106
|
return buildArchitectureCard(repoRoot, {
|
|
@@ -3125,6 +3128,7 @@ export class EngramAccessService {
|
|
|
3125
3128
|
async codingDecision(
|
|
3126
3129
|
request: DecisionSurfaceRequest,
|
|
3127
3130
|
authenticatedPrincipal?: string,
|
|
3131
|
+
sourceConnector?: string,
|
|
3128
3132
|
): Promise<DecisionSurfaceResponse> {
|
|
3129
3133
|
return handleCodingDecision(request, {
|
|
3130
3134
|
codingKnowledge: this.orchestrator.config.codingKnowledge,
|
|
@@ -3146,6 +3150,7 @@ export class EngramAccessService {
|
|
|
3146
3150
|
return Object.assign(storage, { namespace: ns });
|
|
3147
3151
|
},
|
|
3148
3152
|
throwInputError: (msg) => { throw new EngramAccessInputError(msg); },
|
|
3153
|
+
sourceConnector,
|
|
3149
3154
|
});
|
|
3150
3155
|
}
|
|
3151
3156
|
|
|
@@ -3171,6 +3176,7 @@ export class EngramAccessService {
|
|
|
3171
3176
|
async codingArchitecture(
|
|
3172
3177
|
request: ArchitectureSurfaceRequest,
|
|
3173
3178
|
authenticatedPrincipal?: string,
|
|
3179
|
+
sourceConnector?: string,
|
|
3174
3180
|
): Promise<ArchitectureSurfaceResponse> {
|
|
3175
3181
|
const resolvedConfig = this.orchestrator.config;
|
|
3176
3182
|
return handleCodingArchitecture(request, {
|
|
@@ -3205,6 +3211,7 @@ export class EngramAccessService {
|
|
|
3205
3211
|
createVersion,
|
|
3206
3212
|
),
|
|
3207
3213
|
throwInputError: (msg) => { throw new EngramAccessInputError(msg); },
|
|
3214
|
+
sourceConnector,
|
|
3208
3215
|
});
|
|
3209
3216
|
}
|
|
3210
3217
|
|
|
@@ -4056,6 +4063,7 @@ export class EngramAccessService {
|
|
|
4056
4063
|
cwd: request.cwd,
|
|
4057
4064
|
projectTag: request.projectTag,
|
|
4058
4065
|
effectiveCodingContext: effectiveCodingContext ?? null,
|
|
4066
|
+
sourceConnector: request.sourceConnector,
|
|
4059
4067
|
},
|
|
4060
4068
|
beforeExecute: hooks?.enforceWriteQuota,
|
|
4061
4069
|
execute: () => this.runObserve(request),
|
|
@@ -782,6 +782,7 @@ export interface PromotionStorageProvider {
|
|
|
782
782
|
* back to its origin (matches the runtime extraction pipeline).
|
|
783
783
|
*/
|
|
784
784
|
lineage: string[];
|
|
785
|
+
sourceConnector?: string;
|
|
785
786
|
}
|
|
786
787
|
): Promise<string>;
|
|
787
788
|
}
|
|
@@ -918,6 +919,7 @@ export async function promoteMemory(options: PromoteMemoryOptions): Promise<Memo
|
|
|
918
919
|
actor: options.actor,
|
|
919
920
|
validAt: sourceMemory.frontmatter.valid_at,
|
|
920
921
|
lineage: [options.sourceMemoryId],
|
|
922
|
+
...(sourceMemory.frontmatter.sourceConnector ? { sourceConnector: sourceMemory.frontmatter.sourceConnector } : {}),
|
|
921
923
|
});
|
|
922
924
|
target.promoted = true;
|
|
923
925
|
target.promotedMemoryId = promotedId;
|
package/src/buffer.ts
CHANGED
|
@@ -632,6 +632,7 @@ export class SmartBuffer {
|
|
|
632
632
|
if (typeof t.persistProcessedFingerprint === "boolean") {
|
|
633
633
|
copy.persistProcessedFingerprint = t.persistProcessedFingerprint;
|
|
634
634
|
}
|
|
635
|
+
if (typeof t.sourceConnector === "string") copy.sourceConnector = t.sourceConnector;
|
|
635
636
|
return copy;
|
|
636
637
|
});
|
|
637
638
|
}
|
|
@@ -791,6 +792,9 @@ function copyBufferTurn(turn: BufferTurn): BufferTurn {
|
|
|
791
792
|
if (typeof turn.persistProcessedFingerprint === "boolean") {
|
|
792
793
|
copy.persistProcessedFingerprint = turn.persistProcessedFingerprint;
|
|
793
794
|
}
|
|
795
|
+
if (typeof turn.sourceConnector === "string") {
|
|
796
|
+
copy.sourceConnector = turn.sourceConnector;
|
|
797
|
+
}
|
|
794
798
|
return copy;
|
|
795
799
|
}
|
|
796
800
|
|
|
@@ -804,7 +808,8 @@ function bufferTurnsEqual(left: BufferTurn | undefined, right: BufferTurn): bool
|
|
|
804
808
|
left.logicalSessionKey === right.logicalSessionKey &&
|
|
805
809
|
left.providerThreadId === right.providerThreadId &&
|
|
806
810
|
left.turnFingerprint === right.turnFingerprint &&
|
|
807
|
-
left.persistProcessedFingerprint === right.persistProcessedFingerprint
|
|
811
|
+
left.persistProcessedFingerprint === right.persistProcessedFingerprint &&
|
|
812
|
+
left.sourceConnector === right.sourceConnector
|
|
808
813
|
);
|
|
809
814
|
}
|
|
810
815
|
|
package/src/bulk-import/types.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
// ---------------------------------------------------------------------------
|
|
4
4
|
|
|
5
5
|
import { parseIsoOffsetTimestamp } from "../utils/iso-timestamp.js";
|
|
6
|
+
import type { SourceConnectorProvenance } from "../types.js";
|
|
6
7
|
|
|
7
8
|
export interface BulkImportSource {
|
|
8
9
|
turns: ImportTurn[];
|
|
@@ -14,7 +15,7 @@ export interface BulkImportSource {
|
|
|
14
15
|
};
|
|
15
16
|
}
|
|
16
17
|
|
|
17
|
-
export interface ImportTurn {
|
|
18
|
+
export interface ImportTurn extends SourceConnectorProvenance {
|
|
18
19
|
role: "user" | "assistant" | "other";
|
|
19
20
|
content: string;
|
|
20
21
|
timestamp: string;
|
|
@@ -95,13 +95,13 @@ function makeCardMemory(overrides: {
|
|
|
95
95
|
interface StubStorage extends ArchitectureSurfaceStorage {
|
|
96
96
|
memories: MemoryFile[];
|
|
97
97
|
written: Array<{ category: string; content: string; options: Record<string, unknown> }>;
|
|
98
|
-
updated: Array<{ id: string; content: string }>;
|
|
98
|
+
updated: Array<{ id: string; content: string; options: Record<string, unknown> }>;
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
function makeStubStorage(initialMemories: MemoryFile[] = []): StubStorage {
|
|
102
102
|
const allMemories: MemoryFile[] = [...initialMemories];
|
|
103
103
|
const written: Array<{ category: string; content: string; options: Record<string, unknown> }> = [];
|
|
104
|
-
const updated: Array<{ id: string; content: string }> = [];
|
|
104
|
+
const updated: Array<{ id: string; content: string; options: Record<string, unknown> }> = [];
|
|
105
105
|
return {
|
|
106
106
|
dir: "/synthetic/memory",
|
|
107
107
|
namespace: "default",
|
|
@@ -119,10 +119,17 @@ function makeStubStorage(initialMemories: MemoryFile[] = []): StubStorage {
|
|
|
119
119
|
});
|
|
120
120
|
return { id: id, tombstoneBlocked: false };
|
|
121
121
|
},
|
|
122
|
-
async updateMemory(id, newContent) {
|
|
123
|
-
updated.push({ id, content: newContent });
|
|
122
|
+
async updateMemory(id, newContent, options) {
|
|
123
|
+
updated.push({ id, content: newContent, options: options ?? {} });
|
|
124
124
|
const m = allMemories.find((mem) => mem.frontmatter.id === id);
|
|
125
|
-
if (m)
|
|
125
|
+
if (m) {
|
|
126
|
+
m.content = newContent;
|
|
127
|
+
// Apply sourceConnector backfill to the in-memory frontmatter so
|
|
128
|
+
// tests can verify the caller's intent matches what reaches storage.
|
|
129
|
+
if (options?.sourceConnector) {
|
|
130
|
+
(m.frontmatter as unknown as Record<string, unknown>).sourceConnector = options.sourceConnector;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
126
133
|
return !!m;
|
|
127
134
|
},
|
|
128
135
|
};
|
|
@@ -603,3 +610,70 @@ test("MCP surface: remnic.coding_architecture alias dispatches identically", asy
|
|
|
603
610
|
assert.equal(calls.length, 1, "service.codingArchitecture called exactly once via alias");
|
|
604
611
|
assert.equal(calls[0]?.subcommand, "get");
|
|
605
612
|
});
|
|
613
|
+
|
|
614
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
615
|
+
// Regression: sourceConnector provenance through updateMemory (codex finding)
|
|
616
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
617
|
+
|
|
618
|
+
test("refresh: updateMemory backfills sourceConnector when connector provided", async () => {
|
|
619
|
+
// Seed an existing card WITHOUT sourceConnector (pre-provenance card).
|
|
620
|
+
const storage = makeStubStorage([
|
|
621
|
+
makeCardMemory({
|
|
622
|
+
content: "# Old card — pre-provenance",
|
|
623
|
+
frontmatter: { id: "old-card" },
|
|
624
|
+
}),
|
|
625
|
+
]);
|
|
626
|
+
const ctx = makeContext({
|
|
627
|
+
resolveStorage: async () => storage,
|
|
628
|
+
sourceConnector: "chatgpt",
|
|
629
|
+
});
|
|
630
|
+
await handleCodingArchitecture({ subcommand: "refresh", sessionKey: "s1" }, ctx);
|
|
631
|
+
// updateMemory must have been called with sourceConnector in the options.
|
|
632
|
+
assert.equal(storage.updated.length, 1, "updateMemory called once");
|
|
633
|
+
assert.equal(
|
|
634
|
+
storage.updated[0]!.options.sourceConnector,
|
|
635
|
+
"chatgpt",
|
|
636
|
+
"sourceConnector must reach updateMemory options",
|
|
637
|
+
);
|
|
638
|
+
});
|
|
639
|
+
|
|
640
|
+
test("refresh: updateMemory omits sourceConnector when no connector in context", async () => {
|
|
641
|
+
// Existing card, no connector in the context — updateMemory must still
|
|
642
|
+
// succeed without breaking frontmatter.
|
|
643
|
+
const storage = makeStubStorage([
|
|
644
|
+
makeCardMemory({
|
|
645
|
+
content: "# Existing card",
|
|
646
|
+
frontmatter: { id: "existing-card" },
|
|
647
|
+
}),
|
|
648
|
+
]);
|
|
649
|
+
const ctx = makeContext({ resolveStorage: async () => storage });
|
|
650
|
+
await handleCodingArchitecture({ subcommand: "refresh", sessionKey: "s1" }, ctx);
|
|
651
|
+
assert.equal(storage.updated.length, 1, "updateMemory called once");
|
|
652
|
+
assert.equal(
|
|
653
|
+
storage.updated[0]!.options.sourceConnector,
|
|
654
|
+
undefined,
|
|
655
|
+
"no sourceConnector when context has none",
|
|
656
|
+
);
|
|
657
|
+
});
|
|
658
|
+
|
|
659
|
+
test("refresh: updateMemory retains existing sourceConnector via frontmatter spread", async () => {
|
|
660
|
+
// Existing card already HAS sourceConnector — updateMemory's frontmatter
|
|
661
|
+
// spread preserves it even when the refresh call doesn't pass it again.
|
|
662
|
+
const storage = makeStubStorage([
|
|
663
|
+
makeCardMemory({
|
|
664
|
+
content: "# Card with connector",
|
|
665
|
+
frontmatter: { id: "connector-card", sourceConnector: "openclaw" },
|
|
666
|
+
}),
|
|
667
|
+
]);
|
|
668
|
+
const ctx = makeContext({ resolveStorage: async () => storage });
|
|
669
|
+
const result = await handleCodingArchitecture({ subcommand: "refresh", sessionKey: "s1" }, ctx);
|
|
670
|
+
if (result.subcommand !== "refresh") return;
|
|
671
|
+
assert.equal(result.refreshed, true);
|
|
672
|
+
// The card memory in storage must still have its sourceConnector.
|
|
673
|
+
const card = storage.memories.find((m) => m.frontmatter.id === "connector-card");
|
|
674
|
+
assert.equal(
|
|
675
|
+
card?.frontmatter.sourceConnector,
|
|
676
|
+
"openclaw",
|
|
677
|
+
"existing sourceConnector preserved through updateMemory",
|
|
678
|
+
);
|
|
679
|
+
});
|
|
@@ -158,12 +158,13 @@ export interface ArchitectureSurfaceStorage {
|
|
|
158
158
|
source?: string;
|
|
159
159
|
status?: MemoryStatus;
|
|
160
160
|
structuredAttributes?: Record<string, string>;
|
|
161
|
+
sourceConnector?: string;
|
|
161
162
|
},
|
|
162
163
|
): Promise<MemoryWriteResult>;
|
|
163
164
|
updateMemory(
|
|
164
165
|
id: string,
|
|
165
166
|
newContent: string,
|
|
166
|
-
options?: { supersedes?: string; lineage?: string[]; actor?: string },
|
|
167
|
+
options?: { supersedes?: string; lineage?: string[]; actor?: string; sourceConnector?: string },
|
|
167
168
|
): Promise<boolean>;
|
|
168
169
|
}
|
|
169
170
|
|
|
@@ -205,6 +206,8 @@ export interface ArchitectureSurfaceContext {
|
|
|
205
206
|
versioning: ArchitectureVersioningHook;
|
|
206
207
|
/** Throw the surface-appropriate input-validation error. */
|
|
207
208
|
throwInputError(message: string): never;
|
|
209
|
+
/** Server-resolved connector identity for provenance. */
|
|
210
|
+
readonly sourceConnector?: string;
|
|
208
211
|
}
|
|
209
212
|
|
|
210
213
|
// ──────────────────────────────────────────────────────────────────────────
|
|
@@ -311,6 +314,7 @@ async function architectureRefresh(
|
|
|
311
314
|
await ctx.versioning.snapshotIfExists(existing);
|
|
312
315
|
const updated = await storage.updateMemory(existing.frontmatter.id, cardContent, {
|
|
313
316
|
actor: "coding-architecture-refresh",
|
|
317
|
+
...(ctx.sourceConnector ? { sourceConnector: ctx.sourceConnector } : {}),
|
|
314
318
|
});
|
|
315
319
|
if (!updated) {
|
|
316
320
|
log.warn(
|
|
@@ -320,6 +324,7 @@ async function architectureRefresh(
|
|
|
320
324
|
confidence: 1.0,
|
|
321
325
|
tags,
|
|
322
326
|
source: "coding-architecture",
|
|
327
|
+
...(ctx.sourceConnector ? { sourceConnector: ctx.sourceConnector } : {}),
|
|
323
328
|
structuredAttributes: { cardKind: ARCHITECTURE_CARD_KIND },
|
|
324
329
|
});
|
|
325
330
|
log.info(
|
|
@@ -344,6 +349,7 @@ async function architectureRefresh(
|
|
|
344
349
|
confidence: 1.0,
|
|
345
350
|
tags,
|
|
346
351
|
source: "coding-architecture",
|
|
352
|
+
...(ctx.sourceConnector ? { sourceConnector: ctx.sourceConnector } : {}),
|
|
347
353
|
structuredAttributes: { cardKind: ARCHITECTURE_CARD_KIND },
|
|
348
354
|
});
|
|
349
355
|
log.info(
|
|
@@ -208,6 +208,8 @@ export interface DecisionSurfaceContext {
|
|
|
208
208
|
resolveStorage(request: DecisionSurfaceRequest): Promise<DecisionSurfaceStorage>;
|
|
209
209
|
/** Throw the surface-appropriate input-validation error. */
|
|
210
210
|
throwInputError(message: string): never;
|
|
211
|
+
/** Server-resolved connector identity for provenance stamping. */
|
|
212
|
+
readonly sourceConnector?: string;
|
|
211
213
|
}
|
|
212
214
|
|
|
213
215
|
/**
|
|
@@ -358,6 +360,7 @@ async function decisionRecord(
|
|
|
358
360
|
// persist inactive decision statuses in frontmatter).
|
|
359
361
|
structuredAttributes: { decisionStatus: status },
|
|
360
362
|
status: isActive ? undefined : "archived",
|
|
363
|
+
...(ctx.sourceConnector ? { sourceConnector: ctx.sourceConnector } : {}),
|
|
361
364
|
});
|
|
362
365
|
log.info(
|
|
363
366
|
`access-write op=coding_decision/record memoryId=${memoryId} status=${status}`,
|
|
@@ -419,6 +422,7 @@ async function decisionSupersede(
|
|
|
419
422
|
// the replacement so list/get projection and QMD indexing see the
|
|
420
423
|
// authoritative marker (review: supersede omits decisionStatus attrs).
|
|
421
424
|
structuredAttributes: { decisionStatus: "accepted" },
|
|
425
|
+
...(ctx.sourceConnector ? { sourceConnector: ctx.sourceConnector } : {}),
|
|
422
426
|
},
|
|
423
427
|
);
|
|
424
428
|
if (replacementBlocked) {
|