From f3d2ae895a26e49c2da72fe502f76c9fe892b1a4 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 1 May 2026 18:07:53 +0100 Subject: [PATCH] refactor: trim memory core helper exports --- extensions/memory-core/index.ts | 15 +-------------- extensions/memory-core/src/concept-vocabulary.ts | 2 +- extensions/memory-core/src/dreaming-narrative.ts | 2 +- extensions/memory-core/src/dreaming-repair.ts | 2 +- extensions/memory-core/src/dreaming.ts | 2 +- extensions/memory-core/src/flush-plan.ts | 2 +- .../memory-core/src/memory-tool-manager-mock.ts | 4 ++-- extensions/memory-core/src/memory/embeddings.ts | 5 +---- extensions/memory-core/src/memory/hybrid.ts | 9 +++------ .../src/memory/manager-atomic-reindex.ts | 6 +++--- .../memory-core/src/memory/manager-batch-state.ts | 2 +- .../src/memory/manager-provider-state.ts | 2 +- .../src/memory/manager-reindex-state.ts | 4 ++-- .../memory-core/src/memory/manager-search.ts | 6 +++--- .../memory-core/src/memory/provider-adapters.ts | 6 +++--- .../memory-core/src/memory/temporal-decay.ts | 2 +- extensions/memory-core/src/rem-evidence.ts | 6 +++--- .../memory-core/src/short-term-promotion.ts | 14 +++++++------- extensions/memory-core/src/tools.shared.ts | 2 +- 19 files changed, 37 insertions(+), 56 deletions(-) diff --git a/extensions/memory-core/index.ts b/extensions/memory-core/index.ts index 22acff620f4..ba827361fee 100644 --- a/extensions/memory-core/index.ts +++ b/extensions/memory-core/index.ts @@ -2,25 +2,12 @@ import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry"; import { registerMemoryCli } from "./src/cli.js"; import { registerDreamingCommand } from "./src/dreaming-command.js"; import { registerShortTermPromotionDreaming } from "./src/dreaming.js"; -import { - buildMemoryFlushPlan, - DEFAULT_MEMORY_FLUSH_FORCE_TRANSCRIPT_BYTES, - DEFAULT_MEMORY_FLUSH_PROMPT, - DEFAULT_MEMORY_FLUSH_SOFT_TOKENS, -} from "./src/flush-plan.js"; +import { buildMemoryFlushPlan } from "./src/flush-plan.js"; import { registerBuiltInMemoryEmbeddingProviders } from "./src/memory/provider-adapters.js"; import { buildPromptSection } from "./src/prompt-section.js"; import { listMemoryCorePublicArtifacts } from "./src/public-artifacts.js"; import { memoryRuntime } from "./src/runtime-provider.js"; import { createMemoryGetTool, createMemorySearchTool } from "./src/tools.js"; -export { - buildMemoryFlushPlan, - DEFAULT_MEMORY_FLUSH_FORCE_TRANSCRIPT_BYTES, - DEFAULT_MEMORY_FLUSH_PROMPT, - DEFAULT_MEMORY_FLUSH_SOFT_TOKENS, -} from "./src/flush-plan.js"; -export { buildPromptSection } from "./src/prompt-section.js"; - export default definePluginEntry({ id: "memory-core", name: "Memory (Core)", diff --git a/extensions/memory-core/src/concept-vocabulary.ts b/extensions/memory-core/src/concept-vocabulary.ts index b940af6d471..40b261c823f 100644 --- a/extensions/memory-core/src/concept-vocabulary.ts +++ b/extensions/memory-core/src/concept-vocabulary.ts @@ -3,7 +3,7 @@ import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/text-runtim export const MAX_CONCEPT_TAGS = 8; -export type ConceptTagScriptFamily = "latin" | "cjk" | "mixed" | "other"; +type ConceptTagScriptFamily = "latin" | "cjk" | "mixed" | "other"; export type ConceptTagScriptCoverage = { latinEntryCount: number; diff --git a/extensions/memory-core/src/dreaming-narrative.ts b/extensions/memory-core/src/dreaming-narrative.ts index 04ca492d66d..39ec17dfa99 100644 --- a/extensions/memory-core/src/dreaming-narrative.ts +++ b/extensions/memory-core/src/dreaming-narrative.ts @@ -244,7 +244,7 @@ async function startNarrativeRunOrFallback(params: { /** * Build the deterministic subagent session key used for dream narratives. */ -export function buildNarrativeSessionKey(params: { +function buildNarrativeSessionKey(params: { workspaceDir: string; phase: NarrativePhaseData["phase"]; nowMs: number; diff --git a/extensions/memory-core/src/dreaming-repair.ts b/extensions/memory-core/src/dreaming-repair.ts index 77e7b49ac8a..c24b524e564 100644 --- a/extensions/memory-core/src/dreaming-repair.ts +++ b/extensions/memory-core/src/dreaming-repair.ts @@ -2,7 +2,7 @@ import { randomUUID } from "node:crypto"; import fs from "node:fs/promises"; import path from "node:path"; -export type DreamingArtifactsAuditIssue = { +type DreamingArtifactsAuditIssue = { severity: "warn" | "error"; code: | "dreaming-session-corpus-unreadable" diff --git a/extensions/memory-core/src/dreaming.ts b/extensions/memory-core/src/dreaming.ts index fccc59a1ce3..a50d2800ff0 100644 --- a/extensions/memory-core/src/dreaming.ts +++ b/extensions/memory-core/src/dreaming.ts @@ -108,7 +108,7 @@ type CronServiceLike = { remove: (id: string) => Promise<{ removed?: boolean }>; }; -export type ShortTermPromotionDreamingConfig = { +type ShortTermPromotionDreamingConfig = { enabled: boolean; cron: string; timezone?: string; diff --git a/extensions/memory-core/src/flush-plan.ts b/extensions/memory-core/src/flush-plan.ts index 7ffbcf71f68..cff32152b2a 100644 --- a/extensions/memory-core/src/flush-plan.ts +++ b/extensions/memory-core/src/flush-plan.ts @@ -31,7 +31,7 @@ export const DEFAULT_MEMORY_FLUSH_PROMPT = [ `If nothing to store, reply with ${SILENT_REPLY_TOKEN}.`, ].join(" "); -export const DEFAULT_MEMORY_FLUSH_SYSTEM_PROMPT = [ +const DEFAULT_MEMORY_FLUSH_SYSTEM_PROMPT = [ "Pre-compaction memory flush turn.", "The session is near auto-compaction; capture durable memories to disk.", MEMORY_FLUSH_TARGET_HINT, diff --git a/extensions/memory-core/src/memory-tool-manager-mock.ts b/extensions/memory-core/src/memory-tool-manager-mock.ts index 02b9033936b..c5273de3596 100644 --- a/extensions/memory-core/src/memory-tool-manager-mock.ts +++ b/extensions/memory-core/src/memory-tool-manager-mock.ts @@ -1,7 +1,7 @@ import type { MemorySearchRuntimeDebug } from "openclaw/plugin-sdk/memory-core-host-runtime-files"; import { vi } from "vitest"; -export type SearchImpl = (opts?: { +type SearchImpl = (opts?: { maxResults?: number; minScore?: number; sessionKey?: string; @@ -9,7 +9,7 @@ export type SearchImpl = (opts?: { onDebug?: (debug: MemorySearchRuntimeDebug) => void; }) => Promise; export type MemoryReadParams = { relPath: string; from?: number; lines?: number }; -export type MemoryReadResult = { +type MemoryReadResult = { text: string; path: string; truncated?: boolean; diff --git a/extensions/memory-core/src/memory/embeddings.ts b/extensions/memory-core/src/memory/embeddings.ts index e06aba20c5f..390e0f01092 100644 --- a/extensions/memory-core/src/memory/embeddings.ts +++ b/extensions/memory-core/src/memory/embeddings.ts @@ -1,5 +1,4 @@ import { - DEFAULT_LOCAL_MODEL, getMemoryEmbeddingProvider, listMemoryEmbeddingProviders, type MemoryEmbeddingProvider, @@ -10,12 +9,10 @@ import { import { formatErrorMessage } from "../dreaming-shared.js"; import { canAutoSelectLocal } from "./provider-adapters.js"; -export { DEFAULT_LOCAL_MODEL } from "openclaw/plugin-sdk/memory-core-host-engine-embeddings"; - export type EmbeddingProvider = MemoryEmbeddingProvider; export type EmbeddingProviderId = string; export type EmbeddingProviderRequest = string; -export type EmbeddingProviderFallback = string; +type EmbeddingProviderFallback = string; export type EmbeddingProviderRuntime = MemoryEmbeddingProviderRuntime; export type EmbeddingProviderResult = { diff --git a/extensions/memory-core/src/memory/hybrid.ts b/extensions/memory-core/src/memory/hybrid.ts index 5d84ca42101..536ea737687 100644 --- a/extensions/memory-core/src/memory/hybrid.ts +++ b/extensions/memory-core/src/memory/hybrid.ts @@ -5,12 +5,9 @@ import { DEFAULT_TEMPORAL_DECAY_CONFIG, } from "./temporal-decay.js"; -export type HybridSource = string; +type HybridSource = string; -export { type MMRConfig, DEFAULT_MMR_CONFIG }; -export { type TemporalDecayConfig, DEFAULT_TEMPORAL_DECAY_CONFIG }; - -export type HybridVectorResult = { +type HybridVectorResult = { id: string; path: string; startLine: number; @@ -20,7 +17,7 @@ export type HybridVectorResult = { vectorScore: number; }; -export type HybridKeywordResult = { +type HybridKeywordResult = { id: string; path: string; startLine: number; diff --git a/extensions/memory-core/src/memory/manager-atomic-reindex.ts b/extensions/memory-core/src/memory/manager-atomic-reindex.ts index 792023fbd63..9fac4998d80 100644 --- a/extensions/memory-core/src/memory/manager-atomic-reindex.ts +++ b/extensions/memory-core/src/memory/manager-atomic-reindex.ts @@ -1,7 +1,7 @@ import { randomUUID } from "node:crypto"; import fs from "node:fs/promises"; -export async function moveMemoryIndexFiles(sourceBase: string, targetBase: string): Promise { +async function moveMemoryIndexFiles(sourceBase: string, targetBase: string): Promise { const suffixes = ["", "-wal", "-shm"]; for (const suffix of suffixes) { const source = `${sourceBase}${suffix}`; @@ -16,12 +16,12 @@ export async function moveMemoryIndexFiles(sourceBase: string, targetBase: strin } } -export async function removeMemoryIndexFiles(basePath: string): Promise { +async function removeMemoryIndexFiles(basePath: string): Promise { const suffixes = ["", "-wal", "-shm"]; await Promise.all(suffixes.map((suffix) => fs.rm(`${basePath}${suffix}`, { force: true }))); } -export async function swapMemoryIndexFiles(targetPath: string, tempPath: string): Promise { +async function swapMemoryIndexFiles(targetPath: string, tempPath: string): Promise { const backupPath = `${targetPath}.backup-${randomUUID()}`; await moveMemoryIndexFiles(targetPath, backupPath); try { diff --git a/extensions/memory-core/src/memory/manager-batch-state.ts b/extensions/memory-core/src/memory/manager-batch-state.ts index 3eafdfd40c2..2719b2f3252 100644 --- a/extensions/memory-core/src/memory/manager-batch-state.ts +++ b/extensions/memory-core/src/memory/manager-batch-state.ts @@ -1,6 +1,6 @@ export const MEMORY_BATCH_FAILURE_LIMIT = 2; -export type MemoryBatchFailureState = { +type MemoryBatchFailureState = { enabled: boolean; count: number; lastError?: string; diff --git a/extensions/memory-core/src/memory/manager-provider-state.ts b/extensions/memory-core/src/memory/manager-provider-state.ts index 1a690b352e2..ad30efc05df 100644 --- a/extensions/memory-core/src/memory/manager-provider-state.ts +++ b/extensions/memory-core/src/memory/manager-provider-state.ts @@ -9,7 +9,7 @@ import { type EmbeddingProviderRuntime, } from "./embeddings.js"; -export type MemoryResolvedProviderState = { +type MemoryResolvedProviderState = { provider: EmbeddingProvider | null; fallbackFrom?: string; fallbackReason?: string; diff --git a/extensions/memory-core/src/memory/manager-reindex-state.ts b/extensions/memory-core/src/memory/manager-reindex-state.ts index d084763ee2d..2e92786119c 100644 --- a/extensions/memory-core/src/memory/manager-reindex-state.ts +++ b/extensions/memory-core/src/memory/manager-reindex-state.ts @@ -23,7 +23,7 @@ export function resolveConfiguredSourcesForMeta(sources: Iterable) return normalized.length > 0 ? normalized : ["memory"]; } -export function normalizeMetaSources(meta: MemoryIndexMeta): MemorySource[] { +function normalizeMetaSources(meta: MemoryIndexMeta): MemorySource[] { if (!Array.isArray(meta.sources)) { // Backward compatibility for older indexes that did not persist sources. return ["memory"]; @@ -38,7 +38,7 @@ export function normalizeMetaSources(meta: MemoryIndexMeta): MemorySource[] { return normalized.length > 0 ? normalized : ["memory"]; } -export function configuredMetaSourcesDiffer(params: { +function configuredMetaSourcesDiffer(params: { meta: MemoryIndexMeta; configuredSources: MemorySource[]; }): boolean { diff --git a/extensions/memory-core/src/memory/manager-search.ts b/extensions/memory-core/src/memory/manager-search.ts index 13faf9669d2..515453c6cc1 100644 --- a/extensions/memory-core/src/memory/manager-search.ts +++ b/extensions/memory-core/src/memory/manager-search.ts @@ -11,9 +11,9 @@ const FTS_QUERY_TOKEN_RE = /[\p{L}\p{N}_]+/gu; const SHORT_CJK_TRIGRAM_RE = /[\u3040-\u30ff\u3400-\u9fff\uac00-\ud7af\u3131-\u3163]/u; const VECTOR_KNN_OVERSAMPLE_FACTOR = 8; -export type SearchSource = string; +type SearchSource = string; -export type SearchRowResult = { +type SearchRowResult = { id: string; path: string; startLine: number; @@ -215,7 +215,7 @@ export async function searchVector(params: { }); } -export function searchChunksByEmbedding(params: { +function searchChunksByEmbedding(params: { db: DatabaseSync; providerModel: string; sourceFilter: { sql: string; params: SearchSource[] }; diff --git a/extensions/memory-core/src/memory/provider-adapters.ts b/extensions/memory-core/src/memory/provider-adapters.ts index e6db2921f02..14eb71865b2 100644 --- a/extensions/memory-core/src/memory/provider-adapters.ts +++ b/extensions/memory-core/src/memory/provider-adapters.ts @@ -112,11 +112,11 @@ const localAdapter: MemoryEmbeddingProviderAdapter = { }, }; -export const builtinMemoryEmbeddingProviderAdapters = [localAdapter] as const; +const builtinMemoryEmbeddingProviderAdapters = [localAdapter] as const; export { DEFAULT_LOCAL_MODEL }; -export function getBuiltinMemoryEmbeddingProviderAdapter( +function getBuiltinMemoryEmbeddingProviderAdapter( id: string, ): MemoryEmbeddingProviderAdapter | undefined { return listMemoryEmbeddingProviders().find((adapter) => adapter.id === id); @@ -169,4 +169,4 @@ export function listBuiltinAutoSelectMemoryEmbeddingProviderDoctorMetadata(): Ar }); } -export { canAutoSelectLocal, formatLocalSetupError }; +export { canAutoSelectLocal }; diff --git a/extensions/memory-core/src/memory/temporal-decay.ts b/extensions/memory-core/src/memory/temporal-decay.ts index 8066630bf00..9004f4d7e81 100644 --- a/extensions/memory-core/src/memory/temporal-decay.ts +++ b/extensions/memory-core/src/memory/temporal-decay.ts @@ -14,7 +14,7 @@ export const DEFAULT_TEMPORAL_DECAY_CONFIG: TemporalDecayConfig = { const DAY_MS = 24 * 60 * 60 * 1000; const DATED_MEMORY_PATH_RE = /(?:^|\/)memory\/(\d{4})-(\d{2})-(\d{2})\.md$/; -export function toDecayLambda(halfLifeDays: number): number { +function toDecayLambda(halfLifeDays: number): number { if (!Number.isFinite(halfLifeDays) || halfLifeDays <= 0) { return 0; } diff --git a/extensions/memory-core/src/rem-evidence.ts b/extensions/memory-core/src/rem-evidence.ts index 08a39d2c08b..13112d4a240 100644 --- a/extensions/memory-core/src/rem-evidence.ts +++ b/extensions/memory-core/src/rem-evidence.ts @@ -63,16 +63,16 @@ const REM_SUMMARY_FACT_LIMIT = 4; const REM_SUMMARY_REFLECTION_LIMIT = 4; const REM_SUMMARY_MEMORY_LIMIT = 3; -export type GroundedRemPreviewItem = { +type GroundedRemPreviewItem = { text: string; refs: string[]; }; -export type GroundedRemCandidate = GroundedRemPreviewItem & { +type GroundedRemCandidate = GroundedRemPreviewItem & { lean: "likely_durable" | "unclear" | "likely_situational"; }; -export type GroundedRemFilePreview = { +type GroundedRemFilePreview = { path: string; facts: GroundedRemPreviewItem[]; reflections: GroundedRemPreviewItem[]; diff --git a/extensions/memory-core/src/short-term-promotion.ts b/extensions/memory-core/src/short-term-promotion.ts index e0d9c303598..ee96e5f4a1e 100644 --- a/extensions/memory-core/src/short-term-promotion.ts +++ b/extensions/memory-core/src/short-term-promotion.ts @@ -43,7 +43,7 @@ const DREAMING_DIFF_PREFIX_RE = /@@\s*-\d+(?:,\d+)?\s+[-*+]\s+/iy; const inProcessShortTermLocks = new Map>(); const ensuredShortTermDirs = new Map>(); -export type PromotionWeights = { +type PromotionWeights = { frequency: number; relevance: number; diversity: number; @@ -52,7 +52,7 @@ export type PromotionWeights = { conceptual: number; }; -export const DEFAULT_PROMOTION_WEIGHTS: PromotionWeights = { +const DEFAULT_PROMOTION_WEIGHTS: PromotionWeights = { frequency: 0.24, relevance: 0.3, diversity: 0.15, @@ -102,7 +102,7 @@ type ShortTermPhaseSignalStore = { entries: Record; }; -export type PromotionComponents = { +type PromotionComponents = { frequency: number; relevance: number; diversity: number; @@ -136,7 +136,7 @@ export type PromotionCandidate = { components: PromotionComponents; }; -export type ShortTermAuditIssue = { +type ShortTermAuditIssue = { severity: "warn" | "error"; code: | "recall-store-unreadable" @@ -179,7 +179,7 @@ export type RepairShortTermPromotionArtifactsResult = { removedStaleLock: boolean; }; -export type RankShortTermPromotionOptions = { +type RankShortTermPromotionOptions = { workspaceDir: string; limit?: number; minScore?: number; @@ -192,7 +192,7 @@ export type RankShortTermPromotionOptions = { nowMs?: number; }; -export type ApplyShortTermPromotionsOptions = { +type ApplyShortTermPromotionsOptions = { workspaceDir: string; candidates: PromotionCandidate[]; limit?: number; @@ -204,7 +204,7 @@ export type ApplyShortTermPromotionsOptions = { timezone?: string; }; -export type ApplyShortTermPromotionsResult = { +type ApplyShortTermPromotionsResult = { memoryPath: string; applied: number; appended: number; diff --git a/extensions/memory-core/src/tools.shared.ts b/extensions/memory-core/src/tools.shared.ts index b1a6f99924e..754664670de 100644 --- a/extensions/memory-core/src/tools.shared.ts +++ b/extensions/memory-core/src/tools.shared.ts @@ -49,7 +49,7 @@ export const MemoryGetSchema = Type.Object({ ), }); -export function resolveMemoryToolContext(options: MemoryToolOptions) { +function resolveMemoryToolContext(options: MemoryToolOptions) { const cfg = options.getConfig?.() ?? options.config; if (!cfg) { return null;