@remnic/core 9.3.628 → 9.3.630

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 (231) hide show
  1. package/dist/access-cli.js +18 -18
  2. package/dist/access-http.d.ts +6 -4
  3. package/dist/access-http.js +7 -6
  4. package/dist/access-mcp.d.ts +6 -4
  5. package/dist/access-mcp.js +6 -5
  6. package/dist/{access-service-C_sfOHsX.d.ts → access-service-C4v-eFjB.d.ts} +2 -2
  7. package/dist/access-service.d.ts +6 -4
  8. package/dist/access-service.js +5 -4
  9. package/dist/action-confidence.d.ts +1 -1
  10. package/dist/active-memory-bridge.d.ts +1 -1
  11. package/dist/active-recall.d.ts +1 -1
  12. package/dist/active-recall.js +1 -1
  13. package/dist/behavior-learner.d.ts +1 -1
  14. package/dist/behavior-signals.d.ts +1 -1
  15. package/dist/bootstrap.d.ts +6 -4
  16. package/dist/briefing.d.ts +33 -2
  17. package/dist/briefing.js +5 -2
  18. package/dist/buffer-surprise-report.d.ts +1 -1
  19. package/dist/buffer.d.ts +1 -1
  20. package/dist/calibration.d.ts +1 -1
  21. package/dist/calibration.js +2 -2
  22. package/dist/causal-behavior.d.ts +1 -1
  23. package/dist/causal-consolidation.d.ts +1 -1
  24. package/dist/causal-consolidation.js +5 -5
  25. package/dist/{chunk-GE7Q7KXP.js → chunk-2VJ7AJFX.js} +2 -2
  26. package/dist/{chunk-KVFYTRMV.js → chunk-4QEUKASL.js} +2 -2
  27. package/dist/{chunk-KB4MFBF5.js → chunk-5S6IREG3.js} +3 -3
  28. package/dist/{chunk-LQYTQCXM.js → chunk-6LBQL5US.js} +2 -2
  29. package/dist/{chunk-KGIGRNR6.js → chunk-723OMPUI.js} +4 -4
  30. package/dist/{chunk-TZDSNIRO.js → chunk-ADOD7PJC.js} +5 -5
  31. package/dist/{chunk-SHV5Y2WU.js → chunk-BL33LBTN.js} +3 -3
  32. package/dist/{chunk-532VCWYW.js → chunk-BWK5EEKS.js} +2 -2
  33. package/dist/{chunk-KKTXCFD7.js → chunk-EORL2IDM.js} +39 -8
  34. package/dist/{chunk-KKTXCFD7.js.map → chunk-EORL2IDM.js.map} +1 -1
  35. package/dist/{chunk-F3FY3D3S.js → chunk-F6USGHMO.js} +10 -5
  36. package/dist/chunk-F6USGHMO.js.map +1 -0
  37. package/dist/{chunk-STDAAGH7.js → chunk-GXWFZYSR.js} +39 -3
  38. package/dist/chunk-GXWFZYSR.js.map +1 -0
  39. package/dist/{chunk-3VONWEQB.js → chunk-HZVIYZYN.js} +2 -2
  40. package/dist/{chunk-Y3TMFC6I.js → chunk-K3BTOW7N.js} +3 -3
  41. package/dist/{chunk-Z3CCEP6F.js → chunk-K47C6M2C.js} +5 -5
  42. package/dist/{chunk-N5RGXWLQ.js → chunk-MQ24KOOR.js} +2 -2
  43. package/dist/{chunk-3MNBW7R7.js → chunk-NRQJBK36.js} +2 -2
  44. package/dist/{chunk-MON3LMO7.js → chunk-NRST7W5Q.js} +5 -5
  45. package/dist/{chunk-3R2UZV3U.js → chunk-OOFBE62K.js} +2 -2
  46. package/dist/{chunk-MVQN73GT.js → chunk-OQMR2SDZ.js} +2 -2
  47. package/dist/{chunk-UGHUNQ74.js → chunk-RSKUUEBA.js} +73 -1
  48. package/dist/chunk-RSKUUEBA.js.map +1 -0
  49. package/dist/{chunk-QDV6VAD4.js → chunk-S5W37FPX.js} +2 -2
  50. package/dist/{chunk-57QXN2CS.js → chunk-SACS6KE6.js} +2 -2
  51. package/dist/{chunk-UELS6WWF.js → chunk-UE57H4MA.js} +2 -2
  52. package/dist/{chunk-2RHI3FGV.js → chunk-VUTPRX7K.js} +20 -14
  53. package/dist/{chunk-2RHI3FGV.js.map → chunk-VUTPRX7K.js.map} +1 -1
  54. package/dist/{chunk-AZ4RI3QD.js → chunk-YJOWWRRS.js} +450 -48
  55. package/dist/chunk-YJOWWRRS.js.map +1 -0
  56. package/dist/{chunk-P2D2MM47.js → chunk-ZZSXUZF3.js} +2 -2
  57. package/dist/{cli-EZv6YE6_.d.ts → cli-B_6EMiQc.d.ts} +3 -3
  58. package/dist/cli.d.ts +7 -5
  59. package/dist/cli.js +18 -17
  60. package/dist/compounding/engine.d.ts +1 -1
  61. package/dist/compounding/engine.js +2 -2
  62. package/dist/compounding/preference-consolidator.d.ts +1 -1
  63. package/dist/compression-optimizer.d.ts +1 -1
  64. package/dist/config.d.ts +1 -1
  65. package/dist/config.js +1 -1
  66. package/dist/connectors/codex-materialize-runner.d.ts +1 -1
  67. package/dist/connectors/codex-materialize-runner.js +2 -2
  68. package/dist/connectors/codex-materialize.d.ts +1 -1
  69. package/dist/connectors/index.d.ts +1 -1
  70. package/dist/connectors/index.js +2 -2
  71. package/dist/consolidation-provenance-check.d.ts +1 -1
  72. package/dist/consolidation-undo.d.ts +1 -1
  73. package/dist/contradiction/index.d.ts +1 -1
  74. package/dist/conversation-index/backend.d.ts +1 -1
  75. package/dist/conversation-index/chunker.d.ts +1 -1
  76. package/dist/conversation-index/faiss-adapter.d.ts +1 -1
  77. package/dist/conversation-index/indexer.d.ts +1 -1
  78. package/dist/conversation-index/search.d.ts +1 -1
  79. package/dist/day-summary.d.ts +1 -1
  80. package/dist/delinearize.d.ts +1 -1
  81. package/dist/direct-answer-wiring.d.ts +1 -1
  82. package/dist/direct-answer.d.ts +1 -1
  83. package/dist/embedding-fallback.d.ts +1 -1
  84. package/dist/enrichment/index.d.ts +1 -1
  85. package/dist/entity-retrieval.d.ts +1 -1
  86. package/dist/entity-retrieval.js +2 -2
  87. package/dist/entity-schema.d.ts +1 -1
  88. package/dist/explicit-capture.d.ts +6 -4
  89. package/dist/extraction-judge-telemetry.d.ts +1 -1
  90. package/dist/extraction-judge-training.d.ts +1 -1
  91. package/dist/extraction-judge.d.ts +1 -1
  92. package/dist/extraction-judge.js +3 -3
  93. package/dist/extraction.d.ts +1 -1
  94. package/dist/extraction.js +3 -3
  95. package/dist/fallback-llm.d.ts +1 -1
  96. package/dist/fallback-llm.js +2 -2
  97. package/dist/identity-continuity.d.ts +1 -1
  98. package/dist/importance.d.ts +1 -1
  99. package/dist/index.d.ts +9 -9
  100. package/dist/index.js +29 -27
  101. package/dist/index.js.map +1 -1
  102. package/dist/intent.d.ts +1 -1
  103. package/dist/lcm/engine.d.ts +1 -1
  104. package/dist/lcm/index.d.ts +1 -1
  105. package/dist/lcm/tools.d.ts +1 -1
  106. package/dist/lifecycle.d.ts +1 -1
  107. package/dist/live-connectors-runner.d.ts +1 -1
  108. package/dist/local-llm.d.ts +1 -1
  109. package/dist/maintenance/memory-governance.d.ts +1 -1
  110. package/dist/maintenance/memory-governance.js +2 -2
  111. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +2 -2
  112. package/dist/maintenance/rebuild-memory-projection.js +3 -3
  113. package/dist/mcp-memory-inspector-app.d.ts +6 -4
  114. package/dist/memory-action-policy.d.ts +1 -1
  115. package/dist/memory-cache.d.ts +1 -1
  116. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
  117. package/dist/memory-projection-store.d.ts +1 -1
  118. package/dist/memory-provenance.d.ts +1 -1
  119. package/dist/memory-worth-outcomes.d.ts +1 -1
  120. package/dist/models-json.d.ts +1 -1
  121. package/dist/namespaces/migrate.d.ts +1 -1
  122. package/dist/namespaces/migrate.js +3 -3
  123. package/dist/namespaces/principal.d.ts +1 -1
  124. package/dist/namespaces/search.d.ts +1 -1
  125. package/dist/namespaces/storage.d.ts +1 -1
  126. package/dist/namespaces/storage.js +2 -2
  127. package/dist/native-knowledge.d.ts +1 -1
  128. package/dist/operator-toolkit.d.ts +1 -1
  129. package/dist/operator-toolkit.js +6 -6
  130. package/dist/{orchestrator-CEycaY3M.d.ts → orchestrator-Dlw3ae4B.d.ts} +111 -10
  131. package/dist/orchestrator.d.ts +5 -3
  132. package/dist/orchestrator.js +15 -14
  133. package/dist/patterns-cli.d.ts +1 -1
  134. package/dist/policy-runtime.d.ts +1 -1
  135. package/dist/qmd-recall-cache.d.ts +1 -1
  136. package/dist/qmd.d.ts +1 -1
  137. package/dist/recall-disclosure-escalation.d.ts +1 -1
  138. package/dist/recall-explain-renderer.d.ts +1 -1
  139. package/dist/recall-planner-llm.d.ts +1 -1
  140. package/dist/recall-planner-llm.js +2 -2
  141. package/dist/recall-state.d.ts +1 -1
  142. package/dist/recall-tag-filter.d.ts +1 -1
  143. package/dist/recall-xray-cli.d.ts +1 -1
  144. package/dist/recall-xray-renderer.d.ts +1 -1
  145. package/dist/recall-xray.d.ts +1 -1
  146. package/dist/resolve-auth-token.d.ts +1 -1
  147. package/dist/resume-bundles.js +2 -2
  148. package/dist/retrieval-agents.d.ts +1 -1
  149. package/dist/retrieval-tiers.d.ts +1 -1
  150. package/dist/routing/engine.d.ts +1 -1
  151. package/dist/routing/store.d.ts +1 -1
  152. package/dist/schemas.d.ts +24 -24
  153. package/dist/search/embed-helper.d.ts +1 -1
  154. package/dist/search/factory.d.ts +1 -1
  155. package/dist/search/index.d.ts +1 -1
  156. package/dist/search/lancedb-backend.d.ts +1 -1
  157. package/dist/search/meilisearch-backend.d.ts +1 -1
  158. package/dist/search/noop-backend.d.ts +1 -1
  159. package/dist/search/orama-backend.d.ts +1 -1
  160. package/dist/search/port.d.ts +1 -1
  161. package/dist/search/remote-backend.d.ts +1 -1
  162. package/dist/{semantic-consolidation-FbhPeJjB.d.ts → semantic-consolidation-C4sefXEI.d.ts} +1 -1
  163. package/dist/semantic-consolidation.d.ts +2 -2
  164. package/dist/semantic-consolidation.js +3 -3
  165. package/dist/semantic-rule-promotion.js +2 -2
  166. package/dist/semantic-rule-verifier.d.ts +1 -1
  167. package/dist/semantic-rule-verifier.js +2 -2
  168. package/dist/session-observer-bands.d.ts +1 -1
  169. package/dist/session-observer-state.d.ts +1 -1
  170. package/dist/shared-context/manager.d.ts +1 -1
  171. package/dist/signal.d.ts +1 -1
  172. package/dist/storage.d.ts +38 -2
  173. package/dist/storage.js +5 -3
  174. package/dist/summarizer.d.ts +1 -1
  175. package/dist/summarizer.js +3 -3
  176. package/dist/summary-snapshot.d.ts +1 -1
  177. package/dist/temporal-supersession.d.ts +1 -1
  178. package/dist/temporal-validity.d.ts +1 -1
  179. package/dist/threading.d.ts +1 -1
  180. package/dist/tier-migration.d.ts +1 -1
  181. package/dist/tier-routing.d.ts +1 -1
  182. package/dist/topics.d.ts +1 -1
  183. package/dist/transcript.d.ts +1 -1
  184. package/dist/transfer/types.d.ts +12 -12
  185. package/dist/{types-D5VRAI04.d.ts → types-2vqxmO0j.d.ts} +39 -10
  186. package/dist/types.d.ts +1 -1
  187. package/dist/utility-runtime.d.ts +1 -1
  188. package/dist/verified-recall.js +2 -2
  189. package/package.json +1 -1
  190. package/src/access-service.ts +7 -0
  191. package/src/briefing.ts +67 -1
  192. package/src/index.ts +2 -0
  193. package/src/orchestrator.ts +42 -0
  194. package/src/storage.ts +100 -0
  195. package/src/wearables/cli.ts +6 -0
  196. package/src/wearables/config.test.ts +33 -4
  197. package/src/wearables/config.ts +39 -7
  198. package/src/wearables/memory-gen.test.ts +416 -1
  199. package/src/wearables/memory-gen.ts +381 -23
  200. package/src/wearables/pipeline.test.ts +309 -1
  201. package/src/wearables/pipeline.ts +131 -9
  202. package/src/wearables/service.test.ts +172 -0
  203. package/src/wearables/service.ts +84 -3
  204. package/src/wearables/storage-io.test.ts +81 -0
  205. package/src/wearables/trust.test.ts +123 -0
  206. package/src/wearables/trust.ts +168 -0
  207. package/src/wearables/types.ts +37 -8
  208. package/dist/chunk-AZ4RI3QD.js.map +0 -1
  209. package/dist/chunk-F3FY3D3S.js.map +0 -1
  210. package/dist/chunk-STDAAGH7.js.map +0 -1
  211. package/dist/chunk-UGHUNQ74.js.map +0 -1
  212. /package/dist/{chunk-GE7Q7KXP.js.map → chunk-2VJ7AJFX.js.map} +0 -0
  213. /package/dist/{chunk-KVFYTRMV.js.map → chunk-4QEUKASL.js.map} +0 -0
  214. /package/dist/{chunk-KB4MFBF5.js.map → chunk-5S6IREG3.js.map} +0 -0
  215. /package/dist/{chunk-LQYTQCXM.js.map → chunk-6LBQL5US.js.map} +0 -0
  216. /package/dist/{chunk-KGIGRNR6.js.map → chunk-723OMPUI.js.map} +0 -0
  217. /package/dist/{chunk-TZDSNIRO.js.map → chunk-ADOD7PJC.js.map} +0 -0
  218. /package/dist/{chunk-SHV5Y2WU.js.map → chunk-BL33LBTN.js.map} +0 -0
  219. /package/dist/{chunk-532VCWYW.js.map → chunk-BWK5EEKS.js.map} +0 -0
  220. /package/dist/{chunk-3VONWEQB.js.map → chunk-HZVIYZYN.js.map} +0 -0
  221. /package/dist/{chunk-Y3TMFC6I.js.map → chunk-K3BTOW7N.js.map} +0 -0
  222. /package/dist/{chunk-Z3CCEP6F.js.map → chunk-K47C6M2C.js.map} +0 -0
  223. /package/dist/{chunk-N5RGXWLQ.js.map → chunk-MQ24KOOR.js.map} +0 -0
  224. /package/dist/{chunk-3MNBW7R7.js.map → chunk-NRQJBK36.js.map} +0 -0
  225. /package/dist/{chunk-MON3LMO7.js.map → chunk-NRST7W5Q.js.map} +0 -0
  226. /package/dist/{chunk-3R2UZV3U.js.map → chunk-OOFBE62K.js.map} +0 -0
  227. /package/dist/{chunk-MVQN73GT.js.map → chunk-OQMR2SDZ.js.map} +0 -0
  228. /package/dist/{chunk-QDV6VAD4.js.map → chunk-S5W37FPX.js.map} +0 -0
  229. /package/dist/{chunk-57QXN2CS.js.map → chunk-SACS6KE6.js.map} +0 -0
  230. /package/dist/{chunk-UELS6WWF.js.map → chunk-UE57H4MA.js.map} +0 -0
  231. /package/dist/{chunk-P2D2MM47.js.map → chunk-ZZSXUZF3.js.map} +0 -0
package/dist/signal.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ar as SignalScanResult } from './types-D5VRAI04.js';
1
+ import { ar as SignalScanResult } from './types-2vqxmO0j.js';
2
2
  import './types-BliCnURB.js';
3
3
  import './index-DJ9QWMw-.js';
4
4
 
package/dist/storage.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { VersioningConfig } from './page-versioning.js';
2
2
  import { ConsolidationOperator } from './consolidation-operator.js';
3
- import { P as PluginConfig, M as MemoryCategory, I as ImportanceScore, h as MemoryLink, i as MemoryFrontmatter, j as MemoryStatus, g as MemoryFile, E as EntityStructuredSection, k as BufferState, l as MetaState, m as MemoryActionEvent, n as MemoryLifecycleEvent, o as BufferSurpriseEvent, B as BehaviorSignalEvent, C as CompressionGuidelineOptimizerState, p as ContinuityIncidentOpenInput, q as ContinuityIncidentRecord, r as ContinuityIncidentCloseInput, s as ContinuityImprovementLoop, t as ContinuityLoopUpsertInput, u as ContinuityLoopReviewInput, F as FileHygieneConfig, v as EntityRelationship, w as EntityActivityEntry, x as EntityFile, y as AccessTrackingEntry, z as MemoryProjectionCurrentState, D as MemorySummary, T as TopicScore } from './types-D5VRAI04.js';
3
+ import { P as PluginConfig, h as MemoryStatus, M as MemoryCategory, I as ImportanceScore, i as MemoryLink, j as MemoryFrontmatter, g as MemoryFile, E as EntityStructuredSection, k as BufferState, l as MetaState, m as MemoryActionEvent, n as MemoryLifecycleEvent, o as BufferSurpriseEvent, B as BehaviorSignalEvent, C as CompressionGuidelineOptimizerState, p as ContinuityIncidentOpenInput, q as ContinuityIncidentRecord, r as ContinuityIncidentCloseInput, s as ContinuityImprovementLoop, t as ContinuityLoopUpsertInput, u as ContinuityLoopReviewInput, F as FileHygieneConfig, v as EntityRelationship, w as EntityActivityEntry, x as EntityFile, y as AccessTrackingEntry, z as MemoryProjectionCurrentState, D as MemorySummary, T as TopicScore } from './types-2vqxmO0j.js';
4
4
  import { ProjectedMemoryBrowseOptions, ProjectedMemoryBrowsePage, readProjectedGovernanceRecord } from './memory-projection-store.js';
5
5
  import './types-BliCnURB.js';
6
6
  import './index-DJ9QWMw-.js';
@@ -97,6 +97,15 @@ declare class ContentHashIndex {
97
97
  * normalizeAttributePairs({ foo: "bar", BAZ: "qux" })
98
98
  * // → "baz: qux; foo: bar"
99
99
  */
100
+ /**
101
+ * Remove the "[Attributes: ...]" suffix `writeMemory` appends to the
102
+ * stored body when structuredAttributes are present, yielding the raw
103
+ * fact text for content comparison. Inverse companion of
104
+ * `normalizeAttributePairs` enrichment. String operations, not regex —
105
+ * CodeQL js/polynomial-redos on a suffix-anchored pattern over
106
+ * library-supplied content.
107
+ */
108
+ declare function stripAttributesSuffix(content: string): string;
100
109
  declare function normalizeAttributePairs(pairs: Record<string, string>): string;
101
110
  declare function compareEntityTimestamps(left?: string, right?: string): number;
102
111
  declare function fingerprintEntityStructuredFacts(entity: Pick<EntityFile, "structuredSections">): string | undefined;
@@ -248,6 +257,33 @@ declare class StorageManager {
248
257
  source: string;
249
258
  date: string;
250
259
  }>>;
260
+ /**
261
+ * Locate a wearable-sourced memory by exact (trimmed) content,
262
+ * ignoring the "[Attributes: ...]" suffix writeMemory appends for
263
+ * structuredAttributes — callers pass the raw fact text. Used by the
264
+ * smart trust pipeline to find an earlier borderline write when the
265
+ * same fact re-extracts with stronger evidence.
266
+ */
267
+ findWearableMemoryByContent(content: string): Promise<{
268
+ id: string;
269
+ status: MemoryStatus | undefined;
270
+ } | null>;
271
+ /**
272
+ * Promote a pending_review wearable memory to active in place,
273
+ * merging updated trust evidence into structuredAttributes. Returns
274
+ * false when the memory is missing or no longer pending_review (a
275
+ * concurrent review decision wins).
276
+ */
277
+ promoteWearableMemory(id: string, attributeUpdates: Record<string, string>, confidence?: number): Promise<boolean>;
278
+ /**
279
+ * Demote a pending_review wearable memory to rejected when a re-pass
280
+ * produced an explicit judge-reject verdict, merging the evidence.
281
+ * Returns false when the memory is missing or no longer
282
+ * pending_review — active rows are NEVER auto-demoted (operator
283
+ * approvals and accrued recall signals win; contradiction scans and
284
+ * supersession own active-row retirement).
285
+ */
286
+ demoteWearableMemory(id: string, attributeUpdates: Record<string, string>): Promise<boolean>;
251
287
  private get factsDir();
252
288
  private get correctionsDir();
253
289
  private get proceduresDir();
@@ -817,4 +853,4 @@ declare class StorageManager {
817
853
  private appendGeneratedMemoryLifecycleEventFailOpen;
818
854
  }
819
855
 
820
- export { ContentHashIndex, type MemoryLifecycleEventWriteOptions, type ReextractJobRequest, StorageManager, compareEntityTimestamps, fingerprintEntityStructuredFacts, isEntitySynthesisStale, normalizeAttributePairs, normalizeEntityName, parseEntityFile, serializeEntityFile };
856
+ export { ContentHashIndex, type MemoryLifecycleEventWriteOptions, type ReextractJobRequest, StorageManager, compareEntityTimestamps, fingerprintEntityStructuredFacts, isEntitySynthesisStale, normalizeAttributePairs, normalizeEntityName, parseEntityFile, serializeEntityFile, stripAttributesSuffix };
package/dist/storage.js CHANGED
@@ -7,8 +7,9 @@ import {
7
7
  normalizeAttributePairs,
8
8
  normalizeEntityName,
9
9
  parseEntityFile,
10
- serializeEntityFile
11
- } from "./chunk-UGHUNQ74.js";
10
+ serializeEntityFile,
11
+ stripAttributesSuffix
12
+ } from "./chunk-RSKUUEBA.js";
12
13
  import "./chunk-5UZXUTVO.js";
13
14
  import "./chunk-J6A3CX5N.js";
14
15
  import "./chunk-FPNQF475.js";
@@ -37,6 +38,7 @@ export {
37
38
  normalizeAttributePairs,
38
39
  normalizeEntityName,
39
40
  parseEntityFile,
40
- serializeEntityFile
41
+ serializeEntityFile,
42
+ stripAttributesSuffix
41
43
  };
42
44
  //# sourceMappingURL=storage.js.map
@@ -1,5 +1,5 @@
1
1
  import { ModelRegistry } from './model-registry.js';
2
- import { P as PluginConfig, G as GatewayConfig, O as TranscriptEntry, U as HourlySummary } from './types-D5VRAI04.js';
2
+ import { P as PluginConfig, G as GatewayConfig, _ as TranscriptEntry, a0 as HourlySummary } from './types-2vqxmO0j.js';
3
3
  import { TranscriptManager } from './transcript.js';
4
4
  import './types-BliCnURB.js';
5
5
  import './index-DJ9QWMw-.js';
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  HourlySummarizer
3
- } from "./chunk-3VONWEQB.js";
3
+ } from "./chunk-HZVIYZYN.js";
4
4
  import "./chunk-XJNBEDFE.js";
5
5
  import "./chunk-XZ4WBBB5.js";
6
6
  import "./chunk-77NAFXUD.js";
7
7
  import "./chunk-FF4KLI5W.js";
8
- import "./chunk-KGIGRNR6.js";
8
+ import "./chunk-723OMPUI.js";
9
9
  import "./chunk-B5XMS73R.js";
10
10
  import "./chunk-7SI52C65.js";
11
11
  import "./chunk-L2EXJQJP.js";
12
- import "./chunk-RGMVMVMF.js";
13
12
  import "./chunk-RK6F44Y6.js";
14
13
  import "./chunk-NNVTUXEB.js";
14
+ import "./chunk-RGMVMVMF.js";
15
15
  import "./chunk-EYIEWJNI.js";
16
16
  import "./chunk-JUC24CTX.js";
17
17
  import "./chunk-2ODBA7MQ.js";
@@ -1,4 +1,4 @@
1
- import { U as HourlySummary } from './types-D5VRAI04.js';
1
+ import { a0 as HourlySummary } from './types-2vqxmO0j.js';
2
2
  import './types-BliCnURB.js';
3
3
  import './index-DJ9QWMw-.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { i as MemoryFrontmatter } from './types-D5VRAI04.js';
1
+ import { j as MemoryFrontmatter } from './types-2vqxmO0j.js';
2
2
  import { StorageManager } from './storage.js';
3
3
  import './types-BliCnURB.js';
4
4
  import './index-DJ9QWMw-.js';
@@ -1,4 +1,4 @@
1
- import { i as MemoryFrontmatter } from './types-D5VRAI04.js';
1
+ import { j as MemoryFrontmatter } from './types-2vqxmO0j.js';
2
2
  import './types-BliCnURB.js';
3
3
  import './index-DJ9QWMw-.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { N as BufferTurn, as as ConversationThread } from './types-D5VRAI04.js';
1
+ import { Y as BufferTurn, as as ConversationThread } from './types-2vqxmO0j.js';
2
2
  import './types-BliCnURB.js';
3
3
  import './index-DJ9QWMw-.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { g as MemoryFile } from './types-D5VRAI04.js';
1
+ import { g as MemoryFile } from './types-2vqxmO0j.js';
2
2
  import { StorageManager } from './storage.js';
3
3
  import { MemoryTier } from './tier-routing.js';
4
4
  import { SearchBackend } from './search/port.js';
@@ -1,4 +1,4 @@
1
- import { g as MemoryFile } from './types-D5VRAI04.js';
1
+ import { g as MemoryFile } from './types-2vqxmO0j.js';
2
2
  import { LifecycleSignals } from './lifecycle.js';
3
3
  import './types-BliCnURB.js';
4
4
  import './index-DJ9QWMw-.js';
package/dist/topics.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { g as MemoryFile, T as TopicScore } from './types-D5VRAI04.js';
1
+ import { g as MemoryFile, T as TopicScore } from './types-2vqxmO0j.js';
2
2
  import './types-BliCnURB.js';
3
3
  import './index-DJ9QWMw-.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { P as PluginConfig, O as TranscriptEntry, S as Checkpoint } from './types-D5VRAI04.js';
1
+ import { P as PluginConfig, _ as TranscriptEntry, $ as Checkpoint } from './types-2vqxmO0j.js';
2
2
  import { SessionIntegrityReport } from './session-integrity.js';
3
3
  import './types-BliCnURB.js';
4
4
  import './index-DJ9QWMw-.js';
@@ -313,13 +313,13 @@ declare const CapsuleBlockSchema: z.ZodObject<{
313
313
  peerProfiles: boolean;
314
314
  }>;
315
315
  }, "strip", z.ZodTypeAny, {
316
- schemaVersion: string;
317
316
  includes: {
318
317
  procedural: boolean;
319
318
  taxonomy: boolean;
320
319
  identityAnchors: boolean;
321
320
  peerProfiles: boolean;
322
321
  };
322
+ schemaVersion: string;
323
323
  id: string;
324
324
  description: string;
325
325
  version: string;
@@ -334,13 +334,13 @@ declare const CapsuleBlockSchema: z.ZodObject<{
334
334
  directAnswerEnabled: boolean;
335
335
  };
336
336
  }, {
337
- schemaVersion: string;
338
337
  includes: {
339
338
  procedural: boolean;
340
339
  taxonomy: boolean;
341
340
  identityAnchors: boolean;
342
341
  peerProfiles: boolean;
343
342
  };
343
+ schemaVersion: string;
344
344
  id: string;
345
345
  description: string;
346
346
  version: string;
@@ -464,13 +464,13 @@ declare const ExportManifestV2Schema: z.ZodObject<{
464
464
  peerProfiles: boolean;
465
465
  }>;
466
466
  }, "strip", z.ZodTypeAny, {
467
- schemaVersion: string;
468
467
  includes: {
469
468
  procedural: boolean;
470
469
  taxonomy: boolean;
471
470
  identityAnchors: boolean;
472
471
  peerProfiles: boolean;
473
472
  };
473
+ schemaVersion: string;
474
474
  id: string;
475
475
  description: string;
476
476
  version: string;
@@ -485,13 +485,13 @@ declare const ExportManifestV2Schema: z.ZodObject<{
485
485
  directAnswerEnabled: boolean;
486
486
  };
487
487
  }, {
488
- schemaVersion: string;
489
488
  includes: {
490
489
  procedural: boolean;
491
490
  taxonomy: boolean;
492
491
  identityAnchors: boolean;
493
492
  peerProfiles: boolean;
494
493
  };
494
+ schemaVersion: string;
495
495
  id: string;
496
496
  description: string;
497
497
  version: string;
@@ -518,13 +518,13 @@ declare const ExportManifestV2Schema: z.ZodObject<{
518
518
  pluginVersion: string;
519
519
  includesTranscripts: boolean;
520
520
  capsule: {
521
- schemaVersion: string;
522
521
  includes: {
523
522
  procedural: boolean;
524
523
  taxonomy: boolean;
525
524
  identityAnchors: boolean;
526
525
  peerProfiles: boolean;
527
526
  };
527
+ schemaVersion: string;
528
528
  id: string;
529
529
  description: string;
530
530
  version: string;
@@ -551,13 +551,13 @@ declare const ExportManifestV2Schema: z.ZodObject<{
551
551
  pluginVersion: string;
552
552
  includesTranscripts: boolean;
553
553
  capsule: {
554
- schemaVersion: string;
555
554
  includes: {
556
555
  procedural: boolean;
557
556
  taxonomy: boolean;
558
557
  identityAnchors: boolean;
559
558
  peerProfiles: boolean;
560
559
  };
560
+ schemaVersion: string;
561
561
  id: string;
562
562
  description: string;
563
563
  version: string;
@@ -683,13 +683,13 @@ declare const ExportBundleV2Schema: z.ZodObject<{
683
683
  peerProfiles: boolean;
684
684
  }>;
685
685
  }, "strip", z.ZodTypeAny, {
686
- schemaVersion: string;
687
686
  includes: {
688
687
  procedural: boolean;
689
688
  taxonomy: boolean;
690
689
  identityAnchors: boolean;
691
690
  peerProfiles: boolean;
692
691
  };
692
+ schemaVersion: string;
693
693
  id: string;
694
694
  description: string;
695
695
  version: string;
@@ -704,13 +704,13 @@ declare const ExportBundleV2Schema: z.ZodObject<{
704
704
  directAnswerEnabled: boolean;
705
705
  };
706
706
  }, {
707
- schemaVersion: string;
708
707
  includes: {
709
708
  procedural: boolean;
710
709
  taxonomy: boolean;
711
710
  identityAnchors: boolean;
712
711
  peerProfiles: boolean;
713
712
  };
713
+ schemaVersion: string;
714
714
  id: string;
715
715
  description: string;
716
716
  version: string;
@@ -737,13 +737,13 @@ declare const ExportBundleV2Schema: z.ZodObject<{
737
737
  pluginVersion: string;
738
738
  includesTranscripts: boolean;
739
739
  capsule: {
740
- schemaVersion: string;
741
740
  includes: {
742
741
  procedural: boolean;
743
742
  taxonomy: boolean;
744
743
  identityAnchors: boolean;
745
744
  peerProfiles: boolean;
746
745
  };
746
+ schemaVersion: string;
747
747
  id: string;
748
748
  description: string;
749
749
  version: string;
@@ -770,13 +770,13 @@ declare const ExportBundleV2Schema: z.ZodObject<{
770
770
  pluginVersion: string;
771
771
  includesTranscripts: boolean;
772
772
  capsule: {
773
- schemaVersion: string;
774
773
  includes: {
775
774
  procedural: boolean;
776
775
  taxonomy: boolean;
777
776
  identityAnchors: boolean;
778
777
  peerProfiles: boolean;
779
778
  };
779
+ schemaVersion: string;
780
780
  id: string;
781
781
  description: string;
782
782
  version: string;
@@ -815,13 +815,13 @@ declare const ExportBundleV2Schema: z.ZodObject<{
815
815
  pluginVersion: string;
816
816
  includesTranscripts: boolean;
817
817
  capsule: {
818
- schemaVersion: string;
819
818
  includes: {
820
819
  procedural: boolean;
821
820
  taxonomy: boolean;
822
821
  identityAnchors: boolean;
823
822
  peerProfiles: boolean;
824
823
  };
824
+ schemaVersion: string;
825
825
  id: string;
826
826
  description: string;
827
827
  version: string;
@@ -854,13 +854,13 @@ declare const ExportBundleV2Schema: z.ZodObject<{
854
854
  pluginVersion: string;
855
855
  includesTranscripts: boolean;
856
856
  capsule: {
857
- schemaVersion: string;
858
857
  includes: {
859
858
  procedural: boolean;
860
859
  taxonomy: boolean;
861
860
  identityAnchors: boolean;
862
861
  peerProfiles: boolean;
863
862
  };
863
+ schemaVersion: string;
864
864
  id: string;
865
865
  description: string;
866
866
  version: string;
@@ -136,14 +136,34 @@ interface WearableSourceSettings {
136
136
  userId?: string;
137
137
  /**
138
138
  * Memory creation mode (trust gate):
139
+ * - "smart": DEFAULT. Fully automated trust pipeline: the
140
+ * extraction judge (LLM-as-judge) plus a per-source
141
+ * trust prior, cross-device corroboration, and
142
+ * existing-memory support combine into a trust score.
143
+ * High-trust facts are written active; borderline facts
144
+ * go to the review queue; low-trust/judge-rejected
145
+ * facts are dropped. See wearables/trust.ts.
139
146
  * - "off": transcripts only; never create memories.
140
- * - "review": extract candidate memories but write every one with
141
- * status "pending_review" so nothing enters active
142
- * recall without operator approval. Default.
143
- * - "auto": extracted memories that pass the quality gates are
144
- * written active, like live-conversation extraction.
147
+ * - "review": every extracted candidate is written
148
+ * "pending_review" nothing enters active recall
149
+ * without operator approval.
150
+ * - "auto": deterministic gates only; survivors written active
151
+ * (no judge, no trust scoring).
145
152
  */
146
153
  memoryMode: WearableMemoryMode;
154
+ /**
155
+ * Trust prior for this source's transcription quality (0..1).
156
+ * Multiplies extraction confidence in smart mode — lower it for a
157
+ * device that mis-transcribes often. Default 0.8.
158
+ */
159
+ sourceTrust: number;
160
+ /** Smart mode: trust at/above which facts are written active. */
161
+ autoApproveTrust: number;
162
+ /**
163
+ * Smart mode: trust at/above which borderline facts are queued for
164
+ * review instead of dropped. Must be below autoApproveTrust.
165
+ */
166
+ reviewTrust: number;
147
167
  /** Drop extracted facts below this confidence (0–1). */
148
168
  minConfidence: number;
149
169
  /** Drop extracted facts scored below this importance level. */
@@ -154,13 +174,18 @@ interface WearableSourceSettings {
154
174
  maxMemoriesPerDay: number;
155
175
  /**
156
176
  * Import provider-extracted memories (Bee facts / Omi memories).
157
- * "review" lands them in the review queue; "off" (default) skips.
158
- */
159
- importNativeMemories: "off" | "review";
177
+ * - "smart": DEFAULT. Same trust pipeline as transcript facts
178
+ * (judge + trust prior + corroboration) with a slightly reduced
179
+ * prior provider extraction quality is outside Remnic's
180
+ * control.
181
+ * - "review": always pending_review.
182
+ * - "off": skip.
183
+ */
184
+ importNativeMemories: "off" | "review" | "smart";
160
185
  /** Transcript cleanup toggles. */
161
186
  cleanup: WearableCleanupSettings;
162
187
  }
163
- type WearableMemoryMode = "off" | "review" | "auto";
188
+ type WearableMemoryMode = "off" | "review" | "auto" | "smart";
164
189
  interface WearableCleanupSettings {
165
190
  /** Merge consecutive segments from the same speaker. */
166
191
  mergeSameSpeaker: boolean;
@@ -232,6 +257,10 @@ interface WearableSyncSummary {
232
257
  /** Day files written (skipped-unchanged days are not listed). */
233
258
  transcriptsWritten: string[];
234
259
  memoriesCreated: number;
260
+ /** Earlier borderline writes promoted to active by new evidence. */
261
+ memoriesPromoted: number;
262
+ /** Earlier pending writes retired by a fresh judge-reject verdict. */
263
+ memoriesDemoted: number;
235
264
  memoriesSkipped: number;
236
265
  nativeMemoriesImported: number;
237
266
  /** Non-fatal warnings surfaced to the operator. */
@@ -3131,4 +3160,4 @@ interface HourlySummary {
3131
3160
  generatedAt: string;
3132
3161
  }
3133
3162
 
3134
- export { type BriefingFocus as $, type ActiveRecallChatType as A, type BehaviorSignalEvent as B, type CompressionGuidelineOptimizerState as C, type MemorySummary as D, type EntityStructuredSection as E, type FileHygieneConfig as F, type GatewayConfig as G, type RecallPlanMode as H, type ImportanceScore as I, type IdentityInjectionMode as J, type RecallDisclosure as K, type LiveConnectorsConfig as L, type MemoryCategory as M, type BufferTurn as N, type TranscriptEntry as O, type PluginConfig as P, type QmdSearchResult as Q, type RecallTierExplain as R, type Checkpoint as S, type TopicScore as T, type HourlySummary as U, type SessionObserverBandConfig as V, type LifecycleState as W, type VerificationState as X, type PolicyClass as Y, type BriefingSections as Z, type BriefingFollowup as _, type ActiveRecallQueryMode as a, type WearableNativeMemoryPage as a$, type CalendarSource as a0, type CalendarEvent as a1, type BriefingActiveThread as a2, type BriefingResult as a3, type BriefingRecentEntity as a4, type SecretRef as a5, type AgentAccessAuthToken as a6, type CompressionGuidelineOptimizerEventCounts as a7, type CompressionGuidelineOptimizerActionSummary as a8, type CompressionGuidelineOptimizerRuleUpdate as a9, type WearableSourceConnector as aA, type WearablesConfig as aB, type WearableSyncSummary as aC, type WearableSourceStatus as aD, type WearableDayTranscript as aE, type WearableCorrectionRule as aF, type CodingContext as aG, type BootstrapOptions as aH, type BootstrapResult as aI, type ConsolidationObservation as aJ, type EntityTimelineEntry as aK, type CodingModeConfig as aL, type WearableCleanupSettings as aM, type WearableDayTranscriptMeta as aN, type BriefingConfig as aO, type BriefingOpenCommitment as aP, type BriefingWindow as aQ, type CodexCompatConfig as aR, DEFAULT_RECALL_DISCLOSURE as aS, type ExtractedFact as aT, type MemoryActionEligibilitySource as aU, type MemoryObservation as aV, type MemoryScope as aW, RECALL_DISCLOSURE_LEVELS as aX, type WearableAuthCheck as aY, type WearableFetchOptions as aZ, type WearableFetchPage as a_, type MemoryActionType as aa, type EntityMention as ab, type EntitySchemaDefinition as ac, type EntitySchemaSectionDefinition as ad, type ImportanceLevel as ae, type ExtractionResult as af, type ConsolidationResult as ag, type DaySummaryResult as ah, type MemoryIntent as ai, type QmdSearchExplain as aj, type MemoryActionEligibilityContext as ak, type MemoryActionPolicyResult as al, type MemoryLifecycleEventType as am, type MemoryLifecycleStateSummary as an, type ModelProviderConfig as ao, type NativeKnowledgeConfig as ap, type RetrievalTier as aq, type SignalScanResult as ar, type ConversationThread as as, type DreamsStatusResult as at, type DreamsPhase as au, type DreamsRunResult as av, type WearableConversation as aw, type WearableSourceSettings as ax, type WearableNativeMemory as ay, type WearableMemoryMode as az, type ActiveRecallPromptStyle as b, type ReasoningEffort as b$, type WearableTranscriptSegment as b0, isRecallDisclosure as b1, type AgentAccessHttpConfig as b2, type AgentDefaultsConfig as b3, type AgentPersona as b4, type BehaviorLoopAdjustment as b5, type BehaviorSignalDirection as b6, type BehaviorSignalType as b7, type BriefingCalendarSourceError as b8, type BufferEntryState as b9, type ExtractedReasoningTraceStep as bA, type ExtractedRelationship as bB, type ExtractionPassSource as bC, type GitHubLiveConnectorConfig as bD, type GmailLiveConnectorConfig as bE, type GoogleDriveLiveConnectorConfig as bF, type HeartbeatConfig as bG, type HeartbeatDetectionMode as bH, type LlmTraceCallback as bI, type LlmTraceEvent as bJ, type MemoryActionOutcome as bK, type MemoryActionPolicyDecision as bL, type MemoryActionStatus as bM, type MemoryLinkType as bN, type MemoryOsPresetName as bO, type ModelApi as bP, type ModelDefinitionConfig as bQ, type ModelProviderAuthMode as bR, type NamespacePolicy as bS, type NativeKnowledgeFolderRuleConfig as bT, type NativeKnowledgeObsidianVaultConfig as bU, type NativeKnowledgeOpenClawWorkspaceConfig as bV, type NotionLiveConnectorConfig as bW, type PrincipalFromSessionKeyMode as bX, type PrincipalRule as bY, type ProceduralConfig as bZ, type QuestionEntry as b_, type CaptureMode as ba, type CodexCliReasoningEffort as bb, type CodexCompactionFlushMode as bc, type CodexConnectorConfig as bd, type CompressionGuidelineActivationState as be, type CompressionGuidelineOptimizerSourceWindow as bf, type ConfidenceTier as bg, type ConsolidationAction as bh, type ConsolidationItem as bi, type ContinuityIncidentState as bj, type ContinuityLoopCadence as bk, type ContinuityLoopStatus as bl, type ContradictionScanConfig as bm, type CronConversationRecallMode as bn, type CronRecallMode as bo, type DreamingConfig as bp, type DreamingNarrativePromptStyle as bq, type DreamsDeepSleepConfig as br, type DreamsLightSleepConfig as bs, type DreamsPhaseStatus as bt, type DreamsPhasesConfig as bu, type DreamsRemConfig as bv, type EngramTraceEvent as bw, type ExtractedProcedureStep as bx, type ExtractedQuestion as by, type ExtractedReasoningTrace as bz, type ActiveRecallThinking as c, type RecallPipelineConfig as c0, type RecallSectionConfig as c1, type RecallTraceEvent as c2, type RelevanceFeedback as c3, SPECULATIVE_TTL_DAYS as c4, type ScoredEntity as c5, type SemanticChunkingConfigShape as c6, type SignalLevel as c7, type SlotBehaviorConfig as c8, type SlotMismatchMode as c9, type TriggerMode as ca, confidenceTier as cb, type ActiveRecallModelFallbackPolicy as d, type BehaviorLoopPolicyState as e, type AgentPersonaModelConfig as f, type MemoryFile as g, type MemoryLink as h, type MemoryFrontmatter as i, type MemoryStatus as j, type BufferState as k, type MetaState as l, type MemoryActionEvent as m, type MemoryLifecycleEvent as n, type BufferSurpriseEvent as o, type ContinuityIncidentOpenInput as p, type ContinuityIncidentRecord as q, type ContinuityIncidentCloseInput as r, type ContinuityImprovementLoop as s, type ContinuityLoopUpsertInput as t, type ContinuityLoopReviewInput as u, type EntityRelationship as v, type EntityActivityEntry as w, type EntityFile as x, type AccessTrackingEntry as y, type MemoryProjectionCurrentState as z };
3163
+ export { type Checkpoint as $, type ActiveRecallChatType as A, type BehaviorSignalEvent as B, type CompressionGuidelineOptimizerState as C, type MemorySummary as D, type EntityStructuredSection as E, type FileHygieneConfig as F, type GatewayConfig as G, type RecallPlanMode as H, type ImportanceScore as I, type IdentityInjectionMode as J, type RecallDisclosure as K, type LiveConnectorsConfig as L, type MemoryCategory as M, type BriefingSections as N, type BriefingFollowup as O, type PluginConfig as P, type BriefingFocus as Q, type RecallTierExplain as R, type CalendarSource as S, type TopicScore as T, type CalendarEvent as U, type BriefingActiveThread as V, type BriefingResult as W, type BriefingRecentEntity as X, type BufferTurn as Y, type QmdSearchResult as Z, type TranscriptEntry as _, type ActiveRecallQueryMode as a, type WearableNativeMemoryPage as a$, type HourlySummary as a0, type SessionObserverBandConfig as a1, type LifecycleState as a2, type VerificationState as a3, type PolicyClass as a4, type ImportanceLevel as a5, type SecretRef as a6, type AgentAccessAuthToken as a7, type CompressionGuidelineOptimizerEventCounts as a8, type CompressionGuidelineOptimizerActionSummary as a9, type WearableSourceConnector as aA, type WearablesConfig as aB, type WearableSyncSummary as aC, type WearableSourceStatus as aD, type WearableDayTranscript as aE, type WearableCorrectionRule as aF, type CodingContext as aG, type BootstrapOptions as aH, type BootstrapResult as aI, type ConsolidationObservation as aJ, type EntityTimelineEntry as aK, type CodingModeConfig as aL, type WearableCleanupSettings as aM, type WearableDayTranscriptMeta as aN, type BriefingConfig as aO, type BriefingOpenCommitment as aP, type BriefingWindow as aQ, type CodexCompatConfig as aR, DEFAULT_RECALL_DISCLOSURE as aS, type ExtractedFact as aT, type MemoryActionEligibilitySource as aU, type MemoryObservation as aV, type MemoryScope as aW, RECALL_DISCLOSURE_LEVELS as aX, type WearableAuthCheck as aY, type WearableFetchOptions as aZ, type WearableFetchPage as a_, type CompressionGuidelineOptimizerRuleUpdate as aa, type MemoryActionType as ab, type EntityMention as ac, type EntitySchemaDefinition as ad, type EntitySchemaSectionDefinition as ae, type ExtractionResult as af, type ConsolidationResult as ag, type DaySummaryResult as ah, type MemoryIntent as ai, type QmdSearchExplain as aj, type MemoryActionEligibilityContext as ak, type MemoryActionPolicyResult as al, type MemoryLifecycleEventType as am, type MemoryLifecycleStateSummary as an, type ModelProviderConfig as ao, type NativeKnowledgeConfig as ap, type RetrievalTier as aq, type SignalScanResult as ar, type ConversationThread as as, type DreamsStatusResult as at, type DreamsPhase as au, type DreamsRunResult as av, type WearableConversation as aw, type WearableSourceSettings as ax, type WearableNativeMemory as ay, type WearableMemoryMode as az, type ActiveRecallPromptStyle as b, type ReasoningEffort as b$, type WearableTranscriptSegment as b0, isRecallDisclosure as b1, type AgentAccessHttpConfig as b2, type AgentDefaultsConfig as b3, type AgentPersona as b4, type BehaviorLoopAdjustment as b5, type BehaviorSignalDirection as b6, type BehaviorSignalType as b7, type BriefingCalendarSourceError as b8, type BufferEntryState as b9, type ExtractedReasoningTraceStep as bA, type ExtractedRelationship as bB, type ExtractionPassSource as bC, type GitHubLiveConnectorConfig as bD, type GmailLiveConnectorConfig as bE, type GoogleDriveLiveConnectorConfig as bF, type HeartbeatConfig as bG, type HeartbeatDetectionMode as bH, type LlmTraceCallback as bI, type LlmTraceEvent as bJ, type MemoryActionOutcome as bK, type MemoryActionPolicyDecision as bL, type MemoryActionStatus as bM, type MemoryLinkType as bN, type MemoryOsPresetName as bO, type ModelApi as bP, type ModelDefinitionConfig as bQ, type ModelProviderAuthMode as bR, type NamespacePolicy as bS, type NativeKnowledgeFolderRuleConfig as bT, type NativeKnowledgeObsidianVaultConfig as bU, type NativeKnowledgeOpenClawWorkspaceConfig as bV, type NotionLiveConnectorConfig as bW, type PrincipalFromSessionKeyMode as bX, type PrincipalRule as bY, type ProceduralConfig as bZ, type QuestionEntry as b_, type CaptureMode as ba, type CodexCliReasoningEffort as bb, type CodexCompactionFlushMode as bc, type CodexConnectorConfig as bd, type CompressionGuidelineActivationState as be, type CompressionGuidelineOptimizerSourceWindow as bf, type ConfidenceTier as bg, type ConsolidationAction as bh, type ConsolidationItem as bi, type ContinuityIncidentState as bj, type ContinuityLoopCadence as bk, type ContinuityLoopStatus as bl, type ContradictionScanConfig as bm, type CronConversationRecallMode as bn, type CronRecallMode as bo, type DreamingConfig as bp, type DreamingNarrativePromptStyle as bq, type DreamsDeepSleepConfig as br, type DreamsLightSleepConfig as bs, type DreamsPhaseStatus as bt, type DreamsPhasesConfig as bu, type DreamsRemConfig as bv, type EngramTraceEvent as bw, type ExtractedProcedureStep as bx, type ExtractedQuestion as by, type ExtractedReasoningTrace as bz, type ActiveRecallThinking as c, type RecallPipelineConfig as c0, type RecallSectionConfig as c1, type RecallTraceEvent as c2, type RelevanceFeedback as c3, SPECULATIVE_TTL_DAYS as c4, type ScoredEntity as c5, type SemanticChunkingConfigShape as c6, type SignalLevel as c7, type SlotBehaviorConfig as c8, type SlotMismatchMode as c9, type TriggerMode as ca, confidenceTier as cb, type ActiveRecallModelFallbackPolicy as d, type BehaviorLoopPolicyState as e, type AgentPersonaModelConfig as f, type MemoryFile as g, type MemoryStatus as h, type MemoryLink as i, type MemoryFrontmatter as j, type BufferState as k, type MetaState as l, type MemoryActionEvent as m, type MemoryLifecycleEvent as n, type BufferSurpriseEvent as o, type ContinuityIncidentOpenInput as p, type ContinuityIncidentRecord as q, type ContinuityIncidentCloseInput as r, type ContinuityImprovementLoop as s, type ContinuityLoopUpsertInput as t, type ContinuityLoopReviewInput as u, type EntityRelationship as v, type EntityActivityEntry as w, type EntityFile as x, type AccessTrackingEntry as y, type MemoryProjectionCurrentState as z };
package/dist/types.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  import './types-BliCnURB.js';
2
2
  import './index-DJ9QWMw-.js';
3
- export { y as AccessTrackingEntry, A as ActiveRecallChatType, d as ActiveRecallModelFallbackPolicy, b as ActiveRecallPromptStyle, a as ActiveRecallQueryMode, c as ActiveRecallThinking, a6 as AgentAccessAuthToken, b2 as AgentAccessHttpConfig, b3 as AgentDefaultsConfig, b4 as AgentPersona, f as AgentPersonaModelConfig, b5 as BehaviorLoopAdjustment, e as BehaviorLoopPolicyState, b6 as BehaviorSignalDirection, B as BehaviorSignalEvent, b7 as BehaviorSignalType, aH as BootstrapOptions, aI as BootstrapResult, a2 as BriefingActiveThread, b8 as BriefingCalendarSourceError, aO as BriefingConfig, $ as BriefingFocus, _ as BriefingFollowup, aP as BriefingOpenCommitment, a4 as BriefingRecentEntity, a3 as BriefingResult, Z as BriefingSections, aQ as BriefingWindow, b9 as BufferEntryState, k as BufferState, o as BufferSurpriseEvent, N as BufferTurn, a1 as CalendarEvent, a0 as CalendarSource, ba as CaptureMode, S as Checkpoint, bb as CodexCliReasoningEffort, bc as CodexCompactionFlushMode, aR as CodexCompatConfig, bd as CodexConnectorConfig, aG as CodingContext, aL as CodingModeConfig, be as CompressionGuidelineActivationState, a8 as CompressionGuidelineOptimizerActionSummary, a7 as CompressionGuidelineOptimizerEventCounts, a9 as CompressionGuidelineOptimizerRuleUpdate, bf as CompressionGuidelineOptimizerSourceWindow, C as CompressionGuidelineOptimizerState, bg as ConfidenceTier, bh as ConsolidationAction, bi as ConsolidationItem, aJ as ConsolidationObservation, ag as ConsolidationResult, s as ContinuityImprovementLoop, r as ContinuityIncidentCloseInput, p as ContinuityIncidentOpenInput, q as ContinuityIncidentRecord, bj as ContinuityIncidentState, bk as ContinuityLoopCadence, u as ContinuityLoopReviewInput, bl as ContinuityLoopStatus, t as ContinuityLoopUpsertInput, bm as ContradictionScanConfig, as as ConversationThread, bn as CronConversationRecallMode, bo as CronRecallMode, aS as DEFAULT_RECALL_DISCLOSURE, ah as DaySummaryResult, bp as DreamingConfig, bq as DreamingNarrativePromptStyle, br as DreamsDeepSleepConfig, bs as DreamsLightSleepConfig, au as DreamsPhase, bt as DreamsPhaseStatus, bu as DreamsPhasesConfig, bv as DreamsRemConfig, av as DreamsRunResult, at as DreamsStatusResult, bw as EngramTraceEvent, w as EntityActivityEntry, x as EntityFile, ab as EntityMention, v as EntityRelationship, ac as EntitySchemaDefinition, ad as EntitySchemaSectionDefinition, E as EntityStructuredSection, aK as EntityTimelineEntry, aT as ExtractedFact, bx as ExtractedProcedureStep, by as ExtractedQuestion, bz as ExtractedReasoningTrace, bA as ExtractedReasoningTraceStep, bB as ExtractedRelationship, bC as ExtractionPassSource, af as ExtractionResult, F as FileHygieneConfig, G as GatewayConfig, bD as GitHubLiveConnectorConfig, bE as GmailLiveConnectorConfig, bF as GoogleDriveLiveConnectorConfig, bG as HeartbeatConfig, bH as HeartbeatDetectionMode, U as HourlySummary, J as IdentityInjectionMode, ae as ImportanceLevel, I as ImportanceScore, W as LifecycleState, L as LiveConnectorsConfig, bI as LlmTraceCallback, bJ as LlmTraceEvent, ak as MemoryActionEligibilityContext, aU as MemoryActionEligibilitySource, m as MemoryActionEvent, bK as MemoryActionOutcome, bL as MemoryActionPolicyDecision, al as MemoryActionPolicyResult, bM as MemoryActionStatus, aa as MemoryActionType, M as MemoryCategory, g as MemoryFile, i as MemoryFrontmatter, ai as MemoryIntent, n as MemoryLifecycleEvent, am as MemoryLifecycleEventType, an as MemoryLifecycleStateSummary, h as MemoryLink, bN as MemoryLinkType, aV as MemoryObservation, bO as MemoryOsPresetName, z as MemoryProjectionCurrentState, aW as MemoryScope, j as MemoryStatus, D as MemorySummary, l as MetaState, bP as ModelApi, bQ as ModelDefinitionConfig, bR as ModelProviderAuthMode, ao as ModelProviderConfig, bS as NamespacePolicy, ap as NativeKnowledgeConfig, bT as NativeKnowledgeFolderRuleConfig, bU as NativeKnowledgeObsidianVaultConfig, bV as NativeKnowledgeOpenClawWorkspaceConfig, bW as NotionLiveConnectorConfig, P as PluginConfig, Y as PolicyClass, bX as PrincipalFromSessionKeyMode, bY as PrincipalRule, bZ as ProceduralConfig, aj as QmdSearchExplain, Q as QmdSearchResult, b_ as QuestionEntry, aX as RECALL_DISCLOSURE_LEVELS, b$ as ReasoningEffort, K as RecallDisclosure, c0 as RecallPipelineConfig, H as RecallPlanMode, c1 as RecallSectionConfig, R as RecallTierExplain, c2 as RecallTraceEvent, c3 as RelevanceFeedback, aq as RetrievalTier, c4 as SPECULATIVE_TTL_DAYS, c5 as ScoredEntity, a5 as SecretRef, c6 as SemanticChunkingConfigShape, V as SessionObserverBandConfig, c7 as SignalLevel, ar as SignalScanResult, c8 as SlotBehaviorConfig, c9 as SlotMismatchMode, T as TopicScore, O as TranscriptEntry, ca as TriggerMode, X as VerificationState, cb as confidenceTier, b1 as isRecallDisclosure } from './types-D5VRAI04.js';
3
+ export { y as AccessTrackingEntry, A as ActiveRecallChatType, d as ActiveRecallModelFallbackPolicy, b as ActiveRecallPromptStyle, a as ActiveRecallQueryMode, c as ActiveRecallThinking, a7 as AgentAccessAuthToken, b2 as AgentAccessHttpConfig, b3 as AgentDefaultsConfig, b4 as AgentPersona, f as AgentPersonaModelConfig, b5 as BehaviorLoopAdjustment, e as BehaviorLoopPolicyState, b6 as BehaviorSignalDirection, B as BehaviorSignalEvent, b7 as BehaviorSignalType, aH as BootstrapOptions, aI as BootstrapResult, V as BriefingActiveThread, b8 as BriefingCalendarSourceError, aO as BriefingConfig, Q as BriefingFocus, O as BriefingFollowup, aP as BriefingOpenCommitment, X as BriefingRecentEntity, W as BriefingResult, N as BriefingSections, aQ as BriefingWindow, b9 as BufferEntryState, k as BufferState, o as BufferSurpriseEvent, Y as BufferTurn, U as CalendarEvent, S as CalendarSource, ba as CaptureMode, $ as Checkpoint, bb as CodexCliReasoningEffort, bc as CodexCompactionFlushMode, aR as CodexCompatConfig, bd as CodexConnectorConfig, aG as CodingContext, aL as CodingModeConfig, be as CompressionGuidelineActivationState, a9 as CompressionGuidelineOptimizerActionSummary, a8 as CompressionGuidelineOptimizerEventCounts, aa as CompressionGuidelineOptimizerRuleUpdate, bf as CompressionGuidelineOptimizerSourceWindow, C as CompressionGuidelineOptimizerState, bg as ConfidenceTier, bh as ConsolidationAction, bi as ConsolidationItem, aJ as ConsolidationObservation, ag as ConsolidationResult, s as ContinuityImprovementLoop, r as ContinuityIncidentCloseInput, p as ContinuityIncidentOpenInput, q as ContinuityIncidentRecord, bj as ContinuityIncidentState, bk as ContinuityLoopCadence, u as ContinuityLoopReviewInput, bl as ContinuityLoopStatus, t as ContinuityLoopUpsertInput, bm as ContradictionScanConfig, as as ConversationThread, bn as CronConversationRecallMode, bo as CronRecallMode, aS as DEFAULT_RECALL_DISCLOSURE, ah as DaySummaryResult, bp as DreamingConfig, bq as DreamingNarrativePromptStyle, br as DreamsDeepSleepConfig, bs as DreamsLightSleepConfig, au as DreamsPhase, bt as DreamsPhaseStatus, bu as DreamsPhasesConfig, bv as DreamsRemConfig, av as DreamsRunResult, at as DreamsStatusResult, bw as EngramTraceEvent, w as EntityActivityEntry, x as EntityFile, ac as EntityMention, v as EntityRelationship, ad as EntitySchemaDefinition, ae as EntitySchemaSectionDefinition, E as EntityStructuredSection, aK as EntityTimelineEntry, aT as ExtractedFact, bx as ExtractedProcedureStep, by as ExtractedQuestion, bz as ExtractedReasoningTrace, bA as ExtractedReasoningTraceStep, bB as ExtractedRelationship, bC as ExtractionPassSource, af as ExtractionResult, F as FileHygieneConfig, G as GatewayConfig, bD as GitHubLiveConnectorConfig, bE as GmailLiveConnectorConfig, bF as GoogleDriveLiveConnectorConfig, bG as HeartbeatConfig, bH as HeartbeatDetectionMode, a0 as HourlySummary, J as IdentityInjectionMode, a5 as ImportanceLevel, I as ImportanceScore, a2 as LifecycleState, L as LiveConnectorsConfig, bI as LlmTraceCallback, bJ as LlmTraceEvent, ak as MemoryActionEligibilityContext, aU as MemoryActionEligibilitySource, m as MemoryActionEvent, bK as MemoryActionOutcome, bL as MemoryActionPolicyDecision, al as MemoryActionPolicyResult, bM as MemoryActionStatus, ab as MemoryActionType, M as MemoryCategory, g as MemoryFile, j as MemoryFrontmatter, ai as MemoryIntent, n as MemoryLifecycleEvent, am as MemoryLifecycleEventType, an as MemoryLifecycleStateSummary, i as MemoryLink, bN as MemoryLinkType, aV as MemoryObservation, bO as MemoryOsPresetName, z as MemoryProjectionCurrentState, aW as MemoryScope, h as MemoryStatus, D as MemorySummary, l as MetaState, bP as ModelApi, bQ as ModelDefinitionConfig, bR as ModelProviderAuthMode, ao as ModelProviderConfig, bS as NamespacePolicy, ap as NativeKnowledgeConfig, bT as NativeKnowledgeFolderRuleConfig, bU as NativeKnowledgeObsidianVaultConfig, bV as NativeKnowledgeOpenClawWorkspaceConfig, bW as NotionLiveConnectorConfig, P as PluginConfig, a4 as PolicyClass, bX as PrincipalFromSessionKeyMode, bY as PrincipalRule, bZ as ProceduralConfig, aj as QmdSearchExplain, Z as QmdSearchResult, b_ as QuestionEntry, aX as RECALL_DISCLOSURE_LEVELS, b$ as ReasoningEffort, K as RecallDisclosure, c0 as RecallPipelineConfig, H as RecallPlanMode, c1 as RecallSectionConfig, R as RecallTierExplain, c2 as RecallTraceEvent, c3 as RelevanceFeedback, aq as RetrievalTier, c4 as SPECULATIVE_TTL_DAYS, c5 as ScoredEntity, a6 as SecretRef, c6 as SemanticChunkingConfigShape, a1 as SessionObserverBandConfig, c7 as SignalLevel, ar as SignalScanResult, c8 as SlotBehaviorConfig, c9 as SlotMismatchMode, T as TopicScore, _ as TranscriptEntry, ca as TriggerMode, a3 as VerificationState, cb as confidenceTier, b1 as isRecallDisclosure } from './types-2vqxmO0j.js';
@@ -1,5 +1,5 @@
1
1
  import { TierRoutingPolicy } from './tier-routing.js';
2
- import './types-D5VRAI04.js';
2
+ import './types-2vqxmO0j.js';
3
3
  import './types-BliCnURB.js';
4
4
  import './index-DJ9QWMw-.js';
5
5
  import './lifecycle.js';
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  searchVerifiedEpisodes
3
- } from "./chunk-P2D2MM47.js";
3
+ } from "./chunk-ZZSXUZF3.js";
4
4
  import "./chunk-HQ6NIBL6.js";
5
- import "./chunk-UGHUNQ74.js";
5
+ import "./chunk-RSKUUEBA.js";
6
6
  import "./chunk-5UZXUTVO.js";
7
7
  import "./chunk-J6A3CX5N.js";
8
8
  import "./chunk-FPNQF475.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remnic/core",
3
- "version": "9.3.628",
3
+ "version": "9.3.630",
4
4
  "description": "Framework-agnostic Remnic memory engine — orchestrator, storage, extraction, search, trust zones",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1814,6 +1814,13 @@ export class EngramAccessService {
1814
1814
  openaiApiKey: config.openaiApiKey,
1815
1815
  openaiBaseUrl: config.openaiBaseUrl,
1816
1816
  model: config.model,
1817
+ // Without a direct OpenAI key, route follow-ups through the configured
1818
+ // LLM chain (gateway model source or local LLM) — same fallback every
1819
+ // other LLM feature uses. A configured key keeps its precedence so
1820
+ // existing deployments are unchanged.
1821
+ followupGenerator: config.openaiApiKey
1822
+ ? undefined
1823
+ : this.orchestrator.briefingChainFollowupGenerator,
1817
1824
  });
1818
1825
 
1819
1826
  return {
package/src/briefing.ts CHANGED
@@ -19,6 +19,7 @@ import { readFile } from "node:fs/promises";
19
19
  import os from "node:os";
20
20
  import path from "node:path";
21
21
  import { log } from "./logger.js";
22
+ import { extractJsonCandidates } from "./json-extract.js";
22
23
  import { normalizeEntityName, StorageManager } from "./storage.js";
23
24
  import { readEnvVar, resolveHomeDir } from "./runtime/env.js";
24
25
  import type {
@@ -865,7 +866,8 @@ export async function buildBriefing(options: BuildBriefingOptions): Promise<Brie
865
866
  if (maxFollowups === 0 || options.allowLlm === false) {
866
867
  followupsUnavailableReason = "LLM follow-ups disabled by configuration";
867
868
  } else if (!options.openaiApiKey && !options.followupGenerator) {
868
- followupsUnavailableReason = "OPENAI_API_KEY not configured";
869
+ followupsUnavailableReason =
870
+ 'no LLM configured for follow-ups (set OPENAI_API_KEY, enable a local LLM, or use modelSource "gateway")';
869
871
  } else {
870
872
  try {
871
873
  const generator = options.followupGenerator ?? buildOpenAiFollowupGenerator({
@@ -1200,6 +1202,70 @@ function buildOpenAiFollowupGenerator(cfg: {
1200
1202
  };
1201
1203
  }
1202
1204
 
1205
+ /**
1206
+ * Minimal chat-completion surface shared by `FallbackLlmClient` (gateway
1207
+ * model chain) and `LocalLlmClient` (Ollama / OpenAI-compatible local
1208
+ * endpoints). Matches `Orchestrator.fastLlmForRerank` so briefing
1209
+ * follow-ups can ride the same routing as other fast-tier operations.
1210
+ */
1211
+ export interface BriefingChainLlmClient {
1212
+ chatCompletion(
1213
+ messages: Array<{ role: "system" | "user" | "assistant"; content: string }>,
1214
+ options?: {
1215
+ temperature?: number;
1216
+ maxTokens?: number;
1217
+ timeoutMs?: number;
1218
+ operation?: string;
1219
+ priority?: "background" | "recall-critical";
1220
+ },
1221
+ ): Promise<{ content: string } | null>;
1222
+ }
1223
+
1224
+ /**
1225
+ * Build a follow-up generator backed by the configured LLM chain
1226
+ * (gateway model source or local LLM) instead of a direct OpenAI key.
1227
+ *
1228
+ * Local models frequently wrap JSON in code fences or prose, so the
1229
+ * response is run through `extractJsonCandidates` and the first candidate
1230
+ * that parses into a valid `{ followups: [...] }` shape wins. Throws when
1231
+ * the chain returns nothing or no candidate parses — `buildBriefing`
1232
+ * catches and surfaces the message via `followupsUnavailableReason`.
1233
+ */
1234
+ export function buildChainFollowupGenerator(
1235
+ client: BriefingChainLlmClient,
1236
+ ): BriefingFollowupGenerator {
1237
+ return async ({ sections, windowLabel, maxFollowups }) => {
1238
+ const prompt = buildFollowupPrompt(sections, windowLabel, maxFollowups);
1239
+ const response = await client.chatCompletion(
1240
+ [
1241
+ { role: "system", content: FOLLOWUP_INSTRUCTIONS },
1242
+ { role: "user", content: prompt },
1243
+ ],
1244
+ {
1245
+ temperature: 0.2,
1246
+ maxTokens: 512,
1247
+ operation: "briefing-followups",
1248
+ priority: "background",
1249
+ },
1250
+ );
1251
+ if (!response?.content) {
1252
+ throw new Error("LLM chain returned no response");
1253
+ }
1254
+ const candidates = extractJsonCandidates(response.content);
1255
+ let lastError: unknown;
1256
+ for (const candidate of candidates) {
1257
+ try {
1258
+ return parseFollowupResponse(candidate, maxFollowups);
1259
+ } catch (err) {
1260
+ lastError = err;
1261
+ }
1262
+ }
1263
+ throw new Error(
1264
+ `LLM chain response contained no valid followups JSON: ${stringifyError(lastError ?? "no JSON candidates found")}`,
1265
+ );
1266
+ };
1267
+ }
1268
+
1203
1269
  const FOLLOWUP_INSTRUCTIONS = `You suggest short follow-up prompts for a daily context briefing.
1204
1270
  Return strict JSON of the form { "followups": [{ "text": "...", "rationale": "..." }] }.
1205
1271
  Rules:
package/src/index.ts CHANGED
@@ -507,6 +507,8 @@ export {
507
507
  briefingFilename,
508
508
  FileCalendarSource,
509
509
  BRIEFING_FORMAT_ALLOWED,
510
+ buildChainFollowupGenerator,
511
+ type BriefingChainLlmClient,
510
512
  type BuildBriefingOptions,
511
513
  type BriefingFollowupGenerator,
512
514
  type ParsedBriefingWindow,