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.
2.9 kB · 82 lines
TypeScript
at main
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283import { mkdirSync, rmSync } from "node:fs";import { tmpdir } from "node:os";import { join } from "node:path";import { afterEach, beforeEach, describe, expect, it } from "vitest";import { getBundledSkillsDir } from "../src/config.js";import type { PythonSkillRuntimeInfo } from "../src/core/skills.js";import { IpythonKernelProvisioner } from "../src/core/tools/ipython.js";
function bundledDisplaySkill(): PythonSkillRuntimeInfo { const packagePath = join(getBundledSkillsDir(), "display"); return { name: "display", importName: "display", packagePath, pyprojectPath: join(packagePath, "pyproject.toml"), };}
describe("display skill in persistent kernel", () => { let tempDir: string; let provisioner: IpythonKernelProvisioner | undefined;
beforeEach(() => { tempDir = join(tmpdir(), `pi-display-test-${Date.now()}-${Math.random().toString(36).slice(2)}`); mkdirSync(tempDir, { recursive: true }); });
afterEach(async () => { await provisioner?.dispose(); provisioner = undefined; rmSync(tempDir, { recursive: true, force: true }); });
it("emits markdown displays and excludes full content from execution result", async () => { provisioner = new IpythonKernelProvisioner(tempDir, { pythonSkills: [bundledDisplaySkill()], });
const manager = await provisioner.ensure(); const result = await manager.execute('await display("# Title\\n\\nSome markdown content", title="Audit Report")');
expect(result.status).toBe("ok"); expect(result.result).toContain("Displayed markdown"); expect(result.displays).toHaveLength(1); expect(result.displays?.[0]).toEqual({ content: "# Title\n\nSome markdown content", title: "Audit Report", format: "markdown", }); });
it("emits diff displays with display.diff helper", async () => { provisioner = new IpythonKernelProvisioner(tempDir, { pythonSkills: [bundledDisplaySkill()], });
const manager = await provisioner.ensure(); const diffText = "diff --git a/a.txt b/a.txt\n--- a/a.txt\n+++ b/a.txt\n@@ -1 +1 @@\n-a\n+b\n"; const result = await manager.execute(`await display.diff(${JSON.stringify(diffText)}, title="Fix spelling")`);
expect(result.status).toBe("ok"); expect(result.displays?.[0]).toEqual({ content: diffText, title: "Fix spelling", format: "diff", }); });
it("emits json displays with display.json helper", async () => { provisioner = new IpythonKernelProvisioner(tempDir, { pythonSkills: [bundledDisplaySkill()], });
const manager = await provisioner.ensure(); const result = await manager.execute('await display.json({"hello": "world", "num": 42}, title="Config")');
expect(result.status).toBe("ok"); expect(result.displays?.[0]?.title).toBe("Config"); expect(result.displays?.[0]?.format).toBe("json"); expect(JSON.parse(result.displays?.[0]?.content ?? "")).toEqual({ hello: "world", num: 42 }); });});