@remnic/core 9.65.4 → 9.65.6
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 +1 -1
- package/dist/access-admin-ops-surface.js +24 -24
- package/dist/access-audit.js +2 -2
- package/dist/access-authorization-probe.d.ts +1 -1
- package/dist/access-authorization-probe.js +25 -25
- package/dist/access-boundary.d.ts +1 -1
- package/dist/access-boundary.js +24 -24
- package/dist/access-cli.js +69 -68
- package/dist/access-cli.js.map +1 -1
- package/dist/access-extraction-force-flush.d.ts +1 -1
- package/dist/access-extraction-force-flush.js +24 -24
- package/dist/access-http-lcm-compaction.d.ts +1 -1
- package/dist/access-http-lifecycle-flush.d.ts +1 -1
- package/dist/access-http-offline-stream.d.ts +1 -1
- package/dist/access-http-query.js +26 -26
- package/dist/access-http.d.ts +2 -2
- package/dist/access-http.js +37 -37
- package/dist/access-identity-continuity-surface.js +24 -24
- package/dist/access-lcm-surface.d.ts +1 -1
- package/dist/access-lcm-surface.js +24 -24
- package/dist/access-mcp.d.ts +1 -1
- package/dist/access-mcp.js +30 -30
- package/dist/access-namespace-preflight.js +24 -24
- package/dist/access-observe-write-surface.d.ts +1 -1
- package/dist/access-observe-write-surface.js +24 -24
- package/dist/access-operations-batch.js +26 -26
- package/dist/access-operations.d.ts +6 -6
- package/dist/access-operations.js +29 -29
- package/dist/access-recall-concurrency.d.ts +1 -1
- package/dist/access-recall-concurrency.js +24 -24
- package/dist/access-recall-response.d.ts +1 -1
- package/dist/access-recall-response.js +24 -24
- package/dist/access-recall-surface.d.ts +1 -1
- package/dist/access-recall-surface.js +24 -24
- package/dist/access-schema.d.ts +83 -83
- package/dist/access-schema.js +3 -3
- package/dist/access-service-helpers.d.ts +1 -1
- package/dist/access-service.d.ts +1 -1
- package/dist/access-service.js +24 -24
- package/dist/access-surface-catalog.d.ts +1 -1
- package/dist/access-surface-catalog.js +26 -26
- package/dist/briefing.js +10 -10
- package/dist/{capsule-crypto-YO5QJ6L3.js → capsule-crypto-GWVG7LGC.js} +2 -2
- package/dist/causal-consolidation.js +11 -11
- package/dist/{chunk-ZPOHEB5Z.js → chunk-2JHRCWHT.js} +37 -37
- package/dist/{chunk-BK5G2MHO.js → chunk-2RXUZVPU.js} +2 -2
- package/dist/{chunk-JPAKBNTM.js → chunk-3I22VWB3.js} +2 -2
- package/dist/{chunk-ECLJ4LA2.js → chunk-53MZQEBD.js} +2 -2
- package/dist/{chunk-HF5BUTI6.js → chunk-5GIZM4RX.js} +2 -2
- package/dist/{chunk-YHGCT462.js → chunk-5TG4MU2U.js} +4 -4
- package/dist/{chunk-VDX2J7OX.js → chunk-5W7CTZ2E.js} +4 -4
- package/dist/{chunk-IWKGOCL6.js → chunk-5W7MKXMU.js} +4 -4
- package/dist/{chunk-YHCBJULX.js → chunk-6FUMA6AA.js} +2 -2
- package/dist/{chunk-THVI4Y7X.js → chunk-6LS5OX3U.js} +5 -5
- package/dist/{chunk-TVVEYCNW.js → chunk-7K5Q6COX.js} +4 -4
- package/dist/{chunk-KPB2QHJZ.js → chunk-7OZSHBWK.js} +2 -2
- package/dist/{chunk-CQBIN77D.js → chunk-7SSRXEZJ.js} +2 -2
- package/dist/{chunk-NNBZS3DY.js → chunk-AG46P24C.js} +4 -4
- package/dist/{chunk-QJW4MZSW.js → chunk-AYAZWXJI.js} +2 -2
- package/dist/{chunk-WDXD6ITO.js → chunk-BXXOPKT5.js} +2 -2
- package/dist/{chunk-DJZWNKFO.js → chunk-D35XLYQ7.js} +10 -10
- package/dist/{chunk-KOO37E4Y.js → chunk-DYO24BNB.js} +2 -2
- package/dist/{chunk-DORFF5N5.js → chunk-FEO2CDXR.js} +2 -2
- package/dist/{chunk-IURMJBGP.js → chunk-HWVNYNIV.js} +2 -2
- package/dist/{chunk-OZDFB22S.js → chunk-IDQ6DKXC.js} +3 -3
- package/dist/{chunk-J3ATBB7M.js → chunk-IF4EY26E.js} +2 -2
- package/dist/{chunk-W675UJCZ.js → chunk-IRXMJLTW.js} +2 -2
- package/dist/{chunk-DUZARALI.js → chunk-JFWZRUKP.js} +3 -3
- package/dist/{chunk-DUEDOYZD.js → chunk-JGG5HVI2.js} +2 -2
- package/dist/{chunk-3NH3VP3U.js → chunk-KBOG7FJV.js} +2 -2
- package/dist/{chunk-UCKG36HO.js → chunk-LSYD7GHZ.js} +2 -2
- package/dist/{chunk-6433HV72.js → chunk-MVIYRRVJ.js} +5 -5
- package/dist/{chunk-GHD2LLG4.js → chunk-NLUCDKLT.js} +2 -2
- package/dist/{chunk-TJFI3K2O.js → chunk-O4BAGJDN.js} +2 -2
- package/dist/{chunk-LYBIHM4N.js → chunk-OMZLBT4B.js} +4 -4
- package/dist/{chunk-BXLOS5AJ.js → chunk-OWHERGF2.js} +2 -2
- package/dist/{chunk-I23ZHYSL.js → chunk-PGW64IFQ.js} +2 -2
- package/dist/{chunk-AZLLH6YA.js → chunk-PNAGNVGK.js} +43 -48
- package/dist/chunk-PNAGNVGK.js.map +1 -0
- package/dist/{chunk-YDKF4MSJ.js → chunk-QMZY3GG6.js} +3 -3
- package/dist/{chunk-N37X5RU7.js → chunk-RACZB5HT.js} +4 -4
- package/dist/{chunk-YZJM6CLF.js → chunk-ROEAEANL.js} +7 -7
- package/dist/{chunk-SR5LNI6Q.js → chunk-RQ2EQRRR.js} +4 -4
- package/dist/chunk-SDEPLF7V.js +325 -0
- package/dist/chunk-SDEPLF7V.js.map +1 -0
- package/dist/{chunk-2IXQSGCU.js → chunk-SR7JIRAR.js} +2 -2
- package/dist/{chunk-OCCHUEZB.js → chunk-TWBQQ3FT.js} +2 -2
- package/dist/{chunk-NLEH4RTB.js → chunk-US4IRASK.js} +2 -2
- package/dist/{chunk-DQEMWVMT.js → chunk-UVYI6VIX.js} +1 -1
- package/dist/{chunk-PTZQYCJ4.js → chunk-W6J4POB6.js} +2 -2
- package/dist/{chunk-OU34IQXV.js → chunk-X2DWBWOX.js} +2 -2
- package/dist/{chunk-2MVTAIL3.js → chunk-XAWIL7TC.js} +2 -2
- package/dist/{chunk-UFR6HX7A.js → chunk-XUZ5CIEE.js} +1 -1
- package/dist/{chunk-GIC6BASP.js → chunk-XZBXINXZ.js} +4 -4
- package/dist/{chunk-XGM3VQWG.js → chunk-YUTTMSC7.js} +13 -13
- package/dist/{chunk-3JZBPTLD.js → chunk-YWBOOBDP.js} +38 -38
- package/dist/{chunk-KFIOPZ25.js → chunk-ZXUZ54Z5.js} +2 -2
- package/dist/{cli-DO3i14pM.d.ts → cli-Bfgo0n1L.d.ts} +2 -2
- package/dist/cli.d.ts +3 -3
- package/dist/cli.js +53 -53
- package/dist/compounding/engine.js +10 -10
- package/dist/connectors/codex-materialize-runner.js +10 -10
- package/dist/connectors/index.js +10 -10
- package/dist/convergence-refresh.js +12 -12
- package/dist/corpus-watermark.js +12 -12
- package/dist/entity-retrieval.js +10 -10
- package/dist/external-wiki-access.d.ts +1 -1
- package/dist/external-wiki-access.js +25 -25
- package/dist/external-wiki-mcp-tools.d.ts +1 -1
- package/dist/extraction.js +10 -10
- package/dist/harmonic-retrieval.js +1 -1
- package/dist/index.d.ts +681 -680
- package/dist/index.js +92 -76
- package/dist/lcm/index.js +3 -3
- package/dist/maintenance/memory-governance.js +10 -10
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +10 -10
- package/dist/maintenance/rebuild-memory-projection.js +11 -11
- package/dist/mcp-memory-inspector-app.d.ts +1 -1
- package/dist/memory-controller.d.ts +203 -0
- package/dist/memory-controller.js +23 -0
- package/dist/memory-controller.js.map +1 -0
- package/dist/memory-subject-cli.d.ts +1 -1
- package/dist/memory-subject.d.ts +1 -1
- package/dist/namespaces/migrate.js +11 -11
- package/dist/namespaces/search.js +7 -7
- package/dist/namespaces/storage.js +10 -10
- package/dist/operator-doctor-corpus.js +13 -13
- package/dist/operator-toolkit.js +18 -18
- package/dist/orchestration/maintenance.js +16 -16
- package/dist/orchestrator.js +69 -68
- package/dist/{public-http-DhIXYBYI.d.ts → public-http-BP3VQDl5.d.ts} +1 -1
- package/dist/schemas.d.ts +124 -124
- package/dist/search/factory.js +6 -6
- package/dist/search/index.js +11 -11
- package/dist/search/lancedb-backend.js +2 -2
- package/dist/search/meilisearch-backend.js +2 -2
- package/dist/search/orama-backend.js +2 -2
- package/dist/semantic-consolidation.js +11 -11
- package/dist/semantic-rule-promotion.js +10 -10
- package/dist/semantic-rule-verifier.js +10 -10
- package/dist/shared-context/manager.d.ts +6 -6
- package/dist/source-agent-qualifier.js +10 -10
- package/dist/storage.js +9 -9
- package/dist/support-passport/index.d.ts +4 -4
- package/dist/support-passport/index.js +27 -27
- package/dist/transfer/backup.js +2 -2
- package/dist/transfer/capsule-export.js +2 -2
- package/dist/transfer/capsule-import.js +2 -2
- package/dist/transfer/types.d.ts +78 -78
- package/dist/verified-recall.js +10 -10
- package/dist/who-knows-cli.d.ts +1 -1
- package/dist/who-knows-cli.js +11 -11
- package/dist/who-knows.d.ts +1 -1
- package/dist/who-knows.js +10 -10
- package/package.json +2 -2
- package/src/index.ts +3 -0
- package/src/memory-controller.test.ts +347 -0
- package/src/memory-controller.ts +547 -0
- package/src/review/frontmatter.test.ts +15 -0
- package/src/review/frontmatter.ts +20 -0
- package/src/review/review-deck-snapshot.ts +4 -20
- package/src/review/review-deck.ts +1 -12
- package/dist/chunk-AZLLH6YA.js.map +0 -1
- package/dist/{access-service-DqPa3hy4.d.ts → access-service-sbiNS5UB.d.ts} +64 -64
- /package/dist/{capsule-crypto-YO5QJ6L3.js.map → capsule-crypto-GWVG7LGC.js.map} +0 -0
- /package/dist/{chunk-ZPOHEB5Z.js.map → chunk-2JHRCWHT.js.map} +0 -0
- /package/dist/{chunk-BK5G2MHO.js.map → chunk-2RXUZVPU.js.map} +0 -0
- /package/dist/{chunk-JPAKBNTM.js.map → chunk-3I22VWB3.js.map} +0 -0
- /package/dist/{chunk-ECLJ4LA2.js.map → chunk-53MZQEBD.js.map} +0 -0
- /package/dist/{chunk-HF5BUTI6.js.map → chunk-5GIZM4RX.js.map} +0 -0
- /package/dist/{chunk-YHGCT462.js.map → chunk-5TG4MU2U.js.map} +0 -0
- /package/dist/{chunk-VDX2J7OX.js.map → chunk-5W7CTZ2E.js.map} +0 -0
- /package/dist/{chunk-IWKGOCL6.js.map → chunk-5W7MKXMU.js.map} +0 -0
- /package/dist/{chunk-YHCBJULX.js.map → chunk-6FUMA6AA.js.map} +0 -0
- /package/dist/{chunk-THVI4Y7X.js.map → chunk-6LS5OX3U.js.map} +0 -0
- /package/dist/{chunk-TVVEYCNW.js.map → chunk-7K5Q6COX.js.map} +0 -0
- /package/dist/{chunk-KPB2QHJZ.js.map → chunk-7OZSHBWK.js.map} +0 -0
- /package/dist/{chunk-CQBIN77D.js.map → chunk-7SSRXEZJ.js.map} +0 -0
- /package/dist/{chunk-NNBZS3DY.js.map → chunk-AG46P24C.js.map} +0 -0
- /package/dist/{chunk-QJW4MZSW.js.map → chunk-AYAZWXJI.js.map} +0 -0
- /package/dist/{chunk-WDXD6ITO.js.map → chunk-BXXOPKT5.js.map} +0 -0
- /package/dist/{chunk-DJZWNKFO.js.map → chunk-D35XLYQ7.js.map} +0 -0
- /package/dist/{chunk-KOO37E4Y.js.map → chunk-DYO24BNB.js.map} +0 -0
- /package/dist/{chunk-DORFF5N5.js.map → chunk-FEO2CDXR.js.map} +0 -0
- /package/dist/{chunk-IURMJBGP.js.map → chunk-HWVNYNIV.js.map} +0 -0
- /package/dist/{chunk-OZDFB22S.js.map → chunk-IDQ6DKXC.js.map} +0 -0
- /package/dist/{chunk-J3ATBB7M.js.map → chunk-IF4EY26E.js.map} +0 -0
- /package/dist/{chunk-W675UJCZ.js.map → chunk-IRXMJLTW.js.map} +0 -0
- /package/dist/{chunk-DUZARALI.js.map → chunk-JFWZRUKP.js.map} +0 -0
- /package/dist/{chunk-DUEDOYZD.js.map → chunk-JGG5HVI2.js.map} +0 -0
- /package/dist/{chunk-3NH3VP3U.js.map → chunk-KBOG7FJV.js.map} +0 -0
- /package/dist/{chunk-UCKG36HO.js.map → chunk-LSYD7GHZ.js.map} +0 -0
- /package/dist/{chunk-6433HV72.js.map → chunk-MVIYRRVJ.js.map} +0 -0
- /package/dist/{chunk-GHD2LLG4.js.map → chunk-NLUCDKLT.js.map} +0 -0
- /package/dist/{chunk-TJFI3K2O.js.map → chunk-O4BAGJDN.js.map} +0 -0
- /package/dist/{chunk-LYBIHM4N.js.map → chunk-OMZLBT4B.js.map} +0 -0
- /package/dist/{chunk-BXLOS5AJ.js.map → chunk-OWHERGF2.js.map} +0 -0
- /package/dist/{chunk-I23ZHYSL.js.map → chunk-PGW64IFQ.js.map} +0 -0
- /package/dist/{chunk-YDKF4MSJ.js.map → chunk-QMZY3GG6.js.map} +0 -0
- /package/dist/{chunk-N37X5RU7.js.map → chunk-RACZB5HT.js.map} +0 -0
- /package/dist/{chunk-YZJM6CLF.js.map → chunk-ROEAEANL.js.map} +0 -0
- /package/dist/{chunk-SR5LNI6Q.js.map → chunk-RQ2EQRRR.js.map} +0 -0
- /package/dist/{chunk-2IXQSGCU.js.map → chunk-SR7JIRAR.js.map} +0 -0
- /package/dist/{chunk-OCCHUEZB.js.map → chunk-TWBQQ3FT.js.map} +0 -0
- /package/dist/{chunk-NLEH4RTB.js.map → chunk-US4IRASK.js.map} +0 -0
- /package/dist/{chunk-DQEMWVMT.js.map → chunk-UVYI6VIX.js.map} +0 -0
- /package/dist/{chunk-PTZQYCJ4.js.map → chunk-W6J4POB6.js.map} +0 -0
- /package/dist/{chunk-OU34IQXV.js.map → chunk-X2DWBWOX.js.map} +0 -0
- /package/dist/{chunk-2MVTAIL3.js.map → chunk-XAWIL7TC.js.map} +0 -0
- /package/dist/{chunk-UFR6HX7A.js.map → chunk-XUZ5CIEE.js.map} +0 -0
- /package/dist/{chunk-GIC6BASP.js.map → chunk-XZBXINXZ.js.map} +0 -0
- /package/dist/{chunk-XGM3VQWG.js.map → chunk-YUTTMSC7.js.map} +0 -0
- /package/dist/{chunk-3JZBPTLD.js.map → chunk-YWBOOBDP.js.map} +0 -0
- /package/dist/{chunk-KFIOPZ25.js.map → chunk-ZXUZ54Z5.js.map} +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
hasMemoryData
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-JGG5HVI2.js";
|
|
4
4
|
import {
|
|
5
5
|
resolveNamespaceStorageRoot
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-7SSRXEZJ.js";
|
|
7
7
|
import {
|
|
8
8
|
getConfiguredNamespaces
|
|
9
9
|
} from "./chunk-Q57GOHLF.js";
|
|
@@ -724,4 +724,4 @@ export {
|
|
|
724
724
|
runNamespaceMaintenancePlan,
|
|
725
725
|
runNamespaceMaintenanceBatchPlan
|
|
726
726
|
};
|
|
727
|
-
//# sourceMappingURL=chunk-
|
|
727
|
+
//# sourceMappingURL=chunk-QMZY3GG6.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
scanMemoryDir
|
|
3
|
-
} from "./chunk-W7IGLX4G.js";
|
|
4
1
|
import {
|
|
5
2
|
isSearchAborted,
|
|
6
3
|
throwIfSearchAborted
|
|
7
4
|
} from "./chunk-GUMZC2BO.js";
|
|
5
|
+
import {
|
|
6
|
+
scanMemoryDir
|
|
7
|
+
} from "./chunk-W7IGLX4G.js";
|
|
8
8
|
import {
|
|
9
9
|
reportSearchDegradation,
|
|
10
10
|
resolveEnsureCollectionArgs
|
|
@@ -508,4 +508,4 @@ function isMissingVectorProviderColumnError(err) {
|
|
|
508
508
|
export {
|
|
509
509
|
LanceDbBackend
|
|
510
510
|
};
|
|
511
|
-
//# sourceMappingURL=chunk-
|
|
511
|
+
//# sourceMappingURL=chunk-RACZB5HT.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
readNamespaceMaintenanceLastRanStatuses,
|
|
4
4
|
readNamespaceMaintenanceStatuses,
|
|
5
5
|
runNamespaceMaintenancePlan
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-QMZY3GG6.js";
|
|
7
7
|
import {
|
|
8
8
|
analyzeSessionIntegrity,
|
|
9
9
|
applySessionRepair,
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
} from "./chunk-CMTINOFS.js";
|
|
15
15
|
import {
|
|
16
16
|
summarizeCorpusAndReplica
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-FEO2CDXR.js";
|
|
18
18
|
import {
|
|
19
19
|
readJudgeVerdictStats
|
|
20
20
|
} from "./chunk-OZKOPQCM.js";
|
|
@@ -41,20 +41,20 @@ import {
|
|
|
41
41
|
} from "./chunk-DPNXADEI.js";
|
|
42
42
|
import {
|
|
43
43
|
readAggregateExtractionWatermark
|
|
44
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-XAWIL7TC.js";
|
|
45
45
|
import {
|
|
46
46
|
listMemoryGovernanceRuns,
|
|
47
47
|
readMemoryGovernanceRunArtifact
|
|
48
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-DYO24BNB.js";
|
|
49
49
|
import {
|
|
50
50
|
listNamespaces
|
|
51
|
-
} from "./chunk-
|
|
51
|
+
} from "./chunk-IDQ6DKXC.js";
|
|
52
52
|
import {
|
|
53
53
|
analyzeGraphHealth
|
|
54
54
|
} from "./chunk-BIJAWZYW.js";
|
|
55
55
|
import {
|
|
56
56
|
StorageManager
|
|
57
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-6LS5OX3U.js";
|
|
58
58
|
import {
|
|
59
59
|
lintWorkspaceFiles
|
|
60
60
|
} from "./chunk-DM2T26WE.js";
|
|
@@ -1683,4 +1683,4 @@ export {
|
|
|
1683
1683
|
runBenchmarkRecall,
|
|
1684
1684
|
runOperatorRepair
|
|
1685
1685
|
};
|
|
1686
|
-
//# sourceMappingURL=chunk-
|
|
1686
|
+
//# sourceMappingURL=chunk-ROEAEANL.js.map
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
} from "./chunk-T4WDJPEZ.js";
|
|
16
16
|
import {
|
|
17
17
|
validateRequest
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-IRXMJLTW.js";
|
|
19
19
|
import {
|
|
20
20
|
MCP_ADMIN_OPS_MIGRATED_OPERATIONS,
|
|
21
21
|
MCP_ADMIN_OPS_TOOLS,
|
|
@@ -26,10 +26,10 @@ import {
|
|
|
26
26
|
} from "./chunk-FC7TIRFS.js";
|
|
27
27
|
import {
|
|
28
28
|
getOperation
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-PNAGNVGK.js";
|
|
30
30
|
import {
|
|
31
31
|
WHO_KNOWS_MCP_TOOLS
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-ZXUZ54Z5.js";
|
|
33
33
|
import {
|
|
34
34
|
PROMOTION_CANDIDATES_MCP_TOOLS
|
|
35
35
|
} from "./chunk-RIAM7DND.js";
|
|
@@ -3964,4 +3964,4 @@ export {
|
|
|
3964
3964
|
MCP_MIGRATED_OPERATIONS,
|
|
3965
3965
|
EngramMcpServer
|
|
3966
3966
|
};
|
|
3967
|
-
//# sourceMappingURL=chunk-
|
|
3967
|
+
//# sourceMappingURL=chunk-RQ2EQRRR.js.map
|
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
import {
|
|
2
|
+
evaluateMemoryActionPolicy
|
|
3
|
+
} from "./chunk-H63EDPFJ.js";
|
|
4
|
+
import {
|
|
5
|
+
planRecallMode
|
|
6
|
+
} from "./chunk-CSAKJVXW.js";
|
|
7
|
+
|
|
8
|
+
// src/memory-controller.ts
|
|
9
|
+
import { createHash, randomUUID } from "crypto";
|
|
10
|
+
var NO_OP_FLOOR = 0.35;
|
|
11
|
+
var REVIEW_ONLY_ACTIONS = { discard: true };
|
|
12
|
+
function controllerConfigHash(config) {
|
|
13
|
+
return sha256(
|
|
14
|
+
JSON.stringify({
|
|
15
|
+
mode: config.mode,
|
|
16
|
+
reportVersion: config.reportVersion,
|
|
17
|
+
evidenceMaxAgeMs: config.evidenceMaxAgeMs,
|
|
18
|
+
minPairedSeeds: config.minPairedSeeds,
|
|
19
|
+
shadowMinRecords: config.shadowMinRecords
|
|
20
|
+
})
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
function hashControllerState(state) {
|
|
24
|
+
return sha256(
|
|
25
|
+
JSON.stringify({
|
|
26
|
+
prompt: state.prompt,
|
|
27
|
+
persistentMemoryCandidate: state.persistentMemoryCandidate ?? null,
|
|
28
|
+
contextMessages: state.contextMessages ?? null,
|
|
29
|
+
contextPressure: state.contextPressure ?? null
|
|
30
|
+
})
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
function computeEvidenceReportHash(fields) {
|
|
34
|
+
return sha256(JSON.stringify(fields));
|
|
35
|
+
}
|
|
36
|
+
function verifyEvidenceReport(report) {
|
|
37
|
+
return computeEvidenceReportHash({
|
|
38
|
+
status: report.status,
|
|
39
|
+
version: report.version,
|
|
40
|
+
configHash: report.configHash,
|
|
41
|
+
generatedAt: report.generatedAt
|
|
42
|
+
}) === report.reportHash;
|
|
43
|
+
}
|
|
44
|
+
function sha256(input) {
|
|
45
|
+
return createHash("sha256").update(input).digest("hex");
|
|
46
|
+
}
|
|
47
|
+
function clampScore(value) {
|
|
48
|
+
if (!Number.isFinite(value)) return Number.NaN;
|
|
49
|
+
return Math.max(0, Math.min(1, value));
|
|
50
|
+
}
|
|
51
|
+
function chooseAction(input) {
|
|
52
|
+
const { state, activeContextAdapter, runtimeValues, utilityValues } = input;
|
|
53
|
+
const recallMode = planRecallMode(state.prompt ?? "");
|
|
54
|
+
const recallScore = recallMode === "no_recall" ? 0 : recallMode === "minimal" ? 0.4 : 0.6 + 0.2 * (runtimeValues?.recencyWeight ?? 0);
|
|
55
|
+
let persistentScore = 0;
|
|
56
|
+
const candidate = state.persistentMemoryCandidate;
|
|
57
|
+
if (candidate) {
|
|
58
|
+
const policy = evaluateMemoryActionPolicy({
|
|
59
|
+
action: candidate.action,
|
|
60
|
+
eligibility: candidate.eligibility,
|
|
61
|
+
options: { actionsEnabled: true, maxCompressionTokensPerHour: Number.POSITIVE_INFINITY }
|
|
62
|
+
});
|
|
63
|
+
if (policy.decision === "allow") {
|
|
64
|
+
persistentScore = 0.4 + 0.4 * (candidate.eligibility.confidence ?? 0);
|
|
65
|
+
} else if (policy.decision === "defer") {
|
|
66
|
+
persistentScore = 0.2;
|
|
67
|
+
}
|
|
68
|
+
if (utilityValues && utilityValues.rankingSuppressMultiplier > 1) {
|
|
69
|
+
persistentScore *= 1 / utilityValues.rankingSuppressMultiplier;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
let contextScore = 0;
|
|
73
|
+
let contextPlan = null;
|
|
74
|
+
const pressure = state.contextPressure;
|
|
75
|
+
if (activeContextAdapter && typeof pressure === "number" && Number.isFinite(pressure) && pressure > 0.5) {
|
|
76
|
+
contextPlan = activeContextAdapter.plan(state.contextMessages ?? []);
|
|
77
|
+
if (contextPlan && contextPlan.messageIds.length > 0) {
|
|
78
|
+
contextScore = 0.3 + 0.5 * Math.max(0, Math.min(1, pressure));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
const scores = {
|
|
82
|
+
recall: clampScore(recallScore),
|
|
83
|
+
persistent_memory: clampScore(persistentScore),
|
|
84
|
+
active_context: clampScore(contextScore),
|
|
85
|
+
no_op: NO_OP_FLOOR
|
|
86
|
+
};
|
|
87
|
+
if (Object.values(scores).some((score) => !Number.isFinite(score) || score < 0 || score > 1)) {
|
|
88
|
+
return { choice: { family: "no_op" }, scores };
|
|
89
|
+
}
|
|
90
|
+
let choice = { family: "no_op" };
|
|
91
|
+
let best = scores.no_op;
|
|
92
|
+
if (scores.recall > best) {
|
|
93
|
+
best = scores.recall;
|
|
94
|
+
choice = { family: "recall", mode: recallMode };
|
|
95
|
+
}
|
|
96
|
+
if (scores.persistent_memory > best) {
|
|
97
|
+
best = scores.persistent_memory;
|
|
98
|
+
choice = {
|
|
99
|
+
family: "persistent_memory",
|
|
100
|
+
action: candidate.action,
|
|
101
|
+
eligibility: candidate.eligibility
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
if (scores.active_context > best) {
|
|
105
|
+
choice = { family: "active_context", plan: contextPlan };
|
|
106
|
+
}
|
|
107
|
+
return { choice, scores };
|
|
108
|
+
}
|
|
109
|
+
async function evaluateActiveGates(input) {
|
|
110
|
+
const { config, reportReader, recorder, consecutiveReceiptFailures, now } = input;
|
|
111
|
+
const reasons = [];
|
|
112
|
+
if (!reportReader) return ["no_report_reader"];
|
|
113
|
+
const evidence = await reportReader.read();
|
|
114
|
+
if (!evidence) return ["no_evidence"];
|
|
115
|
+
const { report, pairedSeed } = evidence;
|
|
116
|
+
if (report.status !== "pass") reasons.push("report_not_passing");
|
|
117
|
+
if (report.version !== config.reportVersion) reasons.push("report_version_mismatch");
|
|
118
|
+
if (report.configHash !== controllerConfigHash(config)) reasons.push("report_config_unbound");
|
|
119
|
+
if (!verifyEvidenceReport(report)) reasons.push("report_hash_invalid");
|
|
120
|
+
const reportGeneratedAt = Date.parse(report.generatedAt);
|
|
121
|
+
if (!Number.isFinite(reportGeneratedAt) || now.getTime() - reportGeneratedAt > config.evidenceMaxAgeMs) {
|
|
122
|
+
reasons.push("report_stale");
|
|
123
|
+
}
|
|
124
|
+
if (pairedSeed.status !== "pass") reasons.push("paired_seed_not_passing");
|
|
125
|
+
if (pairedSeed.seedCount < config.minPairedSeeds) reasons.push("paired_seed_count_low");
|
|
126
|
+
const seedGeneratedAt = Date.parse(pairedSeed.generatedAt);
|
|
127
|
+
if (!Number.isFinite(seedGeneratedAt) || now.getTime() - seedGeneratedAt > config.evidenceMaxAgeMs) {
|
|
128
|
+
reasons.push("paired_seed_stale");
|
|
129
|
+
}
|
|
130
|
+
const shadowRecords = recorder ? await recorder.countShadowRecords() : 0;
|
|
131
|
+
if (shadowRecords < config.shadowMinRecords) reasons.push("shadow_history_insufficient");
|
|
132
|
+
if (consecutiveReceiptFailures > 0) reasons.push("recent_receipt_failures");
|
|
133
|
+
return reasons;
|
|
134
|
+
}
|
|
135
|
+
var MemoryControllerCoordinator = class {
|
|
136
|
+
deps;
|
|
137
|
+
clock;
|
|
138
|
+
consecutiveReceiptFailures = 0;
|
|
139
|
+
constructor(deps) {
|
|
140
|
+
this.deps = deps;
|
|
141
|
+
this.clock = deps.clock ?? (() => /* @__PURE__ */ new Date());
|
|
142
|
+
}
|
|
143
|
+
async run(state) {
|
|
144
|
+
const decisionId = randomUUID();
|
|
145
|
+
const stateHash = hashControllerState(state);
|
|
146
|
+
const requestedMode = this.deps.config.mode;
|
|
147
|
+
if (requestedMode === "off") {
|
|
148
|
+
return {
|
|
149
|
+
decisionId,
|
|
150
|
+
requestedMode,
|
|
151
|
+
effectiveMode: "off",
|
|
152
|
+
stateHash,
|
|
153
|
+
choice: { family: "no_op" },
|
|
154
|
+
scores: { persistent_memory: 0, recall: 0, active_context: 0, no_op: 0 },
|
|
155
|
+
executed: false,
|
|
156
|
+
reviewOnly: false,
|
|
157
|
+
recorded: false,
|
|
158
|
+
demotionReasons: ["mode_off"]
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
const [runtimeValues, utilityValues] = await Promise.all([
|
|
162
|
+
this.deps.policyRuntime?.loadRuntimeValues() ?? null,
|
|
163
|
+
this.deps.readUtilityRuntime?.() ?? null
|
|
164
|
+
]);
|
|
165
|
+
const { choice, scores } = chooseAction({
|
|
166
|
+
state,
|
|
167
|
+
activeContextAdapter: this.deps.activeContextAdapter,
|
|
168
|
+
runtimeValues,
|
|
169
|
+
utilityValues
|
|
170
|
+
});
|
|
171
|
+
let demotionReasons = [];
|
|
172
|
+
let effectiveMode = requestedMode;
|
|
173
|
+
if (requestedMode === "active") {
|
|
174
|
+
demotionReasons = await evaluateActiveGates({
|
|
175
|
+
config: this.deps.config,
|
|
176
|
+
reportReader: this.deps.reportReader,
|
|
177
|
+
recorder: this.deps.recorder,
|
|
178
|
+
consecutiveReceiptFailures: this.consecutiveReceiptFailures,
|
|
179
|
+
now: this.clock()
|
|
180
|
+
});
|
|
181
|
+
if (demotionReasons.length > 0) effectiveMode = "shadow";
|
|
182
|
+
}
|
|
183
|
+
const baseEvent = {
|
|
184
|
+
schemaVersion: 1,
|
|
185
|
+
phase: "choice",
|
|
186
|
+
decisionId,
|
|
187
|
+
timestamp: this.clock().toISOString(),
|
|
188
|
+
requestedMode,
|
|
189
|
+
effectiveMode,
|
|
190
|
+
stateHash,
|
|
191
|
+
choice,
|
|
192
|
+
scores,
|
|
193
|
+
executed: false,
|
|
194
|
+
...demotionReasons.length > 0 ? { demotionReasons } : {}
|
|
195
|
+
};
|
|
196
|
+
let recorded = false;
|
|
197
|
+
if (this.deps.recorder) {
|
|
198
|
+
try {
|
|
199
|
+
await this.deps.recorder.record(baseEvent);
|
|
200
|
+
this.deps.telemetry?.(baseEvent);
|
|
201
|
+
recorded = true;
|
|
202
|
+
} catch {
|
|
203
|
+
return {
|
|
204
|
+
decisionId,
|
|
205
|
+
requestedMode,
|
|
206
|
+
effectiveMode,
|
|
207
|
+
stateHash,
|
|
208
|
+
choice,
|
|
209
|
+
scores,
|
|
210
|
+
executed: false,
|
|
211
|
+
reviewOnly: false,
|
|
212
|
+
recorded: false,
|
|
213
|
+
demotionReasons: [...demotionReasons, "record_failed"]
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
if (effectiveMode !== "active") {
|
|
218
|
+
return {
|
|
219
|
+
decisionId,
|
|
220
|
+
requestedMode,
|
|
221
|
+
effectiveMode,
|
|
222
|
+
stateHash,
|
|
223
|
+
choice,
|
|
224
|
+
scores,
|
|
225
|
+
executed: false,
|
|
226
|
+
reviewOnly: false,
|
|
227
|
+
recorded,
|
|
228
|
+
demotionReasons
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
if (choice.family === "persistent_memory" && REVIEW_ONLY_ACTIONS[choice.action]) {
|
|
232
|
+
const event = {
|
|
233
|
+
...baseEvent,
|
|
234
|
+
phase: "outcome",
|
|
235
|
+
reviewOnly: true,
|
|
236
|
+
demotionReasons: ["review_only_action"]
|
|
237
|
+
};
|
|
238
|
+
await this.recordOutcome(event);
|
|
239
|
+
return {
|
|
240
|
+
decisionId,
|
|
241
|
+
requestedMode,
|
|
242
|
+
effectiveMode,
|
|
243
|
+
stateHash,
|
|
244
|
+
choice,
|
|
245
|
+
scores,
|
|
246
|
+
executed: false,
|
|
247
|
+
reviewOnly: true,
|
|
248
|
+
recorded,
|
|
249
|
+
demotionReasons
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
const receipt = await this.dispatch(choice, stateHash, decisionId, baseEvent);
|
|
253
|
+
return {
|
|
254
|
+
decisionId,
|
|
255
|
+
requestedMode,
|
|
256
|
+
effectiveMode,
|
|
257
|
+
stateHash,
|
|
258
|
+
choice,
|
|
259
|
+
scores,
|
|
260
|
+
executed: receipt?.ok === true,
|
|
261
|
+
reviewOnly: false,
|
|
262
|
+
recorded,
|
|
263
|
+
...receipt ? { receipt } : {},
|
|
264
|
+
demotionReasons
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
async dispatch(choice, stateHash, decisionId, baseEvent) {
|
|
268
|
+
const executors = this.deps.executors ?? {};
|
|
269
|
+
try {
|
|
270
|
+
let receipt;
|
|
271
|
+
if (choice.family === "persistent_memory") {
|
|
272
|
+
if (!executors.executePersistentMemory) throw new Error("no_executor:persistent_memory");
|
|
273
|
+
receipt = await executors.executePersistentMemory({
|
|
274
|
+
decisionId,
|
|
275
|
+
action: choice.action,
|
|
276
|
+
eligibility: choice.eligibility,
|
|
277
|
+
stateHash
|
|
278
|
+
});
|
|
279
|
+
} else if (choice.family === "recall") {
|
|
280
|
+
if (!executors.executeRecall) throw new Error("no_executor:recall");
|
|
281
|
+
receipt = await executors.executeRecall({ decisionId, mode: choice.mode });
|
|
282
|
+
} else if (choice.family === "active_context") {
|
|
283
|
+
if (!executors.executeActiveContext) throw new Error("no_executor:active_context");
|
|
284
|
+
receipt = await executors.executeActiveContext({ decisionId, plan: choice.plan });
|
|
285
|
+
} else {
|
|
286
|
+
receipt = { decisionId, ok: true };
|
|
287
|
+
}
|
|
288
|
+
if (!isValidReceipt(receipt, decisionId)) {
|
|
289
|
+
this.consecutiveReceiptFailures += 1;
|
|
290
|
+
await this.recordOutcome({ ...baseEvent, phase: "outcome", failureClass: "bad_receipt" });
|
|
291
|
+
return void 0;
|
|
292
|
+
}
|
|
293
|
+
this.consecutiveReceiptFailures = 0;
|
|
294
|
+
await this.recordOutcome({ ...baseEvent, phase: "outcome", executed: receipt.ok, receipt });
|
|
295
|
+
return receipt;
|
|
296
|
+
} catch (error) {
|
|
297
|
+
this.consecutiveReceiptFailures += 1;
|
|
298
|
+
await this.recordOutcome({
|
|
299
|
+
...baseEvent,
|
|
300
|
+
phase: "outcome",
|
|
301
|
+
failureClass: error?.message?.startsWith("no_executor:") ? "no_executor" : "executor_error"
|
|
302
|
+
});
|
|
303
|
+
return void 0;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
async recordOutcome(event) {
|
|
307
|
+
if (!this.deps.recorder) return;
|
|
308
|
+
await this.deps.recorder.record(event);
|
|
309
|
+
this.deps.telemetry?.(event);
|
|
310
|
+
}
|
|
311
|
+
};
|
|
312
|
+
function isValidReceipt(receipt, decisionId) {
|
|
313
|
+
return typeof receipt === "object" && receipt !== null && receipt.decisionId === decisionId && typeof receipt.ok === "boolean";
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
export {
|
|
317
|
+
controllerConfigHash,
|
|
318
|
+
hashControllerState,
|
|
319
|
+
computeEvidenceReportHash,
|
|
320
|
+
verifyEvidenceReport,
|
|
321
|
+
chooseAction,
|
|
322
|
+
evaluateActiveGates,
|
|
323
|
+
MemoryControllerCoordinator
|
|
324
|
+
};
|
|
325
|
+
//# sourceMappingURL=chunk-SDEPLF7V.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/memory-controller.ts"],"sourcesContent":["import { createHash, randomUUID } from \"node:crypto\";\nimport { planRecallMode } from \"./intent.js\";\nimport { evaluateMemoryActionPolicy } from \"./memory-action-policy.js\";\nimport type { RuntimePolicyValues } from \"./policy-runtime.js\";\nimport type { UtilityRuntimeValues } from \"./utility-runtime.js\";\nimport type { MemoryActionEligibilityContext, MemoryActionType, RecallPlanMode } from \"./types.js\";\n\n/**\n * Gated unified memory controller (#2348).\n *\n * One state enters, one choice leaves. Host-free: every effectful collaborator\n * (adapters, executors, report reader, recorder, telemetry, clock) is injected.\n * The coordinator creates no store and claims no counterfactual lift.\n */\n\nexport type MemoryControllerMode = \"off\" | \"shadow\" | \"active\";\n\nexport type MemoryControllerActionFamily = \"persistent_memory\" | \"recall\" | \"active_context\" | \"no_op\";\n\n/** #2347 adapter seam: the host supplies plans, core only picks one. */\nexport interface ActiveContextMessage {\n id: string;\n text: string;\n}\n\nexport interface ActiveContextPlan {\n transform: \"SUMMARY\" | \"FILTER\";\n messageIds: string[];\n planId: string;\n}\n\nexport interface ActiveContextAdapter {\n plan(messages: ActiveContextMessage[]): ActiveContextPlan | null;\n}\n\n/** #2345 report + #2346 paired-seed evidence, read through one port. */\nexport interface MemoryControllerEvidenceReport {\n status: \"pass\" | \"fail\";\n version: string;\n configHash: string;\n generatedAt: string;\n /** sha256 over the canonical report fields; recomputed on verification. */\n reportHash: string;\n}\n\nexport interface MemoryControllerPairedSeedEvidence {\n status: \"pass\" | \"fail\";\n seedCount: number;\n generatedAt: string;\n}\n\nexport interface MemoryControllerEvidence {\n report: MemoryControllerEvidenceReport;\n pairedSeed: MemoryControllerPairedSeedEvidence;\n}\n\nexport interface MemoryControllerReportReader {\n read(): Promise<MemoryControllerEvidence | null>;\n}\n\nexport interface MemoryControllerReceipt {\n decisionId: string;\n ok: boolean;\n detail?: string;\n}\n\nexport interface MemoryControllerExecutors {\n executePersistentMemory?(input: {\n decisionId: string;\n action: MemoryActionType;\n eligibility: MemoryActionEligibilityContext;\n stateHash: string;\n }): Promise<MemoryControllerReceipt>;\n executeRecall?(input: { decisionId: string; mode: RecallPlanMode }): Promise<MemoryControllerReceipt>;\n executeActiveContext?(input: {\n decisionId: string;\n plan: ActiveContextPlan;\n }): Promise<MemoryControllerReceipt>;\n}\n\nexport interface MemoryControllerEvent {\n schemaVersion: 1;\n phase: \"choice\" | \"outcome\";\n decisionId: string;\n timestamp: string;\n requestedMode: MemoryControllerMode;\n effectiveMode: MemoryControllerMode;\n stateHash: string;\n choice: MemoryControllerChoice;\n scores: Record<MemoryControllerActionFamily, number>;\n executed: boolean;\n reviewOnly?: boolean;\n demotionReasons?: string[];\n failureClass?: \"record_failed\" | \"executor_error\" | \"bad_receipt\" | \"no_executor\";\n receipt?: MemoryControllerReceipt;\n}\n\nexport interface MemoryControllerRecorder {\n record(event: MemoryControllerEvent): Promise<void>;\n /** Prior shadow choice records; active promotion requires shadow history. */\n countShadowRecords(): Promise<number>;\n}\n\nexport interface MemoryControllerConfig {\n mode: MemoryControllerMode;\n /** Expected #2345 report schema version. */\n reportVersion: string;\n /** Evidence older than this is stale and forces shadow. */\n evidenceMaxAgeMs: number;\n /** Paired-seed arms must cover at least this many seeds (#2346). */\n minPairedSeeds: number;\n /** Active promotion requires at least this many prior shadow records. */\n shadowMinRecords: number;\n}\n\nexport interface MemoryControllerState {\n prompt: string;\n persistentMemoryCandidate?: {\n action: MemoryActionType;\n eligibility: MemoryActionEligibilityContext;\n };\n contextMessages?: ActiveContextMessage[];\n /** 0..1 host-measured context pressure. */\n contextPressure?: number;\n}\n\nexport type MemoryControllerChoice =\n | { family: \"persistent_memory\"; action: MemoryActionType; eligibility: MemoryActionEligibilityContext }\n | { family: \"recall\"; mode: RecallPlanMode }\n | { family: \"active_context\"; plan: ActiveContextPlan }\n | { family: \"no_op\" };\n\nexport interface MemoryControllerRunResult {\n decisionId: string;\n requestedMode: MemoryControllerMode;\n effectiveMode: MemoryControllerMode;\n stateHash: string;\n choice: MemoryControllerChoice;\n scores: Record<MemoryControllerActionFamily, number>;\n executed: boolean;\n reviewOnly: boolean;\n recorded: boolean;\n receipt?: MemoryControllerReceipt;\n demotionReasons: string[];\n}\n\nexport interface MemoryControllerDeps {\n config: MemoryControllerConfig;\n reportReader?: MemoryControllerReportReader;\n recorder?: MemoryControllerRecorder;\n executors?: MemoryControllerExecutors;\n activeContextAdapter?: ActiveContextAdapter;\n policyRuntime?: { loadRuntimeValues(): Promise<RuntimePolicyValues | null> };\n readUtilityRuntime?: () => Promise<UtilityRuntimeValues | null>;\n telemetry?: (event: MemoryControllerEvent) => void;\n clock?: () => Date;\n}\n\nconst NO_OP_FLOOR = 0.35;\n/** `discard` (and any destructive change) stays review-only in active mode. */\nconst REVIEW_ONLY_ACTIONS: Partial<Record<MemoryActionType, true>> = { discard: true };\n\nexport function controllerConfigHash(config: MemoryControllerConfig): string {\n return sha256(\n JSON.stringify({\n mode: config.mode,\n reportVersion: config.reportVersion,\n evidenceMaxAgeMs: config.evidenceMaxAgeMs,\n minPairedSeeds: config.minPairedSeeds,\n shadowMinRecords: config.shadowMinRecords,\n })\n );\n}\n\nexport function hashControllerState(state: MemoryControllerState): string {\n return sha256(\n JSON.stringify({\n prompt: state.prompt,\n persistentMemoryCandidate: state.persistentMemoryCandidate ?? null,\n contextMessages: state.contextMessages ?? null,\n contextPressure: state.contextPressure ?? null,\n })\n );\n}\n\n/** Canonical #2345 report hash; producers sign with this, the controller verifies. */\nexport function computeEvidenceReportHash(fields: {\n status: MemoryControllerEvidenceReport[\"status\"];\n version: string;\n configHash: string;\n generatedAt: string;\n}): string {\n return sha256(JSON.stringify(fields));\n}\n\n/** Verifies the #2345 report hash over its canonical fields. */\nexport function verifyEvidenceReport(report: MemoryControllerEvidenceReport): boolean {\n return (\n computeEvidenceReportHash({\n status: report.status,\n version: report.version,\n configHash: report.configHash,\n generatedAt: report.generatedAt,\n }) === report.reportHash\n );\n}\n\nfunction sha256(input: string): string {\n return createHash(\"sha256\").update(input).digest(\"hex\");\n}\n\nfunction clampScore(value: number): number {\n if (!Number.isFinite(value)) return Number.NaN;\n return Math.max(0, Math.min(1, value));\n}\n\n/**\n * Bad scores fail closed to `no_op`.\n */\nexport function chooseAction(input: {\n state: MemoryControllerState;\n activeContextAdapter?: ActiveContextAdapter;\n runtimeValues?: RuntimePolicyValues | null;\n utilityValues?: UtilityRuntimeValues | null;\n}): { choice: MemoryControllerChoice; scores: Record<MemoryControllerActionFamily, number> } {\n const { state, activeContextAdapter, runtimeValues, utilityValues } = input;\n\n // recall: current recall path.\n const recallMode = planRecallMode(state.prompt ?? \"\");\n const recallScore =\n recallMode === \"no_recall\" ? 0 : recallMode === \"minimal\" ? 0.4 : 0.6 + 0.2 * (runtimeValues?.recencyWeight ?? 0);\n\n // persistent_memory: current action path + policy.\n let persistentScore = 0;\n const candidate = state.persistentMemoryCandidate;\n if (candidate) {\n const policy = evaluateMemoryActionPolicy({\n action: candidate.action,\n eligibility: candidate.eligibility,\n options: { actionsEnabled: true, maxCompressionTokensPerHour: Number.POSITIVE_INFINITY },\n });\n if (policy.decision === \"allow\") {\n persistentScore = 0.4 + 0.4 * (candidate.eligibility.confidence ?? 0);\n } else if (policy.decision === \"defer\") {\n persistentScore = 0.2;\n }\n // Utility runtime may suppress the persistent family.\n if (utilityValues && utilityValues.rankingSuppressMultiplier > 1) {\n persistentScore *= 1 / utilityValues.rankingSuppressMultiplier;\n }\n }\n\n // active_context: current context path through the #2347 adapter.\n let contextScore = 0;\n let contextPlan: ActiveContextPlan | null = null;\n const pressure = state.contextPressure;\n if (activeContextAdapter && typeof pressure === \"number\" && Number.isFinite(pressure) && pressure > 0.5) {\n contextPlan = activeContextAdapter.plan(state.contextMessages ?? []);\n if (contextPlan && contextPlan.messageIds.length > 0) {\n contextScore = 0.3 + 0.5 * Math.max(0, Math.min(1, pressure));\n }\n }\n\n const scores: Record<MemoryControllerActionFamily, number> = {\n recall: clampScore(recallScore),\n persistent_memory: clampScore(persistentScore),\n active_context: clampScore(contextScore),\n no_op: NO_OP_FLOOR,\n };\n\n // Bad scores fail closed.\n if (Object.values(scores).some((score) => !Number.isFinite(score) || score < 0 || score > 1)) {\n return { choice: { family: \"no_op\" }, scores };\n }\n\n let choice: MemoryControllerChoice = { family: \"no_op\" };\n let best = scores.no_op;\n if (scores.recall > best) {\n best = scores.recall;\n choice = { family: \"recall\", mode: recallMode };\n }\n if (scores.persistent_memory > best) {\n best = scores.persistent_memory;\n choice = {\n family: \"persistent_memory\",\n action: candidate!.action,\n eligibility: candidate!.eligibility,\n };\n }\n if (scores.active_context > best) {\n choice = { family: \"active_context\", plan: contextPlan! };\n }\n return { choice, scores };\n}\n\n/** Returns the demotion reasons when active-mode gates fail; empty means go. */\nexport async function evaluateActiveGates(input: {\n config: MemoryControllerConfig;\n reportReader?: MemoryControllerReportReader;\n recorder?: MemoryControllerRecorder;\n consecutiveReceiptFailures: number;\n now: Date;\n}): Promise<string[]> {\n const { config, reportReader, recorder, consecutiveReceiptFailures, now } = input;\n const reasons: string[] = [];\n\n if (!reportReader) return [\"no_report_reader\"];\n\n const evidence = await reportReader.read();\n if (!evidence) return [\"no_evidence\"];\n\n const { report, pairedSeed } = evidence;\n if (report.status !== \"pass\") reasons.push(\"report_not_passing\");\n if (report.version !== config.reportVersion) reasons.push(\"report_version_mismatch\");\n if (report.configHash !== controllerConfigHash(config)) reasons.push(\"report_config_unbound\");\n if (!verifyEvidenceReport(report)) reasons.push(\"report_hash_invalid\");\n const reportGeneratedAt = Date.parse(report.generatedAt);\n if (!Number.isFinite(reportGeneratedAt) || now.getTime() - reportGeneratedAt > config.evidenceMaxAgeMs) {\n reasons.push(\"report_stale\");\n }\n\n if (pairedSeed.status !== \"pass\") reasons.push(\"paired_seed_not_passing\");\n if (pairedSeed.seedCount < config.minPairedSeeds) reasons.push(\"paired_seed_count_low\");\n const seedGeneratedAt = Date.parse(pairedSeed.generatedAt);\n if (!Number.isFinite(seedGeneratedAt) || now.getTime() - seedGeneratedAt > config.evidenceMaxAgeMs) {\n reasons.push(\"paired_seed_stale\");\n }\n\n const shadowRecords = recorder ? await recorder.countShadowRecords() : 0;\n if (shadowRecords < config.shadowMinRecords) reasons.push(\"shadow_history_insufficient\");\n\n if (consecutiveReceiptFailures > 0) reasons.push(\"recent_receipt_failures\");\n\n return reasons;\n}\n\nexport class MemoryControllerCoordinator {\n private readonly deps: MemoryControllerDeps;\n private readonly clock: () => Date;\n private consecutiveReceiptFailures = 0;\n\n constructor(deps: MemoryControllerDeps) {\n this.deps = deps;\n this.clock = deps.clock ?? (() => new Date());\n }\n\n async run(state: MemoryControllerState): Promise<MemoryControllerRunResult> {\n const decisionId = randomUUID();\n const stateHash = hashControllerState(state);\n const requestedMode = this.deps.config.mode;\n\n // off: no choice, no read, no write, no call.\n if (requestedMode === \"off\") {\n return {\n decisionId,\n requestedMode,\n effectiveMode: \"off\",\n stateHash,\n choice: { family: \"no_op\" },\n scores: { persistent_memory: 0, recall: 0, active_context: 0, no_op: 0 },\n executed: false,\n reviewOnly: false,\n recorded: false,\n demotionReasons: [\"mode_off\"],\n };\n }\n\n const [runtimeValues, utilityValues] = await Promise.all([\n this.deps.policyRuntime?.loadRuntimeValues() ?? null,\n this.deps.readUtilityRuntime?.() ?? null,\n ]);\n const { choice, scores } = chooseAction({\n state,\n activeContextAdapter: this.deps.activeContextAdapter,\n runtimeValues,\n utilityValues,\n });\n\n let demotionReasons: string[] = [];\n let effectiveMode = requestedMode;\n if (requestedMode === \"active\") {\n demotionReasons = await evaluateActiveGates({\n config: this.deps.config,\n reportReader: this.deps.reportReader,\n recorder: this.deps.recorder,\n consecutiveReceiptFailures: this.consecutiveReceiptFailures,\n now: this.clock(),\n });\n if (demotionReasons.length > 0) effectiveMode = \"shadow\";\n }\n\n const baseEvent: MemoryControllerEvent = {\n schemaVersion: 1,\n phase: \"choice\",\n decisionId,\n timestamp: this.clock().toISOString(),\n requestedMode,\n effectiveMode,\n stateHash,\n choice,\n scores,\n executed: false,\n ...(demotionReasons.length > 0 ? { demotionReasons } : {}),\n };\n\n // Shadow records before any active dispatch.\n let recorded = false;\n if (this.deps.recorder) {\n try {\n await this.deps.recorder.record(baseEvent);\n this.deps.telemetry?.(baseEvent);\n recorded = true;\n } catch {\n // Bad recorder stops work: no dispatch, no outcome event.\n return {\n decisionId,\n requestedMode,\n effectiveMode,\n stateHash,\n choice,\n scores,\n executed: false,\n reviewOnly: false,\n recorded: false,\n demotionReasons: [...demotionReasons, \"record_failed\"],\n };\n }\n }\n\n if (effectiveMode !== \"active\") {\n return {\n decisionId,\n requestedMode,\n effectiveMode,\n stateHash,\n choice,\n scores,\n executed: false,\n reviewOnly: false,\n recorded,\n demotionReasons,\n };\n }\n\n // First active scope: reversible actions only.\n if (choice.family === \"persistent_memory\" && REVIEW_ONLY_ACTIONS[choice.action]) {\n const event: MemoryControllerEvent = {\n ...baseEvent,\n phase: \"outcome\",\n reviewOnly: true,\n demotionReasons: [\"review_only_action\"],\n };\n await this.recordOutcome(event);\n return {\n decisionId,\n requestedMode,\n effectiveMode,\n stateHash,\n choice,\n scores,\n executed: false,\n reviewOnly: true,\n recorded,\n demotionReasons,\n };\n }\n\n const receipt = await this.dispatch(choice, stateHash, decisionId, baseEvent);\n return {\n decisionId,\n requestedMode,\n effectiveMode,\n stateHash,\n choice,\n scores,\n executed: receipt?.ok === true,\n reviewOnly: false,\n recorded,\n ...(receipt ? { receipt } : {}),\n demotionReasons,\n };\n }\n\n private async dispatch(\n choice: MemoryControllerChoice,\n stateHash: string,\n decisionId: string,\n baseEvent: MemoryControllerEvent\n ): Promise<MemoryControllerReceipt | undefined> {\n const executors = this.deps.executors ?? {};\n try {\n let receipt: MemoryControllerReceipt | undefined;\n if (choice.family === \"persistent_memory\") {\n if (!executors.executePersistentMemory) throw new Error(\"no_executor:persistent_memory\");\n receipt = await executors.executePersistentMemory({\n decisionId,\n action: choice.action,\n eligibility: choice.eligibility,\n stateHash,\n });\n } else if (choice.family === \"recall\") {\n if (!executors.executeRecall) throw new Error(\"no_executor:recall\");\n receipt = await executors.executeRecall({ decisionId, mode: choice.mode });\n } else if (choice.family === \"active_context\") {\n if (!executors.executeActiveContext) throw new Error(\"no_executor:active_context\");\n receipt = await executors.executeActiveContext({ decisionId, plan: choice.plan });\n } else {\n // no_op executed trivially; no executor call.\n receipt = { decisionId, ok: true };\n }\n if (!isValidReceipt(receipt, decisionId)) {\n this.consecutiveReceiptFailures += 1;\n await this.recordOutcome({ ...baseEvent, phase: \"outcome\", failureClass: \"bad_receipt\" });\n return undefined;\n }\n this.consecutiveReceiptFailures = 0;\n await this.recordOutcome({ ...baseEvent, phase: \"outcome\", executed: receipt.ok, receipt });\n return receipt;\n } catch (error) {\n this.consecutiveReceiptFailures += 1;\n await this.recordOutcome({\n ...baseEvent,\n phase: \"outcome\",\n failureClass: (error as Error)?.message?.startsWith(\"no_executor:\") ? \"no_executor\" : \"executor_error\",\n });\n return undefined;\n }\n }\n\n private async recordOutcome(event: MemoryControllerEvent): Promise<void> {\n if (!this.deps.recorder) return;\n await this.deps.recorder.record(event);\n this.deps.telemetry?.(event);\n }\n}\n\nfunction isValidReceipt(receipt: unknown, decisionId: string): boolean {\n return (\n typeof receipt === \"object\" &&\n receipt !== null &&\n (receipt as MemoryControllerReceipt).decisionId === decisionId &&\n typeof (receipt as MemoryControllerReceipt).ok === \"boolean\"\n );\n}\n\n// ponytail: consecutiveReceiptFailures is per-instance, not persisted; persist\n// with the recorder if coordinator restarts must carry receipt health forward.\n"],"mappings":"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","names":[]}
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
WHO_KNOWS_DEFAULT_LIMIT,
|
|
3
3
|
WHO_KNOWS_MAX_LIMIT,
|
|
4
4
|
validateWhoKnowsInput
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-ZXUZ54Z5.js";
|
|
6
6
|
|
|
7
7
|
// src/who-knows-cli.ts
|
|
8
8
|
function extractWhoKnowsRawArgs(rest) {
|
|
@@ -74,4 +74,4 @@ export {
|
|
|
74
74
|
renderWhoKnowsText,
|
|
75
75
|
renderWhoKnows
|
|
76
76
|
};
|
|
77
|
-
//# sourceMappingURL=chunk-
|
|
77
|
+
//# sourceMappingURL=chunk-SR7JIRAR.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
StorageManager
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-6LS5OX3U.js";
|
|
4
4
|
import {
|
|
5
5
|
getCachedRuleMemories,
|
|
6
6
|
setCachedRuleMemories
|
|
@@ -119,4 +119,4 @@ export {
|
|
|
119
119
|
compareVerifiedSemanticRuleResults,
|
|
120
120
|
searchVerifiedSemanticRules
|
|
121
121
|
};
|
|
122
|
-
//# sourceMappingURL=chunk-
|
|
122
|
+
//# sourceMappingURL=chunk-TWBQQ3FT.js.map
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
} from "./chunk-7ZNJN5WZ.js";
|
|
24
24
|
import {
|
|
25
25
|
compareEntityTimestamps
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-6LS5OX3U.js";
|
|
27
27
|
import {
|
|
28
28
|
normalizeEntityName
|
|
29
29
|
} from "./chunk-YXZG5TVN.js";
|
|
@@ -918,4 +918,4 @@ export {
|
|
|
918
918
|
entityIndexVersion,
|
|
919
919
|
entityRecentTranscriptLookbackHours
|
|
920
920
|
};
|
|
921
|
-
//# sourceMappingURL=chunk-
|
|
921
|
+
//# sourceMappingURL=chunk-US4IRASK.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
getOperation,
|
|
4
4
|
operationRequiresAuthorizedNamespace,
|
|
5
5
|
operationUsesPrincipalNamespace
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-PNAGNVGK.js";
|
|
7
7
|
import {
|
|
8
8
|
assertOperationAuthorizationAllowed
|
|
9
9
|
} from "./chunk-MZWSOLMT.js";
|
|
@@ -60,4 +60,4 @@ export {
|
|
|
60
60
|
authorizationProbeNamespaces,
|
|
61
61
|
authorizationProbeRequiresPrincipalNamespace
|
|
62
62
|
};
|
|
63
|
-
//# sourceMappingURL=chunk-
|
|
63
|
+
//# sourceMappingURL=chunk-W6J4POB6.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SUPPORT_PASSPORT_DRAFT_MAX_CONTENT_CHARACTERS,
|
|
3
3
|
SUPPORT_PASSPORT_DRAFT_MAX_MEMORIES
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-PNAGNVGK.js";
|
|
5
5
|
import {
|
|
6
6
|
SUPPORT_PASSPORT_SOURCE_MEMORY_ID_MAX_LENGTH
|
|
7
7
|
} from "./chunk-XDL5CYZN.js";
|
|
@@ -343,4 +343,4 @@ export {
|
|
|
343
343
|
parseSupportPassportModelJob,
|
|
344
344
|
SupportPassportModelBridge
|
|
345
345
|
};
|
|
346
|
-
//# sourceMappingURL=chunk-
|
|
346
|
+
//# sourceMappingURL=chunk-X2DWBWOX.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
resolveCorpusNamespaceRoots
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-BXXOPKT5.js";
|
|
4
4
|
import {
|
|
5
5
|
capabilityAllowsNamespace
|
|
6
6
|
} from "./chunk-MZWSOLMT.js";
|
|
@@ -200,4 +200,4 @@ async function readAggregateExtractionWatermark(options) {
|
|
|
200
200
|
export {
|
|
201
201
|
readAggregateExtractionWatermark
|
|
202
202
|
};
|
|
203
|
-
//# sourceMappingURL=chunk-
|
|
203
|
+
//# sourceMappingURL=chunk-XAWIL7TC.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
scanMemoryDir
|
|
3
|
-
} from "./chunk-W7IGLX4G.js";
|
|
4
1
|
import {
|
|
5
2
|
isSearchAborted,
|
|
6
3
|
throwIfSearchAborted
|
|
7
4
|
} from "./chunk-GUMZC2BO.js";
|
|
5
|
+
import {
|
|
6
|
+
scanMemoryDir
|
|
7
|
+
} from "./chunk-W7IGLX4G.js";
|
|
8
8
|
import {
|
|
9
9
|
reportSearchDegradation,
|
|
10
10
|
resolveEnsureCollectionArgs
|
|
@@ -776,4 +776,4 @@ export {
|
|
|
776
776
|
resolveOramaCollectionDbFilePath,
|
|
777
777
|
OramaBackend
|
|
778
778
|
};
|
|
779
|
-
//# sourceMappingURL=chunk-
|
|
779
|
+
//# sourceMappingURL=chunk-XZBXINXZ.js.map
|