import { mkdtemp, rm, writeFile } from "node:fs/promises";
import { tmpdir } from "node:os";
import { join } from "node:path";
import { pathToFileURL } from "node:url";
import { openai, type ModelProvider } from "@agentium/core";
import { agentDriver, HarnessRuntime, research } from "@agentium/harness";
export async function reviewWorkspace(model: ModelProvider) {
// This demonstration owns a temporary workspace containing two selected files.
const root = await mkdtemp(join(tmpdir(), "agentium-review-"));
const identity = { tenantId: "demo", userId: "reviewer" };
const sessionId = "workspace-review";
const runtime = new HarnessRuntime({
definition: research({
id: "workspace-reviewer",
files: { id: "release-notes", root, files: ["README.md", "CHECKLIST.md"] },
}),
driver: agentDriver({
name: "release-reviewer", model,
instructions: "Compare the supplied files. Report unresolved release tasks with source filenames. Do not claim to run checks.",
}),
requirements: ["filesystem:read"],
grants: { toolIds: [], modelRoles: ["main"] },
budgets: { maxModelCalls: 2, maxToolCalls: 0, maxTokens: 6000 },
});
try {
await writeFile(join(root, "README.md"), "# Atlas\nRelease 4.0 requires docs and migration verification.\n");
await writeFile(join(root, "CHECKLIST.md"), "# Release\n- [x] Package published\n- [ ] Verify migration example\n");
const result = await runtime.run("What remains before we announce the release?", { identity, sessionId });
if (result.status !== "completed") throw new Error(`Review ended: ${result.status} (${result.reason?.code})`);
console.log(result.text);
return result;
} finally {
try {
const diagnostics = await runtime.resources.closeSession(identity, sessionId);
if (diagnostics.length) throw new Error(`Session cleanup failed: ${diagnostics.join(", ")}`);
} finally {
await rm(root, { recursive: true, force: true });
}
}
}
if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {
await reviewWorkspace(openai(process.env.OPENAI_MODEL ?? "gpt-6.1-sol"));
}