import { execFileSync } from "node:child_process"
import { mkdtempSync, readFileSync, realpathSync, rmSync, writeFileSync } from "node:fs"
import { tmpdir } from "node:os"
import { join } from "node:path"
import { Agent, shutdown } from "cognitio-agent-sdk"
const directory = realpathSync(mkdtempSync(join(tmpdir(), "cognitio-checkpoint-")))
const file = join(directory, "note.txt")
const agent = new Agent({ cwd: directory, disallowedTools: ["*"] })
try {
execFileSync("git", ["init", directory], { stdio: "ignore" })
writeFileSync(file, "original\n")
const session = await agent.createSession({ title: "File rewind demo" })
const checkpoint = await session.checkpoint("before-change")
writeFileSync(file, "changed\n")
const restored = await session.rewind(checkpoint.id)
console.log(readFileSync(file, "utf8").trim()) // original
console.log(restored.affectedFiles)
console.log((await session.listCheckpoints()).map((item) => item.id))
} finally {
try {
await agent.close().finally(() => shutdown())
} finally {
rmSync(directory, { recursive: true, force: true })
}
}