feat: expose bot task progress
This commit is contained in:
+22
-1
@@ -1,7 +1,9 @@
|
||||
import assert from "node:assert/strict";
|
||||
import { spawn } from "node:child_process";
|
||||
import path from "node:path";
|
||||
import test from "node:test";
|
||||
import type { RequestPermissionRequest } from "@agentclientprotocol/sdk";
|
||||
import { decidePermission } from "../src/acp/client.js";
|
||||
import { AcpClient, decidePermission } from "../src/acp/client.js";
|
||||
|
||||
const request = (rawInput: unknown, overrides: Partial<RequestPermissionRequest["toolCall"]> = {}): RequestPermissionRequest => ({
|
||||
sessionId: "session",
|
||||
@@ -30,3 +32,22 @@ test("permission deny and allowlist fail closed", () => {
|
||||
assert.deepEqual(decidePermission(request("git status", { name: undefined, title: "bash git status" }), unanchored).outcome, { outcome: "selected", optionId: "reject" });
|
||||
assert.deepEqual(decidePermission(request({ command: "git status", env: { PATH: "/tmp" } }), unanchored).outcome, { outcome: "selected", optionId: "reject" });
|
||||
});
|
||||
|
||||
test("reports activity for every update from the active session", async () => {
|
||||
const child = spawn(process.execPath, [path.resolve("test/fixtures/fake-acp-agent.mjs")], { stdio: ["pipe", "pipe", "pipe"] });
|
||||
let activities = 0;
|
||||
const client = new AcpClient(child, {
|
||||
initializeTimeoutMs: 1_000,
|
||||
policy: { mode: "deny", allowedTools: [], allowedCommandPatterns: [] },
|
||||
onSessionActivity: () => { activities++; }
|
||||
});
|
||||
try {
|
||||
await client.initialize();
|
||||
await client.newSession(path.resolve("."));
|
||||
assert.equal(await client.prompt("activity"), "firstsecond");
|
||||
assert.equal(activities, 2);
|
||||
} finally {
|
||||
client.close();
|
||||
child.kill("SIGTERM");
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user