mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-30 11:21:07 +00:00
125 lines
3.5 KiB
TypeScript
125 lines
3.5 KiB
TypeScript
import type { OpenClawConfig } from "../config/config.js";
|
|
import type { MemoryCitationsMode } from "../config/types.memory.js";
|
|
import type {
|
|
MemoryEmbeddingProbeResult,
|
|
MemoryProviderStatus,
|
|
MemorySyncProgressUpdate,
|
|
} from "../plugin-sdk/memory-core-host-engine-storage.js";
|
|
|
|
export type MemoryPromptSectionBuilder = (params: {
|
|
availableTools: Set<string>;
|
|
citationsMode?: MemoryCitationsMode;
|
|
}) => string[];
|
|
|
|
export type MemoryFlushPlan = {
|
|
softThresholdTokens: number;
|
|
forceFlushTranscriptBytes: number;
|
|
reserveTokensFloor: number;
|
|
prompt: string;
|
|
systemPrompt: string;
|
|
relativePath: string;
|
|
};
|
|
|
|
export type MemoryFlushPlanResolver = (params: {
|
|
cfg?: OpenClawConfig;
|
|
nowMs?: number;
|
|
}) => MemoryFlushPlan | null;
|
|
|
|
export type RegisteredMemorySearchManager = {
|
|
status(): MemoryProviderStatus;
|
|
probeEmbeddingAvailability(): Promise<MemoryEmbeddingProbeResult>;
|
|
probeVectorAvailability(): Promise<boolean>;
|
|
sync?(params?: {
|
|
reason?: string;
|
|
force?: boolean;
|
|
sessionFiles?: string[];
|
|
progress?: (update: MemorySyncProgressUpdate) => void;
|
|
}): Promise<void>;
|
|
close?(): Promise<void>;
|
|
};
|
|
|
|
export type MemoryRuntimeBackendConfig = {
|
|
backend: "builtin" | "qmd";
|
|
qmd?: object;
|
|
};
|
|
|
|
export type MemoryPluginRuntime = {
|
|
getMemorySearchManager(params: {
|
|
cfg: OpenClawConfig;
|
|
agentId: string;
|
|
purpose?: "default" | "status";
|
|
}): Promise<{
|
|
manager: RegisteredMemorySearchManager | null;
|
|
error?: string;
|
|
}>;
|
|
resolveMemoryBackendConfig(params: {
|
|
cfg: OpenClawConfig;
|
|
agentId: string;
|
|
}): MemoryRuntimeBackendConfig;
|
|
closeAllMemorySearchManagers?(): Promise<void>;
|
|
};
|
|
|
|
type MemoryPluginState = {
|
|
promptBuilder?: MemoryPromptSectionBuilder;
|
|
flushPlanResolver?: MemoryFlushPlanResolver;
|
|
runtime?: MemoryPluginRuntime;
|
|
};
|
|
|
|
const memoryPluginState: MemoryPluginState = {};
|
|
|
|
export function registerMemoryPromptSection(builder: MemoryPromptSectionBuilder): void {
|
|
memoryPluginState.promptBuilder = builder;
|
|
}
|
|
|
|
export function buildMemoryPromptSection(params: {
|
|
availableTools: Set<string>;
|
|
citationsMode?: MemoryCitationsMode;
|
|
}): string[] {
|
|
return memoryPluginState.promptBuilder?.(params) ?? [];
|
|
}
|
|
|
|
export function getMemoryPromptSectionBuilder(): MemoryPromptSectionBuilder | undefined {
|
|
return memoryPluginState.promptBuilder;
|
|
}
|
|
|
|
export function registerMemoryFlushPlanResolver(resolver: MemoryFlushPlanResolver): void {
|
|
memoryPluginState.flushPlanResolver = resolver;
|
|
}
|
|
|
|
export function resolveMemoryFlushPlan(params: {
|
|
cfg?: OpenClawConfig;
|
|
nowMs?: number;
|
|
}): MemoryFlushPlan | null {
|
|
return memoryPluginState.flushPlanResolver?.(params) ?? null;
|
|
}
|
|
|
|
export function getMemoryFlushPlanResolver(): MemoryFlushPlanResolver | undefined {
|
|
return memoryPluginState.flushPlanResolver;
|
|
}
|
|
|
|
export function registerMemoryRuntime(runtime: MemoryPluginRuntime): void {
|
|
memoryPluginState.runtime = runtime;
|
|
}
|
|
|
|
export function getMemoryRuntime(): MemoryPluginRuntime | undefined {
|
|
return memoryPluginState.runtime;
|
|
}
|
|
|
|
export function hasMemoryRuntime(): boolean {
|
|
return memoryPluginState.runtime !== undefined;
|
|
}
|
|
|
|
export function restoreMemoryPluginState(state: MemoryPluginState): void {
|
|
memoryPluginState.promptBuilder = state.promptBuilder;
|
|
memoryPluginState.flushPlanResolver = state.flushPlanResolver;
|
|
memoryPluginState.runtime = state.runtime;
|
|
}
|
|
|
|
export function clearMemoryPluginState(): void {
|
|
memoryPluginState.promptBuilder = undefined;
|
|
memoryPluginState.flushPlanResolver = undefined;
|
|
memoryPluginState.runtime = undefined;
|
|
}
|
|
|
|
export const _resetMemoryPluginState = clearMemoryPluginState;
|