diff --git a/packages/cli-workflow/package.json b/packages/cli-workflow/package.json index 4c25875..60d635e 100644 --- a/packages/cli-workflow/package.json +++ b/packages/cli-workflow/package.json @@ -1,7 +1,10 @@ { "name": "@uncaged/cli-workflow", "version": "0.3.16", - "files": ["dist", "package.json"], + "files": [ + "dist", + "package.json" + ], "type": "module", "bin": { "uncaged-workflow": "src/cli.ts" @@ -20,4 +23,4 @@ "scripts": { "test": "bun test" } -} \ No newline at end of file +} diff --git a/packages/cli-workflow/src/commands/init/workspace.ts b/packages/cli-workflow/src/commands/init/workspace.ts index 26c935c..1278abc 100644 --- a/packages/cli-workflow/src/commands/init/workspace.ts +++ b/packages/cli-workflow/src/commands/init/workspace.ts @@ -5,7 +5,6 @@ import { err, ok, type Result } from "@uncaged/workflow-protocol"; import { pathExists } from "../../fs-utils.js"; import type { CmdInitWorkspaceSuccess } from "./types.js"; -import { validateWorkspaceSegment } from "./validate.js"; function rootPackageJson(workspaceName: string): string { return `${JSON.stringify( diff --git a/packages/cli-workflow/src/commands/setup/dispatch.ts b/packages/cli-workflow/src/commands/setup/dispatch.ts index 777ef41..c0d22f0 100644 --- a/packages/cli-workflow/src/commands/setup/dispatch.ts +++ b/packages/cli-workflow/src/commands/setup/dispatch.ts @@ -1,7 +1,7 @@ import { existsSync } from "node:fs"; +import { resolve as resolvePath } from "node:path"; import { stdin as input, stdout as output } from "node:process"; import { createInterface } from "node:readline/promises"; -import { resolve as resolvePath } from "node:path"; import { err, ok, type Result } from "@uncaged/workflow-protocol"; @@ -10,6 +10,7 @@ import { createLogger } from "@uncaged/workflow-util"; import { printCliError, printCliLine, printCliWarn } from "../../cli-output.js"; const setupDispatchLog = createLogger({ sink: { kind: "stderr" } }); + import { loadPresetProviders } from "./preset-providers.js"; import { cmdSetup, printSetupSummary } from "./setup.js"; import type { SetupCliArgs } from "./types.js"; @@ -201,11 +202,8 @@ async function promptSecret(label: string): Promise { } /** Fetch available models from an OpenAI-compatible /models endpoint. */ -async function fetchAvailableModels( - baseUrl: string, - apiKey: string, -): Promise { - const url = baseUrl.replace(/\/+$/, "") + "/models"; +async function fetchAvailableModels(baseUrl: string, apiKey: string): Promise { + const url = `${baseUrl.replace(/\/+$/, "")}/models`; try { const res = await fetch(url, { headers: { Authorization: `Bearer ${apiKey}` }, @@ -228,7 +226,10 @@ async function fetchAvailableModels( .filter((id) => !NON_CHAT_RE.test(id)) .sort(); } catch (e) { - setupDispatchLog("V8NQ4JT6", `fetch models failed: ${e instanceof Error ? e.message : String(e)}`); + setupDispatchLog( + "V8NQ4JT6", + `fetch models failed: ${e instanceof Error ? e.message : String(e)}`, + ); return []; } } diff --git a/packages/cli-workflow/src/commands/setup/preset-providers.ts b/packages/cli-workflow/src/commands/setup/preset-providers.ts index 34a9f45..34581d0 100644 --- a/packages/cli-workflow/src/commands/setup/preset-providers.ts +++ b/packages/cli-workflow/src/commands/setup/preset-providers.ts @@ -5,45 +5,43 @@ import { parse as parseYaml } from "yaml"; import type { PresetProvider } from "./types.js"; - - type RawPresetEntry = { - name: unknown; - label: unknown; - baseUrl: unknown; + name: unknown; + label: unknown; + baseUrl: unknown; }; function isRawEntry(v: unknown): v is RawPresetEntry { - if (typeof v !== "object" || v === null) return false; - const o = v as Record; - return typeof o.name === "string" && typeof o.label === "string" && typeof o.baseUrl === "string"; + if (typeof v !== "object" || v === null) return false; + const o = v as Record; + return typeof o.name === "string" && typeof o.label === "string" && typeof o.baseUrl === "string"; } let cached: ReadonlyArray | null = null; export function loadPresetProviders(): ReadonlyArray { - if (cached !== null) return cached; + if (cached !== null) return cached; - const yamlPath = join(import.meta.dirname, "providers.yaml"); - const raw = readFileSync(yamlPath, "utf8"); - const parsed: unknown = parseYaml(raw); + const yamlPath = join(import.meta.dirname, "providers.yaml"); + const raw = readFileSync(yamlPath, "utf8"); + const parsed: unknown = parseYaml(raw); - if (!Array.isArray(parsed)) { - throw new Error(`providers.yaml: expected array, got ${typeof parsed}`); - } + if (!Array.isArray(parsed)) { + throw new Error(`providers.yaml: expected array, got ${typeof parsed}`); + } - const result: PresetProvider[] = []; - for (const entry of parsed) { - if (!isRawEntry(entry)) { - throw new Error(`providers.yaml: invalid entry: ${JSON.stringify(entry)}`); - } - result.push({ - name: entry.name as string, - label: entry.label as string, - baseUrl: entry.baseUrl as string, - }); - } + const result: PresetProvider[] = []; + for (const entry of parsed) { + if (!isRawEntry(entry)) { + throw new Error(`providers.yaml: invalid entry: ${JSON.stringify(entry)}`); + } + result.push({ + name: entry.name as string, + label: entry.label as string, + baseUrl: entry.baseUrl as string, + }); + } - cached = result; - return result; + cached = result; + return result; } diff --git a/packages/cli-workflow/src/commands/setup/setup.ts b/packages/cli-workflow/src/commands/setup/setup.ts index c1ac0ea..7aed75a 100644 --- a/packages/cli-workflow/src/commands/setup/setup.ts +++ b/packages/cli-workflow/src/commands/setup/setup.ts @@ -13,8 +13,6 @@ import type { CmdSetupSuccess, SetupCliArgs } from "./types.js"; const setupLog = createLogger({ sink: { kind: "stderr" } }); - - function mergeWorkflowConfig( prev: WorkflowConfig | null, input: SetupCliArgs, diff --git a/packages/workflow-agent-cursor/package.json b/packages/workflow-agent-cursor/package.json index f5044ff..cfc18da 100644 --- a/packages/workflow-agent-cursor/package.json +++ b/packages/workflow-agent-cursor/package.json @@ -1,7 +1,10 @@ { "name": "@uncaged/workflow-agent-cursor", "version": "0.3.16", - "files": ["dist", "package.json"], + "files": [ + "dist", + "package.json" + ], "type": "module", "main": "src/index.ts", "types": "src/index.ts", @@ -16,4 +19,4 @@ "@uncaged/workflow-util-agent": "workspace:*", "zod": "^4.0.0" } -} \ No newline at end of file +} diff --git a/packages/workflow-agent-hermes/package.json b/packages/workflow-agent-hermes/package.json index 4e0b8ca..5c5ef69 100644 --- a/packages/workflow-agent-hermes/package.json +++ b/packages/workflow-agent-hermes/package.json @@ -1,7 +1,10 @@ { "name": "@uncaged/workflow-agent-hermes", "version": "0.3.16", - "files": ["dist", "package.json"], + "files": [ + "dist", + "package.json" + ], "type": "module", "main": "src/index.ts", "types": "src/index.ts", @@ -12,4 +15,4 @@ "@uncaged/workflow-runtime": "workspace:*", "@uncaged/workflow-util-agent": "workspace:*" } -} \ No newline at end of file +} diff --git a/packages/workflow-agent-llm/package.json b/packages/workflow-agent-llm/package.json index 24d50c1..c40ac93 100644 --- a/packages/workflow-agent-llm/package.json +++ b/packages/workflow-agent-llm/package.json @@ -1,7 +1,10 @@ { "name": "@uncaged/workflow-agent-llm", "version": "0.3.16", - "files": ["dist", "package.json"], + "files": [ + "dist", + "package.json" + ], "type": "module", "main": "src/index.ts", "types": "src/index.ts", @@ -11,4 +14,4 @@ "dependencies": { "@uncaged/workflow-runtime": "workspace:*" } -} \ No newline at end of file +} diff --git a/packages/workflow-agent-react/__tests__/create-react-adapter.test.ts b/packages/workflow-agent-react/__tests__/create-react-adapter.test.ts index 0d50ab3..04b155f 100644 --- a/packages/workflow-agent-react/__tests__/create-react-adapter.test.ts +++ b/packages/workflow-agent-react/__tests__/create-react-adapter.test.ts @@ -1,7 +1,6 @@ import { describe, expect, test } from "bun:test"; +import { ok, START, type ThreadContext, type WorkflowRuntime } from "@uncaged/workflow-protocol"; import type { LlmFn, ToolDefinition } from "@uncaged/workflow-reactor"; -import { ok } from "@uncaged/workflow-protocol"; -import { START, type ThreadContext, type WorkflowRuntime } from "@uncaged/workflow-protocol"; import * as z from "zod/v4"; import { createReactAdapter } from "../src/create-react-adapter.js"; @@ -39,10 +38,12 @@ const STUB_RUNTIME: WorkflowRuntime = { }), }; -const TEST_SCHEMA = z.object({ - summary: z.string(), - score: z.number(), -}).meta({ title: "resolve", description: "Submit the final result." }); +const TEST_SCHEMA = z + .object({ + summary: z.string(), + score: z.number(), + }) + .meta({ title: "resolve", description: "Submit the final result." }); function makeChatResponse(content: string | null, toolCalls: unknown[] | null): string { const message: Record = { role: "assistant" }; @@ -156,7 +157,9 @@ describe("createReactAdapter", () => { callCount += 1; if (callCount === 1) { // Invalid: score should be number, not string - return ok(makeToolCallResponse("resolve", { summary: "bad", score: "not-a-number" }, "call_1")); + return ok( + makeToolCallResponse("resolve", { summary: "bad", score: "not-a-number" }, "call_1"), + ); } return ok(makeToolCallResponse("resolve", { summary: "fixed", score: 10 }, "call_2")); }; diff --git a/packages/workflow-agent-react/__tests__/tools.test.ts b/packages/workflow-agent-react/__tests__/tools.test.ts index 6be6661..f718fb8 100644 --- a/packages/workflow-agent-react/__tests__/tools.test.ts +++ b/packages/workflow-agent-react/__tests__/tools.test.ts @@ -1,9 +1,9 @@ -import { describe, test, expect, afterAll } from "bun:test"; -import { readFileTool, writeFileTool, patchFileTool, shellExecTool } from "../src/tools/index.js"; -import { join } from "node:path"; -import { tmpdir } from "node:os"; -import { readFileSync, unlinkSync, mkdirSync } from "node:fs"; +import { afterAll, describe, expect, test } from "bun:test"; import { randomBytes } from "node:crypto"; +import { mkdirSync, readFileSync, unlinkSync } from "node:fs"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; +import { patchFileTool, readFileTool, shellExecTool, writeFileTool } from "../src/tools/index.js"; const TMP_DIR = join(tmpdir(), `tools-test-${randomBytes(4).toString("hex")}`); mkdirSync(TMP_DIR, { recursive: true }); @@ -14,9 +14,17 @@ const cleanupFiles: string[] = []; afterAll(() => { for (const f of cleanupFiles) { - try { unlinkSync(f); } catch { /* ignore */ } + try { + unlinkSync(f); + } catch { + /* ignore */ + } + } + try { + unlinkSync(TMP_DIR); + } catch { + /* ignore */ } - try { unlinkSync(TMP_DIR); } catch { /* ignore */ } }); describe("read_file", () => { @@ -26,7 +34,9 @@ describe("read_file", () => { const content = "line1\nline2\nline3\n"; require("node:fs").writeFileSync(p, content); - const result = await readFileTool.handler(JSON.stringify({ path: p, offset: null, limit: null })); + const result = await readFileTool.handler( + JSON.stringify({ path: p, offset: null, limit: null }), + ); expect(result).toContain("1|line1"); expect(result).toContain("2|line2"); expect(result).toContain("3|line3"); @@ -42,7 +52,9 @@ describe("read_file", () => { }); test("returns error for missing file", async () => { - const result = await readFileTool.handler(JSON.stringify({ path: "/nonexistent/file.txt", offset: null, limit: null })); + const result = await readFileTool.handler( + JSON.stringify({ path: "/nonexistent/file.txt", offset: null, limit: null }), + ); expect(result).toContain("Error:"); }); }); @@ -64,7 +76,9 @@ describe("patch_file", () => { cleanupFiles.push(p); require("node:fs").writeFileSync(p, "foo bar baz"); - const result = await patchFileTool.handler(JSON.stringify({ path: p, old_string: "bar", new_string: "qux" })); + const result = await patchFileTool.handler( + JSON.stringify({ path: p, old_string: "bar", new_string: "qux" }), + ); expect(result).toContain("Successfully"); expect(readFileSync(p, "utf-8")).toBe("foo qux baz"); }); @@ -74,7 +88,9 @@ describe("patch_file", () => { cleanupFiles.push(p); require("node:fs").writeFileSync(p, "foo"); - const result = await patchFileTool.handler(JSON.stringify({ path: p, old_string: "xyz", new_string: "abc" })); + const result = await patchFileTool.handler( + JSON.stringify({ path: p, old_string: "xyz", new_string: "abc" }), + ); expect(result).toContain("not found"); }); @@ -83,14 +99,18 @@ describe("patch_file", () => { cleanupFiles.push(p); require("node:fs").writeFileSync(p, "aaa bbb aaa"); - const result = await patchFileTool.handler(JSON.stringify({ path: p, old_string: "aaa", new_string: "ccc" })); + const result = await patchFileTool.handler( + JSON.stringify({ path: p, old_string: "aaa", new_string: "ccc" }), + ); expect(result).toContain("not unique"); }); }); describe("shell_exec", () => { test("runs echo", async () => { - const result = await shellExecTool.handler(JSON.stringify({ command: "echo hello", timeout: null })); + const result = await shellExecTool.handler( + JSON.stringify({ command: "echo hello", timeout: null }), + ); expect(result.trim()).toBe("hello"); }); diff --git a/packages/workflow-agent-react/package.json b/packages/workflow-agent-react/package.json index 51e9c11..52b3e61 100644 --- a/packages/workflow-agent-react/package.json +++ b/packages/workflow-agent-react/package.json @@ -1,7 +1,10 @@ { "name": "@uncaged/workflow-agent-react", "version": "0.3.16", - "files": ["dist", "package.json"], + "files": [ + "dist", + "package.json" + ], "type": "module", "main": "src/index.ts", "types": "src/index.ts", @@ -25,4 +28,4 @@ "peerDependencies": { "zod": "^4.0.0" } -} \ No newline at end of file +} diff --git a/packages/workflow-agent-react/src/index.ts b/packages/workflow-agent-react/src/index.ts index c5ce881..61b66a4 100644 --- a/packages/workflow-agent-react/src/index.ts +++ b/packages/workflow-agent-react/src/index.ts @@ -1,4 +1,4 @@ export { createReactAdapter } from "./create-react-adapter.js"; -export type { ReactAdapterConfig, ReactToolHandler } from "./types.js"; -export { defaultTools, defaultToolHandler } from "./tools/index.js"; export type { ToolEntry, ToolHandler } from "./tools/index.js"; +export { defaultToolHandler, defaultTools } from "./tools/index.js"; +export type { ReactAdapterConfig, ReactToolHandler } from "./types.js"; diff --git a/packages/workflow-agent-react/src/tools/defaults.ts b/packages/workflow-agent-react/src/tools/defaults.ts index 906d610..80a5f3a 100644 --- a/packages/workflow-agent-react/src/tools/defaults.ts +++ b/packages/workflow-agent-react/src/tools/defaults.ts @@ -1,9 +1,9 @@ import type { ToolDefinition } from "@uncaged/workflow-reactor"; -import type { ToolEntry } from "./types.js"; -import { readFileTool } from "./read-file.js"; -import { writeFileTool } from "./write-file.js"; import { patchFileTool } from "./patch-file.js"; +import { readFileTool } from "./read-file.js"; import { shellExecTool } from "./shell-exec.js"; +import type { ToolEntry } from "./types.js"; +import { writeFileTool } from "./write-file.js"; const ALL_TOOLS: ToolEntry[] = [readFileTool, writeFileTool, patchFileTool, shellExecTool]; diff --git a/packages/workflow-agent-react/src/tools/index.ts b/packages/workflow-agent-react/src/tools/index.ts index 6c4dfe0..07ef759 100644 --- a/packages/workflow-agent-react/src/tools/index.ts +++ b/packages/workflow-agent-react/src/tools/index.ts @@ -1,6 +1,6 @@ -export { readFileTool } from "./read-file.js"; -export { writeFileTool } from "./write-file.js"; +export { defaultToolHandler, defaultTools } from "./defaults.js"; export { patchFileTool } from "./patch-file.js"; +export { readFileTool } from "./read-file.js"; export { shellExecTool } from "./shell-exec.js"; -export { defaultTools, defaultToolHandler } from "./defaults.js"; export type { ToolEntry, ToolHandler } from "./types.js"; +export { writeFileTool } from "./write-file.js"; diff --git a/packages/workflow-agent-react/src/tools/patch-file.ts b/packages/workflow-agent-react/src/tools/patch-file.ts index 6402a34..9bae2c2 100644 --- a/packages/workflow-agent-react/src/tools/patch-file.ts +++ b/packages/workflow-agent-react/src/tools/patch-file.ts @@ -30,7 +30,10 @@ export const patchFileTool: ToolEntry = { if (secondIdx !== -1) { return `Error: old_string is not unique in ${parsed.path} (found multiple occurrences)`; } - const updated = content.slice(0, firstIdx) + parsed.new_string + content.slice(firstIdx + parsed.old_string.length); + const updated = + content.slice(0, firstIdx) + + parsed.new_string + + content.slice(firstIdx + parsed.old_string.length); await writeFile(parsed.path, updated); return `Successfully patched ${parsed.path}`; } catch (err) { diff --git a/packages/workflow-agent-react/src/tools/read-file.ts b/packages/workflow-agent-react/src/tools/read-file.ts index 577dbac..ba8c0f5 100644 --- a/packages/workflow-agent-react/src/tools/read-file.ts +++ b/packages/workflow-agent-react/src/tools/read-file.ts @@ -11,7 +11,10 @@ export const readFileTool: ToolEntry = { type: "object", properties: { path: { type: "string", description: "Path to the file to read" }, - offset: { type: ["number", "null"], description: "Start line number (1-indexed, default: 1)" }, + offset: { + type: ["number", "null"], + description: "Start line number (1-indexed, default: 1)", + }, limit: { type: ["number", "null"], description: "Max lines to read (default: all)" }, }, required: ["path"], @@ -20,12 +23,17 @@ export const readFileTool: ToolEntry = { }, handler: async (args: string): Promise => { try { - const parsed = JSON.parse(args) as { path: string; offset: number | null; limit: number | null }; + const parsed = JSON.parse(args) as { + path: string; + offset: number | null; + limit: number | null; + }; const content = await readFile(parsed.path, "utf-8"); const allLines = content.split("\n"); const offset = parsed.offset ?? 1; const start = Math.max(0, offset - 1); - const end = parsed.limit != null ? Math.min(allLines.length, start + parsed.limit) : allLines.length; + const end = + parsed.limit != null ? Math.min(allLines.length, start + parsed.limit) : allLines.length; const lines = allLines.slice(start, end); return lines.map((line, i) => `${start + i + 1}|${line}`).join("\n"); } catch (err) { diff --git a/packages/workflow-agent-react/src/tools/shell-exec.ts b/packages/workflow-agent-react/src/tools/shell-exec.ts index fa54461..f5576e0 100644 --- a/packages/workflow-agent-react/src/tools/shell-exec.ts +++ b/packages/workflow-agent-react/src/tools/shell-exec.ts @@ -31,13 +31,20 @@ export const shellExecTool: ToolEntry = { }); return output.length > MAX_OUTPUT ? `${output.slice(0, MAX_OUTPUT)}\n...(truncated)` : output; } catch (err: unknown) { - if (err && typeof err === "object" && "status" in err && (err as { status: unknown }).status === null) { + if ( + err && + typeof err === "object" && + "status" in err && + (err as { status: unknown }).status === null + ) { return "Error: command timed out"; } if (err && typeof err === "object" && "stderr" in err) { const e = err as { stderr: string; stdout: string; status: number }; const combined = `${e.stdout ?? ""}${e.stderr ?? ""}`; - return combined.length > MAX_OUTPUT ? `${combined.slice(0, MAX_OUTPUT)}\n...(truncated)` : combined || `Error: command exited with status ${e.status}`; + return combined.length > MAX_OUTPUT + ? `${combined.slice(0, MAX_OUTPUT)}\n...(truncated)` + : combined || `Error: command exited with status ${e.status}`; } return `Error: ${err instanceof Error ? err.message : String(err)}`; } diff --git a/packages/workflow-cas/package.json b/packages/workflow-cas/package.json index 23730a6..46eba3e 100644 --- a/packages/workflow-cas/package.json +++ b/packages/workflow-cas/package.json @@ -1,7 +1,10 @@ { "name": "@uncaged/workflow-cas", "version": "0.3.16", - "files": ["dist", "package.json"], + "files": [ + "dist", + "package.json" + ], "type": "module", "scripts": { "test": "bun test" @@ -21,4 +24,4 @@ "devDependencies": { "@types/bun": "latest" } -} \ No newline at end of file +} diff --git a/packages/workflow-dashboard/package.json b/packages/workflow-dashboard/package.json index 29f9853..fa274d6 100644 --- a/packages/workflow-dashboard/package.json +++ b/packages/workflow-dashboard/package.json @@ -1,7 +1,10 @@ { "name": "@uncaged/workflow-dashboard", "version": "0.1.0", - "files": ["dist", "package.json"], + "files": [ + "dist", + "package.json" + ], "private": true, "type": "module", "scripts": { @@ -26,4 +29,4 @@ "typescript": "^6.0.3", "vite": "^8.0.11" } -} \ No newline at end of file +} diff --git a/packages/workflow-dashboard/src/components/login.tsx b/packages/workflow-dashboard/src/components/login.tsx index 3fd2add..6ee1afb 100644 --- a/packages/workflow-dashboard/src/components/login.tsx +++ b/packages/workflow-dashboard/src/components/login.tsx @@ -70,7 +70,6 @@ export function LoginPage({ onLogin }: Props) { borderColor: "var(--color-border)", color: "var(--color-text)", }} - autoFocus /> {error && (

diff --git a/packages/workflow-execute/__tests__/merkle-call-stack.test.ts b/packages/workflow-execute/__tests__/merkle-call-stack.test.ts index 147716c..4141729 100644 --- a/packages/workflow-execute/__tests__/merkle-call-stack.test.ts +++ b/packages/workflow-execute/__tests__/merkle-call-stack.test.ts @@ -14,7 +14,7 @@ import type { } from "@uncaged/workflow-runtime"; import { executeThread } from "../src/engine/engine.js"; -import type { ExecuteThreadIo, ExecuteThreadOptions } from "../src/engine/types.js"; +import type { ExecuteThreadOptions } from "../src/engine/types.js"; const TEST_REGISTRY_YAML = `config: maxDepth: 3 diff --git a/packages/workflow-execute/package.json b/packages/workflow-execute/package.json index 182cdd9..a64ffdb 100644 --- a/packages/workflow-execute/package.json +++ b/packages/workflow-execute/package.json @@ -1,7 +1,10 @@ { "name": "@uncaged/workflow-execute", "version": "0.3.16", - "files": ["dist", "package.json"], + "files": [ + "dist", + "package.json" + ], "type": "module", "exports": { ".": { @@ -27,4 +30,4 @@ "devDependencies": { "zod": "^4.0.0" } -} \ No newline at end of file +} diff --git a/packages/workflow-execute/src/workflow-as-agent.ts b/packages/workflow-execute/src/workflow-as-agent.ts index d88d089..40adf25 100644 --- a/packages/workflow-execute/src/workflow-as-agent.ts +++ b/packages/workflow-execute/src/workflow-as-agent.ts @@ -59,17 +59,26 @@ export function workflowAsAgent( const registryResult = await readWorkflowRegistry(storageRoot); if (!registryResult.ok) { - return { output: `ERROR: failed to read workflow registry: ${registryResult.error.message}`, childThread: null }; + return { + output: `ERROR: failed to read workflow registry: ${registryResult.error.message}`, + childThread: null, + }; } const maxDepth = workflowAsAgentMaxDepth(registryResult.value.config); if (nextDepth > maxDepth) { - return { output: `ERROR: workflow-as-agent depth limit exceeded (max ${maxDepth})`, childThread: null }; + return { + output: `ERROR: workflow-as-agent depth limit exceeded (max ${maxDepth})`, + childThread: null, + }; } const entry = getRegisteredWorkflow(registryResult.value, workflowName); if (entry === null) { - return { output: `ERROR: workflow "${workflowName}" not found in registry`, childThread: null }; + return { + output: `ERROR: workflow "${workflowName}" not found in registry`, + childThread: null, + }; } const bundlePath = join(storageRoot, "bundles", `${entry.hash}.esm.js`); diff --git a/packages/workflow-gateway/package.json b/packages/workflow-gateway/package.json index 2e7f5c9..ed2353e 100644 --- a/packages/workflow-gateway/package.json +++ b/packages/workflow-gateway/package.json @@ -1,7 +1,10 @@ { "name": "@uncaged/workflow-gateway", "version": "0.3.16", - "files": ["dist", "package.json"], + "files": [ + "dist", + "package.json" + ], "type": "module", "exports": { ".": "./src/index.ts", @@ -18,4 +21,4 @@ "@cloudflare/workers-types": "^4.20260425.1", "wrangler": "^4.20.0" } -} \ No newline at end of file +} diff --git a/packages/workflow-protocol/package.json b/packages/workflow-protocol/package.json index 8739ff3..1dc708f 100644 --- a/packages/workflow-protocol/package.json +++ b/packages/workflow-protocol/package.json @@ -1,7 +1,10 @@ { "name": "@uncaged/workflow-protocol", "version": "0.3.16", - "files": ["dist", "package.json"], + "files": [ + "dist", + "package.json" + ], "type": "module", "exports": { ".": { @@ -20,4 +23,4 @@ "zod": "^4.0.0", "typescript": "^5.8.3" } -} \ No newline at end of file +} diff --git a/packages/workflow-protocol/src/index.ts b/packages/workflow-protocol/src/index.ts index 5574042..5e6471d 100644 --- a/packages/workflow-protocol/src/index.ts +++ b/packages/workflow-protocol/src/index.ts @@ -30,9 +30,9 @@ export type { Result, RoleDefinition, RoleFn, - RoleResult, RoleMeta, RoleOutput, + RoleResult, RoleStep, StartStep, ThreadContext, diff --git a/packages/workflow-reactor/package.json b/packages/workflow-reactor/package.json index 6c7244f..b005533 100644 --- a/packages/workflow-reactor/package.json +++ b/packages/workflow-reactor/package.json @@ -1,7 +1,10 @@ { "name": "@uncaged/workflow-reactor", "version": "0.3.16", - "files": ["dist", "package.json"], + "files": [ + "dist", + "package.json" + ], "type": "module", "exports": { ".": { @@ -19,4 +22,4 @@ "zod": "^4.0.0", "typescript": "^5.8.3" } -} \ No newline at end of file +} diff --git a/packages/workflow-register/package.json b/packages/workflow-register/package.json index 2166e00..4df9326 100644 --- a/packages/workflow-register/package.json +++ b/packages/workflow-register/package.json @@ -1,7 +1,10 @@ { "name": "@uncaged/workflow-register", "version": "0.3.16", - "files": ["dist", "package.json"], + "files": [ + "dist", + "package.json" + ], "type": "module", "exports": { ".": { @@ -24,4 +27,4 @@ "zod": "^4.0.0", "typescript": "^5.8.3" } -} \ No newline at end of file +} diff --git a/packages/workflow-runtime/package.json b/packages/workflow-runtime/package.json index 492bb03..c4e9260 100644 --- a/packages/workflow-runtime/package.json +++ b/packages/workflow-runtime/package.json @@ -1,7 +1,10 @@ { "name": "@uncaged/workflow-runtime", "version": "0.3.16", - "files": ["dist", "package.json"], + "files": [ + "dist", + "package.json" + ], "type": "module", "main": "src/index.ts", "types": "src/index.ts", @@ -18,4 +21,4 @@ "devDependencies": { "zod": "^4.0.0" } -} \ No newline at end of file +} diff --git a/packages/workflow-runtime/src/create-workflow.ts b/packages/workflow-runtime/src/create-workflow.ts index e23b741..6adc97d 100644 --- a/packages/workflow-runtime/src/create-workflow.ts +++ b/packages/workflow-runtime/src/create-workflow.ts @@ -37,7 +37,7 @@ function resolveExtractedRefs( return extractRefsFn(meta as Record); } -function mergeUniqueHashes(a: readonly string[], b: readonly string[]): string[] { +function _mergeUniqueHashes(a: readonly string[], b: readonly string[]): string[] { const seen = new Set(); const out: string[] = []; for (const h of [...a, ...b]) { @@ -83,7 +83,10 @@ async function advanceOneRound( } const adapter = adapterForRole(binding, next); - const roleFn = adapter(roleDef.systemPrompt, roleDef.schema as z.ZodType>); + const roleFn = adapter( + roleDef.systemPrompt, + roleDef.schema as z.ZodType>, + ); const result = await roleFn(modCtx as unknown as ThreadContext, runtime); const meta = result.meta; diff --git a/packages/workflow-runtime/src/index.ts b/packages/workflow-runtime/src/index.ts index cea50cf..571448f 100644 --- a/packages/workflow-runtime/src/index.ts +++ b/packages/workflow-runtime/src/index.ts @@ -20,9 +20,9 @@ export type { Result, RoleDefinition, RoleFn, - RoleResult, RoleMeta, RoleOutput, + RoleResult, RoleStep, StartStep, ThreadContext, diff --git a/packages/workflow-runtime/src/types.ts b/packages/workflow-runtime/src/types.ts index e0ac6e8..581d718 100644 --- a/packages/workflow-runtime/src/types.ts +++ b/packages/workflow-runtime/src/types.ts @@ -24,9 +24,9 @@ export type { Result, RoleDefinition, RoleFn, - RoleResult, RoleMeta, RoleOutput, + RoleResult, RoleStep, StartStep, ThreadContext, diff --git a/packages/workflow-template-develop/package.json b/packages/workflow-template-develop/package.json index c8f0d34..0e33b4d 100644 --- a/packages/workflow-template-develop/package.json +++ b/packages/workflow-template-develop/package.json @@ -1,7 +1,10 @@ { "name": "@uncaged/workflow-template-develop", "version": "0.3.16", - "files": ["dist", "package.json"], + "files": [ + "dist", + "package.json" + ], "type": "module", "exports": { ".": { @@ -20,4 +23,4 @@ "devDependencies": { "@uncaged/workflow-protocol": "workspace:*" } -} \ No newline at end of file +} diff --git a/packages/workflow-template-solve-issue/__tests__/solve-issue-template.test.ts b/packages/workflow-template-solve-issue/__tests__/solve-issue-template.test.ts index 4daa5b7..b78d723 100644 --- a/packages/workflow-template-solve-issue/__tests__/solve-issue-template.test.ts +++ b/packages/workflow-template-solve-issue/__tests__/solve-issue-template.test.ts @@ -215,10 +215,7 @@ describe("solveIssueWorkflowDefinition + createWorkflow", () => { }); const gen = run(makeThread("task"), { cas, - extract: createExtract( - { baseUrl: "http://127.0.0.1:9", apiKey: "", model: "test" }, - { cas }, - ), + extract: createExtract({ baseUrl: "http://127.0.0.1:9", apiKey: "", model: "test" }, { cas }), }); const first = await gen.next(); expect(first.done).toBe(false); @@ -261,10 +258,7 @@ describe("solveIssueWorkflowDefinition + createWorkflow", () => { }); const gen = run(makeThread("task"), { cas, - extract: createExtract( - { baseUrl: "http://127.0.0.1:9", apiKey: "", model: "test" }, - { cas }, - ), + extract: createExtract({ baseUrl: "http://127.0.0.1:9", apiKey: "", model: "test" }, { cas }), }); await gen.next(); expect(calls).toEqual(["preparer"]); diff --git a/packages/workflow-template-solve-issue/package.json b/packages/workflow-template-solve-issue/package.json index 9ccd9fe..3715e5c 100644 --- a/packages/workflow-template-solve-issue/package.json +++ b/packages/workflow-template-solve-issue/package.json @@ -1,7 +1,10 @@ { "name": "@uncaged/workflow-template-solve-issue", "version": "0.3.16", - "files": ["dist", "package.json"], + "files": [ + "dist", + "package.json" + ], "type": "module", "exports": { ".": { @@ -22,4 +25,4 @@ "@uncaged/workflow-execute": "workspace:*", "@uncaged/workflow-protocol": "workspace:*" } -} \ No newline at end of file +} diff --git a/packages/workflow-util-agent/package.json b/packages/workflow-util-agent/package.json index 6ffebe7..df31bef 100644 --- a/packages/workflow-util-agent/package.json +++ b/packages/workflow-util-agent/package.json @@ -1,7 +1,10 @@ { "name": "@uncaged/workflow-util-agent", "version": "0.3.16", - "files": ["dist", "package.json"], + "files": [ + "dist", + "package.json" + ], "type": "module", "main": "src/index.ts", "types": "src/index.ts", @@ -19,4 +22,4 @@ "@uncaged/workflow-cas": "workspace:*", "zod": "^4.0.0" } -} \ No newline at end of file +} diff --git a/packages/workflow-util/package.json b/packages/workflow-util/package.json index 0238192..2efe031 100644 --- a/packages/workflow-util/package.json +++ b/packages/workflow-util/package.json @@ -1,7 +1,10 @@ { "name": "@uncaged/workflow-util", "version": "0.3.16", - "files": ["dist", "package.json"], + "files": [ + "dist", + "package.json" + ], "type": "module", "exports": { ".": { @@ -15,4 +18,4 @@ "devDependencies": { "typescript": "^5.8.3" } -} \ No newline at end of file +}