@remnic/core 9.3.734 → 9.3.736

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.
Files changed (256) hide show
  1. package/dist/access-boundary.d.ts +8 -6
  2. package/dist/access-boundary.js +9 -9
  3. package/dist/access-cli.js +24 -24
  4. package/dist/access-http.d.ts +8 -6
  5. package/dist/access-http.js +14 -14
  6. package/dist/access-mcp.d.ts +8 -6
  7. package/dist/access-mcp.js +13 -13
  8. package/dist/access-operations-batch.js +11 -11
  9. package/dist/access-operations.d.ts +8 -6
  10. package/dist/access-operations.js +12 -12
  11. package/dist/{access-service-rjFfmfKB.d.ts → access-service-CdC0q4pr.d.ts} +3 -3
  12. package/dist/access-service.d.ts +8 -6
  13. package/dist/access-service.js +8 -8
  14. package/dist/access-surface-catalog.d.ts +8 -6
  15. package/dist/action-confidence.d.ts +1 -1
  16. package/dist/active-memory-bridge.d.ts +1 -1
  17. package/dist/active-memory-bridge.js +3 -3
  18. package/dist/active-recall.d.ts +1 -1
  19. package/dist/behavior-learner.d.ts +1 -1
  20. package/dist/behavior-signals.d.ts +1 -1
  21. package/dist/bootstrap.d.ts +7 -5
  22. package/dist/briefing.d.ts +1 -1
  23. package/dist/buffer-surprise-report.d.ts +1 -1
  24. package/dist/buffer.d.ts +1 -1
  25. package/dist/calibration.d.ts +1 -1
  26. package/dist/capabilities.d.ts +101 -2
  27. package/dist/capabilities.js +13 -3
  28. package/dist/{catalog-DHYXzM4-.d.ts → catalog-D2NLDg4S.d.ts} +1 -1
  29. package/dist/causal-behavior.d.ts +1 -1
  30. package/dist/causal-consolidation.d.ts +1 -1
  31. package/dist/causal-trajectory-graph.d.ts +1 -1
  32. package/dist/{chunk-IWMGBNXY.js → chunk-2T2N7ISV.js} +3 -3
  33. package/dist/{chunk-K7PAILHO.js → chunk-5BOQNB2K.js} +3 -3
  34. package/dist/{chunk-Q5LGXWNG.js → chunk-AAIHDIMD.js} +6 -6
  35. package/dist/{chunk-WHQ2JB35.js → chunk-AB2E5DCN.js} +2 -2
  36. package/dist/{chunk-Z7J3OAPR.js → chunk-AE2HPUP7.js} +726 -645
  37. package/dist/chunk-AE2HPUP7.js.map +1 -0
  38. package/dist/{chunk-FAGERSH2.js → chunk-AE7NTZ75.js} +3 -3
  39. package/dist/{chunk-V5OVSGB6.js → chunk-AESC5OQJ.js} +2 -2
  40. package/dist/{chunk-7FPJFCXL.js → chunk-BXPG5AVX.js} +4 -4
  41. package/dist/{chunk-UH3NYOHN.js → chunk-CHJIWG2H.js} +2 -2
  42. package/dist/{chunk-IDIXGGDN.js → chunk-E4LYJ7PY.js} +6 -6
  43. package/dist/{chunk-WTTVFSCO.js → chunk-FF36YNKY.js} +3 -3
  44. package/dist/{chunk-TJSQHO4Q.js → chunk-FLPKEMSO.js} +2 -2
  45. package/dist/{chunk-UF3N7IRP.js → chunk-G54IDCD3.js} +45 -41
  46. package/dist/chunk-G54IDCD3.js.map +1 -0
  47. package/dist/{chunk-UK6U5C3N.js → chunk-GB2FZOWB.js} +3 -3
  48. package/dist/{chunk-5OYHJIJN.js → chunk-GYICIICQ.js} +3 -3
  49. package/dist/{chunk-PEF2XOIV.js → chunk-HFXZIF3V.js} +3 -3
  50. package/dist/{chunk-PKO5NJ65.js → chunk-HLPYL6LC.js} +27 -24
  51. package/dist/chunk-HLPYL6LC.js.map +1 -0
  52. package/dist/{chunk-ET5HXSQL.js → chunk-IPI45Q4S.js} +2 -2
  53. package/dist/{chunk-2L5RTVMO.js → chunk-IX4L7E5G.js} +2 -2
  54. package/dist/{chunk-SYX73XD7.js → chunk-IXGXALRV.js} +10 -7
  55. package/dist/chunk-IXGXALRV.js.map +1 -0
  56. package/dist/{chunk-SHJGBAIW.js → chunk-JWDE7OVJ.js} +44 -2
  57. package/dist/{chunk-SHJGBAIW.js.map → chunk-JWDE7OVJ.js.map} +1 -1
  58. package/dist/{chunk-IZLTOS5L.js → chunk-K3Y2SJTN.js} +4 -4
  59. package/dist/{chunk-CILX2XW7.js → chunk-NDKW67ER.js} +2 -2
  60. package/dist/{chunk-54RCE5Z3.js → chunk-NNJKEAP2.js} +2 -2
  61. package/dist/{chunk-LV32K4OP.js → chunk-OYHYBHHI.js} +2 -2
  62. package/dist/{chunk-5DIKZKOD.js → chunk-P6VLG7KE.js} +2 -2
  63. package/dist/{chunk-T7CGPTFU.js → chunk-QNTLWH3T.js} +3 -3
  64. package/dist/{chunk-6U7TES2M.js → chunk-UO6MPN77.js} +13 -12
  65. package/dist/chunk-UO6MPN77.js.map +1 -0
  66. package/dist/{chunk-NDYQIN6C.js → chunk-VOEVVIP3.js} +3 -3
  67. package/dist/{chunk-3QETM5NG.js → chunk-ZBZ4XULO.js} +3 -3
  68. package/dist/{cli-XVpmSoQs.d.ts → cli-BHy6Bo6u.d.ts} +3 -3
  69. package/dist/cli.d.ts +9 -7
  70. package/dist/cli.js +20 -20
  71. package/dist/compounding/engine.d.ts +1 -1
  72. package/dist/compounding/engine.js +2 -2
  73. package/dist/compounding/preference-consolidator.d.ts +1 -1
  74. package/dist/compression-optimizer.d.ts +1 -1
  75. package/dist/config.d.ts +1 -1
  76. package/dist/connectors/codex-materialize-runner.d.ts +1 -1
  77. package/dist/connectors/codex-materialize.d.ts +1 -1
  78. package/dist/connectors/index.d.ts +1 -1
  79. package/dist/consolidation-provenance-check.d.ts +1 -1
  80. package/dist/consolidation-undo.d.ts +1 -1
  81. package/dist/contradiction/index.d.ts +1 -1
  82. package/dist/contradiction/index.js +2 -2
  83. package/dist/{contradiction-scan-OUHMCUBT.js → contradiction-scan-2B4AE4TI.js} +3 -3
  84. package/dist/conversation-index/backend.d.ts +1 -1
  85. package/dist/conversation-index/chunker.d.ts +1 -1
  86. package/dist/conversation-index/faiss-adapter.d.ts +1 -1
  87. package/dist/conversation-index/indexer.d.ts +1 -1
  88. package/dist/conversation-index/search.d.ts +1 -1
  89. package/dist/day-summary.d.ts +1 -1
  90. package/dist/delinearize.d.ts +1 -1
  91. package/dist/direct-answer-wiring.d.ts +1 -1
  92. package/dist/direct-answer.d.ts +1 -1
  93. package/dist/embedding-fallback.d.ts +1 -1
  94. package/dist/embedding-fallback.js +2 -2
  95. package/dist/enrichment/index.d.ts +1 -1
  96. package/dist/entity-retrieval.d.ts +1 -1
  97. package/dist/entity-retrieval.js +2 -2
  98. package/dist/entity-schema.d.ts +1 -1
  99. package/dist/explicit-capture.d.ts +7 -5
  100. package/dist/explicit-capture.js +2 -2
  101. package/dist/extraction-faithfulness.d.ts +1 -1
  102. package/dist/extraction-judge-telemetry.d.ts +1 -1
  103. package/dist/extraction-judge-training.d.ts +1 -1
  104. package/dist/extraction-judge.d.ts +1 -1
  105. package/dist/extraction.d.ts +1 -1
  106. package/dist/extraction.js +3 -3
  107. package/dist/fallback-llm.d.ts +1 -1
  108. package/dist/{first-start-migration-W4U6XDKI.js → first-start-migration-2RQYDIZ7.js} +6 -5
  109. package/dist/first-start-migration-2RQYDIZ7.js.map +1 -0
  110. package/dist/graph-dashboard-diff.d.ts +1 -1
  111. package/dist/graph-dashboard-key.d.ts +1 -1
  112. package/dist/graph-dashboard-parser.d.ts +1 -1
  113. package/dist/graph-edge-reinforcement.d.ts +1 -1
  114. package/dist/graph-snapshot.d.ts +1 -1
  115. package/dist/graph.d.ts +1 -1
  116. package/dist/identity-continuity.d.ts +1 -1
  117. package/dist/importance.d.ts +1 -1
  118. package/dist/index.d.ts +9 -9
  119. package/dist/index.js +30 -30
  120. package/dist/intent.d.ts +1 -1
  121. package/dist/lcm/engine.d.ts +1 -1
  122. package/dist/lcm/index.d.ts +1 -1
  123. package/dist/lcm/tools.d.ts +1 -1
  124. package/dist/lifecycle.d.ts +1 -1
  125. package/dist/live-connectors-runner.d.ts +1 -1
  126. package/dist/local-llm.d.ts +1 -1
  127. package/dist/local-llm.js +2 -2
  128. package/dist/local-model-endpoint.d.ts +1 -1
  129. package/dist/maintenance/memory-governance.d.ts +1 -1
  130. package/dist/mcp-memory-inspector-app.d.ts +8 -6
  131. package/dist/memory-action-policy.d.ts +1 -1
  132. package/dist/memory-cache.d.ts +1 -1
  133. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
  134. package/dist/memory-projection-store.d.ts +1 -1
  135. package/dist/memory-provenance.d.ts +1 -1
  136. package/dist/memory-worth-outcomes.d.ts +1 -1
  137. package/dist/models-json.d.ts +1 -1
  138. package/dist/namespaces/migrate.d.ts +2 -2
  139. package/dist/namespaces/migrate.js +6 -6
  140. package/dist/namespaces/principal.d.ts +1 -1
  141. package/dist/namespaces/principal.js +2 -2
  142. package/dist/namespaces/search.d.ts +1 -1
  143. package/dist/namespaces/search.js +4 -4
  144. package/dist/namespaces/storage.d.ts +2 -2
  145. package/dist/namespaces/storage.js +2 -2
  146. package/dist/native-knowledge.d.ts +1 -1
  147. package/dist/operator-toolkit.d.ts +1 -1
  148. package/dist/operator-toolkit.js +11 -11
  149. package/dist/orchestration/compression-guideline-coordinator.d.ts +1 -1
  150. package/dist/orchestration/compression-guideline-coordinator.js +2 -1
  151. package/dist/orchestration/maintenance.d.ts +2 -2
  152. package/dist/orchestration/maintenance.js +6 -6
  153. package/dist/{orchestrator-BXi-gadS.d.ts → orchestrator-C-xp_rtZ.d.ts} +141 -18
  154. package/dist/orchestrator.d.ts +7 -5
  155. package/dist/orchestrator.js +19 -21
  156. package/dist/patterns-cli.d.ts +1 -1
  157. package/dist/policy-runtime.d.ts +1 -1
  158. package/dist/provenance.d.ts +1 -1
  159. package/dist/qmd-recall-cache.d.ts +1 -1
  160. package/dist/qmd.d.ts +1 -1
  161. package/dist/recall-disclosure-escalation.d.ts +1 -1
  162. package/dist/recall-explain-renderer.d.ts +1 -1
  163. package/dist/recall-planner-llm.d.ts +1 -1
  164. package/dist/recall-state.d.ts +1 -1
  165. package/dist/recall-tag-filter.d.ts +1 -1
  166. package/dist/recall-xray-cli.d.ts +1 -1
  167. package/dist/recall-xray-renderer.d.ts +1 -1
  168. package/dist/recall-xray.d.ts +1 -1
  169. package/dist/resolve-auth-token.d.ts +1 -1
  170. package/dist/retrieval-agents.d.ts +1 -1
  171. package/dist/retrieval-tiers.d.ts +1 -1
  172. package/dist/routing/engine.d.ts +1 -1
  173. package/dist/routing/store.d.ts +1 -1
  174. package/dist/search/embed-helper.d.ts +1 -1
  175. package/dist/search/embed-helper.js +2 -2
  176. package/dist/search/factory.d.ts +1 -1
  177. package/dist/search/factory.js +3 -3
  178. package/dist/search/index.d.ts +1 -1
  179. package/dist/search/index.js +3 -3
  180. package/dist/search/lancedb-backend.d.ts +1 -1
  181. package/dist/search/meilisearch-backend.d.ts +1 -1
  182. package/dist/search/noop-backend.d.ts +1 -1
  183. package/dist/search/orama-backend.d.ts +1 -1
  184. package/dist/search/port.d.ts +1 -1
  185. package/dist/search/remote-backend.d.ts +1 -1
  186. package/dist/{semantic-consolidation-DeL5grLx.d.ts → semantic-consolidation-COdwU-me.d.ts} +1 -1
  187. package/dist/semantic-consolidation.d.ts +2 -2
  188. package/dist/semantic-rule-verifier.d.ts +1 -1
  189. package/dist/session-observer-bands.d.ts +1 -1
  190. package/dist/session-observer-state.d.ts +1 -1
  191. package/dist/shared-context/manager.d.ts +1 -1
  192. package/dist/signal.d.ts +1 -1
  193. package/dist/storage.d.ts +1 -1
  194. package/dist/summarizer.d.ts +1 -1
  195. package/dist/summarizer.js +3 -3
  196. package/dist/summary-snapshot.d.ts +1 -1
  197. package/dist/temporal-supersession.d.ts +1 -1
  198. package/dist/temporal-validity.d.ts +1 -1
  199. package/dist/threading.d.ts +1 -1
  200. package/dist/tier-migration.d.ts +1 -1
  201. package/dist/tier-routing.d.ts +1 -1
  202. package/dist/{tier-stats-LSM35HZY.js → tier-stats-KPDIISG7.js} +6 -5
  203. package/dist/tier-stats-KPDIISG7.js.map +1 -0
  204. package/dist/topics.d.ts +1 -1
  205. package/dist/transcript.d.ts +1 -1
  206. package/dist/trust-score-stage.d.ts +1 -1
  207. package/dist/trust-score.d.ts +1 -1
  208. package/dist/{types-CpFz51Pv.d.ts → types-w3Y232yi.d.ts} +1 -1
  209. package/dist/types.d.ts +1 -1
  210. package/dist/utility-runtime.d.ts +1 -1
  211. package/package.json +2 -2
  212. package/src/access-service.ts +20 -20
  213. package/src/capabilities.test.ts +197 -0
  214. package/src/capabilities.ts +206 -0
  215. package/src/cli/creation-ledger-commands.ts +2 -2
  216. package/src/cli/research-status-commands.ts +13 -13
  217. package/src/cli.ts +17 -17
  218. package/src/maintenance/first-start-migration.ts +3 -3
  219. package/src/maintenance/tier-stats.ts +3 -3
  220. package/src/operator-toolkit.ts +8 -8
  221. package/src/orchestration/compression-guideline-coordinator.ts +7 -6
  222. package/src/orchestration/entity-synthesis-coordinator.ts +319 -0
  223. package/src/orchestration/lifecycle-policy-coordinator.ts +504 -0
  224. package/src/orchestrator.ts +40 -618
  225. package/dist/chunk-6U7TES2M.js.map +0 -1
  226. package/dist/chunk-PKO5NJ65.js.map +0 -1
  227. package/dist/chunk-SYX73XD7.js.map +0 -1
  228. package/dist/chunk-UF3N7IRP.js.map +0 -1
  229. package/dist/chunk-Z7J3OAPR.js.map +0 -1
  230. package/dist/first-start-migration-W4U6XDKI.js.map +0 -1
  231. package/dist/tier-stats-LSM35HZY.js.map +0 -1
  232. /package/dist/{chunk-IWMGBNXY.js.map → chunk-2T2N7ISV.js.map} +0 -0
  233. /package/dist/{chunk-K7PAILHO.js.map → chunk-5BOQNB2K.js.map} +0 -0
  234. /package/dist/{chunk-Q5LGXWNG.js.map → chunk-AAIHDIMD.js.map} +0 -0
  235. /package/dist/{chunk-WHQ2JB35.js.map → chunk-AB2E5DCN.js.map} +0 -0
  236. /package/dist/{chunk-FAGERSH2.js.map → chunk-AE7NTZ75.js.map} +0 -0
  237. /package/dist/{chunk-V5OVSGB6.js.map → chunk-AESC5OQJ.js.map} +0 -0
  238. /package/dist/{chunk-7FPJFCXL.js.map → chunk-BXPG5AVX.js.map} +0 -0
  239. /package/dist/{chunk-UH3NYOHN.js.map → chunk-CHJIWG2H.js.map} +0 -0
  240. /package/dist/{chunk-IDIXGGDN.js.map → chunk-E4LYJ7PY.js.map} +0 -0
  241. /package/dist/{chunk-WTTVFSCO.js.map → chunk-FF36YNKY.js.map} +0 -0
  242. /package/dist/{chunk-TJSQHO4Q.js.map → chunk-FLPKEMSO.js.map} +0 -0
  243. /package/dist/{chunk-UK6U5C3N.js.map → chunk-GB2FZOWB.js.map} +0 -0
  244. /package/dist/{chunk-5OYHJIJN.js.map → chunk-GYICIICQ.js.map} +0 -0
  245. /package/dist/{chunk-PEF2XOIV.js.map → chunk-HFXZIF3V.js.map} +0 -0
  246. /package/dist/{chunk-ET5HXSQL.js.map → chunk-IPI45Q4S.js.map} +0 -0
  247. /package/dist/{chunk-2L5RTVMO.js.map → chunk-IX4L7E5G.js.map} +0 -0
  248. /package/dist/{chunk-IZLTOS5L.js.map → chunk-K3Y2SJTN.js.map} +0 -0
  249. /package/dist/{chunk-CILX2XW7.js.map → chunk-NDKW67ER.js.map} +0 -0
  250. /package/dist/{chunk-54RCE5Z3.js.map → chunk-NNJKEAP2.js.map} +0 -0
  251. /package/dist/{chunk-LV32K4OP.js.map → chunk-OYHYBHHI.js.map} +0 -0
  252. /package/dist/{chunk-5DIKZKOD.js.map → chunk-P6VLG7KE.js.map} +0 -0
  253. /package/dist/{chunk-T7CGPTFU.js.map → chunk-QNTLWH3T.js.map} +0 -0
  254. /package/dist/{chunk-NDYQIN6C.js.map → chunk-VOEVVIP3.js.map} +0 -0
  255. /package/dist/{chunk-3QETM5NG.js.map → chunk-ZBZ4XULO.js.map} +0 -0
  256. /package/dist/{contradiction-scan-OUHMCUBT.js.map → contradiction-scan-2B4AE4TI.js.map} +0 -0
@@ -9,12 +9,22 @@ import {
9
9
  resolveQmdCapabilities,
10
10
  resolveIdentityContinuityCapabilities,
11
11
  resolveLocalLlmCapabilities,
12
+ resolveSecurityCapabilities,
13
+ resolveEvalCapabilities,
14
+ resolveUtilityLearningCapabilities,
15
+ resolveObjectiveStateCapabilities,
16
+ resolveCompressionCapabilities,
12
17
  type CapabilitySet,
13
18
  type AccessSetupCapabilitySet,
14
19
  type NamespaceCapabilitySet,
15
20
  type QmdCapabilitySet,
16
21
  type IdentityContinuityCapabilitySet,
17
22
  type LocalLlmCapabilitySet,
23
+ type SecurityCapabilitySet,
24
+ type EvalCapabilitySet,
25
+ type UtilityLearningCapabilitySet,
26
+ type ObjectiveStateCapabilitySet,
27
+ type CompressionCapabilitySet,
18
28
  } from "./capabilities.js";
19
29
 
20
30
  /**
@@ -824,3 +834,190 @@ test("resolveLocalLlmCapabilities: result is frozen", () => {
824
834
  const caps = resolveLocalLlmCapabilities(config);
825
835
  assert.ok(Object.isFrozen(caps), "LocalLlmCapabilitySet must be frozen");
826
836
  });
837
+
838
+ // ---------------------------------------------------------------------------
839
+ // SecurityCapabilitySet — gate-parity tests (issue #1523 batch 7).
840
+ // ---------------------------------------------------------------------------
841
+
842
+ const SECURITY_FIELD_TO_FLAG: Record<keyof SecurityCapabilitySet, string> = {
843
+ trustZones: "trustZonesEnabled",
844
+ quarantinePromotion: "quarantinePromotionEnabled",
845
+ memoryPoisoningDefense: "memoryPoisoningDefenseEnabled",
846
+ trustZoneRecall: "trustZoneRecallEnabled",
847
+ };
848
+
849
+ const SECURITY_FIELDS = Object.keys(SECURITY_FIELD_TO_FLAG) as Array<keyof SecurityCapabilitySet>;
850
+
851
+ test("resolveSecurityCapabilities projects every field from its flag (true variant)", () => {
852
+ const overrides: Record<string, boolean> = {};
853
+ for (const flag of Object.values(SECURITY_FIELD_TO_FLAG)) overrides[flag] = true;
854
+ const config = parseConfig(overrides);
855
+ const caps = resolveSecurityCapabilities(config);
856
+ for (const field of SECURITY_FIELDS) {
857
+ assert.equal(caps[field], true, `${field} must be true`);
858
+ }
859
+ });
860
+
861
+ test("resolveSecurityCapabilities projects every field from its flag (false variant)", () => {
862
+ const overrides: Record<string, boolean> = {};
863
+ for (const flag of Object.values(SECURITY_FIELD_TO_FLAG)) overrides[flag] = false;
864
+ const config = parseConfig(overrides);
865
+ const caps = resolveSecurityCapabilities(config);
866
+ for (const field of SECURITY_FIELDS) {
867
+ assert.equal(caps[field], false, `${field} must be false`);
868
+ }
869
+ });
870
+
871
+ test("resolveSecurityCapabilities returns a frozen object", () => {
872
+ const caps = resolveSecurityCapabilities(parseConfig({}));
873
+ assert.equal(Object.isFrozen(caps), true, "SecurityCapabilitySet must be frozen");
874
+ });
875
+
876
+ // ---------------------------------------------------------------------------
877
+ // EvalCapabilitySet — gate-parity tests (issue #1523 batch 7).
878
+ // ---------------------------------------------------------------------------
879
+
880
+ const EVAL_FIELD_TO_FLAG: Record<keyof EvalCapabilitySet, string> = {
881
+ evalHarness: "evalHarnessEnabled",
882
+ evalShadowMode: "evalShadowModeEnabled",
883
+ benchmarkBaselineSnapshots: "benchmarkBaselineSnapshotsEnabled",
884
+ benchmarkDeltaReporter: "benchmarkDeltaReporterEnabled",
885
+ memoryRedTeamBench: "memoryRedTeamBenchEnabled",
886
+ };
887
+
888
+ const EVAL_FIELDS = Object.keys(EVAL_FIELD_TO_FLAG) as Array<keyof EvalCapabilitySet>;
889
+
890
+ test("resolveEvalCapabilities projects every field from its flag (true variant)", () => {
891
+ const overrides: Record<string, boolean> = {};
892
+ for (const flag of Object.values(EVAL_FIELD_TO_FLAG)) overrides[flag] = true;
893
+ const config = parseConfig(overrides);
894
+ const caps = resolveEvalCapabilities(config);
895
+ for (const field of EVAL_FIELDS) {
896
+ assert.equal(caps[field], true, `${field} must be true`);
897
+ }
898
+ });
899
+
900
+ test("resolveEvalCapabilities projects every field from its flag (false variant)", () => {
901
+ const overrides: Record<string, boolean> = {};
902
+ for (const flag of Object.values(EVAL_FIELD_TO_FLAG)) overrides[flag] = false;
903
+ const config = parseConfig(overrides);
904
+ const caps = resolveEvalCapabilities(config);
905
+ for (const field of EVAL_FIELDS) {
906
+ assert.equal(caps[field], false, `${field} must be false`);
907
+ }
908
+ });
909
+
910
+ test("resolveEvalCapabilities returns a frozen object", () => {
911
+ const caps = resolveEvalCapabilities(parseConfig({}));
912
+ assert.equal(Object.isFrozen(caps), true, "EvalCapabilitySet must be frozen");
913
+ });
914
+
915
+ // ---------------------------------------------------------------------------
916
+ // UtilityLearningCapabilitySet — gate-parity tests (issue #1523 batch 7).
917
+ // ---------------------------------------------------------------------------
918
+
919
+ const UTILITY_FIELD_TO_FLAG: Record<keyof UtilityLearningCapabilitySet, string> = {
920
+ memoryUtilityLearning: "memoryUtilityLearningEnabled",
921
+ promotionByOutcome: "promotionByOutcomeEnabled",
922
+ };
923
+
924
+ const UTILITY_FIELDS = Object.keys(UTILITY_FIELD_TO_FLAG) as Array<keyof UtilityLearningCapabilitySet>;
925
+
926
+ test("resolveUtilityLearningCapabilities projects every field from its flag (true variant)", () => {
927
+ const overrides: Record<string, boolean> = {};
928
+ for (const flag of Object.values(UTILITY_FIELD_TO_FLAG)) overrides[flag] = true;
929
+ const config = parseConfig(overrides);
930
+ const caps = resolveUtilityLearningCapabilities(config);
931
+ for (const field of UTILITY_FIELDS) {
932
+ assert.equal(caps[field], true, `${field} must be true`);
933
+ }
934
+ });
935
+
936
+ test("resolveUtilityLearningCapabilities projects every field from its flag (false variant)", () => {
937
+ const overrides: Record<string, boolean> = {};
938
+ for (const flag of Object.values(UTILITY_FIELD_TO_FLAG)) overrides[flag] = false;
939
+ const config = parseConfig(overrides);
940
+ const caps = resolveUtilityLearningCapabilities(config);
941
+ for (const field of UTILITY_FIELDS) {
942
+ assert.equal(caps[field], false, `${field} must be false`);
943
+ }
944
+ });
945
+
946
+ test("resolveUtilityLearningCapabilities returns a frozen object", () => {
947
+ const caps = resolveUtilityLearningCapabilities(parseConfig({}));
948
+ assert.equal(Object.isFrozen(caps), true, "UtilityLearningCapabilitySet must be frozen");
949
+ });
950
+
951
+ // ---------------------------------------------------------------------------
952
+ // ObjectiveStateCapabilitySet — gate-parity tests (issue #1523 batch 7).
953
+ // ---------------------------------------------------------------------------
954
+
955
+ const OBJECTIVE_FIELD_TO_FLAG: Record<keyof ObjectiveStateCapabilitySet, string> = {
956
+ objectiveStateMemory: "objectiveStateMemoryEnabled",
957
+ objectiveStateSnapshotWrites: "objectiveStateSnapshotWritesEnabled",
958
+ objectiveStateRecall: "objectiveStateRecallEnabled",
959
+ };
960
+
961
+ const OBJECTIVE_FIELDS = Object.keys(OBJECTIVE_FIELD_TO_FLAG) as Array<keyof ObjectiveStateCapabilitySet>;
962
+
963
+ test("resolveObjectiveStateCapabilities projects every field from its flag (true variant)", () => {
964
+ const overrides: Record<string, boolean> = {};
965
+ for (const flag of Object.values(OBJECTIVE_FIELD_TO_FLAG)) overrides[flag] = true;
966
+ const config = parseConfig(overrides);
967
+ const caps = resolveObjectiveStateCapabilities(config);
968
+ for (const field of OBJECTIVE_FIELDS) {
969
+ assert.equal(caps[field], true, `${field} must be true`);
970
+ }
971
+ });
972
+
973
+ test("resolveObjectiveStateCapabilities projects every field from its flag (false variant)", () => {
974
+ const overrides: Record<string, boolean> = {};
975
+ for (const flag of Object.values(OBJECTIVE_FIELD_TO_FLAG)) overrides[flag] = false;
976
+ const config = parseConfig(overrides);
977
+ const caps = resolveObjectiveStateCapabilities(config);
978
+ for (const field of OBJECTIVE_FIELDS) {
979
+ assert.equal(caps[field], false, `${field} must be false`);
980
+ }
981
+ });
982
+
983
+ test("resolveObjectiveStateCapabilities returns a frozen object", () => {
984
+ const caps = resolveObjectiveStateCapabilities(parseConfig({}));
985
+ assert.equal(Object.isFrozen(caps), true, "ObjectiveStateCapabilitySet must be frozen");
986
+ });
987
+
988
+ // ---------------------------------------------------------------------------
989
+ // CompressionCapabilitySet — gate-parity tests (issue #1523 batch 7).
990
+ // ---------------------------------------------------------------------------
991
+
992
+ const COMPRESSION_FIELD_TO_FLAG: Record<keyof CompressionCapabilitySet, string> = {
993
+ compressionGuidelineLearning: "compressionGuidelineLearningEnabled",
994
+ compressionGuidelineSemanticRefinement: "compressionGuidelineSemanticRefinementEnabled",
995
+ contextCompressionActions: "contextCompressionActionsEnabled",
996
+ };
997
+
998
+ const COMPRESSION_FIELDS = Object.keys(COMPRESSION_FIELD_TO_FLAG) as Array<keyof CompressionCapabilitySet>;
999
+
1000
+ test("resolveCompressionCapabilities projects every field from its flag (true variant)", () => {
1001
+ const overrides: Record<string, boolean> = {};
1002
+ for (const flag of Object.values(COMPRESSION_FIELD_TO_FLAG)) overrides[flag] = true;
1003
+ const config = parseConfig(overrides);
1004
+ const caps = resolveCompressionCapabilities(config);
1005
+ for (const field of COMPRESSION_FIELDS) {
1006
+ assert.equal(caps[field], true, `${field} must be true`);
1007
+ }
1008
+ });
1009
+
1010
+ test("resolveCompressionCapabilities projects every field from its flag (false variant)", () => {
1011
+ const overrides: Record<string, boolean> = {};
1012
+ for (const flag of Object.values(COMPRESSION_FIELD_TO_FLAG)) overrides[flag] = false;
1013
+ const config = parseConfig(overrides);
1014
+ const caps = resolveCompressionCapabilities(config);
1015
+ for (const field of COMPRESSION_FIELDS) {
1016
+ assert.equal(caps[field], false, `${field} must be false`);
1017
+ }
1018
+ });
1019
+
1020
+ test("resolveCompressionCapabilities returns a frozen object", () => {
1021
+ const caps = resolveCompressionCapabilities(parseConfig({}));
1022
+ assert.equal(Object.isFrozen(caps), true, "CompressionCapabilitySet must be frozen");
1023
+ });
@@ -601,3 +601,209 @@ export function resolveLocalLlmCapabilities(
601
601
  localLlm: config.localLlmEnabled,
602
602
  });
603
603
  }
604
+
605
+ // ---------------------------------------------------------------------------
606
+ // Security capability set (issue #1523 batch 7).
607
+ //
608
+ // The four security/trust-zone flags gate quarantine promotion, poisoning
609
+ // defense, and trust-zone recall. Read sites span orchestrator, access-service,
610
+ // CLI, and research-status commands. All flags are non-optional booleans on
611
+ // PluginConfig (defaults resolved at the parse boundary), so the projection is
612
+ // a pure pass-through.
613
+ // ---------------------------------------------------------------------------
614
+
615
+ /**
616
+ * Frozen projection of security/trust-zone feature gates (issue #1523 batch 7).
617
+ */
618
+ export interface SecurityCapabilitySet {
619
+ /** `trustZonesEnabled` — master switch for trust-zone enforcement. */
620
+ readonly trustZones: boolean;
621
+ /** `quarantinePromotionEnabled` — promote quarantined memories after review. */
622
+ readonly quarantinePromotion: boolean;
623
+ /** `memoryPoisoningDefenseEnabled` — detect and defend against memory poisoning. */
624
+ readonly memoryPoisoningDefense: boolean;
625
+ /** `trustZoneRecallEnabled` — restrict recall to trusted zones. */
626
+ readonly trustZoneRecall: boolean;
627
+ }
628
+
629
+ /**
630
+ * Config projection consumed by {@link resolveSecurityCapabilities}.
631
+ */
632
+ export type SecurityConfigProjection = Pick<
633
+ PluginConfig,
634
+ "trustZonesEnabled" | "quarantinePromotionEnabled" | "memoryPoisoningDefenseEnabled" | "trustZoneRecallEnabled"
635
+ >;
636
+
637
+ /**
638
+ * Resolve the {@link SecurityCapabilitySet} from parsed config.
639
+ */
640
+ export function resolveSecurityCapabilities(config: SecurityConfigProjection): SecurityCapabilitySet {
641
+ return Object.freeze({
642
+ trustZones: config.trustZonesEnabled,
643
+ quarantinePromotion: config.quarantinePromotionEnabled,
644
+ memoryPoisoningDefense: config.memoryPoisoningDefenseEnabled,
645
+ trustZoneRecall: config.trustZoneRecallEnabled,
646
+ });
647
+ }
648
+
649
+ // ---------------------------------------------------------------------------
650
+ // Eval/benchmark capability set (issue #1523 batch 7).
651
+ //
652
+ // The five eval/benchmark flags gate the evaluation harness, shadow mode,
653
+ // baseline snapshot management, delta reporting, and red-team benchmarking.
654
+ // Read sites span orchestrator, CLI, and operator-toolkit. All flags are
655
+ // non-optional booleans on PluginConfig.
656
+ // ---------------------------------------------------------------------------
657
+
658
+ /**
659
+ * Frozen projection of eval/benchmark feature gates (issue #1523 batch 7).
660
+ */
661
+ export interface EvalCapabilitySet {
662
+ /** `evalHarnessEnabled` — master switch for the eval harness. */
663
+ readonly evalHarness: boolean;
664
+ /** `evalShadowModeEnabled` — run evaluations in shadow mode. */
665
+ readonly evalShadowMode: boolean;
666
+ /** `benchmarkBaselineSnapshotsEnabled` — manage baseline snapshots. */
667
+ readonly benchmarkBaselineSnapshots: boolean;
668
+ /** `benchmarkDeltaReporterEnabled` — report benchmark deltas. */
669
+ readonly benchmarkDeltaReporter: boolean;
670
+ /** `memoryRedTeamBenchEnabled` — red-team benchmarking of memory. */
671
+ readonly memoryRedTeamBench: boolean;
672
+ }
673
+
674
+ /**
675
+ * Config projection consumed by {@link resolveEvalCapabilities}.
676
+ */
677
+ export type EvalConfigProjection = Pick<
678
+ PluginConfig,
679
+ "evalHarnessEnabled" | "evalShadowModeEnabled" | "benchmarkBaselineSnapshotsEnabled" | "benchmarkDeltaReporterEnabled" | "memoryRedTeamBenchEnabled"
680
+ >;
681
+
682
+ /**
683
+ * Resolve the {@link EvalCapabilitySet} from parsed config.
684
+ */
685
+ export function resolveEvalCapabilities(config: EvalConfigProjection): EvalCapabilitySet {
686
+ return Object.freeze({
687
+ evalHarness: config.evalHarnessEnabled,
688
+ evalShadowMode: config.evalShadowModeEnabled,
689
+ benchmarkBaselineSnapshots: config.benchmarkBaselineSnapshotsEnabled,
690
+ benchmarkDeltaReporter: config.benchmarkDeltaReporterEnabled,
691
+ memoryRedTeamBench: config.memoryRedTeamBenchEnabled,
692
+ });
693
+ }
694
+
695
+ // ---------------------------------------------------------------------------
696
+ // Utility-learning capability set (issue #1523 batch 7).
697
+ //
698
+ // The two utility-learning flags gate memory utility learning and
699
+ // promotion-by-outcome. Read sites span orchestrator, CLI research-status
700
+ // commands, and maintenance files. Both flags are non-optional booleans.
701
+ // ---------------------------------------------------------------------------
702
+
703
+ /**
704
+ * Frozen projection of utility-learning feature gates (issue #1523 batch 7).
705
+ */
706
+ export interface UtilityLearningCapabilitySet {
707
+ /** `memoryUtilityLearningEnabled` — learn memory utility weights from outcomes. */
708
+ readonly memoryUtilityLearning: boolean;
709
+ /** `promotionByOutcomeEnabled` — promote memories by outcome tracking. */
710
+ readonly promotionByOutcome: boolean;
711
+ }
712
+
713
+ /**
714
+ * Config projection consumed by {@link resolveUtilityLearningCapabilities}.
715
+ */
716
+ export type UtilityLearningConfigProjection = Pick<
717
+ PluginConfig,
718
+ "memoryUtilityLearningEnabled" | "promotionByOutcomeEnabled"
719
+ >;
720
+
721
+ /**
722
+ * Resolve the {@link UtilityLearningCapabilitySet} from parsed config.
723
+ */
724
+ export function resolveUtilityLearningCapabilities(config: UtilityLearningConfigProjection): UtilityLearningCapabilitySet {
725
+ return Object.freeze({
726
+ memoryUtilityLearning: config.memoryUtilityLearningEnabled,
727
+ promotionByOutcome: config.promotionByOutcomeEnabled,
728
+ });
729
+ }
730
+
731
+ // ---------------------------------------------------------------------------
732
+ // Objective-state capability set (issue #1523 batch 7).
733
+ //
734
+ // The three objective-state flags gate objective-state memory, snapshot
735
+ // writes, and recall. Read sites span orchestrator, access-service, CLI
736
+ // creation-ledger commands, and research-status commands. All flags are
737
+ // non-optional booleans.
738
+ // ---------------------------------------------------------------------------
739
+
740
+ /**
741
+ * Frozen projection of objective-state feature gates (issue #1523 batch 7).
742
+ */
743
+ export interface ObjectiveStateCapabilitySet {
744
+ /** `objectiveStateMemoryEnabled` — store objective-state memories. */
745
+ readonly objectiveStateMemory: boolean;
746
+ /** `objectiveStateSnapshotWritesEnabled` — write objective-state snapshots. */
747
+ readonly objectiveStateSnapshotWrites: boolean;
748
+ /** `objectiveStateRecallEnabled` — recall objective-state memories. */
749
+ readonly objectiveStateRecall: boolean;
750
+ }
751
+
752
+ /**
753
+ * Config projection consumed by {@link resolveObjectiveStateCapabilities}.
754
+ */
755
+ export type ObjectiveStateConfigProjection = Pick<
756
+ PluginConfig,
757
+ "objectiveStateMemoryEnabled" | "objectiveStateSnapshotWritesEnabled" | "objectiveStateRecallEnabled"
758
+ >;
759
+
760
+ /**
761
+ * Resolve the {@link ObjectiveStateCapabilitySet} from parsed config.
762
+ */
763
+ export function resolveObjectiveStateCapabilities(config: ObjectiveStateConfigProjection): ObjectiveStateCapabilitySet {
764
+ return Object.freeze({
765
+ objectiveStateMemory: config.objectiveStateMemoryEnabled,
766
+ objectiveStateSnapshotWrites: config.objectiveStateSnapshotWritesEnabled,
767
+ objectiveStateRecall: config.objectiveStateRecallEnabled,
768
+ });
769
+ }
770
+
771
+ // ---------------------------------------------------------------------------
772
+ // Compression capability set (issue #1523 batch 7).
773
+ //
774
+ // The three compression flags gate guideline learning, semantic refinement,
775
+ // and context-compression actions. Read sites span orchestrator,
776
+ // access-service, and the compression-guideline coordinator. All flags are
777
+ // non-optional booleans.
778
+ // ---------------------------------------------------------------------------
779
+
780
+ /**
781
+ * Frozen projection of compression feature gates (issue #1523 batch 7).
782
+ */
783
+ export interface CompressionCapabilitySet {
784
+ /** `compressionGuidelineLearningEnabled` — learn compression guidelines. */
785
+ readonly compressionGuidelineLearning: boolean;
786
+ /** `compressionGuidelineSemanticRefinementEnabled` — semantically refine guidelines. */
787
+ readonly compressionGuidelineSemanticRefinement: boolean;
788
+ /** `contextCompressionActionsEnabled` — apply context-compression actions. */
789
+ readonly contextCompressionActions: boolean;
790
+ }
791
+
792
+ /**
793
+ * Config projection consumed by {@link resolveCompressionCapabilities}.
794
+ */
795
+ export type CompressionConfigProjection = Pick<
796
+ PluginConfig,
797
+ "compressionGuidelineLearningEnabled" | "compressionGuidelineSemanticRefinementEnabled" | "contextCompressionActionsEnabled"
798
+ >;
799
+
800
+ /**
801
+ * Resolve the {@link CompressionCapabilitySet} from parsed config.
802
+ */
803
+ export function resolveCompressionCapabilities(config: CompressionConfigProjection): CompressionCapabilitySet {
804
+ return Object.freeze({
805
+ compressionGuidelineLearning: config.compressionGuidelineLearningEnabled,
806
+ compressionGuidelineSemanticRefinement: config.compressionGuidelineSemanticRefinementEnabled,
807
+ contextCompressionActions: config.contextCompressionActionsEnabled,
808
+ });
809
+ }
@@ -20,7 +20,7 @@ import type { CliCommand } from "../cli.js";
20
20
  import type { CommitmentLedgerEntry } from "../commitment-ledger.js";
21
21
  import type { WorkProductLedgerEntry } from "../work-product-ledger.js";
22
22
  import type { ResumeBundle } from "../resume-bundles.js";
23
- import { resolveCreationMemoryCapabilities } from "../capabilities.js";
23
+ import { resolveCreationMemoryCapabilities, resolveObjectiveStateCapabilities} from "../capabilities.js";
24
24
  import {
25
25
  runResumeBundleStatusCliCommand,
26
26
  runResumeBundleRecordCliCommand,
@@ -131,7 +131,7 @@ cmd
131
131
  creationMemoryEnabled: resolveCreationMemoryCapabilities(orchestrator.config).creationMemory,
132
132
  resumeBundlesEnabled: resolveCreationMemoryCapabilities(orchestrator.config).resumeBundles,
133
133
  transcriptEnabled: orchestrator.config.transcriptEnabled,
134
- objectiveStateMemoryEnabled: orchestrator.config.objectiveStateMemoryEnabled,
134
+ objectiveStateMemoryEnabled: resolveObjectiveStateCapabilities(orchestrator.config).objectiveStateMemory,
135
135
  commitmentLedgerEnabled: resolveCreationMemoryCapabilities(orchestrator.config).commitmentLedger,
136
136
  bundleId: String(options.bundleId ?? ""),
137
137
  recordedAt: String(options.recordedAt ?? ""),
@@ -18,7 +18,7 @@
18
18
  */
19
19
 
20
20
  import type { Orchestrator } from "../orchestrator.js";
21
- import { resolveCapabilities } from "../capabilities.js";
21
+ import { resolveCapabilities, resolveSecurityCapabilities, resolveUtilityLearningCapabilities, resolveObjectiveStateCapabilities} from "../capabilities.js";
22
22
  import type { CliCommand } from "../cli.js";
23
23
  import type { UtilityTelemetryEvent } from "../utility-telemetry.js";
24
24
  import {
@@ -53,8 +53,8 @@ cmd
53
53
  const status = await runObjectiveStateStatusCliCommand({
54
54
  memoryDir: orchestrator.config.memoryDir,
55
55
  objectiveStateStoreDir: orchestrator.config.objectiveStateStoreDir,
56
- objectiveStateMemoryEnabled: orchestrator.config.objectiveStateMemoryEnabled,
57
- objectiveStateSnapshotWritesEnabled: orchestrator.config.objectiveStateSnapshotWritesEnabled,
56
+ objectiveStateMemoryEnabled: resolveObjectiveStateCapabilities(orchestrator.config).objectiveStateMemory,
57
+ objectiveStateSnapshotWritesEnabled: resolveObjectiveStateCapabilities(orchestrator.config).objectiveStateSnapshotWrites,
58
58
  });
59
59
  console.log(JSON.stringify(status, null, 2));
60
60
  console.log("OK");
@@ -80,9 +80,9 @@ cmd
80
80
  const status = await runTrustZoneStatusCliCommand({
81
81
  memoryDir: orchestrator.config.memoryDir,
82
82
  trustZoneStoreDir: orchestrator.config.trustZoneStoreDir,
83
- trustZonesEnabled: orchestrator.config.trustZonesEnabled,
84
- quarantinePromotionEnabled: orchestrator.config.quarantinePromotionEnabled,
85
- memoryPoisoningDefenseEnabled: orchestrator.config.memoryPoisoningDefenseEnabled,
83
+ trustZonesEnabled: resolveSecurityCapabilities(orchestrator.config).trustZones,
84
+ quarantinePromotionEnabled: resolveSecurityCapabilities(orchestrator.config).quarantinePromotion,
85
+ memoryPoisoningDefenseEnabled: resolveSecurityCapabilities(orchestrator.config).memoryPoisoningDefense,
86
86
  });
87
87
  console.log(JSON.stringify(status, null, 2));
88
88
  console.log("OK");
@@ -99,7 +99,7 @@ cmd
99
99
  const result = await runTrustZoneDemoSeedCliCommand({
100
100
  memoryDir: orchestrator.config.memoryDir,
101
101
  trustZoneStoreDir: orchestrator.config.trustZoneStoreDir,
102
- trustZonesEnabled: orchestrator.config.trustZonesEnabled,
102
+ trustZonesEnabled: resolveSecurityCapabilities(orchestrator.config).trustZones,
103
103
  scenario: typeof options.scenario === "string" ? options.scenario : undefined,
104
104
  recordedAt: typeof options.recordedAt === "string" ? options.recordedAt : undefined,
105
105
  dryRun: options.dryRun === true,
@@ -167,8 +167,8 @@ cmd
167
167
  .action(async () => {
168
168
  const status = await runUtilityTelemetryStatusCliCommand({
169
169
  memoryDir: orchestrator.config.memoryDir,
170
- memoryUtilityLearningEnabled: orchestrator.config.memoryUtilityLearningEnabled,
171
- promotionByOutcomeEnabled: orchestrator.config.promotionByOutcomeEnabled,
170
+ memoryUtilityLearningEnabled: resolveUtilityLearningCapabilities(orchestrator.config).memoryUtilityLearning,
171
+ promotionByOutcomeEnabled: resolveUtilityLearningCapabilities(orchestrator.config).promotionByOutcome,
172
172
  });
173
173
  console.log(JSON.stringify(status, null, 2));
174
174
  console.log("OK");
@@ -196,7 +196,7 @@ cmd
196
196
  : Number.NaN;
197
197
  const filePath = await runUtilityTelemetryRecordCliCommand({
198
198
  memoryDir: orchestrator.config.memoryDir,
199
- memoryUtilityLearningEnabled: orchestrator.config.memoryUtilityLearningEnabled,
199
+ memoryUtilityLearningEnabled: resolveUtilityLearningCapabilities(orchestrator.config).memoryUtilityLearning,
200
200
  event: {
201
201
  schemaVersion: 1,
202
202
  eventId: String(options.eventId ?? ""),
@@ -223,8 +223,8 @@ cmd
223
223
  .action(async () => {
224
224
  const status = await runUtilityLearningStatusCliCommand({
225
225
  memoryDir: orchestrator.config.memoryDir,
226
- memoryUtilityLearningEnabled: orchestrator.config.memoryUtilityLearningEnabled,
227
- promotionByOutcomeEnabled: orchestrator.config.promotionByOutcomeEnabled,
226
+ memoryUtilityLearningEnabled: resolveUtilityLearningCapabilities(orchestrator.config).memoryUtilityLearning,
227
+ promotionByOutcomeEnabled: resolveUtilityLearningCapabilities(orchestrator.config).promotionByOutcome,
228
228
  });
229
229
  console.log(JSON.stringify(status, null, 2));
230
230
  console.log("OK");
@@ -249,7 +249,7 @@ cmd
249
249
  : 0.35;
250
250
  const result = await runUtilityLearningCliCommand({
251
251
  memoryDir: orchestrator.config.memoryDir,
252
- memoryUtilityLearningEnabled: orchestrator.config.memoryUtilityLearningEnabled,
252
+ memoryUtilityLearningEnabled: resolveUtilityLearningCapabilities(orchestrator.config).memoryUtilityLearning,
253
253
  learningWindowDays,
254
254
  minEventCount,
255
255
  maxWeightMagnitude,
package/src/cli.ts CHANGED
@@ -8,7 +8,7 @@ import {
8
8
  resolveNamespaceCapabilities,
9
9
  resolveMemoryLifecycleCapabilities,
10
10
  resolveIdentityContinuityCapabilities,
11
- } from "./capabilities.js";
11
+ resolveSecurityCapabilities, resolveEvalCapabilities} from "./capabilities.js";
12
12
  import { ThreadingManager } from "./threading.js";
13
13
  import { utcDayRange } from "./transcript.js";
14
14
  import { runWearablesCliCommand } from "./wearables/cli.js";
@@ -5384,10 +5384,10 @@ export function registerCli(
5384
5384
  const status = await runBenchmarkStatusCliCommand({
5385
5385
  memoryDir: orchestrator.config.memoryDir,
5386
5386
  evalStoreDir: orchestrator.config.evalStoreDir,
5387
- evalHarnessEnabled: orchestrator.config.evalHarnessEnabled,
5388
- evalShadowModeEnabled: orchestrator.config.evalShadowModeEnabled,
5389
- benchmarkBaselineSnapshotsEnabled: orchestrator.config.benchmarkBaselineSnapshotsEnabled,
5390
- memoryRedTeamBenchEnabled: orchestrator.config.memoryRedTeamBenchEnabled,
5387
+ evalHarnessEnabled: resolveEvalCapabilities(orchestrator.config).evalHarness,
5388
+ evalShadowModeEnabled: resolveEvalCapabilities(orchestrator.config).evalShadowMode,
5389
+ benchmarkBaselineSnapshotsEnabled: resolveEvalCapabilities(orchestrator.config).benchmarkBaselineSnapshots,
5390
+ memoryRedTeamBenchEnabled: resolveEvalCapabilities(orchestrator.config).memoryRedTeamBench,
5391
5391
  });
5392
5392
  console.log(JSON.stringify(status, null, 2));
5393
5393
  console.log("OK");
@@ -5415,11 +5415,11 @@ export function registerCli(
5415
5415
  config: {
5416
5416
  memoryDir: orchestrator.config.memoryDir,
5417
5417
  evalStoreDir: orchestrator.config.evalStoreDir,
5418
- evalHarnessEnabled: orchestrator.config.evalHarnessEnabled,
5419
- evalShadowModeEnabled: orchestrator.config.evalShadowModeEnabled,
5420
- benchmarkBaselineSnapshotsEnabled: orchestrator.config.benchmarkBaselineSnapshotsEnabled,
5421
- benchmarkDeltaReporterEnabled: orchestrator.config.benchmarkDeltaReporterEnabled,
5422
- memoryRedTeamBenchEnabled: orchestrator.config.memoryRedTeamBenchEnabled,
5418
+ evalHarnessEnabled: resolveEvalCapabilities(orchestrator.config).evalHarness,
5419
+ evalShadowModeEnabled: resolveEvalCapabilities(orchestrator.config).evalShadowMode,
5420
+ benchmarkBaselineSnapshotsEnabled: resolveEvalCapabilities(orchestrator.config).benchmarkBaselineSnapshots,
5421
+ benchmarkDeltaReporterEnabled: resolveEvalCapabilities(orchestrator.config).benchmarkDeltaReporter,
5422
+ memoryRedTeamBenchEnabled: resolveEvalCapabilities(orchestrator.config).memoryRedTeamBench,
5423
5423
  },
5424
5424
  validatePath: typeof options.validate === "string" ? options.validate : undefined,
5425
5425
  baseEvalStoreDir: typeof options.base === "string" ? options.base : undefined,
@@ -6128,7 +6128,7 @@ export function registerCli(
6128
6128
  const inputPath = args[0];
6129
6129
  const summary = await runBenchmarkValidateCliCommand({
6130
6130
  path: typeof inputPath === "string" ? inputPath : "",
6131
- memoryRedTeamBenchEnabled: orchestrator.config.memoryRedTeamBenchEnabled,
6131
+ memoryRedTeamBenchEnabled: resolveEvalCapabilities(orchestrator.config).memoryRedTeamBench,
6132
6132
  });
6133
6133
  console.log(JSON.stringify(summary, null, 2));
6134
6134
  console.log("OK");
@@ -6146,7 +6146,7 @@ export function registerCli(
6146
6146
  const summary = await runBenchmarkBaselineSnapshotCliCommand({
6147
6147
  memoryDir: orchestrator.config.memoryDir,
6148
6148
  evalStoreDir: orchestrator.config.evalStoreDir,
6149
- benchmarkBaselineSnapshotsEnabled: orchestrator.config.benchmarkBaselineSnapshotsEnabled,
6149
+ benchmarkBaselineSnapshotsEnabled: resolveEvalCapabilities(orchestrator.config).benchmarkBaselineSnapshots,
6150
6150
  snapshotId: typeof options.snapshotId === "string" ? options.snapshotId : "",
6151
6151
  createdAt: typeof options.createdAt === "string" ? options.createdAt : undefined,
6152
6152
  gitRef: typeof options.gitRef === "string" ? options.gitRef : undefined,
@@ -6169,7 +6169,7 @@ export function registerCli(
6169
6169
  memoryDir: orchestrator.config.memoryDir,
6170
6170
  evalStoreDir: orchestrator.config.evalStoreDir,
6171
6171
  force: options.force === true,
6172
- memoryRedTeamBenchEnabled: orchestrator.config.memoryRedTeamBenchEnabled,
6172
+ memoryRedTeamBenchEnabled: resolveEvalCapabilities(orchestrator.config).memoryRedTeamBench,
6173
6173
  });
6174
6174
  console.log(JSON.stringify(summary, null, 2));
6175
6175
  console.log("OK");
@@ -6202,7 +6202,7 @@ export function registerCli(
6202
6202
  const summary = await runBenchmarkBaselineReportCliCommand({
6203
6203
  memoryDir: orchestrator.config.memoryDir,
6204
6204
  evalStoreDir: orchestrator.config.evalStoreDir,
6205
- benchmarkDeltaReporterEnabled: orchestrator.config.benchmarkDeltaReporterEnabled,
6205
+ benchmarkDeltaReporterEnabled: resolveEvalCapabilities(orchestrator.config).benchmarkDeltaReporter,
6206
6206
  snapshotId: typeof options.snapshotId === "string" ? options.snapshotId : "",
6207
6207
  });
6208
6208
  const { markdownReport, ...jsonSummary } = summary;
@@ -6232,9 +6232,9 @@ export function registerCli(
6232
6232
  const result = await runTrustZonePromoteCliCommand({
6233
6233
  memoryDir: orchestrator.config.memoryDir,
6234
6234
  trustZoneStoreDir: orchestrator.config.trustZoneStoreDir,
6235
- trustZonesEnabled: orchestrator.config.trustZonesEnabled,
6236
- quarantinePromotionEnabled: orchestrator.config.quarantinePromotionEnabled,
6237
- memoryPoisoningDefenseEnabled: orchestrator.config.memoryPoisoningDefenseEnabled,
6235
+ trustZonesEnabled: resolveSecurityCapabilities(orchestrator.config).trustZones,
6236
+ quarantinePromotionEnabled: resolveSecurityCapabilities(orchestrator.config).quarantinePromotion,
6237
+ memoryPoisoningDefenseEnabled: resolveSecurityCapabilities(orchestrator.config).memoryPoisoningDefense,
6238
6238
  sourceRecordId: String(options.recordId ?? ""),
6239
6239
  targetZone: String(options.targetZone ?? "") as TrustZoneName,
6240
6240
  promotionReason: String(options.reason ?? ""),
@@ -21,7 +21,7 @@ import { access, mkdir, readFile, unlink, writeFile } from "node:fs/promises";
21
21
  import {
22
22
  resolveMemoryLifecycleCapabilities,
23
23
  resolveQmdCapabilities,
24
- } from "../capabilities.js";
24
+ resolveUtilityLearningCapabilities} from "../capabilities.js";
25
25
  import type { StorageManager } from "../storage.js";
26
26
  import type { PluginConfig } from "../types.js";
27
27
  import {
@@ -145,8 +145,8 @@ async function buildTierRoutingPolicy(config: PluginConfig): Promise<TierRouting
145
145
  };
146
146
  const runtime = await loadUtilityRuntimeValues({
147
147
  memoryDir: config.memoryDir,
148
- memoryUtilityLearningEnabled: config.memoryUtilityLearningEnabled,
149
- promotionByOutcomeEnabled: config.promotionByOutcomeEnabled,
148
+ memoryUtilityLearningEnabled: resolveUtilityLearningCapabilities(config).memoryUtilityLearning,
149
+ promotionByOutcomeEnabled: resolveUtilityLearningCapabilities(config).promotionByOutcome,
150
150
  });
151
151
  return applyUtilityPromotionRuntimePolicy(basePolicy, runtime);
152
152
  }
@@ -25,7 +25,7 @@ import {
25
25
  type TierRoutingPolicy,
26
26
  type TierTransitionDecision,
27
27
  } from "../tier-routing.js";
28
- import { resolveQmdCapabilities } from "../capabilities.js";
28
+ import { resolveQmdCapabilities, resolveUtilityLearningCapabilities} from "../capabilities.js";
29
29
  import {
30
30
  applyUtilityPromotionRuntimePolicy,
31
31
  loadUtilityRuntimeValues,
@@ -90,8 +90,8 @@ async function tierRoutingPolicyFromConfig(
90
90
  };
91
91
  const runtime = await loadUtilityRuntimeValues({
92
92
  memoryDir: config.memoryDir,
93
- memoryUtilityLearningEnabled: config.memoryUtilityLearningEnabled,
94
- promotionByOutcomeEnabled: config.promotionByOutcomeEnabled,
93
+ memoryUtilityLearningEnabled: resolveUtilityLearningCapabilities(config).memoryUtilityLearning,
94
+ promotionByOutcomeEnabled: resolveUtilityLearningCapabilities(config).promotionByOutcome,
95
95
  });
96
96
  return applyUtilityPromotionRuntimePolicy(basePolicy, runtime);
97
97
  }