@remnic/core 9.16.3 → 9.17.0

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 (214) hide show
  1. package/dist/access-admin-ops-surface.d.ts +8 -8
  2. package/dist/access-boundary.d.ts +8 -8
  3. package/dist/access-cli.js +8 -8
  4. package/dist/access-http.d.ts +8 -8
  5. package/dist/access-identity-continuity-surface.d.ts +6 -6
  6. package/dist/access-lcm-surface.d.ts +8 -8
  7. package/dist/access-mcp.d.ts +8 -8
  8. package/dist/access-memory-search-fanout.d.ts +2 -2
  9. package/dist/{access-namespace-preflight-DwhEFYy3.d.ts → access-namespace-preflight-_yxq3PYy.d.ts} +1 -1
  10. package/dist/access-namespace-preflight.d.ts +3 -3
  11. package/dist/access-observe-write-surface.d.ts +8 -8
  12. package/dist/access-operations.d.ts +11 -11
  13. package/dist/access-recall-concurrency.d.ts +8 -8
  14. package/dist/access-recall-response.d.ts +8 -8
  15. package/dist/access-recall-surface.d.ts +8 -8
  16. package/dist/access-schema.d.ts +76 -76
  17. package/dist/{access-service-CSq1Wp2Z.d.ts → access-service-CSm242ks.d.ts} +6 -6
  18. package/dist/access-service.d.ts +8 -8
  19. package/dist/access-surface-catalog.d.ts +8 -8
  20. package/dist/action-confidence.d.ts +1 -1
  21. package/dist/active-memory-bridge.d.ts +1 -1
  22. package/dist/active-recall.d.ts +1 -1
  23. package/dist/active-recall.js +2 -2
  24. package/dist/{auto-sync-UZG3XQZ5.js → auto-sync-IH3G25MT.js} +2 -2
  25. package/dist/behavior-learner.d.ts +1 -1
  26. package/dist/behavior-signals.d.ts +1 -1
  27. package/dist/bootstrap.d.ts +6 -6
  28. package/dist/briefing.d.ts +2 -2
  29. package/dist/buffer-surprise-report.d.ts +1 -1
  30. package/dist/buffer.d.ts +2 -2
  31. package/dist/bulk-import/index.d.ts +3 -3
  32. package/dist/calibration.d.ts +1 -1
  33. package/dist/capabilities.d.ts +1 -1
  34. package/dist/{catalog-B9uga4sG.d.ts → catalog-9qLG_2OV.d.ts} +1 -1
  35. package/dist/causal-behavior.d.ts +1 -1
  36. package/dist/causal-consolidation.d.ts +1 -1
  37. package/dist/causal-trajectory-graph.d.ts +1 -1
  38. package/dist/{chunk-5EKOBRCA.js → chunk-BCNVNUQG.js} +2 -2
  39. package/dist/{chunk-V6LYAXGW.js → chunk-F7BWFIDK.js} +2 -2
  40. package/dist/{chunk-BTK2PIFL.js → chunk-GBT4TFV7.js} +2 -2
  41. package/dist/{chunk-JOCXI2O5.js → chunk-K2B2TMF3.js} +2 -2
  42. package/dist/{chunk-GSQASASV.js → chunk-MONWCSVL.js} +65 -4
  43. package/dist/chunk-MONWCSVL.js.map +1 -0
  44. package/dist/{chunk-VLIY55Q5.js → chunk-TXXP7WAM.js} +4 -4
  45. package/dist/{chunk-YHURQ3M5.js → chunk-UH7VNQ7O.js} +268 -5
  46. package/dist/chunk-UH7VNQ7O.js.map +1 -0
  47. package/dist/{chunk-5SB7SC2G.js → chunk-UX3ZXN34.js} +3 -1
  48. package/dist/{cli-DYLGXxuu.d.ts → cli-BLZHYY2A.d.ts} +5 -5
  49. package/dist/cli.d.ts +10 -10
  50. package/dist/cli.js +5 -5
  51. package/dist/compounding/engine.d.ts +2 -2
  52. package/dist/compounding/preference-consolidator.d.ts +1 -1
  53. package/dist/compression-optimizer.d.ts +1 -1
  54. package/dist/config.d.ts +1 -1
  55. package/dist/config.js +2 -2
  56. package/dist/connectors/codex-materialize-runner.d.ts +1 -1
  57. package/dist/connectors/codex-materialize.d.ts +1 -1
  58. package/dist/connectors/index.d.ts +1 -1
  59. package/dist/consolidation-provenance-check.d.ts +2 -2
  60. package/dist/consolidation-undo.d.ts +2 -2
  61. package/dist/contradiction/index.d.ts +2 -2
  62. package/dist/conversation-index/backend.d.ts +1 -1
  63. package/dist/conversation-index/chunker.d.ts +1 -1
  64. package/dist/conversation-index/faiss-adapter.d.ts +1 -1
  65. package/dist/conversation-index/indexer.d.ts +1 -1
  66. package/dist/conversation-index/search.d.ts +1 -1
  67. package/dist/day-summary.d.ts +1 -1
  68. package/dist/delinearize.d.ts +1 -1
  69. package/dist/direct-answer-wiring.d.ts +1 -1
  70. package/dist/direct-answer.d.ts +1 -1
  71. package/dist/embedding-fallback.d.ts +1 -1
  72. package/dist/enrichment/index.d.ts +1 -1
  73. package/dist/entity-retrieval.d.ts +2 -2
  74. package/dist/entity-schema.d.ts +1 -1
  75. package/dist/explicit-capture.d.ts +6 -6
  76. package/dist/extraction-faithfulness.d.ts +1 -1
  77. package/dist/extraction-judge-telemetry.d.ts +1 -1
  78. package/dist/extraction-judge-training.d.ts +1 -1
  79. package/dist/extraction-judge.d.ts +1 -1
  80. package/dist/extraction.d.ts +1 -1
  81. package/dist/fallback-llm.d.ts +1 -1
  82. package/dist/graph-dashboard-diff.d.ts +1 -1
  83. package/dist/graph-dashboard-key.d.ts +1 -1
  84. package/dist/graph-dashboard-parser.d.ts +1 -1
  85. package/dist/graph-edge-reinforcement.d.ts +1 -1
  86. package/dist/graph-snapshot.d.ts +1 -1
  87. package/dist/graph.d.ts +1 -1
  88. package/dist/importance.d.ts +1 -1
  89. package/dist/importers/index.d.ts +1 -1
  90. package/dist/in-flight-reads.d.ts +1 -1
  91. package/dist/index.d.ts +502 -427
  92. package/dist/index.js +14 -8
  93. package/dist/intent.d.ts +1 -1
  94. package/dist/lcm/engine.d.ts +1 -1
  95. package/dist/lcm/index.d.ts +1 -1
  96. package/dist/lcm/tools.d.ts +1 -1
  97. package/dist/lifecycle.d.ts +1 -1
  98. package/dist/live-connectors-runner.d.ts +1 -1
  99. package/dist/local-llm.d.ts +1 -1
  100. package/dist/local-model-endpoint.d.ts +1 -1
  101. package/dist/maintenance/memory-governance.d.ts +1 -1
  102. package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +2 -2
  103. package/dist/mcp-memory-inspector-app.d.ts +8 -8
  104. package/dist/memory-action-policy.d.ts +1 -1
  105. package/dist/memory-cache.d.ts +1 -1
  106. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
  107. package/dist/memory-projection-store.d.ts +1 -1
  108. package/dist/memory-provenance.d.ts +1 -1
  109. package/dist/memory-worth-outcomes.d.ts +2 -2
  110. package/dist/models-json.d.ts +1 -1
  111. package/dist/namespaces/migrate.d.ts +3 -3
  112. package/dist/namespaces/principal.d.ts +1 -1
  113. package/dist/namespaces/search.d.ts +1 -1
  114. package/dist/namespaces/storage.d.ts +3 -3
  115. package/dist/native-knowledge.d.ts +1 -1
  116. package/dist/offline-sync-impression-drain.d.ts +1 -1
  117. package/dist/operator-toolkit.d.ts +2 -2
  118. package/dist/operator-toolkit.js +3 -3
  119. package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -2
  120. package/dist/orchestration/maintenance.d.ts +3 -3
  121. package/dist/orchestration/maintenance.js +2 -2
  122. package/dist/{orchestrator-BHx-DWCa.d.ts → orchestrator-CplS9U3U.d.ts} +5 -5
  123. package/dist/orchestrator.d.ts +6 -6
  124. package/dist/orchestrator.js +8 -8
  125. package/dist/patterns-cli.d.ts +1 -1
  126. package/dist/{pipeline-DDHSE876.d.ts → pipeline-DB4CbFqo.d.ts} +1 -1
  127. package/dist/policy-runtime.d.ts +1 -1
  128. package/dist/proactive-contention.d.ts +1 -1
  129. package/dist/provenance.d.ts +1 -1
  130. package/dist/{qmd-C4WVh6BM.d.ts → qmd-BxZmOLHq.d.ts} +1 -1
  131. package/dist/qmd-preflight.d.ts +2 -2
  132. package/dist/qmd-recall-cache.d.ts +1 -1
  133. package/dist/qmd.d.ts +2 -2
  134. package/dist/recall-concurrency-config.d.ts +1 -1
  135. package/dist/recall-disclosure-escalation.d.ts +1 -1
  136. package/dist/recall-explain-renderer.d.ts +1 -1
  137. package/dist/recall-memory-map.d.ts +1 -1
  138. package/dist/recall-planner-llm.d.ts +1 -1
  139. package/dist/recall-state.d.ts +1 -1
  140. package/dist/recall-tag-filter.d.ts +1 -1
  141. package/dist/recall-timings.d.ts +1 -1
  142. package/dist/recall-xray-cli.d.ts +1 -1
  143. package/dist/recall-xray-renderer.d.ts +1 -1
  144. package/dist/recall-xray.d.ts +1 -1
  145. package/dist/replay/normalizers/chatgpt.d.ts +1 -1
  146. package/dist/replay/normalizers/claude.d.ts +1 -1
  147. package/dist/replay/normalizers/openclaw.d.ts +1 -1
  148. package/dist/replay/normalizers/shared.d.ts +1 -1
  149. package/dist/replay/runner.d.ts +1 -1
  150. package/dist/replay/types.d.ts +1 -1
  151. package/dist/resolve-auth-token.d.ts +1 -1
  152. package/dist/resume-bundles.js +3 -3
  153. package/dist/retrieval-agents.d.ts +2 -2
  154. package/dist/retrieval-tiers.d.ts +1 -1
  155. package/dist/routing/engine.d.ts +1 -1
  156. package/dist/routing/store.d.ts +1 -1
  157. package/dist/salvage-envelope.d.ts +1 -1
  158. package/dist/schemas.d.ts +76 -76
  159. package/dist/{scope-profiles-EqMXwzCz.d.ts → scope-profiles-NsQQo1Lt.d.ts} +1 -1
  160. package/dist/search/embed-helper.d.ts +1 -1
  161. package/dist/search/factory.d.ts +1 -1
  162. package/dist/search/index.d.ts +1 -1
  163. package/dist/search/lancedb-backend.d.ts +1 -1
  164. package/dist/search/meilisearch-backend.d.ts +1 -1
  165. package/dist/search/noop-backend.d.ts +1 -1
  166. package/dist/search/orama-backend.d.ts +1 -1
  167. package/dist/search/port.d.ts +1 -1
  168. package/dist/search/remote-backend.d.ts +1 -1
  169. package/dist/{semantic-consolidation-CYpvwmQc.d.ts → semantic-consolidation-DW85h30n.d.ts} +1 -1
  170. package/dist/semantic-consolidation.d.ts +2 -2
  171. package/dist/semantic-rule-verifier.d.ts +1 -1
  172. package/dist/session-observer-bands.d.ts +1 -1
  173. package/dist/session-observer-state.d.ts +1 -1
  174. package/dist/shared-context/manager.d.ts +9 -9
  175. package/dist/signal.d.ts +1 -1
  176. package/dist/{storage-Dxd7zVZH.d.ts → storage-o5BTAa8d.d.ts} +1 -1
  177. package/dist/storage.d.ts +2 -2
  178. package/dist/summarizer.d.ts +1 -1
  179. package/dist/summary-snapshot.d.ts +1 -1
  180. package/dist/temporal-supersession.d.ts +2 -2
  181. package/dist/temporal-timeline-recall.d.ts +1 -1
  182. package/dist/temporal-validity.d.ts +1 -1
  183. package/dist/threading.d.ts +1 -1
  184. package/dist/tier-migration.d.ts +2 -2
  185. package/dist/tier-routing.d.ts +1 -1
  186. package/dist/topics.d.ts +1 -1
  187. package/dist/transcript.d.ts +1 -1
  188. package/dist/transfer/types.d.ts +66 -66
  189. package/dist/trust-score-stage.d.ts +1 -1
  190. package/dist/trust-score.d.ts +1 -1
  191. package/dist/{types-OUCJALBK.d.ts → types-V3dT-pen.d.ts} +14 -2
  192. package/dist/types.d.ts +1 -1
  193. package/dist/utility-runtime.d.ts +1 -1
  194. package/dist/write-envelope.d.ts +1 -1
  195. package/package.json +2 -2
  196. package/src/activity/config.test.ts +42 -4
  197. package/src/activity/config.ts +83 -8
  198. package/src/activity/index.ts +5 -3
  199. package/src/activity/memory-gen.test.ts +436 -0
  200. package/src/activity/memory-gen.ts +409 -0
  201. package/src/activity/runner.test.ts +3 -0
  202. package/src/activity/scheduler.test.ts +3 -0
  203. package/src/activity/sync-registration.test.ts +2 -1
  204. package/src/activity/types.ts +15 -1
  205. package/src/config.test.ts +7 -0
  206. package/dist/chunk-GSQASASV.js.map +0 -1
  207. package/dist/chunk-YHURQ3M5.js.map +0 -1
  208. /package/dist/{auto-sync-UZG3XQZ5.js.map → auto-sync-IH3G25MT.js.map} +0 -0
  209. /package/dist/{chunk-5EKOBRCA.js.map → chunk-BCNVNUQG.js.map} +0 -0
  210. /package/dist/{chunk-V6LYAXGW.js.map → chunk-F7BWFIDK.js.map} +0 -0
  211. /package/dist/{chunk-BTK2PIFL.js.map → chunk-GBT4TFV7.js.map} +0 -0
  212. /package/dist/{chunk-JOCXI2O5.js.map → chunk-K2B2TMF3.js.map} +0 -0
  213. /package/dist/{chunk-VLIY55Q5.js.map → chunk-TXXP7WAM.js.map} +0 -0
  214. /package/dist/{chunk-5SB7SC2G.js.map → chunk-UX3ZXN34.js.map} +0 -0
@@ -96,6 +96,8 @@ declare function validateImportTurn(turn: ImportTurn, index?: number): ImportTur
96
96
  *
97
97
  * All timestamps are UTC ISO-8601; day bucketing is half-open [start, end).
98
98
  */
99
+
100
+ type ActivityExtractionMode = "off" | "smart";
99
101
  /** One captured on-screen text snapshot (a single window at a single instant). */
100
102
  interface ActivitySnapshot {
101
103
  /** Store row id (assigned on insert; absent before persistence). */
@@ -170,7 +172,7 @@ interface ActivitySourceConfig {
170
172
  baseUrl: string;
171
173
  token?: string;
172
174
  }
173
- /** Opt-in activity synchronization settings. */
175
+ /** Opt-in activity synchronization + trust-gated extraction settings. */
174
176
  interface ActivityConfig {
175
177
  enabled: boolean;
176
178
  timezone: string;
@@ -178,6 +180,16 @@ interface ActivityConfig {
178
180
  /** Periodic auto-sync cadence in minutes (default 15). */
179
181
  autoSyncIntervalMinutes: number;
180
182
  sources: ActivitySourceConfig[];
183
+ /** `off` keeps activity searchable only; `smart` trust-gates durable first-person claims. */
184
+ extractionMode: ActivityExtractionMode;
185
+ /** Baseline confidence in activity as a source of the user's own actions. */
186
+ sourceTrust: number;
187
+ autoApproveTrust: number;
188
+ reviewTrust: number;
189
+ minConfidence: number;
190
+ minImportance: ImportanceLevel;
191
+ /** `0` means no count cap. */
192
+ maxMemoriesPerDay: number;
181
193
  }
182
194
 
183
195
  /**
@@ -4027,4 +4039,4 @@ interface HourlySummary {
4027
4039
  generatedAt: string;
4028
4040
  }
4029
4041
 
4030
- export { type BehaviorSignalEvent as $, type ActiveRecallChatType as A, type BriefingSections as B, type CalendarSource as C, type DreamsPhase as D, type EntityFile as E, type FaithfulnessFrontmatter as F, type GatewayConfig as G, type HourlySummary as H, type IdentityInjectionMode as I, type ExtractionResult as J, type ConsolidationResult as K, type LiveConnectorsConfig as L, type MemoryFile as M, type DaySummaryResult as N, type ExtractionFailureClass as O, type PluginConfig as P, type QmdSearchResult as Q, type RecallPlanMode as R, type SessionObserverBandConfig as S, type TranscriptEntry as T, type ProvenanceSource as U, type TrustWeights as V, type ConversationThread as W, type LifecycleState as X, type VerificationState as Y, type PolicyClass as Z, type ImportanceLevel as _, type DreamsRunResult as a, type ActivitySourceClient as a$, type BufferSurpriseEvent as a0, type ImportTurn as a1, type BulkImportOptions as a2, type BulkImportSource as a3, type BulkImportResult as a4, type SecretRef as a5, type AgentAccessAuthToken as a6, type CompressionGuidelineOptimizerEventCounts as a7, type CompressionGuidelineOptimizerActionSummary as a8, type CompressionGuidelineOptimizerRuleUpdate as a9, type EntityActivityEntry as aA, type AccessTrackingEntry as aB, type MemorySummary as aC, type CodingContext as aD, type DreamsStatusResult as aE, type WearableConversation as aF, type WearableSourceSettings as aG, type WearableNativeMemory as aH, type WearableMemoryMode as aI, type WearableSourceConnector as aJ, type WearablesConfig as aK, type WearableSyncSummary as aL, type WearableSourceStatus as aM, type WearableDayTranscript as aN, type WearableCorrectionRule as aO, type RecallSectionConfig as aP, type BootstrapOptions as aQ, type BootstrapResult as aR, type ConsolidationObservation as aS, type CodingModeConfig as aT, type CodingKnowledgeConfig as aU, type WearableCleanupSettings as aV, type WearableFusionConfig as aW, type WearableDayTranscriptMeta as aX, type ActivitySnapshot as aY, type ActivityDayMeta as aZ, type ActivityDayDigest as a_, type MemoryActionType as aa, type MemoryActionEvent as ab, type CompressionGuidelineOptimizerState as ac, type EntityMention as ad, type EntitySchemaDefinition as ae, type EntitySchemaSectionDefinition as af, type EntityStructuredSection as ag, type ImportanceScore as ah, type MemoryIntent as ai, type MemoryActionEligibilityContext as aj, type MemoryActionPolicyResult as ak, type MemoryLifecycleEventType as al, type MemoryLifecycleStateSummary as am, type ModelProviderConfig as an, type NativeKnowledgeConfig as ao, type ProvenanceConfig as ap, type RetrievalTier as aq, type SignalScanResult as ar, type TopicScore as as, type QmdSearchExplain as at, type EntityTimelineEntry as au, type MemoryLink as av, type BufferState as aw, type MetaState as ax, type FileHygieneConfig as ay, type EntityRelationship as az, type RecallDisclosure as b, type GitHubLiveConnectorConfig as b$, type ActivitySourceCheck as b0, type ActivitySnapshotPage as b1, type ActivityConfig as b2, type ActivitySourceConfig as b3, type BriefingConfig as b4, type BriefingOpenCommitment as b5, type BriefingWindow as b6, type BulkImportError as b7, type BulkImportSourceAdapter as b8, type CodexCompatConfig as b9, type ChatConfig as bA, type CodexCliReasoningEffort as bB, type CodexCompactionFlushMode as bC, type CodexConnectorConfig as bD, type CodingGraphLspConfig as bE, type CompressionGuidelineActivationState as bF, type CompressionGuidelineOptimizerSourceWindow as bG, type ConfidenceTier as bH, type ConsolidationAction as bI, type ConsolidationItem as bJ, type ContradictionScanConfig as bK, type CronConversationRecallMode as bL, type CronRecallMode as bM, type DreamingConfig as bN, type DreamingNarrativePromptStyle as bO, type DreamsDeepSleepConfig as bP, type DreamsLightSleepConfig as bQ, type DreamsPhaseStatus as bR, type DreamsPhasesConfig as bS, type DreamsRemConfig as bT, type EngramTraceEvent as bU, type ExtractedProcedureStep as bV, type ExtractedQuestion as bW, type ExtractedReasoningTrace as bX, type ExtractedReasoningTraceStep as bY, type ExtractedRelationship as bZ, type ExtractionPassSource as b_, DEFAULT_RECALL_DISCLOSURE as ba, type ExtractedFact as bb, type ImportSourceRole as bc, type ImportTurnValidationIssue as bd, type MemoryActionEligibilitySource as be, type MemoryObservation as bf, type MemoryScope as bg, RECALL_DISCLOSURE_LEVELS as bh, type WearableAuthCheck as bi, type WearableFetchOptions as bj, type WearableFetchPage as bk, type WearableNativeMemoryPage as bl, type WearableTranscriptSegment as bm, isImportRole as bn, isRecallDisclosure as bo, parseIsoTimestamp as bp, validateImportTurn as bq, type AgentAccessHttpConfig as br, type AgentDefaultsConfig as bs, type AgentPersona as bt, type BehaviorLoopAdjustment as bu, type BehaviorSignalDirection as bv, type BehaviorSignalType as bw, type BriefingCalendarSourceError as bx, type BufferEntryState as by, type CaptureMode as bz, type ActiveRecallQueryMode as c, type GmailLiveConnectorConfig as c0, type GoogleDriveLiveConnectorConfig as c1, type HeartbeatConfig as c2, type HeartbeatDetectionMode as c3, type LlmTraceCallback as c4, type LlmTraceEvent as c5, type MemoryActionOutcome as c6, type MemoryActionPolicyDecision as c7, type MemoryActionStatus as c8, type MemoryLinkType as c9, type TriggerMode as cA, confidenceTier as cB, type MemoryOsPresetName as ca, type ModelApi as cb, type ModelDefinitionConfig as cc, type ModelProviderAuthMode as cd, type NamespacePolicy as ce, type NativeKnowledgeFolderRuleConfig as cf, type NativeKnowledgeObsidianVaultConfig as cg, type NativeKnowledgeOpenClawWorkspaceConfig as ch, type NotionLiveConnectorConfig as ci, type PrincipalFromSessionKeyMode as cj, type PrincipalRule as ck, type ProceduralConfig as cl, type QuestionEntry as cm, type ReasoningEffort as cn, type RecallPipelineConfig as co, type RecallTraceEvent as cp, type RelevanceFeedback as cq, SPECULATIVE_TTL_DAYS as cr, type ScopeProfileAutoPromoteConfig as cs, type ScopeProfileTeamProjectConfig as ct, type ScopeTeamConfig as cu, type ScoredEntity as cv, type SemanticChunkingConfigShape as cw, type SignalLevel as cx, type SlotBehaviorConfig as cy, type SlotMismatchMode as cz, type ActiveRecallPromptStyle as d, type ActiveRecallThinking as e, type ActiveRecallModelFallbackPolicy as f, type RecallTierExplain as g, type BriefingFollowup as h, type BriefingFocus as i, type CalendarEvent as j, type BriefingActiveThread as k, type BriefingResult as l, type BriefingRecentEntity as m, type BufferTurn as n, type MemoryFrontmatter as o, type Checkpoint as p, type AgentPersonaModelConfig as q, type SourceConnectorProvenance as r, type ScopeProfileConfig as s, type ScopeProfileLayerId as t, type ScopeProfilePromotionTarget as u, type BehaviorLoopPolicyState as v, type MemoryCategory as w, type MemoryStatus as x, type MemoryProjectionCurrentState as y, type MemoryLifecycleEvent as z };
4042
+ export { type BehaviorSignalEvent as $, type ActiveRecallChatType as A, type BriefingSections as B, type CalendarSource as C, type DreamsPhase as D, type EntityFile as E, type FaithfulnessFrontmatter as F, type GatewayConfig as G, type HourlySummary as H, type IdentityInjectionMode as I, type ExtractionResult as J, type ConsolidationResult as K, type LiveConnectorsConfig as L, type MemoryFile as M, type DaySummaryResult as N, type ExtractionFailureClass as O, type PluginConfig as P, type QmdSearchResult as Q, type RecallPlanMode as R, type SessionObserverBandConfig as S, type TranscriptEntry as T, type ProvenanceSource as U, type TrustWeights as V, type ConversationThread as W, type LifecycleState as X, type VerificationState as Y, type PolicyClass as Z, type ImportanceLevel as _, type DreamsRunResult as a, type ActivitySourceClient as a$, type BufferSurpriseEvent as a0, type ImportTurn as a1, type BulkImportOptions as a2, type BulkImportSource as a3, type BulkImportResult as a4, type SecretRef as a5, type AgentAccessAuthToken as a6, type CompressionGuidelineOptimizerEventCounts as a7, type CompressionGuidelineOptimizerActionSummary as a8, type CompressionGuidelineOptimizerRuleUpdate as a9, type EntityActivityEntry as aA, type AccessTrackingEntry as aB, type MemorySummary as aC, type CodingContext as aD, type DreamsStatusResult as aE, type WearableConversation as aF, type WearableSourceSettings as aG, type WearableNativeMemory as aH, type WearableMemoryMode as aI, type WearableSourceConnector as aJ, type WearablesConfig as aK, type WearableSyncSummary as aL, type WearableSourceStatus as aM, type WearableDayTranscript as aN, type WearableCorrectionRule as aO, type RecallSectionConfig as aP, type BootstrapOptions as aQ, type BootstrapResult as aR, type ConsolidationObservation as aS, type CodingModeConfig as aT, type CodingKnowledgeConfig as aU, type WearableCleanupSettings as aV, type WearableFusionConfig as aW, type WearableDayTranscriptMeta as aX, type ActivitySnapshot as aY, type ActivityDayMeta as aZ, type ActivityDayDigest as a_, type MemoryActionType as aa, type MemoryActionEvent as ab, type CompressionGuidelineOptimizerState as ac, type EntityMention as ad, type EntitySchemaDefinition as ae, type EntitySchemaSectionDefinition as af, type EntityStructuredSection as ag, type ImportanceScore as ah, type MemoryIntent as ai, type MemoryActionEligibilityContext as aj, type MemoryActionPolicyResult as ak, type MemoryLifecycleEventType as al, type MemoryLifecycleStateSummary as am, type ModelProviderConfig as an, type NativeKnowledgeConfig as ao, type ProvenanceConfig as ap, type RetrievalTier as aq, type SignalScanResult as ar, type TopicScore as as, type QmdSearchExplain as at, type EntityTimelineEntry as au, type MemoryLink as av, type BufferState as aw, type MetaState as ax, type FileHygieneConfig as ay, type EntityRelationship as az, type RecallDisclosure as b, type ExtractionPassSource as b$, type ActivitySourceCheck as b0, type ActivitySnapshotPage as b1, type ActivityConfig as b2, type ActivitySourceConfig as b3, type ActivityExtractionMode as b4, type BriefingConfig as b5, type BriefingOpenCommitment as b6, type BriefingWindow as b7, type BulkImportError as b8, type BulkImportSourceAdapter as b9, type CaptureMode as bA, type ChatConfig as bB, type CodexCliReasoningEffort as bC, type CodexCompactionFlushMode as bD, type CodexConnectorConfig as bE, type CodingGraphLspConfig as bF, type CompressionGuidelineActivationState as bG, type CompressionGuidelineOptimizerSourceWindow as bH, type ConfidenceTier as bI, type ConsolidationAction as bJ, type ConsolidationItem as bK, type ContradictionScanConfig as bL, type CronConversationRecallMode as bM, type CronRecallMode as bN, type DreamingConfig as bO, type DreamingNarrativePromptStyle as bP, type DreamsDeepSleepConfig as bQ, type DreamsLightSleepConfig as bR, type DreamsPhaseStatus as bS, type DreamsPhasesConfig as bT, type DreamsRemConfig as bU, type EngramTraceEvent as bV, type ExtractedProcedureStep as bW, type ExtractedQuestion as bX, type ExtractedReasoningTrace as bY, type ExtractedReasoningTraceStep as bZ, type ExtractedRelationship as b_, type CodexCompatConfig as ba, DEFAULT_RECALL_DISCLOSURE as bb, type ExtractedFact as bc, type ImportSourceRole as bd, type ImportTurnValidationIssue as be, type MemoryActionEligibilitySource as bf, type MemoryObservation as bg, type MemoryScope as bh, RECALL_DISCLOSURE_LEVELS as bi, type WearableAuthCheck as bj, type WearableFetchOptions as bk, type WearableFetchPage as bl, type WearableNativeMemoryPage as bm, type WearableTranscriptSegment as bn, isImportRole as bo, isRecallDisclosure as bp, parseIsoTimestamp as bq, validateImportTurn as br, type AgentAccessHttpConfig as bs, type AgentDefaultsConfig as bt, type AgentPersona as bu, type BehaviorLoopAdjustment as bv, type BehaviorSignalDirection as bw, type BehaviorSignalType as bx, type BriefingCalendarSourceError as by, type BufferEntryState as bz, type ActiveRecallQueryMode as c, type GitHubLiveConnectorConfig as c0, type GmailLiveConnectorConfig as c1, type GoogleDriveLiveConnectorConfig as c2, type HeartbeatConfig as c3, type HeartbeatDetectionMode as c4, type LlmTraceCallback as c5, type LlmTraceEvent as c6, type MemoryActionOutcome as c7, type MemoryActionPolicyDecision as c8, type MemoryActionStatus as c9, type SlotMismatchMode as cA, type TriggerMode as cB, confidenceTier as cC, type MemoryLinkType as ca, type MemoryOsPresetName as cb, type ModelApi as cc, type ModelDefinitionConfig as cd, type ModelProviderAuthMode as ce, type NamespacePolicy as cf, type NativeKnowledgeFolderRuleConfig as cg, type NativeKnowledgeObsidianVaultConfig as ch, type NativeKnowledgeOpenClawWorkspaceConfig as ci, type NotionLiveConnectorConfig as cj, type PrincipalFromSessionKeyMode as ck, type PrincipalRule as cl, type ProceduralConfig as cm, type QuestionEntry as cn, type ReasoningEffort as co, type RecallPipelineConfig as cp, type RecallTraceEvent as cq, type RelevanceFeedback as cr, SPECULATIVE_TTL_DAYS as cs, type ScopeProfileAutoPromoteConfig as ct, type ScopeProfileTeamProjectConfig as cu, type ScopeTeamConfig as cv, type ScoredEntity as cw, type SemanticChunkingConfigShape as cx, type SignalLevel as cy, type SlotBehaviorConfig as cz, type ActiveRecallPromptStyle as d, type ActiveRecallThinking as e, type ActiveRecallModelFallbackPolicy as f, type RecallTierExplain as g, type BriefingFollowup as h, type BriefingFocus as i, type CalendarEvent as j, type BriefingActiveThread as k, type BriefingResult as l, type BriefingRecentEntity as m, type BufferTurn as n, type MemoryFrontmatter as o, type Checkpoint as p, type AgentPersonaModelConfig as q, type SourceConnectorProvenance as r, type ScopeProfileConfig as s, type ScopeProfileLayerId as t, type ScopeProfilePromotionTarget as u, type BehaviorLoopPolicyState as v, type MemoryCategory as w, type MemoryStatus as x, type MemoryProjectionCurrentState as y, type MemoryLifecycleEvent as z };
package/dist/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { aB as AccessTrackingEntry, A as ActiveRecallChatType, f as ActiveRecallModelFallbackPolicy, d as ActiveRecallPromptStyle, c as ActiveRecallQueryMode, e as ActiveRecallThinking, a6 as AgentAccessAuthToken, br as AgentAccessHttpConfig, bs as AgentDefaultsConfig, bt as AgentPersona, q as AgentPersonaModelConfig, bu as BehaviorLoopAdjustment, v as BehaviorLoopPolicyState, bv as BehaviorSignalDirection, $ as BehaviorSignalEvent, bw as BehaviorSignalType, aQ as BootstrapOptions, aR as BootstrapResult, k as BriefingActiveThread, bx as BriefingCalendarSourceError, b4 as BriefingConfig, i as BriefingFocus, h as BriefingFollowup, b5 as BriefingOpenCommitment, m as BriefingRecentEntity, l as BriefingResult, B as BriefingSections, b6 as BriefingWindow, by as BufferEntryState, aw as BufferState, a0 as BufferSurpriseEvent, n as BufferTurn, j as CalendarEvent, C as CalendarSource, bz as CaptureMode, bA as ChatConfig, p as Checkpoint, bB as CodexCliReasoningEffort, bC as CodexCompactionFlushMode, b9 as CodexCompatConfig, bD as CodexConnectorConfig, aD as CodingContext, bE as CodingGraphLspConfig, aU as CodingKnowledgeConfig, aT as CodingModeConfig, bF as CompressionGuidelineActivationState, a8 as CompressionGuidelineOptimizerActionSummary, a7 as CompressionGuidelineOptimizerEventCounts, a9 as CompressionGuidelineOptimizerRuleUpdate, bG as CompressionGuidelineOptimizerSourceWindow, ac as CompressionGuidelineOptimizerState, bH as ConfidenceTier, bI as ConsolidationAction, bJ as ConsolidationItem, aS as ConsolidationObservation, K as ConsolidationResult, bK as ContradictionScanConfig, W as ConversationThread, bL as CronConversationRecallMode, bM as CronRecallMode, ba as DEFAULT_RECALL_DISCLOSURE, N as DaySummaryResult, bN as DreamingConfig, bO as DreamingNarrativePromptStyle, bP as DreamsDeepSleepConfig, bQ as DreamsLightSleepConfig, D as DreamsPhase, bR as DreamsPhaseStatus, bS as DreamsPhasesConfig, bT as DreamsRemConfig, a as DreamsRunResult, aE as DreamsStatusResult, bU as EngramTraceEvent, aA as EntityActivityEntry, E as EntityFile, ad as EntityMention, az as EntityRelationship, ae as EntitySchemaDefinition, af as EntitySchemaSectionDefinition, ag as EntityStructuredSection, au as EntityTimelineEntry, bb as ExtractedFact, bV as ExtractedProcedureStep, bW as ExtractedQuestion, bX as ExtractedReasoningTrace, bY as ExtractedReasoningTraceStep, bZ as ExtractedRelationship, O as ExtractionFailureClass, b_ as ExtractionPassSource, J as ExtractionResult, F as FaithfulnessFrontmatter, ay as FileHygieneConfig, G as GatewayConfig, b$ as GitHubLiveConnectorConfig, c0 as GmailLiveConnectorConfig, c1 as GoogleDriveLiveConnectorConfig, c2 as HeartbeatConfig, c3 as HeartbeatDetectionMode, H as HourlySummary, I as IdentityInjectionMode, _ as ImportanceLevel, ah as ImportanceScore, X as LifecycleState, L as LiveConnectorsConfig, c4 as LlmTraceCallback, c5 as LlmTraceEvent, aj as MemoryActionEligibilityContext, be as MemoryActionEligibilitySource, ab as MemoryActionEvent, c6 as MemoryActionOutcome, c7 as MemoryActionPolicyDecision, ak as MemoryActionPolicyResult, c8 as MemoryActionStatus, aa as MemoryActionType, w as MemoryCategory, M as MemoryFile, o as MemoryFrontmatter, ai as MemoryIntent, z as MemoryLifecycleEvent, al as MemoryLifecycleEventType, am as MemoryLifecycleStateSummary, av as MemoryLink, c9 as MemoryLinkType, bf as MemoryObservation, ca as MemoryOsPresetName, y as MemoryProjectionCurrentState, bg as MemoryScope, x as MemoryStatus, aC as MemorySummary, ax as MetaState, cb as ModelApi, cc as ModelDefinitionConfig, cd as ModelProviderAuthMode, an as ModelProviderConfig, ce as NamespacePolicy, ao as NativeKnowledgeConfig, cf as NativeKnowledgeFolderRuleConfig, cg as NativeKnowledgeObsidianVaultConfig, ch as NativeKnowledgeOpenClawWorkspaceConfig, ci as NotionLiveConnectorConfig, P as PluginConfig, Z as PolicyClass, cj as PrincipalFromSessionKeyMode, ck as PrincipalRule, cl as ProceduralConfig, ap as ProvenanceConfig, U as ProvenanceSource, at as QmdSearchExplain, Q as QmdSearchResult, cm as QuestionEntry, bh as RECALL_DISCLOSURE_LEVELS, cn as ReasoningEffort, b as RecallDisclosure, co as RecallPipelineConfig, R as RecallPlanMode, aP as RecallSectionConfig, g as RecallTierExplain, cp as RecallTraceEvent, cq as RelevanceFeedback, aq as RetrievalTier, cr as SPECULATIVE_TTL_DAYS, cs as ScopeProfileAutoPromoteConfig, s as ScopeProfileConfig, t as ScopeProfileLayerId, u as ScopeProfilePromotionTarget, ct as ScopeProfileTeamProjectConfig, cu as ScopeTeamConfig, cv as ScoredEntity, a5 as SecretRef, cw as SemanticChunkingConfigShape, S as SessionObserverBandConfig, cx as SignalLevel, ar as SignalScanResult, cy as SlotBehaviorConfig, cz as SlotMismatchMode, r as SourceConnectorProvenance, as as TopicScore, T as TranscriptEntry, cA as TriggerMode, V as TrustWeights, Y as VerificationState, cB as confidenceTier, bo as isRecallDisclosure } from './types-OUCJALBK.js';
1
+ export { aB as AccessTrackingEntry, A as ActiveRecallChatType, f as ActiveRecallModelFallbackPolicy, d as ActiveRecallPromptStyle, c as ActiveRecallQueryMode, e as ActiveRecallThinking, a6 as AgentAccessAuthToken, bs as AgentAccessHttpConfig, bt as AgentDefaultsConfig, bu as AgentPersona, q as AgentPersonaModelConfig, bv as BehaviorLoopAdjustment, v as BehaviorLoopPolicyState, bw as BehaviorSignalDirection, $ as BehaviorSignalEvent, bx as BehaviorSignalType, aQ as BootstrapOptions, aR as BootstrapResult, k as BriefingActiveThread, by as BriefingCalendarSourceError, b5 as BriefingConfig, i as BriefingFocus, h as BriefingFollowup, b6 as BriefingOpenCommitment, m as BriefingRecentEntity, l as BriefingResult, B as BriefingSections, b7 as BriefingWindow, bz as BufferEntryState, aw as BufferState, a0 as BufferSurpriseEvent, n as BufferTurn, j as CalendarEvent, C as CalendarSource, bA as CaptureMode, bB as ChatConfig, p as Checkpoint, bC as CodexCliReasoningEffort, bD as CodexCompactionFlushMode, ba as CodexCompatConfig, bE as CodexConnectorConfig, aD as CodingContext, bF as CodingGraphLspConfig, aU as CodingKnowledgeConfig, aT as CodingModeConfig, bG as CompressionGuidelineActivationState, a8 as CompressionGuidelineOptimizerActionSummary, a7 as CompressionGuidelineOptimizerEventCounts, a9 as CompressionGuidelineOptimizerRuleUpdate, bH as CompressionGuidelineOptimizerSourceWindow, ac as CompressionGuidelineOptimizerState, bI as ConfidenceTier, bJ as ConsolidationAction, bK as ConsolidationItem, aS as ConsolidationObservation, K as ConsolidationResult, bL as ContradictionScanConfig, W as ConversationThread, bM as CronConversationRecallMode, bN as CronRecallMode, bb as DEFAULT_RECALL_DISCLOSURE, N as DaySummaryResult, bO as DreamingConfig, bP as DreamingNarrativePromptStyle, bQ as DreamsDeepSleepConfig, bR as DreamsLightSleepConfig, D as DreamsPhase, bS as DreamsPhaseStatus, bT as DreamsPhasesConfig, bU as DreamsRemConfig, a as DreamsRunResult, aE as DreamsStatusResult, bV as EngramTraceEvent, aA as EntityActivityEntry, E as EntityFile, ad as EntityMention, az as EntityRelationship, ae as EntitySchemaDefinition, af as EntitySchemaSectionDefinition, ag as EntityStructuredSection, au as EntityTimelineEntry, bc as ExtractedFact, bW as ExtractedProcedureStep, bX as ExtractedQuestion, bY as ExtractedReasoningTrace, bZ as ExtractedReasoningTraceStep, b_ as ExtractedRelationship, O as ExtractionFailureClass, b$ as ExtractionPassSource, J as ExtractionResult, F as FaithfulnessFrontmatter, ay as FileHygieneConfig, G as GatewayConfig, c0 as GitHubLiveConnectorConfig, c1 as GmailLiveConnectorConfig, c2 as GoogleDriveLiveConnectorConfig, c3 as HeartbeatConfig, c4 as HeartbeatDetectionMode, H as HourlySummary, I as IdentityInjectionMode, _ as ImportanceLevel, ah as ImportanceScore, X as LifecycleState, L as LiveConnectorsConfig, c5 as LlmTraceCallback, c6 as LlmTraceEvent, aj as MemoryActionEligibilityContext, bf as MemoryActionEligibilitySource, ab as MemoryActionEvent, c7 as MemoryActionOutcome, c8 as MemoryActionPolicyDecision, ak as MemoryActionPolicyResult, c9 as MemoryActionStatus, aa as MemoryActionType, w as MemoryCategory, M as MemoryFile, o as MemoryFrontmatter, ai as MemoryIntent, z as MemoryLifecycleEvent, al as MemoryLifecycleEventType, am as MemoryLifecycleStateSummary, av as MemoryLink, ca as MemoryLinkType, bg as MemoryObservation, cb as MemoryOsPresetName, y as MemoryProjectionCurrentState, bh as MemoryScope, x as MemoryStatus, aC as MemorySummary, ax as MetaState, cc as ModelApi, cd as ModelDefinitionConfig, ce as ModelProviderAuthMode, an as ModelProviderConfig, cf as NamespacePolicy, ao as NativeKnowledgeConfig, cg as NativeKnowledgeFolderRuleConfig, ch as NativeKnowledgeObsidianVaultConfig, ci as NativeKnowledgeOpenClawWorkspaceConfig, cj as NotionLiveConnectorConfig, P as PluginConfig, Z as PolicyClass, ck as PrincipalFromSessionKeyMode, cl as PrincipalRule, cm as ProceduralConfig, ap as ProvenanceConfig, U as ProvenanceSource, at as QmdSearchExplain, Q as QmdSearchResult, cn as QuestionEntry, bi as RECALL_DISCLOSURE_LEVELS, co as ReasoningEffort, b as RecallDisclosure, cp as RecallPipelineConfig, R as RecallPlanMode, aP as RecallSectionConfig, g as RecallTierExplain, cq as RecallTraceEvent, cr as RelevanceFeedback, aq as RetrievalTier, cs as SPECULATIVE_TTL_DAYS, ct as ScopeProfileAutoPromoteConfig, s as ScopeProfileConfig, t as ScopeProfileLayerId, u as ScopeProfilePromotionTarget, cu as ScopeProfileTeamProjectConfig, cv as ScopeTeamConfig, cw as ScoredEntity, a5 as SecretRef, cx as SemanticChunkingConfigShape, S as SessionObserverBandConfig, cy as SignalLevel, ar as SignalScanResult, cz as SlotBehaviorConfig, cA as SlotMismatchMode, r as SourceConnectorProvenance, as as TopicScore, T as TranscriptEntry, cB as TriggerMode, V as TrustWeights, Y as VerificationState, cC as confidenceTier, bp as isRecallDisclosure } from './types-V3dT-pen.js';
2
2
  import './message-parts/index.js';
3
3
  import './bounded-jsonl-state.js';
4
4
  export { ContinuityImprovementLoop, ContinuityIncidentCloseInput, ContinuityIncidentOpenInput, ContinuityIncidentRecord, ContinuityIncidentState, ContinuityLoopCadence, ContinuityLoopReviewInput, ContinuityLoopStatus, ContinuityLoopUpsertInput } from './types-continuity.js';
@@ -1,5 +1,5 @@
1
1
  import { TierRoutingPolicy } from './tier-routing.js';
2
- import './types-OUCJALBK.js';
2
+ import './types-V3dT-pen.js';
3
3
  import './message-parts/index.js';
4
4
  import './bounded-jsonl-state.js';
5
5
  import './types-continuity.js';
@@ -1,4 +1,4 @@
1
- import { w as MemoryCategory } from './types-OUCJALBK.js';
1
+ import { w as MemoryCategory } from './types-V3dT-pen.js';
2
2
  import './message-parts/index.js';
3
3
  import './bounded-jsonl-state.js';
4
4
  import './types-continuity.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remnic/core",
3
- "version": "9.16.3",
3
+ "version": "9.17.0",
4
4
  "description": "Framework-agnostic Remnic memory engine — orchestrator, storage, extraction, search, trust zones",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -3045,7 +3045,7 @@
3045
3045
  "core"
3046
3046
  ],
3047
3047
  "peerDependencies": {
3048
- "@remnic/coding-graph": "^9.16.3"
3048
+ "@remnic/coding-graph": "^9.17.0"
3049
3049
  },
3050
3050
  "peerDependenciesMeta": {
3051
3051
  "@remnic/coding-graph": {
@@ -1,16 +1,24 @@
1
1
  import assert from "node:assert/strict";
2
2
  import test from "node:test";
3
3
 
4
- import { parseActivityConfig } from "./config.js";
4
+ import { defaultActivityConfig, parseActivityConfig } from "./config.js";
5
5
 
6
- test("parseActivityConfig defaults to an inert configuration", () => {
7
- assert.deepEqual(parseActivityConfig(undefined), {
6
+ test("parseActivityConfig defaults to an inert, search-only configuration", () => {
7
+ assert.deepEqual(defaultActivityConfig(), {
8
8
  enabled: false,
9
9
  timezone: "UTC",
10
10
  syncDays: 1,
11
11
  autoSyncIntervalMinutes: 15,
12
12
  sources: [],
13
+ extractionMode: "off",
14
+ sourceTrust: 0.6,
15
+ autoApproveTrust: 0.8,
16
+ reviewTrust: 0.5,
17
+ minConfidence: 0.7,
18
+ minImportance: "normal",
19
+ maxMemoriesPerDay: 0,
13
20
  });
21
+ assert.deepEqual(parseActivityConfig(undefined), defaultActivityConfig());
14
22
  });
15
23
 
16
24
  test("parseActivityConfig treats a string false gate as disabled", () => {
@@ -26,10 +34,10 @@ test("parseActivityConfig preserves explicit source settings", () => {
26
34
  sources: [{ machineLabel: "fixture-machine", baseUrl: "http://127.0.0.1:4319", token: "fixture-token" }],
27
35
  }),
28
36
  {
37
+ ...defaultActivityConfig(),
29
38
  enabled: true,
30
39
  timezone: "America/Chicago",
31
40
  syncDays: 3,
32
- autoSyncIntervalMinutes: 15,
33
41
  sources: [{ machineLabel: "fixture-machine", baseUrl: "http://127.0.0.1:4319", token: "fixture-token" }],
34
42
  },
35
43
  );
@@ -111,3 +119,33 @@ test("parseActivityConfig parses and bounds autoSyncIntervalMinutes", () => {
111
119
  assert.throws(() => parseActivityConfig({ autoSyncIntervalMinutes: 0 }), /autoSyncIntervalMinutes must be an integer from 1 to 1440/);
112
120
  assert.throws(() => parseActivityConfig({ autoSyncIntervalMinutes: 1441 }), /autoSyncIntervalMinutes must be an integer from 1 to 1440/);
113
121
  });
122
+
123
+ test("activity config accepts smart extraction only when explicitly selected", () => {
124
+ // `enabled` defaults false, so no source is required to configure extraction.
125
+ assert.deepEqual(parseActivityConfig({ extractionMode: "smart", maxMemoriesPerDay: 3 }), {
126
+ ...defaultActivityConfig(),
127
+ extractionMode: "smart",
128
+ maxMemoriesPerDay: 3,
129
+ });
130
+ });
131
+
132
+ test("activity config rejects invalid extraction values rather than silently defaulting", () => {
133
+ assert.throws(() => parseActivityConfig({ extractionMode: "automatic" }), /extractionMode/);
134
+ assert.throws(() => parseActivityConfig({ minConfidence: 1.1 }), /minConfidence/);
135
+ assert.throws(() => parseActivityConfig({ maxMemoriesPerDay: 1.5 }), /maxMemoriesPerDay/);
136
+ });
137
+
138
+ test("activity config rejects inverted trust thresholds", () => {
139
+ assert.throws(
140
+ () => parseActivityConfig({ reviewTrust: 0.9, autoApproveTrust: 0.5 }),
141
+ /reviewTrust .* must be below autoApproveTrust/,
142
+ );
143
+ });
144
+
145
+ test("activity config rejects a null extractionMode instead of silently defaulting to off", () => {
146
+ assert.throws(() => parseActivityConfig({ extractionMode: null }), /extractionMode/);
147
+ });
148
+
149
+ test("activity config rejects a null maxMemoriesPerDay instead of silently uncapping", () => {
150
+ assert.throws(() => parseActivityConfig({ maxMemoriesPerDay: null }), /maxMemoriesPerDay/);
151
+ });
@@ -1,6 +1,29 @@
1
1
  import { coerceBooleanLike, coerceNumber } from "../connectors/coerce.js";
2
2
  import { assertValidTimezone } from "./digest.js";
3
- import type { ActivityConfig, ActivitySourceConfig } from "./types.js";
3
+ import type { ImportanceLevel } from "../types.js";
4
+ import type { ActivityConfig, ActivityExtractionMode, ActivitySourceConfig } from "./types.js";
5
+
6
+ const EXTRACTION_MODES: readonly ActivityExtractionMode[] = ["off", "smart"];
7
+ const IMPORTANCE_LEVELS: readonly ImportanceLevel[] = ["critical", "high", "normal", "low", "trivial"];
8
+ const LOOPBACK_HOSTS: Record<string, true> = { localhost: true, "127.0.0.1": true, "::1": true };
9
+
10
+ /** The inert default: disabled, search-only, no sources, no extraction. */
11
+ export function defaultActivityConfig(): ActivityConfig {
12
+ return {
13
+ enabled: false,
14
+ timezone: "UTC",
15
+ syncDays: 1,
16
+ autoSyncIntervalMinutes: 15,
17
+ sources: [],
18
+ extractionMode: "off",
19
+ sourceTrust: 0.6,
20
+ autoApproveTrust: 0.8,
21
+ reviewTrust: 0.5,
22
+ minConfidence: 0.7,
23
+ minImportance: "normal",
24
+ maxMemoriesPerDay: 0,
25
+ };
26
+ }
4
27
 
5
28
  function asRecord(value: unknown, name: string): Record<string, unknown> {
6
29
  if (typeof value !== "object" || value === null || Array.isArray(value)) {
@@ -15,15 +38,21 @@ function optionalString(value: unknown, name: string): string | undefined {
15
38
  return value;
16
39
  }
17
40
 
18
- const LOOPBACK_HOSTS: Record<string, true> = { localhost: true, "127.0.0.1": true, "::1": true };
41
+ function parseUnitInterval(value: unknown, key: string, fallback: number): number {
42
+ if (value === undefined) return fallback;
43
+ const parsed = coerceNumber(value);
44
+ if (parsed === undefined || !Number.isFinite(parsed) || parsed < 0 || parsed > 1) {
45
+ throw new RangeError(`activity.${key} must be a number in [0, 1]`);
46
+ }
47
+ return parsed;
48
+ }
19
49
 
20
50
  /**
21
51
  * Parse, protocol-check, and confine an activity source base URL to a local
22
52
  * loopback host. Shared with ActivityHttpSourceClient so config-load and client
23
- * construction reject the exact same shapes with the same prefixed message (a
24
- * bare `new URL()` throws an opaque TypeError on malformed input). The bearer
25
- * token travels in an Authorization header, so a non-loopback baseUrl would
26
- * exfiltrate it; the subsystem contract is local capture daemons only.
53
+ * construction reject the exact same shapes with the same prefixed message. The
54
+ * bearer token travels in an Authorization header, so a non-loopback baseUrl
55
+ * would exfiltrate it; the subsystem contract is local capture daemons only.
27
56
  */
28
57
  export function validateActivityBaseUrl(baseUrl: string): URL {
29
58
  let parsed: URL;
@@ -61,9 +90,15 @@ function parseSource(value: unknown): ActivitySourceConfig {
61
90
  return { machineLabel, baseUrl, ...(token === undefined ? {} : { token }) };
62
91
  }
63
92
 
93
+ /**
94
+ * Parse the unified `activity.*` block. `enabled` gates source ingestion (and
95
+ * requires at least one source); `extractionMode` independently gates durable
96
+ * trust-gated memory extraction (default `off`, i.e. search-only).
97
+ */
64
98
  export function parseActivityConfig(raw: unknown): ActivityConfig {
99
+ const defaults = defaultActivityConfig();
65
100
  if (raw === undefined || raw === null) {
66
- return { enabled: false, timezone: "UTC", syncDays: 1, autoSyncIntervalMinutes: 15, sources: [] };
101
+ return { ...defaults };
67
102
  }
68
103
  const config = asRecord(raw, "activity");
69
104
  const enabledValue = coerceBooleanLike(config.enabled, "activity.enabled");
@@ -107,5 +142,45 @@ export function parseActivityConfig(raw: unknown): ActivityConfig {
107
142
  }
108
143
  const enabled = enabledValue ?? false;
109
144
  if (enabled && sources.length === 0) throw new RangeError("activity.enabled requires at least one source");
110
- return { enabled, timezone, syncDays, autoSyncIntervalMinutes, sources };
145
+
146
+ // Extraction gate (independent of `enabled` ingestion). Default `off`.
147
+ // Default only for a missing key; an explicit null/non-string is a malformed
148
+ // enum and must fail rather than silently disabling extraction.
149
+ const extractionMode = config.extractionMode === undefined ? defaults.extractionMode : config.extractionMode;
150
+ if (typeof extractionMode !== "string" || !EXTRACTION_MODES.includes(extractionMode as ActivityExtractionMode)) {
151
+ throw new RangeError(`activity.extractionMode must be one of: ${EXTRACTION_MODES.join(", ")}`);
152
+ }
153
+ const minImportance = config.minImportance === undefined ? defaults.minImportance : config.minImportance;
154
+ if (typeof minImportance !== "string" || !IMPORTANCE_LEVELS.includes(minImportance as ImportanceLevel)) {
155
+ throw new RangeError(`activity.minImportance must be one of: ${IMPORTANCE_LEVELS.join(", ")}`);
156
+ }
157
+ // Default only for a missing key; an explicit null/unparseable value must fail
158
+ // rather than silently uncapping (parity with the enum/unit-interval fields).
159
+ const rawMaxMemoriesPerDay =
160
+ config.maxMemoriesPerDay === undefined ? defaults.maxMemoriesPerDay : config.maxMemoriesPerDay;
161
+ const maxMemoriesPerDay = coerceNumber(rawMaxMemoriesPerDay);
162
+ if (maxMemoriesPerDay === undefined || !Number.isInteger(maxMemoriesPerDay) || maxMemoriesPerDay < 0) {
163
+ throw new RangeError("activity.maxMemoriesPerDay must be a non-negative integer");
164
+ }
165
+ const autoApproveTrust = parseUnitInterval(config.autoApproveTrust, "autoApproveTrust", defaults.autoApproveTrust);
166
+ const reviewTrust = parseUnitInterval(config.reviewTrust, "reviewTrust", defaults.reviewTrust);
167
+ if (reviewTrust >= autoApproveTrust) {
168
+ throw new RangeError(
169
+ `activity.reviewTrust (${reviewTrust}) must be below autoApproveTrust (${autoApproveTrust})`,
170
+ );
171
+ }
172
+ return {
173
+ enabled,
174
+ timezone,
175
+ syncDays,
176
+ autoSyncIntervalMinutes,
177
+ sources,
178
+ extractionMode: extractionMode as ActivityExtractionMode,
179
+ sourceTrust: parseUnitInterval(config.sourceTrust, "sourceTrust", defaults.sourceTrust),
180
+ autoApproveTrust,
181
+ reviewTrust,
182
+ minConfidence: parseUnitInterval(config.minConfidence, "minConfidence", defaults.minConfidence),
183
+ minImportance: minImportance as ImportanceLevel,
184
+ maxMemoriesPerDay,
185
+ };
111
186
  }
@@ -1,8 +1,9 @@
1
1
  /**
2
2
  * Public entry for the on-screen activity subsystem (issue #1900): the durable
3
- * SQLite snapshot store plus the deterministic day-digest renderer. Re-exported
4
- * from the package root (`src/index.ts`) so consumers import it from
5
- * `@remnic/core`, matching the wearables subsystem's surfacing.
3
+ * SQLite snapshot store, the deterministic day-digest renderer, the replayable
4
+ * source ingestion pipeline, and trust-gated memory generation. Re-exported from
5
+ * the package root (`src/index.ts`) so consumers import it from `@remnic/core`,
6
+ * matching the wearables subsystem's surfacing.
6
7
  */
7
8
  export * from "./types.js";
8
9
  export * from "./store.js";
@@ -13,3 +14,4 @@ export * from "./runner.js";
13
14
  export * from "./scheduler.js";
14
15
  export * from "./config.js";
15
16
  export * from "./reindex.js";
17
+ export * from "./memory-gen.js";