diff --git a/extensions/memory-core/src/engine-host-api.ts b/extensions/memory-core/src/engine-host-api.ts deleted file mode 100644 index f615f4a986f..00000000000 --- a/extensions/memory-core/src/engine-host-api.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from "openclaw/plugin-sdk/memory-core-host-engine-foundation"; -export * from "openclaw/plugin-sdk/memory-core-host-engine-storage"; -export * from "openclaw/plugin-sdk/memory-core-host-engine-embeddings"; -export * from "openclaw/plugin-sdk/memory-core-host-engine-qmd"; diff --git a/extensions/memory-core/src/memory/backend-config.ts b/extensions/memory-core/src/memory/backend-config.ts index 856d8a7c806..e952454d73a 100644 --- a/extensions/memory-core/src/memory/backend-config.ts +++ b/extensions/memory-core/src/memory/backend-config.ts @@ -1 +1 @@ -export { resolveMemoryBackendConfig } from "../engine-host-api.js"; +export { resolveMemoryBackendConfig } from "openclaw/plugin-sdk/memory-core-host-engine-storage"; diff --git a/extensions/memory-core/src/memory/embedding-manager.test-harness.ts b/extensions/memory-core/src/memory/embedding-manager.test-harness.ts index 4b22f7fb822..8d6183cb3a5 100644 --- a/extensions/memory-core/src/memory/embedding-manager.test-harness.ts +++ b/extensions/memory-core/src/memory/embedding-manager.test-harness.ts @@ -1,8 +1,8 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; +import type { OpenClawConfig } from "openclaw/plugin-sdk/memory-core-host-engine-foundation"; import { afterAll, beforeAll, beforeEach, expect, vi, type Mock } from "vitest"; -import type { OpenClawConfig } from "../engine-host-api.js"; import type { MemoryIndexManager, MemorySearchManager } from "./index.js"; type EmbeddingTestMocksModule = typeof import("./embedding.test-mocks.js"); diff --git a/extensions/memory-core/src/memory/embeddings.ts b/extensions/memory-core/src/memory/embeddings.ts index a1b2924fed7..a98672c7a44 100644 --- a/extensions/memory-core/src/memory/embeddings.ts +++ b/extensions/memory-core/src/memory/embeddings.ts @@ -11,7 +11,7 @@ import { type MemoryEmbeddingProviderAdapter, type MemoryEmbeddingProviderCreateOptions, type MemoryEmbeddingProviderRuntime, -} from "../engine-host-api.js"; +} from "openclaw/plugin-sdk/memory-core-host-engine-embeddings"; import { canAutoSelectLocal, getBuiltinMemoryEmbeddingProviderAdapter, @@ -24,7 +24,7 @@ export { DEFAULT_OLLAMA_EMBEDDING_MODEL, DEFAULT_OPENAI_EMBEDDING_MODEL, DEFAULT_VOYAGE_EMBEDDING_MODEL, -} from "../engine-host-api.js"; +} from "openclaw/plugin-sdk/memory-core-host-engine-embeddings"; export type EmbeddingProvider = MemoryEmbeddingProvider; export type EmbeddingProviderId = string; diff --git a/extensions/memory-core/src/memory/index.test.ts b/extensions/memory-core/src/memory/index.test.ts index 2a6f1f61b9b..89b285e8552 100644 --- a/extensions/memory-core/src/memory/index.test.ts +++ b/extensions/memory-core/src/memory/index.test.ts @@ -4,13 +4,18 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import "./test-runtime-mocks.js"; import type { MemoryIndexManager } from "./index.js"; +import "./test-runtime-mocks.js"; +import { registerBuiltInMemoryEmbeddingProviders } from "./provider-adapters.js"; type MemoryIndexModule = typeof import("./index.js"); +type MemoryEmbeddingProvidersModule = + typeof import("../../../../src/plugins/memory-embedding-providers.js"); let getMemorySearchManager: MemoryIndexModule["getMemorySearchManager"]; let closeAllMemorySearchManagers: MemoryIndexModule["closeAllMemorySearchManagers"]; +let clearRegistry: MemoryEmbeddingProvidersModule["clearMemoryEmbeddingProviders"]; +let registerAdapter: MemoryEmbeddingProvidersModule["registerMemoryEmbeddingProvider"]; let embedBatchCalls = 0; let embedBatchInputCalls = 0; @@ -134,6 +139,10 @@ describe("memory index", () => { vi.resetModules(); await import("./test-runtime-mocks.js"); ({ getMemorySearchManager, closeAllMemorySearchManagers } = await import("./index.js")); + ({ + clearMemoryEmbeddingProviders: clearRegistry, + registerMemoryEmbeddingProvider: registerAdapter, + } = await import("../../../../src/plugins/memory-embedding-providers.js")); fixtureRoot = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-mem-fixtures-")); workspaceDir = path.join(fixtureRoot, "workspace"); memoryDir = path.join(workspaceDir, "memory"); @@ -161,6 +170,7 @@ describe("memory index", () => { afterEach(async () => { await closeAllMemorySearchManagers(); + clearRegistry(); managersForCleanup.clear(); }); @@ -168,6 +178,8 @@ describe("memory index", () => { // Perf: most suites don't need atomic swap behavior for full reindexes. // Keep atomic reindex tests on the safe path. vi.stubEnv("OPENCLAW_TEST_MEMORY_UNSAFE_REINDEX", "1"); + clearRegistry(); + registerBuiltInMemoryEmbeddingProviders({ registerMemoryEmbeddingProvider: registerAdapter }); embedBatchCalls = 0; embedBatchInputCalls = 0; providerCalls = []; diff --git a/extensions/memory-core/src/memory/index.ts b/extensions/memory-core/src/memory/index.ts index 5111806521a..bb201554f7b 100644 --- a/extensions/memory-core/src/memory/index.ts +++ b/extensions/memory-core/src/memory/index.ts @@ -3,7 +3,7 @@ export type { MemoryEmbeddingProbeResult, MemorySearchManager, MemorySearchResult, -} from "../engine-host-api.js"; +} from "openclaw/plugin-sdk/memory-core-host-engine-storage"; export { closeAllMemorySearchManagers, getMemorySearchManager, diff --git a/extensions/memory-core/src/memory/internal.ts b/extensions/memory-core/src/memory/internal.ts index 40e763597b2..319b9476c52 100644 --- a/extensions/memory-core/src/memory/internal.ts +++ b/extensions/memory-core/src/memory/internal.ts @@ -1 +1 @@ -export { buildFileEntry } from "../engine-host-api.js"; +export { buildFileEntry } from "openclaw/plugin-sdk/memory-core-host-engine-storage"; diff --git a/extensions/memory-core/src/memory/manager-embedding-ops.ts b/extensions/memory-core/src/memory/manager-embedding-ops.ts index baef4fe2543..896a20bf783 100644 --- a/extensions/memory-core/src/memory/manager-embedding-ops.ts +++ b/extensions/memory-core/src/memory/manager-embedding-ops.ts @@ -1,21 +1,23 @@ import fs from "node:fs/promises"; import { - buildMultimodalChunkForIndexing, - chunkMarkdown, - createSubsystemLogger, enforceEmbeddingMaxInputTokens, estimateStructuredEmbeddingInputBytes, estimateUtf8Bytes, hasNonTextEmbeddingParts, + type EmbeddingInput, +} from "openclaw/plugin-sdk/memory-core-host-engine-embeddings"; +import { createSubsystemLogger } from "openclaw/plugin-sdk/memory-core-host-engine-foundation"; +import { type SessionFileEntry } from "openclaw/plugin-sdk/memory-core-host-engine-qmd"; +import { + buildMultimodalChunkForIndexing, + chunkMarkdown, hashText, parseEmbedding, remapChunkLines, - type EmbeddingInput, type MemoryChunk, type MemoryFileEntry, type MemorySource, - type SessionFileEntry, -} from "../engine-host-api.js"; +} from "openclaw/plugin-sdk/memory-core-host-engine-storage"; import { MemoryManagerSyncOps } from "./manager-sync-ops.js"; const VECTOR_TABLE = "chunks_vec"; diff --git a/extensions/memory-core/src/memory/manager-search.ts b/extensions/memory-core/src/memory/manager-search.ts index 2b7ae663215..14f981491e6 100644 --- a/extensions/memory-core/src/memory/manager-search.ts +++ b/extensions/memory-core/src/memory/manager-search.ts @@ -1,5 +1,9 @@ import type { DatabaseSync } from "node:sqlite"; -import { cosineSimilarity, parseEmbedding, truncateUtf16Safe } from "../engine-host-api.js"; +import { truncateUtf16Safe } from "openclaw/plugin-sdk/memory-core-host-engine-foundation"; +import { + cosineSimilarity, + parseEmbedding, +} from "openclaw/plugin-sdk/memory-core-host-engine-storage"; const vectorToBlob = (embedding: number[]): Buffer => Buffer.from(new Float32Array(embedding).buffer); diff --git a/extensions/memory-core/src/memory/manager-sync-ops.ts b/extensions/memory-core/src/memory/manager-sync-ops.ts index 2fd42639788..06db48b7b19 100644 --- a/extensions/memory-core/src/memory/manager-sync-ops.ts +++ b/extensions/memory-core/src/memory/manager-sync-ops.ts @@ -7,29 +7,35 @@ import chokidar, { FSWatcher } from "chokidar"; import { buildCaseInsensitiveExtensionGlob, classifyMemoryMultimodalPath, - createSubsystemLogger, - ensureDir, - ensureMemoryIndexSchema, getMemoryMultimodalExtensions, - hashText, - isFileMissingError, - listMemoryFiles, - listSessionFilesForAgent, - normalizeExtraMemoryPaths, +} from "openclaw/plugin-sdk/memory-core-host-engine-embeddings"; +import { + createSubsystemLogger, onSessionTranscriptUpdate, resolveAgentDir, resolveSessionTranscriptsDirForAgent, resolveUserPath, - runWithConcurrency, + type OpenClawConfig, + type ResolvedMemorySearchConfig, +} from "openclaw/plugin-sdk/memory-core-host-engine-foundation"; +import { + buildSessionEntry, + listSessionFilesForAgent, sessionPathForFile, + type SessionFileEntry, +} from "openclaw/plugin-sdk/memory-core-host-engine-qmd"; +import { + ensureDir, + ensureMemoryIndexSchema, + hashText, + isFileMissingError, + listMemoryFiles, + normalizeExtraMemoryPaths, + runWithConcurrency, type MemoryFileEntry, type MemorySource, type MemorySyncProgressUpdate, - type OpenClawConfig, - type ResolvedMemorySearchConfig, - type SessionFileEntry, - buildSessionEntry, -} from "../engine-host-api.js"; +} from "openclaw/plugin-sdk/memory-core-host-engine-storage"; import { createEmbeddingProvider, type EmbeddingProvider, diff --git a/extensions/memory-core/src/memory/manager.async-search.test.ts b/extensions/memory-core/src/memory/manager.async-search.test.ts index 27c8f8d6fe4..3b32aa16619 100644 --- a/extensions/memory-core/src/memory/manager.async-search.test.ts +++ b/extensions/memory-core/src/memory/manager.async-search.test.ts @@ -1,8 +1,8 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; +import type { OpenClawConfig } from "openclaw/plugin-sdk/memory-core-host-engine-foundation"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import type { OpenClawConfig } from "../engine-host-api.js"; import type { MemoryIndexManager } from "./index.js"; import { closeAllMemorySearchManagers } from "./index.js"; import { createOpenAIEmbeddingProviderMock } from "./test-embeddings-mock.js"; diff --git a/extensions/memory-core/src/memory/manager.atomic-reindex.test.ts b/extensions/memory-core/src/memory/manager.atomic-reindex.test.ts index fe26316900d..577c318b51f 100644 --- a/extensions/memory-core/src/memory/manager.atomic-reindex.test.ts +++ b/extensions/memory-core/src/memory/manager.atomic-reindex.test.ts @@ -1,8 +1,8 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; +import type { OpenClawConfig } from "openclaw/plugin-sdk/memory-core-host-engine-foundation"; import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import type { OpenClawConfig } from "../engine-host-api.js"; import type { MemoryIndexManager } from "./index.js"; let shouldFail = false; diff --git a/extensions/memory-core/src/memory/manager.batch.test.ts b/extensions/memory-core/src/memory/manager.batch.test.ts index 761d4cea1c7..238d04aa2c4 100644 --- a/extensions/memory-core/src/memory/manager.batch.test.ts +++ b/extensions/memory-core/src/memory/manager.batch.test.ts @@ -1,9 +1,9 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; +import type { OpenClawConfig } from "openclaw/plugin-sdk/memory-core-host-engine-foundation"; import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { useFastShortTimeouts } from "../../../../test/helpers/fast-short-timeouts.js"; -import type { OpenClawConfig } from "../engine-host-api.js"; import { createOpenAIEmbeddingProviderMock } from "./test-embeddings-mock.js"; import { mockPublicPinnedHostname } from "./test-helpers/ssrf.js"; diff --git a/extensions/memory-core/src/memory/manager.get-concurrency.test.ts b/extensions/memory-core/src/memory/manager.get-concurrency.test.ts index af60bf7a8ef..783ef2664b7 100644 --- a/extensions/memory-core/src/memory/manager.get-concurrency.test.ts +++ b/extensions/memory-core/src/memory/manager.get-concurrency.test.ts @@ -2,8 +2,8 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; import { setTimeout as sleep } from "node:timers/promises"; +import type { OpenClawConfig } from "openclaw/plugin-sdk/memory-core-host-engine-foundation"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import type { OpenClawConfig } from "../engine-host-api.js"; import "./test-runtime-mocks.js"; import type { MemoryIndexManager } from "./index.js"; diff --git a/extensions/memory-core/src/memory/manager.mistral-provider.test.ts b/extensions/memory-core/src/memory/manager.mistral-provider.test.ts index 5d4e54a480f..1f4f9f85342 100644 --- a/extensions/memory-core/src/memory/manager.mistral-provider.test.ts +++ b/extensions/memory-core/src/memory/manager.mistral-provider.test.ts @@ -1,8 +1,8 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; +import type { OpenClawConfig } from "openclaw/plugin-sdk/memory-core-host-engine-foundation"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import type { OpenClawConfig } from "../engine-host-api.js"; import { DEFAULT_OLLAMA_EMBEDDING_MODEL } from "./embeddings-ollama.js"; import type { EmbeddingProvider, diff --git a/extensions/memory-core/src/memory/manager.read-file.test.ts b/extensions/memory-core/src/memory/manager.read-file.test.ts index 2be8910a79d..98b161a9935 100644 --- a/extensions/memory-core/src/memory/manager.read-file.test.ts +++ b/extensions/memory-core/src/memory/manager.read-file.test.ts @@ -1,8 +1,8 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; +import type { OpenClawConfig } from "openclaw/plugin-sdk/memory-core-host-engine-foundation"; import { afterAll, afterEach, beforeAll, describe, expect, it, vi } from "vitest"; -import type { OpenClawConfig } from "../engine-host-api.js"; import { resetEmbeddingMocks } from "./embedding.test-mocks.js"; import type { MemoryIndexManager } from "./index.js"; import { getRequiredMemoryIndexManager } from "./test-manager-helpers.js"; diff --git a/extensions/memory-core/src/memory/manager.readonly-recovery.test.ts b/extensions/memory-core/src/memory/manager.readonly-recovery.test.ts index ca1a150f98f..a0b601c47a9 100644 --- a/extensions/memory-core/src/memory/manager.readonly-recovery.test.ts +++ b/extensions/memory-core/src/memory/manager.readonly-recovery.test.ts @@ -2,8 +2,8 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; import type { DatabaseSync } from "node:sqlite"; +import type { OpenClawConfig } from "openclaw/plugin-sdk/memory-core-host-engine-foundation"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import type { OpenClawConfig } from "../engine-host-api.js"; import { resetEmbeddingMocks } from "./embedding.test-mocks.js"; import { MemoryIndexManager } from "./manager.js"; import { getRequiredMemoryIndexManager } from "./test-manager-helpers.js"; diff --git a/extensions/memory-core/src/memory/manager.ts b/extensions/memory-core/src/memory/manager.ts index a5a82217482..654a6869ec4 100644 --- a/extensions/memory-core/src/memory/manager.ts +++ b/extensions/memory-core/src/memory/manager.ts @@ -1,22 +1,24 @@ import type { DatabaseSync } from "node:sqlite"; import { type FSWatcher } from "chokidar"; import { - extractKeywords, - readMemoryFile, resolveAgentDir, resolveAgentWorkspaceDir, resolveGlobalSingleton, resolveMemorySearchConfig, + createSubsystemLogger, + type OpenClawConfig, + type ResolvedMemorySearchConfig, +} from "openclaw/plugin-sdk/memory-core-host-engine-foundation"; +import { extractKeywords } from "openclaw/plugin-sdk/memory-core-host-engine-qmd"; +import { + readMemoryFile, type MemoryEmbeddingProbeResult, type MemoryProviderStatus, type MemorySearchManager, type MemorySearchResult, type MemorySource, type MemorySyncProgressUpdate, - type OpenClawConfig, - type ResolvedMemorySearchConfig, - createSubsystemLogger, -} from "../engine-host-api.js"; +} from "openclaw/plugin-sdk/memory-core-host-engine-storage"; import { createEmbeddingProvider, type EmbeddingProvider, diff --git a/extensions/memory-core/src/memory/manager.vector-dedupe.test.ts b/extensions/memory-core/src/memory/manager.vector-dedupe.test.ts index d83780c5700..3620b77fa0c 100644 --- a/extensions/memory-core/src/memory/manager.vector-dedupe.test.ts +++ b/extensions/memory-core/src/memory/manager.vector-dedupe.test.ts @@ -1,8 +1,8 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; +import type { OpenClawConfig } from "openclaw/plugin-sdk/memory-core-host-engine-foundation"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import type { OpenClawConfig } from "../engine-host-api.js"; import type { MemoryIndexManager } from "./index.js"; vi.mock("./embeddings.js", () => { diff --git a/extensions/memory-core/src/memory/manager.watcher-config.test.ts b/extensions/memory-core/src/memory/manager.watcher-config.test.ts index 4598a898df5..4c136659918 100644 --- a/extensions/memory-core/src/memory/manager.watcher-config.test.ts +++ b/extensions/memory-core/src/memory/manager.watcher-config.test.ts @@ -1,10 +1,13 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; +import type { + MemorySearchConfig, + OpenClawConfig, +} from "openclaw/plugin-sdk/memory-core-host-engine-foundation"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import type { OpenClawConfig } from "../engine-host-api.js"; -import type { MemorySearchConfig } from "../engine-host-api.js"; import type { MemoryIndexManager } from "./index.js"; +import { registerBuiltInMemoryEmbeddingProviders } from "./provider-adapters.js"; const { watchMock } = vi.hoisted(() => ({ watchMock: vi.fn(() => ({ @@ -35,9 +38,13 @@ vi.mock("./embeddings.js", () => ({ })); type MemoryIndexModule = typeof import("./index.js"); +type MemoryEmbeddingProvidersModule = + typeof import("../../../../src/plugins/memory-embedding-providers.js"); let getMemorySearchManager: MemoryIndexModule["getMemorySearchManager"]; let closeAllMemorySearchManagers: MemoryIndexModule["closeAllMemorySearchManagers"]; +let clearRegistry: MemoryEmbeddingProvidersModule["clearMemoryEmbeddingProviders"]; +let registerAdapter: MemoryEmbeddingProvidersModule["registerMemoryEmbeddingProvider"]; describe("memory watcher config", () => { let manager: MemoryIndexManager | null = null; @@ -47,7 +54,13 @@ describe("memory watcher config", () => { beforeEach(async () => { vi.resetModules(); ({ getMemorySearchManager, closeAllMemorySearchManagers } = await import("./index.js")); + ({ + clearMemoryEmbeddingProviders: clearRegistry, + registerMemoryEmbeddingProvider: registerAdapter, + } = await import("../../../../src/plugins/memory-embedding-providers.js")); vi.clearAllMocks(); + clearRegistry(); + registerBuiltInMemoryEmbeddingProviders({ registerMemoryEmbeddingProvider: registerAdapter }); }); afterEach(async () => { @@ -57,6 +70,7 @@ describe("memory watcher config", () => { manager = null; } await closeAllMemorySearchManagers(); + clearRegistry(); if (workspaceDir) { await fs.rm(workspaceDir, { recursive: true, force: true }); workspaceDir = ""; diff --git a/extensions/memory-core/src/memory/provider-adapters.ts b/extensions/memory-core/src/memory/provider-adapters.ts index e3d3ff1bd40..c31ac08dc03 100644 --- a/extensions/memory-core/src/memory/provider-adapters.ts +++ b/extensions/memory-core/src/memory/provider-adapters.ts @@ -16,12 +16,12 @@ import { createVoyageEmbeddingProvider, hasNonTextEmbeddingParts, listMemoryEmbeddingProviders, - resolveUserPath, runGeminiEmbeddingBatches, runOpenAiEmbeddingBatches, runVoyageEmbeddingBatches, type MemoryEmbeddingProviderAdapter, -} from "../engine-host-api.js"; +} from "openclaw/plugin-sdk/memory-core-host-engine-embeddings"; +import { resolveUserPath } from "openclaw/plugin-sdk/memory-core-host-engine-foundation"; function formatErrorMessage(err: unknown): string { return err instanceof Error ? err.message : String(err); diff --git a/extensions/memory-core/src/memory/qmd-manager.test.ts b/extensions/memory-core/src/memory/qmd-manager.test.ts index 4ff39909413..b49b43637e5 100644 --- a/extensions/memory-core/src/memory/qmd-manager.test.ts +++ b/extensions/memory-core/src/memory/qmd-manager.test.ts @@ -94,11 +94,11 @@ vi.mock("node:child_process", async (importOriginal) => { }); import { spawn as mockedSpawn } from "node:child_process"; +import type { OpenClawConfig } from "openclaw/plugin-sdk/memory-core-host-engine-foundation"; import { requireNodeSqlite, resolveMemoryBackendConfig, - type OpenClawConfig, -} from "../engine-host-api.js"; +} from "openclaw/plugin-sdk/memory-core-host-engine-storage"; import { QmdMemoryManager } from "./qmd-manager.js"; const spawnMock = mockedSpawn as unknown as Mock; diff --git a/extensions/memory-core/src/memory/qmd-manager.ts b/extensions/memory-core/src/memory/qmd-manager.ts index 13a99b24fb5..f9666a03a44 100644 --- a/extensions/memory-core/src/memory/qmd-manager.ts +++ b/extensions/memory-core/src/memory/qmd-manager.ts @@ -3,20 +3,28 @@ import os from "node:os"; import path from "node:path"; import readline from "node:readline"; import { - buildSessionEntry, createSubsystemLogger, + resolveAgentWorkspaceDir, + resolveGlobalSingleton, + resolveStateDir, + writeFileWithinRoot, + type OpenClawConfig, +} from "openclaw/plugin-sdk/memory-core-host-engine-foundation"; +import { + buildSessionEntry, deriveQmdScopeChannel, deriveQmdScopeChatType, extractKeywords, - isFileMissingError, isQmdScopeAllowed, listSessionFilesForAgent, parseQmdQueryJson, - resolveAgentWorkspaceDir, resolveCliSpawnInvocation, - resolveGlobalSingleton, - resolveStateDir, runCliCommand, + type QmdQueryResult, + type SessionFileEntry, +} from "openclaw/plugin-sdk/memory-core-host-engine-qmd"; +import { + isFileMissingError, statRegularFile, type MemoryEmbeddingProbeResult, type MemoryProviderStatus, @@ -24,14 +32,10 @@ import { type MemorySearchResult, type MemorySource, type MemorySyncProgressUpdate, - type OpenClawConfig, - type QmdQueryResult, type ResolvedMemoryBackendConfig, type ResolvedQmdConfig, type ResolvedQmdMcporterConfig, - type SessionFileEntry, - writeFileWithinRoot, -} from "../engine-host-api.js"; +} from "openclaw/plugin-sdk/memory-core-host-engine-storage"; import { requireNodeSqlite } from "./sqlite.js"; type SqliteDatabase = import("node:sqlite").DatabaseSync; diff --git a/extensions/memory-core/src/memory/search-manager.test.ts b/extensions/memory-core/src/memory/search-manager.test.ts index eab8fc4ceeb..e95dfd5249a 100644 --- a/extensions/memory-core/src/memory/search-manager.test.ts +++ b/extensions/memory-core/src/memory/search-manager.test.ts @@ -1,5 +1,5 @@ +import type { OpenClawConfig } from "openclaw/plugin-sdk/memory-core-host-engine-foundation"; import { beforeEach, describe, expect, it, vi } from "vitest"; -import type { OpenClawConfig } from "../engine-host-api.js"; function createManagerStatus(params: { backend: "qmd" | "builtin"; @@ -102,7 +102,7 @@ vi.mock("./qmd-manager.js", () => ({ }, })); -vi.mock("../../extensions/memory-core/src/memory/manager-runtime.js", () => ({ +vi.mock("./manager-runtime.js", () => ({ MemoryIndexManager: { get: mockMemoryIndexGet, }, diff --git a/extensions/memory-core/src/memory/search-manager.ts b/extensions/memory-core/src/memory/search-manager.ts index f68d67dc258..d7136709be8 100644 --- a/extensions/memory-core/src/memory/search-manager.ts +++ b/extensions/memory-core/src/memory/search-manager.ts @@ -1,13 +1,15 @@ import { createSubsystemLogger, resolveGlobalSingleton, + type OpenClawConfig, +} from "openclaw/plugin-sdk/memory-core-host-engine-foundation"; +import { resolveMemoryBackendConfig, type MemoryEmbeddingProbeResult, type MemorySearchManager, type MemorySyncProgressUpdate, - type OpenClawConfig, type ResolvedQmdConfig, -} from "../engine-host-api.js"; +} from "openclaw/plugin-sdk/memory-core-host-engine-storage"; const MEMORY_SEARCH_MANAGER_CACHE_KEY = Symbol.for("openclaw.memorySearchManagerCache"); type MemorySearchManagerCacheStore = { diff --git a/extensions/memory-core/src/memory/sqlite-vec.ts b/extensions/memory-core/src/memory/sqlite-vec.ts index c3a195b5473..babed6353f8 100644 --- a/extensions/memory-core/src/memory/sqlite-vec.ts +++ b/extensions/memory-core/src/memory/sqlite-vec.ts @@ -1 +1 @@ -export { loadSqliteVecExtension } from "../engine-host-api.js"; +export { loadSqliteVecExtension } from "openclaw/plugin-sdk/memory-core-host-engine-storage"; diff --git a/extensions/memory-core/src/memory/sqlite.ts b/extensions/memory-core/src/memory/sqlite.ts index 5e59ffd8aaa..1a20a483329 100644 --- a/extensions/memory-core/src/memory/sqlite.ts +++ b/extensions/memory-core/src/memory/sqlite.ts @@ -1 +1 @@ -export { requireNodeSqlite } from "../engine-host-api.js"; +export { requireNodeSqlite } from "openclaw/plugin-sdk/memory-core-host-engine-storage"; diff --git a/extensions/memory-core/src/memory/test-embeddings-mock.ts b/extensions/memory-core/src/memory/test-embeddings-mock.ts index cfa472d8725..9d69202018c 100644 --- a/extensions/memory-core/src/memory/test-embeddings-mock.ts +++ b/extensions/memory-core/src/memory/test-embeddings-mock.ts @@ -1,8 +1,8 @@ import { OPENAI_BATCH_ENDPOINT, runOpenAiEmbeddingBatches, - type MemoryChunk, -} from "../engine-host-api.js"; +} from "openclaw/plugin-sdk/memory-core-host-engine-embeddings"; +import type { MemoryChunk } from "openclaw/plugin-sdk/memory-core-host-engine-storage"; export function createOpenAIEmbeddingProviderMock(params: { embedQuery: (input: string) => Promise; diff --git a/extensions/memory-core/src/memory/test-manager-helpers.ts b/extensions/memory-core/src/memory/test-manager-helpers.ts index f8f31e18d0a..46ba08164bc 100644 --- a/extensions/memory-core/src/memory/test-manager-helpers.ts +++ b/extensions/memory-core/src/memory/test-manager-helpers.ts @@ -1,4 +1,4 @@ -import type { OpenClawConfig } from "../engine-host-api.js"; +import type { OpenClawConfig } from "openclaw/plugin-sdk/memory-core-host-engine-foundation"; import type { MemoryIndexManager } from "./index.js"; export async function getRequiredMemoryIndexManager(params: { diff --git a/extensions/memory-core/src/memory/test-manager.ts b/extensions/memory-core/src/memory/test-manager.ts index 5ec7ddd3235..65c16df7eee 100644 --- a/extensions/memory-core/src/memory/test-manager.ts +++ b/extensions/memory-core/src/memory/test-manager.ts @@ -1,4 +1,4 @@ -import type { OpenClawConfig } from "../engine-host-api.js"; +import type { OpenClawConfig } from "openclaw/plugin-sdk/memory-core-host-engine-foundation"; import { getMemorySearchManager, type MemoryIndexManager } from "./index.js"; export async function createMemoryManagerOrThrow(