From 78d883ec5de96e965dce97e76d4c50e289585e53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E6=A9=98?= Date: Wed, 6 May 2026 06:59:44 +0000 Subject: [PATCH] feat: @uncaged/workflow-role-committer + @uncaged/workflow-role-reviewer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Committer: git add/commit/push with LLM-generated branch+message - Reviewer: code review role with approval meta - Both use zod@4 schemas, no nerve-core deps - 98 tests pass, biome clean Closes #12 小橘 --- .../__tests__/committer.test.ts | 106 +++++++++++++ packages/workflow-role-committer/package.json | 16 ++ .../workflow-role-committer/src/committer.ts | 150 ++++++++++++++++++ .../workflow-role-committer/src/git-exec.ts | 26 +++ packages/workflow-role-committer/src/index.ts | 8 + .../workflow-role-committer/tsconfig.json | 10 ++ .../tsconfig.tsbuildinfo | 1 + .../__tests__/reviewer.test.ts | 88 ++++++++++ packages/workflow-role-reviewer/package.json | 16 ++ packages/workflow-role-reviewer/src/index.ts | 7 + .../workflow-role-reviewer/src/reviewer.ts | 103 ++++++++++++ packages/workflow-role-reviewer/tsconfig.json | 10 ++ .../tsconfig.tsbuildinfo | 1 + tsconfig.json | 2 + 14 files changed, 544 insertions(+) create mode 100644 packages/workflow-role-committer/__tests__/committer.test.ts create mode 100644 packages/workflow-role-committer/package.json create mode 100644 packages/workflow-role-committer/src/committer.ts create mode 100644 packages/workflow-role-committer/src/git-exec.ts create mode 100644 packages/workflow-role-committer/src/index.ts create mode 100644 packages/workflow-role-committer/tsconfig.json create mode 100644 packages/workflow-role-committer/tsconfig.tsbuildinfo create mode 100644 packages/workflow-role-reviewer/__tests__/reviewer.test.ts create mode 100644 packages/workflow-role-reviewer/package.json create mode 100644 packages/workflow-role-reviewer/src/index.ts create mode 100644 packages/workflow-role-reviewer/src/reviewer.ts create mode 100644 packages/workflow-role-reviewer/tsconfig.json create mode 100644 packages/workflow-role-reviewer/tsconfig.tsbuildinfo diff --git a/packages/workflow-role-committer/__tests__/committer.test.ts b/packages/workflow-role-committer/__tests__/committer.test.ts new file mode 100644 index 0000000..89f296b --- /dev/null +++ b/packages/workflow-role-committer/__tests__/committer.test.ts @@ -0,0 +1,106 @@ +import { describe, expect, spyOn, test } from "bun:test"; +import { execFile } from "node:child_process"; +import { appendFile, mkdir, mkdtemp, writeFile } from "node:fs/promises"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; +import { promisify } from "node:util"; + +import type { AgentFn, ThreadContext } from "@uncaged/workflow"; +import { START } from "@uncaged/workflow"; +import * as workflowRoleLlm from "@uncaged/workflow-role-llm"; + +import { createCommitterRole } from "../src/committer.js"; +import { gitExec } from "../src/git-exec.js"; + +const execFileAsync = promisify(execFile); + +async function git(repo: string, args: string[]): Promise { + await gitExec(repo, args); +} + +async function setupRepoWithRemote(): Promise<{ repo: string }> { + const base = await mkdtemp(join(tmpdir(), "wf-committer-")); + const bare = join(base, "origin.git"); + const repo = join(base, "work"); + await mkdir(repo, { recursive: true }); + await mkdir(bare, { recursive: true }); + await execFileAsync("git", ["init"], { cwd: repo, encoding: "utf8" }); + await git(repo, ["config", "user.email", "t@t"]); + await git(repo, ["config", "user.name", "t"]); + await writeFile(join(repo, "README.md"), "# hi\n", "utf8"); + await git(repo, ["add", "README.md"]); + await git(repo, ["commit", "-m", "init"]); + await execFileAsync("git", ["init", "--bare"], { cwd: bare, encoding: "utf8" }); + await git(repo, ["remote", "add", "origin", bare]); + await git(repo, ["push", "-u", "origin", "HEAD"]); + return { repo }; +} + +function makeCtx(): ThreadContext { + return { + start: { + role: START, + content: "do thing", + meta: { maxRounds: 10 }, + timestamp: Date.now(), + }, + steps: [], + }; +} + +const provider = { baseUrl: "https://example.com/v1", apiKey: "k", model: "m" }; + +describe("createCommitterRole", () => { + test("returns committed false when working tree clean", async () => { + const { repo } = await setupRepoWithRemote(); + const agent: AgentFn = async () => { + throw new Error("agent should not run"); + }; + const role = createCommitterRole( + agent, + { provider, dryRun: null }, + { cwd: repo, remote: "origin", threadId: null }, + ); + const out = await role(makeCtx()); + expect(out.meta.committed).toBe(false); + }); + + test("dry-run skips pipeline", async () => { + const agent: AgentFn = async () => { + throw new Error("agent should not run"); + }; + const role = createCommitterRole(agent, { provider, dryRun: true }); + const out = await role(makeCtx()); + expect(out.content).toBe("[dry-run] committer skipped"); + expect(out.meta).toEqual({ committed: true }); + }); + + test("commits and pushes when changes exist", async () => { + const { repo } = await setupRepoWithRemote(); + await appendFile(join(repo, "README.md"), "\nmore\n", "utf8"); + + const spy = spyOn(workflowRoleLlm, "extractMetaOrThrow").mockResolvedValue({ + branch: "feat/test-commit", + message: "feat: add more", + }); + + const agent: AgentFn = async () => "plan text"; + const role = createCommitterRole( + agent, + { provider, dryRun: null }, + { cwd: repo, remote: "origin", threadId: null }, + ); + + const out = await role(makeCtx()); + expect(out.meta.committed).toBe(true); + expect(spy).toHaveBeenCalled(); + + const branches = await gitExec(repo, ["branch", "--list", "feat/test-commit"]); + expect(branches).toContain("feat/test-commit"); + + const remoteRefs = await gitExec(repo, ["ls-remote", "--heads", "origin", "feat/test-commit"]); + expect(remoteRefs.trim().length).toBeGreaterThan(0); + + spy.mockRestore(); + }); +}); diff --git a/packages/workflow-role-committer/package.json b/packages/workflow-role-committer/package.json new file mode 100644 index 0000000..aa685a9 --- /dev/null +++ b/packages/workflow-role-committer/package.json @@ -0,0 +1,16 @@ +{ + "name": "@uncaged/workflow-role-committer", + "version": "0.1.0", + "type": "module", + "main": "src/index.ts", + "types": "src/index.ts", + "scripts": { + "build": "echo 'TODO'", + "test": "bun test" + }, + "dependencies": { + "@uncaged/workflow": "workspace:*", + "@uncaged/workflow-role-llm": "workspace:*", + "zod": "^4.0.0" + } +} diff --git a/packages/workflow-role-committer/src/committer.ts b/packages/workflow-role-committer/src/committer.ts new file mode 100644 index 0000000..4d95118 --- /dev/null +++ b/packages/workflow-role-committer/src/committer.ts @@ -0,0 +1,150 @@ +import type { AgentFn, Role, RoleResult, ThreadContext } from "@uncaged/workflow"; +import { + decorateRole, + extractMetaOrThrow, + type LlmProvider, + onFail, + withDryRun, +} from "@uncaged/workflow-role-llm"; +import * as z from "zod/v4"; + +import { gitExec } from "./git-exec.js"; + +export const committerMetaSchema = z.object({ + committed: z + .boolean() + .describe("true if branch created, changes committed, and pushed successfully"), +}); +export type CommitterMeta = z.infer; + +const committerPlanSchema = z.object({ + branch: z.string().describe("Feature branch name, e.g. feat/slug or fix/slug"), + message: z.string().describe("Single-line conventional commit subject"), +}); + +export type CommitterGitConfig = { + cwd: string; + remote: string; + /** When non-null, prompts mention `uncaged-workflow thread ` for extra context. */ + threadId: string | null; +}; + +export const DEFAULT_COMMITTER_GIT_CONFIG: CommitterGitConfig = { + cwd: ".", + remote: "origin", + threadId: null, +}; + +function resolveExtractDryRun(extractDryRun: boolean | null): boolean { + return extractDryRun === true; +} + +function summarizeThreadContext(ctx: ThreadContext): string { + const lines: string[] = [`Initial prompt:\n${ctx.start.content}`]; + for (const step of ctx.steps) { + const snippet = step.content.length > 800 ? `${step.content.slice(0, 800)}…` : step.content; + lines.push(`\n### ${step.role}\n${snippet}`); + } + return lines.join("\n"); +} + +function sanitizeBranch(branch: string): string { + const t = branch.trim(); + if ( + t === "" || + t.includes("..") || + t.includes(" ") || + t.startsWith("-") || + t.includes("\n") || + t.includes("\t") + ) { + throw new Error(`invalid branch name: ${branch}`); + } + return t; +} + +function sanitizeCommitMessage(message: string): string { + const line = message.trim().split(/\r?\n/)[0] ?? ""; + if (line === "") { + throw new Error("commit message is empty"); + } + return line; +} + +function committerPlanPrompt(ctx: ThreadContext, gitConfig: CommitterGitConfig): string { + const threadLine = + gitConfig.threadId !== null + ? `Optional CLI context: run \`uncaged-workflow thread ${gitConfig.threadId}\` if available.\n` + : ""; + + return `You plan a git branch and a single-line conventional commit message for the following workflow thread. + +${threadLine} +## Thread context + +${summarizeThreadContext(ctx)} + +## Your task + +Infer a good branch name (\`feat/\` or \`fix/\`) and a conventional commit **subject** (one line, no body). + +Reply with enough detail that a maintainer understands the change; structured extraction will read \`branch\` and \`message\` from your answer.`; +} + +async function runCommitterPipeline( + ctx: ThreadContext, + agent: AgentFn, + extract: { provider: LlmProvider; dryRun: boolean | null }, + gitConfig: CommitterGitConfig, +): Promise> { + const cwd = gitConfig.cwd; + const porcelain = await gitExec(cwd, ["status", "--porcelain"]); + if (porcelain.trim() === "") { + return { + content: "Working tree clean; nothing to commit.", + meta: { committed: false }, + }; + } + + const prompt = committerPlanPrompt(ctx, gitConfig); + const raw = await agent(ctx, prompt); + const plan = await extractMetaOrThrow("committer-plan", raw, committerPlanSchema, { + provider: extract.provider, + dryRun: resolveExtractDryRun(extract.dryRun), + }); + + const branch = sanitizeBranch(plan.branch); + const message = sanitizeCommitMessage(plan.message); + + await gitExec(cwd, ["checkout", "-b", branch]); + await gitExec(cwd, ["add", "-A"]); + await gitExec(cwd, ["commit", "-m", message]); + await gitExec(cwd, ["push", "-u", gitConfig.remote, branch]); + + return { + content: raw, + meta: { committed: true }, + }; +} + +/** + * Git committer role: LLM proposes branch + message; this package runs git via `child_process`. + * Decorators match nerve semantics: dry-run skips work with `committed: true`; failures yield `committed: false`. + */ +export function createCommitterRole( + adapter: AgentFn, + extract: { provider: LlmProvider; dryRun: boolean | null }, + gitConfig: CommitterGitConfig = DEFAULT_COMMITTER_GIT_CONFIG, +): Role { + const inner: Role = async (ctx) => + runCommitterPipeline(ctx, adapter, extract, gitConfig); + + return decorateRole(inner, [ + withDryRun({ + label: "committer", + meta: { committed: true }, + dryRun: resolveExtractDryRun(extract.dryRun), + }), + onFail({ label: "committer", meta: { committed: false } }), + ]); +} diff --git a/packages/workflow-role-committer/src/git-exec.ts b/packages/workflow-role-committer/src/git-exec.ts new file mode 100644 index 0000000..9fcb68c --- /dev/null +++ b/packages/workflow-role-committer/src/git-exec.ts @@ -0,0 +1,26 @@ +import { execFile } from "node:child_process"; +import { promisify } from "node:util"; + +const execFileAsync = promisify(execFile); + +/** Runs `git` with args in `cwd`; throws if git exits non-zero. */ +export async function gitExec(cwd: string, args: readonly string[]): Promise { + try { + const r = await execFileAsync("git", [...args], { + cwd, + encoding: "utf8", + maxBuffer: 10 * 1024 * 1024, + }); + return r.stdout; + } catch (e) { + const stderr = + typeof e === "object" && + e !== null && + "stderr" in e && + typeof (e as { stderr: unknown }).stderr === "string" + ? (e as { stderr: string }).stderr + : ""; + const msg = e instanceof Error ? e.message : String(e); + throw new Error(`git ${args.join(" ")} failed: ${msg}${stderr ? ` (${stderr.trim()})` : ""}`); + } +} diff --git a/packages/workflow-role-committer/src/index.ts b/packages/workflow-role-committer/src/index.ts new file mode 100644 index 0000000..ef91d66 --- /dev/null +++ b/packages/workflow-role-committer/src/index.ts @@ -0,0 +1,8 @@ +export { + type CommitterGitConfig, + type CommitterMeta, + committerMetaSchema, + createCommitterRole, + DEFAULT_COMMITTER_GIT_CONFIG, +} from "./committer.js"; +export { gitExec } from "./git-exec.js"; diff --git a/packages/workflow-role-committer/tsconfig.json b/packages/workflow-role-committer/tsconfig.json new file mode 100644 index 0000000..b270640 --- /dev/null +++ b/packages/workflow-role-committer/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "rootDir": "src", + "outDir": "dist", + "composite": true + }, + "include": ["src/**/*.ts"], + "references": [{ "path": "../workflow" }, { "path": "../workflow-role-llm" }] +} diff --git a/packages/workflow-role-committer/tsconfig.tsbuildinfo b/packages/workflow-role-committer/tsconfig.tsbuildinfo new file mode 100644 index 0000000..f857eca --- /dev/null +++ b/packages/workflow-role-committer/tsconfig.tsbuildinfo @@ -0,0 +1 @@ +{"fileNames":["../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es5.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2015.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2016.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2017.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2018.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2019.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2020.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2021.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2022.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.decorators.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../workflow/dist/result.d.ts","../workflow/dist/base32.d.ts","../workflow/dist/bundle-validator.d.ts","../workflow/dist/types.d.ts","../workflow/dist/create-role-moderator.d.ts","../workflow/dist/logger.d.ts","../workflow/dist/engine.d.ts","../workflow/dist/workflow-descriptor.d.ts","../workflow/dist/extract-bundle-exports.d.ts","../workflow/dist/fork-thread.d.ts","../workflow/dist/generate-descriptor.d.ts","../workflow/dist/hash.d.ts","../workflow/dist/registry-types.d.ts","../workflow/dist/registry.d.ts","../workflow/dist/storage-root.d.ts","../workflow/dist/thread-pause-gate.d.ts","../workflow/dist/ulid.d.ts","../workflow/dist/worker-entry-path.d.ts","../workflow/dist/index.d.ts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/json-schema.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/standard-schema.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/registries.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/to-json-schema.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/util.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/versions.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/schemas.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/checks.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/errors.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/core.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/parse.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/regexes.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/ar.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/az.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/be.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/bg.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/ca.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/cs.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/da.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/de.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/el.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/en.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/eo.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/es.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/fa.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/fi.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/fr.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/fr-CA.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/he.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/hr.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/hu.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/hy.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/id.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/is.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/it.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/ja.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/ka.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/kh.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/km.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/ko.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/lt.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/mk.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/ms.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/nl.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/no.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/ota.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/ps.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/pl.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/pt.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/ro.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/ru.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/sl.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/sv.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/ta.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/th.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/tr.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/ua.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/uk.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/ur.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/uz.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/vi.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/zh-CN.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/zh-TW.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/yo.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/index.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/doc.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/api.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/json-schema-processors.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/json-schema-generator.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/index.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/classic/errors.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/classic/parse.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/classic/schemas.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/classic/checks.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/classic/compat.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/classic/from-json-schema.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/classic/iso.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/classic/coerce.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/classic/external.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/classic/index.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/index.d.cts","../workflow-role-llm/dist/build-descriptor.d.ts","../workflow-role-llm/dist/types.d.ts","../workflow-role-llm/dist/create-llm-adapter.d.ts","../workflow-role-llm/dist/create-role.d.ts","../workflow-role-llm/dist/decorators.d.ts","../workflow-role-llm/dist/llm-extract.d.ts","../workflow-role-llm/dist/schema-defaults.d.ts","../workflow-role-llm/dist/index.d.ts","./src/git-exec.ts","./src/committer.ts","./src/index.ts"],"fileIdsList":[[146],[146,149],[81,141,144,146,147,148,149,150,151,152,153,154],[77,79,149],[155],[146,147],[78,146,148],[79,81,83,84,85,86],[81,83,85,86],[81,83,85],[78,81,83,84,86],[77,79,80,81,82,83,84,85,86,87,88,141,142,143,144,145],[77,79,80,83],[79,80,83],[83,86],[77,78,80,81,82,84,85,86],[77,78,79,83,146],[83,84,85,86],[156],[85],[89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140],[76,157,165,166],[166,167],[76,157],[76,159],[76,157,159],[76],[158,159,160,161,162,163,164],[157],[58],[61],[61,63],[58,61,65],[58,61],[65],[58,59,60,61,62,63,64,65,66,67,68,69,71,72,73,74,75],[58,70]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},{"version":"4edc2a2b62429c384fb2ba139c39f1a43b96af5f93291c84a6ac9776b47c3ba1","impliedFormat":99},{"version":"992ded501959b1693fcb637eb5b48522988c0df853bfedc925bd6afc18eaaf77","impliedFormat":99},{"version":"d0836624fcdcbb735bf480f1deb714c3cab7a8ddeae1c35c6a35bb9e8a45e86d","impliedFormat":99},{"version":"b6927e1abf52466b51028c42e44bd88bfeb410fe2225f187e82bade88c3d76f4","impliedFormat":99},{"version":"c67c095283936c1daa6f531cb653de48bec38bfc76ded66313f9cdc9fa41fcae","impliedFormat":99},{"version":"b65685775336f2b8058b04b273f8f2017dc7ea83225d5a85dde2c99afbdf8ec8","impliedFormat":99},{"version":"92648e5ea3195972ce89424ecfa54e088936e2b7801433f61b2c5c72231ad684","impliedFormat":99},{"version":"233b4095d8e5a60d7d9f6fe73457c6e5294dc60a43ae5f672f753a21a317e53b","impliedFormat":99},{"version":"a504500068b08ac0c8dcf6c75ac80a563554cb64c39e1ba0e8afd5eb474deed3","impliedFormat":99},{"version":"7931a3f4da303db1ca82a4cfe29affeb359d366d36504a0e21fd6862877b0015","impliedFormat":99},{"version":"bb52fde5f53c0c1eb1a72d75cf46eafc305e1c54d90ddc236c91afbb2f3d93da","impliedFormat":99},{"version":"1477988abd65547d132126f335b380e200a0706dbc3a125d4ac6fe18dbc03d0e","impliedFormat":99},{"version":"ddb2b11c3b5b33a6ee5278623c73a0696cfd20e802f48f1a59d063bb91fca9f8","impliedFormat":99},{"version":"8c70d0ecaf6126ae97224e7293316a1146b7ed4eb438e09f60ed24c57ac6f6aa","impliedFormat":99},{"version":"d191748e209d788e576441214eea630e7bc4e777b1024216e7e753297f6806ee","impliedFormat":99},{"version":"248fdfcf1aa6df88c1affa05f5a6aa6b205d03d0da538592c266163fd005fddf","impliedFormat":99},{"version":"eaaf70ad623fd2e476a1ed926badde1dd18da4e193cec2f379add18189f0bf2e","impliedFormat":99},{"version":"e94b40901c0cfbd84af67c66cc6d431c17b6768db48c3d32afdb44cf67c530a8","impliedFormat":99},{"version":"18210800194d8bc2a06c704aa21fc5d5e56344f0a83ffdcfc6d5d39c7fb4755c","impliedFormat":99},{"version":"c1a2e05eb6d7ca8d7e4a7f4c93ccf0c2857e842a64c98eaee4d85841ee9855e6","impliedFormat":1},{"version":"835fb2909ce458740fb4a49fc61709896c6864f5ce3db7f0a88f06c720d74d02","impliedFormat":1},{"version":"6e5857f38aa297a859cab4ec891408659218a5a2610cd317b6dcbef9979459cc","impliedFormat":1},{"version":"ead8e39c2e11891f286b06ae2aa71f208b1802661fcdb2425cffa4f494a68854","impliedFormat":1},{"version":"40ba6c32eb732a09e4446ade5cb6ad0c147f186f9c9dc6878b90b4418ad9f6ea","impliedFormat":1},{"version":"fdd814741843f85c98281522c58f5a646590ba9019fad2efaa95987655e0611b","impliedFormat":1},{"version":"c78aff4fb58b28b8f642d5095fc7eeb79f00e652a67caa19693af1adabb833c9","impliedFormat":1},{"version":"f80a08ced8818dc99359c0acd5b3f12762e1ce53758007759b0d4e503cbf4a5e","impliedFormat":1},{"version":"37935fa7564bcc6e0bc845b766a24391098d26f7c8245d6e8ab37bc016816e94","impliedFormat":1},{"version":"68add36d9632bc096d7245d24d6b0b8ad5f125183016102a3dad4c9c2438ccb0","impliedFormat":1},{"version":"3a819c2928ee06bbcc84e2797fd3558ae2ebb7e0ed8d87f71732fb2e2acc87b4","impliedFormat":1},{"version":"0f8a263f4c8595c8a07de52e3f3927640c44386c1aa2984de9eae50d75e613b2","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"346fffde7c32da87c2196eb7494422449dc2ca82d3b4e6bf55be1d1a33ffc2b0","impliedFormat":1},{"version":"add0ce7b77ba5b308492fa68f77f24d1ed1d9148534bdf05ac17c30763fc1a79","impliedFormat":1},{"version":"8b5875e4958528042103fdd775e106a7f76bafc29709f0690df9a7d2241d52a7","impliedFormat":1},{"version":"2f67911e4bf4e0717dc2ded248ce2d5e4398d945ee13889a6852c1233ea41508","impliedFormat":1},{"version":"d8430c275b0f59417ea8e173cfb888a4477b430ec35b595bf734f3ec7a7d729f","impliedFormat":1},{"version":"69364df1c776372d7df1fb46a6cb3a6bf7f55e700f533a104e3f9d70a32bec18","impliedFormat":1},{"version":"6042774c61ece4ba77b3bf375f15942eb054675b7957882a00c22c0e4fe5865c","impliedFormat":1},{"version":"5a3bd57ed7a9d9afef74c75f77fce79ba3c786401af9810cdf45907c4e93f30e","impliedFormat":1},{"version":"aef26cf95593c8ace1c62c4724f9afac77bdfa756fb8a00613cd152117cb2f43","impliedFormat":1},{"version":"30db853bb2e60170ba11e39ab48bacecb32d06d4def89eedf17e58ebab762a65","impliedFormat":1},{"version":"e27451b24234dfed45f6cf22112a04955183a99c42a2691fb4936d63cfe42761","impliedFormat":1},{"version":"2316301dd223d31962d917999acf8e543e0119c5d24ec984c9f22cb23247160c","impliedFormat":1},{"version":"58d65a2803c3b6629b0e18c8bf1bc883a686fcf0333230dd0151ab6e85b74307","impliedFormat":1},{"version":"e818471014c77c103330aee11f00a7a00b37b35500b53ea6f337aefacd6174c9","impliedFormat":1},{"version":"268fd6d9f2e807a39a6c5aa654b00f949feb63d3faa7dd0f9bba7dde9172159c","impliedFormat":1},{"version":"d8bc0c5487582c6d887c32c92d8b4ffb23310146fcb1d82adf4b15c77f57c4ac","impliedFormat":1},{"version":"8cb31102790372bebfd78dd56d6752913b0f3e2cefbeb08375acd9f5ba737155","impliedFormat":1},{"version":"d4e310694c372ce4292ebd759a15337719adf891306232c5bf4475e30a4ca9dd","impliedFormat":99},{"version":"087230be51288e212007181824b22fcf6867fda24cd3ad6f17b52cd332858ef5","impliedFormat":99},{"version":"d6519a54f1d28ef2db4f1ca5258cc4ba5b52d1e139e7b25c433c84bd037a0afd","impliedFormat":99},{"version":"36da05b0412a59fbd53a1dcaa0ebf605583cbfd1b50882e46532b9812899eeeb","impliedFormat":99},{"version":"0944927dd803944ac8d525747401524841b425a08703bfe3325c6d15de9dbbca","impliedFormat":99},{"version":"2cebc60619494159ff0b30baeab7cb5eaeb67eb0a3c0ca9737f92a5adf4b9e9d","impliedFormat":99},{"version":"8176bd99a93025a82c5a0ae1a8bdd8c1bcfbe1353cb4690f207cebe04b096672","impliedFormat":99},{"version":"2b44ab9eccdadc7fb1d6beefb3531b47def7b5afb072eb7afd619e1b6173a248","impliedFormat":99},{"version":"ac2781b21808800e046d0e4ed87a39ec010579378ec4bbd47cecb48e5347264c","signature":"b5244e8deb796eec6f5dc0245d43f5ec188327fc0b307bc918f54e9254340428","impliedFormat":99},{"version":"4f2f0e26ab06e427c0eec6451c6104f7ec3a49822413915acb9e3a727053d812","signature":"d225cb13d3e3ef7852fbe5d3e035a89a9048b38fce535551a0bc8d8134f15ee5","impliedFormat":99},{"version":"60260dc4010928077c1c105464e40b3d4f4b7d5f8363f2cb45efb0b5f9129828","signature":"6aaa4fff4083dd0c54a284395585315d3a74cb4dcc87c8f1817e5cddc46245c2","impliedFormat":99}],"root":[[166,168]],"options":{"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"exactOptionalPropertyTypes":true,"module":199,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9},"referencedMap":[[150,1],[154,2],[151,2],[147,1],[155,3],[152,4],[156,5],[153,2],[148,6],[149,7],[143,8],[84,9],[86,10],[85,11],[146,12],[145,13],[144,14],[87,9],[79,15],[83,16],[80,17],[81,18],[157,19],[89,20],[90,20],[91,20],[92,20],[93,20],[94,20],[95,20],[96,20],[97,20],[98,20],[99,20],[100,20],[101,20],[102,20],[104,20],[103,20],[105,20],[106,20],[107,20],[108,20],[109,20],[141,21],[110,20],[111,20],[112,20],[113,20],[114,20],[115,20],[116,20],[117,20],[118,20],[119,20],[120,20],[121,20],[122,20],[124,20],[123,20],[125,20],[126,20],[127,20],[128,20],[129,20],[130,20],[131,20],[132,20],[133,20],[134,20],[135,20],[136,20],[137,20],[140,20],[138,20],[139,20],[167,22],[168,23],[158,24],[160,25],[161,26],[162,27],[165,28],[163,26],[164,29],[159,29],[59,30],[60,30],[62,31],[64,32],[66,33],[67,34],[68,35],[76,36],[71,37],[73,30],[65,30]],"semanticDiagnosticsPerFile":[[166,[{"start":25,"length":20,"messageText":"Cannot find name 'node:child_process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node` and then add 'node' to the types field in your tsconfig.","category":1,"code":2591},{"start":73,"length":11,"messageText":"Cannot find name 'node:util'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node` and then add 'node' to the types field in your tsconfig.","category":1,"code":2591}]],[167,[{"start":4373,"length":130,"code":2328,"category":1,"messageText":{"messageText":"Types of parameters 'role' and 'role' are incompatible.","category":1,"code":2328,"next":[{"messageText":"Type 'Promise>' is not assignable to type 'Promise>'.","category":1,"code":2322,"next":[{"messageText":"Type 'RoleResult<{ committed: boolean; }>' is not assignable to type 'RoleResult<{ committed: true; }>'.","category":1,"code":2322,"next":[{"messageText":"Type '{ committed: boolean; }' is not assignable to type '{ committed: true; }'.","category":1,"code":2322,"next":[{"messageText":"Types of property 'committed' are incompatible.","category":1,"code":2326,"next":[{"messageText":"Type 'boolean' is not assignable to type 'true'.","category":1,"code":2322,"canonicalHead":{"code":2322,"messageText":"Type '{ committed: boolean; }' is not assignable to type '{ committed: true; }'."}}]}]}]}]}],"canonicalHead":{"code":2322,"messageText":"Type 'RoleDecorator<{ committed: true; }>' is not assignable to type 'RoleDecorator<{ committed: boolean; }>'."}},"canonicalHead":{"code":2322,"messageText":"Type 'RoleDecorator<{ committed: true; }>' is not assignable to type 'RoleDecorator<{ committed: boolean; }>'."}},{"start":4509,"length":58,"code":2328,"category":1,"messageText":{"messageText":"Types of parameters 'role' and 'role' are incompatible.","category":1,"code":2328,"next":[{"messageText":"Type 'Promise>' is not assignable to type 'Promise>'.","category":1,"code":2322,"next":[{"messageText":"Type 'RoleResult<{ committed: boolean; }>' is not assignable to type 'RoleResult<{ committed: false; }>'.","category":1,"code":2322,"next":[{"messageText":"Type '{ committed: boolean; }' is not assignable to type '{ committed: false; }'.","category":1,"code":2322,"next":[{"messageText":"Types of property 'committed' are incompatible.","category":1,"code":2326,"next":[{"messageText":"Type 'boolean' is not assignable to type 'false'.","category":1,"code":2322,"canonicalHead":{"code":2322,"messageText":"Type '{ committed: boolean; }' is not assignable to type '{ committed: false; }'."}}]}]}]}]}],"canonicalHead":{"code":2322,"messageText":"Type 'RoleDecorator<{ committed: false; }>' is not assignable to type 'RoleDecorator<{ committed: boolean; }>'."}},"canonicalHead":{"code":2322,"messageText":"Type 'RoleDecorator<{ committed: false; }>' is not assignable to type 'RoleDecorator<{ committed: boolean; }>'."}}]]],"latestChangedDtsFile":"./dist/index.d.ts","version":"6.0.2"} \ No newline at end of file diff --git a/packages/workflow-role-reviewer/__tests__/reviewer.test.ts b/packages/workflow-role-reviewer/__tests__/reviewer.test.ts new file mode 100644 index 0000000..6b6b31b --- /dev/null +++ b/packages/workflow-role-reviewer/__tests__/reviewer.test.ts @@ -0,0 +1,88 @@ +import { afterEach, describe, expect, mock, test } from "bun:test"; + +import type { AgentFn, ThreadContext } from "@uncaged/workflow"; +import { START } from "@uncaged/workflow"; + +import { createReviewerRole, DEFAULT_REVIEWER_CONFIG } from "../src/reviewer.js"; + +function toolCallResponse(argsJson: string): Response { + return new Response( + JSON.stringify({ + choices: [ + { + message: { + tool_calls: [ + { + function: { + name: "extract", + arguments: argsJson, + }, + }, + ], + }, + }, + ], + }), + { status: 200, headers: { "Content-Type": "application/json" } }, + ); +} + +function makeCtx(): ThreadContext { + return { + start: { + role: START, + content: "task", + meta: { maxRounds: 10 }, + timestamp: Date.now(), + }, + steps: [], + }; +} + +const provider = { baseUrl: "https://example.com/v1", apiKey: "k", model: "m" }; + +describe("createReviewerRole", () => { + const originalFetch = globalThis.fetch; + + afterEach(() => { + globalThis.fetch = originalFetch; + mock.restore(); + }); + + test("runs reviewer extract", async () => { + globalThis.fetch = () => Promise.resolve(toolCallResponse(JSON.stringify({ approved: true }))); + + const agent: AgentFn = async (_ctx, prompt) => { + expect(prompt).toContain("git diff"); + expect(prompt).toContain(DEFAULT_REVIEWER_CONFIG.cwd); + return "review done"; + }; + + const role = createReviewerRole(agent, { provider, dryRun: null }); + const out = await role(makeCtx()); + expect(out.meta).toEqual({ approved: true }); + }); + + test("includes uncaged-workflow thread hint when threadId set", async () => { + globalThis.fetch = () => Promise.resolve(toolCallResponse(JSON.stringify({ approved: false }))); + + let seen = ""; + const agent: AgentFn = async (_ctx, prompt) => { + seen = prompt; + return "x"; + }; + + const role = createReviewerRole( + agent, + { provider, dryRun: null }, + { + cwd: "/proj", + conventionsPath: null, + extraChecks: [], + threadId: "01ABCDEF234567890ABCDEFGH", + }, + ); + await role(makeCtx()); + expect(seen).toContain("uncaged-workflow thread 01ABCDEF234567890ABCDEFGH"); + }); +}); diff --git a/packages/workflow-role-reviewer/package.json b/packages/workflow-role-reviewer/package.json new file mode 100644 index 0000000..340c430 --- /dev/null +++ b/packages/workflow-role-reviewer/package.json @@ -0,0 +1,16 @@ +{ + "name": "@uncaged/workflow-role-reviewer", + "version": "0.1.0", + "type": "module", + "main": "src/index.ts", + "types": "src/index.ts", + "scripts": { + "build": "echo 'TODO'", + "test": "bun test" + }, + "dependencies": { + "@uncaged/workflow": "workspace:*", + "@uncaged/workflow-role-llm": "workspace:*", + "zod": "^4.0.0" + } +} diff --git a/packages/workflow-role-reviewer/src/index.ts b/packages/workflow-role-reviewer/src/index.ts new file mode 100644 index 0000000..d39a797 --- /dev/null +++ b/packages/workflow-role-reviewer/src/index.ts @@ -0,0 +1,7 @@ +export { + createReviewerRole, + DEFAULT_REVIEWER_CONFIG, + type ReviewerConfig, + type ReviewerMeta, + reviewerMetaSchema, +} from "./reviewer.js"; diff --git a/packages/workflow-role-reviewer/src/reviewer.ts b/packages/workflow-role-reviewer/src/reviewer.ts new file mode 100644 index 0000000..9bf40b2 --- /dev/null +++ b/packages/workflow-role-reviewer/src/reviewer.ts @@ -0,0 +1,103 @@ +import type { AgentFn, Role, ThreadContext } from "@uncaged/workflow"; +import { createRole, type LlmProvider } from "@uncaged/workflow-role-llm"; +import * as z from "zod/v4"; + +export const reviewerMetaSchema = z.object({ + approved: z.boolean().describe("true if the diff is clean and ready to merge"), +}); +export type ReviewerMeta = z.infer; + +export type ReviewerConfig = { + cwd: string; + conventionsPath: string | null; + extraChecks: ReadonlyArray; + /** When non-null, prompts reference `uncaged-workflow thread `. */ + threadId: string | null; +}; + +export const DEFAULT_REVIEWER_CONFIG: ReviewerConfig = { + cwd: ".", + conventionsPath: "CONVENTIONS.md", + extraChecks: [], + threadId: null, +}; + +function summarizeThreadContext(ctx: ThreadContext): string { + const lines: string[] = [`Initial prompt:\n${ctx.start.content}`]; + for (const step of ctx.steps) { + const snippet = step.content.length > 600 ? `${step.content.slice(0, 600)}…` : step.content; + lines.push(`\n### ${step.role}\n${snippet}`); + } + return lines.join("\n"); +} + +function reviewerPrompt(config: ReviewerConfig, ctx: ThreadContext): string { + const { cwd, conventionsPath, extraChecks, threadId } = config; + + const conventionsBlock = + conventionsPath !== null ? `Read project conventions: \`cat ${cwd}/${conventionsPath}\`\n` : ""; + + const threadBlock = + threadId !== null + ? `Read the workflow thread for context: \`uncaged-workflow thread ${threadId}\`\n` + : `## Thread context (no thread id)\n\n${summarizeThreadContext(ctx)}\n`; + + const extraBlock = + extraChecks.length > 0 + ? `\n### Project-specific checks\n${extraChecks.map((c) => `- ${c}`).join("\n")}\n` + : ""; + + return `You are a **code reviewer**. You run after the coder and before the tester. + +**IMPORTANT: The project is at \`${cwd}\`. Always \`cd ${cwd}\` first.** + +${threadBlock} +${conventionsBlock} +## Your job — static analysis of the git diff + +Run these commands and analyze the output: + +1. **\`cd ${cwd} && git diff --stat\`** — see what files changed +2. **\`cd ${cwd} && git diff\`** — read the actual diff +3. **\`cd ${cwd} && git status --short\`** — check for untracked files + +## Checklist + +### Reject (approved: false) — tell coder exactly what to fix +- **Garbage files**: build artifacts, lockfiles, IDE config that should not be committed +- **Secrets/credentials**: API keys, tokens, passwords hardcoded in the diff +- **Unrelated changes**: files modified outside the scope of the task +${ + conventionsPath !== null + ? `- **Convention violations**: patterns that contradict ${conventionsPath}\n` + : "" +}${extraBlock} +### Approve (approved: true) — no comment needed +- Diff is clean, focused, follows project standards + +End with: +\`\`\`json +{ "approved": true } +\`\`\` +or +\`\`\`json +{ "approved": false } +\`\`\``; +} + +/** + * Code review role: agent inspects git diffs; structured extract yields `approved`. + */ +export function createReviewerRole( + adapter: AgentFn, + extract: { provider: LlmProvider; dryRun: boolean | null }, + config: ReviewerConfig = DEFAULT_REVIEWER_CONFIG, +): Role { + return createRole({ + name: "reviewer", + schema: reviewerMetaSchema, + systemPrompt: async (ctx) => reviewerPrompt(config, ctx), + agent: adapter, + extract: { provider: extract.provider, dryRun: extract.dryRun }, + }); +} diff --git a/packages/workflow-role-reviewer/tsconfig.json b/packages/workflow-role-reviewer/tsconfig.json new file mode 100644 index 0000000..b270640 --- /dev/null +++ b/packages/workflow-role-reviewer/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "rootDir": "src", + "outDir": "dist", + "composite": true + }, + "include": ["src/**/*.ts"], + "references": [{ "path": "../workflow" }, { "path": "../workflow-role-llm" }] +} diff --git a/packages/workflow-role-reviewer/tsconfig.tsbuildinfo b/packages/workflow-role-reviewer/tsconfig.tsbuildinfo new file mode 100644 index 0000000..041aaba --- /dev/null +++ b/packages/workflow-role-reviewer/tsconfig.tsbuildinfo @@ -0,0 +1 @@ +{"fileNames":["../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es5.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2015.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2016.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2017.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2018.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2019.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2020.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2021.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2022.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.decorators.d.ts","../../../../.local/share/npm/lib/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../workflow/dist/result.d.ts","../workflow/dist/base32.d.ts","../workflow/dist/bundle-validator.d.ts","../workflow/dist/types.d.ts","../workflow/dist/create-role-moderator.d.ts","../workflow/dist/logger.d.ts","../workflow/dist/engine.d.ts","../workflow/dist/workflow-descriptor.d.ts","../workflow/dist/extract-bundle-exports.d.ts","../workflow/dist/fork-thread.d.ts","../workflow/dist/generate-descriptor.d.ts","../workflow/dist/hash.d.ts","../workflow/dist/registry-types.d.ts","../workflow/dist/registry.d.ts","../workflow/dist/storage-root.d.ts","../workflow/dist/thread-pause-gate.d.ts","../workflow/dist/ulid.d.ts","../workflow/dist/worker-entry-path.d.ts","../workflow/dist/index.d.ts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/json-schema.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/standard-schema.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/registries.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/to-json-schema.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/util.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/versions.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/schemas.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/checks.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/errors.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/core.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/parse.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/regexes.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/ar.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/az.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/be.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/bg.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/ca.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/cs.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/da.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/de.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/el.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/en.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/eo.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/es.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/fa.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/fi.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/fr.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/fr-CA.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/he.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/hr.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/hu.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/hy.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/id.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/is.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/it.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/ja.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/ka.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/kh.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/km.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/ko.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/lt.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/mk.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/ms.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/nl.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/no.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/ota.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/ps.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/pl.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/pt.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/ro.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/ru.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/sl.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/sv.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/ta.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/th.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/tr.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/ua.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/uk.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/ur.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/uz.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/vi.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/zh-CN.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/zh-TW.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/yo.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/locales/index.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/doc.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/api.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/json-schema-processors.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/json-schema-generator.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/core/index.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/classic/errors.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/classic/parse.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/classic/schemas.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/classic/checks.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/classic/compat.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/classic/from-json-schema.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/classic/iso.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/classic/coerce.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/classic/external.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/classic/index.d.cts","../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/index.d.cts","../workflow-role-llm/dist/build-descriptor.d.ts","../workflow-role-llm/dist/types.d.ts","../workflow-role-llm/dist/create-llm-adapter.d.ts","../workflow-role-llm/dist/create-role.d.ts","../workflow-role-llm/dist/decorators.d.ts","../workflow-role-llm/dist/llm-extract.d.ts","../workflow-role-llm/dist/schema-defaults.d.ts","../workflow-role-llm/dist/index.d.ts","./src/reviewer.ts","./src/index.ts"],"fileIdsList":[[146],[146,149],[81,141,144,146,147,148,149,150,151,152,153,154],[77,79,149],[155],[146,147],[78,146,148],[79,81,83,84,85,86],[81,83,85,86],[81,83,85],[78,81,83,84,86],[77,79,80,81,82,83,84,85,86,87,88,141,142,143,144,145],[77,79,80,83],[79,80,83],[83,86],[77,78,80,81,82,84,85,86],[77,78,79,83,146],[83,84,85,86],[156],[85],[89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140],[76,157],[76,159],[76,157,159],[76],[158,159,160,161,162,163,164],[157],[166],[76,157,165],[58],[61],[61,63],[58,61,65],[58,61],[65],[58,59,60,61,62,63,64,65,66,67,68,69,71,72,73,74,75],[58,70]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},{"version":"4edc2a2b62429c384fb2ba139c39f1a43b96af5f93291c84a6ac9776b47c3ba1","impliedFormat":99},{"version":"992ded501959b1693fcb637eb5b48522988c0df853bfedc925bd6afc18eaaf77","impliedFormat":99},{"version":"d0836624fcdcbb735bf480f1deb714c3cab7a8ddeae1c35c6a35bb9e8a45e86d","impliedFormat":99},{"version":"b6927e1abf52466b51028c42e44bd88bfeb410fe2225f187e82bade88c3d76f4","impliedFormat":99},{"version":"c67c095283936c1daa6f531cb653de48bec38bfc76ded66313f9cdc9fa41fcae","impliedFormat":99},{"version":"b65685775336f2b8058b04b273f8f2017dc7ea83225d5a85dde2c99afbdf8ec8","impliedFormat":99},{"version":"92648e5ea3195972ce89424ecfa54e088936e2b7801433f61b2c5c72231ad684","impliedFormat":99},{"version":"233b4095d8e5a60d7d9f6fe73457c6e5294dc60a43ae5f672f753a21a317e53b","impliedFormat":99},{"version":"a504500068b08ac0c8dcf6c75ac80a563554cb64c39e1ba0e8afd5eb474deed3","impliedFormat":99},{"version":"7931a3f4da303db1ca82a4cfe29affeb359d366d36504a0e21fd6862877b0015","impliedFormat":99},{"version":"bb52fde5f53c0c1eb1a72d75cf46eafc305e1c54d90ddc236c91afbb2f3d93da","impliedFormat":99},{"version":"1477988abd65547d132126f335b380e200a0706dbc3a125d4ac6fe18dbc03d0e","impliedFormat":99},{"version":"ddb2b11c3b5b33a6ee5278623c73a0696cfd20e802f48f1a59d063bb91fca9f8","impliedFormat":99},{"version":"8c70d0ecaf6126ae97224e7293316a1146b7ed4eb438e09f60ed24c57ac6f6aa","impliedFormat":99},{"version":"d191748e209d788e576441214eea630e7bc4e777b1024216e7e753297f6806ee","impliedFormat":99},{"version":"248fdfcf1aa6df88c1affa05f5a6aa6b205d03d0da538592c266163fd005fddf","impliedFormat":99},{"version":"eaaf70ad623fd2e476a1ed926badde1dd18da4e193cec2f379add18189f0bf2e","impliedFormat":99},{"version":"e94b40901c0cfbd84af67c66cc6d431c17b6768db48c3d32afdb44cf67c530a8","impliedFormat":99},{"version":"18210800194d8bc2a06c704aa21fc5d5e56344f0a83ffdcfc6d5d39c7fb4755c","impliedFormat":99},{"version":"c1a2e05eb6d7ca8d7e4a7f4c93ccf0c2857e842a64c98eaee4d85841ee9855e6","impliedFormat":1},{"version":"835fb2909ce458740fb4a49fc61709896c6864f5ce3db7f0a88f06c720d74d02","impliedFormat":1},{"version":"6e5857f38aa297a859cab4ec891408659218a5a2610cd317b6dcbef9979459cc","impliedFormat":1},{"version":"ead8e39c2e11891f286b06ae2aa71f208b1802661fcdb2425cffa4f494a68854","impliedFormat":1},{"version":"40ba6c32eb732a09e4446ade5cb6ad0c147f186f9c9dc6878b90b4418ad9f6ea","impliedFormat":1},{"version":"fdd814741843f85c98281522c58f5a646590ba9019fad2efaa95987655e0611b","impliedFormat":1},{"version":"c78aff4fb58b28b8f642d5095fc7eeb79f00e652a67caa19693af1adabb833c9","impliedFormat":1},{"version":"f80a08ced8818dc99359c0acd5b3f12762e1ce53758007759b0d4e503cbf4a5e","impliedFormat":1},{"version":"37935fa7564bcc6e0bc845b766a24391098d26f7c8245d6e8ab37bc016816e94","impliedFormat":1},{"version":"68add36d9632bc096d7245d24d6b0b8ad5f125183016102a3dad4c9c2438ccb0","impliedFormat":1},{"version":"3a819c2928ee06bbcc84e2797fd3558ae2ebb7e0ed8d87f71732fb2e2acc87b4","impliedFormat":1},{"version":"0f8a263f4c8595c8a07de52e3f3927640c44386c1aa2984de9eae50d75e613b2","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"346fffde7c32da87c2196eb7494422449dc2ca82d3b4e6bf55be1d1a33ffc2b0","impliedFormat":1},{"version":"add0ce7b77ba5b308492fa68f77f24d1ed1d9148534bdf05ac17c30763fc1a79","impliedFormat":1},{"version":"8b5875e4958528042103fdd775e106a7f76bafc29709f0690df9a7d2241d52a7","impliedFormat":1},{"version":"2f67911e4bf4e0717dc2ded248ce2d5e4398d945ee13889a6852c1233ea41508","impliedFormat":1},{"version":"d8430c275b0f59417ea8e173cfb888a4477b430ec35b595bf734f3ec7a7d729f","impliedFormat":1},{"version":"69364df1c776372d7df1fb46a6cb3a6bf7f55e700f533a104e3f9d70a32bec18","impliedFormat":1},{"version":"6042774c61ece4ba77b3bf375f15942eb054675b7957882a00c22c0e4fe5865c","impliedFormat":1},{"version":"5a3bd57ed7a9d9afef74c75f77fce79ba3c786401af9810cdf45907c4e93f30e","impliedFormat":1},{"version":"aef26cf95593c8ace1c62c4724f9afac77bdfa756fb8a00613cd152117cb2f43","impliedFormat":1},{"version":"30db853bb2e60170ba11e39ab48bacecb32d06d4def89eedf17e58ebab762a65","impliedFormat":1},{"version":"e27451b24234dfed45f6cf22112a04955183a99c42a2691fb4936d63cfe42761","impliedFormat":1},{"version":"2316301dd223d31962d917999acf8e543e0119c5d24ec984c9f22cb23247160c","impliedFormat":1},{"version":"58d65a2803c3b6629b0e18c8bf1bc883a686fcf0333230dd0151ab6e85b74307","impliedFormat":1},{"version":"e818471014c77c103330aee11f00a7a00b37b35500b53ea6f337aefacd6174c9","impliedFormat":1},{"version":"268fd6d9f2e807a39a6c5aa654b00f949feb63d3faa7dd0f9bba7dde9172159c","impliedFormat":1},{"version":"d8bc0c5487582c6d887c32c92d8b4ffb23310146fcb1d82adf4b15c77f57c4ac","impliedFormat":1},{"version":"8cb31102790372bebfd78dd56d6752913b0f3e2cefbeb08375acd9f5ba737155","impliedFormat":1},{"version":"d4e310694c372ce4292ebd759a15337719adf891306232c5bf4475e30a4ca9dd","impliedFormat":99},{"version":"087230be51288e212007181824b22fcf6867fda24cd3ad6f17b52cd332858ef5","impliedFormat":99},{"version":"d6519a54f1d28ef2db4f1ca5258cc4ba5b52d1e139e7b25c433c84bd037a0afd","impliedFormat":99},{"version":"36da05b0412a59fbd53a1dcaa0ebf605583cbfd1b50882e46532b9812899eeeb","impliedFormat":99},{"version":"0944927dd803944ac8d525747401524841b425a08703bfe3325c6d15de9dbbca","impliedFormat":99},{"version":"2cebc60619494159ff0b30baeab7cb5eaeb67eb0a3c0ca9737f92a5adf4b9e9d","impliedFormat":99},{"version":"8176bd99a93025a82c5a0ae1a8bdd8c1bcfbe1353cb4690f207cebe04b096672","impliedFormat":99},{"version":"2b44ab9eccdadc7fb1d6beefb3531b47def7b5afb072eb7afd619e1b6173a248","impliedFormat":99},{"version":"bfaf324638dfdd2dba8164a3ae8af22a8ff68cec0ff266f47fa018add273f33b","signature":"02638c756e2f40ed471261f803bd1f35198f28a826d90c05a6d2e2ae223e6d7a","impliedFormat":99},{"version":"09b0c9698a88a895106e7f5c674cd91c25384bb4f5a9aae19c6360790e216821","signature":"ebc871b4d2f8f7e9cf7510650ff5d811b419ee137ddc6559abb152b239355a1f","impliedFormat":99}],"root":[166,167],"options":{"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"exactOptionalPropertyTypes":true,"module":199,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9},"referencedMap":[[150,1],[154,2],[151,2],[147,1],[155,3],[152,4],[156,5],[153,2],[148,6],[149,7],[143,8],[84,9],[86,10],[85,11],[146,12],[145,13],[144,14],[87,9],[79,15],[83,16],[80,17],[81,18],[157,19],[89,20],[90,20],[91,20],[92,20],[93,20],[94,20],[95,20],[96,20],[97,20],[98,20],[99,20],[100,20],[101,20],[102,20],[104,20],[103,20],[105,20],[106,20],[107,20],[108,20],[109,20],[141,21],[110,20],[111,20],[112,20],[113,20],[114,20],[115,20],[116,20],[117,20],[118,20],[119,20],[120,20],[121,20],[122,20],[124,20],[123,20],[125,20],[126,20],[127,20],[128,20],[129,20],[130,20],[131,20],[132,20],[133,20],[134,20],[135,20],[136,20],[137,20],[140,20],[138,20],[139,20],[158,22],[160,23],[161,24],[162,25],[165,26],[163,24],[164,27],[159,27],[167,28],[166,29],[59,30],[60,30],[62,31],[64,32],[66,33],[67,34],[68,35],[76,36],[71,37],[73,30],[65,30]],"latestChangedDtsFile":"./dist/index.d.ts","version":"6.0.2"} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 1dd8c4e..5488c73 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -18,6 +18,8 @@ "references": [ { "path": "packages/workflow" }, { "path": "packages/workflow-role-llm" }, + { "path": "packages/workflow-role-committer" }, + { "path": "packages/workflow-role-reviewer" }, { "path": "packages/workflow-agent-cursor" }, { "path": "packages/workflow-agent-hermes" }, { "path": "packages/cli-workflow" }