diff --git a/packages/workflow-agent-cursor/__tests__/cursor-agent.test.ts b/packages/workflow-agent-cursor/__tests__/cursor-agent.test.ts index 2100a49..9df5e7a 100644 --- a/packages/workflow-agent-cursor/__tests__/cursor-agent.test.ts +++ b/packages/workflow-agent-cursor/__tests__/cursor-agent.test.ts @@ -1,23 +1,12 @@ import { describe, expect, test } from "bun:test"; -import type { ExtractFn } from "@uncaged/workflow-runtime"; -import type * as z from "zod/v4"; import { createCursorAgent, validateCursorAgentConfig } from "../src/index.js"; -const testExtract: ExtractFn = async >( - _schema: z.ZodType, - _contentHash: string, -): Promise<{ meta: T; contentPayload: string; refs: string[] }> => ({ - meta: { workspace: "/tmp" } as unknown as T, - contentPayload: "", - refs: [], -}); - describe("validateCursorAgentConfig", () => { test("accepts valid config", () => { const r = validateCursorAgentConfig({ model: null, timeout: 0, - extract: testExtract, + workspace: "/tmp/test-project", }); expect(r.ok).toBe(true); }); @@ -26,11 +15,11 @@ describe("validateCursorAgentConfig", () => { const r = validateCursorAgentConfig({ model: null, timeout: 0, - extract: null as unknown as ExtractFn, + workspace: "", }); expect(r.ok).toBe(false); if (!r.ok) { - expect(r.error).toContain("extract"); + expect(r.error).toContain("workspace"); } }); @@ -38,7 +27,7 @@ describe("validateCursorAgentConfig", () => { const r = validateCursorAgentConfig({ model: null, timeout: -1, - extract: testExtract, + workspace: "/tmp/test-project", }); expect(r.ok).toBe(false); }); @@ -49,7 +38,7 @@ describe("createCursorAgent", () => { const agent = createCursorAgent({ model: null, timeout: 0, - extract: testExtract, + workspace: "/tmp/test-project", }); expect(typeof agent).toBe("function"); }); @@ -59,7 +48,7 @@ describe("createCursorAgent", () => { createCursorAgent({ model: null, timeout: -1, - extract: testExtract, + workspace: "/tmp/test-project", }), ).toThrow(); }); diff --git a/packages/workflow-agent-cursor/src/index.ts b/packages/workflow-agent-cursor/src/index.ts index bf4e3b4..7f783eb 100644 --- a/packages/workflow-agent-cursor/src/index.ts +++ b/packages/workflow-agent-cursor/src/index.ts @@ -1,6 +1,5 @@ import type { AgentFn } from "@uncaged/workflow-runtime"; import { buildAgentPrompt, type SpawnCliError, spawnCli } from "@uncaged/workflow-util-agent"; -import * as z from "zod/v4"; import type { CursorAgentConfig } from "./types.js"; import { validateCursorAgentConfig } from "./validate-config.js"; @@ -8,12 +7,6 @@ import { validateCursorAgentConfig } from "./validate-config.js"; export type { CursorAgentConfig } from "./types.js"; export { validateCursorAgentConfig } from "./validate-config.js"; -const cursorWorkspaceSchema = z.object({ - workspace: z - .string() - .describe("Absolute path to the project/repository directory the agent should work in"), -}); - function throwCursorSpawnError(error: SpawnCliError): never { if (error.kind === "non_zero_exit") { throw new Error( @@ -44,7 +37,7 @@ export function createCursorAgent(config: CursorAgentConfig): AgentFn { const timeoutMs = config.timeout > 0 ? config.timeout : null; return async (ctx) => { - const { workspace } = ctx.currentRole as unknown as { workspace: string }; + const workspace = config.workspace; const fullPrompt = await buildAgentPrompt(ctx); const args = [ "-p", diff --git a/packages/workflow-agent-cursor/src/types.ts b/packages/workflow-agent-cursor/src/types.ts index 86eaabe..0470054 100644 --- a/packages/workflow-agent-cursor/src/types.ts +++ b/packages/workflow-agent-cursor/src/types.ts @@ -1,7 +1,5 @@ -import type { ExtractFn } from "@uncaged/workflow-runtime"; - export type CursorAgentConfig = { model: string | null; timeout: number; - extract: ExtractFn; + workspace: string; }; diff --git a/packages/workflow-agent-cursor/src/validate-config.ts b/packages/workflow-agent-cursor/src/validate-config.ts index 82175a9..a6b9cb3 100644 --- a/packages/workflow-agent-cursor/src/validate-config.ts +++ b/packages/workflow-agent-cursor/src/validate-config.ts @@ -3,8 +3,8 @@ import { err, ok, type Result } from "@uncaged/workflow-runtime"; import type { CursorAgentConfig } from "./types.js"; export function validateCursorAgentConfig(config: CursorAgentConfig): Result { - if (typeof config.extract !== "function") { - return err("extract must be a function"); + if (typeof config.workspace !== "string" || config.workspace.length === 0) { + return err("workspace must be a non-empty string (absolute path)"); } if (config.timeout < 0) { return err("timeout must be a non-negative number (milliseconds); use 0 for no limit");