@snoai/memory 1.1.0 → 1.2.1

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.
@@ -1,6 +1,6 @@
1
- import { $t as readModelReplyJson, A as canonicalizeProfileSectionName, At as CODING_SKIN_SESSION_QUERY, B as loadSqliteVecExtension, Bt as stringifyInsightMetadata, C as normalizeEntityName, D as readAtomicArrivalRetirementCandidateSet, Dt as classifyLlmFailure, E as journalAtomicArrivalRetirementRefusal, Et as withProviderResponses, F as StaleSupersedeTargetError, Ft as stripRoleLabelPrefix, G as orderAdapterAPair, Gt as MEMORY_CATEGORIES, Ht as parseIsoDateTimeMs, I as TaskLifecycleStaleResolutionError, It as truncateGraphemes, J as renderAdapterAChatPrompt, Jt as resolveLlmRoute, K as parseAdapterAChatVerdict, Kt as normalizeCategory, L as validateMemoryTelemetryMetadata, Lt as redactSecrets, M as getSnoStationMemDataDir, Mt as clampInt, N as normalizeMemoryRelationPredicate, Nt as stableHash, O as recordTokenCounter, Ot as isTerminalLlmFailure$1, P as MemoryStore, Pt as stripHtmlTags, Q as appendAuditEntry, Qt as modelReplyJsonCandidates, R as randomUUID$1, Rt as buildInsightMetadata, S as listAtomicMemoryEntityCandidates, St as LlmClientTerminalError, T as closeAtomicArrivalRetirementTargets, Tt as isTerminalLlmFailure, U as adapterAViewFromRecord, Ut as deriveFactKey, Vt as normalizeIsoDateTimeString, W as isAdapterAVerdictReply, Wt as AGGREGATION_OPERATIONS, X as compareMemorySourceOrder, Xt as ATOMIC_EXTRACTION_SKILL_HASH, Y as renderAdapterAPrompt, Yt as ATOMIC_EXTRACTION_SKILL, Z as readMemorySourceOrderOrOldest, Zt as atomicExtractionSkillReference, _ as taskLifecycleCandidateSetVersion, _t as SnoStationMemError, an as sessionZoneCarriedBy, b as resolveTaskLifecycleEffectiveTime, bt as createScopePolicy, cn as isMemoryTelemetryEventType, ct as resolveMemoryDate, d as AccessTracker, dn as openSqliteDatabaseReadonly, dt as buildIndexedText, en as state_vocabulary_default, et as currentMutationAttemptId, f as Embedder, fn as checkMemoryOperation, ft as stripEnvelopeMetadata, g as resolveTaskLifecycle, gn as forwardObserveLedger, gt as RetrievalError, h as findUniqueActiveTaskByDescription, hn as withMemoryOperation, ht as RESOURCES_BY_LOCALE, in as isCalendarLabel, it as runWithMutationAttempt, j as normalizeTopicToSectionName, jt as clamp01, k as canExtractorWrite, kt as CODING_SKIN_LEDGER_MAX_CHARS, l as MemoryRetriever, ln as initSqliteRuntime, lt as unresolvedMemoryDate, m as buildTaskLifecycleCandidateSet, mn as memoryOperationSignal, mt as ALL_RESOURCES, nn as calculateCalendarTime, nt as runWithMemoryAudit, on as attribute_dictionary_default, ot as parseSessionTimestamp, p as acceptsTaskLifecycleJudgment, pn as memoryFileWrite, pt as normalizeAmbientLearningText, q as prospectiveProfileView, qt as pickLlmRoutingConfig, rn as calendarInstructionSchema, rt as runWithMemoryAuditSync, sn as MEMORY_TELEMETRY_DELETE_REASONS, st as serializeIntervalMetadata, tn as relations, u as DEFAULT_RETRIEVAL_CONFIG, un as openSqliteDatabase, ut as boundSectionContent, v as admitTaskLifecycleAssertion, vt as StorageError, w as recordAtomicEntityIdentityJournal, wt as createLlmClient, x as resolveHookAgentId, xt as parseAgentIdFromSessionKey, y as buildTaskLifecycleCommandClaim, yt as MemoryScopePolicy, z as readChunkVecTableState, zt as parseInsightMetadata } from "./rem-batch-executor-B4OoDBVK.js";
1
+ import { $t as readModelReplyJson, A as canonicalizeProfileSectionName, At as CODING_SKIN_SESSION_QUERY, B as loadSqliteVecExtension, Bt as stringifyInsightMetadata, C as normalizeEntityName, D as readAtomicArrivalRetirementCandidateSet, Dt as classifyLlmFailure, E as journalAtomicArrivalRetirementRefusal, Et as withProviderResponses, F as StaleSupersedeTargetError, Ft as stripRoleLabelPrefix, G as orderAdapterAPair, Gt as MEMORY_CATEGORIES, Ht as parseIsoDateTimeMs, I as TaskLifecycleStaleResolutionError, It as truncateGraphemes, J as renderAdapterAChatPrompt, Jt as resolveLlmRoute, K as parseAdapterAChatVerdict, Kt as normalizeCategory, L as validateMemoryTelemetryMetadata, Lt as redactSecrets, M as getSnoStationMemDataDir, Mt as clampInt, N as normalizeMemoryRelationPredicate, Nt as stableHash, O as recordTokenCounter, Ot as isTerminalLlmFailure$1, P as MemoryStore, Pt as stripHtmlTags, Q as appendAuditEntry, Qt as modelReplyJsonCandidates, R as randomUUID$1, Rt as buildInsightMetadata, S as listAtomicMemoryEntityCandidates, St as LlmClientTerminalError, T as closeAtomicArrivalRetirementTargets, Tt as isTerminalLlmFailure, U as adapterAViewFromRecord, Ut as deriveFactKey, Vt as normalizeIsoDateTimeString, W as isAdapterAVerdictReply, Wt as AGGREGATION_OPERATIONS, X as compareMemorySourceOrder, Xt as ATOMIC_EXTRACTION_SKILL_HASH, Y as renderAdapterAPrompt, Yt as ATOMIC_EXTRACTION_SKILL, Z as readMemorySourceOrderOrOldest, Zt as atomicExtractionSkillReference, _ as taskLifecycleCandidateSetVersion, _t as SnoStationMemError, an as sessionZoneCarriedBy, b as resolveTaskLifecycleEffectiveTime, bt as createScopePolicy, cn as isMemoryTelemetryEventType, ct as resolveMemoryDate, d as AccessTracker, dn as openSqliteDatabaseReadonly, dt as buildIndexedText, en as state_vocabulary_default, et as currentMutationAttemptId, f as Embedder, fn as checkMemoryOperation, ft as stripEnvelopeMetadata, g as resolveTaskLifecycle, gn as forwardObserveLedgerUntilIdle, gt as RetrievalError, h as findUniqueActiveTaskByDescription, hn as withMemoryOperation, ht as RESOURCES_BY_LOCALE, in as isCalendarLabel, it as runWithMutationAttempt, j as normalizeTopicToSectionName, jt as clamp01, k as canExtractorWrite, kt as CODING_SKIN_LEDGER_MAX_CHARS, l as MemoryRetriever, ln as initSqliteRuntime, lt as unresolvedMemoryDate, m as buildTaskLifecycleCandidateSet, mn as memoryOperationSignal, mt as ALL_RESOURCES, nn as calculateCalendarTime, nt as runWithMemoryAudit, on as attribute_dictionary_default, ot as parseSessionTimestamp, p as acceptsTaskLifecycleJudgment, pn as memoryFileWrite, pt as normalizeAmbientLearningText, q as prospectiveProfileView, qt as pickLlmRoutingConfig, rn as calendarInstructionSchema, rt as runWithMemoryAuditSync, sn as MEMORY_TELEMETRY_DELETE_REASONS, st as serializeIntervalMetadata, tn as relations, u as DEFAULT_RETRIEVAL_CONFIG, un as openSqliteDatabase, ut as boundSectionContent, v as admitTaskLifecycleAssertion, vt as StorageError, w as recordAtomicEntityIdentityJournal, wt as createLlmClient, x as resolveHookAgentId, xt as parseAgentIdFromSessionKey, y as buildTaskLifecycleCommandClaim, yt as MemoryScopePolicy, z as readChunkVecTableState, zt as parseInsightMetadata } from "./rem-batch-executor-Bdsf26tD.js";
2
2
  import { A as SESSION_STRATEGIES, An as DEFAULT_REFLECTION_SESSION_TTL_MS, Bn as FTS_MERGE_INTERVAL_MS, Bt as FIXED_PROTOCOL_VALUE_64, C as getSnoStationMemStateDir, D as settingsToPluginConfig, E as defaultSettings, En as DEFAULT_IMPORTANCE, F as extractionConfigSchema, Ft as FIXED_MEMORY_SNO_EXTRACT_CHAT, Gn as INTEGRITY_CHECK_INTERVAL_MS, Ht as FIXED_PROTOCOL_VALUE_66, I as memoryReflectionConfigSchema, It as FIXED_MEMORY_SNO_EXTRACT_PROFILE, L as selfImprovementConfigSchema, M as isObserveAgentId, N as observeAgentId, Nt as FIXED_MEMORY_ROW_PATH_PATTERN, O as MODEL_CALLS, On as DEFAULT_RECALL_TOKEN_BUDGET, P as observeConfigSchema, Pt as FIXED_MEMORY_SNO_AI_EXTRACT, Qn as MAX_CANDIDATE_POOL_SIZE, Qt as FIXED_PROTOCOL_VALUE_79, R as sessionMemoryConfigSchema, T as readSettings, Ut as FIXED_PROTOCOL_VALUE_67, Vt as FIXED_PROTOCOL_VALUE_65, Wt as FIXED_PROTOCOL_VALUE_68, Xn as MAINTENANCE_TICK_MS, Xt as FIXED_PROTOCOL_VALUE_77, Yt as FIXED_PROTOCOL_VALUE_76, Zn as MAX_AGGREGATION_RESULT_TOKENS, Zt as FIXED_PROTOCOL_VALUE_78, _r as USAGE_OUTBOX_INTERVAL_MS, an as embeddingConfigSchema, b as getPrincipal, cn as isSupportedLocale, dn as ATOMIC_CAPTURE_OUTPUT_TOKEN_BUDGET, er as MAX_LIST_LIMIT, fn as ATOMIC_CAPTURE_TIMEOUT_MS, gn as BACKUP_MIN_FREE_DISK_RATIO, gr as USAGE_EVENT_RETENTION_INTERVAL_MS, h as readMaintenanceOverrides, hn as BACKUP_INTERVAL_MS, in as PERSISTED_PROVIDER_SYSTEM, j as retrievalConfigSchema, k as modelCallDestination, kn as DEFAULT_REFLECTION_ERROR_SCAN_MAX_CHARS, mn as ATOMIC_EXTRACTION_MAX_INPUT_TOKENS, mr as SNO_OBSERVE_FLUSH_TIMEOUT_MS, n as MEMORY_USAGE_FLUSH_INTERVAL_MS, qt as FIXED_PROTOCOL_VALUE_74, rr as MIN_RECALL_TOKEN_BUDGET, sr as PLANNER_STATISTICS_INTERVAL_MS, ur as REM_TRIGGER_CHECK_INTERVAL_MS, w as getStateDir, x as getSettingsPath, xr as recallLifecycleSchema, zn as FORGET_QUERY_MIN_SCORE, zt as FIXED_PROTOCOL_VALUE_63 } from "./config-CyH1VuJc.js";
3
- import { i as DEGRADED_REASONS, r as ContractError, t as evaluateRemAutomaticTriggers } from "./rem-trigger-CYMupvFh.js";
3
+ import { i as DEGRADED_REASONS, r as ContractError, t as evaluateRemAutomaticTriggers } from "./rem-trigger-6dmOjIU_.js";
4
4
  import { configureLogger, createLogger, currentLogContext, effectiveLogLevel, loggerFileStatus, privateLogReference, withLogContext } from "@snoai/utils/logger";
5
5
  import path, { basename, dirname, isAbsolute, join, posix, relative, resolve } from "node:path";
6
6
  import { existsSync, mkdirSync, readFileSync, readdirSync, realpathSync, renameSync, rmSync, statSync, statfsSync } from "node:fs";
@@ -195,7 +195,7 @@ function addNumber(target, key, value) {
195
195
  }
196
196
  //#endregion
197
197
  //#region package.json
198
- var version = "1.1.0";
198
+ var version = "1.2.1";
199
199
  //#endregion
200
200
  //#region config/atomic-extraction-response.schema.json
201
201
  var atomic_extraction_response_schema_default = {
@@ -1056,7 +1056,7 @@ function fallbackAtomicCapturedFact(fact) {
1056
1056
  //#endregion
1057
1057
  //#region src/engine/observability/log-site-catalog.generated.ts
1058
1058
  const logSiteCatalog = {
1059
- "build_id": "7dd4401db498bffcd68d9bd555bd59d26b6ddd627eb10524e20dc14620dd5548",
1059
+ "build_id": "17c40497dbd06f5f417622c54c1db540856d7d5f024e7fa3719bdfd77f680c3c",
1060
1060
  "sites": {
1061
1061
  "memory.recall.budget.checked": {
1062
1062
  "file": "packages/memory/src/engine/bindings/memory-recall-tool.ts",
@@ -2484,7 +2484,7 @@ const logSiteCatalog = {
2484
2484
  "function": "forwardObserveLedger",
2485
2485
  "line": 58,
2486
2486
  "column": 7,
2487
- "file_hash": "d55aceca369305bdba14768ebdeb98c0654b3d67817e01884d82d754f11294a8"
2487
+ "file_hash": "7fd4a98768b857e018a442e875e35014cbe82951e3a23ef60a5da32bc8b22b1f"
2488
2488
  },
2489
2489
  "shared.llm-client.resolveRequestTransport.8f631601af": {
2490
2490
  "file": "packages/memory/src/model/llm-client.ts",
@@ -2638,28 +2638,28 @@ const logSiteCatalog = {
2638
2638
  "function": "engineLog",
2639
2639
  "line": 61,
2640
2640
  "column": 2,
2641
- "file_hash": "0d430d0388646ffdb1b74e3ca447b78ffb63c80adbf431c8f585ff68aa6a94c8"
2641
+ "file_hash": "b5753215445046395099acc9500ccf6e19989fc339646d31ec52cce75935c947"
2642
2642
  },
2643
2643
  "memory.sidecar.model.prepare.failed": {
2644
2644
  "file": "packages/memory/src/sidecar/memory-runtime.ts",
2645
2645
  "function": "prepareModel",
2646
2646
  "line": 118,
2647
2647
  "column": 4,
2648
- "file_hash": "0d430d0388646ffdb1b74e3ca447b78ffb63c80adbf431c8f585ff68aa6a94c8"
2648
+ "file_hash": "b5753215445046395099acc9500ccf6e19989fc339646d31ec52cce75935c947"
2649
2649
  },
2650
2650
  "memory.sidecar.pending_capture.failed": {
2651
2651
  "file": "packages/memory/src/sidecar/memory-runtime.ts",
2652
2652
  "function": "replayPendingCaptures",
2653
2653
  "line": 135,
2654
2654
  "column": 5,
2655
- "file_hash": "0d430d0388646ffdb1b74e3ca447b78ffb63c80adbf431c8f585ff68aa6a94c8"
2655
+ "file_hash": "b5753215445046395099acc9500ccf6e19989fc339646d31ec52cce75935c947"
2656
2656
  },
2657
2657
  "memory.sidecar.usage.failed": {
2658
2658
  "file": "packages/memory/src/sidecar/memory-runtime.ts",
2659
2659
  "function": "<anonymous callback>",
2660
2660
  "line": 420,
2661
2661
  "column": 5,
2662
- "file_hash": "0d430d0388646ffdb1b74e3ca447b78ffb63c80adbf431c8f585ff68aa6a94c8"
2662
+ "file_hash": "b5753215445046395099acc9500ccf6e19989fc339646d31ec52cce75935c947"
2663
2663
  },
2664
2664
  "rem-batch-executor.onStageError.d5f24d50d3": {
2665
2665
  "file": "packages/memory/src/sidecar/rem-batch-executor.ts",
@@ -19166,7 +19166,7 @@ var MemoryRuntimePool = class MemoryRuntimePool {
19166
19166
  const previous = this.skins.get(registration.skinId);
19167
19167
  await this.snapshot(entry, "startup", scope.host?.observeSessionUuid);
19168
19168
  entry.observability.trackBestEffort("observe ledger", async () => {
19169
- await forwardObserveLedger({
19169
+ await forwardObserveLedgerUntilIdle({
19170
19170
  profileDir: getSnoProfileDir(),
19171
19171
  observe: entry.observability
19172
19172
  });
@@ -19344,7 +19344,7 @@ var MemoryRuntimePool = class MemoryRuntimePool {
19344
19344
  await this.snapshot(entry, "session_end", uuid);
19345
19345
  await this.forwardTelemetry(entry, uuid);
19346
19346
  entry.observability.trackBestEffort("observe ledger", async () => {
19347
- await forwardObserveLedger({
19347
+ await forwardObserveLedgerUntilIdle({
19348
19348
  profileDir: getSnoProfileDir(),
19349
19349
  observe: entry.observability
19350
19350
  });
@@ -132,6 +132,10 @@ async function forwardObserveLedger(options) {
132
132
  offset
133
133
  };
134
134
  }
135
+ /** Forwards batch after batch until the ledger is read to its end, so a session that wrote many rows (one session.activity row per turn) leaves no backlog for the next one. A batch that forwards nothing ends the loop. */
136
+ async function forwardObserveLedgerUntilIdle(options) {
137
+ for (;;) if ((await forwardObserveLedger(options)).status !== "forwarded") return;
138
+ }
135
139
  //#endregion
136
140
  //#region src/engine/operation-cancellation.ts
137
141
  const operations = new AsyncLocalStorage();
@@ -5823,6 +5827,14 @@ function stableHash(text) {
5823
5827
  return createHash("sha256").update(text).digest("hex");
5824
5828
  }
5825
5829
  z.object({ source: z.object({ commit: z.string().min(1) }) });
5830
+ z.object({
5831
+ offset: z.number().int().nonnegative(),
5832
+ lastTs: z.number().int().nonnegative(),
5833
+ runStart: z.number().int().nonnegative(),
5834
+ agentDriven: z.boolean(),
5835
+ counted: z.boolean(),
5836
+ path: z.string().min(1).optional()
5837
+ });
5826
5838
  //#endregion
5827
5839
  //#region config/coding-skin.ts
5828
5840
  const CODING_SKIN_CHILD_DEADLINE_MS = 11e4;
@@ -31637,4 +31649,4 @@ function compareTuple(left, right) {
31637
31649
  return JSON.stringify(left).localeCompare(JSON.stringify(right));
31638
31650
  }
31639
31651
  //#endregion
31640
- export { appendAuditEntryStrict as $, readModelReplyJson as $t, canonicalizeProfileSectionName as A, CODING_SKIN_SESSION_QUERY as At, loadSqliteVecExtension as B, stringifyInsightMetadata as Bt, normalizeEntityName as C, ModelCallRefusedError as Ct, readAtomicArrivalRetirementCandidateSet as D, classifyLlmFailure as Dt, journalAtomicArrivalRetirementRefusal as E, withProviderResponses as Et, StaleSupersedeTargetError as F, stripRoleLabelPrefix as Ft, orderAdapterAPair as G, MEMORY_CATEGORIES as Gt, parseRemOperationType as H, parseIsoDateTimeMs as Ht, TaskLifecycleStaleResolutionError as I, truncateGraphemes as It, renderAdapterAChatPrompt as J, resolveLlmRoute as Jt, parseAdapterAChatVerdict as K, normalizeCategory as Kt, validateMemoryTelemetryMetadata as L, redactSecrets as Lt, getSnoStationMemDataDir as M, clampInt as Mt, normalizeMemoryRelationPredicate as N, stableHash as Nt, recordTokenCounter as O, isTerminalLlmFailure$1 as Ot, MemoryStore as P, stripHtmlTags as Pt, appendAuditEntry as Q, modelReplyJsonCandidates as Qt, randomUUID$1 as R, buildInsightMetadata as Rt, listAtomicMemoryEntityCandidates as S, LlmClientTerminalError as St, closeAtomicArrivalRetirementTargets as T, isTerminalLlmFailure as Tt, adapterAViewFromRecord as U, deriveFactKey as Ut, REM_BUILT_OPERATION_TYPES as V, normalizeIsoDateTimeString as Vt, isAdapterAVerdictReply as W, AGGREGATION_OPERATIONS as Wt, compareMemorySourceOrder as X, ATOMIC_EXTRACTION_SKILL_HASH as Xt, renderAdapterAPrompt as Y, ATOMIC_EXTRACTION_SKILL as Yt, readMemorySourceOrderOrOldest as Z, atomicExtractionSkillReference as Zt, taskLifecycleCandidateSetVersion as _, SnoStationMemError as _t, runRemBatchJob as a, sessionZoneCarriedBy as an, readJsonlLines as at, resolveTaskLifecycleEffectiveTime as b, createScopePolicy as bt, selectRemUpdateRelationCandidates as c, isMemoryTelemetryEventType as cn, resolveMemoryDate as ct, AccessTracker as d, openSqliteDatabaseReadonly as dn, buildIndexedText as dt, state_vocabulary_default as en, currentMutationAttemptId as et, Embedder as f, checkMemoryOperation as fn, stripEnvelopeMetadata as ft, resolveTaskLifecycle as g, forwardObserveLedger as gn, RetrievalError as gt, findUniqueActiveTaskByDescription as h, withMemoryOperation as hn, RESOURCES_BY_LOCALE as ht, readCandidates as i, isCalendarLabel as in, runWithMutationAttempt as it, normalizeTopicToSectionName as j, clamp01 as jt, canExtractorWrite as k, CODING_SKIN_LEDGER_MAX_CHARS as kt, MemoryRetriever as l, initSqliteRuntime as ln, unresolvedMemoryDate as lt, buildTaskLifecycleCandidateSet as m, memoryOperationSignal as mn, ALL_RESOURCES as mt, createRemModelStageResponsePort as n, calculateCalendarTime as nn, runWithMemoryAudit as nt, runRemProductionOrderedWave as o, attribute_dictionary_default as on, parseSessionTimestamp as ot, acceptsTaskLifecycleJudgment as p, memoryFileWrite as pn, normalizeAmbientLearningText as pt, prospectiveProfileView as q, pickLlmRoutingConfig as qt, enumerateRemCandidateScopes as r, calendarInstructionSchema as rn, runWithMemoryAuditSync as rt, runWithCanonicalStoreWriteMutex as s, MEMORY_TELEMETRY_DELETE_REASONS as sn, serializeIntervalMetadata as st, buildRemReplaceCandidateQueue as t, relations as tn, getAuditPath as tt, DEFAULT_RETRIEVAL_CONFIG as u, openSqliteDatabase as un, boundSectionContent as ut, admitTaskLifecycleAssertion as v, StorageError as vt, recordAtomicEntityIdentityJournal as w, createLlmClient as wt, resolveHookAgentId as x, parseAgentIdFromSessionKey$1 as xt, buildTaskLifecycleCommandClaim as y, MemoryScopePolicy as yt, readChunkVecTableState as z, parseInsightMetadata as zt };
31652
+ export { appendAuditEntryStrict as $, readModelReplyJson as $t, canonicalizeProfileSectionName as A, CODING_SKIN_SESSION_QUERY as At, loadSqliteVecExtension as B, stringifyInsightMetadata as Bt, normalizeEntityName as C, ModelCallRefusedError as Ct, readAtomicArrivalRetirementCandidateSet as D, classifyLlmFailure as Dt, journalAtomicArrivalRetirementRefusal as E, withProviderResponses as Et, StaleSupersedeTargetError as F, stripRoleLabelPrefix as Ft, orderAdapterAPair as G, MEMORY_CATEGORIES as Gt, parseRemOperationType as H, parseIsoDateTimeMs as Ht, TaskLifecycleStaleResolutionError as I, truncateGraphemes as It, renderAdapterAChatPrompt as J, resolveLlmRoute as Jt, parseAdapterAChatVerdict as K, normalizeCategory as Kt, validateMemoryTelemetryMetadata as L, redactSecrets as Lt, getSnoStationMemDataDir as M, clampInt as Mt, normalizeMemoryRelationPredicate as N, stableHash as Nt, recordTokenCounter as O, isTerminalLlmFailure$1 as Ot, MemoryStore as P, stripHtmlTags as Pt, appendAuditEntry as Q, modelReplyJsonCandidates as Qt, randomUUID$1 as R, buildInsightMetadata as Rt, listAtomicMemoryEntityCandidates as S, LlmClientTerminalError as St, closeAtomicArrivalRetirementTargets as T, isTerminalLlmFailure as Tt, adapterAViewFromRecord as U, deriveFactKey as Ut, REM_BUILT_OPERATION_TYPES as V, normalizeIsoDateTimeString as Vt, isAdapterAVerdictReply as W, AGGREGATION_OPERATIONS as Wt, compareMemorySourceOrder as X, ATOMIC_EXTRACTION_SKILL_HASH as Xt, renderAdapterAPrompt as Y, ATOMIC_EXTRACTION_SKILL as Yt, readMemorySourceOrderOrOldest as Z, atomicExtractionSkillReference as Zt, taskLifecycleCandidateSetVersion as _, SnoStationMemError as _t, runRemBatchJob as a, sessionZoneCarriedBy as an, readJsonlLines as at, resolveTaskLifecycleEffectiveTime as b, createScopePolicy as bt, selectRemUpdateRelationCandidates as c, isMemoryTelemetryEventType as cn, resolveMemoryDate as ct, AccessTracker as d, openSqliteDatabaseReadonly as dn, buildIndexedText as dt, state_vocabulary_default as en, currentMutationAttemptId as et, Embedder as f, checkMemoryOperation as fn, stripEnvelopeMetadata as ft, resolveTaskLifecycle as g, forwardObserveLedgerUntilIdle as gn, RetrievalError as gt, findUniqueActiveTaskByDescription as h, withMemoryOperation as hn, RESOURCES_BY_LOCALE as ht, readCandidates as i, isCalendarLabel as in, runWithMutationAttempt as it, normalizeTopicToSectionName as j, clamp01 as jt, canExtractorWrite as k, CODING_SKIN_LEDGER_MAX_CHARS as kt, MemoryRetriever as l, initSqliteRuntime as ln, unresolvedMemoryDate as lt, buildTaskLifecycleCandidateSet as m, memoryOperationSignal as mn, ALL_RESOURCES as mt, createRemModelStageResponsePort as n, calculateCalendarTime as nn, runWithMemoryAudit as nt, runRemProductionOrderedWave as o, attribute_dictionary_default as on, parseSessionTimestamp as ot, acceptsTaskLifecycleJudgment as p, memoryFileWrite as pn, normalizeAmbientLearningText as pt, prospectiveProfileView as q, pickLlmRoutingConfig as qt, enumerateRemCandidateScopes as r, calendarInstructionSchema as rn, runWithMemoryAuditSync as rt, runWithCanonicalStoreWriteMutex as s, MEMORY_TELEMETRY_DELETE_REASONS as sn, serializeIntervalMetadata as st, buildRemReplaceCandidateQueue as t, relations as tn, getAuditPath as tt, DEFAULT_RETRIEVAL_CONFIG as u, openSqliteDatabase as un, boundSectionContent as ut, admitTaskLifecycleAssertion as v, StorageError as vt, recordAtomicEntityIdentityJournal as w, createLlmClient as wt, resolveHookAgentId as x, parseAgentIdFromSessionKey$1 as xt, buildTaskLifecycleCommandClaim as y, MemoryScopePolicy as yt, readChunkVecTableState as z, parseInsightMetadata as zt };
@@ -1,2 +1,2 @@
1
- import { o as runRemProductionOrderedWave } from "./rem-batch-executor-B4OoDBVK.js";
1
+ import { o as runRemProductionOrderedWave } from "./rem-batch-executor-Bdsf26tD.js";
2
2
  export { runRemProductionOrderedWave };
@@ -1,4 +1,4 @@
1
- import { $ as appendAuditEntryStrict, r as enumerateRemCandidateScopes, tt as getAuditPath } from "./rem-batch-executor-B4OoDBVK.js";
1
+ import { $ as appendAuditEntryStrict, r as enumerateRemCandidateScopes, tt as getAuditPath } from "./rem-batch-executor-Bdsf26tD.js";
2
2
  import { s as REM_SIDECAR_TOKEN_HEADER } from "./routes-DLHT__Ay.js";
3
3
  import { d as getRemDiscoveryPath, o as REM_RUN_PATH, r as REM_CORRELATION_ID_HEADER, s as REM_SIDECAR_HOST } from "./config-CyH1VuJc.js";
4
4
  import { createLogger } from "@snoai/utils/logger";
@@ -1,7 +1,7 @@
1
- import { $ as appendAuditEntryStrict, Ct as ModelCallRefusedError, H as parseRemOperationType, V as REM_BUILT_OPERATION_TYPES, at as readJsonlLines, tt as getAuditPath } from "./rem-batch-executor-B4OoDBVK.js";
1
+ import { $ as appendAuditEntryStrict, Ct as ModelCallRefusedError, H as parseRemOperationType, V as REM_BUILT_OPERATION_TYPES, at as readJsonlLines, tt as getAuditPath } from "./rem-batch-executor-Bdsf26tD.js";
2
2
  import { a as MEMORY_ROUTES, c as memoryMethod, n as MEMORY_DEFAULT_SKIN_ID, o as MEMORY_SKIN_HEADER, r as MEMORY_ERROR_STATUS } from "./routes-DLHT__Ay.js";
3
3
  import { C as getSnoStationMemStateDir, S as getSidecarSocketPath, _ as readRemTestHoldMs, c as REM_SIDECAR_ORIGIN, d as getRemDiscoveryPath, f as getRemJobJournalPath, g as readRemOperationalConfig, i as REM_JOBS_PATH_PREFIX, l as REM_SOURCE, nr as MEMORY_SHUTDOWN_TIMEOUT_MS, r as REM_CORRELATION_ID_HEADER, s as REM_SIDECAR_HOST, u as getRemChassisJournalPath, v as SettingsUnavailableError, y as getDiscoveryPath } from "./config-CyH1VuJc.js";
4
- import { n as remNeedsHost, r as ContractError } from "./rem-trigger-CYMupvFh.js";
4
+ import { n as remNeedsHost, r as ContractError } from "./rem-trigger-6dmOjIU_.js";
5
5
  import { setImmediate } from "node:timers/promises";
6
6
  import { createLogger, currentLogContext, effectiveLogLevel, emitDiagnostic } from "@snoai/utils/logger";
7
7
  import path from "node:path";
@@ -650,7 +650,7 @@ async function startOwnedRemSidecar() {
650
650
  async open() {
651
651
  if (currentMemory) return currentMemory;
652
652
  if (settingsError) throw settingsError;
653
- openingMemory ??= import("./memory-runtime-DUzKtwlW.js").then((module) => module.MemoryRuntimePool.open()).then((pool) => {
653
+ openingMemory ??= import("./memory-runtime-BUmrJcmt.js").then((module) => module.MemoryRuntimePool.open()).then((pool) => {
654
654
  currentMemory = pool;
655
655
  if (stopping) pool.stopTimers();
656
656
  return pool;
@@ -1044,7 +1044,7 @@ async function runChassisJob(store, journal, waveId, holdMs, runtime) {
1044
1044
  cleanRefusalReasons.push(reason);
1045
1045
  await appendChassisRefusal(journal, queued, operation, "refused", reason);
1046
1046
  }
1047
- const { runRemProductionOrderedWave } = await import("./rem-batch-executor-5IR3e-gG.js");
1047
+ const { runRemProductionOrderedWave } = await import("./rem-batch-executor-DdgZBL5K.js");
1048
1048
  const result = enabledOperations.length === 0 ? {
1049
1049
  decision: "allow",
1050
1050
  reasonCode: null,
@@ -7,7 +7,7 @@ import { addLogFileTarget, closeLogger, createLogger } from "@snoai/utils/logger
7
7
  * @purpose Boots the standalone local REM sidecar process.
8
8
  * @boundary Process environment, sidecar lifecycle, and local request-log destination.
9
9
  */
10
- const { startRemSidecar, DuplicateSidecarError } = await import("../server-WGLpvv3K.js");
10
+ const { startRemSidecar, DuplicateSidecarError } = await import("../server-CyB-SYM6.js");
11
11
  let sidecar;
12
12
  while (!sidecar) try {
13
13
  sidecar = await startRemSidecar();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@snoai/memory",
3
- "version": "1.1.0",
3
+ "version": "1.2.1",
4
4
  "license": "Apache-2.0",
5
5
  "publishConfig": { "access": "public" },
6
6
  "repository": {
@@ -9,7 +9,7 @@
9
9
  "directory": "packages/memory"
10
10
  },
11
11
  "type": "module",
12
- "description": "Shared memory engine, store, model routing and sidecar",
12
+ "description": "One encrypted memory on your machine, shared by every agent you run. The engine behind Sno Station.",
13
13
  "main": "./dist/index.js",
14
14
  "types": "./dist/index.d.ts",
15
15
  "exports": {
@@ -92,8 +92,8 @@
92
92
  "@snoai/embedder": "^1.1.0",
93
93
  "@snoai/llmix": "2.2.0",
94
94
  "@snoai/mda-config": "^1.1.2",
95
- "@snoai/observability": "^1.1.0",
96
- "@snoai/sqlite-crypto": "^1.1.0",
95
+ "@snoai/observability": "^1.2.0",
96
+ "@snoai/sqlite-crypto": "^1.1.2",
97
97
  "@snoai/utils": "^1.1.0",
98
98
  "argon2": "^0.45.1",
99
99
  "async-mutex": "^0.5.0",