Download src/hooks/bundled/session-memory/handler-auto-reset.test.ts from SaylorTwift/openclaw: direct link, hf CLI and curl.
- Browser
- Download file 2.79 kB
-
https://huggingface.co/SaylorTwift/openclaw/resolve/main/src/hooks/bundled/session-memory/handler-auto-reset.test.ts
- Command line
-
hf download hf://SaylorTwift/openclaw/src/hooks/bundled/session-memory/handler-auto-reset.test.ts
-
curl -L -o handler-auto-reset.test.ts https://huggingface.co/SaylorTwift/openclaw/resolve/main/src/hooks/bundled/session-memory/handler-auto-reset.test.ts
2.79 kB
| import fs from "node:fs/promises"; | |
| import path from "node:path"; | |
| import { expectDefined } from "@openclaw/normalization-core"; | |
| import { afterEach, beforeEach, describe, expect, it } from "vitest"; | |
| import { useAutoCleanupTempDirTracker } from "../../../../test/helpers/temp-dir.js"; | |
| import type { OpenClawConfig } from "../../../config/config.js"; | |
| import { replaceTranscriptEvents } from "../../../config/sessions/session-accessor.js"; | |
| import { createInternalHookEvent } from "../../internal-hooks.js"; | |
| import handler, { flushSessionMemoryWritesForTest } from "./handler.js"; | |
| const tempDirs = useAutoCleanupTempDirTracker(afterEach); | |
| describe("session-memory automatic reset", () => { | |
| let tempDir = ""; | |
| beforeEach(() => { | |
| tempDir = tempDirs.make("openclaw-session-memory-auto-"); | |
| }); | |
| afterEach(async () => { | |
| await flushSessionMemoryWritesForTest(); | |
| }); | |
| it.each(["daily", "idle"] as const)( | |
| "creates memory from the ended session on %s reset", | |
| async (reason) => { | |
| const sessionKey = "agent:main:main"; | |
| const sessionId = `${reason}-session`; | |
| const storePath = path.join(tempDir, "sessions.json"); | |
| const cfg = { | |
| agents: { defaults: { workspace: tempDir } }, | |
| session: { store: storePath }, | |
| } satisfies OpenClawConfig; | |
| await replaceTranscriptEvents({ agentId: "main", sessionId, sessionKey, storePath }, [ | |
| { | |
| type: "message", | |
| id: `${reason}-user`, | |
| parentId: null, | |
| message: { | |
| role: "user", | |
| content: `Remember the ${reason} rollover`, | |
| __openclaw: { senderIsOwner: true }, | |
| }, | |
| }, | |
| { | |
| type: "message", | |
| id: `${reason}-assistant`, | |
| parentId: `${reason}-user`, | |
| message: { role: "assistant", content: "Captured automatically" }, | |
| }, | |
| ]); | |
| const event = createInternalHookEvent("session", "auto-reset", sessionKey, { | |
| cfg, | |
| agentId: "main", | |
| workspaceDir: tempDir, | |
| storePath, | |
| sessionEntry: { sessionId }, | |
| reason, | |
| }); | |
| const completed = handler(event); | |
| expect(completed).toBeInstanceOf(Promise); | |
| await completed; | |
| const memoryDir = path.join(tempDir, "memory"); | |
| const files = await fs.readdir(memoryDir); | |
| const memoryContent = await fs.readFile( | |
| path.join(memoryDir, expectDefined(files[0], "files[0] test invariant")), | |
| "utf8", | |
| ); | |
| expect(files).toHaveLength(1); | |
| expect(memoryContent).toContain(`- **Reason**: ${reason}`); | |
| expect(memoryContent).toContain(`user: ${JSON.stringify(`Remember the ${reason} rollover`)}`); | |
| expect(memoryContent).toContain(`assistant: ${JSON.stringify("Captured automatically")}`); | |
| }, | |
| ); | |
| }); | |