Something went wrong. Try again.
fork of prime agent with changes i want but are not upstreamable probqbly (and some fixes)
Something went wrong. Try again.
1.9 kB · 51 lines
TypeScript
at main
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152import { describe, expect, it, vi } from "vitest";import { startsAgentRun } from "../src/core/agent-messages.js";import { ASYNC_BASH_COMPLETION_CUSTOM_TYPE, convertToLlm, createAsyncBashCompletionMessage,} from "../src/core/messages.js";import { createAsyncBashCompletionHostHandler } from "../src/core/rlm-runtime.js";
describe("async bash completion", () => { it("creates a bracket-grammar completion notice without a standing handle hint", () => { const message = createAsyncBashCompletionMessage({ pid: 42, command: "npm test", exitCode: 1, });
expect(message.customType).toBe(ASYNC_BASH_COMPLETION_CUSTOM_TYPE); expect(message.content).toBe('[bash-done pid:42 exit:1]\n\nCommand: "npm test"'); expect(convertToLlm([message])).toEqual([ { role: "user", content: [{ type: "text", text: message.content }], timestamp: message.timestamp, }, ]); });
it("starts a new agent run for a background completion follow-up", () => { const message = createAsyncBashCompletionMessage({ pid: 42, command: "long-running-tool", exitCode: 0 }); expect(startsAgentRun(message)).toBe(true); });
it("validates and forwards kernel completion payloads", async () => { const completion = vi.fn(); const handler = createAsyncBashCompletionHostHandler(completion); const payload = { pid: 42, command: "npm test", exitCode: 0 };
await expect(handler(payload)).resolves.toEqual({}); expect(completion).toHaveBeenCalledWith(payload); });
it.each([ [{ pid: 0, command: "ok", exitCode: 0 }, "positive integer"], [{ pid: 1, command: "", exitCode: 0 }, "non-empty string"], [{ pid: 1, command: "ok", exitCode: 0.5 }, "exitCode"], ])("rejects an invalid payload %#", async (payload, error) => { const handler = createAsyncBashCompletionHostHandler(() => undefined); await expect(handler(payload)).rejects.toThrow(error); });});