@remnic/core 9.3.739 → 9.3.740

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 (185) hide show
  1. package/dist/access-boundary.js +13 -13
  2. package/dist/access-cli.js +35 -35
  3. package/dist/access-http.js +18 -18
  4. package/dist/access-mcp.js +17 -17
  5. package/dist/access-operations-batch.js +15 -15
  6. package/dist/access-operations.js +16 -16
  7. package/dist/access-service.js +12 -12
  8. package/dist/active-memory-bridge.js +3 -3
  9. package/dist/briefing.js +2 -2
  10. package/dist/buffer.js +2 -2
  11. package/dist/capabilities.d.ts +97 -1
  12. package/dist/capabilities.js +7 -1
  13. package/dist/causal-consolidation.js +4 -3
  14. package/dist/causal-consolidation.js.map +1 -1
  15. package/dist/{chunk-IFCM6OLK.js → chunk-3TUDKDTQ.js} +7 -7
  16. package/dist/{chunk-A7INTIC5.js → chunk-4J53ZVPQ.js} +3 -3
  17. package/dist/{chunk-XYUFGHUW.js → chunk-56F6EAQ6.js} +2 -2
  18. package/dist/{chunk-F6OEXJQQ.js → chunk-6XG3NQRC.js} +2 -2
  19. package/dist/{chunk-24ZLC5QN.js → chunk-7N7S2RKF.js} +2 -2
  20. package/dist/{chunk-Y5OOHER4.js → chunk-7Y5KKMIP.js} +12 -11
  21. package/dist/chunk-7Y5KKMIP.js.map +1 -0
  22. package/dist/{chunk-VRBBZH4U.js → chunk-AX4TRSRE.js} +3 -3
  23. package/dist/{chunk-66RZ4EIT.js → chunk-BE6NEQLF.js} +3 -3
  24. package/dist/{chunk-YF2MMBKA.js → chunk-BJPL5WAL.js} +3 -3
  25. package/dist/{chunk-EO5QWINU.js → chunk-C3Z5YJSM.js} +5 -2
  26. package/dist/chunk-C3Z5YJSM.js.map +1 -0
  27. package/dist/{chunk-GEXI357K.js → chunk-C7C5WIIF.js} +2 -2
  28. package/dist/{chunk-L3TYGUTH.js → chunk-CMPXLMC3.js} +3 -3
  29. package/dist/{chunk-W2FBVBQ4.js → chunk-DBVBV2RF.js} +4 -4
  30. package/dist/{chunk-JQSP7YBJ.js → chunk-ELL5VYXC.js} +5 -4
  31. package/dist/chunk-ELL5VYXC.js.map +1 -0
  32. package/dist/{chunk-IQOEW5YV.js → chunk-FCQ7ZYCQ.js} +2 -2
  33. package/dist/{chunk-IIBFCZA7.js → chunk-FWXLKH2H.js} +3 -3
  34. package/dist/{chunk-RJBW4EOU.js → chunk-G7Q4D2G3.js} +74 -2
  35. package/dist/{chunk-RJBW4EOU.js.map → chunk-G7Q4D2G3.js.map} +1 -1
  36. package/dist/{chunk-WVAEIKUY.js → chunk-GPX5E36D.js} +5 -4
  37. package/dist/chunk-GPX5E36D.js.map +1 -0
  38. package/dist/{chunk-23PLOBWT.js → chunk-H3WSZWHK.js} +22 -20
  39. package/dist/chunk-H3WSZWHK.js.map +1 -0
  40. package/dist/{chunk-Q6BAA57B.js → chunk-JFCS6PQU.js} +2 -2
  41. package/dist/chunk-JFCS6PQU.js.map +1 -0
  42. package/dist/{chunk-CKHPUOAP.js → chunk-K2N6WIZM.js} +3 -3
  43. package/dist/{chunk-BHJAMSVC.js → chunk-LD6A7XG5.js} +7 -7
  44. package/dist/{chunk-AKKFHN3I.js → chunk-M4WI23X3.js} +2 -2
  45. package/dist/{chunk-N2O23WYA.js → chunk-M5KLYHHI.js} +2 -2
  46. package/dist/{chunk-TNLXCSXV.js → chunk-O4IWVWSW.js} +5 -4
  47. package/dist/chunk-O4IWVWSW.js.map +1 -0
  48. package/dist/{chunk-OQQRWPFZ.js → chunk-OS5RKJOH.js} +2 -2
  49. package/dist/{chunk-MAU7DFCJ.js → chunk-OT5K26NG.js} +5 -4
  50. package/dist/chunk-OT5K26NG.js.map +1 -0
  51. package/dist/{chunk-DS3FZ7GS.js → chunk-OUSOMUFV.js} +2 -2
  52. package/dist/{chunk-7B7IPPN5.js → chunk-OVYBENIJ.js} +3 -3
  53. package/dist/{chunk-5RZOFIDL.js → chunk-PI4JHLDD.js} +6 -3
  54. package/dist/chunk-PI4JHLDD.js.map +1 -0
  55. package/dist/{chunk-EU543UDC.js → chunk-QCO2QFLZ.js} +7 -7
  56. package/dist/chunk-QCO2QFLZ.js.map +1 -0
  57. package/dist/{chunk-YXOXAQ5Y.js → chunk-TQQN64J2.js} +5 -4
  58. package/dist/chunk-TQQN64J2.js.map +1 -0
  59. package/dist/{chunk-WDJCZQB4.js → chunk-UGFPGWJB.js} +2 -2
  60. package/dist/{chunk-75PDC7VT.js → chunk-UOVDO6TC.js} +6 -5
  61. package/dist/chunk-UOVDO6TC.js.map +1 -0
  62. package/dist/{chunk-BVG2IZOB.js → chunk-USHVHI6J.js} +7 -6
  63. package/dist/chunk-USHVHI6J.js.map +1 -0
  64. package/dist/{chunk-56LP72AD.js → chunk-UYYSOMS2.js} +4 -4
  65. package/dist/{chunk-IEWUPZ75.js → chunk-VC7QELR6.js} +77 -74
  66. package/dist/chunk-VC7QELR6.js.map +1 -0
  67. package/dist/{chunk-XIQAOGAA.js → chunk-WGDE2TJP.js} +7 -6
  68. package/dist/chunk-WGDE2TJP.js.map +1 -0
  69. package/dist/{chunk-UFS7OXGL.js → chunk-WHEF76BQ.js} +5 -2
  70. package/dist/chunk-WHEF76BQ.js.map +1 -0
  71. package/dist/{chunk-QTJOORGN.js → chunk-WIMKOTNY.js} +2 -2
  72. package/dist/{chunk-GXTYEG7Q.js → chunk-WO22UEM3.js} +2 -2
  73. package/dist/{chunk-BHQQVUEQ.js → chunk-X5PMDVY4.js} +6 -5
  74. package/dist/{chunk-BHQQVUEQ.js.map → chunk-X5PMDVY4.js.map} +1 -1
  75. package/dist/{chunk-C53JDEH3.js → chunk-Y62QPRKV.js} +2 -2
  76. package/dist/{chunk-WFNH4UDF.js → chunk-Y6PNYJVO.js} +3 -3
  77. package/dist/{chunk-6YKIYQU7.js → chunk-YNHRWFAP.js} +5 -2
  78. package/dist/{chunk-6YKIYQU7.js.map → chunk-YNHRWFAP.js.map} +1 -1
  79. package/dist/cli.js +29 -29
  80. package/dist/compounding/engine.js +4 -4
  81. package/dist/connectors/codex-materialize-runner.js +2 -2
  82. package/dist/connectors/index.js +4 -3
  83. package/dist/contradiction/index.js +2 -2
  84. package/dist/{contradiction-scan-CWO3LIWV.js → contradiction-scan-UERKJESC.js} +3 -3
  85. package/dist/day-summary.js +2 -1
  86. package/dist/embedding-fallback.js +2 -2
  87. package/dist/entity-retrieval.js +3 -3
  88. package/dist/explicit-capture.js +2 -2
  89. package/dist/extraction.js +4 -4
  90. package/dist/{first-start-migration-5DXD3TF2.js → first-start-migration-GQ3UQNIL.js} +2 -2
  91. package/dist/index.js +45 -45
  92. package/dist/local-llm.js +2 -2
  93. package/dist/maintenance/memory-governance.js +2 -2
  94. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +2 -2
  95. package/dist/maintenance/rebuild-memory-projection.js +3 -3
  96. package/dist/namespaces/migrate.js +7 -7
  97. package/dist/namespaces/principal.js +2 -2
  98. package/dist/namespaces/search.js +4 -4
  99. package/dist/namespaces/storage.js +3 -3
  100. package/dist/operator-toolkit.js +13 -13
  101. package/dist/orchestration/compression-guideline-coordinator.js +2 -2
  102. package/dist/orchestration/maintenance.js +7 -7
  103. package/dist/orchestrator.js +29 -29
  104. package/dist/schemas.d.ts +22 -22
  105. package/dist/search/embed-helper.js +2 -2
  106. package/dist/search/factory.js +3 -3
  107. package/dist/search/index.js +3 -3
  108. package/dist/semantic-consolidation.js +4 -3
  109. package/dist/semantic-rule-promotion.js +2 -2
  110. package/dist/semantic-rule-verifier.js +2 -2
  111. package/dist/shared-context/manager.js +2 -1
  112. package/dist/storage.d.ts +1 -1
  113. package/dist/storage.js +1 -1
  114. package/dist/summarizer.js +3 -3
  115. package/dist/{tier-stats-QID73BBB.js → tier-stats-CSKL7BDG.js} +2 -2
  116. package/dist/transfer/types.d.ts +12 -12
  117. package/dist/verified-recall.js +2 -2
  118. package/package.json +2 -2
  119. package/src/access-service.ts +2 -1
  120. package/src/capabilities.test.ts +166 -0
  121. package/src/capabilities.ts +267 -0
  122. package/src/cli/research-status-commands.ts +2 -1
  123. package/src/cli.ts +3 -2
  124. package/src/compounding/engine.ts +2 -1
  125. package/src/connectors/codex-marketplace.ts +2 -1
  126. package/src/day-summary.ts +2 -1
  127. package/src/embedding-fallback.ts +2 -1
  128. package/src/extraction.ts +3 -2
  129. package/src/local-llm.ts +2 -1
  130. package/src/maintenance/namespace-maintenance-fanout.ts +2 -1
  131. package/src/maintenance/namespace-planner.ts +2 -1
  132. package/src/operator-toolkit.ts +1 -0
  133. package/src/orchestration/semantic-consolidation-coordinator.ts +3 -2
  134. package/src/orchestrator.ts +50 -46
  135. package/src/search/embed-helper.ts +2 -1
  136. package/src/search/factory.ts +2 -1
  137. package/src/semantic-consolidation.ts +2 -1
  138. package/src/shared-context/manager.ts +3 -2
  139. package/src/storage.ts +1 -1
  140. package/src/summarizer.ts +3 -2
  141. package/dist/chunk-23PLOBWT.js.map +0 -1
  142. package/dist/chunk-5RZOFIDL.js.map +0 -1
  143. package/dist/chunk-75PDC7VT.js.map +0 -1
  144. package/dist/chunk-BVG2IZOB.js.map +0 -1
  145. package/dist/chunk-EO5QWINU.js.map +0 -1
  146. package/dist/chunk-EU543UDC.js.map +0 -1
  147. package/dist/chunk-IEWUPZ75.js.map +0 -1
  148. package/dist/chunk-JQSP7YBJ.js.map +0 -1
  149. package/dist/chunk-MAU7DFCJ.js.map +0 -1
  150. package/dist/chunk-Q6BAA57B.js.map +0 -1
  151. package/dist/chunk-TNLXCSXV.js.map +0 -1
  152. package/dist/chunk-UFS7OXGL.js.map +0 -1
  153. package/dist/chunk-WVAEIKUY.js.map +0 -1
  154. package/dist/chunk-XIQAOGAA.js.map +0 -1
  155. package/dist/chunk-Y5OOHER4.js.map +0 -1
  156. package/dist/chunk-YXOXAQ5Y.js.map +0 -1
  157. /package/dist/{chunk-IFCM6OLK.js.map → chunk-3TUDKDTQ.js.map} +0 -0
  158. /package/dist/{chunk-A7INTIC5.js.map → chunk-4J53ZVPQ.js.map} +0 -0
  159. /package/dist/{chunk-XYUFGHUW.js.map → chunk-56F6EAQ6.js.map} +0 -0
  160. /package/dist/{chunk-F6OEXJQQ.js.map → chunk-6XG3NQRC.js.map} +0 -0
  161. /package/dist/{chunk-24ZLC5QN.js.map → chunk-7N7S2RKF.js.map} +0 -0
  162. /package/dist/{chunk-VRBBZH4U.js.map → chunk-AX4TRSRE.js.map} +0 -0
  163. /package/dist/{chunk-66RZ4EIT.js.map → chunk-BE6NEQLF.js.map} +0 -0
  164. /package/dist/{chunk-YF2MMBKA.js.map → chunk-BJPL5WAL.js.map} +0 -0
  165. /package/dist/{chunk-GEXI357K.js.map → chunk-C7C5WIIF.js.map} +0 -0
  166. /package/dist/{chunk-L3TYGUTH.js.map → chunk-CMPXLMC3.js.map} +0 -0
  167. /package/dist/{chunk-W2FBVBQ4.js.map → chunk-DBVBV2RF.js.map} +0 -0
  168. /package/dist/{chunk-IQOEW5YV.js.map → chunk-FCQ7ZYCQ.js.map} +0 -0
  169. /package/dist/{chunk-IIBFCZA7.js.map → chunk-FWXLKH2H.js.map} +0 -0
  170. /package/dist/{chunk-CKHPUOAP.js.map → chunk-K2N6WIZM.js.map} +0 -0
  171. /package/dist/{chunk-BHJAMSVC.js.map → chunk-LD6A7XG5.js.map} +0 -0
  172. /package/dist/{chunk-AKKFHN3I.js.map → chunk-M4WI23X3.js.map} +0 -0
  173. /package/dist/{chunk-N2O23WYA.js.map → chunk-M5KLYHHI.js.map} +0 -0
  174. /package/dist/{chunk-OQQRWPFZ.js.map → chunk-OS5RKJOH.js.map} +0 -0
  175. /package/dist/{chunk-DS3FZ7GS.js.map → chunk-OUSOMUFV.js.map} +0 -0
  176. /package/dist/{chunk-7B7IPPN5.js.map → chunk-OVYBENIJ.js.map} +0 -0
  177. /package/dist/{chunk-WDJCZQB4.js.map → chunk-UGFPGWJB.js.map} +0 -0
  178. /package/dist/{chunk-56LP72AD.js.map → chunk-UYYSOMS2.js.map} +0 -0
  179. /package/dist/{chunk-QTJOORGN.js.map → chunk-WIMKOTNY.js.map} +0 -0
  180. /package/dist/{chunk-GXTYEG7Q.js.map → chunk-WO22UEM3.js.map} +0 -0
  181. /package/dist/{chunk-C53JDEH3.js.map → chunk-Y62QPRKV.js.map} +0 -0
  182. /package/dist/{chunk-WFNH4UDF.js.map → chunk-Y6PNYJVO.js.map} +0 -0
  183. /package/dist/{contradiction-scan-CWO3LIWV.js.map → contradiction-scan-UERKJESC.js.map} +0 -0
  184. /package/dist/{first-start-migration-5DXD3TF2.js.map → first-start-migration-GQ3UQNIL.js.map} +0 -0
  185. /package/dist/{tier-stats-QID73BBB.js.map → tier-stats-CSKL7BDG.js.map} +0 -0
@@ -1016,3 +1016,270 @@ export function resolveRecallAuxiliaryCapabilities(config: RecallAuxiliaryConfig
1016
1016
  cronRecallPolicy: config.cronRecallPolicyEnabled,
1017
1017
  });
1018
1018
  }
1019
+
1020
+ // ---------------------------------------------------------------------------
1021
+ // RecallEnhancement capability set (issue #1523 batch 9).
1022
+ //
1023
+ // These 24 flags gate recall enrichment, memory reconstruction, entity
1024
+ // relationships, causal trajectory recall, CMC retrieval, and related
1025
+ // enhancement paths. Read sites span orchestrator, access-service, graph-recall,
1026
+ // and CLI research-status commands. All flags are non-optional booleans on
1027
+ // PluginConfig (defaults resolved at the parse boundary), so the projection
1028
+ // is a pure pass-through.
1029
+ // ---------------------------------------------------------------------------
1030
+
1031
+ /**
1032
+ * Frozen projection of recall-enhancement feature gates (issue #1523 batch 9).
1033
+ */
1034
+ export interface RecallEnhancementCapabilitySet {
1035
+ readonly explicitCueRecall: boolean;
1036
+ readonly targetedFactRecall: boolean;
1037
+ readonly focusedListRecall: boolean;
1038
+ readonly responseGuidanceRecall: boolean;
1039
+ readonly eventOrderRecall: boolean;
1040
+ readonly reinforcementRecallBoost: boolean;
1041
+ readonly recallPlannerTelemetry: boolean;
1042
+ readonly peerProfileRecall: boolean;
1043
+ readonly graphAssistShadowEval: boolean;
1044
+ readonly memoryReconstruction: boolean;
1045
+ readonly memoryLinking: boolean;
1046
+ readonly causalTrajectoryRecall: boolean;
1047
+ readonly causalTrajectoryMemory: boolean;
1048
+ readonly cmcRetrieval: boolean;
1049
+ readonly contradictionDetection: boolean;
1050
+ readonly factArchival: boolean;
1051
+ readonly entityRelationships: boolean;
1052
+ readonly entityActivityLog: boolean;
1053
+ readonly compoundingInject: boolean;
1054
+ readonly accessTracking: boolean;
1055
+ readonly autoPromoteToShared: boolean;
1056
+ readonly recallGraph: boolean;
1057
+ readonly feedback: boolean;
1058
+ readonly identity: boolean;
1059
+ }
1060
+
1061
+ /**
1062
+ * Config projection consumed by {@link resolveRecallEnhancementCapabilities}.
1063
+ */
1064
+ export type RecallEnhancementConfigProjection = Pick<
1065
+ PluginConfig,
1066
+ | "explicitCueRecallEnabled"
1067
+ | "targetedFactRecallEnabled"
1068
+ | "focusedListRecallEnabled"
1069
+ | "responseGuidanceRecallEnabled"
1070
+ | "eventOrderRecallEnabled"
1071
+ | "reinforcementRecallBoostEnabled"
1072
+ | "recallPlannerTelemetryEnabled"
1073
+ | "peerProfileRecallEnabled"
1074
+ | "graphAssistShadowEvalEnabled"
1075
+ | "memoryReconstructionEnabled"
1076
+ | "memoryLinkingEnabled"
1077
+ | "causalTrajectoryRecallEnabled"
1078
+ | "causalTrajectoryMemoryEnabled"
1079
+ | "cmcRetrievalEnabled"
1080
+ | "contradictionDetectionEnabled"
1081
+ | "factArchivalEnabled"
1082
+ | "entityRelationshipsEnabled"
1083
+ | "entityActivityLogEnabled"
1084
+ | "compoundingInjectEnabled"
1085
+ | "accessTrackingEnabled"
1086
+ | "autoPromoteToSharedEnabled"
1087
+ | "recallGraphEnabled"
1088
+ | "feedbackEnabled"
1089
+ | "identityEnabled"
1090
+ >;
1091
+
1092
+ /**
1093
+ * Resolve the {@link RecallEnhancementCapabilitySet} from parsed config.
1094
+ */
1095
+ export function resolveRecallEnhancementCapabilities(config: RecallEnhancementConfigProjection): RecallEnhancementCapabilitySet {
1096
+ return Object.freeze({
1097
+ explicitCueRecall: config.explicitCueRecallEnabled,
1098
+ targetedFactRecall: config.targetedFactRecallEnabled,
1099
+ focusedListRecall: config.focusedListRecallEnabled,
1100
+ responseGuidanceRecall: config.responseGuidanceRecallEnabled,
1101
+ eventOrderRecall: config.eventOrderRecallEnabled,
1102
+ reinforcementRecallBoost: config.reinforcementRecallBoostEnabled,
1103
+ recallPlannerTelemetry: config.recallPlannerTelemetryEnabled,
1104
+ peerProfileRecall: config.peerProfileRecallEnabled,
1105
+ graphAssistShadowEval: config.graphAssistShadowEvalEnabled === true,
1106
+ memoryReconstruction: config.memoryReconstructionEnabled,
1107
+ memoryLinking: config.memoryLinkingEnabled,
1108
+ causalTrajectoryRecall: config.causalTrajectoryRecallEnabled,
1109
+ causalTrajectoryMemory: config.causalTrajectoryMemoryEnabled,
1110
+ cmcRetrieval: config.cmcRetrievalEnabled,
1111
+ contradictionDetection: config.contradictionDetectionEnabled,
1112
+ factArchival: config.factArchivalEnabled,
1113
+ entityRelationships: config.entityRelationshipsEnabled,
1114
+ entityActivityLog: config.entityActivityLogEnabled,
1115
+ compoundingInject: config.compoundingInjectEnabled,
1116
+ accessTracking: config.accessTrackingEnabled,
1117
+ autoPromoteToShared: config.autoPromoteToSharedEnabled,
1118
+ recallGraph: config.recallGraphEnabled,
1119
+ feedback: config.feedbackEnabled,
1120
+ identity: config.identityEnabled,
1121
+ });
1122
+ }
1123
+
1124
+ // ---------------------------------------------------------------------------
1125
+ // PipelineProcessing capability set (issue #1523 batch 9).
1126
+ //
1127
+ // These 22 flags gate the extraction/chunking/summarization pipeline and LLM
1128
+ // infrastructure. Read sites span orchestrator, extraction, summarizer,
1129
+ // embedding-fallback, local-llm, search, day-summary, and semantic-consolidation.
1130
+ // All flags are non-optional booleans on PluginConfig (defaults resolved at
1131
+ // the parse boundary), so the projection is a pure pass-through.
1132
+ // ---------------------------------------------------------------------------
1133
+
1134
+ /**
1135
+ * Frozen projection of pipeline-processing feature gates (issue #1523 batch 9).
1136
+ */
1137
+ export interface PipelineProcessingCapabilitySet {
1138
+ readonly chunking: boolean;
1139
+ readonly semanticChunking: boolean;
1140
+ readonly semanticDedup: boolean;
1141
+ readonly summarization: boolean;
1142
+ readonly topicExtraction: boolean;
1143
+ readonly sessionObserver: boolean;
1144
+ readonly profiling: boolean;
1145
+ readonly checkpoint: boolean;
1146
+ readonly traceWeaver: boolean;
1147
+ readonly routingRules: boolean;
1148
+ readonly inlineSourceAttribution: boolean;
1149
+ readonly negativeExamples: boolean;
1150
+ readonly hourlySummaries: boolean;
1151
+ readonly lcm: boolean;
1152
+ readonly localLlmFast: boolean;
1153
+ readonly proactiveExtraction: boolean;
1154
+ readonly delinearize: boolean;
1155
+ readonly slowLog: boolean;
1156
+ readonly hostEmbeddingProvider: boolean;
1157
+ readonly memoryExtensions: boolean;
1158
+ readonly hourlySummariesExtended: boolean;
1159
+ }
1160
+
1161
+ /**
1162
+ * Config projection consumed by {@link resolvePipelineProcessingCapabilities}.
1163
+ */
1164
+ export type PipelineProcessingConfigProjection = Pick<
1165
+ PluginConfig,
1166
+ | "chunkingEnabled"
1167
+ | "semanticChunkingEnabled"
1168
+ | "semanticDedupEnabled"
1169
+ | "summarizationEnabled"
1170
+ | "topicExtractionEnabled"
1171
+ | "sessionObserverEnabled"
1172
+ | "profilingEnabled"
1173
+ | "checkpointEnabled"
1174
+ | "traceWeaverEnabled"
1175
+ | "routingRulesEnabled"
1176
+ | "inlineSourceAttributionEnabled"
1177
+ | "negativeExamplesEnabled"
1178
+ | "hourlySummariesEnabled"
1179
+ | "lcmEnabled"
1180
+ | "localLlmFastEnabled"
1181
+ | "proactiveExtractionEnabled"
1182
+ | "delinearizeEnabled"
1183
+ | "slowLogEnabled"
1184
+ | "hostEmbeddingProviderEnabled"
1185
+ | "memoryExtensionsEnabled"
1186
+ | "hourlySummariesExtendedEnabled"
1187
+ >;
1188
+
1189
+ /**
1190
+ * Resolve the {@link PipelineProcessingCapabilitySet} from parsed config.
1191
+ */
1192
+ export function resolvePipelineProcessingCapabilities(config: PipelineProcessingConfigProjection): PipelineProcessingCapabilitySet {
1193
+ return Object.freeze({
1194
+ chunking: config.chunkingEnabled,
1195
+ semanticChunking: config.semanticChunkingEnabled,
1196
+ semanticDedup: config.semanticDedupEnabled,
1197
+ summarization: config.summarizationEnabled,
1198
+ topicExtraction: config.topicExtractionEnabled,
1199
+ sessionObserver: config.sessionObserverEnabled === true,
1200
+ profiling: config.profilingEnabled,
1201
+ checkpoint: config.checkpointEnabled,
1202
+ traceWeaver: config.traceWeaverEnabled,
1203
+ routingRules: config.routingRulesEnabled,
1204
+ inlineSourceAttribution: config.inlineSourceAttributionEnabled,
1205
+ negativeExamples: config.negativeExamplesEnabled,
1206
+ hourlySummaries: config.hourlySummariesEnabled,
1207
+ lcm: config.lcmEnabled,
1208
+ localLlmFast: config.localLlmFastEnabled,
1209
+ proactiveExtraction: config.proactiveExtractionEnabled,
1210
+ delinearize: config.delinearizeEnabled,
1211
+ slowLog: config.slowLogEnabled,
1212
+ hostEmbeddingProvider: config.hostEmbeddingProviderEnabled,
1213
+ memoryExtensions: config.memoryExtensionsEnabled,
1214
+ hourlySummariesExtended: config.hourlySummariesExtendedEnabled,
1215
+ });
1216
+ }
1217
+
1218
+ // ---------------------------------------------------------------------------
1219
+ // ConversationContext capability set (issue #1523 batch 9).
1220
+ //
1221
+ // These 12 flags gate conversation context, shared signals, intent routing,
1222
+ // operator-aware consolidation, CMC consolidation, maintenance fanout, CLI
1223
+ // presentation, and code connectors. Read sites span orchestrator, CLI,
1224
+ // shared-context/manager, semantic-consolidation-coordinator, compounding/engine,
1225
+ // maintenance modules, procedural stats, connectors, and wearables. All flags
1226
+ // are non-optional booleans on PluginConfig (defaults resolved at the parse
1227
+ // boundary), so the projection is a pure pass-through.
1228
+ // ---------------------------------------------------------------------------
1229
+
1230
+ /**
1231
+ * Frozen projection of conversation/context feature gates (issue #1523 batch 9).
1232
+ */
1233
+ export interface ConversationContextCapabilitySet {
1234
+ readonly sharedContext: boolean;
1235
+ readonly intentRouting: boolean;
1236
+ readonly crossSignalsSemantic: boolean;
1237
+ readonly sharedCrossSignalSemantic: boolean;
1238
+ readonly operatorAwareConsolidation: boolean;
1239
+ readonly peerProfileReasoner: boolean;
1240
+ readonly cmcConsolidation: boolean;
1241
+ readonly maintenanceNamespaceFanout: boolean;
1242
+ readonly citations: boolean;
1243
+ readonly behaviorLoopAutoTune: boolean;
1244
+ readonly semanticRulePromotion: boolean;
1245
+ readonly codexMarketplace: boolean;
1246
+ }
1247
+
1248
+ /**
1249
+ * Config projection consumed by {@link resolveConversationContextCapabilities}.
1250
+ */
1251
+ export type ConversationContextConfigProjection = Pick<
1252
+ PluginConfig,
1253
+ | "sharedContextEnabled"
1254
+ | "intentRoutingEnabled"
1255
+ | "crossSignalsSemanticEnabled"
1256
+ | "sharedCrossSignalSemanticEnabled"
1257
+ | "operatorAwareConsolidationEnabled"
1258
+ | "peerProfileReasonerEnabled"
1259
+ | "cmcConsolidationEnabled"
1260
+ | "maintenanceNamespaceFanoutEnabled"
1261
+ | "citationsEnabled"
1262
+ | "behaviorLoopAutoTuneEnabled"
1263
+ | "semanticRulePromotionEnabled"
1264
+ | "codexMarketplaceEnabled"
1265
+ >;
1266
+
1267
+ /**
1268
+ * Resolve the {@link ConversationContextCapabilitySet} from parsed config.
1269
+ */
1270
+ export function resolveConversationContextCapabilities(config: ConversationContextConfigProjection): ConversationContextCapabilitySet {
1271
+ return Object.freeze({
1272
+ sharedContext: config.sharedContextEnabled,
1273
+ intentRouting: config.intentRoutingEnabled,
1274
+ crossSignalsSemantic: config.crossSignalsSemanticEnabled,
1275
+ sharedCrossSignalSemantic: config.sharedCrossSignalSemanticEnabled === true,
1276
+ operatorAwareConsolidation: config.operatorAwareConsolidationEnabled,
1277
+ peerProfileReasoner: config.peerProfileReasonerEnabled,
1278
+ cmcConsolidation: config.cmcConsolidationEnabled,
1279
+ maintenanceNamespaceFanout: config.maintenanceNamespaceFanoutEnabled,
1280
+ citations: config.citationsEnabled,
1281
+ behaviorLoopAutoTune: config.behaviorLoopAutoTuneEnabled,
1282
+ semanticRulePromotion: config.semanticRulePromotionEnabled,
1283
+ codexMarketplace: config.codexMarketplaceEnabled,
1284
+ });
1285
+ }
@@ -21,6 +21,7 @@ import type { Orchestrator } from "../orchestrator.js";
21
21
  import { resolveCapabilities, resolveSecurityCapabilities, resolveUtilityLearningCapabilities, resolveObjectiveStateCapabilities, resolveConsolidationCapabilities } from "../capabilities.js";
22
22
  import type { CliCommand } from "../cli.js";
23
23
  import type { UtilityTelemetryEvent } from "../utility-telemetry.js";
24
+ import { resolveRecallEnhancementCapabilities } from "../capabilities.js";
24
25
  import {
25
26
  runObjectiveStateStatusCliCommand,
26
27
  runCausalTrajectoryStatusCliCommand,
@@ -67,7 +68,7 @@ cmd
67
68
  const status = await runCausalTrajectoryStatusCliCommand({
68
69
  memoryDir: orchestrator.config.memoryDir,
69
70
  causalTrajectoryStoreDir: orchestrator.config.causalTrajectoryStoreDir,
70
- causalTrajectoryMemoryEnabled: orchestrator.config.causalTrajectoryMemoryEnabled,
71
+ causalTrajectoryMemoryEnabled: resolveRecallEnhancementCapabilities(orchestrator.config).causalTrajectoryMemory,
71
72
  });
72
73
  console.log(JSON.stringify(status, null, 2));
73
74
  console.log("OK");
package/src/cli.ts CHANGED
@@ -232,6 +232,7 @@ import { getTrainingExportAdapter, listTrainingExportAdapters } from "./training
232
232
  import { renderRecallExplain, parseRecallExplainFormat } from "./recall-explain-renderer.js";
233
233
  import { renderXray } from "./recall-xray-renderer.js";
234
234
  import { parseXrayCliOptions } from "./recall-xray-cli.js";
235
+ import { resolveConversationContextCapabilities } from "./capabilities.js";
235
236
  import {
236
237
  collectPatternMemories,
237
238
  explainPatternMemory,
@@ -6276,7 +6277,7 @@ export function registerCli(
6276
6277
  const options = (args[0] ?? {}) as Record<string, unknown>;
6277
6278
  const result = await runSemanticRulePromoteCliCommand({
6278
6279
  memoryDir: orchestrator.config.memoryDir,
6279
- semanticRulePromotionEnabled: orchestrator.config.semanticRulePromotionEnabled,
6280
+ semanticRulePromotionEnabled: resolveConversationContextCapabilities(orchestrator.config).semanticRulePromotion,
6280
6281
  sourceMemoryId: String(options.memoryId ?? ""),
6281
6282
  dryRun: options.dryRun === true,
6282
6283
  });
@@ -6802,7 +6803,7 @@ export function registerCli(
6802
6803
  principal: resolveAccessPrincipalOverride(options.principal, orchestrator.config.agentAccessHttp.principal),
6803
6804
  maxBodyBytes: Number.isFinite(maxBodyBytesRaw) ? maxBodyBytesRaw : 131072,
6804
6805
  trustPrincipalHeader: options.trustPrincipalHeader === true,
6805
- citationsEnabled: orchestrator.config.citationsEnabled,
6806
+ citationsEnabled: resolveConversationContextCapabilities(orchestrator.config).citations,
6806
6807
  citationsAutoDetect: orchestrator.config.citationsAutoDetect,
6807
6808
  emitLegacyTools: orchestrator.config.emitLegacyTools,
6808
6809
  });
@@ -8,6 +8,7 @@ import type { ContinuityIncidentRecord, PluginConfig } from "../types.js";
8
8
  import { resolveSharedContextDir, SharedFeedbackEntrySchema, type SharedFeedbackEntry } from "../shared-context/manager.js";
9
9
  import { parseContinuityImprovementLoops } from "../identity-continuity.js";
10
10
  import { resolveQmdCapabilities, type QmdConfigProjection, resolveConsolidationCapabilities } from "../capabilities.js";
11
+ import { resolveConversationContextCapabilities } from "../capabilities.js";
11
12
 
12
13
  type MistakesFile = {
13
14
  version?: number;
@@ -496,7 +497,7 @@ export class CompoundingEngine {
496
497
  let promotionCandidates = resolveConsolidationCapabilities(this.config).compoundingSemantic
497
498
  ? this.derivePromotionCandidates(outcomeSummary, mistakes.registry, rubrics)
498
499
  : [];
499
- if (this.config.cmcConsolidationEnabled) {
500
+ if (resolveConversationContextCapabilities(this.config).cmcConsolidation) {
500
501
  try {
501
502
  const { deriveCausalPromotionCandidates, materializeAfterCausalConsolidation } = await import("../causal-consolidation.js");
502
503
  const causalCandidates = await deriveCausalPromotionCandidates({
@@ -22,6 +22,7 @@ import path from "node:path";
22
22
 
23
23
  import { log } from "../logger.js";
24
24
  import type { PluginConfig } from "../types.js";
25
+ import { resolveConversationContextCapabilities } from "../capabilities.js";
25
26
 
26
27
  // ── Types ─────────────────────────────────────────────────────────────────
27
28
 
@@ -295,7 +296,7 @@ export async function installFromMarketplace(
295
296
  debug: (msg) => log.debug(`[marketplace] ${msg}`),
296
297
  };
297
298
 
298
- if (!config.codexMarketplaceEnabled) {
299
+ if (!resolveConversationContextCapabilities(config).codexMarketplace) {
299
300
  return {
300
301
  ok: false,
301
302
  message: "Codex marketplace is disabled in config (codexMarketplaceEnabled: false)",
@@ -3,6 +3,7 @@ import { fileURLToPath } from "node:url";
3
3
  import { log } from "./logger.js";
4
4
  import type { MemoryFile, PluginConfig } from "./types.js";
5
5
  import { discoverMemoryExtensions, renderExtensionsFooter, resolveExtensionsRoot } from "./memory-extension-host/index.js";
6
+ import { resolvePipelineProcessingCapabilities } from "./capabilities.js";
6
7
 
7
8
  const PROMPT_RELATIVE_PATH = path.join("prompts", "day_summary.prompt.md");
8
9
 
@@ -114,7 +115,7 @@ export function formatDaySummaryMemories(memories: string | MemoryFile[]): strin
114
115
  export async function buildExtensionsFooterForSummary(
115
116
  config: PluginConfig,
116
117
  ): Promise<string> {
117
- if (!config.memoryExtensionsEnabled) return "";
118
+ if (!resolvePipelineProcessingCapabilities(config).memoryExtensions) return "";
118
119
  const root = resolveExtensionsRoot(config);
119
120
  const extensions = await discoverMemoryExtensions(root, log);
120
121
  if (extensions.length === 0) return "";
@@ -7,6 +7,7 @@ import {
7
7
  } from "./capabilities.js";
8
8
  import { readEnvVar } from "./runtime/env.js";
9
9
  import type { PluginConfig } from "./types.js";
10
+ import { resolvePipelineProcessingCapabilities } from "./capabilities.js";
10
11
  import {
11
12
  getHostEmbeddingProvider,
12
13
  type HostEmbeddingProvider,
@@ -405,7 +406,7 @@ export class EmbeddingFallback {
405
406
 
406
407
  if (
407
408
  options.includeHost !== false &&
408
- this.config.hostEmbeddingProviderEnabled !== false
409
+ resolvePipelineProcessingCapabilities(this.config).hostEmbeddingProvider !== false
409
410
  ) {
410
411
  const hostProvider = getHostEmbeddingProvider(this.config.memoryDir);
411
412
  if (hostProvider) {
package/src/extraction.ts CHANGED
@@ -38,6 +38,7 @@ import { normalizeProcedureSteps } from "./procedural/procedure-types.js";
38
38
  import { normalizeReasoningTrace } from "./reasoning-trace-types.js";
39
39
  import { looksLikeMechanicalTelemetryTranscript } from "./telemetry-transcript.js";
40
40
  import { buildFactProvenance, type ProvenanceTurnInput } from "./provenance.js";
41
+ import { resolvePipelineProcessingCapabilities } from "./capabilities.js";
41
42
  import { resolveMemoryLifecycleCapabilities,
42
43
  resolveLocalLlmCapabilities,resolveRecallAuxiliaryCapabilities } from "./capabilities.js";
43
44
 
@@ -199,7 +200,7 @@ export class ExtractionEngine {
199
200
  }
200
201
  let content = sanitized.text;
201
202
  // De-linearize: resolve coreferences + anchor temporal expressions
202
- if (this.config.delinearizeEnabled) {
203
+ if (resolvePipelineProcessingCapabilities(this.config).delinearize) {
203
204
  content = delinearize(content, result.entities, ts);
204
205
  }
205
206
  return { ...fact, content };
@@ -578,7 +579,7 @@ export class ExtractionEngine {
578
579
  conversation: string,
579
580
  base: ExtractionResult,
580
581
  ): Promise<ExtractionResult> {
581
- if (!this.config.proactiveExtractionEnabled) return base;
582
+ if (!resolvePipelineProcessingCapabilities(this.config).proactiveExtraction) return base;
582
583
  const maxAdditional = Math.max(0, Math.floor(this.config.maxProactiveQuestionsPerExtraction));
583
584
  if (maxAdditional === 0) return base;
584
585
  if (this.config.proactiveExtractionTimeoutMs === 0) return base;
package/src/local-llm.ts CHANGED
@@ -6,6 +6,7 @@ import type { ModelRegistry } from "./model-registry.js";
6
6
  import { launchProcessSync } from "./runtime/child-process.js";
7
7
  import { mergeEnv, readEnvVar } from "./runtime/env.js";
8
8
  import { resolveLocalLlmCapabilities } from "./capabilities.js";
9
+ import { resolvePipelineProcessingCapabilities } from "./capabilities.js";
9
10
 
10
11
  /** Trim trailing slash characters without backtracking regex. */
11
12
  function trimTrailingSlashes(s: string): string {
@@ -1186,7 +1187,7 @@ export class LocalLlmClient {
1186
1187
  : this.estimateTokens(messages, content);
1187
1188
 
1188
1189
  const durationMs = Date.now() - startedAtMs;
1189
- if (this.config.slowLogEnabled && durationMs >= this.config.slowLogThresholdMs) {
1190
+ if (resolvePipelineProcessingCapabilities(this.config).slowLog && durationMs >= this.config.slowLogThresholdMs) {
1190
1191
  const promptChars = messages.reduce((sum, m) => sum + (m.content?.length ?? 0), 0);
1191
1192
  const op = options.operation ? ` op=${options.operation}` : "";
1192
1193
  log.warn(
@@ -27,6 +27,7 @@
27
27
  import { resolveNamespaceCapabilities } from "../capabilities.js";
28
28
  import type { NamespaceCatalog } from "../namespaces/catalog.js";
29
29
  import type { PluginConfig } from "../types.js";
30
+ import { resolveConversationContextCapabilities } from "../capabilities.js";
30
31
  import {
31
32
  planNamespaceMaintenance,
32
33
  readNamespaceMaintenanceLastRanStatuses,
@@ -262,7 +263,7 @@ export async function summarizeNamespaceMaintenanceHealth(
262
263
 
263
264
  return {
264
265
  generatedAt,
265
- fanoutEnabled: config.maintenanceNamespaceFanoutEnabled !== false,
266
+ fanoutEnabled: resolveConversationContextCapabilities(config).maintenanceNamespaceFanout !== false,
266
267
  namespacesEnabled: resolveNamespaceCapabilities(config).namespaces,
267
268
  maxNamespacesPerCycle: config.maintenanceMaxNamespacesPerCycle,
268
269
  jobs,
@@ -11,6 +11,7 @@ import { resolveNamespaceStorageRoot } from "../namespaces/storage.js";
11
11
  import { displayErrorDetail } from "../runtime/better-sqlite.js";
12
12
  import type { PluginConfig } from "../types.js";
13
13
  import { getConfiguredNamespaces } from "../scopes/scope-plan.js";
14
+ import { resolveConversationContextCapabilities } from "../capabilities.js";
14
15
 
15
16
  export type NamespaceMaintenanceJobName = string;
16
17
 
@@ -227,7 +228,7 @@ export async function planNamespaceMaintenance(
227
228
  });
228
229
  }
229
230
 
230
- if (resolveNamespaceCapabilities(config).namespaces && config.maintenanceNamespaceFanoutEnabled !== false) {
231
+ if (resolveNamespaceCapabilities(config).namespaces && resolveConversationContextCapabilities(config).maintenanceNamespaceFanout !== false) {
231
232
  const configuredSet = new Set(configured);
232
233
  try {
233
234
  const records = options.catalog?.enabled ? await options.catalog.listNamespaces() : [];
@@ -56,6 +56,7 @@ import { reportBufferSurpriseDistribution } from "./buffer-surprise-report.js";
56
56
  import { readJudgeVerdictStats } from "./extraction-judge-telemetry.js";
57
57
  import { resolveIndexingCapabilities } from "./capabilities.js";
58
58
 
59
+
59
60
  const OPENCLAW_REMNIC_PLUGIN_IDS = ["openclaw-remnic", "openclaw-engram"] as const;
60
61
 
61
62
  function getOpenClawPluginEntries(raw: Record<string, unknown>): Record<string, unknown> | undefined {
@@ -49,6 +49,7 @@ import type { LocalLlmClient } from "../local-llm.js";
49
49
  import type { EmbeddingFallback } from "../embedding-fallback.js";
50
50
  import type { PluginConfig, MemoryFile, AgentPersonaModelConfig } from "../types.js";
51
51
  import { log } from "../logger.js";
52
+ import { resolveConversationContextCapabilities } from "../capabilities.js";
52
53
 
53
54
  /** Dependencies injected by the orchestrator. All stable references or
54
55
  * live accessors. */
@@ -193,7 +194,7 @@ export class SemanticConsolidationCoordinator {
193
194
  // `semanticConsolidationEnabled` follow the same convention,
194
195
  // while `!== false` is reserved for default-on flags.
195
196
  const operatorAwareEnabled =
196
- this.config.operatorAwareConsolidationEnabled === true;
197
+ resolveConversationContextCapabilities(this.config).operatorAwareConsolidation === true;
197
198
  let prompt = operatorAwareEnabled
198
199
  ? buildOperatorAwareConsolidationPrompt(cluster)
199
200
  : buildConsolidationPrompt(cluster);
@@ -418,7 +419,7 @@ export class SemanticConsolidationCoordinator {
418
419
  // in a try/catch because reasoner I/O (LLM call, peer-profile
419
420
  // writes) must never abort the consolidation result. The reasoner
420
421
  // itself also defends against partial failure — see profile-reasoner.ts.
421
- if (this.config.peerProfileReasonerEnabled) {
422
+ if (resolveConversationContextCapabilities(this.config).peerProfileReasoner) {
422
423
  try {
423
424
  const peerLlm = new FallbackLlmClient(
424
425
  this.config.gatewayConfig,