





























@@ -5,7 +5,8 @@ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
55import type { SessionEntry } from "../../config/sessions.js";
66import {
77clearMemoryPluginState,
8-registerMemoryFlushPlanResolver,
8+registerMemoryCapability,
9+type MemoryFlushPlanResolver,
910} from "../../plugins/memory-state.js";
1011import type { TemplateContext } from "../templating.js";
1112import {
@@ -21,6 +22,10 @@ const runEmbeddedPiAgentMock = vi.fn();
2122const refreshQueuedFollowupSessionMock = vi.fn();
2223const incrementCompactionCountMock = vi.fn();
232425+function registerMemoryFlushPlanResolverForTest(resolver: MemoryFlushPlanResolver): void {
26+registerMemoryCapability("memory-core", { flushPlanResolver: resolver });
27+}
28+2429function createReplyOperation() {
2530return {
2631abortSignal: new AbortController().signal,
@@ -34,7 +39,7 @@ describe("runMemoryFlushIfNeeded", () => {
34393540beforeEach(async () => {
3641rootDir = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-memory-unit-"));
37-registerMemoryFlushPlanResolver(() => ({
42+registerMemoryFlushPlanResolverForTest(() => ({
3843softThresholdTokens: 4_000,
3944forceFlushTranscriptBytes: 1_000_000_000,
4045reserveTokensFloor: 20_000,
@@ -180,7 +185,7 @@ describe("runMemoryFlushIfNeeded", () => {
180185});
181186182187it("runs memory flush on the configured maintenance model without active fallbacks", async () => {
183-registerMemoryFlushPlanResolver(() => ({
188+registerMemoryFlushPlanResolverForTest(() => ({
184189softThresholdTokens: 4_000,
185190forceFlushTranscriptBytes: 1_000_000_000,
186191reserveTokensFloor: 20_000,
@@ -317,7 +322,7 @@ describe("runMemoryFlushIfNeeded", () => {
317322`${JSON.stringify({ message: { role: "user", content: "x".repeat(5_000) } })}\n`,
318323"utf8",
319324);
320-registerMemoryFlushPlanResolver(() => ({
325+registerMemoryFlushPlanResolverForTest(() => ({
321326softThresholdTokens: 1,
322327forceFlushTranscriptBytes: 1_000_000_000,
323328reserveTokensFloor: 0,
@@ -367,7 +372,7 @@ describe("runMemoryFlushIfNeeded", () => {
367372`${JSON.stringify({ message: { role: "user", content: "x".repeat(5_000) } })}\n`,
368373"utf8",
369374);
370-registerMemoryFlushPlanResolver(() => ({
375+registerMemoryFlushPlanResolverForTest(() => ({
371376softThresholdTokens: 1,
372377forceFlushTranscriptBytes: 1_000_000_000,
373378reserveTokensFloor: 0,
@@ -442,7 +447,7 @@ describe("runMemoryFlushIfNeeded", () => {
442447 })}\n`,
443448"utf8",
444449);
445-registerMemoryFlushPlanResolver(() => ({
450+registerMemoryFlushPlanResolverForTest(() => ({
446451softThresholdTokens: 4_000,
447452forceFlushTranscriptBytes: 1_000_000_000,
448453reserveTokensFloor: 0,
@@ -493,7 +498,7 @@ describe("runMemoryFlushIfNeeded", () => {
493498 })}\n`,
494499"utf8",
495500);
496-registerMemoryFlushPlanResolver(() => ({
501+registerMemoryFlushPlanResolverForTest(() => ({
497502softThresholdTokens: 4_000,
498503forceFlushTranscriptBytes: 1_000_000_000,
499504reserveTokensFloor: 0,
@@ -553,7 +558,7 @@ describe("runMemoryFlushIfNeeded", () => {
553558].join("\n"),
554559"utf8",
555560);
556-registerMemoryFlushPlanResolver(() => ({
561+registerMemoryFlushPlanResolverForTest(() => ({
557562softThresholdTokens: 4_000,
558563forceFlushTranscriptBytes: 1_000_000_000,
559564reserveTokensFloor: 0,
@@ -725,7 +730,7 @@ describe("runMemoryFlushIfNeeded", () => {
725730},
726731},
727732};
728-registerMemoryFlushPlanResolver(() => ({
733+registerMemoryFlushPlanResolverForTest(() => ({
729734softThresholdTokens: 4_000,
730735forceFlushTranscriptBytes: 1_000_000_000,
731736reserveTokensFloor: 20_000,
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。