@snoai/memory 1.7.1 → 2.0.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 (59) hide show
  1. package/README.md +1 -1
  2. package/dist/agent-state-osRgfRdR.js +928 -0
  3. package/dist/agent-state-view.d.ts +1 -0
  4. package/dist/agent-state-view.js +185 -0
  5. package/dist/{atomic-memory-extraction-CWMMWF2C.js → atomic-memory-extraction-OusdO3Ig.js} +4 -4
  6. package/dist/client.js +1 -1
  7. package/dist/coding-skin-D_2RbNDw.js +342 -0
  8. package/dist/coding-skin.d.ts +87 -1
  9. package/dist/coding-skin.js +3 -2
  10. package/dist/{config-D6GJyMKz.js → config-VPVf190N.js} +1 -1
  11. package/dist/diagnostic-encoder.js +1 -1
  12. package/dist/index.js +5 -5
  13. package/dist/internal/config/settings.js +1 -1
  14. package/dist/internal/engine/bindings/memory-forget-tool.js +1 -1
  15. package/dist/internal/engine/bindings/memory-list-tool.js +1 -1
  16. package/dist/internal/engine/bindings/memory-recall-tool.js +1 -1
  17. package/dist/internal/engine/bindings/memory-reflection-resolve-tool.js +1 -1
  18. package/dist/internal/engine/bindings/memory-stats-tool.js +1 -1
  19. package/dist/internal/engine/bindings/memory-store-tool.js +3 -3
  20. package/dist/internal/engine/bindings/memory-tool-access.js +1 -1
  21. package/dist/internal/engine/bindings/memory-tool-results.js +1 -1
  22. package/dist/internal/engine/bindings/memory-tool-schemas.js +1 -1
  23. package/dist/internal/engine/bindings/memory-update-tool.js +2 -2
  24. package/dist/internal/engine/bindings/sno-station-mem-ambient-learning-hook.js +2 -2
  25. package/dist/internal/engine/bindings/sno-station-mem-auto-recall-hook.js +1 -1
  26. package/dist/internal/engine/bindings/sno-station-mem-insight-distill-factory.js +2 -2
  27. package/dist/internal/engine/bindings/sno-station-mem-message-transcript.js +2 -2
  28. package/dist/internal/engine/extraction/atomic-memory-extraction.js +1 -1
  29. package/dist/internal/engine/extraction/memory-temporality-classifier.js +1 -1
  30. package/dist/internal/engine/observability/observable-memory-store.js +1 -1
  31. package/dist/internal/engine/observability/runtime-diagnostics.js +1 -1
  32. package/dist/internal/engine/reflection/reflection-command-hooks.js +1 -1
  33. package/dist/internal/engine/reflection/reflection-embedded-generator.js +1 -1
  34. package/dist/internal/engine/reflection/reflection-injection-hooks.js +1 -1
  35. package/dist/internal/engine/reflection/reflection-lifecycle-hooks.js +1 -1
  36. package/dist/internal/engine/reflection/strategy-hook-runner.js +2 -2
  37. package/dist/internal/model/llm-client.js +1 -1
  38. package/dist/internal/store/maintenance.js +3 -3
  39. package/dist/internal/store/store.js +1 -1
  40. package/dist/{llm-client-BtbX4af4.js → llm-client-DhBvu-U_.js} +1 -1
  41. package/dist/{log-site-catalog.generated-Dtiih6m2.js → log-site-catalog.generated-3zYckrtz.js} +2 -2
  42. package/dist/log-site-catalog.json +1 -1
  43. package/dist/memdump.js +1 -1
  44. package/dist/{memory-runtime-B9fG-sNo.js → memory-runtime-CKIBXN_r.js} +4 -4
  45. package/dist/{memory-temporality-classifier-Bm0EiCN8.js → memory-temporality-classifier-DTRhzXmG.js} +1 -1
  46. package/dist/{memory-tool-dependencies-BxVJ-bHs.js → memory-tool-dependencies-BQHE4kMD.js} +1 -1
  47. package/dist/{profile-section-writer-DSX6R3GF.js → profile-section-writer-QiB0MMtt.js} +2 -2
  48. package/dist/{reflection-command-hooks-Dyckr_Ma.js → reflection-command-hooks-DBpqpF7A.js} +3 -3
  49. package/dist/{reflection-embedded-generator-i8KHqMpr.js → reflection-embedded-generator-DNFMQNsv.js} +1 -1
  50. package/dist/{rem-batch-executor-BSWXFOLH.js → rem-batch-executor-BHItPFZ8.js} +1 -1
  51. package/dist/{rem-trigger-BaJa5FS0.js → rem-trigger-BN6GCcnE.js} +29 -7
  52. package/dist/{server-DPd3Xef2.js → server-BvEOkYis.js} +4 -4
  53. package/dist/sidecar/main.js +2 -2
  54. package/dist/{sno-station-mem-runtime-dependencies-DITNvfkR.js → sno-station-mem-runtime-dependencies-Fq6yRstU.js} +5 -5
  55. package/dist/{store-YX1_c1NH.js → store-cu7Qq2OW.js} +1 -1
  56. package/dist/{strategy-hook-runner-CwqZ1orf.js → strategy-hook-runner-CvdsVcwR.js} +1 -1
  57. package/package.json +1 -1
  58. package/settings.default.json +1 -1
  59. package/dist/coding-skin-BnFryVac.js +0 -265
@@ -1,5 +1,5 @@
1
- import { $ as renderAdapterAChatPrompt, $t as MEMORY_CATEGORIES, A as journalAtomicArrivalRetirementRefusal, B as StaleSupersedeTargetError, Bt as debugContentPreview, C as buildTaskLifecycleCommandClaim, Cn as withMemoryOperation, Ct as withProviderResponses, D as normalizeEntityName, E as listAtomicMemoryEntityCandidates, Et as appendAuditEntry, F as normalizeTopicToSectionName, Ft as CODING_SKIN_LEDGER_MAX_CHARS, G as loadSqliteVecExtension, Gt as redactSecrets, H as validateMemoryTelemetryMetadata, Ht as stripHtmlTags, I as getSnoStationMemDataDir, It as CODING_SKIN_SESSION_QUERY, J as adapterAViewFromRecord, Jt as stringifyInsightMetadata, Kt as buildInsightMetadata, L as AtomicExtractionCompletedElsewhere, Lt as HOST_MODEL_DEADLINE_HEADER, M as recordTokenCounter, Mt as runWithMemoryAuditSync, N as canExtractorWrite, Nt as runWithMutationAttempt, O as recordAtomicEntityIdentityJournal, P as canonicalizeProfileSectionName, Q as prospectiveProfileView, Qt as AGGREGATION_OPERATIONS, R as normalizeMemoryRelationPredicate, Rt as clamp01, S as admitTaskLifecycleAssertion, Sn as memoryOperationSignal, St as isTerminalLlmFailure, T as resolveHookAgentId, Tt as isTerminalLlmFailure$1, U as randomUUID$1, Ut as stripRoleLabelPrefix, V as TaskLifecycleStaleResolutionError, Vt as stableHash, W as readChunkVecTableState, Wt as truncateGraphemes, X as orderAdapterAPair, Xt as parseIsoDateTimeMs, Y as isAdapterAVerdictReply, Yt as normalizeIsoDateTimeString, Z as parseAdapterAChatVerdict, Zt as deriveFactKey, _ as acceptsTaskLifecycleJudgment, _n as initSqliteRuntime, _t as createScopePolicy, an as atomicExtractionSkillReference, at as resolveMemoryDate, b as resolveTaskLifecycle, bn as checkMemoryOperation, cn as state_vocabulary_default, ct as buildIndexedText, dn as calendarInstructionSchema, dt as ALL_RESOURCES, en as normalizeCategory, et as renderAdapterAPrompt, fn as isCalendarLabel, ft as RESOURCES_BY_LOCALE, g as Embedder, gn as isMemoryTelemetryEventType, gt as MemoryScopePolicy, h as AccessTracker, hn as MEMORY_TELEMETRY_DELETE_REASONS, ht as StorageError, in as ATOMIC_EXTRACTION_SKILL_HASH, it as serializeIntervalMetadata, j as readAtomicArrivalRetirementCandidateSet, jt as runWithMemoryAudit, k as closeAtomicArrivalRetirementTargets, kt as currentMutationAttemptId, ln as relations, lt as stripEnvelopeMetadata, m as DEFAULT_RETRIEVAL_CONFIG, mn as attribute_dictionary_default, mt as SnoStationMemError, nn as resolveLlmRoute, nt as readMemorySourceOrderOrOldest, on as modelReplyJsonCandidates, ot as unresolvedMemoryDate, p as MemoryRetriever, pn as sessionZoneCarriedBy, pt as RetrievalError, qt as parseInsightMetadata, rn as ATOMIC_EXTRACTION_SKILL, rt as parseSessionTimestamp, sn as readModelReplyJson, st as boundSectionContent, t as evaluateRemAutomaticTriggers, tn as pickLlmRoutingConfig, tt as compareMemorySourceOrder, un as calculateCalendarTime, ut as normalizeAmbientLearningText, v as buildTaskLifecycleCandidateSet, vn as openSqliteDatabase, vt as parseAgentIdFromSessionKey, w as resolveTaskLifecycleEffectiveTime, wn as forwardObserveLedgerUntilIdle, wt as classifyLlmFailure, x as taskLifecycleCandidateSetVersion, xn as memoryFileWrite, xt as createLlmClient, y as findUniqueActiveTaskByDescription, yn as openSqliteDatabaseReadonly, yt as LlmClientTerminalError, z as MemoryStore, zt as clampInt } from "./rem-trigger-BaJa5FS0.js";
2
- import { $t as FIXED_PROTOCOL_VALUE_79, A as modelCallDestination, An as DEFAULT_REFLECTION_ERROR_SCAN_MAX_CHARS, Bn as FTS_MERGE_INTERVAL_MS, Bt as FIXED_PROTOCOL_VALUE_63, C as getSnoStationMemStateDir, D as settingsToPluginConfig, Dn as DEFAULT_IMPORTANCE, E as defaultSettings, F as observeConfigSchema, Ft as FIXED_MEMORY_SNO_AI_EXTRACT, Gn as INTEGRITY_CHECK_INTERVAL_MS, Gt as FIXED_PROTOCOL_VALUE_68, Ht as FIXED_PROTOCOL_VALUE_65, I as extractionConfigSchema, It as FIXED_MEMORY_SNO_EXTRACT_CHAT, Jn as MAX_AGGREGATION_RESULT_TOKENS, Jt as FIXED_PROTOCOL_VALUE_74, L as memoryReflectionConfigSchema, Lt as FIXED_MEMORY_SNO_EXTRACT_PROFILE, M as retrievalConfigSchema, N as isObserveAgentId, O as MODEL_CALLS, P as observeAgentId, Pt as FIXED_MEMORY_ROW_PATH_PATTERN, Qt as FIXED_PROTOCOL_VALUE_78, R as selfImprovementConfigSchema, T as readSettings, Ut as FIXED_PROTOCOL_VALUE_66, Vt as FIXED_PROTOCOL_VALUE_64, Wt as FIXED_PROTOCOL_VALUE_67, Xt as FIXED_PROTOCOL_VALUE_76, Yn as MAX_CANDIDATE_POOL_SIZE, Zn as MAX_LIST_LIMIT, Zt as FIXED_PROTOCOL_VALUE_77, _n as BACKUP_MIN_FREE_DISK_RATIO, an as PERSISTED_PROVIDER_SYSTEM, b as getPrincipal, dr as USAGE_EVENT_RETENTION_INTERVAL_MS, er as MIN_RECALL_TOKEN_BUDGET, fn as ATOMIC_CAPTURE_OUTPUT_TOKEN_BUDGET, fr as USAGE_OUTBOX_INTERVAL_MS, gn as BACKUP_INTERVAL_MS, gr as recallLifecycleSchema, h as readMaintenanceOverrides, hn as ATOMIC_EXTRACTION_MAX_INPUT_TOKENS, ir as PLANNER_STATISTICS_INTERVAL_MS, j as SESSION_STRATEGIES, jn as DEFAULT_REFLECTION_SESSION_TTL_MS, kn as DEFAULT_RECALL_TOKEN_BUDGET, ln as isSupportedLocale, lr as SNO_OBSERVE_FLUSH_TIMEOUT_MS, n as MEMORY_USAGE_FLUSH_INTERVAL_MS, on as embeddingConfigSchema, pn as ATOMIC_CAPTURE_TIMEOUT_MS, qn as MAINTENANCE_TICK_MS, sr as REM_TRIGGER_CHECK_INTERVAL_MS, w as getStateDir, x as getSettingsPath, z as sessionMemoryConfigSchema, zn as FORGET_QUERY_MIN_SCORE } from "./config-D6GJyMKz.js";
1
+ import { $ as renderAdapterAChatPrompt, $t as MEMORY_CATEGORIES, A as journalAtomicArrivalRetirementRefusal, B as StaleSupersedeTargetError, Bt as debugContentPreview, C as buildTaskLifecycleCommandClaim, Cn as withMemoryOperation, Ct as withProviderResponses, D as normalizeEntityName, E as listAtomicMemoryEntityCandidates, Et as appendAuditEntry, F as normalizeTopicToSectionName, Ft as CODING_SKIN_LEDGER_MAX_CHARS, G as loadSqliteVecExtension, Gt as redactSecrets, H as validateMemoryTelemetryMetadata, Ht as stripHtmlTags, I as getSnoStationMemDataDir, It as CODING_SKIN_SESSION_QUERY, J as adapterAViewFromRecord, Jt as stringifyInsightMetadata, Kt as buildInsightMetadata, L as AtomicExtractionCompletedElsewhere, Lt as HOST_MODEL_DEADLINE_HEADER, M as recordTokenCounter, Mt as runWithMemoryAuditSync, N as canExtractorWrite, Nt as runWithMutationAttempt, O as recordAtomicEntityIdentityJournal, P as canonicalizeProfileSectionName, Q as prospectiveProfileView, Qt as AGGREGATION_OPERATIONS, R as normalizeMemoryRelationPredicate, Rt as clamp01, S as admitTaskLifecycleAssertion, Sn as memoryOperationSignal, St as isTerminalLlmFailure, T as resolveHookAgentId, Tt as isTerminalLlmFailure$1, U as randomUUID$1, Ut as stripRoleLabelPrefix, V as TaskLifecycleStaleResolutionError, Vt as stableHash, W as readChunkVecTableState, Wt as truncateGraphemes, X as orderAdapterAPair, Xt as parseIsoDateTimeMs, Y as isAdapterAVerdictReply, Yt as normalizeIsoDateTimeString, Z as parseAdapterAChatVerdict, Zt as deriveFactKey, _ as acceptsTaskLifecycleJudgment, _n as initSqliteRuntime, _t as createScopePolicy, an as atomicExtractionSkillReference, at as resolveMemoryDate, b as resolveTaskLifecycle, bn as checkMemoryOperation, cn as state_vocabulary_default, ct as buildIndexedText, dn as calendarInstructionSchema, dt as ALL_RESOURCES, en as normalizeCategory, et as renderAdapterAPrompt, fn as isCalendarLabel, ft as RESOURCES_BY_LOCALE, g as Embedder, gn as isMemoryTelemetryEventType, gt as MemoryScopePolicy, h as AccessTracker, hn as MEMORY_TELEMETRY_DELETE_REASONS, ht as StorageError, in as ATOMIC_EXTRACTION_SKILL_HASH, it as serializeIntervalMetadata, j as readAtomicArrivalRetirementCandidateSet, jt as runWithMemoryAudit, k as closeAtomicArrivalRetirementTargets, kt as currentMutationAttemptId, ln as relations, lt as stripEnvelopeMetadata, m as DEFAULT_RETRIEVAL_CONFIG, mn as attribute_dictionary_default, mt as SnoStationMemError, nn as resolveLlmRoute, nt as readMemorySourceOrderOrOldest, on as modelReplyJsonCandidates, ot as unresolvedMemoryDate, p as MemoryRetriever, pn as sessionZoneCarriedBy, pt as RetrievalError, qt as parseInsightMetadata, rn as ATOMIC_EXTRACTION_SKILL, rt as parseSessionTimestamp, sn as readModelReplyJson, st as boundSectionContent, t as evaluateRemAutomaticTriggers, tn as pickLlmRoutingConfig, tt as compareMemorySourceOrder, un as calculateCalendarTime, ut as normalizeAmbientLearningText, v as buildTaskLifecycleCandidateSet, vn as openSqliteDatabase, vt as parseAgentIdFromSessionKey, w as resolveTaskLifecycleEffectiveTime, wn as forwardObserveLedgerUntilIdle, wt as classifyLlmFailure, x as taskLifecycleCandidateSetVersion, xn as memoryFileWrite, xt as createLlmClient, y as findUniqueActiveTaskByDescription, yn as openSqliteDatabaseReadonly, yt as LlmClientTerminalError, z as MemoryStore, zt as clampInt } from "./rem-trigger-BN6GCcnE.js";
2
+ import { $t as FIXED_PROTOCOL_VALUE_79, A as modelCallDestination, An as DEFAULT_REFLECTION_ERROR_SCAN_MAX_CHARS, Bn as FTS_MERGE_INTERVAL_MS, Bt as FIXED_PROTOCOL_VALUE_63, C as getSnoStationMemStateDir, D as settingsToPluginConfig, Dn as DEFAULT_IMPORTANCE, E as defaultSettings, F as observeConfigSchema, Ft as FIXED_MEMORY_SNO_AI_EXTRACT, Gn as INTEGRITY_CHECK_INTERVAL_MS, Gt as FIXED_PROTOCOL_VALUE_68, Ht as FIXED_PROTOCOL_VALUE_65, I as extractionConfigSchema, It as FIXED_MEMORY_SNO_EXTRACT_CHAT, Jn as MAX_AGGREGATION_RESULT_TOKENS, Jt as FIXED_PROTOCOL_VALUE_74, L as memoryReflectionConfigSchema, Lt as FIXED_MEMORY_SNO_EXTRACT_PROFILE, M as retrievalConfigSchema, N as isObserveAgentId, O as MODEL_CALLS, P as observeAgentId, Pt as FIXED_MEMORY_ROW_PATH_PATTERN, Qt as FIXED_PROTOCOL_VALUE_78, R as selfImprovementConfigSchema, T as readSettings, Ut as FIXED_PROTOCOL_VALUE_66, Vt as FIXED_PROTOCOL_VALUE_64, Wt as FIXED_PROTOCOL_VALUE_67, Xt as FIXED_PROTOCOL_VALUE_76, Yn as MAX_CANDIDATE_POOL_SIZE, Zn as MAX_LIST_LIMIT, Zt as FIXED_PROTOCOL_VALUE_77, _n as BACKUP_MIN_FREE_DISK_RATIO, an as PERSISTED_PROVIDER_SYSTEM, b as getPrincipal, dr as USAGE_EVENT_RETENTION_INTERVAL_MS, er as MIN_RECALL_TOKEN_BUDGET, fn as ATOMIC_CAPTURE_OUTPUT_TOKEN_BUDGET, fr as USAGE_OUTBOX_INTERVAL_MS, gn as BACKUP_INTERVAL_MS, gr as recallLifecycleSchema, h as readMaintenanceOverrides, hn as ATOMIC_EXTRACTION_MAX_INPUT_TOKENS, ir as PLANNER_STATISTICS_INTERVAL_MS, j as SESSION_STRATEGIES, jn as DEFAULT_REFLECTION_SESSION_TTL_MS, kn as DEFAULT_RECALL_TOKEN_BUDGET, ln as isSupportedLocale, lr as SNO_OBSERVE_FLUSH_TIMEOUT_MS, n as MEMORY_USAGE_FLUSH_INTERVAL_MS, on as embeddingConfigSchema, pn as ATOMIC_CAPTURE_TIMEOUT_MS, qn as MAINTENANCE_TICK_MS, sr as REM_TRIGGER_CHECK_INTERVAL_MS, w as getStateDir, x as getSettingsPath, z as sessionMemoryConfigSchema, zn as FORGET_QUERY_MIN_SCORE } from "./config-VPVf190N.js";
3
3
  import { n as DEGRADED_REASONS, t as ContractError } from "./error-Dga5Ot1M.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";
@@ -194,7 +194,7 @@ function addNumber(target, key, value) {
194
194
  if (typeof value === "number" && Number.isFinite(value)) target[key] = value;
195
195
  }
196
196
  // package.json
197
- var version = "1.7.1";
197
+ var version = "2.0.0";
198
198
  // config/atomic-extraction-response.schema.json
199
199
  var atomic_extraction_response_schema_default = {
200
200
  $schema: "https://json-schema.org/draft/2020-12/schema",
@@ -1054,7 +1054,7 @@ function fallbackAtomicCapturedFact(fact) {
1054
1054
  }
1055
1055
  // src/engine/observability/log-site-catalog.generated.ts
1056
1056
  const logSiteCatalog = {
1057
- "build_id": "adc3f82ce64373cc97694ab820cb8be47d6786fb3a73a9048b88607316796a38",
1057
+ "build_id": "0c92bdd66ef1e0fe428b67b40d230015d829b64236db324460f31fa0237b766f",
1058
1058
  "sites": {
1059
1059
  "memory.recall.budget.checked": {
1060
1060
  "file": "packages/memory/src/engine/bindings/memory-recall-tool.ts",
@@ -1,7 +1,7 @@
1
1
  import { isSupportedLocale } from "./internal/engine/i18n/locales.js";
2
2
  import { parseIsoDateTimeMs } from "./internal/engine/shared/iso-date-time.js";
3
3
  import { r as modelCallDestination } from "./model-call-table-BxGwmwv0.js";
4
- import { a as isTerminalLlmFailure } from "./llm-client-BtbX4af4.js";
4
+ import { a as isTerminalLlmFailure } from "./llm-client-DhBvu-U_.js";
5
5
  import { n as readModelReplyJson } from "./model-reply-text-C7jEWDXG.js";
6
6
  import { n as RESOURCES_BY_LOCALE } from "./all-resources-BZc9QIAW.js";
7
7
  import { a as sessionZoneCarriedBy, n as calendarInstructionSchema, r as calendarSessionTimestamp, t as calculateCalendarTime } from "./calendar-instruction-uK6xsrCt.js";
@@ -8,7 +8,7 @@ import "./runtime-audit-log-4NJsojEj.js";
8
8
  import "./all-resources-BZc9QIAW.js";
9
9
  import "./capture-policy-detector-DhNGhDw3.js";
10
10
  import "./internal/engine/extraction/extraction-text-sanitizer.js";
11
- import "./memory-temporality-classifier-Bm0EiCN8.js";
11
+ import "./memory-temporality-classifier-DTRhzXmG.js";
12
12
  import "./internal/engine/operations/daily-spend-estimator.js";
13
13
  import "./internal/engine/operations/learning-file-maintenance.js";
14
14
  import "./scopes-DQjbRC2q.js";
@@ -2,11 +2,11 @@ import { MAX_LIST_LIMIT } from "./internal/config/index.js";
2
2
  import { SnoStationMemError, StorageError } from "./internal/engine/shared/errors.js";
3
3
  import { a as buildInsightMetadata, c as stringifyInsightMetadata, h as deriveFactKey, s as parseInsightMetadata } from "./memory-metadata-codec-Cglikqj8.js";
4
4
  import { a as currentMutationAttemptId, f as runWithMutationAttempt } from "./runtime-audit-log-4NJsojEj.js";
5
- import { n as LlmClientTerminalError } from "./llm-client-BtbX4af4.js";
5
+ import { n as LlmClientTerminalError } from "./llm-client-DhBvu-U_.js";
6
6
  import { resolveLlmRoute } from "./internal/model/llm-mode-routing.js";
7
7
  import { boundSectionContent, buildIndexedText } from "./internal/engine/extraction/extraction-text-sanitizer.js";
8
8
  import { adapterAViewFromRecord, orderAdapterAPair, parseAdapterAChatVerdict, prospectiveProfileView, renderAdapterAChatPrompt, renderAdapterAPrompt } from "./internal/engine/rem/index.js";
9
- import { S as StaleSupersedeTargetError, a as resolveTaskLifecycle, c as buildTaskLifecycleCommandClaim, i as findUniqueActiveTaskByDescription, l as resolveTaskLifecycleEffectiveTime, n as acceptsTaskLifecycleJudgment, o as taskLifecycleCandidateSetVersion, r as buildTaskLifecycleCandidateSet, s as admitTaskLifecycleAssertion, w as TaskLifecycleStaleResolutionError } from "./store-YX1_c1NH.js";
9
+ import { S as StaleSupersedeTargetError, a as resolveTaskLifecycle, c as buildTaskLifecycleCommandClaim, i as findUniqueActiveTaskByDescription, l as resolveTaskLifecycleEffectiveTime, n as acceptsTaskLifecycleJudgment, o as taskLifecycleCandidateSetVersion, r as buildTaskLifecycleCandidateSet, s as admitTaskLifecycleAssertion, w as TaskLifecycleStaleResolutionError } from "./store-cu7Qq2OW.js";
10
10
  import { o as canonicalizeProfileSectionName, r as recordTokenCounter } from "./memory-store-write-validation-BbvoN3Li.js";
11
11
  import { canExtractorWrite } from "./internal/engine/shared/memory-kind-policy.js";
12
12
  import { resolveHookAgentId } from "./internal/engine/bindings/sno-station-mem-runtime-mode.js";
@@ -3,14 +3,14 @@ import { a as buildInsightMetadata, c as stringifyInsightMetadata } from "./memo
3
3
  import { redactSecrets } from "./internal/engine/security/redact.js";
4
4
  import { t as checkMemoryOperation } from "./operation-cancellation-mqfQz0ka.js";
5
5
  import { setLruEntry } from "./internal/engine/shared/lru.js";
6
- import { i as createLlmClient } from "./llm-client-BtbX4af4.js";
6
+ import { i as createLlmClient } from "./llm-client-DhBvu-U_.js";
7
7
  import { pickLlmRoutingConfig } from "./internal/model/llm-mode-routing.js";
8
8
  import { appendSelfImprovementEntry } from "./internal/engine/operations/learning-file-maintenance.js";
9
9
  import { getSnoStationMemDataDir } from "./internal/store/data-paths.js";
10
10
  import { resolveHookAgentId } from "./internal/engine/bindings/sno-station-mem-runtime-mode.js";
11
- import { n as createRetireByNameRunBudget, r as runProfileSectionUpdate } from "./profile-section-writer-DSX6R3GF.js";
11
+ import { n as createRetireByNameRunBudget, r as runProfileSectionUpdate } from "./profile-section-writer-QiB0MMtt.js";
12
12
  import { a as generateReflectionText, c as shouldSkipReflectionMessage, l as writeReflectionToFilesystem, s as readSessionConversationWithResetFallback, u as extractTextContent } from "./daily-log-generator-DdzlaQYy.js";
13
- import { a as resolveWorkspaceDirFromEvent, f as setReflectionDerivedCacheEntry, l as isSessionBoundaryReflectionAction, n as createReflectionGenerator, o as DEFAULT_REFLECTION_BOUNDARY_DERIVED_SUPPRESSION_MS, t as DEFAULT_MEMORY_LLM_CONFIG, u as setReflectionDerivedSuppression } from "./reflection-embedded-generator-i8KHqMpr.js";
13
+ import { a as resolveWorkspaceDirFromEvent, f as setReflectionDerivedCacheEntry, l as isSessionBoundaryReflectionAction, n as createReflectionGenerator, o as DEFAULT_REFLECTION_BOUNDARY_DERIVED_SUPPRESSION_MS, t as DEFAULT_MEMORY_LLM_CONFIG, u as setReflectionDerivedSuppression } from "./reflection-embedded-generator-DNFMQNsv.js";
14
14
  import { i as buildReflectionMappedMetadata, n as createReflectionEventId, o as extractInjectableReflectionMappedMemoryItems, r as buildReflectionAntiPatternSignature, s as extractReflectionLearningGovernanceCandidates, t as storeReflectionEntries } from "./memory-entry-projector-CkoEuLv6.js";
15
15
  import { createLogger, currentLogContext, privateLogReference, withLogContext } from "@snoai/utils/logger";
16
16
  import { basename, join } from "node:path";
@@ -1,5 +1,5 @@
1
1
  import { X as FIXED_MEMORY_SNO_AI_EXTRACT } from "./signed-registry-constants-CO2vv_QJ.js";
2
- import { i as createLlmClient } from "./llm-client-BtbX4af4.js";
2
+ import { i as createLlmClient } from "./llm-client-DhBvu-U_.js";
3
3
  // src/engine/reflection/derived-line-cache.ts
4
4
  /**
5
5
  * Returns reflection derived cache entry from reflection cache keys state without side effects.
@@ -1 +1 @@
1
- export { c as runRemProductionOrderedWave } from "./rem-trigger-BaJa5FS0.js";
1
+ export { c as runRemProductionOrderedWave } from "./rem-trigger-BN6GCcnE.js";
@@ -1,4 +1,4 @@
1
- import { $ as FIXED_IDX_MEMORY_ACTIVE_TASK_CURRENT_REVISION, A as modelCallDestination, At as FIXED_MEMORY_PROFILE_RECOVERY_ENTRIES, B as FIXED_EXTERNAL_VALUE_49, C as getSnoStationMemStateDir, Cn as CHUNK_OVERLAP_TOKENS, Cr as ensureModelDownloaded, Ct as FIXED_MEMORY_CHUNKS_MEM_FACET_IDX, D as settingsToPluginConfig, Dn as DEFAULT_IMPORTANCE, Dt as FIXED_MEMORY_MEMORIES_FACT_ID_INSERT_GUARD, En as DEFAULT_BM25_WEIGHT, Et as FIXED_MEMORY_MEMORIES, Fn as EMBEDDER_DIM, G as FIXED_EXTERNAL_VALUE_55, H as FIXED_EXTERNAL_VALUE_52, Hn as HEAD_EXTRACT_OVERLAP_DROP_RATIO, In as EMBEDDER_MODEL_DEFAULT, It as FIXED_MEMORY_SNO_EXTRACT_CHAT, J as FIXED_EXTERNAL_VALUE_58, K as FIXED_EXTERNAL_VALUE_56, Kn as INTRA_MEMORY_COSINE_THRESHOLD, Kt as FIXED_PROTOCOL_VALUE_69, Ln as EMBEDDER_PROVIDER_DEFAULT, Mn as DEFAULT_RERANK_TIMEOUT_MS, Mt as FIXED_MEMORY_PROVIDER_PROJECT_AGENTS, Nt as FIXED_MEMORY_PROVIDER_PROJECT_MAPPINGS, O as MODEL_CALLS, On as DEFAULT_RECALL_LIFECYCLE, Ot as FIXED_MEMORY_MEMORIES_FACT_ID_UPDATE_GUARD, P as observeAgentId, Pn as DEFAULT_VECTOR_WEIGHT, Q as FIXED_IDX_MEMORY, Rn as EVAL_QA_TRACES_FILENAME, Rt as FIXED_MEMORY_TASK_LIFECYCLE_COMMANDS, Sn as CHUNK_MIN_TOKENS, Sr as LocalReranker, St as FIXED_MEMORY_CHUNKS_MEMORY_ID_IDX, T as readSettings, Tn as CHUNK_TOKENIZER_MODE, Tt as FIXED_MEMORY_EXTRACTION_TIMESTAMPS, U as FIXED_EXTERNAL_VALUE_53, Un as HEAD_EXTRACT_TOKEN_BUDGET, V as FIXED_EXTERNAL_VALUE_51, Vn as HEAD_EXTRACT_MIN_CONTENT_TOKENS, W as FIXED_EXTERNAL_VALUE_54, Wn as IMPORTANCE_WEIGHT_BASE, X as FIXED_EXTERNAL_VALUE_8, Xn as MAX_CHUNK_FETCH_LIMIT, Y as FIXED_EXTERNAL_VALUE_62, Z as FIXED_EXTERNAL_VALUE_9, Zn as MAX_LIST_LIMIT, _r as CachedEmbeddingProvider, _t as FIXED_MEMORY_CHUNKS, a as REM_MODEL_OUTPUT_TOKEN_CAP, an as PERSISTED_PROVIDER_SYSTEM, ar as RECENCY_WEIGHT, at as FIXED_IDX_MEMORY_MEMORIES_LANE_PROJECT, bn as CHUNKING_VERSION$1, bt as FIXED_MEMORY_CHUNKS_AU, cn as SUPPORTED_LOCALES, cr as RETRIEVAL_STORAGE_CHUNK_PROFILE, ct as FIXED_IDX_MEMORY_MEMORIES_PROJECT_FACT_KEY_ACTIVE, d as getRemDiscoveryPath, dn as ADJACENCY_BONUS_PER_PAIR, dt as FIXED_MEMORY_ACTIVE_TASK_EVIDENCE, en as FIXED_VEC_MEMORY, et as FIXED_IDX_MEMORY_ACTIVE_TASK_EVIDENCE_INSTANCE, ft as FIXED_MEMORY_ACTIVE_TASK_INSTANCES, g as readRemOperationalConfig, gt as FIXED_MEMORY_ACTIVE_TASK_TRANSITIONS, hr as experimentMmrDisabled, ht as FIXED_MEMORY_ACTIVE_TASK_REVISIONS, in as PERSISTED_CONTENT_HASH_V3, it as FIXED_IDX_MEMORY_MEMORIES_FACT_ID, jr as REM_SIDECAR_TOKEN_HEADER, jt as FIXED_MEMORY_PROVIDER_AGENT_MAPPINGS, k as MODEL_CALL_WORKLOAD, kt as FIXED_MEMORY_MIGRATION_MARKERS, lt as FIXED_IDX_MEMORY_MEMORIES_PROJECT_TIMESTAMP, mr as experimentCandidatePoolOverride, mt as FIXED_MEMORY_ACTIVE_TASK_MIGRATION_MANIFESTS, nn as PERSISTED_CANDIDATE_HASH_V1, nr as MULTI_HIT_BONUS_CAP, nt as FIXED_IDX_MEMORY_MEMORIES_CATEGORY, o as REM_RUN_PATH, ot as FIXED_IDX_MEMORY_MEMORIES_PROJECT, pt as FIXED_MEMORY_ACTIVE_TASK_MIGRATION_EVIDENCE, q as FIXED_EXTERNAL_VALUE_57, qt as FIXED_PROTOCOL_VALUE_73, r as REM_CORRELATION_ID_HEADER, rn as PERSISTED_CONTENT_HASH_V1, rr as MULTI_HIT_BONUS_PER_HIT, rt as FIXED_IDX_MEMORY_MEMORIES_CONTENT_HASH, s as REM_SIDECAR_HOST, sn as llmRoutingConfigSchema, st as FIXED_IDX_MEMORY_MEMORIES_PROJECT_CONTENT_HASH, tn as FIXED_VEC_MEMORY_CHUNKS, tr as MMR_LAMBDA, tt as FIXED_IDX_MEMORY_ACTIVE_TASK_INSTANCES_PROJECTION, un as ADJACENCY_BONUS_CAP, ur as TIME_DECAY_FLOOR, ut as FIXED_MEMORY, vn as BONUS_TOTAL_INVARIANT, vr as LOCAL_EMBEDDING_CACHE_DIR_DEFAULT, vt as FIXED_MEMORY_CHUNKS_AD, wn as CHUNK_TARGET_TOKENS, wt as FIXED_MEMORY_CHUNKS_MEM_IDX, xn as CHUNK_MAX_TOKENS, xr as LocalEmbedProvider, xt as FIXED_MEMORY_CHUNKS_FTS, yn as CACHE_TTL_MS, yr as LOCAL_EMBEDDING_MODEL, yt as FIXED_MEMORY_CHUNKS_AI, zt as FIXED_MEMORY_UNPLACED_CANDIDATES } from "./config-D6GJyMKz.js";
1
+ import { $ as FIXED_IDX_MEMORY_ACTIVE_TASK_CURRENT_REVISION, A as modelCallDestination, At as FIXED_MEMORY_PROFILE_RECOVERY_ENTRIES, B as FIXED_EXTERNAL_VALUE_49, C as getSnoStationMemStateDir, Cn as CHUNK_OVERLAP_TOKENS, Cr as ensureModelDownloaded, Ct as FIXED_MEMORY_CHUNKS_MEM_FACET_IDX, D as settingsToPluginConfig, Dn as DEFAULT_IMPORTANCE, Dt as FIXED_MEMORY_MEMORIES_FACT_ID_INSERT_GUARD, En as DEFAULT_BM25_WEIGHT, Et as FIXED_MEMORY_MEMORIES, Fn as EMBEDDER_DIM, G as FIXED_EXTERNAL_VALUE_55, H as FIXED_EXTERNAL_VALUE_52, Hn as HEAD_EXTRACT_OVERLAP_DROP_RATIO, In as EMBEDDER_MODEL_DEFAULT, It as FIXED_MEMORY_SNO_EXTRACT_CHAT, J as FIXED_EXTERNAL_VALUE_58, K as FIXED_EXTERNAL_VALUE_56, Kn as INTRA_MEMORY_COSINE_THRESHOLD, Kt as FIXED_PROTOCOL_VALUE_69, Ln as EMBEDDER_PROVIDER_DEFAULT, Mn as DEFAULT_RERANK_TIMEOUT_MS, Mt as FIXED_MEMORY_PROVIDER_PROJECT_AGENTS, Nt as FIXED_MEMORY_PROVIDER_PROJECT_MAPPINGS, O as MODEL_CALLS, On as DEFAULT_RECALL_LIFECYCLE, Ot as FIXED_MEMORY_MEMORIES_FACT_ID_UPDATE_GUARD, P as observeAgentId, Pn as DEFAULT_VECTOR_WEIGHT, Q as FIXED_IDX_MEMORY, Rn as EVAL_QA_TRACES_FILENAME, Rt as FIXED_MEMORY_TASK_LIFECYCLE_COMMANDS, Sn as CHUNK_MIN_TOKENS, Sr as LocalReranker, St as FIXED_MEMORY_CHUNKS_MEMORY_ID_IDX, T as readSettings, Tn as CHUNK_TOKENIZER_MODE, Tt as FIXED_MEMORY_EXTRACTION_TIMESTAMPS, U as FIXED_EXTERNAL_VALUE_53, Un as HEAD_EXTRACT_TOKEN_BUDGET, V as FIXED_EXTERNAL_VALUE_51, Vn as HEAD_EXTRACT_MIN_CONTENT_TOKENS, W as FIXED_EXTERNAL_VALUE_54, Wn as IMPORTANCE_WEIGHT_BASE, X as FIXED_EXTERNAL_VALUE_8, Xn as MAX_CHUNK_FETCH_LIMIT, Y as FIXED_EXTERNAL_VALUE_62, Z as FIXED_EXTERNAL_VALUE_9, Zn as MAX_LIST_LIMIT, _r as CachedEmbeddingProvider, _t as FIXED_MEMORY_CHUNKS, a as REM_MODEL_OUTPUT_TOKEN_CAP, an as PERSISTED_PROVIDER_SYSTEM, ar as RECENCY_WEIGHT, at as FIXED_IDX_MEMORY_MEMORIES_LANE_PROJECT, bn as CHUNKING_VERSION$1, bt as FIXED_MEMORY_CHUNKS_AU, cn as SUPPORTED_LOCALES, cr as RETRIEVAL_STORAGE_CHUNK_PROFILE, ct as FIXED_IDX_MEMORY_MEMORIES_PROJECT_FACT_KEY_ACTIVE, d as getRemDiscoveryPath, dn as ADJACENCY_BONUS_PER_PAIR, dt as FIXED_MEMORY_ACTIVE_TASK_EVIDENCE, en as FIXED_VEC_MEMORY, et as FIXED_IDX_MEMORY_ACTIVE_TASK_EVIDENCE_INSTANCE, ft as FIXED_MEMORY_ACTIVE_TASK_INSTANCES, g as readRemOperationalConfig, gt as FIXED_MEMORY_ACTIVE_TASK_TRANSITIONS, hr as experimentMmrDisabled, ht as FIXED_MEMORY_ACTIVE_TASK_REVISIONS, in as PERSISTED_CONTENT_HASH_V3, it as FIXED_IDX_MEMORY_MEMORIES_FACT_ID, jr as REM_SIDECAR_TOKEN_HEADER, jt as FIXED_MEMORY_PROVIDER_AGENT_MAPPINGS, k as MODEL_CALL_WORKLOAD, kt as FIXED_MEMORY_MIGRATION_MARKERS, lt as FIXED_IDX_MEMORY_MEMORIES_PROJECT_TIMESTAMP, mr as experimentCandidatePoolOverride, mt as FIXED_MEMORY_ACTIVE_TASK_MIGRATION_MANIFESTS, nn as PERSISTED_CANDIDATE_HASH_V1, nr as MULTI_HIT_BONUS_CAP, nt as FIXED_IDX_MEMORY_MEMORIES_CATEGORY, o as REM_RUN_PATH, ot as FIXED_IDX_MEMORY_MEMORIES_PROJECT, pt as FIXED_MEMORY_ACTIVE_TASK_MIGRATION_EVIDENCE, q as FIXED_EXTERNAL_VALUE_57, qt as FIXED_PROTOCOL_VALUE_73, r as REM_CORRELATION_ID_HEADER, rn as PERSISTED_CONTENT_HASH_V1, rr as MULTI_HIT_BONUS_PER_HIT, rt as FIXED_IDX_MEMORY_MEMORIES_CONTENT_HASH, s as REM_SIDECAR_HOST, sn as llmRoutingConfigSchema, st as FIXED_IDX_MEMORY_MEMORIES_PROJECT_CONTENT_HASH, tn as FIXED_VEC_MEMORY_CHUNKS, tr as MMR_LAMBDA, tt as FIXED_IDX_MEMORY_ACTIVE_TASK_INSTANCES_PROJECTION, un as ADJACENCY_BONUS_CAP, ur as TIME_DECAY_FLOOR, ut as FIXED_MEMORY, vn as BONUS_TOTAL_INVARIANT, vr as LOCAL_EMBEDDING_CACHE_DIR_DEFAULT, vt as FIXED_MEMORY_CHUNKS_AD, wn as CHUNK_TARGET_TOKENS, wt as FIXED_MEMORY_CHUNKS_MEM_IDX, xn as CHUNK_MAX_TOKENS, xr as LocalEmbedProvider, xt as FIXED_MEMORY_CHUNKS_FTS, yn as CACHE_TTL_MS, yr as LOCAL_EMBEDDING_MODEL, yt as FIXED_MEMORY_CHUNKS_AI, zt as FIXED_MEMORY_UNPLACED_CANDIDATES } from "./config-VPVf190N.js";
2
2
  import { createLogger, createLogger as createLogger$1, currentLogContext, privateLogReference, withLogContext } from "@snoai/utils/logger";
3
3
  import path, { dirname, join, resolve } from "node:path";
4
4
  import { appendFileSync, closeSync, createReadStream, existsSync, fstatSync, fsyncSync, ftruncateSync, mkdirSync, openSync, readFileSync, readSync, realpathSync, renameSync, rmSync, statSync, writeFileSync, writeSync } from "node:fs";
@@ -8,12 +8,15 @@ import { createHash, createHmac, createPublicKey, randomUUID, randomUUID as rand
8
8
  import { LRUCache } from "lru-cache";
9
9
  import { z } from "zod";
10
10
  import { CHUNKING_VERSION, aggregateChunksToMemories, buildChunkId, buildDensePayload, chunk, chunk as chunk$1, countTokens, expandSnippetWindow, extractMetadataHeader, headExtract, shouldDropSummary } from "@snoai/chunking";
11
+ import "@snoai/observability";
11
12
  import { AsyncLocalStorage } from "node:async_hooks";
12
13
  import { getDek, openEncryptedDb, openEncryptedDbReadonly } from "@snoai/sqlite-crypto";
13
14
  import { appendFile, mkdir, open, readFile, rename, rm } from "node:fs/promises";
14
15
  import { Temporal } from "@js-temporal/polyfill";
15
16
  import { redactForStorage, sanitizeContentIngress, sanitizeStructuredJsonForStorage } from "@snoai/content-sanitizer";
17
+ import { execFile } from "node:child_process";
16
18
  import { createInterface } from "node:readline";
19
+ import { isDeepStrictEqual, promisify } from "node:util";
17
20
  import { StringDecoder } from "node:string_decoder";
18
21
  import { CallPipeline, ConfigRegistryManager, KeyPool, loadLlmixTrustManifest, registryRootOptionsFromTrustManifest } from "@snoai/llmix";
19
22
  import { Buffer as Buffer$1 } from "node:buffer";
@@ -23,7 +26,6 @@ import { migrate } from "drizzle-orm/better-sqlite3/migrator";
23
26
  import { index, integer, primaryKey, real, sqliteTable, text } from "drizzle-orm/sqlite-core";
24
27
  import { arch as arch$1, platform as platform$1 } from "node:process";
25
28
  import { getLoadablePath } from "sqlite-vec";
26
- import { isDeepStrictEqual } from "node:util";
27
29
  import { currentLogContext as currentLogContext$1, withLogContext as withLogContext$1 } from "@snoai/utils/log-context";
28
30
  // \0rolldown/runtime.js
29
31
  var __defProp = Object.defineProperty;
@@ -5854,10 +5856,6 @@ function debugContentPreview(text, enabled, maxChars = 80) {
5854
5856
  if (collapsed.length === 0) return void 0;
5855
5857
  return collapsed.length > maxChars ? `${collapsed.slice(0, maxChars)}...` : collapsed;
5856
5858
  }
5857
- z.object({ source: z.object({ commit: z.string().min(1) }) });
5858
- // config/skin-defaults.ts
5859
- /** Epoch milliseconds after which the requester no longer waits for the answer. */
5860
- const HOST_MODEL_DEADLINE_HEADER = "x-sno-deadline";
5861
5859
  z.object({
5862
5860
  offset: z.number().int().nonnegative(),
5863
5861
  lastTs: z.number().int().nonnegative(),
@@ -5866,6 +5864,30 @@ z.object({
5866
5864
  counted: z.boolean(),
5867
5865
  path: z.string().min(1).optional()
5868
5866
  });
5867
+ promisify(execFile);
5868
+ const harnessSchema = z.enum([
5869
+ "claude",
5870
+ "codex",
5871
+ "cursor",
5872
+ "hermes",
5873
+ "openclaw",
5874
+ "unknown"
5875
+ ]);
5876
+ z.object({
5877
+ harness: harnessSchema,
5878
+ sessionId: z.string().min(1),
5879
+ at: z.iso.datetime({ offset: true }),
5880
+ event: z.string(),
5881
+ input: z.record(z.string(), z.unknown()),
5882
+ pid: z.number().int().positive().optional(),
5883
+ processStart: z.string().optional(),
5884
+ reachAddress: z.string().optional(),
5885
+ cwd: z.string().optional()
5886
+ });
5887
+ z.object({ source: z.object({ commit: z.string().min(1) }) });
5888
+ // config/skin-defaults.ts
5889
+ /** Epoch milliseconds after which the requester no longer waits for the answer. */
5890
+ const HOST_MODEL_DEADLINE_HEADER = "x-sno-deadline";
5869
5891
  // config/coding-skin.ts
5870
5892
  const CODING_SKIN_CHILD_DEADLINE_MS = 11e4;
5871
5893
  const CODING_SKIN_SESSION_QUERY = "standing decisions, open tasks, conventions and known pitfalls for this repository";
@@ -6597,7 +6619,7 @@ async function resolveConfiguredBundledLlmixEndpoint(input) {
6597
6619
  });
6598
6620
  }
6599
6621
  // src/model/llm-endpoint-resolution.ts
6600
- const SNO_GPU_ORIGIN = "https://rt3-llm.sno.ai";
6622
+ const SNO_GPU_ORIGIN = "https://gpu.sno.ai";
6601
6623
  const PROVIDER_API_BASES = {
6602
6624
  openai: FIXED_PROTOCOL_VALUE_69,
6603
6625
  openrouter: "https://openrouter.ai/api/v1"
@@ -1,5 +1,5 @@
1
- import { At as getAuditPath, Dt as appendAuditEntryStrict, K as REM_BUILT_OPERATION_TYPES, Ot as compactAuditLog, Pt as readJsonlLines, bt as ModelCallRefusedError, d as RemJobStore, f as parseRemJobStats, n as remNeedsHost, q as parseRemOperationType } from "./rem-trigger-BaJa5FS0.js";
2
- import { $n as MEMORY_SHUTDOWN_TIMEOUT_MS, Ar as MEMORY_SKIN_HEADER, C as getSnoStationMemStateDir, Dr as MEMORY_ERROR_STATUS, Er as MEMORY_DEFAULT_SKIN_ID, Mr as memoryMethod, 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, kr as MEMORY_ROUTES, l as REM_SOURCE, r as REM_CORRELATION_ID_HEADER, s as REM_SIDECAR_HOST, u as getRemChassisJournalPath, v as SettingsUnavailableError, y as getDiscoveryPath } from "./config-D6GJyMKz.js";
1
+ import { At as getAuditPath, Dt as appendAuditEntryStrict, K as REM_BUILT_OPERATION_TYPES, Ot as compactAuditLog, Pt as readJsonlLines, bt as ModelCallRefusedError, d as RemJobStore, f as parseRemJobStats, n as remNeedsHost, q as parseRemOperationType } from "./rem-trigger-BN6GCcnE.js";
2
+ import { $n as MEMORY_SHUTDOWN_TIMEOUT_MS, Ar as MEMORY_SKIN_HEADER, C as getSnoStationMemStateDir, Dr as MEMORY_ERROR_STATUS, Er as MEMORY_DEFAULT_SKIN_ID, Mr as memoryMethod, 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, kr as MEMORY_ROUTES, l as REM_SOURCE, r as REM_CORRELATION_ID_HEADER, s as REM_SIDECAR_HOST, u as getRemChassisJournalPath, v as SettingsUnavailableError, y as getDiscoveryPath } from "./config-VPVf190N.js";
3
3
  import { t as ContractError } from "./error-Dga5Ot1M.js";
4
4
  import { setImmediate } from "node:timers/promises";
5
5
  import { createLogger, currentLogContext, effectiveLogLevel, emitDiagnostic } from "@snoai/utils/logger";
@@ -331,7 +331,7 @@ async function startOwnedRemSidecar() {
331
331
  async open() {
332
332
  if (currentMemory) return currentMemory;
333
333
  if (settingsError) throw settingsError;
334
- openingMemory ??= import("./memory-runtime-B9fG-sNo.js").then((module) => module.MemoryRuntimePool.open()).then((pool) => {
334
+ openingMemory ??= import("./memory-runtime-CKIBXN_r.js").then((module) => module.MemoryRuntimePool.open()).then((pool) => {
335
335
  currentMemory = pool;
336
336
  if (stopping) pool.stopTimers();
337
337
  return pool;
@@ -726,7 +726,7 @@ async function runChassisJob(store, journal, waveId, holdMs, runtime) {
726
726
  cleanRefusalReasons.push(reason);
727
727
  await appendChassisRefusal(journal, queued, operation, "refused", reason);
728
728
  }
729
- const { runRemProductionOrderedWave } = await import("./rem-batch-executor-BSWXFOLH.js");
729
+ const { runRemProductionOrderedWave } = await import("./rem-batch-executor-BHItPFZ8.js");
730
730
  const result = enabledOperations.length === 0 ? {
731
731
  decision: "allow",
732
732
  reasonCode: null,
@@ -1,4 +1,4 @@
1
- import { Or as MEMORY_RECONNECT_INTERVAL_MS, m as isRemTraceEnabled, p as getRemTraceLogPath, v as SettingsUnavailableError } from "../config-D6GJyMKz.js";
1
+ import { Or as MEMORY_RECONNECT_INTERVAL_MS, m as isRemTraceEnabled, p as getRemTraceLogPath, v as SettingsUnavailableError } from "../config-VPVf190N.js";
2
2
  import { setTimeout } from "node:timers/promises";
3
3
  import { addLogFileTarget, closeLogger, createLogger } from "@snoai/utils/logger";
4
4
  // src/sidecar/main.ts
@@ -6,7 +6,7 @@ import { addLogFileTarget, closeLogger, createLogger } from "@snoai/utils/logger
6
6
  * @purpose Boots the standalone local REM sidecar process.
7
7
  * @boundary Process environment, sidecar lifecycle, and local request-log destination.
8
8
  */
9
- const { startRemSidecar, DuplicateSidecarError } = await import("../server-DPd3Xef2.js");
9
+ const { startRemSidecar, DuplicateSidecarError } = await import("../server-BvEOkYis.js");
10
10
  let sidecar;
11
11
  for (let attempt = 1; !sidecar; attempt++) try {
12
12
  sidecar = await startRemSidecar();
@@ -4,12 +4,12 @@ import "./internal/engine/shared/types.js";
4
4
  import "./internal/engine/security/redact.js";
5
5
  import "./internal/engine/shared/utils.js";
6
6
  import "./runtime-audit-log-4NJsojEj.js";
7
- import "./llm-client-BtbX4af4.js";
7
+ import "./llm-client-DhBvu-U_.js";
8
8
  import "./capture-policy-detector-DhNGhDw3.js";
9
9
  import "./ambient-learning-text-normalizer-dxAxf9oi.js";
10
- import "./memory-temporality-classifier-Bm0EiCN8.js";
10
+ import "./memory-temporality-classifier-DTRhzXmG.js";
11
11
  import "./scopes-DQjbRC2q.js";
12
- import "./atomic-memory-extraction-CWMMWF2C.js";
12
+ import "./atomic-memory-extraction-OusdO3Ig.js";
13
13
  import "./internal/store/sqlite-runtime.js";
14
14
  import "./connection-H-_OZ-pP.js";
15
15
  import "./internal/store/data-paths.js";
@@ -23,8 +23,8 @@ import "./retriever-DRtPp86k.js";
23
23
  import "./internal/engine/observability/observable-retriever.js";
24
24
  import "./internal/engine/observability/session-registry.js";
25
25
  import "./daily-log-generator-DdzlaQYy.js";
26
- import "./reflection-embedded-generator-i8KHqMpr.js";
27
- import "./strategy-hook-runner-CwqZ1orf.js";
26
+ import "./reflection-embedded-generator-DNFMQNsv.js";
27
+ import "./strategy-hook-runner-CvdsVcwR.js";
28
28
  import "./data-bootstrap-Db6a7ASj.js";
29
29
  import "@snoai/sqlite-crypto";
30
30
  export {};
@@ -10,7 +10,7 @@ import { t as checkMemoryOperation } from "./operation-cancellation-mqfQz0ka.js"
10
10
  import { u as runWithMemoryAudit } from "./runtime-audit-log-4NJsojEj.js";
11
11
  import { getSnoStationMemStateDir } from "./internal/contract/profile.js";
12
12
  import "./internal/engine/extraction/extraction-text-sanitizer.js";
13
- import "./memory-temporality-classifier-Bm0EiCN8.js";
13
+ import "./memory-temporality-classifier-DTRhzXmG.js";
14
14
  import { a as readMemorySourceOrder, i as readCorrectionMoment, n as compareMemoryRetirementOrder, o as readMemorySourceOrderOrOldest, r as compareMemorySourceOrder, s as sameSourceTurn, t as closeMemoryRow } from "./memory-source-order-BTo_ix2y.js";
15
15
  import { REM_UPDATE_LOCALES, deriveRemWriteIdentity, getRemUpdateLocaleResource, writeRemTwoFacetTransaction } from "./internal/engine/rem/index.js";
16
16
  import { n as state_vocabulary_default, r as attribute_dictionary_default, t as relations } from "./relation-dictionary-QVBewRQ1.js";
@@ -1,7 +1,7 @@
1
1
  import { DEFAULT_REFLECTION_SESSION_TTL_MS } from "./internal/config/index.js";
2
2
  import { setLruEntry, touchLruEntry } from "./internal/engine/shared/lru.js";
3
3
  import { n as createErrorSignalTracker } from "./error-signals-CqvwBBWn.js";
4
- import { i as pruneReflectionState } from "./reflection-embedded-generator-i8KHqMpr.js";
4
+ import { i as pruneReflectionState } from "./reflection-embedded-generator-DNFMQNsv.js";
5
5
  import { a as loadAgentReflectionSlicesFromEntries } from "./memory-entry-projector-CkoEuLv6.js";
6
6
  import { createLogger } from "@snoai/utils/logger";
7
7
  // src/engine/reflection/reflection-slice-loader.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@snoai/memory",
3
- "version": "1.7.1",
3
+ "version": "2.0.0",
4
4
  "license": "Apache-2.0",
5
5
  "publishConfig": { "access": "public" },
6
6
  "repository": {
@@ -167,7 +167,7 @@
167
167
  "language": "en"
168
168
  },
169
169
  "snoGpu": {
170
- "baseUrl": "https://rt3-llm.sno.ai",
170
+ "baseUrl": "https://gpu.sno.ai",
171
171
  "apiKey": ""
172
172
  },
173
173
  "rerank": {
@@ -1,265 +0,0 @@
1
- import "./internal/engine/telemetry/observe-ledger.js";
2
- import "./internal/config/skill-categories.js";
3
- import "./internal/config/skin-defaults.js";
4
- import { z } from "zod";
5
- import { basename } from "node:path";
6
- import { createReadStream } from "node:fs";
7
- // config/session-activity.ts
8
- /** A gap between two records of at most this long is working time; a longer one ends the run. */
9
- const ACTIVITY_GAP_MS = 9e5;
10
- /** A run counts in runs_over_12h once, in the send where it reaches this length, ended or not. */
11
- const ACTIVITY_LONG_RUN_MS = 432e5;
12
- /**
13
- * Text markers of messages the person did not write, seen in real transcripts on the owner's
14
- * machine (Claude Code 2.1.247 and Codex 0.160, 2026-08 to 2026-10). Heuristics, matched on text.
15
- */
16
- /** Reach's ring and mailbox doorbell, typed into the agent's terminal (apps/reach/lib/reach-ring line 426); recorded as a human prompt by Claude Code and Codex. */
17
- const REACH_RING_MARKER = "typed by the mail transport, not by the owner";
18
- /** A heartbeat tick line, "<UTC time> [label] tick=N ..." (apps/heartbeat/bin/heartbeat line 507); Claude Code delivers it inside a Monitor <task-notification>. */
19
- const HEARTBEAT_TICK = /\d{4}-\d\d-\d\dT\d\d:\d\d:\d\dZ \[[^\]\n]+\] tick=\d+/;
20
- /** The first prompt Reach gives a seat it starts in a terminal (apps/reach/lib/reach-spawn line 19). */
21
- const REACH_SEAT_START_MARKER = "No work is assigned by this startup message";
22
- /** True when the text of a user message came from another agent's tooling: a Reach ring or seat start, or a heartbeat wake. */
23
- function isAgentText(text) {
24
- return text.includes(REACH_RING_MARKER) || text.includes(REACH_SEAT_START_MARKER) || HEARTBEAT_TICK.test(text);
25
- }
26
- const activityCursorSchema = z.object({
27
- offset: z.number().int().nonnegative(),
28
- lastTs: z.number().int().nonnegative(),
29
- runStart: z.number().int().nonnegative(),
30
- agentDriven: z.boolean(),
31
- counted: z.boolean(),
32
- path: z.string().min(1).optional()
33
- });
34
- const EMPTY_ACTIVITY_CURSOR = {
35
- offset: 0,
36
- lastTs: 0,
37
- runStart: 0,
38
- agentDriven: false,
39
- counted: false
40
- };
41
- /**
42
- * Folds the records after the cursor into one window. A gap belongs to the window of the record
43
- * that ends it, so splitting a transcript at any line gives the same sums. A run is counted in
44
- * runs_over_12h once, in the send where it reaches 12 hours, whether or not it has ended. longest_run_ms
45
- * is the longest run of any length seen in the window, including the length so far of the run still
46
- * open. `closeRun` ends the run still open at the last record (the session is over); otherwise it
47
- * stays open in the cursor.
48
- */
49
- function foldActivity(cursor, records, closeRun) {
50
- let { lastTs, runStart, agentDriven, counted } = cursor;
51
- let windowStart = runStart > 0 ? lastTs : 0;
52
- let active = 0, team = 0, human = 0, runs = 0, longest = 0;
53
- const seeRun = (end) => {
54
- const length = end - runStart;
55
- longest = Math.max(longest, length);
56
- if (!counted && length >= ACTIVITY_LONG_RUN_MS) {
57
- runs++;
58
- counted = true;
59
- }
60
- };
61
- for (const record of records) {
62
- if (windowStart === 0) windowStart = record.ts;
63
- if (runStart === 0) runStart = record.ts;
64
- else if (record.ts > lastTs) {
65
- const gap = record.ts - lastTs;
66
- if (gap <= ACTIVITY_GAP_MS) {
67
- active += gap;
68
- if (agentDriven) team += gap;
69
- } else {
70
- seeRun(lastTs);
71
- runStart = record.ts;
72
- counted = false;
73
- }
74
- }
75
- lastTs = Math.max(lastTs, record.ts);
76
- if (runStart > 0) seeRun(lastTs);
77
- if (record.incoming === "human") {
78
- human++;
79
- agentDriven = false;
80
- } else if (record.incoming === "agent") agentDriven = true;
81
- }
82
- const closing = closeRun && runStart > 0;
83
- if (closing) {
84
- runStart = 0;
85
- counted = false;
86
- }
87
- const next = {
88
- ...cursor,
89
- lastTs,
90
- runStart,
91
- agentDriven,
92
- counted
93
- };
94
- if (records.length === 0 && !closing) return {
95
- payload: void 0,
96
- cursor: next
97
- };
98
- return {
99
- payload: {
100
- window_start_ms: windowStart > 0 ? windowStart : lastTs,
101
- window_end_ms: lastTs,
102
- active_ms: active,
103
- team_driven_ms: team,
104
- runs_over_12h: runs,
105
- longest_run_ms: longest,
106
- human_messages: human
107
- },
108
- cursor: next
109
- };
110
- }
111
- /**
112
- * Calls `onLine` for each complete line from `offset` on and returns the offset after the last
113
- * complete line, and whether the end of the file was reached on a line boundary. Stops reading once `budgetMs` has passed: real transcripts reach 1.65 GB while a
114
- * hook has seconds, so a long backlog is taken over several sends instead of failing every time.
115
- */
116
- async function readNewLines(path, offset, budgetMs, onLine) {
117
- const deadline = Date.now() + budgetMs;
118
- const stream = createReadStream(path, { start: offset });
119
- let pending = Buffer.alloc(0);
120
- let consumed = offset;
121
- let done = true;
122
- try {
123
- for await (const chunk of stream) {
124
- pending = pending.length === 0 ? chunk : Buffer.concat([pending, chunk]);
125
- let from = 0;
126
- for (let end = pending.indexOf(10, from); end !== -1; end = pending.indexOf(10, from)) {
127
- if (end > from) onLine(pending.toString("utf8", from, end));
128
- from = end + 1;
129
- }
130
- consumed += from;
131
- pending = pending.subarray(from);
132
- if (Date.now() > deadline) {
133
- done = false;
134
- break;
135
- }
136
- }
137
- } finally {
138
- stream.destroy();
139
- }
140
- if (done && pending.length > 0) {
141
- const tail = pending.toString("utf8");
142
- try {
143
- JSON.parse(tail);
144
- onLine(tail);
145
- consumed += pending.length;
146
- } catch {
147
- done = false;
148
- }
149
- }
150
- return {
151
- offset: consumed,
152
- done
153
- };
154
- }
155
- // config/coding-skin.ts
156
- const CODING_SKIN_CHILD_DEADLINE_MS = 11e4;
157
- const CODING_SKIN_WORKER_LIFETIME_MS = 54e4;
158
- const CODING_SKIN_RETRY_DELAYS_MS = [2e3, 1e4];
159
- const CODING_SKIN_MAX_ATTEMPTS = 3;
160
- const CODING_SKIN_MAX_PENDING_CAPTURES = 1e3;
161
- /** A session's turns wait in the spool until the session ends or has had no new turn for this long, then go together. */
162
- const CODING_SKIN_CAPTURE_QUIET_MS = 18e5;
163
- /**
164
- * Input per capture, estimated as UTF-8 bytes / 3 (at or above the sidecar's CJK-aware count). It keeps one capture to
165
- * about one 4,096-token extraction window, so a capture ends well inside its route deadline and a failed one retries
166
- * a small part; the rest is room for the window's JSON framing.
167
- */
168
- const CODING_SKIN_CAPTURE_MAX_INPUT_TOKENS = 3500;
169
- const CODING_SKIN_IMPORT_INTERVAL_MS = 2010;
170
- const CODING_SKIN_CHILD_MAX_BUFFER_BYTES = 8388608;
171
- const CODING_SKIN_MANUAL_SESSION_ID = "manual";
172
- const CODING_SKIN_SESSION_QUERY = "standing decisions, open tasks, conventions and known pitfalls for this repository";
173
- const CODING_SKIN_LEDGER_MAX_CHARS = 12e3;
174
- const CODING_SKIN_RECALL_SENTENCE_MAX_CHARS = 200;
175
- const CODING_SKIN_RECALL_ITEM_MAX_CHARS = 240;
176
- const CODING_SKIN_HOOKS = {
177
- SessionStart: {
178
- eventName: "session_start",
179
- subcommand: "session-start",
180
- timeout: 15
181
- },
182
- UserPromptSubmit: {
183
- eventName: "user_prompt_submit",
184
- subcommand: "user-prompt-submit",
185
- timeout: 8
186
- },
187
- Stop: {
188
- eventName: "stop",
189
- subcommand: "stop",
190
- timeout: 5
191
- },
192
- SessionEnd: {
193
- eventName: "session_end",
194
- subcommand: "session-end",
195
- timeout: 8
196
- },
197
- PreToolUse: {
198
- eventName: "pre_tool_use",
199
- subcommand: "pre-tool-use",
200
- timeout: 5
201
- },
202
- PostToolUse: {
203
- eventName: "post_tool_use",
204
- subcommand: "post-tool-use",
205
- timeout: 8
206
- }
207
- };
208
- /** Cursor's hook events (`hooks.json` names); timeouts match the Claude/Codex event each one stands in for. */
209
- const CODING_SKIN_CURSOR_HOOKS = {
210
- sessionStart: {
211
- subcommand: "session-start",
212
- timeout: 15
213
- },
214
- beforeSubmitPrompt: {
215
- subcommand: "user-prompt-submit",
216
- timeout: 8
217
- },
218
- afterAgentResponse: {
219
- subcommand: "after-agent-response",
220
- timeout: 5
221
- },
222
- afterAgentThought: {
223
- subcommand: "after-agent-thought",
224
- timeout: 5
225
- },
226
- stop: {
227
- subcommand: "stop",
228
- timeout: 5
229
- },
230
- preCompact: {
231
- subcommand: "pre-compact",
232
- timeout: 5
233
- },
234
- sessionEnd: {
235
- subcommand: "session-end",
236
- timeout: 8
237
- }
238
- };
239
- const CODING_SKIN_MODEL_COMMANDS = [
240
- "recall",
241
- "get",
242
- "remember",
243
- "correct"
244
- ];
245
- function shellQuote(value) {
246
- return `'${value.replaceAll("'", "'\\''")}'`;
247
- }
248
- /** Linux reports a running binary that was replaced on disk as "<path> (deleted)"; the path itself is still the right one. */
249
- function snoProgramPath(path) {
250
- return path.endsWith(" (deleted)") ? path.slice(0, -10) : path;
251
- }
252
- /** The command an agent hook runs: the `sno` binary that ran setup, then `memory hook <event> --harness <name>`. */
253
- function codingSkinHookCommand(snoPath, subcommand, harness) {
254
- return `${shellQuote(snoPath)} memory hook ${subcommand} --harness ${harness}`;
255
- }
256
- /** True for a hook command of that shape, whatever the path to `sno` is. */
257
- function isCodingSkinHookCommand(command, subcommand, harness) {
258
- const suffix = ` memory hook ${subcommand} --harness ${harness}`;
259
- const trimmed = command.trim();
260
- if (!trimmed.endsWith(suffix)) return false;
261
- const encoded = trimmed.slice(0, -suffix.length);
262
- const program = encoded.startsWith("'") && encoded.endsWith("'") ? encoded.slice(1, -1).replaceAll("'\\''", "'") : encoded;
263
- return basename(snoProgramPath(program)) === "sno";
264
- }
265
- export { activityCursorSchema as C, readNewLines as E, EMPTY_ACTIVITY_CURSOR as S, isAgentText as T, CODING_SKIN_WORKER_LIFETIME_MS as _, CODING_SKIN_CURSOR_HOOKS as a, shellQuote as b, CODING_SKIN_LEDGER_MAX_CHARS as c, CODING_SKIN_MAX_PENDING_CAPTURES as d, CODING_SKIN_MODEL_COMMANDS as f, CODING_SKIN_SESSION_QUERY as g, CODING_SKIN_RETRY_DELAYS_MS as h, CODING_SKIN_CHILD_MAX_BUFFER_BYTES as i, CODING_SKIN_MANUAL_SESSION_ID as l, CODING_SKIN_RECALL_SENTENCE_MAX_CHARS as m, CODING_SKIN_CAPTURE_QUIET_MS as n, CODING_SKIN_HOOKS as o, CODING_SKIN_RECALL_ITEM_MAX_CHARS as p, CODING_SKIN_CHILD_DEADLINE_MS as r, CODING_SKIN_IMPORT_INTERVAL_MS as s, CODING_SKIN_CAPTURE_MAX_INPUT_TOKENS as t, CODING_SKIN_MAX_ATTEMPTS as u, codingSkinHookCommand as v, foldActivity as w, snoProgramPath as x, isCodingSkinHookCommand as y };