import assert from "node:assert/strict"; import { MemoryStorage } from "../workspace/journal.mjs"; import { ReplayTimeline } from "../worker/replay.mjs"; import { createCheckpoint } from "../workspace/recovery.mjs"; import { ProjectWorkflow } from "./project-workflow.mjs"; import { recoveryView } from "./recovery-panel.mjs"; const workflow = new ProjectWorkflow({ contextId: "linuxcnc-2.10.0-pre0-wasm-m1-py-c1", storage: new MemoryStorage(), projectId: "frontend-m3" }); const imported = workflow.importFiles([{ path: "config/main.ini", data: "[EMC]\n" }, { path: "programs/main.ngc", data: "G0 X1\n" }]); assert.equal(imported.status, "verified"); assert.deepEqual(workflow.exportFiles(), [{ path: "config/main.ini", data: "[EMC]\n" }, { path: "programs/main.ngc", data: "G0 X1\n" }]); const timeline = new ReplayTimeline(); timeline.appendEvent(1, 0, "SESSION_READY", {}); timeline.checkpoint(1, 0, { tick: 0 }); const checkpoint = createCheckpoint({ contextId: workflow.contextId, timeline, state: { tick: 0 }, operations: [] }); const pkg = workflow.package({ timeline, checkpoint, committedSeq: 1 }); assert.equal(workflow.verify(pkg).package_hash, pkg.package_hash); const migrated = workflow.migrate(pkg, 2); assert.equal(workflow.verify(migrated, { expectedVersion: 2 }).format_version, 2); const offline = workflow.offline(migrated, [{ path: "ui/index.html", data: "
" }]); assert.equal(workflow.verifyOffline(offline, { workspacePackage: migrated, available: [{ path: "ui/index.html", data: "
" }] }).status, "ready"); assert.equal(recoveryView({ status: "blocked", half_commits: [2] }).message, "half_commit_ignored"); console.log(`frontend_m3=passed files=${workflow.exportFiles().length}`);