@snoai/memory 1.5.1 → 1.7.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 (154) hide show
  1. package/README.md +1 -1
  2. package/dist/{access-tracker-D-riPZRY.d.ts → access-tracker-CFxRg7Bt.d.ts} +4 -4
  3. package/dist/{adapter-BM58hult.d.ts → adapter-BFtbOOw3.d.ts} +2 -2
  4. package/dist/{atomic-extraction-reply-BJ9XV_9s.js → atomic-extraction-reply-DF_S9ROg.js} +6 -3
  5. package/dist/{atomic-memory-extraction-BNBCB1XD.d.ts → atomic-memory-extraction-Bp7AWZqi.d.ts} +4 -4
  6. package/dist/{atomic-memory-extraction-BaBrfESt.js → atomic-memory-extraction-pL1_58Kw.js} +45 -6
  7. package/dist/{b-profile-section-dictionary-provider-D2kzg9Re.d.ts → b-profile-section-dictionary-provider-Buj_M-QA.d.ts} +1 -1
  8. package/dist/{capture-policy-detector-CoT-j_Ic.d.ts → capture-policy-detector-3tDQkBi9.d.ts} +1 -1
  9. package/dist/client.d.ts +1 -1
  10. package/dist/{coding-skin-azRXA51Z.js → coding-skin-AW1UPUPY.js} +9 -1
  11. package/dist/coding-skin.d.ts +8 -0
  12. package/dist/coding-skin.js +2 -2
  13. package/dist/{config-BhlMin82.js → config-BwUcq2zS.js} +61 -126
  14. package/dist/{derived-suppression-cache-BW52dq3w.d.ts → derived-suppression-cache-CcANI-p7.d.ts} +1 -1
  15. package/dist/diagnostic-encoder.js +1 -1
  16. package/dist/{index-BGu91bjB.d.ts → index-CJrMFlAU.d.ts} +12 -50
  17. package/dist/{index-GoYmsx8b.d.ts → index-Df9420Pl.d.ts} +2 -2
  18. package/dist/index.d.ts +9 -9
  19. package/dist/index.js +6 -6
  20. package/dist/internal/config/index.d.ts +2 -2
  21. package/dist/internal/config/index.js +13 -51
  22. package/dist/internal/config/plugin-config-schema.d.ts +1 -1
  23. package/dist/internal/config/plugin-config-schema.js +1 -1
  24. package/dist/internal/config/product-mode.d.ts +1 -1
  25. package/dist/internal/config/settings.d.ts +1 -1
  26. package/dist/internal/config/settings.js +17 -48
  27. package/dist/internal/config/skin-defaults.d.ts +1 -1
  28. package/dist/internal/contract/profile.d.ts +1 -1
  29. package/dist/internal/contract/routes.d.ts +1 -1
  30. package/dist/internal/engine/bindings/memory-cli-shared.d.ts +4 -4
  31. package/dist/internal/engine/bindings/memory-forget-tool.js +1 -1
  32. package/dist/internal/engine/bindings/memory-list-tool.js +1 -1
  33. package/dist/internal/engine/bindings/memory-recall-tool.js +1 -1
  34. package/dist/internal/engine/bindings/memory-reflection-resolve-tool.js +1 -1
  35. package/dist/internal/engine/bindings/memory-stats-tool.js +1 -1
  36. package/dist/internal/engine/bindings/memory-store-tool.js +3 -3
  37. package/dist/internal/engine/bindings/memory-tool-access.d.ts +1 -1
  38. package/dist/internal/engine/bindings/memory-tool-access.js +1 -1
  39. package/dist/internal/engine/bindings/memory-tool-results.d.ts +1 -1
  40. package/dist/internal/engine/bindings/memory-tool-results.js +1 -1
  41. package/dist/internal/engine/bindings/memory-tool-schemas.d.ts +5 -5
  42. package/dist/internal/engine/bindings/memory-tool-schemas.js +1 -1
  43. package/dist/internal/engine/bindings/memory-update-tool.js +2 -2
  44. package/dist/internal/engine/bindings/sno-station-mem-ambient-learning-hook.d.ts +4 -4
  45. package/dist/internal/engine/bindings/sno-station-mem-ambient-learning-hook.js +3 -3
  46. package/dist/internal/engine/bindings/sno-station-mem-auto-recall-hook.d.ts +4 -4
  47. package/dist/internal/engine/bindings/sno-station-mem-auto-recall-hook.js +1 -1
  48. package/dist/internal/engine/bindings/sno-station-mem-insight-distill-factory.d.ts +5 -5
  49. package/dist/internal/engine/bindings/sno-station-mem-insight-distill-factory.js +3 -2
  50. package/dist/internal/engine/bindings/sno-station-mem-message-transcript.js +2 -2
  51. package/dist/internal/engine/bindings/sno-station-mem-reset-hook.d.ts +3 -3
  52. package/dist/internal/engine/bindings/sno-station-mem-runtime-mode.d.ts +1 -1
  53. package/dist/internal/engine/eval/trace.js +3 -4
  54. package/dist/internal/engine/extraction/atomic-memory-extraction.d.ts +1 -1
  55. package/dist/internal/engine/extraction/atomic-memory-extraction.js +1 -1
  56. package/dist/internal/engine/extraction/b-profile-section-dictionary-provider.d.ts +1 -1
  57. package/dist/internal/engine/extraction/b-profile-section-rekey.d.ts +5 -5
  58. package/dist/internal/engine/extraction/capture-policy-detector.d.ts +1 -1
  59. package/dist/internal/engine/extraction/memory-metadata-codec.d.ts +2 -2
  60. package/dist/internal/engine/extraction/memory-temporality-classifier.d.ts +1 -1
  61. package/dist/internal/engine/extraction/memory-temporality-classifier.js +1 -1
  62. package/dist/internal/engine/observability/adapter.d.ts +1 -1
  63. package/dist/internal/engine/observability/memory-snapshot.d.ts +1 -1
  64. package/dist/internal/engine/observability/observable-embedder.d.ts +1 -1
  65. package/dist/internal/engine/observability/observable-llm-client.d.ts +1 -1
  66. package/dist/internal/engine/observability/observable-memory-store.d.ts +1 -1
  67. package/dist/internal/engine/observability/observable-memory-store.js +1 -1
  68. package/dist/internal/engine/observability/observable-retriever.d.ts +1 -1
  69. package/dist/internal/engine/observability/observable-retriever.js +1 -1
  70. package/dist/internal/engine/observability/runtime-diagnostics.d.ts +1 -1
  71. package/dist/internal/engine/observability/runtime-diagnostics.js +3 -3
  72. package/dist/internal/engine/operations/memory-tier-promoter.d.ts +1 -1
  73. package/dist/internal/engine/operations/runtime-audit-log.d.ts +2 -2
  74. package/dist/internal/engine/provider/provider-registration.d.ts +4 -4
  75. package/dist/internal/engine/provider/provider-row-renderer.d.ts +1 -1
  76. package/dist/internal/engine/reflection/reflection-command-hooks.d.ts +1 -1
  77. package/dist/internal/engine/reflection/reflection-command-hooks.js +1 -1
  78. package/dist/internal/engine/reflection/reflection-deps.d.ts +1 -1
  79. package/dist/internal/engine/reflection/reflection-embedded-generator.d.ts +1 -1
  80. package/dist/internal/engine/reflection/reflection-embedded-generator.js +1 -1
  81. package/dist/internal/engine/reflection/reflection-injection-hooks.d.ts +1 -1
  82. package/dist/internal/engine/reflection/reflection-injection-hooks.js +1 -1
  83. package/dist/internal/engine/reflection/reflection-lifecycle-hooks.d.ts +1 -1
  84. package/dist/internal/engine/reflection/reflection-lifecycle-hooks.js +1 -1
  85. package/dist/internal/engine/reflection/strategy-hook-runner.d.ts +3 -3
  86. package/dist/internal/engine/reflection/strategy-hook-runner.js +2 -2
  87. package/dist/internal/engine/retrieval/access-tracker.d.ts +1 -1
  88. package/dist/internal/engine/retrieval/retriever.d.ts +2 -2
  89. package/dist/internal/engine/retrieval/retriever.js +2 -2
  90. package/dist/internal/engine/shared/memory-kind-policy.d.ts +1 -1
  91. package/dist/internal/engine/shared/paths.d.ts +2 -2
  92. package/dist/internal/engine/shared/types.d.ts +2 -2
  93. package/dist/internal/engine/shared/types.js +1 -1
  94. package/dist/internal/engine/telemetry/observe-ledger.d.ts +1 -1
  95. package/dist/internal/model/llm-client.d.ts +2 -2
  96. package/dist/internal/model/llm-client.js +1 -1
  97. package/dist/internal/model/llm-mode-routing.d.ts +1 -1
  98. package/dist/internal/model/llm-mode-routing.js +1 -1
  99. package/dist/internal/store/maintenance.d.ts +2 -2
  100. package/dist/internal/store/maintenance.js +4 -4
  101. package/dist/internal/store/store.d.ts +2 -2
  102. package/dist/internal/store/store.js +1 -1
  103. package/dist/{llm-client-Z_VkmTsW.js → llm-client-Dq9FZPdC.js} +43 -10
  104. package/dist/{llm-client-9XCsnmf0.d.ts → llm-client-nWW1o1F6.d.ts} +1 -1
  105. package/dist/{log-site-catalog.generated-lc-iJczN.js → log-site-catalog.generated-Wze-GrOG.js} +130 -200
  106. package/dist/log-site-catalog.json +1 -1
  107. package/dist/{memory-kind-policy-DcEvUTKl.d.ts → memory-kind-policy-BMebgugU.d.ts} +1 -1
  108. package/dist/{memory-metadata-codec-CLtCCf-b.d.ts → memory-metadata-codec-H8BniJM3.d.ts} +1 -1
  109. package/dist/{memory-runtime-De1T9jTv.js → memory-runtime-B4A1t5DO.js} +182 -207
  110. package/dist/{memory-snapshot-BXB2APN0.d.ts → memory-snapshot-CKnQovB5.d.ts} +2 -2
  111. package/dist/{memory-store-base-yOAD7Ff8.d.ts → memory-store-base-BHYXgsCq.d.ts} +3 -3
  112. package/dist/{memory-temporality-classifier-s7TjoKB-.js → memory-temporality-classifier-CHcnOT5T.js} +2 -2
  113. package/dist/{memory-temporality-classifier-BxmM3FOb.d.ts → memory-temporality-classifier-Wi6WWeAj.d.ts} +1 -1
  114. package/dist/{memory-tier-promoter-DjJwYB4w.d.ts → memory-tier-promoter-m60-RlAj.d.ts} +1 -1
  115. package/dist/{memory-tool-dependencies-C8JSCWCz.js → memory-tool-dependencies-CAVm0Sy4.js} +1 -1
  116. package/dist/memory-tool-dependencies-D2fOC-KL.d.ts +14 -0
  117. package/dist/{model-call-table-CPyQfBJ6.js → model-call-table-DjfbmUDl.js} +12 -7
  118. package/dist/{observable-embedder-DCtHXucw.d.ts → observable-embedder-0FwxJMhJ.d.ts} +1 -1
  119. package/dist/{observable-llm-client-DykY0exK.d.ts → observable-llm-client-DY7w1Fj1.d.ts} +3 -3
  120. package/dist/{observable-memory-store-ZBTjMAHj.d.ts → observable-memory-store-C25Q_hoW.d.ts} +4 -4
  121. package/dist/{observable-retriever-f8ENkQnP.d.ts → observable-retriever-Cs9Bwzq6.d.ts} +5 -5
  122. package/dist/paths-obFSsJv3.d.ts +1 -0
  123. package/dist/{plugin-config-schema-D9riSXDg.js → plugin-config-schema-D-IoHmis.js} +22 -43
  124. package/dist/{plugin-config-schema-CsKKIHq9.d.ts → plugin-config-schema-DQh5njrS.d.ts} +8 -10
  125. package/dist/{profile-CxdMGvxU.d.ts → profile-CcvVR6K8.d.ts} +1 -1
  126. package/dist/{profile-section-writer-B54r7JN1.js → profile-section-writer-3apndAJu.js} +2 -2
  127. package/dist/{reflection-command-hooks-a1kgC2cr.js → reflection-command-hooks-B9UENMGV.js} +4 -3
  128. package/dist/{reflection-command-hooks-_B_XZBIz.d.ts → reflection-command-hooks-BRLqVNCi.d.ts} +4 -4
  129. package/dist/{reflection-deps-DQBHeGYK.d.ts → reflection-deps-C0TJ-gpU.d.ts} +2 -2
  130. package/dist/{reflection-embedded-generator-LmZQqGER.d.ts → reflection-embedded-generator-Cs59hWYr.d.ts} +3 -3
  131. package/dist/{reflection-embedded-generator-DEuTWrBh.js → reflection-embedded-generator-Do_r_LbU.js} +2 -1
  132. package/dist/{reflection-injection-hooks-CTDCwu2_.d.ts → reflection-injection-hooks-Cy4bRemm.d.ts} +4 -4
  133. package/dist/{reflection-lifecycle-hooks-eFUc2mcd.d.ts → reflection-lifecycle-hooks-C-lf00DB.d.ts} +3 -3
  134. package/dist/{rem-batch-executor-D42YWCNg.js → rem-batch-executor-BUgNyYLv.js} +1 -1
  135. package/dist/{rem-trigger-BKr4Qmhn.js → rem-trigger-pg_cCp5U.js} +74 -437
  136. package/dist/{retriever-BsjtyINJ.d.ts → retriever-2RJYAvlD.d.ts} +10 -52
  137. package/dist/{retriever-CsBW6MZv.js → retriever-C54bXeDh.js} +30 -452
  138. package/dist/{runtime-audit-log-C-L0v2HU.d.ts → runtime-audit-log-D2Hqk_kl.d.ts} +1 -1
  139. package/dist/{server-BPOT66a_.js → server-CByyXSvp.js} +4 -4
  140. package/dist/sidecar/main.js +2 -2
  141. package/dist/sno-station-mem-runtime-dependencies-ByI3b-wB.d.ts +31 -0
  142. package/dist/{sno-station-mem-runtime-dependencies-DES7ZvMt.js → sno-station-mem-runtime-dependencies-CgNS1dIM.js} +6 -6
  143. package/dist/{store-CukgAPqu.d.ts → store-Bz0y76cJ.d.ts} +1 -1
  144. package/dist/{store-DRwqWMTh.js → store-DNgKOGWP.js} +1 -1
  145. package/dist/{strategy-hook-runner-s8dAEQ3P.js → strategy-hook-runner-Bg6rBY71.js} +1 -1
  146. package/dist/{strategy-hook-runner-BlJxjMjC.d.ts → strategy-hook-runner-vbrWiDbK.d.ts} +7 -7
  147. package/dist/{types-C9Hngi-p.d.ts → types-El7jViCz.d.ts} +1 -1
  148. package/package.json +1 -1
  149. package/settings.default.json +9 -10
  150. package/skills/extract-atomic-memory/SKILL.md +4 -3
  151. package/skills/extract-atomic-memory/references/capture.md +3 -2
  152. package/dist/memory-tool-dependencies-BsaSVzC8.d.ts +0 -14
  153. package/dist/paths-m8yncZgm.d.ts +0 -1
  154. package/dist/sno-station-mem-runtime-dependencies-B47DIcei.d.ts +0 -31
package/README.md CHANGED
@@ -28,7 +28,7 @@ Who it is for: you do not use this package directly. Follow the
28
28
  plugins use to reach the service.
29
29
 
30
30
  ```bash
31
- npm install @snoai/memory@1.5.1
31
+ npm install @snoai/memory@1.7.0
32
32
  ```
33
33
 
34
34
  Needs Node.js 22.22.3+, 24.15.0+ or 25.9.0+. Licensed under Apache-2.0.
@@ -1,7 +1,7 @@
1
- import { v as MemoryMetadata } from "./types-C9Hngi-p.js";
2
- import { sn as RecallLifecycleConfig } from "./index-BGu91bjB.js";
3
- import { C as MemoryStore } from "./memory-store-base-yOAD7Ff8.js";
4
- import "./store-CukgAPqu.js";
1
+ import { v as MemoryMetadata } from "./types-El7jViCz.js";
2
+ import { tn as RecallLifecycleConfig } from "./index-CJrMFlAU.js";
3
+ import { C as MemoryStore } from "./memory-store-base-BHYXgsCq.js";
4
+ import "./store-Bz0y76cJ.js";
5
5
  //#region src/engine/retrieval/access-tracker.d.ts
6
6
  interface AccessMetadata {
7
7
  readonly accessCount: number;
@@ -1,5 +1,5 @@
1
- import { t as PluginConfig } from "./plugin-config-schema-CsKKIHq9.js";
2
- import "./types-C9Hngi-p.js";
1
+ import { t as PluginConfig } from "./plugin-config-schema-DQh5njrS.js";
2
+ import "./types-El7jViCz.js";
3
3
  import { t as ObserveLogger } from "./best-effort-BPZSzKk0.js";
4
4
  import { AgentId, EventType, JsonObject } from "@snoai/observability";
5
5
  //#region src/engine/observability/cost-aggregator.d.ts
@@ -48,8 +48,11 @@ var atomic_extraction_response_schema_default = {
48
48
  properties: {
49
49
  "claims_found": {
50
50
  "type": "array",
51
- "items": { "type": "string" },
52
- "description": "One short string for each claim the turns this call owns state, in the order they appear; empty when they state none. Written before records so the list is read before the array is opened."
51
+ "items": {
52
+ "type": "integer",
53
+ "minimum": 0
54
+ },
55
+ "description": "For each claim the turns this call owns state, in the order they appear, the turn_index it came from: a number, never the claim's words; empty when they state none. Written before records so the list is read before the array is opened."
53
56
  },
54
57
  "records": {
55
58
  "type": "array",
@@ -720,7 +723,7 @@ const captureFactSchema = wireRecordSchema.pick({
720
723
  ended_at_phrase: wireRecordSchema.shape.ended_at_phrase.unwrap()
721
724
  });
722
725
  const captureReplySchema = z.object({
723
- claims_found: z.array(z.string().min(1)),
726
+ claims_found: z.array(z.number().int().nonnegative()),
724
727
  decisions: z.array(z.object({
725
728
  turn_index: z.number().int().nonnegative(),
726
729
  progress_only: z.boolean()
@@ -1,9 +1,9 @@
1
- import { i as LlmClientConfig, l as ModelCallId, p as LlmRoutingConfig, r as LlmClient } from "./plugin-config-schema-CsKKIHq9.js";
1
+ import { i as LlmClientConfig, l as ModelCallId, p as LlmRoutingConfig, r as LlmClient } from "./plugin-config-schema-DQh5njrS.js";
2
2
  import { n as Locale } from "./locales-JxGmkG6t.js";
3
3
  import { qt as AdapterAMemoryView } from "./index-DPfJrOFD.js";
4
- import { C as MemoryStore, c as AtomicExtractionRunParameters, f as AtomicExtractionWriteResult, g as BeginAtomicExtractionChunkResult, r as AtomicExtractionLedgerKey, s as AtomicExtractionReprocessReason, x as MemoryRelationPredicate } from "./memory-store-base-yOAD7Ff8.js";
5
- import "./store-CukgAPqu.js";
6
- import "./llm-client-9XCsnmf0.js";
4
+ import { C as MemoryStore, c as AtomicExtractionRunParameters, f as AtomicExtractionWriteResult, g as BeginAtomicExtractionChunkResult, r as AtomicExtractionLedgerKey, s as AtomicExtractionReprocessReason, x as MemoryRelationPredicate } from "./memory-store-base-BHYXgsCq.js";
5
+ import "./store-Bz0y76cJ.js";
6
+ import "./llm-client-nWW1o1F6.js";
7
7
  import { z } from "zod";
8
8
  //#region src/engine/extraction/calendar-instruction.d.ts
9
9
  type CalendarPrecision = "year" | "month" | "week" | "day" | "minute";
@@ -3,21 +3,21 @@ import "./internal/engine/i18n/locales.js";
3
3
  import { $ as FIXED_MEMORY_SNO_EXTRACT_PROFILE, Q as FIXED_MEMORY_SNO_EXTRACT_CHAT } from "./signed-registry-constants-yq3DlG3B.js";
4
4
  import { redactSecrets } from "./internal/engine/security/redact.js";
5
5
  import { t as appendAuditEntry } from "./runtime-audit-log-DK6xAYxh.js";
6
- import { a as isTerminalLlmFailure, i as createLlmClient, n as LlmClientTerminalError } from "./llm-client-Z_VkmTsW.js";
6
+ import { a as isTerminalLlmFailure, i as createLlmClient, n as LlmClientTerminalError } from "./llm-client-Dq9FZPdC.js";
7
7
  import { n as readModelReplyJson } from "./model-reply-text-CKopStP2.js";
8
8
  import { resolveLlmRoute } from "./internal/model/llm-mode-routing.js";
9
9
  import { n as ATOMIC_EXTRACTION_SKILL_HASH, r as atomicExtractionSkillReference, t as ATOMIC_EXTRACTION_SKILL } from "./atomic-extraction-skill-CcXmuCqL.js";
10
10
  import { stripEnvelopeMetadata } from "./internal/engine/extraction/extraction-text-sanitizer.js";
11
11
  import { a as sessionZoneCarriedBy, t as calculateCalendarTime } from "./calendar-instruction-CzqZbAPG.js";
12
- import "./memory-temporality-classifier-s7TjoKB-.js";
13
- import { a as parseAtomicCaptureReply, c as atomic_extraction_response_schema_default, i as fallbackAtomicCapturedFact, l as excludeProgressRecords, n as ATOMIC_ENRICHMENT_RESPONSE_JSON_SCHEMA, o as parseAtomicEnrichmentReply, r as ATOMIC_EXTRACTION_RESPONSE_JSON_SCHEMA, s as parseAtomicExtractionReply, t as ATOMIC_CAPTURE_RESPONSE_JSON_SCHEMA } from "./atomic-extraction-reply-BJ9XV_9s.js";
12
+ import "./memory-temporality-classifier-CHcnOT5T.js";
13
+ import { a as parseAtomicCaptureReply, c as atomic_extraction_response_schema_default, i as fallbackAtomicCapturedFact, l as excludeProgressRecords, n as ATOMIC_ENRICHMENT_RESPONSE_JSON_SCHEMA, o as parseAtomicEnrichmentReply, r as ATOMIC_EXTRACTION_RESPONSE_JSON_SCHEMA, s as parseAtomicExtractionReply, t as ATOMIC_CAPTURE_RESPONSE_JSON_SCHEMA } from "./atomic-extraction-reply-DF_S9ROg.js";
14
14
  import { adapterAViewFromRecord, isAdapterAVerdictReply, parseAdapterAChatVerdict, renderAdapterAChatPrompt, renderAdapterAPrompt } from "./internal/engine/rem/index.js";
15
15
  import { n as state_vocabulary_default, r as attribute_dictionary_default, t as relations } from "./relation-dictionary-Cev1kyLe.js";
16
16
  import { g as randomUUID$1 } from "./memory-store-shared-pOb59ScU.js";
17
- import { b as normalizeMemoryRelationPredicate, d as normalizeEntityName, f as recordAtomicEntityIdentityJournal, g as readAtomicArrivalRetirementCandidateSet, h as journalAtomicArrivalRetirementRefusal, m as closeAtomicArrivalRetirementTargets, u as listAtomicMemoryEntityCandidates, v as AtomicExtractionCompletedElsewhere } from "./store-DRwqWMTh.js";
17
+ import { b as normalizeMemoryRelationPredicate, d as normalizeEntityName, f as recordAtomicEntityIdentityJournal, g as readAtomicArrivalRetirementCandidateSet, h as journalAtomicArrivalRetirementRefusal, m as closeAtomicArrivalRetirementTargets, u as listAtomicMemoryEntityCandidates, v as AtomicExtractionCompletedElsewhere } from "./store-DNgKOGWP.js";
18
18
  import { o as normalizeTopicToSectionName } from "./b-profile-section-dictionary-provider-BHkoNqgk.js";
19
19
  import { r as recordTokenCounter } from "./memory-store-write-validation-B_hDG2zf.js";
20
- import { i as prepareDeterministicTaskLifecycleWrite, t as PROFILE_IDENTITY_SECTION } from "./profile-section-writer-B54r7JN1.js";
20
+ import { i as prepareDeterministicTaskLifecycleWrite, t as PROFILE_IDENTITY_SECTION } from "./profile-section-writer-3apndAJu.js";
21
21
  import { z } from "zod";
22
22
  import { countTokens } from "@snoai/chunking";
23
23
  import { createLogger, currentLogContext, privateLogReference, withLogContext } from "@snoai/utils/logger";
@@ -2604,10 +2604,49 @@ function parseAtomicConversationTurns(conversationText) {
2604
2604
  if (current) turns.push(current);
2605
2605
  return turns;
2606
2606
  }
2607
+ /**
2608
+ * A capture carries a whole session, so one window over the input budget would be left pending
2609
+ * unextracted: cut it into consecutive windows of whole user-started groups that each fit. A single
2610
+ * group over the budget stays alone.
2611
+ */
2612
+ function captureBatchWindows(turns, userIndexes) {
2613
+ const window = (from, until) => ({
2614
+ turns: turns.slice(from, until),
2615
+ contextTurns: [],
2616
+ followingTurns: [],
2617
+ startIndex: from,
2618
+ ownedTurnIndexes: Array.from({ length: until - from }, (_, offset) => from + offset)
2619
+ });
2620
+ const fits = (from, until) => {
2621
+ const slice = turns.slice(from, until);
2622
+ return Math.ceil(JSON.stringify({
2623
+ context: [],
2624
+ following: [],
2625
+ turns: slice
2626
+ }).length / 4) <= 4096 && countTokens(JSON.stringify({
2627
+ turns: numberAtomicTurns(slice),
2628
+ preceding: [],
2629
+ following: []
2630
+ })) <= 4096;
2631
+ };
2632
+ const starts = [0, ...userIndexes.filter((index) => index > 0)];
2633
+ const windows = [];
2634
+ let from = 0;
2635
+ for (let group = 1; group < starts.length; group += 1) {
2636
+ const start = starts[group] ?? turns.length;
2637
+ if (!fits(from, starts[group + 1] ?? turns.length)) {
2638
+ windows.push(window(from, start));
2639
+ from = start;
2640
+ }
2641
+ }
2642
+ windows.push(window(from, turns.length));
2643
+ return windows;
2644
+ }
2607
2645
  function atomicConversationWindows(turns, captureBatch = false) {
2608
2646
  const userIndexes = turns.flatMap((turn, index) => turn.role === "user" ? [index] : []);
2609
2647
  if (userIndexes.length === 0) return [];
2610
- if (captureBatch || userIndexes.length <= 2) return [{
2648
+ if (captureBatch) return captureBatchWindows(turns, userIndexes);
2649
+ if (userIndexes.length <= 2) return [{
2611
2650
  turns: [...turns],
2612
2651
  contextTurns: [],
2613
2652
  followingTurns: [],
@@ -1,4 +1,4 @@
1
- import { g as ProductMode } from "./plugin-config-schema-CsKKIHq9.js";
1
+ import { g as ProductMode } from "./plugin-config-schema-DQh5njrS.js";
2
2
  import { n as Locale } from "./locales-JxGmkG6t.js";
3
3
  import { z } from "zod";
4
4
  //#region src/engine/extraction/b-profile-section-registry.d.ts
@@ -1,4 +1,4 @@
1
- import { h as MemoryCategory } from "./types-C9Hngi-p.js";
1
+ import { h as MemoryCategory } from "./types-El7jViCz.js";
2
2
  //#region src/engine/extraction/capture-policy-detector.d.ts
3
3
  declare const PROMPT_INJECTION_PATTERNS: RegExp[];
4
4
  /** Implements looks like prompt injection as the local memory capture policy operation. */
package/dist/client.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Discovery } from "./internal/contract/discovery.js";
2
- import { B as Registration, F as Inspection, H as Turn, I as JsonValue, L as Message, N as HostEvent, P as InitRegistration, R as Mutation, U as UsageSignal, V as ScopeCtx, n as MemoryContract, rt as DegradedReason, tt as ContractError, y as ContractOutputs, z as RecallOptions } from "./index-GoYmsx8b.js";
2
+ import { B as Registration, F as Inspection, H as Turn, I as JsonValue, L as Message, N as HostEvent, P as InitRegistration, R as Mutation, U as UsageSignal, V as ScopeCtx, n as MemoryContract, rt as DegradedReason, tt as ContractError, y as ContractOutputs, z as RecallOptions } from "./index-Df9420Pl.js";
3
3
  //#region src/contract/client.d.ts
4
4
  export interface ConnectOptions {
5
5
  skinId: string;
@@ -159,6 +159,14 @@ const CODING_SKIN_WORKER_LIFETIME_MS = 54e4;
159
159
  const CODING_SKIN_RETRY_DELAYS_MS = [2e3, 1e4];
160
160
  const CODING_SKIN_MAX_ATTEMPTS = 3;
161
161
  const CODING_SKIN_MAX_PENDING_CAPTURES = 1e3;
162
+ /** A session's turns wait in the spool until the session ends or has had no new turn for this long, then go together. */
163
+ const CODING_SKIN_CAPTURE_QUIET_MS = 18e5;
164
+ /**
165
+ * Input per capture, estimated as UTF-8 bytes / 3 (at or above the sidecar's CJK-aware count). It keeps one capture to
166
+ * about one 4,096-token extraction window, so a capture ends well inside its route deadline and a failed one retries
167
+ * a small part; the rest is room for the window's JSON framing.
168
+ */
169
+ const CODING_SKIN_CAPTURE_MAX_INPUT_TOKENS = 3500;
162
170
  const CODING_SKIN_IMPORT_INTERVAL_MS = 2010;
163
171
  const CODING_SKIN_CHILD_MAX_BUFFER_BYTES = 8388608;
164
172
  const CODING_SKIN_MANUAL_SESSION_ID = "manual";
@@ -256,4 +264,4 @@ function isCodingSkinHookCommand(command, subcommand, harness) {
256
264
  return basename(snoProgramPath(program)) === "sno";
257
265
  }
258
266
  //#endregion
259
- export { isAgentText as C, foldActivity as S, isCodingSkinHookCommand as _, CODING_SKIN_IMPORT_INTERVAL_MS as a, EMPTY_ACTIVITY_CURSOR as b, CODING_SKIN_MAX_ATTEMPTS as c, CODING_SKIN_RECALL_ITEM_MAX_CHARS as d, CODING_SKIN_RECALL_SENTENCE_MAX_CHARS as f, codingSkinHookCommand as g, CODING_SKIN_WORKER_LIFETIME_MS as h, CODING_SKIN_HOOKS as i, CODING_SKIN_MAX_PENDING_CAPTURES as l, CODING_SKIN_SESSION_QUERY as m, CODING_SKIN_CHILD_MAX_BUFFER_BYTES as n, CODING_SKIN_LEDGER_MAX_CHARS as o, CODING_SKIN_RETRY_DELAYS_MS as p, CODING_SKIN_CURSOR_HOOKS as r, CODING_SKIN_MANUAL_SESSION_ID as s, CODING_SKIN_CHILD_DEADLINE_MS as t, CODING_SKIN_MODEL_COMMANDS as u, shellQuote as v, readNewLines as w, activityCursorSchema as x, snoProgramPath as y };
267
+ 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 };
@@ -62,6 +62,14 @@ export declare const CODING_SKIN_WORKER_LIFETIME_MS: number;
62
62
  export declare const CODING_SKIN_RETRY_DELAYS_MS: readonly [2_000, 10_000];
63
63
  export declare const CODING_SKIN_MAX_ATTEMPTS = 3;
64
64
  export declare const CODING_SKIN_MAX_PENDING_CAPTURES = 1e3;
65
+ /** A session's turns wait in the spool until the session ends or has had no new turn for this long, then go together. */
66
+ export declare const CODING_SKIN_CAPTURE_QUIET_MS: number;
67
+ /**
68
+ * Input per capture, estimated as UTF-8 bytes / 3 (at or above the sidecar's CJK-aware count). It keeps one capture to
69
+ * about one 4,096-token extraction window, so a capture ends well inside its route deadline and a failed one retries
70
+ * a small part; the rest is room for the window's JSON framing.
71
+ */
72
+ export declare const CODING_SKIN_CAPTURE_MAX_INPUT_TOKENS = 3500;
65
73
  export declare const CODING_SKIN_IMPORT_INTERVAL_MS = 2010;
66
74
  export declare const CODING_SKIN_CHILD_MAX_BUFFER_BYTES: number;
67
75
  export declare const CODING_SKIN_MANUAL_SESSION_ID = "manual";
@@ -1,5 +1,5 @@
1
1
  import { appendObserveLedgerRows } from "./internal/engine/telemetry/observe-ledger.js";
2
2
  import { SKILL_CATEGORIES, skillVersionFor } from "./internal/config/skill-categories.js";
3
3
  import { HOST_MODEL_CALLBACK_HOST, HOST_MODEL_CALLBACK_PATH, HOST_MODEL_DEADLINE_HEADER } from "./internal/config/skin-defaults.js";
4
- import { C as isAgentText, S as foldActivity, _ as isCodingSkinHookCommand, a as CODING_SKIN_IMPORT_INTERVAL_MS, b as EMPTY_ACTIVITY_CURSOR, c as CODING_SKIN_MAX_ATTEMPTS, d as CODING_SKIN_RECALL_ITEM_MAX_CHARS, f as CODING_SKIN_RECALL_SENTENCE_MAX_CHARS, g as codingSkinHookCommand, h as CODING_SKIN_WORKER_LIFETIME_MS, i as CODING_SKIN_HOOKS, l as CODING_SKIN_MAX_PENDING_CAPTURES, m as CODING_SKIN_SESSION_QUERY, n as CODING_SKIN_CHILD_MAX_BUFFER_BYTES, o as CODING_SKIN_LEDGER_MAX_CHARS, p as CODING_SKIN_RETRY_DELAYS_MS, r as CODING_SKIN_CURSOR_HOOKS, s as CODING_SKIN_MANUAL_SESSION_ID, t as CODING_SKIN_CHILD_DEADLINE_MS, u as CODING_SKIN_MODEL_COMMANDS, v as shellQuote, w as readNewLines, x as activityCursorSchema, y as snoProgramPath } from "./coding-skin-azRXA51Z.js";
5
- export { CODING_SKIN_CHILD_DEADLINE_MS, CODING_SKIN_CHILD_MAX_BUFFER_BYTES, CODING_SKIN_CURSOR_HOOKS, CODING_SKIN_HOOKS, CODING_SKIN_IMPORT_INTERVAL_MS, CODING_SKIN_LEDGER_MAX_CHARS, CODING_SKIN_MANUAL_SESSION_ID, CODING_SKIN_MAX_ATTEMPTS, CODING_SKIN_MAX_PENDING_CAPTURES, CODING_SKIN_MODEL_COMMANDS, CODING_SKIN_RECALL_ITEM_MAX_CHARS, CODING_SKIN_RECALL_SENTENCE_MAX_CHARS, CODING_SKIN_RETRY_DELAYS_MS, CODING_SKIN_SESSION_QUERY, CODING_SKIN_WORKER_LIFETIME_MS, EMPTY_ACTIVITY_CURSOR, HOST_MODEL_CALLBACK_HOST, HOST_MODEL_CALLBACK_PATH, HOST_MODEL_DEADLINE_HEADER, SKILL_CATEGORIES, activityCursorSchema, appendObserveLedgerRows, codingSkinHookCommand, foldActivity, isAgentText, isCodingSkinHookCommand, readNewLines, shellQuote, skillVersionFor, snoProgramPath };
4
+ import { C as activityCursorSchema, E as readNewLines, S as EMPTY_ACTIVITY_CURSOR, T as isAgentText, _ as CODING_SKIN_WORKER_LIFETIME_MS, a as CODING_SKIN_CURSOR_HOOKS, b as shellQuote, c as CODING_SKIN_LEDGER_MAX_CHARS, d as CODING_SKIN_MAX_PENDING_CAPTURES, f as CODING_SKIN_MODEL_COMMANDS, g as CODING_SKIN_SESSION_QUERY, h as CODING_SKIN_RETRY_DELAYS_MS, i as CODING_SKIN_CHILD_MAX_BUFFER_BYTES, l as CODING_SKIN_MANUAL_SESSION_ID, m as CODING_SKIN_RECALL_SENTENCE_MAX_CHARS, n as CODING_SKIN_CAPTURE_QUIET_MS, o as CODING_SKIN_HOOKS, p as CODING_SKIN_RECALL_ITEM_MAX_CHARS, r as CODING_SKIN_CHILD_DEADLINE_MS, s as CODING_SKIN_IMPORT_INTERVAL_MS, t as CODING_SKIN_CAPTURE_MAX_INPUT_TOKENS, u as CODING_SKIN_MAX_ATTEMPTS, v as codingSkinHookCommand, w as foldActivity, x as snoProgramPath, y as isCodingSkinHookCommand } from "./coding-skin-AW1UPUPY.js";
5
+ export { CODING_SKIN_CAPTURE_MAX_INPUT_TOKENS, CODING_SKIN_CAPTURE_QUIET_MS, CODING_SKIN_CHILD_DEADLINE_MS, CODING_SKIN_CHILD_MAX_BUFFER_BYTES, CODING_SKIN_CURSOR_HOOKS, CODING_SKIN_HOOKS, CODING_SKIN_IMPORT_INTERVAL_MS, CODING_SKIN_LEDGER_MAX_CHARS, CODING_SKIN_MANUAL_SESSION_ID, CODING_SKIN_MAX_ATTEMPTS, CODING_SKIN_MAX_PENDING_CAPTURES, CODING_SKIN_MODEL_COMMANDS, CODING_SKIN_RECALL_ITEM_MAX_CHARS, CODING_SKIN_RECALL_SENTENCE_MAX_CHARS, CODING_SKIN_RETRY_DELAYS_MS, CODING_SKIN_SESSION_QUERY, CODING_SKIN_WORKER_LIFETIME_MS, EMPTY_ACTIVITY_CURSOR, HOST_MODEL_CALLBACK_HOST, HOST_MODEL_CALLBACK_PATH, HOST_MODEL_DEADLINE_HEADER, SKILL_CATEGORIES, activityCursorSchema, appendObserveLedgerRows, codingSkinHookCommand, foldActivity, isAgentText, isCodingSkinHookCommand, readNewLines, shellQuote, skillVersionFor, snoProgramPath };
@@ -641,7 +641,7 @@ async function ensureModelDownloaded(opts) {
641
641
  *
642
642
  * Self-contained: all params via constructor; no app-level config dependency.
643
643
  */
644
- const log$1$1 = createLogger("embedder:local");
644
+ const log$1 = createLogger("embedder:local");
645
645
  let sharedExtractor;
646
646
  let sharedLoading$1;
647
647
  let sharedRefCount = 0;
@@ -761,7 +761,7 @@ var LocalEmbedProvider = class {
761
761
  }
762
762
  async initPipeline() {
763
763
  const { pipeline } = await import("@huggingface/transformers");
764
- log$1$1.info("loading ONNX model", {
764
+ log$1.info("loading ONNX model", {
765
765
  model: this.modelId,
766
766
  cacheDir: this.cacheDir,
767
767
  dtype: this.dtype,
@@ -793,7 +793,7 @@ var LocalEmbedProvider = class {
793
793
  throw error;
794
794
  });
795
795
  const durationMs = Math.round(performance.now() - t0);
796
- log$1$1.info("ONNX model loaded", {
796
+ log$1.info("ONNX model loaded", {
797
797
  durationMs,
798
798
  model: this.modelId
799
799
  }, {
@@ -806,7 +806,7 @@ var LocalEmbedProvider = class {
806
806
  } catch (error) {
807
807
  const msg = error instanceof Error ? error.message : String(error);
808
808
  if (msg.includes("no such file") || msg.includes("ENOENT") || msg.includes("not found") || msg.includes("Could not locate file")) {
809
- log$1$1.error("ONNX model not found", {
809
+ log$1.error("ONNX model not found", {
810
810
  cacheDir: this.cacheDir,
811
811
  model: this.modelId
812
812
  }, {
@@ -817,7 +817,7 @@ var LocalEmbedProvider = class {
817
817
  });
818
818
  throw new ModelNotFoundError(this.modelId);
819
819
  }
820
- log$1$1.error("ONNX model init failed", { error }, {
820
+ log$1.error("ONNX model init failed", { error }, {
821
821
  event_name: "embedder.local.provider.initpipeline",
822
822
  file: "packages/embedder/src/local-provider.ts",
823
823
  function: "initPipeline",
@@ -849,7 +849,7 @@ var LocalEmbedProvider = class {
849
849
  }
850
850
  async embedDocuments(texts) {
851
851
  if (texts.length === 0) return [];
852
- log$1$1.debug("batch local embedding", { count: texts.length }, {
852
+ log$1.debug("batch local embedding", { count: texts.length }, {
853
853
  event_name: "embedder.local.provider.embeddocuments",
854
854
  file: "packages/embedder/src/local-provider.ts",
855
855
  function: "embedDocuments",
@@ -865,7 +865,7 @@ var LocalEmbedProvider = class {
865
865
  }
866
866
  async dispose() {
867
867
  if (this._disposed) return;
868
- log$1$1.debug("disposing local embedding provider", {}, {
868
+ log$1.debug("disposing local embedding provider", {}, {
869
869
  event_name: "embedder.local.provider.dispose",
870
870
  file: "packages/embedder/src/local-provider.ts",
871
871
  function: "dispose",
@@ -1326,32 +1326,15 @@ const IMPORTANCE_WEIGHT_BASE = .7;
1326
1326
  /** Minimum time decay multiplier (floor for very old entries) */
1327
1327
  const TIME_DECAY_FLOOR = .6;
1328
1328
  /**
1329
- * Relevance vs diversity tradeoff for MMR (0.7 = 70% relevance, 30% diversity).
1329
+ * Relevance vs diversity tradeoff for MMR (0.9 = 90% relevance, 10% diversity).
1330
1330
  * `applyMmrDiversity` normalizes the relevance term to [0,1] (batch-max) before
1331
1331
  * applying this weight — without that normalization, the shrinker chain above
1332
1332
  * compresses relevance so far below the [0,1] cosine-similarity diversity term
1333
1333
  * that this ratio was moot (diversity always won). Fixed 2026-07-05.
1334
1334
  */
1335
- const MMR_LAMBDA = .7;
1336
- /** Weight for fusion score in rerank blend */
1337
- const RERANK_BLEND_VECTOR = .3;
1338
- /** Weight for cross-encoder score in rerank blend */
1339
- const RERANK_BLEND_CROSS = .7;
1340
- /**
1341
- * Fusion-score weight in local cosine-blend rerank.
1342
- *
1343
- * The fused score keeps a keyword-only hit at its full keyword score, so a memory sharing one word with the query
1344
- * outranks the one that answers it; at 0.7 the local ranking passed that order through almost unchanged. Measured
1345
- * 2026-10-15 on LoCoMo (1,540 questions, the product store and retriever, weights fitted on half the conversations
1346
- * and checked on the other half): the right memory in the first five went from 27% to 68% in English and from 9% to
1347
- * 58% in a Chinese translation at 0.1 / 0.9. A candidate with no stored vector keeps its fused score and would now
1348
- * rank high; none of 27,064 candidates in 299 real local rankings lacked one.
1349
- */
1350
- const LIGHTWEIGHT_FUSION_WEIGHT = .1;
1351
- /** Cosine-similarity weight in local cosine-blend rerank */
1352
- const LIGHTWEIGHT_COSINE_WEIGHT = .9;
1353
- /** Default timeout for rerank API calls in milliseconds */
1354
- const DEFAULT_RERANK_TIMEOUT_MS = 15e3;
1335
+ const MMR_LAMBDA = .9;
1336
+ /** Maximum wait for the local reranker in milliseconds; caller deadlines may be earlier. */
1337
+ const DEFAULT_RERANK_TIMEOUT_MS = 2e3;
1355
1338
  /**
1356
1339
  * Maximum allowed list query page size; also caps each search branch
1357
1340
  * (`memory-store-search-api.ts` clamps both the semantic and the keyword branch to it), so it
@@ -1482,8 +1465,6 @@ const ADJACENCY_BONUS_CAP = DEFAULT_AGGREGATION_CONFIG.adjacencyBonusCap;
1482
1465
  const BONUS_TOTAL_INVARIANT = DEFAULT_AGGREGATION_CONFIG.bonusTotalInvariant;
1483
1466
  /** Filename for per-QA retrieval traces emitted during eval runs. */
1484
1467
  const EVAL_QA_TRACES_FILENAME = "qa_traces.jsonl";
1485
- /** Multiplicative penalty applied to unreturned candidates after rerank. */
1486
- const LIGHTWEIGHT_RERANK_PENALTY = .8;
1487
1468
  /**
1488
1469
  * Zod schema for the `recallLifecycle` config block. The whole block defaults
1489
1470
  * to `{}` so existing configs without it continue to parse and behave
@@ -1707,6 +1688,11 @@ const extractionConfigSchema = z.object({ llm: z.object({
1707
1688
  baseURL: z.string().optional(),
1708
1689
  /** Overrides provider-native env if set. */
1709
1690
  apiKey: z.string().optional(),
1691
+ usageClass: z.enum([
1692
+ "product",
1693
+ "research",
1694
+ "ops"
1695
+ ]).optional(),
1710
1696
  timeoutMs: z.number().int().min(1e3).max(3e5).default(3e4)
1711
1697
  }).strict().prefault({}) }).strict().prefault({});
1712
1698
  const memoryReflectionConfigSchema = z.object({
@@ -1786,7 +1772,20 @@ const observeConfigSchema = z.object({
1786
1772
  });
1787
1773
  //#endregion
1788
1774
  //#region config/plugin-config-retrieval-schema.ts
1789
- const log$1 = createLogger("sno-station-mem:config:retrieval");
1775
+ const log = createLogger("sno-station-mem:config:retrieval");
1776
+ /** Published remote selections now run the existing local pipeline. */
1777
+ const rerankModeSchema = z.preprocess((value) => {
1778
+ if (value !== "cross-encoder") return value;
1779
+ log.info("remote reranking retired; using the local reranker", { cause: "remote-rerank-retired" }, {
1780
+ event_name: "memory.rerank.retired",
1781
+ file: "packages/memory/config/plugin-config-retrieval-schema.ts",
1782
+ function: "rerankModeSchema",
1783
+ site_id: "memory.rerank.retired"
1784
+ });
1785
+ return "lightweight";
1786
+ }, z.enum(["lightweight", "none"]));
1787
+ /** Accept published wait settings, but use no more than the local search budget. */
1788
+ const rerankTimeoutSchema = z.number().int().min(1e3).max(12e4).transform((value) => Math.min(value, DEFAULT_RERANK_TIMEOUT_MS));
1790
1789
  const retrievalConfigSchema = z.object({
1791
1790
  mode: z.enum(["precision-recall", "vector"]).default("precision-recall"),
1792
1791
  /**
@@ -1799,14 +1798,9 @@ const retrievalConfigSchema = z.object({
1799
1798
  vectorWeight: z.number().min(0).max(1).default(DEFAULT_VECTOR_WEIGHT),
1800
1799
  bm25Weight: z.number().min(0).max(1).default(DEFAULT_BM25_WEIGHT),
1801
1800
  minScore: z.number().min(0).max(1).default(0),
1802
- rerank: z.enum([
1803
- "cross-encoder",
1804
- "lightweight",
1805
- "none"
1806
- ]).default("lightweight"),
1801
+ rerank: rerankModeSchema.default("lightweight"),
1807
1802
  candidatePoolSize: z.number().int().min(10).max(2e3).default(64),
1808
- rerankApiKey: z.string().optional(),
1809
- rerankTimeoutMs: z.number().int().min(1e3).max(12e4).default(DEFAULT_RERANK_TIMEOUT_MS),
1803
+ rerankTimeoutMs: rerankTimeoutSchema.default(DEFAULT_RERANK_TIMEOUT_MS),
1810
1804
  recencyHalfLifeDays: z.number().min(0).max(365).default(14),
1811
1805
  recencyWeight: z.number().min(0).max(RECENCY_WEIGHT_MAX).default(RECENCY_WEIGHT),
1812
1806
  /** Drop memories past their valid_until timestamp (default OFF — needs A/B eval) */
@@ -1818,10 +1812,6 @@ const retrievalConfigSchema = z.object({
1818
1812
  lengthNormAnchor: z.number().int().min(0).max(5e3).default(0),
1819
1813
  hardMinScore: z.number().min(0).max(1).default(0),
1820
1814
  timeDecayHalfLifeDays: z.number().min(0).max(365).default(60),
1821
- /** Weight for fusion score in rerank blend */
1822
- rerankBlendVector: z.number().min(0).max(1).optional(),
1823
- /** Weight for cross-encoder score in rerank blend */
1824
- rerankBlendCross: z.number().min(0).max(1).optional(),
1825
1815
  /** Fusion-score weight when rerank="lightweight" (local cosine blend) */
1826
1816
  lightweightFusionWeight: z.number().min(0).max(1).optional(),
1827
1817
  /** Cosine-score weight when rerank="lightweight" (local cosine blend) */
@@ -1832,41 +1822,11 @@ const retrievalConfigSchema = z.object({
1832
1822
  timeDecayFloor: z.number().min(0).max(1).optional(),
1833
1823
  /** Relevance vs diversity tradeoff (default: 0.7) */
1834
1824
  mmrLambda: z.number().min(0).max(1).optional(),
1835
- /** Address of Sno's reranker (the Sno GPU address plus `/rerank`). */
1836
- rerankEndpoint: z.string().optional(),
1837
- /** Cap on candidates sent to Sno's reranker in total */
1838
- rerankMaxCandidates: z.number().int().min(1).max(2e3).optional(),
1839
1825
  /** Scaling factor for access-based reinforcement (0 = disabled, default: 0.5) */
1840
1826
  reinforcementFactor: z.number().min(0).max(5).default(.5),
1841
1827
  /** Hard cap: effective half-life <= baseHalfLife * maxHalfLifeMultiplier (default: 3) */
1842
1828
  maxHalfLifeMultiplier: z.number().min(1).max(10).default(3)
1843
- }).prefault({}).transform((ret, ctx) => {
1844
- if (ret.rerank === "none") return ret;
1845
- if (ret.rerankEndpoint !== void 0) try {
1846
- new URL(ret.rerankEndpoint);
1847
- } catch {
1848
- ctx.addIssue({
1849
- code: z.ZodIssueCode.custom,
1850
- path: ["rerankEndpoint"],
1851
- message: `Invalid rerankEndpoint URL: "${ret.rerankEndpoint}"`
1852
- });
1853
- }
1854
- const rerankApiKey = ret.rerankApiKey;
1855
- if (ret.rerank === "cross-encoder" && !rerankApiKey?.trim()) {
1856
- log$1.error("memory.rerank.key.missing", { cause: "missing-rerank-key" }, {
1857
- event_name: "memory.rerank.key.missing",
1858
- file: "packages/memory/config/plugin-config-retrieval-schema.ts",
1859
- function: "retrievalConfigSchema",
1860
- site_id: "memory.rerank.key.missing"
1861
- });
1862
- ctx.addIssue({
1863
- code: z.ZodIssueCode.custom,
1864
- path: ["rerankApiKey"],
1865
- message: "retrieval.rerankApiKey is required for cross-encoder reranking"
1866
- });
1867
- }
1868
- return ret;
1869
- });
1829
+ }).prefault({});
1870
1830
  //#endregion
1871
1831
  //#region config/session-strategy.ts
1872
1832
  /** @file session-strategy.ts
@@ -1978,6 +1938,11 @@ const extract = {
1978
1938
  "agent-native": "host",
1979
1939
  "rem-enhanced": "sno-gpu"
1980
1940
  };
1941
+ const extractHost = {
1942
+ "local-first": "off",
1943
+ "agent-native": "host",
1944
+ "rem-enhanced": "host"
1945
+ };
1981
1946
  const host = {
1982
1947
  "local-first": "off",
1983
1948
  "agent-native": "host",
@@ -2027,7 +1992,7 @@ const MODEL_CALLS = {
2027
1992
  E2: {
2028
1993
  description: "fact enrichment",
2029
1994
  occasion: "memoryExtract",
2030
- destinations: extract,
1995
+ destinations: extractHost,
2031
1996
  snoPreset: chat,
2032
1997
  transport: {
2033
1998
  host: "agent-host-seam",
@@ -2063,7 +2028,7 @@ const MODEL_CALLS = {
2063
2028
  E4: {
2064
2029
  description: "compound record split",
2065
2030
  occasion: "memoryExtract",
2066
- destinations: extract,
2031
+ destinations: extractHost,
2067
2032
  snoPreset: chat,
2068
2033
  transport: {
2069
2034
  host: "agent-host-seam",
@@ -2081,7 +2046,7 @@ const MODEL_CALLS = {
2081
2046
  E5: {
2082
2047
  description: "missing half recovery",
2083
2048
  occasion: "memoryExtract",
2084
- destinations: extract,
2049
+ destinations: extractHost,
2085
2050
  snoPreset: chat,
2086
2051
  transport: {
2087
2052
  host: "agent-host-seam",
@@ -2099,7 +2064,7 @@ const MODEL_CALLS = {
2099
2064
  E6: {
2100
2065
  description: "subject check",
2101
2066
  occasion: "memoryExtract",
2102
- destinations: extract,
2067
+ destinations: extractHost,
2103
2068
  snoPreset: chat,
2104
2069
  transport: {
2105
2070
  host: "agent-host-seam",
@@ -2117,7 +2082,7 @@ const MODEL_CALLS = {
2117
2082
  E7: {
2118
2083
  description: "unresolved subject recovery",
2119
2084
  occasion: "memoryExtract",
2120
- destinations: extract,
2085
+ destinations: extractHost,
2121
2086
  snoPreset: chat,
2122
2087
  transport: {
2123
2088
  host: "agent-host-seam",
@@ -2135,7 +2100,7 @@ const MODEL_CALLS = {
2135
2100
  E8: {
2136
2101
  description: "same entity judgment",
2137
2102
  occasion: "memoryExtract",
2138
- destinations: extract,
2103
+ destinations: extractHost,
2139
2104
  snoPreset: chat,
2140
2105
  transport: {
2141
2106
  host: "agent-host-seam",
@@ -2207,7 +2172,7 @@ const MODEL_CALLS = {
2207
2172
  E12: {
2208
2173
  description: "background state keying",
2209
2174
  occasion: "memoryExtract",
2210
- destinations: extract,
2175
+ destinations: extractHost,
2211
2176
  snoPreset: chat,
2212
2177
  transport: {
2213
2178
  host: "agent-host-seam",
@@ -2579,7 +2544,6 @@ function modelCallDestination(callId, mode, modelCalls) {
2579
2544
  }
2580
2545
  //#endregion
2581
2546
  //#region config/settings.ts
2582
- const log = createLogger("sno-station-mem:config:settings");
2583
2547
  const destination = z.enum([
2584
2548
  "off",
2585
2549
  "host",
@@ -2602,15 +2566,14 @@ const settingsSchema = z.strictObject({
2602
2566
  baseUrl: z.string(),
2603
2567
  apiKey: z.string()
2604
2568
  }),
2605
- rerank: z.strictObject({
2606
- mode: z.enum([
2607
- "lightweight",
2608
- "cross-encoder",
2609
- "none"
2610
- ]),
2611
- timeoutMs: z.number().int().min(1e3).max(12e4),
2612
- maxCandidates: z.number().int().min(1).max(2e3)
2613
- }),
2569
+ rerank: z.preprocess((value) => {
2570
+ if (typeof value !== "object" || value === null || Array.isArray(value) || !("maxCandidates" in value)) return value;
2571
+ const { maxCandidates: _retired, ...current } = value;
2572
+ return current;
2573
+ }, z.strictObject({
2574
+ mode: rerankModeSchema,
2575
+ timeoutMs: rerankTimeoutSchema
2576
+ })),
2614
2577
  store: z.strictObject({
2615
2578
  path: z.string(),
2616
2579
  encryptionKey: z.string().min(1).regex(/^[0-9a-f]{64}$/u)
@@ -2699,9 +2662,8 @@ function defaultSettings() {
2699
2662
  apiKey: ""
2700
2663
  },
2701
2664
  rerank: {
2702
- mode: "cross-encoder",
2703
- timeoutMs: engine.retrieval.rerankTimeoutMs,
2704
- maxCandidates: 64
2665
+ mode: "lightweight",
2666
+ timeoutMs: engine.retrieval.rerankTimeoutMs
2705
2667
  },
2706
2668
  store: {
2707
2669
  path: "",
@@ -2768,32 +2730,7 @@ function defaultSettings() {
2768
2730
  }
2769
2731
  };
2770
2732
  }
2771
- /**
2772
- * Recall ranking is local, or Sno's reranker: its address is the Sno GPU address and its key is the Sno GPU key. Only
2773
- * REM Enhanced calls Sno GPU; any other mode, or no key yet, ranks locally, which is the configured strategy, not an error.
2774
- */
2775
- function rerankSettings(settings) {
2776
- const { rerank, snoGpu } = settings;
2777
- let endpoint;
2778
- try {
2779
- endpoint = new URL("rerank", snoGpu.baseUrl.endsWith("/") ? snoGpu.baseUrl : `${snoGpu.baseUrl}/`).toString();
2780
- } catch {
2781
- log.warn("memory.rerank.sno_gpu_address.invalid", { cause: "snoGpu.baseUrl is not a valid address; recall ranks locally" }, {
2782
- event_name: "memory.rerank.sno_gpu_address.invalid",
2783
- file: "packages/memory/config/settings.ts",
2784
- function: "rerankSettings",
2785
- site_id: "memory.rerank.sno_gpu_address.invalid"
2786
- });
2787
- }
2788
- const local = rerank.mode !== "cross-encoder" || settings.mode !== "rem-enhanced" || !snoGpu.apiKey || endpoint === void 0;
2789
- return {
2790
- rerank: local && rerank.mode === "cross-encoder" ? "lightweight" : rerank.mode,
2791
- endpoint: local ? void 0 : endpoint,
2792
- apiKey: local ? "" : snoGpu.apiKey
2793
- };
2794
- }
2795
- function settingsToPluginConfig(settings) {
2796
- const sno = rerankSettings(settings);
2733
+ function settingsToPluginConfig(settings, usageClass) {
2797
2734
  return pluginConfigSchema.parse({
2798
2735
  mode: settings.mode,
2799
2736
  modelCalls: settings.modelCalls,
@@ -2810,13 +2747,10 @@ function settingsToPluginConfig(settings) {
2810
2747
  sessionOptions: { intraOpNumThreads: settings.embedding.threads || void 0 }
2811
2748
  },
2812
2749
  retrieval: {
2813
- rerank: sno.rerank,
2750
+ rerank: settings.rerank.mode,
2814
2751
  recallTopK: settings.recall.prompt.limit,
2815
2752
  minScore: settings.recall.prompt.minScore,
2816
- rerankEndpoint: sno.endpoint,
2817
- rerankApiKey: sno.apiKey,
2818
- rerankTimeoutMs: settings.rerank.timeoutMs,
2819
- rerankMaxCandidates: settings.rerank.maxCandidates
2753
+ rerankTimeoutMs: settings.rerank.timeoutMs
2820
2754
  },
2821
2755
  autoRecall: settings.recall.auto,
2822
2756
  autoRecallTimeoutMs: settings.recall.prompt.timeoutMs,
@@ -2837,7 +2771,8 @@ function settingsToPluginConfig(settings) {
2837
2771
  observe: settings.telemetry.observe,
2838
2772
  extraction: { llm: {
2839
2773
  baseURL: settings.snoGpu.baseUrl,
2840
- apiKey: settings.snoGpu.apiKey
2774
+ apiKey: settings.snoGpu.apiKey,
2775
+ usageClass
2841
2776
  } }
2842
2777
  });
2843
2778
  }
@@ -2997,4 +2932,4 @@ function readMaintenanceOverrides() {
2997
2932
  };
2998
2933
  }
2999
2934
  //#endregion
3000
- export { FIXED_IDX_MEMORY_ACTIVE_TASK_CURRENT_REVISION as $, MAX_CHUNK_FETCH_LIMIT as $n, FIXED_PROTOCOL_VALUE_79 as $t, modelCallDestination as A, DEFAULT_REFLECTION_ERROR_SCAN_MAX_CHARS as An, MEMORY_CANCEL_ON_DISCONNECT_HEADER as Ar, FIXED_MEMORY_PROFILE_RECOVERY_ENTRIES as At, FIXED_EXTERNAL_VALUE_49 as B, FTS_MERGE_INTERVAL_MS as Bn, FIXED_PROTOCOL_VALUE_63 as Bt, getSnoStationMemStateDir as C, CHUNK_OVERLAP_TOKENS as Cn, LOCAL_EMBEDDING_CACHE_DIR_DEFAULT as Cr, FIXED_MEMORY_CHUNKS_MEM_FACET_IDX as Ct, settingsToPluginConfig as D, DEFAULT_IMPORTANCE as Dn, LocalReranker as Dr, FIXED_MEMORY_MEMORIES_FACT_ID_INSERT_GUARD as Dt, defaultSettings as E, DEFAULT_BM25_WEIGHT as En, LocalEmbedProvider as Er, FIXED_MEMORY_MEMORIES as Et, observeConfigSchema as F, EMBEDDER_DIM as Fn, MEMORY_SKIN_HEADER as Fr, FIXED_MEMORY_SNO_AI_EXTRACT as Ft, FIXED_EXTERNAL_VALUE_55 as G, INTEGRITY_CHECK_INTERVAL_MS as Gn, FIXED_PROTOCOL_VALUE_68 as Gt, FIXED_EXTERNAL_VALUE_52 as H, HEAD_EXTRACT_OVERLAP_DROP_RATIO as Hn, FIXED_PROTOCOL_VALUE_65 as Ht, extractionConfigSchema as I, EMBEDDER_MODEL_DEFAULT as In, REM_SIDECAR_TOKEN_HEADER as Ir, FIXED_MEMORY_SNO_EXTRACT_CHAT as It, FIXED_EXTERNAL_VALUE_58 as J, LIGHTWEIGHT_FUSION_WEIGHT as Jn, FIXED_PROTOCOL_VALUE_74 as Jt, FIXED_EXTERNAL_VALUE_56 as K, INTRA_MEMORY_COSINE_THRESHOLD as Kn, FIXED_PROTOCOL_VALUE_69 as Kt, memoryReflectionConfigSchema as L, EMBEDDER_PROVIDER_DEFAULT as Ln, memoryMethod as Lr, FIXED_MEMORY_SNO_EXTRACT_PROFILE as Lt, retrievalConfigSchema as M, DEFAULT_RERANK_TIMEOUT_MS as Mn, MEMORY_ERROR_STATUS as Mr, FIXED_MEMORY_PROVIDER_PROJECT_AGENTS as Mt, isObserveAgentId as N, DEFAULT_SCOPE as Nn, MEMORY_RECONNECT_INTERVAL_MS as Nr, FIXED_MEMORY_PROVIDER_PROJECT_MAPPINGS as Nt, MODEL_CALLS as O, DEFAULT_RECALL_LIFECYCLE as On, ensureModelDownloaded as Or, FIXED_MEMORY_MEMORIES_FACT_ID_UPDATE_GUARD as Ot, observeAgentId as P, DEFAULT_VECTOR_WEIGHT as Pn, MEMORY_ROUTES as Pr, FIXED_MEMORY_ROW_PATH_PATTERN as Pt, FIXED_IDX_MEMORY as Q, MAX_CANDIDATE_POOL_SIZE as Qn, FIXED_PROTOCOL_VALUE_78 as Qt, selfImprovementConfigSchema as R, EVAL_QA_TRACES_FILENAME as Rn, FIXED_MEMORY_TASK_LIFECYCLE_COMMANDS as Rt, getSidecarSocketPath as S, CHUNK_MIN_TOKENS as Sn, CachedEmbeddingProvider as Sr, FIXED_MEMORY_CHUNKS_MEMORY_ID_IDX as St, readSettings as T, CHUNK_TOKENIZER_MODE as Tn, LOCAL_EMBEDDING_MODEL_REVISION as Tr, FIXED_MEMORY_EXTRACTION_TIMESTAMPS as Tt, FIXED_EXTERNAL_VALUE_53 as U, HEAD_EXTRACT_TOKEN_BUDGET as Un, FIXED_PROTOCOL_VALUE_66 as Ut, FIXED_EXTERNAL_VALUE_51 as V, HEAD_EXTRACT_MIN_CONTENT_TOKENS as Vn, FIXED_PROTOCOL_VALUE_64 as Vt, FIXED_EXTERNAL_VALUE_54 as W, IMPORTANCE_WEIGHT_BASE as Wn, FIXED_PROTOCOL_VALUE_67 as Wt, FIXED_EXTERNAL_VALUE_8 as X, MAINTENANCE_TICK_MS as Xn, FIXED_PROTOCOL_VALUE_76 as Xt, FIXED_EXTERNAL_VALUE_62 as Y, LIGHTWEIGHT_RERANK_PENALTY as Yn, FIXED_PROTOCOL_VALUE_75 as Yt, FIXED_EXTERNAL_VALUE_9 as Z, MAX_AGGREGATION_RESULT_TOKENS as Zn, FIXED_PROTOCOL_VALUE_77 as Zt, readRemTestHoldMs as _, BACKUP_MIN_FREE_DISK_RATIO as _n, USAGE_OUTBOX_INTERVAL_MS as _r, FIXED_MEMORY_CHUNKS as _t, REM_MODEL_OUTPUT_TOKEN_CAP as a, PERSISTED_PROVIDER_SYSTEM as an, MULTI_HIT_BONUS_CAP as ar, FIXED_IDX_MEMORY_MEMORIES_LANE_PROJECT as at, getPrincipal as b, CHUNKING_VERSION as bn, experimentMmrDisabled as br, FIXED_MEMORY_CHUNKS_AU as bt, REM_SIDECAR_ORIGIN as c, SUPPORTED_LOCALES as cn, RECENCY_WEIGHT as cr, FIXED_IDX_MEMORY_MEMORIES_PROJECT_FACT_KEY_ACTIVE as ct, getRemDiscoveryPath as d, ADJACENCY_BONUS_PER_PAIR as dn, RERANK_BLEND_CROSS as dr, FIXED_MEMORY_ACTIVE_TASK_EVIDENCE as dt, FIXED_VEC_MEMORY as en, MAX_LIST_LIMIT as er, FIXED_IDX_MEMORY_ACTIVE_TASK_EVIDENCE_INSTANCE as et, getRemJobJournalPath as f, ATOMIC_CAPTURE_OUTPUT_TOKEN_BUDGET as fn, RERANK_BLEND_VECTOR as fr, FIXED_MEMORY_ACTIVE_TASK_INSTANCES as ft, readRemOperationalConfig as g, BACKUP_INTERVAL_MS as gn, USAGE_EVENT_RETENTION_INTERVAL_MS as gr, FIXED_MEMORY_ACTIVE_TASK_TRANSITIONS as gt, readMaintenanceOverrides as h, ATOMIC_EXTRACTION_MAX_INPUT_TOKENS as hn, TIME_DECAY_FLOOR as hr, FIXED_MEMORY_ACTIVE_TASK_REVISIONS as ht, REM_JOBS_PATH_PREFIX as i, PERSISTED_CONTENT_HASH_V3 as in, MMR_LAMBDA as ir, FIXED_IDX_MEMORY_MEMORIES_FACT_ID as it, SESSION_STRATEGIES as j, DEFAULT_REFLECTION_SESSION_TTL_MS as jn, MEMORY_DEFAULT_SKIN_ID as jr, FIXED_MEMORY_PROVIDER_AGENT_MAPPINGS as jt, MODEL_CALL_WORKLOAD as k, DEFAULT_RECALL_TOKEN_BUDGET as kn, MEMORY_BODY_LIMIT_BYTES as kr, FIXED_MEMORY_MIGRATION_MARKERS as kt, REM_SOURCE as l, isSupportedLocale as ln, REFLECTION_SLICE_CACHE_TTL_MS as lr, FIXED_IDX_MEMORY_MEMORIES_PROJECT_TIMESTAMP as lt, isRemTraceEnabled as m, ATOMIC_ENRICHMENT_OUTPUT_TOKEN_BUDGET as mn, SNO_OBSERVE_FLUSH_TIMEOUT_MS as mr, FIXED_MEMORY_ACTIVE_TASK_MIGRATION_MANIFESTS as mt, MEMORY_USAGE_FLUSH_INTERVAL_MS as n, PERSISTED_CANDIDATE_HASH_V1 as nn, MEMORY_SHUTDOWN_TIMEOUT_MS as nr, FIXED_IDX_MEMORY_MEMORIES_CATEGORY as nt, REM_RUN_PATH as o, embeddingConfigSchema as on, MULTI_HIT_BONUS_PER_HIT as or, FIXED_IDX_MEMORY_MEMORIES_PROJECT as ot, getRemTraceLogPath as p, ATOMIC_CAPTURE_TIMEOUT_MS as pn, RETRIEVAL_STORAGE_CHUNK_PROFILE as pr, FIXED_MEMORY_ACTIVE_TASK_MIGRATION_EVIDENCE as pt, FIXED_EXTERNAL_VALUE_57 as q, LIGHTWEIGHT_COSINE_WEIGHT as qn, FIXED_PROTOCOL_VALUE_73 as qt, REM_CORRELATION_ID_HEADER as r, PERSISTED_CONTENT_HASH_V1 as rn, MIN_RECALL_TOKEN_BUDGET as rr, FIXED_IDX_MEMORY_MEMORIES_CONTENT_HASH as rt, REM_SIDECAR_HOST as s, llmRoutingConfigSchema as sn, PLANNER_STATISTICS_INTERVAL_MS as sr, FIXED_IDX_MEMORY_MEMORIES_PROJECT_CONTENT_HASH as st, HEALTH_PATH as t, FIXED_VEC_MEMORY_CHUNKS as tn, MAX_RECALLED_TODO_TOKENS as tr, FIXED_IDX_MEMORY_ACTIVE_TASK_INSTANCES_PROJECTION as tt, getRemChassisJournalPath as u, ADJACENCY_BONUS_CAP as un, REM_TRIGGER_CHECK_INTERVAL_MS as ur, FIXED_MEMORY as ut, SettingsUnavailableError as v, BONUS_TOTAL_INVARIANT as vn, VECTOR_DIMENSION_DEFAULT as vr, FIXED_MEMORY_CHUNKS_AD as vt, getStateDir as w, CHUNK_TARGET_TOKENS as wn, LOCAL_EMBEDDING_MODEL as wr, FIXED_MEMORY_CHUNKS_MEM_IDX as wt, getSettingsPath as x, CHUNK_MAX_TOKENS as xn, recallLifecycleSchema as xr, FIXED_MEMORY_CHUNKS_FTS as xt, getDiscoveryPath as y, CACHE_TTL_MS as yn, experimentCandidatePoolOverride as yr, FIXED_MEMORY_CHUNKS_AI as yt, sessionMemoryConfigSchema as z, FORGET_QUERY_MIN_SCORE as zn, FIXED_MEMORY_UNPLACED_CANDIDATES as zt };
2935
+ export { FIXED_IDX_MEMORY_ACTIVE_TASK_CURRENT_REVISION as $, MEMORY_SHUTDOWN_TIMEOUT_MS as $n, FIXED_PROTOCOL_VALUE_79 as $t, modelCallDestination as A, DEFAULT_REFLECTION_ERROR_SCAN_MAX_CHARS as An, MEMORY_SKIN_HEADER as Ar, FIXED_MEMORY_PROFILE_RECOVERY_ENTRIES as At, FIXED_EXTERNAL_VALUE_49 as B, FTS_MERGE_INTERVAL_MS as Bn, FIXED_PROTOCOL_VALUE_63 as Bt, getSnoStationMemStateDir as C, CHUNK_OVERLAP_TOKENS as Cn, ensureModelDownloaded as Cr, FIXED_MEMORY_CHUNKS_MEM_FACET_IDX as Ct, settingsToPluginConfig as D, DEFAULT_IMPORTANCE as Dn, MEMORY_ERROR_STATUS as Dr, FIXED_MEMORY_MEMORIES_FACT_ID_INSERT_GUARD as Dt, defaultSettings as E, DEFAULT_BM25_WEIGHT as En, MEMORY_DEFAULT_SKIN_ID as Er, FIXED_MEMORY_MEMORIES as Et, observeConfigSchema as F, EMBEDDER_DIM as Fn, FIXED_MEMORY_SNO_AI_EXTRACT as Ft, FIXED_EXTERNAL_VALUE_55 as G, INTEGRITY_CHECK_INTERVAL_MS as Gn, FIXED_PROTOCOL_VALUE_68 as Gt, FIXED_EXTERNAL_VALUE_52 as H, HEAD_EXTRACT_OVERLAP_DROP_RATIO as Hn, FIXED_PROTOCOL_VALUE_65 as Ht, extractionConfigSchema as I, EMBEDDER_MODEL_DEFAULT as In, FIXED_MEMORY_SNO_EXTRACT_CHAT as It, FIXED_EXTERNAL_VALUE_58 as J, MAX_AGGREGATION_RESULT_TOKENS as Jn, FIXED_PROTOCOL_VALUE_74 as Jt, FIXED_EXTERNAL_VALUE_56 as K, INTRA_MEMORY_COSINE_THRESHOLD as Kn, FIXED_PROTOCOL_VALUE_69 as Kt, memoryReflectionConfigSchema as L, EMBEDDER_PROVIDER_DEFAULT as Ln, FIXED_MEMORY_SNO_EXTRACT_PROFILE as Lt, retrievalConfigSchema as M, DEFAULT_RERANK_TIMEOUT_MS as Mn, memoryMethod as Mr, FIXED_MEMORY_PROVIDER_PROJECT_AGENTS as Mt, isObserveAgentId as N, DEFAULT_SCOPE as Nn, FIXED_MEMORY_PROVIDER_PROJECT_MAPPINGS as Nt, MODEL_CALLS as O, DEFAULT_RECALL_LIFECYCLE as On, MEMORY_RECONNECT_INTERVAL_MS as Or, FIXED_MEMORY_MEMORIES_FACT_ID_UPDATE_GUARD as Ot, observeAgentId as P, DEFAULT_VECTOR_WEIGHT as Pn, FIXED_MEMORY_ROW_PATH_PATTERN as Pt, FIXED_IDX_MEMORY as Q, MAX_RECALLED_TODO_TOKENS as Qn, FIXED_PROTOCOL_VALUE_78 as Qt, selfImprovementConfigSchema as R, EVAL_QA_TRACES_FILENAME as Rn, FIXED_MEMORY_TASK_LIFECYCLE_COMMANDS as Rt, getSidecarSocketPath as S, CHUNK_MIN_TOKENS as Sn, LocalReranker as Sr, FIXED_MEMORY_CHUNKS_MEMORY_ID_IDX as St, readSettings as T, CHUNK_TOKENIZER_MODE as Tn, MEMORY_CANCEL_ON_DISCONNECT_HEADER as Tr, FIXED_MEMORY_EXTRACTION_TIMESTAMPS as Tt, FIXED_EXTERNAL_VALUE_53 as U, HEAD_EXTRACT_TOKEN_BUDGET as Un, FIXED_PROTOCOL_VALUE_66 as Ut, FIXED_EXTERNAL_VALUE_51 as V, HEAD_EXTRACT_MIN_CONTENT_TOKENS as Vn, FIXED_PROTOCOL_VALUE_64 as Vt, FIXED_EXTERNAL_VALUE_54 as W, IMPORTANCE_WEIGHT_BASE as Wn, FIXED_PROTOCOL_VALUE_67 as Wt, FIXED_EXTERNAL_VALUE_8 as X, MAX_CHUNK_FETCH_LIMIT as Xn, FIXED_PROTOCOL_VALUE_76 as Xt, FIXED_EXTERNAL_VALUE_62 as Y, MAX_CANDIDATE_POOL_SIZE as Yn, FIXED_PROTOCOL_VALUE_75 as Yt, FIXED_EXTERNAL_VALUE_9 as Z, MAX_LIST_LIMIT as Zn, FIXED_PROTOCOL_VALUE_77 as Zt, readRemTestHoldMs as _, BACKUP_MIN_FREE_DISK_RATIO as _n, CachedEmbeddingProvider as _r, FIXED_MEMORY_CHUNKS as _t, REM_MODEL_OUTPUT_TOKEN_CAP as a, PERSISTED_PROVIDER_SYSTEM as an, RECENCY_WEIGHT as ar, FIXED_IDX_MEMORY_MEMORIES_LANE_PROJECT as at, getPrincipal as b, CHUNKING_VERSION as bn, LOCAL_EMBEDDING_MODEL_REVISION as br, FIXED_MEMORY_CHUNKS_AU as bt, REM_SIDECAR_ORIGIN as c, SUPPORTED_LOCALES as cn, RETRIEVAL_STORAGE_CHUNK_PROFILE as cr, FIXED_IDX_MEMORY_MEMORIES_PROJECT_FACT_KEY_ACTIVE as ct, getRemDiscoveryPath as d, ADJACENCY_BONUS_PER_PAIR as dn, USAGE_EVENT_RETENTION_INTERVAL_MS as dr, FIXED_MEMORY_ACTIVE_TASK_EVIDENCE as dt, FIXED_VEC_MEMORY as en, MIN_RECALL_TOKEN_BUDGET as er, FIXED_IDX_MEMORY_ACTIVE_TASK_EVIDENCE_INSTANCE as et, getRemJobJournalPath as f, ATOMIC_CAPTURE_OUTPUT_TOKEN_BUDGET as fn, USAGE_OUTBOX_INTERVAL_MS as fr, FIXED_MEMORY_ACTIVE_TASK_INSTANCES as ft, readRemOperationalConfig as g, BACKUP_INTERVAL_MS as gn, recallLifecycleSchema as gr, FIXED_MEMORY_ACTIVE_TASK_TRANSITIONS as gt, readMaintenanceOverrides as h, ATOMIC_EXTRACTION_MAX_INPUT_TOKENS as hn, experimentMmrDisabled as hr, FIXED_MEMORY_ACTIVE_TASK_REVISIONS as ht, REM_JOBS_PATH_PREFIX as i, PERSISTED_CONTENT_HASH_V3 as in, PLANNER_STATISTICS_INTERVAL_MS as ir, FIXED_IDX_MEMORY_MEMORIES_FACT_ID as it, SESSION_STRATEGIES as j, DEFAULT_REFLECTION_SESSION_TTL_MS as jn, REM_SIDECAR_TOKEN_HEADER as jr, FIXED_MEMORY_PROVIDER_AGENT_MAPPINGS as jt, MODEL_CALL_WORKLOAD as k, DEFAULT_RECALL_TOKEN_BUDGET as kn, MEMORY_ROUTES as kr, FIXED_MEMORY_MIGRATION_MARKERS as kt, REM_SOURCE as l, isSupportedLocale as ln, SNO_OBSERVE_FLUSH_TIMEOUT_MS as lr, FIXED_IDX_MEMORY_MEMORIES_PROJECT_TIMESTAMP as lt, isRemTraceEnabled as m, ATOMIC_ENRICHMENT_OUTPUT_TOKEN_BUDGET as mn, experimentCandidatePoolOverride as mr, FIXED_MEMORY_ACTIVE_TASK_MIGRATION_MANIFESTS as mt, MEMORY_USAGE_FLUSH_INTERVAL_MS as n, PERSISTED_CANDIDATE_HASH_V1 as nn, MULTI_HIT_BONUS_CAP as nr, FIXED_IDX_MEMORY_MEMORIES_CATEGORY as nt, REM_RUN_PATH as o, embeddingConfigSchema as on, REFLECTION_SLICE_CACHE_TTL_MS as or, FIXED_IDX_MEMORY_MEMORIES_PROJECT as ot, getRemTraceLogPath as p, ATOMIC_CAPTURE_TIMEOUT_MS as pn, VECTOR_DIMENSION_DEFAULT as pr, FIXED_MEMORY_ACTIVE_TASK_MIGRATION_EVIDENCE as pt, FIXED_EXTERNAL_VALUE_57 as q, MAINTENANCE_TICK_MS as qn, FIXED_PROTOCOL_VALUE_73 as qt, REM_CORRELATION_ID_HEADER as r, PERSISTED_CONTENT_HASH_V1 as rn, MULTI_HIT_BONUS_PER_HIT as rr, FIXED_IDX_MEMORY_MEMORIES_CONTENT_HASH as rt, REM_SIDECAR_HOST as s, llmRoutingConfigSchema as sn, REM_TRIGGER_CHECK_INTERVAL_MS as sr, FIXED_IDX_MEMORY_MEMORIES_PROJECT_CONTENT_HASH as st, HEALTH_PATH as t, FIXED_VEC_MEMORY_CHUNKS as tn, MMR_LAMBDA as tr, FIXED_IDX_MEMORY_ACTIVE_TASK_INSTANCES_PROJECTION as tt, getRemChassisJournalPath as u, ADJACENCY_BONUS_CAP as un, TIME_DECAY_FLOOR as ur, FIXED_MEMORY as ut, SettingsUnavailableError as v, BONUS_TOTAL_INVARIANT as vn, LOCAL_EMBEDDING_CACHE_DIR_DEFAULT as vr, FIXED_MEMORY_CHUNKS_AD as vt, getStateDir as w, CHUNK_TARGET_TOKENS as wn, MEMORY_BODY_LIMIT_BYTES as wr, FIXED_MEMORY_CHUNKS_MEM_IDX as wt, getSettingsPath as x, CHUNK_MAX_TOKENS as xn, LocalEmbedProvider as xr, FIXED_MEMORY_CHUNKS_FTS as xt, getDiscoveryPath as y, CACHE_TTL_MS as yn, LOCAL_EMBEDDING_MODEL as yr, FIXED_MEMORY_CHUNKS_AI as yt, sessionMemoryConfigSchema as z, FORGET_QUERY_MIN_SCORE as zn, FIXED_MEMORY_UNPLACED_CANDIDATES as zt };