@norma-team/cli 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../packages/agent-runtime/src/parse.ts","../../../packages/agent-runtime/src/echo.ts","../../../packages/agents/src/catalog.ts","../../../packages/agents/src/serialize.ts","../../../packages/agents/src/store.ts","../../../packages/agent-runtime/src/cli-agent.ts","../../../packages/agent-runtime/src/claude-code.ts","../../../packages/agent-runtime/src/opencode.ts","../../../packages/agent-runtime/src/command.ts","../../../packages/agent-runtime/src/human.ts","../../../packages/core/src/phase.ts","../../../packages/core/src/plan.ts","../../../node_modules/.pnpm/zod@3.24.1/node_modules/zod/lib/index.mjs","../../../packages/config/src/schema.ts","../../../packages/config/src/presets/software-dev.ts","../../../packages/config/src/epic-plan.ts","../../../packages/context/src/fs-store.ts","../../../packages/context/src/handoff.ts","../../../packages/tracker/src/normalize.ts","../../../packages/tracker/src/memory.ts","../../../packages/tracker/src/introspection.ts","../../../packages/tracker/src/retry.ts","../../../packages/orchestrator/src/orchestrator.ts","../src/commands/agents.ts","../../../packages/adapter-github/src/rest.ts","../../../packages/adapter-github/src/github.ts","../../../packages/adapter-jira/src/rest.ts","../../../packages/adapter-jira/src/jira.ts","../../../packages/adapter-linear/src/gql.ts","../../../packages/adapter-linear/src/linear.ts","../src/factory.ts","../src/commands/doctor.ts","../src/materialize.ts","../src/commands/epic.ts","../src/mapping.ts","../src/commands/init.ts","../src/report.ts","../src/commands/report.ts","../../../packages/server/src/dashboard.ts","../../../packages/server/src/state.ts","../../../packages/server/src/server.ts","../src/commands/serve.ts","../src/commands/status.ts","../src/git.ts","../src/commands/worktree.ts","../src/index.ts"],"names":["resolve","spawn","p","util","objectUtil","errorUtil","errorMap","check","ctx","result","issues","elements","processed","p2","ZodFirstPartyTypeKind","readFile","mkdir","writeFile","join","retryAfterMs","program","resolved","text","dirname","existsSync","access"],"mappings":"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","file":"index.js","sourcesContent":["import type { AgentOutcome, Verdict } from \"./port.js\";\n\nconst VERDICT_RE = /NORMA_VERDICT:\\s*(ok|pass|fail|approve|bounce|error|pending)/i;\nconst BOUNCE_RE = /NORMA_BOUNCE:\\s*([A-Z][A-Z0-9]*-\\d+)\\s*:\\s*(.+)/gi;\n\n/** Parse the machine-readable verdict (and any QA bounces) from an agent's stdout. */\nexport function parseVerdict(stdout: string): AgentOutcome {\n const m = stdout.match(VERDICT_RE);\n const verdict = (m?.[1]?.toLowerCase() as Verdict) ?? \"error\";\n const bounced: { ref: string; defect: string }[] = [];\n for (const bm of stdout.matchAll(BOUNCE_RE)) {\n if (bm[1] && bm[2]) bounced.push({ ref: bm[1], defect: bm[2].trim() });\n }\n return {\n verdict,\n summary: m ? `verdict=${verdict}` : \"no verdict token found in agent output\",\n bounced: bounced.length ? bounced : undefined,\n raw: stdout,\n };\n}\n\n/** The protocol footer appended to every agent prompt. */\nexport function verdictContract(): string {\n return [\n \"\",\n \"── NORMA PROTOCOL ──────────────────────────────────────────────\",\n \"When done, output EXACTLY one line:\",\n \" NORMA_VERDICT: <ok|pass|fail|approve|bounce|error|pending>\",\n \"Semantics by stage:\",\n \" plan → ok (wrote the epic plan JSON as instructed) or error\",\n \" dispatch/rework → ok (green: lint+build+tests pass) or error\",\n \" review → pass or fail\",\n \" qa → approve or bounce\",\n \" escalate → ok (re-scoped) or error\",\n \"For a QA bounce, also emit one line per failing task:\",\n \" NORMA_BOUNCE: <TASK-REF>: <one-line defect>\",\n \"─────────────────────────────────────────────────────────────────\",\n ].join(\"\\n\");\n}\n","import type { AgentOutcome, AgentRequest, AgentRunner, Verdict } from \"./port.js\";\n\nconst GREEN: Record<AgentRequest[\"kind\"], Verdict> = {\n plan: \"ok\",\n dispatch: \"ok\",\n rework: \"ok\",\n review: \"pass\",\n qa: \"approve\",\n escalate: \"ok\",\n};\n\nexport interface EchoRunnerOptions {\n /** Override the verdict per stage or per task ref for deterministic tests. */\n decide?: (req: AgentRequest) => AgentOutcome | Verdict | undefined;\n}\n\n/**\n * A deterministic, offline agent runtime. Runs no model — it returns scripted\n * verdicts (all-green by default). Lets the whole orchestrator loop run end-to-end\n * in tests and `--dry-run` without any API/CLI. Swap in ClaudeCodeRunner for real work.\n */\nexport class EchoRunner implements AgentRunner {\n readonly kind = \"echo\";\n constructor(private readonly opts: EchoRunnerOptions = {}) {}\n\n async run(req: AgentRequest): Promise<AgentOutcome> {\n const decided = this.opts.decide?.(req);\n if (decided && typeof decided === \"object\") return decided;\n const verdict = (decided as Verdict) ?? GREEN[req.kind];\n return {\n verdict,\n summary: `[echo] ${req.role} ${req.kind}${req.task ? ` ${req.task.ref}` : \"\"}${\n req.batch ? ` ${req.batch}` : \"\"\n } → ${verdict}`,\n };\n }\n}\n","import type { AgentSpec } from \"./spec.js\";\n\n/**\n * Pre-established agent definitions the onboarding offers. These are templates —\n * the generator writes them to `.norma/agents/<role>.md` and the user edits them.\n * Instructions are runtime-neutral (no verdict protocol here; the runner appends it).\n */\nexport const CATALOG: AgentSpec[] = [\n {\n role: \"principal-engineer\",\n stage: \"escalate\",\n description:\n \"Tech lead: decomposes epics into a dependency DAG + QA batches; re-scopes stuck tasks.\",\n suggestedModel: \"claude-opus-4-8\",\n tools: [\"Read\", \"Grep\", \"Glob\", \"Bash\"],\n instructions: `You are the Principal Engineer. You do NOT write feature code — you plan,\ndecompose, sequence, and guard standards.\n\nWhen escalated a task that bounced repeatedly, re-scope it: tighten the acceptance\ncriteria, split it into smaller tasks, or fix a wrong dependency. State the decision\nplainly and, if needed, adjust the task's routing/labels.\n\nPrinciples: prefer few tasks; a shallow DAG; each task a single cohesive unit an\nengineer finishes in one sitting; every task carries clear, testable acceptance\ncriteria. Never invent dependencies that force needless serialization.`,\n },\n {\n role: \"api-engineer\",\n stage: \"worker\",\n description: \"Backend engineer: implements API/use-case/repository/domain tasks.\",\n suggestedModel: \"claude-sonnet-5\",\n tools: [\"Read\", \"Edit\", \"Write\", \"Grep\", \"Glob\", \"Bash\"],\n instructions: `You are a backend engineer. Implement the task to completion in the worktree.\n\nFollow the project's backend standards (read its CLAUDE.md / architecture docs first).\nErrors are values, contracts are validated, dependencies are explicit. Write the test\nfirst when it belongs to the task. Finish only when lint + build + the relevant tests\nare green, then commit with a message referencing the task identifier.`,\n },\n {\n role: \"web-engineer\",\n stage: \"worker\",\n description: \"Frontend engineer: implements UI/page/component tasks.\",\n suggestedModel: \"claude-sonnet-5\",\n tools: [\"Read\", \"Edit\", \"Write\", \"Grep\", \"Glob\", \"Bash\"],\n instructions: `You are a frontend engineer. Implement the task to completion in the worktree.\n\nFollow the project's frontend standards (read its architecture docs first): server-first\nwith the smallest interactive leaves, typography/design tokens over ad-hoc styles,\nperformance by default. Finish only when lint + build pass, then commit referencing the\ntask identifier.`,\n },\n {\n role: \"code-reviewer\",\n stage: \"review\",\n description: \"Reviews a task's diff for standards, correctness, lint, build, and types.\",\n suggestedModel: \"claude-haiku-4-5-20251001\",\n tools: [\"Read\", \"Grep\", \"Glob\", \"Bash\"],\n instructions: `You review the pending changes for one task. Check: lint (zero errors), build +\ntypes, and adherence to the project's standards. Verify correctness against the task's\nacceptance criteria.\n\nPass only when everything is clean. Otherwise fail with specific, actionable findings —\nname the file, the problem, and the fix.`,\n },\n {\n role: \"qa-engineer\",\n stage: \"qa\",\n description:\n \"Tests a QA batch end-to-end against its acceptance criteria; approves or bounces.\",\n suggestedModel: \"claude-sonnet-5\",\n tools: [\"Read\", \"Edit\", \"Write\", \"Grep\", \"Glob\", \"Bash\"],\n instructions: `You are QA. You verify behaviour, not code style. Never approve on assumption —\nexercise the software and observe the result.\n\nTest the batch as an integrated feature against its QA plan and every task's acceptance\ncriteria. Approve only when all criteria pass. Otherwise bounce the specific failing\ntask(s) with a reproducible defect: exact steps/inputs, expected vs actual, and the\nsmallest hypothesis of where it's wrong. Never bounce a whole batch for one task's fault.`,\n },\n // --- generic roles (domain-neutral) ---\n {\n role: \"engineer\",\n stage: \"worker\",\n description: \"Generic implementer for a single worker lane.\",\n suggestedModel: \"claude-sonnet-5\",\n tools: [\"Read\", \"Edit\", \"Write\", \"Grep\", \"Glob\", \"Bash\"],\n instructions: `You implement the assigned task end-to-end in the worktree, following the\nproject's conventions. Finish only when the project's checks pass, then commit.`,\n },\n {\n role: \"reviewer\",\n stage: \"review\",\n description: \"Generic reviewer for a task's changes.\",\n suggestedModel: \"claude-haiku-4-5-20251001\",\n tools: [\"Read\", \"Grep\", \"Glob\", \"Bash\"],\n instructions: `You review the task's changes for correctness and the project's standards. Pass\nwhen clean; otherwise fail with specific findings.`,\n },\n {\n role: \"tester\",\n stage: \"qa\",\n description: \"Generic QA for a batch of tasks.\",\n suggestedModel: \"claude-sonnet-5\",\n tools: [\"Read\", \"Edit\", \"Write\", \"Grep\", \"Glob\", \"Bash\"],\n instructions: `You verify the batch behaves as specified by exercising it. Approve when all\ncriteria pass; otherwise bounce the specific failing task(s) with a reproducible defect.`,\n },\n // --- content pipeline roles ---\n {\n role: \"writer\",\n stage: \"worker\",\n description: \"Drafts a long-form content piece to the brief.\",\n suggestedModel: \"claude-sonnet-5\",\n tools: [\"Read\", \"Write\", \"Edit\"],\n instructions: `You draft the piece to its brief: clear structure, accurate claims, the\nrequested tone and length. Finish only when the draft fully covers the brief's outline.`,\n },\n {\n role: \"social-writer\",\n stage: \"worker\",\n description: \"Writes short social/derivative copy for a piece.\",\n suggestedModel: \"claude-sonnet-5\",\n tools: [\"Read\", \"Write\", \"Edit\"],\n instructions: `You write concise social copy from the source piece: hook first, on-brand\nvoice, platform limits respected. Finish when the variants cover the requested channels.`,\n },\n {\n role: \"editor\",\n stage: \"review\",\n description: \"Reviews a draft for clarity, structure, voice, and style.\",\n suggestedModel: \"claude-sonnet-5\",\n tools: [\"Read\", \"Edit\"],\n instructions: `You edit for clarity, structure, voice and house style. Pass when the piece\nreads clean and on-brand; otherwise fail with specific, actionable edits.`,\n },\n {\n role: \"fact-checker\",\n stage: \"qa\",\n description: \"Verifies every claim in a batch of pieces against sources.\",\n suggestedModel: \"claude-sonnet-5\",\n tools: [\"Read\", \"WebSearch\", \"WebFetch\"],\n instructions: `You verify each factual claim against a credible source. Approve only when\nall claims check out; otherwise bounce the specific piece(s) with the unverified claim and\nthe contradicting source.`,\n },\n {\n role: \"editor-in-chief\",\n stage: \"escalate\",\n description: \"Re-scopes a piece that repeatedly bounced.\",\n suggestedModel: \"claude-opus-4-8\",\n tools: [\"Read\"],\n instructions: `A piece has bounced repeatedly. Re-scope it: tighten the brief, split it, or\nreset expectations. State the decision plainly.`,\n },\n];\n\nexport function getAgent(role: string): AgentSpec | undefined {\n return CATALOG.find((a) => a.role === role);\n}\n\nexport function catalogByStage(stage: AgentSpec[\"stage\"]): AgentSpec[] {\n return CATALOG.filter((a) => a.stage === stage);\n}\n","import type { AgentSpec, AgentStage } from \"./spec.js\";\n\nconst STAGES = new Set<AgentStage>([\"worker\", \"review\", \"qa\", \"escalate\"]);\n\n/** Serialize an AgentSpec to a markdown file with a small YAML-style frontmatter. */\nexport function specToMarkdown(spec: AgentSpec): string {\n const fm: string[] = [\"---\", `role: ${spec.role}`, `stage: ${spec.stage}`];\n fm.push(`description: ${spec.description}`);\n if (spec.suggestedModel) fm.push(`model: ${spec.suggestedModel}`);\n if (spec.tools?.length) fm.push(`tools: [${spec.tools.join(\", \")}]`);\n fm.push(\"---\", \"\");\n return `${fm.join(\"\\n\")}\\n${spec.instructions.trim()}\\n`;\n}\n\n/**\n * Parse a generated agent markdown back into an AgentSpec. Tolerant of the small\n * frontmatter subset we emit (role/stage/description/model/tools). The body after\n * the frontmatter is the instructions.\n */\nexport function markdownToSpec(md: string): AgentSpec {\n const match = md.match(/^---\\n([\\s\\S]*?)\\n---\\n?([\\s\\S]*)$/);\n if (!match) {\n throw new Error(\"agent file has no frontmatter block\");\n }\n const [, front, body] = match;\n const fields: Record<string, string> = {};\n for (const line of (front ?? \"\").split(\"\\n\")) {\n const idx = line.indexOf(\":\");\n if (idx === -1) continue;\n const key = line.slice(0, idx).trim();\n const value = line.slice(idx + 1).trim();\n if (key) fields[key] = value;\n }\n const role = fields.role;\n const stageRaw = fields.stage as AgentStage | undefined;\n if (!role) throw new Error(\"agent file missing `role`\");\n if (!stageRaw || !STAGES.has(stageRaw)) {\n throw new Error(`agent file has invalid stage: ${fields.stage ?? \"(none)\"}`);\n }\n const tools = fields.tools\n ? fields.tools\n .replace(/^\\[|\\]$/g, \"\")\n .split(\",\")\n .map((t) => t.trim())\n .filter(Boolean)\n : undefined;\n return {\n role,\n stage: stageRaw,\n description: fields.description ?? \"\",\n suggestedModel: fields.model || undefined,\n tools,\n instructions: (body ?? \"\").trim(),\n };\n}\n","import { mkdir, readFile, readdir, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { markdownToSpec, specToMarkdown } from \"./serialize.js\";\nimport type { AgentSpec } from \"./spec.js\";\n\n/** Write one agent spec to `<dir>/<role>.md`. */\nexport async function writeAgent(dir: string, spec: AgentSpec): Promise<string> {\n await mkdir(dir, { recursive: true });\n const path = join(dir, `${spec.role}.md`);\n await writeFile(path, specToMarkdown(spec), \"utf8\");\n return path;\n}\n\n/** Write many specs; returns the written paths. */\nexport async function writeAgents(dir: string, specs: AgentSpec[]): Promise<string[]> {\n const out: string[] = [];\n for (const s of specs) out.push(await writeAgent(dir, s));\n return out;\n}\n\n/** Read one agent by role from `<dir>/<role>.md`, or null if absent. */\nexport async function readAgent(dir: string, role: string): Promise<AgentSpec | null> {\n try {\n return markdownToSpec(await readFile(join(dir, `${role}.md`), \"utf8\"));\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code === \"ENOENT\") return null;\n throw err;\n }\n}\n\n/** List every agent spec present in a directory. */\nexport async function listAgents(dir: string): Promise<AgentSpec[]> {\n let names: string[];\n try {\n names = await readdir(dir);\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code === \"ENOENT\") return [];\n throw err;\n }\n const specs: AgentSpec[] = [];\n for (const n of names) {\n if (!n.endsWith(\".md\")) continue;\n const md = await readFile(join(dir, n), \"utf8\");\n specs.push(markdownToSpec(md));\n }\n return specs;\n}\n","import { spawn } from \"node:child_process\";\nimport { type AgentSpec, readAgent } from \"@norma/agents\";\nimport { parseVerdict, verdictContract } from \"./parse.js\";\nimport type { AgentOutcome, AgentRequest, AgentRunner } from \"./port.js\";\n\nexport interface CliAgentConfig {\n /** Runtime id (e.g. \"claude-code\", \"opencode\"). */\n kind: string;\n /** The executable to spawn. */\n bin: string;\n /**\n * Build the argv from the composed prompt and the SELECTED model. Norma never\n * touches the model API — it only forwards the selector; the CLI owns access + auth.\n */\n buildArgs: (prompt: string, model: string | undefined) => string[];\n /** Global model selector; overrides an agent's suggested model when set. */\n model?: string;\n /** Directory of `.md` agent definitions — the role's file becomes the persona. */\n agentsDir?: string;\n /** Extra env for the child. */\n env?: Record<string, string>;\n /** Per-invocation timeout in ms (default 30 min). */\n timeoutMs?: number;\n}\n\n/**\n * Generic runner for headless CLI coding agents (Claude Code, OpenCode, aider, …).\n * They all share the same shape: compose a prompt, spawn the CLI with a selected\n * model, parse the verdict. Adding a new agent CLI is a config, not new code.\n */\nexport class CliAgentRunner implements AgentRunner {\n readonly kind: string;\n constructor(private readonly cfg: CliAgentConfig) {\n this.kind = cfg.kind;\n }\n\n private async loadSpec(role: string): Promise<AgentSpec | null> {\n if (!this.cfg.agentsDir) return null;\n return readAgent(this.cfg.agentsDir, role);\n }\n\n private buildPrompt(req: AgentRequest, spec: AgentSpec | null): string {\n const persona = spec?.instructions ? spec.instructions : `You are the \"${req.role}\" agent.`;\n return `${persona}\\n\\nStage: ${req.kind}.\\n\\n${req.context}\\n${verdictContract()}`;\n }\n\n async run(req: AgentRequest): Promise<AgentOutcome> {\n const spec = await this.loadSpec(req.role);\n const model = this.cfg.model ?? spec?.suggestedModel; // the model SELECTOR\n const args = this.cfg.buildArgs(this.buildPrompt(req, spec), model);\n\n return new Promise<AgentOutcome>((resolve) => {\n const child = spawn(this.cfg.bin, args, {\n cwd: req.worktree ?? process.cwd(),\n env: { ...process.env, ...this.cfg.env },\n });\n let stdout = \"\";\n let stderr = \"\";\n const timer = setTimeout(() => child.kill(\"SIGKILL\"), this.cfg.timeoutMs ?? 30 * 60 * 1000);\n child.stdout.on(\"data\", (d) => {\n stdout += d.toString();\n });\n child.stderr.on(\"data\", (d) => {\n stderr += d.toString();\n });\n child.on(\"error\", (err) => {\n clearTimeout(timer);\n resolve({\n verdict: \"error\",\n summary: `${this.cfg.kind} spawn failed: ${err.message}`,\n raw: stderr,\n });\n });\n child.on(\"close\", (code) => {\n clearTimeout(timer);\n const parsed = parseVerdict(stdout);\n if (code !== 0 && parsed.summary.startsWith(\"no verdict token\")) {\n resolve({\n verdict: \"error\",\n summary: `${this.cfg.kind} exited ${code}: ${stderr.slice(0, 300)}`,\n raw: stdout + stderr,\n });\n return;\n }\n resolve(parsed);\n });\n });\n }\n}\n","import { CliAgentRunner } from \"./cli-agent.js\";\nimport type { AgentOutcome, AgentRequest, AgentRunner } from \"./port.js\";\n\nexport interface ClaudeCodeRunnerOptions {\n /** Path to the claude CLI (default \"claude\"). */\n bin?: string;\n /** Model selector to pin (e.g. \"claude-opus-4-8\"); overrides an agent's suggested model. */\n model?: string;\n /** Permission mode (default \"bypassPermissions\" — intended for the sandbox). */\n permissionMode?: string;\n /** Extra CLI args. */\n extraArgs?: string[];\n /** Per-invocation timeout in ms. */\n timeoutMs?: number;\n /** Directory of `.md` agent definitions (`.norma/agents`). */\n agentsDir?: string;\n}\n\n/**\n * Drives a role via the Claude Code CLI headlessly (`claude -p`). Norma only\n * selects the model (`--model`); Claude Code owns model access + auth.\n */\nexport class ClaudeCodeRunner implements AgentRunner {\n readonly kind = \"claude-code\";\n private inner: CliAgentRunner;\n\n constructor(opts: ClaudeCodeRunnerOptions = {}) {\n const permissionMode = opts.permissionMode ?? \"bypassPermissions\";\n this.inner = new CliAgentRunner({\n kind: \"claude-code\",\n bin: opts.bin ?? \"claude\",\n model: opts.model,\n agentsDir: opts.agentsDir,\n timeoutMs: opts.timeoutMs,\n buildArgs: (prompt, model) => [\n \"-p\",\n prompt,\n ...(model ? [\"--model\", model] : []),\n \"--permission-mode\",\n permissionMode,\n ...(opts.extraArgs ?? []),\n ],\n });\n }\n\n run(req: AgentRequest): Promise<AgentOutcome> {\n return this.inner.run(req);\n }\n}\n","import { CliAgentRunner } from \"./cli-agent.js\";\nimport type { AgentOutcome, AgentRequest, AgentRunner } from \"./port.js\";\n\nexport interface OpenCodeRunnerOptions {\n /** Path to the opencode CLI (default \"opencode\"). */\n bin?: string;\n /**\n * Model selector, provider-qualified (e.g. \"openai/gpt-4o\", \"anthropic/claude-...\",\n * \"ollama/llama3\"). Overrides an agent's suggested model. Norma only selects it;\n * OpenCode resolves the provider + credentials and makes the call.\n */\n model?: string;\n /** Extra CLI args. */\n extraArgs?: string[];\n /** Per-invocation timeout in ms. */\n timeoutMs?: number;\n /** Directory of `.md` agent definitions (`.norma/agents`). */\n agentsDir?: string;\n}\n\n/**\n * Drives a role via the OpenCode CLI headlessly (`opencode run`). OpenCode speaks\n * to many providers, so selecting \"openai/…\", \"anthropic/…\" or a local model is just\n * the model selector Norma forwards — Norma never accesses the model itself.\n */\nexport class OpenCodeRunner implements AgentRunner {\n readonly kind = \"opencode\";\n private inner: CliAgentRunner;\n\n constructor(opts: OpenCodeRunnerOptions = {}) {\n this.inner = new CliAgentRunner({\n kind: \"opencode\",\n bin: opts.bin ?? \"opencode\",\n model: opts.model,\n agentsDir: opts.agentsDir,\n timeoutMs: opts.timeoutMs,\n buildArgs: (prompt, model) => [\n \"run\",\n ...(model ? [\"--model\", model] : []),\n ...(opts.extraArgs ?? []),\n prompt,\n ],\n });\n }\n\n run(req: AgentRequest): Promise<AgentOutcome> {\n return this.inner.run(req);\n }\n}\n","import { spawn } from \"node:child_process\";\nimport { parseVerdict } from \"./parse.js\";\nimport type { AgentOutcome, AgentRequest, AgentRunner } from \"./port.js\";\n\nexport interface CommandRunnerOptions {\n /** The executable to run for every stage (e.g. \"./agents/run.sh\" or \"python\"). */\n command: string;\n /** Fixed args prepended before the per-run args. */\n args?: string[];\n /** Per-invocation timeout in ms (default 30 min). */\n timeoutMs?: number;\n /** Extra environment for the child. */\n env?: Record<string, string>;\n}\n\n/**\n * The universal escape hatch: drive ANY execution model by running a user command.\n * The full AgentRequest is written to the child's stdin as JSON and mirrored into\n * env (NORMA_STAGE, NORMA_ROLE, NORMA_TASK_REF, NORMA_WORKTREE); the child prints\n * a `NORMA_VERDICT:` line (and `NORMA_BOUNCE:` lines for QA) to stdout.\n *\n * This is how Norma stays model-agnostic without a bespoke runner per provider:\n * point `command` at a script wrapping OpenAI, a local model, a bash pipeline, etc.\n */\nexport class CommandRunner implements AgentRunner {\n readonly kind = \"command\";\n constructor(private readonly opts: CommandRunnerOptions) {}\n\n run(req: AgentRequest): Promise<AgentOutcome> {\n const args = [...(this.opts.args ?? [])];\n return new Promise<AgentOutcome>((resolve) => {\n const child = spawn(this.opts.command, args, {\n cwd: req.worktree ?? process.cwd(),\n env: {\n ...process.env,\n ...this.opts.env,\n NORMA_STAGE: req.kind,\n NORMA_ROLE: req.role,\n NORMA_TASK_REF: req.task?.ref ?? \"\",\n NORMA_BATCH: req.batch ?? \"\",\n NORMA_WORKTREE: req.worktree ?? \"\",\n },\n });\n let stdout = \"\";\n let stderr = \"\";\n const timer = setTimeout(() => child.kill(\"SIGKILL\"), this.opts.timeoutMs ?? 30 * 60 * 1000);\n child.stdout.on(\"data\", (d) => {\n stdout += d.toString();\n });\n child.stderr.on(\"data\", (d) => {\n stderr += d.toString();\n });\n child.on(\"error\", (err) => {\n clearTimeout(timer);\n resolve({ verdict: \"error\", summary: `spawn failed: ${err.message}`, raw: stderr });\n });\n child.on(\"close\", (code) => {\n clearTimeout(timer);\n const parsed = parseVerdict(stdout);\n if (code !== 0 && parsed.summary.startsWith(\"no verdict token\")) {\n resolve({\n verdict: \"error\",\n summary: `command exited ${code}: ${stderr.slice(0, 300)}`,\n raw: stdout + stderr,\n });\n return;\n }\n resolve(parsed);\n });\n child.stdin.on(\"error\", () => {});\n child.stdin.write(JSON.stringify(req));\n child.stdin.end();\n });\n }\n}\n","import { parseVerdict } from \"./parse.js\";\nimport type { AgentOutcome, AgentRequest, AgentRunner } from \"./port.js\";\n\nexport interface HumanRunnerOptions {\n /** Read an issue's comment bodies (oldest→newest). */\n readComments: (issueId: string) => Promise<string[]>;\n /** Post a comment to an issue. */\n postComment: (issueId: string, body: string) => Promise<void>;\n /** Prefix marking the request comment Norma posts (default \"🧑 awaiting\"). */\n requestPrefix?: string;\n}\n\n/**\n * A human-in-the-loop runtime for the natural human stages (review / QA). It posts\n * a request comment once, then returns \"pending\" until a human replies with a\n * `NORMA_VERDICT:` line — at which point it parses and returns that verdict. The\n * orchestrator leaves the task in place while pending, so a later cycle picks up\n * the human's decision. Dispatch/rework (code authoring) should stay on an\n * automated runtime; a human runner there would stall the lane.\n */\nexport class HumanRunner implements AgentRunner {\n readonly kind = \"human\";\n private readonly prefix: string;\n constructor(private readonly opts: HumanRunnerOptions) {\n this.prefix = opts.requestPrefix ?? \"🧑 awaiting\";\n }\n\n async run(req: AgentRequest): Promise<AgentOutcome> {\n const issueId = req.task?.id ?? req.tasks?.[0]?.id;\n if (!issueId) return { verdict: \"pending\", summary: \"human runner: no task to await\" };\n\n const comments = await this.opts.readComments(issueId);\n // A human reply carrying a verdict token resolves the stage.\n const withVerdict = comments.filter((c) => /NORMA_VERDICT:/i.test(c));\n if (withVerdict.length) {\n const last = withVerdict[withVerdict.length - 1] as string;\n return parseVerdict(last);\n }\n // Otherwise post the request once and wait.\n if (!comments.some((c) => c.startsWith(this.prefix))) {\n await this.opts.postComment(\n issueId,\n `${this.prefix} ${req.role} (${req.kind}) — reply with a line \"NORMA_VERDICT: <pass|fail|approve|bounce>\".`,\n );\n }\n return { verdict: \"pending\", summary: `awaiting human ${req.role} (${req.kind})` };\n }\n}\n","/**\n * Canonical lifecycle phases the engine reasons over — provider-agnostic.\n *\n * A tracker (Linear, Jira, a local file store) has its own states and labels.\n * An adapter's *normalizer* maps a raw issue `(state, labels)` onto exactly one\n * of these phases, and maps a phase transition back onto `(state, labels)` writes.\n * The engine NEVER sees a tracker state name — only these phases. That single\n * indirection is what makes the core open to any adapter.\n *\n * The default pipeline models an agent build loop:\n * BACKLOG → READY → IN_PROGRESS → NEEDS_REVIEW → NEEDS_QA → RELEASED → DONE\n * with NEEDS_REWORK as the bounce-back lane and CANCELED as a side exit.\n */\nexport const Phase = {\n /** Exists; dependency blockers may still be open. */\n BACKLOG: \"backlog\",\n /** Frontier — all blockers satisfied, claimable by a worker now. */\n READY: \"ready\",\n /** Being implemented by its owning worker. */\n IN_PROGRESS: \"in_progress\",\n /** Bounced by review or QA; awaiting rework by the owning worker. */\n NEEDS_REWORK: \"needs_rework\",\n /** Implementation done; awaiting code review. */\n NEEDS_REVIEW: \"needs_review\",\n /** Review passed; awaiting QA (batched). */\n NEEDS_QA: \"needs_qa\",\n /** QA passed; released and accumulating (no PR/merge yet). */\n RELEASED: \"released\",\n /** Terminal — merged / shipped. */\n DONE: \"done\",\n /** Abandoned — no longer blocks anything. */\n CANCELED: \"canceled\",\n} as const;\n\nexport type Phase = (typeof Phase)[keyof typeof Phase];\n\nexport const ALL_PHASES: readonly Phase[] = Object.values(Phase);\n\n/** Phases where a task occupies a worker (dispatched but not yet released). */\nexport const IN_FLIGHT_PHASES: readonly Phase[] = [\n Phase.IN_PROGRESS,\n Phase.NEEDS_REWORK,\n Phase.NEEDS_REVIEW,\n Phase.NEEDS_QA,\n];\n\n/** Default set of phases that count a task as \"released or terminal\". */\nexport const DEFAULT_SATISFIED_PHASES: readonly Phase[] = [Phase.RELEASED, Phase.DONE];\n\n/** Default set of phases where a blocker no longer blocks its dependents. */\nexport const DEFAULT_DEP_DONE_PHASES: readonly Phase[] = [\n Phase.RELEASED,\n Phase.DONE,\n Phase.CANCELED,\n];\n\nexport function isPhase(value: unknown): value is Phase {\n return typeof value === \"string\" && (ALL_PHASES as string[]).includes(value);\n}\n","import {\n ALL_PHASES,\n DEFAULT_DEP_DONE_PHASES,\n DEFAULT_SATISFIED_PHASES,\n IN_FLIGHT_PHASES,\n Phase,\n} from \"./phase.js\";\nimport type { Intent, NormalizedTask, PhaseCounts, Plan, PlanPolicy, TaskRef } from \"./types.js\";\n\n/**\n * Role naming — which agent handles each stage. Kept out of the engine's logic\n * (the engine only decides *what* happens); this decides *who* is named in the\n * emitted intent. Fully config-driven, JSON-expressible.\n */\nexport interface RoleMap {\n /** Owner-type → agent role for dispatch & rework (e.g. { api: \"api-engineer\" }). */\n worker: Record<string, string>;\n /** Role that reviews. */\n review: string;\n /** Role that runs QA. */\n qa: string;\n /** Role that re-scopes escalated tasks. */\n escalate: string;\n}\n\nexport interface PlanContext {\n policy: PlanPolicy;\n roles: RoleMap;\n}\n\nconst toRef = (t: NormalizedTask): TaskRef => ({\n id: t.id,\n ref: t.ref,\n title: t.title,\n owner: t.owner,\n url: t.url,\n});\n\n/**\n * The deterministic graph + loop engine. PURE — no network, no clock, no I/O.\n * Same (tasks, context) ⇒ byte-identical Plan. This is the single authority on\n * the DAG frontier, the one-in-flight gate, batch readiness, and completion.\n * The LLM operator only *executes* the intents it returns.\n */\nexport function computePlan(tasks: NormalizedTask[], ctx: PlanContext): Plan {\n const concurrency = ctx.policy.concurrency ?? 1;\n const escalateAt = ctx.policy.escalateAtBounces ?? 2;\n const satisfied = new Set<Phase>(ctx.policy.satisfiedPhases ?? DEFAULT_SATISFIED_PHASES);\n const depDone = new Set<Phase>(ctx.policy.depDonePhases ?? DEFAULT_DEP_DONE_PHASES);\n const workerTypes = ctx.policy.workerTypes;\n const inFlightSet = new Set<Phase>(IN_FLIGHT_PHASES);\n\n const anomalies: string[] = [];\n\n // --- counts -------------------------------------------------------------\n const byPhase = Object.fromEntries(ALL_PHASES.map((p) => [p, 0])) as Record<Phase, number>;\n for (const t of tasks) byPhase[t.phase]++;\n const counts: PhaseCounts = { total: tasks.length, byPhase };\n\n // --- in-flight per worker (the concurrency gate) ------------------------\n const inFlight: Record<string, string[]> = Object.fromEntries(workerTypes.map((w) => [w, []]));\n for (const t of tasks) {\n if (inFlightSet.has(t.phase) && t.owner) {\n const bucket = inFlight[t.owner] ?? [];\n bucket.push(t.ref);\n inFlight[t.owner] = bucket;\n }\n if (!t.owner && t.phase !== Phase.CANCELED) {\n anomalies.push(`${t.ref} has no owner (worker type) assigned`);\n }\n }\n for (const w of workerTypes) {\n const n = inFlight[w]?.length ?? 0;\n if (n > concurrency)\n anomalies.push(\n `worker ${w} has ${n} in-flight (limit ${concurrency}): ${inFlight[w]?.join(\", \")}`,\n );\n }\n\n const actions: Intent[] = [];\n\n // 1) QA — batches whose members are ALL settled, with ≥1 pending QA. --------\n const batches = new Map<string, NormalizedTask[]>();\n for (const t of tasks) {\n if (t.batch) {\n const arr = batches.get(t.batch) ?? [];\n arr.push(t);\n batches.set(t.batch, arr);\n }\n }\n // A member stops holding the batch back once it's satisfied, canceled, or itself pending QA.\n const settled = (m: NormalizedTask) =>\n satisfied.has(m.phase) || m.phase === Phase.CANCELED || m.phase === Phase.NEEDS_QA;\n for (const [batch, members] of batches) {\n const pending = members.filter((m) => m.phase === Phase.NEEDS_QA);\n const notReady = members.filter((m) => !settled(m));\n if (pending.length > 0 && notReady.length === 0) {\n actions.push({\n kind: \"qa\",\n role: ctx.roles.qa,\n batch,\n tasks: pending.map(toRef),\n onApprove: { toPhase: Phase.RELEASED },\n onBounce: { toPhase: Phase.NEEDS_REWORK },\n });\n }\n }\n\n // 2) Review — every task awaiting review (independent of worker availability).\n for (const t of tasks) {\n if (t.phase === Phase.NEEDS_REVIEW) {\n actions.push({\n kind: \"review\",\n role: ctx.roles.review,\n task: toRef(t),\n onPass: { toPhase: Phase.NEEDS_QA },\n onFail: { toPhase: Phase.NEEDS_REWORK },\n });\n }\n }\n\n // 3) Rework / escalate — bounced tasks (escalate at the threshold). --------\n for (const t of tasks) {\n if (t.phase === Phase.NEEDS_REWORK) {\n if (t.bounces >= escalateAt) {\n actions.push({\n kind: \"escalate\",\n role: ctx.roles.escalate,\n task: toRef(t),\n bounces: t.bounces,\n });\n } else {\n const role = (t.owner && ctx.roles.worker[t.owner]) || ctx.roles.escalate;\n actions.push({\n kind: \"rework\",\n role,\n task: toRef(t),\n bounces: t.bounces,\n onDone: { toPhase: Phase.NEEDS_REVIEW },\n });\n }\n }\n }\n\n // 4) Promote — backlog tasks whose blockers are all done → frontier. -------\n for (const t of tasks) {\n if (t.phase === Phase.BACKLOG) {\n const unmet = t.blockedBy.filter((b) => !depDone.has(b.phase));\n if (unmet.length === 0) {\n actions.push({ kind: \"promote\", task: toRef(t), to: { toPhase: Phase.READY } });\n }\n }\n }\n\n // 5) Dispatch — each worker under its concurrency limit claims the lowest-order READY task of its type.\n const readyByOwner: Record<string, NormalizedTask[]> = Object.fromEntries(\n workerTypes.map((w) => [w, []]),\n );\n for (const t of tasks) {\n if (t.phase === Phase.READY && t.owner) {\n const queue = readyByOwner[t.owner];\n if (queue) queue.push(t);\n }\n }\n for (const w of workerTypes) {\n let slots = concurrency - (inFlight[w]?.length ?? 0);\n if (slots <= 0) continue;\n const queue = (readyByOwner[w] ?? []).slice().sort((a, b) => a.order - b.order);\n for (const pick of queue) {\n if (slots <= 0) break;\n actions.push({\n kind: \"dispatch\",\n worker: w,\n role: ctx.roles.worker[w] ?? ctx.roles.escalate,\n task: toRef(pick),\n onStart: { toPhase: Phase.IN_PROGRESS },\n onDone: { toPhase: Phase.NEEDS_REVIEW },\n });\n slots--;\n }\n }\n\n // 6) Completion — every task released/terminal, but not all DONE yet. ------\n const complete =\n counts.total > 0 && tasks.every((t) => satisfied.has(t.phase) || t.phase === Phase.CANCELED);\n if (complete && byPhase[Phase.DONE] < counts.total) {\n actions.push({ kind: \"complete\" });\n }\n\n return { counts, inFlight, complete, anomalies, actionCount: actions.length, actions };\n}\n","var util;\n(function (util) {\n util.assertEqual = (val) => val;\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array\n .map((val) => (typeof val === \"string\" ? `'${val}'` : val))\n .join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nvar objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nconst ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nconst getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then &&\n typeof data.then === \"function\" &&\n data.catch &&\n typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n\nconst ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nconst quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nclass ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `less than or equal to`\n : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `less than or equal to`\n : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `smaller than or equal to`\n : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\n\nlet overrideErrorMap = errorMap;\nfunction setErrorMap(map) {\n overrideErrorMap = map;\n}\nfunction getErrorMap() {\n return overrideErrorMap;\n}\n\nconst makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nconst EMPTY_PATH = [];\nfunction addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === errorMap ? undefined : errorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nclass ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" &&\n (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nconst INVALID = Object.freeze({\n status: \"aborted\",\n});\nconst DIRTY = (value) => ({ status: \"dirty\", value });\nconst OK = (value) => ({ status: \"valid\", value });\nconst isAborted = (x) => x.status === \"aborted\";\nconst isDirty = (x) => x.status === \"dirty\";\nconst isValid = (x) => x.status === \"valid\";\nconst isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nfunction __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nvar errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message === null || message === void 0 ? void 0 : message.message;\n})(errorUtil || (errorUtil = {}));\n\nvar _ZodEnum_cache, _ZodNativeEnum_cache;\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (this._key instanceof Array) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n var _a, _b;\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message !== null && message !== void 0 ? message : ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: (_a = message !== null && message !== void 0 ? message : required_error) !== null && _a !== void 0 ? _a : ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: (_b = message !== null && message !== void 0 ? message : invalid_type_error) !== null && _b !== void 0 ? _b : ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nclass ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n var _a;\n const ctx = {\n common: {\n issues: [],\n async: (_a = params === null || params === void 0 ? void 0 : params.async) !== null && _a !== void 0 ? _a : false,\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n var _a, _b;\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if ((_b = (_a = err === null || err === void 0 ? void 0 : err.message) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === null || _b === void 0 ? void 0 : _b.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n async: true,\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult)\n ? maybeAsyncResult\n : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\"\n ? refinementData(val, ctx)\n : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n // let regex = `\\\\d{2}:\\\\d{2}:\\\\d{2}`;\n let regex = `([01]\\\\d|2[0-3]):[0-5]\\\\d:[0-5]\\\\d`;\n if (args.precision) {\n regex = `${regex}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n regex = `${regex}(\\\\.\\\\d+)?`;\n }\n return regex;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nfunction datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (!decoded.typ || !decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch (_a) {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nclass ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch (_a) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n var _a, _b;\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n offset: (_a = options === null || options === void 0 ? void 0 : options.offset) !== null && _a !== void 0 ? _a : false,\n local: (_b = options === null || options === void 0 ? void 0 : options.local) !== null && _b !== void 0 ? _b : false,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options === null || options === void 0 ? void 0 : options.position,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n var _a;\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / Math.pow(10, decCount);\n}\nclass ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive\n ? input.data < check.value\n : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive\n ? input.data > check.value\n : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" ||\n (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null, min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" ||\n ch.kind === \"int\" ||\n ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch (_a) {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive\n ? input.data < check.value\n : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive\n ? input.data > check.value\n : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n var _a;\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params),\n });\n};\nclass ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nclass ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nclass ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nclass ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nclass ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nclass ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nclass ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nclass ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nclass ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nclass ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n return (this._cached = { shape, keys });\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever &&\n this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") ;\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n var _a, _b, _c, _d;\n const defaultError = (_c = (_b = (_a = this._def).errorMap) === null || _b === void 0 ? void 0 : _b.call(_a, issue, ctx).message) !== null && _c !== void 0 ? _c : ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: (_d = errorUtil.errToObj(message).message) !== null && _d !== void 0 ? _d : defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n util.objectKeys(mask).forEach((key) => {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n util.objectKeys(this.shape).forEach((key) => {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n util.objectKeys(this.shape).forEach((key) => {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n util.objectKeys(this.shape).forEach((key) => {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nclass ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nclass ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util\n .objectKeys(a)\n .filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date &&\n bType === ZodParsedType.date &&\n +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nclass ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\nclass ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nclass ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nclass ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nclass ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nclass ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap,\n ].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap,\n ].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args\n .parseAsync(args, params)\n .catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args\n ? args\n : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nclass ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nclass ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nclass ZodEnum extends ZodType {\n constructor() {\n super(...arguments);\n _ZodEnum_cache.set(this, void 0);\n }\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\")) {\n __classPrivateFieldSet(this, _ZodEnum_cache, new Set(this._def.values), \"f\");\n }\n if (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\").has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\n_ZodEnum_cache = new WeakMap();\nZodEnum.create = createZodEnum;\nclass ZodNativeEnum extends ZodType {\n constructor() {\n super(...arguments);\n _ZodNativeEnum_cache.set(this, void 0);\n }\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string &&\n ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\")) {\n __classPrivateFieldSet(this, _ZodNativeEnum_cache, new Set(util.getValidEnumValues(this._def.values)), \"f\");\n }\n if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\").has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\n_ZodNativeEnum_cache = new WeakMap();\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nclass ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise &&\n ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise\n ? ctx.data\n : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nclass ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return base;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .then((base) => {\n if (!isValid(base))\n return base;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({ status: status.value, value: result }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nclass ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nclass ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nclass ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\"\n ? params.default\n : () => params.default,\n ...processCreateParams(params),\n });\n};\nclass ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nclass ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nconst BRAND = Symbol(\"zod_brand\");\nclass ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nclass ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nclass ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result)\n ? result.then((data) => freeze(data))\n : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\nfunction custom(check, params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n var _a, _b;\n if (!check(data)) {\n const p = typeof params === \"function\"\n ? params(data)\n : typeof params === \"string\"\n ? { message: params }\n : params;\n const _fatal = (_b = (_a = p.fatal) !== null && _a !== void 0 ? _a : fatal) !== null && _b !== void 0 ? _b : true;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n ctx.addIssue({ code: \"custom\", ...p2, fatal: _fatal });\n }\n });\n return ZodAny.create();\n}\nconst late = {\n object: ZodObject.lazycreate,\n};\nvar ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nconst coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nconst NEVER = INVALID;\n\nvar z = /*#__PURE__*/Object.freeze({\n __proto__: null,\n defaultErrorMap: errorMap,\n setErrorMap: setErrorMap,\n getErrorMap: getErrorMap,\n makeIssue: makeIssue,\n EMPTY_PATH: EMPTY_PATH,\n addIssueToContext: addIssueToContext,\n ParseStatus: ParseStatus,\n INVALID: INVALID,\n DIRTY: DIRTY,\n OK: OK,\n isAborted: isAborted,\n isDirty: isDirty,\n isValid: isValid,\n isAsync: isAsync,\n get util () { return util; },\n get objectUtil () { return objectUtil; },\n ZodParsedType: ZodParsedType,\n getParsedType: getParsedType,\n ZodType: ZodType,\n datetimeRegex: datetimeRegex,\n ZodString: ZodString,\n ZodNumber: ZodNumber,\n ZodBigInt: ZodBigInt,\n ZodBoolean: ZodBoolean,\n ZodDate: ZodDate,\n ZodSymbol: ZodSymbol,\n ZodUndefined: ZodUndefined,\n ZodNull: ZodNull,\n ZodAny: ZodAny,\n ZodUnknown: ZodUnknown,\n ZodNever: ZodNever,\n ZodVoid: ZodVoid,\n ZodArray: ZodArray,\n ZodObject: ZodObject,\n ZodUnion: ZodUnion,\n ZodDiscriminatedUnion: ZodDiscriminatedUnion,\n ZodIntersection: ZodIntersection,\n ZodTuple: ZodTuple,\n ZodRecord: ZodRecord,\n ZodMap: ZodMap,\n ZodSet: ZodSet,\n ZodFunction: ZodFunction,\n ZodLazy: ZodLazy,\n ZodLiteral: ZodLiteral,\n ZodEnum: ZodEnum,\n ZodNativeEnum: ZodNativeEnum,\n ZodPromise: ZodPromise,\n ZodEffects: ZodEffects,\n ZodTransformer: ZodEffects,\n ZodOptional: ZodOptional,\n ZodNullable: ZodNullable,\n ZodDefault: ZodDefault,\n ZodCatch: ZodCatch,\n ZodNaN: ZodNaN,\n BRAND: BRAND,\n ZodBranded: ZodBranded,\n ZodPipeline: ZodPipeline,\n ZodReadonly: ZodReadonly,\n custom: custom,\n Schema: ZodType,\n ZodSchema: ZodType,\n late: late,\n get ZodFirstPartyTypeKind () { return ZodFirstPartyTypeKind; },\n coerce: coerce,\n any: anyType,\n array: arrayType,\n bigint: bigIntType,\n boolean: booleanType,\n date: dateType,\n discriminatedUnion: discriminatedUnionType,\n effect: effectsType,\n 'enum': enumType,\n 'function': functionType,\n 'instanceof': instanceOfType,\n intersection: intersectionType,\n lazy: lazyType,\n literal: literalType,\n map: mapType,\n nan: nanType,\n nativeEnum: nativeEnumType,\n never: neverType,\n 'null': nullType,\n nullable: nullableType,\n number: numberType,\n object: objectType,\n oboolean: oboolean,\n onumber: onumber,\n optional: optionalType,\n ostring: ostring,\n pipeline: pipelineType,\n preprocess: preprocessType,\n promise: promiseType,\n record: recordType,\n set: setType,\n strictObject: strictObjectType,\n string: stringType,\n symbol: symbolType,\n transformer: effectsType,\n tuple: tupleType,\n 'undefined': undefinedType,\n union: unionType,\n unknown: unknownType,\n 'void': voidType,\n NEVER: NEVER,\n ZodIssueCode: ZodIssueCode,\n quotelessJson: quotelessJson,\n ZodError: ZodError\n});\n\nexport { BRAND, DIRTY, EMPTY_PATH, INVALID, NEVER, OK, ParseStatus, ZodType as Schema, ZodAny, ZodArray, ZodBigInt, ZodBoolean, ZodBranded, ZodCatch, ZodDate, ZodDefault, ZodDiscriminatedUnion, ZodEffects, ZodEnum, ZodError, ZodFirstPartyTypeKind, ZodFunction, ZodIntersection, ZodIssueCode, ZodLazy, ZodLiteral, ZodMap, ZodNaN, ZodNativeEnum, ZodNever, ZodNull, ZodNullable, ZodNumber, ZodObject, ZodOptional, ZodParsedType, ZodPipeline, ZodPromise, ZodReadonly, ZodRecord, ZodType as ZodSchema, ZodSet, ZodString, ZodSymbol, ZodEffects as ZodTransformer, ZodTuple, ZodType, ZodUndefined, ZodUnion, ZodUnknown, ZodVoid, addIssueToContext, anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, coerce, custom, dateType as date, datetimeRegex, z as default, errorMap as defaultErrorMap, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, getErrorMap, getParsedType, instanceOfType as instanceof, intersectionType as intersection, isAborted, isAsync, isDirty, isValid, late, lazyType as lazy, literalType as literal, makeIssue, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, objectUtil, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, quotelessJson, recordType as record, setType as set, setErrorMap, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, util, voidType as void, z };\n","import { ALL_PHASES } from \"@norma/core\";\nimport { z } from \"zod\";\n\n/** A canonical phase name, validated against the core enum. */\nexport const PhaseName = z.enum(ALL_PHASES as [string, ...string[]]);\n\n/** Role naming — who handles each stage. Mirrors core's RoleMap. */\nexport const RoleMapSchema = z\n .object({\n worker: z\n .record(z.string(), z.string())\n .describe(\"owner-type → agent role for dispatch & rework\"),\n review: z.string(),\n qa: z.string(),\n escalate: z.string(),\n })\n .strict();\n\n/** Tunable engine knobs. Mirrors core's PlanPolicy. */\nexport const PolicySchema = z\n .object({\n workerTypes: z.array(z.string()).min(1),\n concurrency: z.number().int().positive().default(1),\n escalateAtBounces: z.number().int().positive().default(2),\n satisfiedPhases: z.array(PhaseName).optional(),\n depDonePhases: z.array(PhaseName).optional(),\n })\n .strict();\n\n// --- phase mapping: tracker (state, labels) <-> canonical Phase -------------\n\n/** One classification rule: match a raw issue's state (+ optional label) → phase. */\nexport const ClassifyRuleSchema = z\n .object({\n when: z\n .object({\n state: z.string().optional().describe(\"tracker state name (case-insensitive)\"),\n label: z.string().optional().describe(\"required label for this rule to match\"),\n })\n .strict(),\n phase: PhaseName,\n })\n .strict();\n\n/** How to write a phase back to the tracker: target state + label add/remove. */\nexport const ApplyRuleSchema = z\n .object({\n state: z.string().optional(),\n addLabels: z.array(z.string()).default([]),\n removeLabels: z.array(z.string()).default([]),\n })\n .strict();\n\nexport const PhaseMappingSchema = z\n .object({\n /** Ordered rules; first match wins. */\n classify: z.array(ClassifyRuleSchema).min(1),\n /** Per-phase write instructions (partial — only phases the engine transitions to). */\n apply: z.record(PhaseName, ApplyRuleSchema),\n /** Derive owner (worker type) from a label prefix, e.g. \"agent:\" → agent:api ⇒ \"api\". */\n owner: z.object({ fromLabelPrefix: z.string() }).strict(),\n /** Derive batch key from a label prefix, e.g. \"qa-batch:\". Full label kept as key. */\n batch: z.object({ fromLabelPrefix: z.string() }).strict(),\n /** Regex (as string) matching a bounce marker in a comment body; counted for escalation. */\n bounceMarker: z.string().default(\"^\\\\s*🔁\\\\s*bounce\"),\n })\n .strict();\n\n/** Which tracker backs this harness, plus its connection options. */\nexport const TrackerSchema = z\n .object({\n kind: z.enum([\"linear\", \"jira\", \"github\", \"memory\"]),\n /** Adapter-specific options (team key, project prefix, base URL…). */\n options: z.record(z.string(), z.unknown()).default({}),\n })\n .strict();\n\n/** Which agent runtime executes the roles. */\nexport const RuntimeSchema = z\n .object({\n kind: z.enum([\"claude-code\", \"opencode\", \"echo\", \"command\", \"human\"]).default(\"claude-code\"),\n options: z.record(z.string(), z.unknown()).default({}),\n })\n .strict();\n\nexport const NormaConfigSchema = z\n .object({\n name: z.string(),\n description: z.string().optional(),\n tracker: TrackerSchema,\n runtime: RuntimeSchema.default({ kind: \"claude-code\", options: {} }),\n policy: PolicySchema,\n roles: RoleMapSchema,\n phaseMapping: PhaseMappingSchema,\n })\n .strict();\n\nexport type NormaConfig = z.infer<typeof NormaConfigSchema>;\nexport type PhaseMapping = z.infer<typeof PhaseMappingSchema>;\nexport type ClassifyRule = z.infer<typeof ClassifyRuleSchema>;\nexport type ApplyRule = z.infer<typeof ApplyRuleSchema>;\nexport type TrackerConfig = z.infer<typeof TrackerSchema>;\nexport type RuntimeConfig = z.infer<typeof RuntimeSchema>;\n\n/** Parse + validate an unknown value into a NormaConfig (throws on invalid). */\nexport function parseConfig(input: unknown): NormaConfig {\n return NormaConfigSchema.parse(input);\n}\n\n/** Build the core PlanContext from a validated config. */\nexport function toPlanContext(config: NormaConfig): {\n policy: import(\"@norma/core\").PlanPolicy;\n roles: import(\"@norma/core\").RoleMap;\n} {\n return {\n policy: {\n workerTypes: config.policy.workerTypes,\n concurrency: config.policy.concurrency,\n escalateAtBounces: config.policy.escalateAtBounces,\n satisfiedPhases: config.policy.satisfiedPhases as import(\"@norma/core\").Phase[] | undefined,\n depDonePhases: config.policy.depDonePhases as import(\"@norma/core\").Phase[] | undefined,\n },\n roles: config.roles,\n };\n}\n","import type { NormaConfig } from \"../schema.js\";\n\n/**\n * The \"software-dev\" pipeline — a faithful, provider-agnostic port of the\n * original Redisco autonomous dev harness, expressed entirely as config.\n *\n * Nothing here is hardcoded in the engine: swap the states/labels for another\n * tracker's vocabulary, or the roles for another team, without touching core.\n */\nexport const softwareDevConfig: NormaConfig = {\n name: \"software-dev\",\n description:\n \"Epic → tasks (DAG + qa-batches) → dev → code-review → QA → released, one-in-flight per engineer.\",\n tracker: {\n kind: \"linear\",\n options: { team: \"Redisco\" },\n },\n runtime: { kind: \"claude-code\", options: {} },\n policy: {\n workerTypes: [\"api\", \"web\"],\n concurrency: 1, // the one-in-flight gate\n escalateAtBounces: 2,\n satisfiedPhases: [\"released\", \"done\"],\n depDonePhases: [\"released\", \"done\", \"canceled\"],\n },\n roles: {\n worker: { api: \"api-engineer\", web: \"web-engineer\" },\n review: \"code-reviewer\",\n qa: \"qa-engineer\",\n escalate: \"principal-engineer\",\n },\n phaseMapping: {\n // (state, label) → canonical phase. First match wins; order matters.\n classify: [\n { when: { state: \"Backlog\" }, phase: \"backlog\" },\n { when: { state: \"Todo\", label: \"ready-for-dev\" }, phase: \"ready\" },\n { when: { state: \"In Progress\", label: \"changes-requested\" }, phase: \"needs_rework\" },\n { when: { state: \"In Progress\" }, phase: \"in_progress\" },\n { when: { state: \"In Review\", label: \"needs-qa\" }, phase: \"needs_qa\" },\n { when: { state: \"In Review\", label: \"needs-review\" }, phase: \"needs_review\" },\n { when: { state: \"In Review\" }, phase: \"needs_review\" },\n { when: { state: \"Ready for PR\" }, phase: \"released\" },\n { when: { state: \"Done\" }, phase: \"done\" },\n { when: { state: \"Canceled\" }, phase: \"canceled\" },\n ],\n // phase → tracker write (state + label add/remove).\n apply: {\n ready: { state: \"Todo\", addLabels: [\"ready-for-dev\"], removeLabels: [] },\n in_progress: { state: \"In Progress\", addLabels: [], removeLabels: [\"ready-for-dev\"] },\n needs_review: {\n state: \"In Review\",\n addLabels: [\"needs-review\"],\n removeLabels: [\"changes-requested\", \"needs-qa\"],\n },\n needs_qa: { state: \"In Review\", addLabels: [\"needs-qa\"], removeLabels: [\"needs-review\"] },\n needs_rework: {\n state: \"In Progress\",\n addLabels: [\"changes-requested\"],\n removeLabels: [\"needs-review\", \"needs-qa\"],\n },\n released: { state: \"Ready for PR\", addLabels: [\"qa-approved\"], removeLabels: [\"needs-qa\"] },\n done: { state: \"Done\", addLabels: [], removeLabels: [] },\n },\n owner: { fromLabelPrefix: \"agent:\" }, // agent:api → \"api\"\n batch: { fromLabelPrefix: \"qa-batch:\" }, // qa-batch:1 → \"qa-batch:1\"\n bounceMarker: \"^\\\\s*🔁\\\\s*bounce\",\n },\n};\n\nexport default softwareDevConfig;\n","import { z } from \"zod\";\n\n/**\n * A tracker-neutral epic plan — the intake artifact. `norma epic` either reads\n * one from a file (deterministic path) or has the planner agent produce one,\n * then materializes it into the tracker (project + issues + dependency DAG).\n *\n * `id` is a LOCAL identifier used only to wire dependencies within the plan; the\n * tracker assigns the real ref (RED-12, PROJ-3…) at creation time.\n */\nexport const EpicTaskSchema = z\n .object({\n id: z.string().min(1).describe(\"local id, referenced by other tasks' blockedBy\"),\n title: z.string().min(1),\n owner: z.string().min(1).describe(\"worker type/lane, e.g. api | web\"),\n description: z.string().optional(),\n batch: z.string().optional().describe(\"QA batch key (without prefix), e.g. '1'\"),\n estimate: z.number().optional(),\n blockedBy: z.array(z.string()).default([]).describe(\"local ids of blockers\"),\n })\n .strict();\n\nexport const EpicPlanSchema = z\n .object({\n name: z.string().min(1),\n slug: z.string().optional(),\n brief: z.string().optional(),\n description: z.string().optional(),\n tasks: z.array(EpicTaskSchema).min(1),\n })\n .strict();\n\nexport type EpicTask = z.infer<typeof EpicTaskSchema>;\nexport type EpicPlan = z.infer<typeof EpicPlanSchema>;\n\nexport function parseEpicPlan(input: unknown): EpicPlan {\n return EpicPlanSchema.parse(input);\n}\n\n/** Derive a URL-safe slug from an epic name when the plan omits one. */\nexport function slugify(name: string): string {\n return name\n .toLowerCase()\n .trim()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\")\n .slice(0, 60);\n}\n\n/**\n * Semantic validation beyond the schema. Returns a list of human-readable\n * problems (empty = valid). Mirrors the principal-engineer's hard rules:\n * - unique task ids\n * - every blockedBy references an existing task\n * - no task blocks itself\n * - owners are within the configured worker types (when provided)\n * - NEVER a blocking edge between two same-owner tasks in the SAME qa-batch\n * (the one-in-flight gate + batch-readiness would deadlock).\n */\nexport function validateEpicPlan(plan: EpicPlan, opts: { workerTypes?: string[] } = {}): string[] {\n const errors: string[] = [];\n const ids = new Set<string>();\n for (const t of plan.tasks) {\n if (ids.has(t.id)) errors.push(`duplicate task id: ${t.id}`);\n ids.add(t.id);\n }\n const byId = new Map(plan.tasks.map((t) => [t.id, t]));\n const workerTypes = opts.workerTypes ? new Set(opts.workerTypes) : null;\n\n for (const t of plan.tasks) {\n if (workerTypes && !workerTypes.has(t.owner)) {\n errors.push(`${t.id}: owner \"${t.owner}\" is not a configured worker type`);\n }\n for (const dep of t.blockedBy) {\n if (dep === t.id) errors.push(`${t.id} blocks itself`);\n const blocker = byId.get(dep);\n if (!blocker) {\n errors.push(`${t.id}: blockedBy references unknown task \"${dep}\"`);\n continue;\n }\n if (t.batch && blocker.batch && t.batch === blocker.batch && t.owner === blocker.owner) {\n errors.push(\n `${t.id} ↔ ${dep}: same-owner blocking edge inside qa-batch \"${t.batch}\" would deadlock; put the dependency across batches or split the batch`,\n );\n }\n }\n }\n return errors;\n}\n","import { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport { dirname, join } from \"node:path\";\nimport type { ContextStore } from \"./port.js\";\n\nasync function readMaybe(path: string): Promise<string | null> {\n try {\n return await readFile(path, \"utf8\");\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code === \"ENOENT\") return null;\n throw err;\n }\n}\n\nasync function writeFileMkdir(path: string, content: string): Promise<void> {\n await mkdir(dirname(path), { recursive: true });\n await writeFile(path, content, \"utf8\");\n}\n\n/**\n * Filesystem-backed context store, laid out exactly like the original harness:\n * <root>/epics/<slug>/{brief.md, PLAN.md, report.md}\n * <root>/logs/<slug>/<name>\n */\nexport class FsContextStore implements ContextStore {\n readonly kind = \"fs\";\n constructor(private readonly root: string) {}\n\n private epicDir(slug: string) {\n return join(this.root, \"epics\", slug);\n }\n\n readBrief(slug: string) {\n return readMaybe(join(this.epicDir(slug), \"brief.md\"));\n }\n writeBrief(slug: string, content: string) {\n return writeFileMkdir(join(this.epicDir(slug), \"brief.md\"), content);\n }\n\n readPlan(slug: string) {\n return readMaybe(join(this.epicDir(slug), \"PLAN.md\"));\n }\n writePlan(slug: string, content: string) {\n return writeFileMkdir(join(this.epicDir(slug), \"PLAN.md\"), content);\n }\n\n readReport(slug: string) {\n return readMaybe(join(this.epicDir(slug), \"report.md\"));\n }\n writeReport(slug: string, content: string) {\n return writeFileMkdir(join(this.epicDir(slug), \"report.md\"), content);\n }\n\n async appendLog(slug: string, name: string, content: string): Promise<void> {\n const path = join(this.root, \"logs\", slug, name);\n const prev = (await readMaybe(path)) ?? \"\";\n await writeFileMkdir(path, prev + content);\n }\n}\n","import type { TaskRef } from \"@norma/core\";\n\nexport interface HandoffInput {\n stage: \"dispatch\" | \"review\" | \"rework\" | \"qa\" | \"escalate\";\n /** Epic brief (goal / scope), re-read every run. */\n brief?: string | null;\n /** PLAN.md (DAG, qa-batches, QA plans). */\n plan?: string | null;\n /** The task(s) in play, with their descriptions/acceptance criteria. */\n tasks: (TaskRef & { description?: string })[];\n /** Batch key when stage === \"qa\". */\n batch?: string;\n /** Prior reviewer/QA feedback for a rework/escalation. */\n feedback?: string;\n /** Absolute worktree path where the work happens. */\n worktree?: string;\n /** Soft cap on characters for the PLAN/brief sections (token discipline). */\n maxSection?: number;\n}\n\nconst clamp = (s: string, n: number) =>\n s.length <= n ? s : `${s.slice(0, n)}\\n… [truncated ${s.length - n} chars]`;\n\nconst STAGE_INSTRUCTION: Record<HandoffInput[\"stage\"], string> = {\n dispatch:\n \"Implement this task to completion in the worktree. Finish only when lint + build + tests are green, then commit.\",\n review:\n \"Review the task's worktree diff against standards (lint, build, types, design system). Pass or fail with specific findings.\",\n rework:\n \"Address the feedback below, re-run the gate green, and commit. Do not expand scope beyond the fix.\",\n qa: \"Test this batch end-to-end against its QA plan and acceptance criteria. Approve, or bounce the specific failing task(s) with a reproducible defect.\",\n escalate:\n \"This task has bounced repeatedly. Re-scope it: tighten acceptance criteria, split it, or fix a wrong dependency. Comment the decision.\",\n};\n\n/**\n * Assemble the engineered handoff prompt for one stage — the durable, minimal\n * context the next agent needs. Order and brevity are deliberate: brief first,\n * then plan, then the concrete task(s), then any feedback.\n */\nexport function composeHandoff(input: HandoffInput): string {\n const cap = input.maxSection ?? 6000;\n const parts: string[] = [];\n parts.push(`# Stage: ${input.stage}`);\n parts.push(STAGE_INSTRUCTION[input.stage]);\n if (input.worktree) parts.push(`\\n**Worktree:** \\`${input.worktree}\\` — all work happens here.`);\n if (input.brief) parts.push(`\\n## Epic brief\\n${clamp(input.brief.trim(), cap)}`);\n if (input.plan)\n parts.push(`\\n## Plan (DAG · qa-batches · QA plans)\\n${clamp(input.plan.trim(), cap)}`);\n if (input.batch) parts.push(`\\n## QA batch: ${input.batch}`);\n\n parts.push(\"\\n## Task(s)\");\n for (const t of input.tasks) {\n parts.push(`\\n### ${t.ref} — ${t.title}${t.owner ? ` _(owner: ${t.owner})_` : \"\"}`);\n if (t.url) parts.push(t.url);\n if (t.description) parts.push(clamp(t.description.trim(), cap));\n }\n\n if (input.feedback)\n parts.push(`\\n## Prior feedback (address this)\\n${clamp(input.feedback.trim(), cap)}`);\n return parts.join(\"\\n\");\n}\n","import type { PhaseMapping } from \"@norma/config\";\nimport { type NormalizedTask, Phase, isPhase } from \"@norma/core\";\nimport type { ApplyInstruction, RawIssue } from \"./types.js\";\n\nconst eqi = (a: string, b: string) => a.toLowerCase() === b.toLowerCase();\nconst hasLabel = (labels: string[], l: string) => labels.some((x) => eqi(x, l));\n\n/**\n * Classify a raw (state, labels) pair into a canonical phase using the ordered\n * rules — first match wins. Falls back to BACKLOG if nothing matches (and the\n * caller can surface that as an anomaly).\n */\nexport function classifyPhase(state: string, labels: string[], mapping: PhaseMapping): Phase {\n for (const rule of mapping.classify) {\n const stateOk = rule.when.state === undefined || eqi(rule.when.state, state);\n const labelOk = rule.when.label === undefined || hasLabel(labels, rule.when.label);\n if (stateOk && labelOk) return rule.phase as Phase;\n }\n return Phase.BACKLOG;\n}\n\n/** Derive the owning worker type from a label prefix (e.g. \"agent:\" → \"api\"). */\nexport function ownerOf(labels: string[], mapping: PhaseMapping): string | null {\n const prefix = mapping.owner.fromLabelPrefix;\n const l = labels.find((x) => x.toLowerCase().startsWith(prefix.toLowerCase()));\n return l ? l.slice(prefix.length) : null;\n}\n\n/** Derive the batch key from a label prefix (keeps the full label as the key). */\nexport function batchOf(labels: string[], mapping: PhaseMapping): string | null {\n const prefix = mapping.batch.fromLabelPrefix;\n const l = labels.find((x) => x.toLowerCase().startsWith(prefix.toLowerCase()));\n return l ?? null;\n}\n\n/** Look up the tracker write for a target phase. Undefined if the phase has no write rule. */\nexport function applyFor(phase: Phase, mapping: PhaseMapping): ApplyInstruction | undefined {\n const rule = mapping.apply[phase];\n if (!rule) return undefined;\n return { state: rule.state, addLabels: rule.addLabels, removeLabels: rule.removeLabels };\n}\n\n/** Normalize a list of raw issues into engine tasks. */\nexport function normalize(raw: RawIssue[], mapping: PhaseMapping): NormalizedTask[] {\n return raw.map((r) => ({\n id: r.id,\n ref: r.ref,\n title: r.title,\n url: r.url,\n phase: classifyPhase(r.state, r.labels, mapping),\n owner: ownerOf(r.labels, mapping),\n batch: batchOf(r.labels, mapping),\n bounces: r.bounces ?? 0,\n blockedBy: r.blockedBy.map((b) => ({\n ref: b.ref,\n // Classify the blocker from its state AND labels when the adapter supplies\n // them (required for label-driven pipelines like GitHub); state-only is exact\n // for trackers where released/done/canceled are distinct states.\n phase: classifyPhase(b.state, b.labels ?? [], mapping),\n })),\n order: r.order,\n }));\n}\n\nexport { isPhase };\n","import type { TrackerAdapter } from \"./port.js\";\nimport type {\n ApplyInstruction,\n CreateIssueInput,\n CreateProjectInput,\n RawIssue,\n TrackerIdentity,\n} from \"./types.js\";\n\ninterface MemoryProject {\n id: string;\n name: string;\n url: string;\n}\n\n/**\n * A fully in-memory tracker — the reference adapter. No network, deterministic,\n * ideal for orchestrator tests and `norma plan` demos. It stores raw issues\n * (state names + labels) exactly like a real tracker and mutates them on\n * `transition`, so the same normalizer + engine path is exercised end-to-end.\n */\nexport class MemoryTracker implements TrackerAdapter {\n readonly kind = \"memory\";\n private issues = new Map<string, RawIssue>();\n private projects = new Map<string, MemoryProject>();\n readonly comments = new Map<string, string[]>();\n private seq = 0;\n private prefix: string;\n private bounceRe: RegExp;\n\n constructor(\n opts: {\n prefix?: string;\n seed?: RawIssue[];\n projects?: MemoryProject[];\n bounceMarker?: string;\n } = {},\n ) {\n this.prefix = opts.prefix ?? \"MEM\";\n this.bounceRe = new RegExp(opts.bounceMarker ?? \"🔁\\\\s*bounce\", \"i\");\n for (const p of opts.projects ?? []) this.projects.set(p.id, p);\n for (const i of opts.seed ?? []) {\n this.issues.set(i.id, { ...i, labels: [...i.labels], blockedBy: [...i.blockedBy] });\n const n = Number((i.ref.match(/(\\d+)$/) ?? [])[1] ?? 0);\n if (n > this.seq) this.seq = n;\n }\n }\n\n async whoami(): Promise<TrackerIdentity> {\n return { id: \"memory-user\", name: \"Memory User\", context: { kind: this.kind } };\n }\n\n async listIssues(query: { projectId: string }): Promise<RawIssue[]> {\n // `projectId` is carried on the raw issue via description-less convention:\n // the memory store keys everything to one namespace, so we return all seeded\n // issues (tests seed one project at a time). Real adapters filter by project.\n void query;\n return [...this.issues.values()].map((i) => ({\n ...i,\n labels: [...i.labels],\n blockedBy: i.blockedBy.map((b) => ({ ...b })),\n bounces: (this.comments.get(i.id) ?? []).filter((c) => this.bounceRe.test(c)).length,\n }));\n }\n\n private mutate(issueId: string, apply: ApplyInstruction) {\n const issue = this.issues.get(issueId);\n if (!issue) throw new Error(`MemoryTracker: unknown issue ${issueId}`);\n if (apply.state) issue.state = apply.state;\n const remove = new Set((apply.removeLabels ?? []).map((l) => l.toLowerCase()));\n issue.labels = issue.labels.filter((l) => !remove.has(l.toLowerCase()));\n for (const l of apply.addLabels ?? []) {\n if (!issue.labels.some((x) => x.toLowerCase() === l.toLowerCase())) issue.labels.push(l);\n }\n // keep blocker snapshots consistent for other issues that depend on this one\n for (const other of this.issues.values()) {\n for (const b of other.blockedBy) if (b.id === issueId) b.state = issue.state;\n }\n }\n\n async transition(issueId: string, apply: ApplyInstruction): Promise<void> {\n this.mutate(issueId, apply);\n }\n\n async bulkTransition(issueIds: string[], apply: ApplyInstruction): Promise<void> {\n for (const id of issueIds) this.mutate(id, apply);\n }\n\n async comment(issueId: string, body: string): Promise<void> {\n const arr = this.comments.get(issueId) ?? [];\n arr.push(body);\n this.comments.set(issueId, arr);\n }\n\n async listComments(issueId: string): Promise<string[]> {\n return [...(this.comments.get(issueId) ?? [])];\n }\n\n async createProject(input: CreateProjectInput): Promise<{ id: string; url?: string }> {\n const id = `proj-${this.projects.size + 1}`;\n const url = `memory://project/${id}`;\n this.projects.set(id, { id, name: input.name, url });\n return { id, url };\n }\n\n async createIssue(input: CreateIssueInput): Promise<{ id: string; ref: string; url?: string }> {\n const n = ++this.seq;\n const id = `iss-${n}`;\n const ref = `${this.prefix}-${n}`;\n this.issues.set(id, {\n id,\n ref,\n title: input.title,\n description: input.description,\n url: `memory://issue/${ref}`,\n state: \"Backlog\",\n labels: [...(input.labels ?? [])],\n blockedBy: [],\n order: n,\n bounces: 0,\n });\n return { id, ref, url: `memory://issue/${ref}` };\n }\n\n async addDependency(input: { issueId: string; blockedById: string }): Promise<void> {\n const issue = this.issues.get(input.issueId);\n const blocker = this.issues.get(input.blockedById);\n if (!issue || !blocker) throw new Error(\"MemoryTracker: addDependency on unknown issue\");\n if (!issue.blockedBy.some((b) => b.id === blocker.id)) {\n issue.blockedBy.push({ id: blocker.id, ref: blocker.ref, state: blocker.state });\n }\n }\n}\n","import type { TrackerAdapter } from \"./port.js\";\n\nexport interface TrackerState {\n id: string;\n name: string;\n /** Semantic type when the tracker exposes it (e.g. Linear: backlog|unstarted|started|completed|canceled). */\n type?: string;\n}\n\nexport interface TrackerLabel {\n id: string;\n name: string;\n}\n\n/**\n * Optional capability: read (and optionally create) the tracker's board — its\n * workflow states/columns and labels. `norma init` uses this to map the user's\n * real columns onto canonical phases and to create anything missing.\n */\nexport interface TrackerIntrospection {\n listStates(): Promise<TrackerState[]>;\n listLabels(): Promise<TrackerLabel[]>;\n /** Create a workflow state/column (adapters that can't will omit this). */\n createState?(input: { name: string; type?: string; color?: string }): Promise<TrackerState>;\n /** Create a label (adapters that can't will omit this). */\n createLabel?(input: { name: string; color?: string }): Promise<TrackerLabel>;\n}\n\n/** True when an adapter also implements board introspection. */\nexport function supportsIntrospection(\n adapter: TrackerAdapter,\n): adapter is TrackerAdapter & TrackerIntrospection {\n const a = adapter as Partial<TrackerIntrospection>;\n return typeof a.listStates === \"function\" && typeof a.listLabels === \"function\";\n}\n\n/** True when an adapter can create states + labels (full board setup). */\nexport function canProvisionBoard(\n adapter: TrackerAdapter,\n): adapter is TrackerAdapter & Required<Pick<TrackerIntrospection, \"createState\" | \"createLabel\">> {\n const a = adapter as Partial<TrackerIntrospection>;\n return typeof a.createState === \"function\" && typeof a.createLabel === \"function\";\n}\n","/** Error that signals the operation is worth retrying (429/5xx/network). */\nexport class RetryableError extends Error {\n constructor(\n message: string,\n /** Honor a server-provided Retry-After (ms) instead of the backoff schedule. */\n readonly retryAfterMs?: number,\n ) {\n super(message);\n this.name = \"RetryableError\";\n }\n}\n\nexport interface RetryOptions {\n /** Max retries after the first attempt (default 3). */\n retries?: number;\n /** Base backoff in ms (default 300). */\n baseMs?: number;\n /** Backoff ceiling in ms (default 5000). */\n maxMs?: number;\n /** Injectable sleeper (tests). */\n sleep?: (ms: number) => Promise<void>;\n /** Injectable jitter in ms (tests); default random 0–100ms. */\n jitter?: () => number;\n}\n\nconst defaultSleep = (ms: number) => new Promise<void>((r) => setTimeout(r, ms));\n\n/**\n * Run `fn`, retrying only when it throws a `RetryableError`, with exponential\n * backoff + jitter (honoring `retryAfterMs` when present). Non-retryable errors\n * propagate immediately.\n */\nexport async function withRetry<T>(fn: () => Promise<T>, opts: RetryOptions = {}): Promise<T> {\n const retries = opts.retries ?? 3;\n const base = opts.baseMs ?? 300;\n const max = opts.maxMs ?? 5000;\n const sleep = opts.sleep ?? defaultSleep;\n const jitter = opts.jitter ?? (() => Math.floor(Math.random() * 100));\n\n let attempt = 0;\n for (;;) {\n try {\n return await fn();\n } catch (err) {\n if (!(err instanceof RetryableError) || attempt >= retries) throw err;\n const backoff = Math.min(max, base * 2 ** attempt) + jitter();\n await sleep(err.retryAfterMs ?? backoff);\n attempt++;\n }\n }\n}\n\n/** Classify an HTTP status as transient (retryable). */\nexport function isTransientStatus(status: number): boolean {\n return status === 429 || status >= 500;\n}\n\n/** Parse a Retry-After header (seconds) into ms, if present. */\nexport function retryAfterMs(header: string | null): number | undefined {\n if (!header) return undefined;\n const secs = Number(header);\n return Number.isFinite(secs) ? secs * 1000 : undefined;\n}\n","import type { AgentRunner } from \"@norma/agent-runtime\";\nimport { type NormaConfig, toPlanContext } from \"@norma/config\";\nimport { type ContextStore, composeHandoff } from \"@norma/context\";\nimport {\n type CompleteIntent,\n type DispatchIntent,\n type EscalateIntent,\n type Intent,\n type Phase,\n type Plan,\n type PromoteIntent,\n type QaIntent,\n type ReviewIntent,\n type ReworkIntent,\n computePlan,\n} from \"@norma/core\";\nimport { type RawIssue, type TrackerAdapter, applyFor, normalize } from \"@norma/tracker\";\n\nexport interface OrchestratorDeps {\n config: NormaConfig;\n tracker: TrackerAdapter;\n runner: AgentRunner;\n context?: ContextStore;\n logger?: (msg: string) => void;\n /** Literal prefix for bounce comments (must match config bounceMarker). Default \"🔁 bounce\". */\n bouncePrefix?: string;\n}\n\nexport interface RunCycleInput {\n projectId: string;\n /** Epic slug for context-store lookups (brief/plan). */\n slug?: string;\n /** Worktree path handed to agents. */\n worktree?: string;\n /** Safety cap on loop iterations. Default 100. */\n maxSteps?: number;\n /** Plan only — no tracker writes, no agent runs. */\n dryRun?: boolean;\n /** Called once when the epic is fully released (generate report + PR upstream). */\n onComplete?: (info: { projectId: string; slug?: string; plan: Plan }) => Promise<void> | void;\n}\n\nexport interface ExecutedStep {\n kind: Intent[\"kind\"];\n ref?: string;\n batch?: string;\n verdict?: string;\n note?: string;\n}\n\nexport interface CycleResult {\n steps: number;\n complete: boolean;\n finalPlan: Plan;\n executed: ExecutedStep[];\n anomalies: string[];\n}\n\n/**\n * The operator. It does NOT decide orchestration — `computePlan` does. The\n * orchestrator only: reads tracker state, normalizes it, asks the engine for the\n * next intents, runs the specialist agents for the creative work, and writes the\n * resulting phase transitions back to the tracker. Then it re-plans, to a fixed point.\n */\nexport class Orchestrator {\n private readonly bouncePrefix: string;\n constructor(private readonly deps: OrchestratorDeps) {\n this.bouncePrefix = deps.bouncePrefix ?? \"🔁 bounce\";\n }\n\n private log(msg: string) {\n this.deps.logger?.(msg);\n }\n\n private mapping() {\n return this.deps.config.phaseMapping;\n }\n\n /** Translate a target phase into the tracker write for it. */\n private applyOf(phase: Phase) {\n const apply = applyFor(phase, this.mapping());\n if (!apply) throw new Error(`No apply rule configured for phase \"${phase}\"`);\n return apply;\n }\n\n async runCycle(input: RunCycleInput): Promise<CycleResult> {\n const planCtx = toPlanContext(this.deps.config);\n const maxSteps = input.maxSteps ?? 100;\n const executed: ExecutedStep[] = [];\n let steps = 0;\n let lastSignature = \"\";\n let plan: Plan;\n\n for (;;) {\n const raw = await this.deps.tracker.listIssues({ projectId: input.projectId });\n const rawById = new Map(raw.map((r) => [r.id, r]));\n const tasks = normalize(raw, this.mapping());\n plan = computePlan(tasks, planCtx);\n\n if (plan.anomalies.length) for (const a of plan.anomalies) this.log(`⚠️ ${a}`);\n\n if (plan.actionCount === 0) break;\n if (steps >= maxSteps) {\n this.log(`reached maxSteps (${maxSteps}); stopping`);\n break;\n }\n const signature = JSON.stringify(plan.actions);\n if (signature === lastSignature) {\n this.log(\"plan did not change after execution — stopping to avoid a spin loop\");\n break;\n }\n lastSignature = signature;\n\n for (const action of plan.actions) {\n if (action.kind === \"complete\") {\n this.log(\"epic complete — all tasks released\");\n if (!input.dryRun)\n await input.onComplete?.({ projectId: input.projectId, slug: input.slug, plan });\n executed.push({ kind: \"complete\" });\n continue;\n }\n const step = await this.execute(action, { input, rawById });\n executed.push(step);\n }\n steps++;\n }\n\n return {\n steps,\n complete: plan.complete,\n finalPlan: plan,\n executed,\n anomalies: plan.anomalies,\n };\n }\n\n /**\n * Execute exactly ONE action from the current plan (or none if idle/complete),\n * then return the plan it acted on. Ideal for a live, step-by-step view: call it\n * on a tick and watch a single task change phase. `runCycle` = `step` to a fixed point.\n */\n async step(input: RunCycleInput): Promise<{ plan: Plan; executed: ExecutedStep | null }> {\n const planCtx = toPlanContext(this.deps.config);\n const raw = await this.deps.tracker.listIssues({ projectId: input.projectId });\n const rawById = new Map(raw.map((r) => [r.id, r]));\n const tasks = normalize(raw, this.mapping());\n const plan = computePlan(tasks, planCtx);\n if (plan.actionCount === 0) return { plan, executed: null };\n\n const action = plan.actions[0] as Intent;\n if (action.kind === \"complete\") {\n if (!input.dryRun)\n await input.onComplete?.({ projectId: input.projectId, slug: input.slug, plan });\n return { plan, executed: { kind: \"complete\" } };\n }\n const executed = await this.execute(action, { input, rawById });\n return { plan, executed };\n }\n\n private async execute(\n action: Exclude<Intent, CompleteIntent>,\n ctx: { input: RunCycleInput; rawById: Map<string, RawIssue> },\n ): Promise<ExecutedStep> {\n const { input } = ctx;\n const dry = input.dryRun ?? false;\n const t = this.deps.tracker;\n\n switch (action.kind) {\n case \"promote\": {\n const a = action as PromoteIntent;\n this.log(`promote ${a.task.ref} → ready`);\n if (!dry) await t.transition(a.task.id, this.applyOf(a.to.toPhase));\n return { kind: \"promote\", ref: a.task.ref };\n }\n\n case \"dispatch\": {\n const a = action as DispatchIntent;\n this.log(`dispatch ${a.task.ref} → ${a.role}`);\n if (dry) return { kind: \"dispatch\", ref: a.task.ref, note: \"dry-run\" };\n await t.transition(a.task.id, this.applyOf(a.onStart.toPhase));\n const context = await this.handoff(\"dispatch\", a.task, ctx);\n const out = await this.deps.runner.run({\n kind: \"dispatch\",\n role: a.role,\n task: a.task,\n worktree: input.worktree,\n context,\n });\n if (out.verdict === \"pending\")\n return { kind: \"dispatch\", ref: a.task.ref, verdict: \"pending\" };\n if (out.verdict === \"ok\") {\n await t.transition(a.task.id, this.applyOf(a.onDone.toPhase));\n } else {\n await t.comment(a.task.id, `dispatch could not complete: ${out.summary}`);\n }\n return { kind: \"dispatch\", ref: a.task.ref, verdict: out.verdict };\n }\n\n case \"review\": {\n const a = action as ReviewIntent;\n this.log(`review ${a.task.ref}`);\n if (dry) return { kind: \"review\", ref: a.task.ref, note: \"dry-run\" };\n const context = await this.handoff(\"review\", a.task, ctx);\n const out = await this.deps.runner.run({\n kind: \"review\",\n role: a.role,\n task: a.task,\n worktree: input.worktree,\n context,\n });\n if (out.verdict === \"pending\")\n return { kind: \"review\", ref: a.task.ref, verdict: \"pending\" };\n if (out.verdict === \"pass\") {\n await t.transition(a.task.id, this.applyOf(a.onPass.toPhase));\n } else {\n await t.transition(a.task.id, this.applyOf(a.onFail.toPhase));\n await t.comment(a.task.id, `${this.bouncePrefix} by review: ${out.summary}`);\n }\n return { kind: \"review\", ref: a.task.ref, verdict: out.verdict };\n }\n\n case \"rework\": {\n const a = action as ReworkIntent;\n this.log(`rework ${a.task.ref} (bounces ${a.bounces})`);\n if (dry) return { kind: \"rework\", ref: a.task.ref, note: \"dry-run\" };\n const context = await this.handoff(\"rework\", a.task, ctx);\n const out = await this.deps.runner.run({\n kind: \"rework\",\n role: a.role,\n task: a.task,\n bounces: a.bounces,\n worktree: input.worktree,\n context,\n });\n if (out.verdict === \"pending\")\n return { kind: \"rework\", ref: a.task.ref, verdict: \"pending\" };\n if (out.verdict === \"ok\") {\n await t.transition(a.task.id, this.applyOf(a.onDone.toPhase));\n } else {\n await t.comment(a.task.id, `rework could not complete: ${out.summary}`);\n }\n return { kind: \"rework\", ref: a.task.ref, verdict: out.verdict };\n }\n\n case \"escalate\": {\n const a = action as EscalateIntent;\n this.log(`escalate ${a.task.ref} (bounces ${a.bounces})`);\n if (dry) return { kind: \"escalate\", ref: a.task.ref, note: \"dry-run\" };\n const context = await this.handoff(\"escalate\", a.task, ctx);\n const out = await this.deps.runner.run({\n kind: \"escalate\",\n role: a.role,\n task: a.task,\n bounces: a.bounces,\n worktree: input.worktree,\n context,\n });\n if (out.verdict === \"pending\")\n return { kind: \"escalate\", ref: a.task.ref, verdict: \"pending\" };\n await t.comment(a.task.id, `escalation: ${out.summary}`);\n return { kind: \"escalate\", ref: a.task.ref, verdict: out.verdict };\n }\n\n case \"qa\": {\n const a = action as QaIntent;\n this.log(`qa ${a.batch} (${a.tasks.length} tasks)`);\n if (dry) return { kind: \"qa\", batch: a.batch, note: \"dry-run\" };\n const context = await this.handoffBatch(a, ctx);\n const out = await this.deps.runner.run({\n kind: \"qa\",\n role: a.role,\n tasks: a.tasks,\n batch: a.batch,\n worktree: input.worktree,\n context,\n });\n if (out.verdict === \"pending\") return { kind: \"qa\", batch: a.batch, verdict: \"pending\" };\n if (out.verdict === \"approve\") {\n for (const task of a.tasks)\n await t.transition(task.id, this.applyOf(a.onApprove.toPhase));\n return { kind: \"qa\", batch: a.batch, verdict: \"approve\" };\n }\n // bounce: only the named tasks go back; the rest wait at needs-qa.\n const bounced = out.bounced ?? [];\n for (const b of bounced) {\n const task = a.tasks.find((x) => x.ref === b.ref);\n if (!task) continue;\n await t.transition(task.id, this.applyOf(a.onBounce.toPhase));\n await t.comment(task.id, `${this.bouncePrefix} by QA: ${b.defect}`);\n }\n return {\n kind: \"qa\",\n batch: a.batch,\n verdict: \"bounce\",\n note: bounced.map((b) => b.ref).join(\", \"),\n };\n }\n }\n }\n\n private async handoff(\n stage: \"dispatch\" | \"review\" | \"rework\" | \"escalate\",\n task: { id: string; ref: string; title: string; owner: string | null; url?: string },\n ctx: { input: RunCycleInput; rawById: Map<string, RawIssue> },\n ): Promise<string> {\n const { input, rawById } = ctx;\n const [brief, plan] = input.slug\n ? await Promise.all([\n this.deps.context?.readBrief(input.slug) ?? null,\n this.deps.context?.readPlan(input.slug) ?? null,\n ])\n : [null, null];\n const raw = rawById.get(task.id);\n const feedback =\n stage === \"rework\" || stage === \"escalate\" ? await this.latestFeedback(task.id) : undefined;\n return composeHandoff({\n stage,\n brief,\n plan,\n worktree: input.worktree,\n tasks: [{ ...task, description: raw?.description }],\n feedback,\n });\n }\n\n /** The most recent bounce comment (falls back to the last comment) for a task. */\n private async latestFeedback(issueId: string): Promise<string | undefined> {\n const list = this.deps.tracker.listComments;\n if (!list) return undefined;\n const comments = await list.call(this.deps.tracker, issueId);\n if (!comments.length) return undefined;\n const bounceRe = new RegExp(this.mapping().bounceMarker, \"i\");\n const bounces = comments.filter((c) => bounceRe.test(c));\n return (\n (bounces.length ? bounces[bounces.length - 1] : comments[comments.length - 1]) ?? undefined\n );\n }\n\n private async handoffBatch(\n a: QaIntent,\n ctx: { input: RunCycleInput; rawById: Map<string, RawIssue> },\n ): Promise<string> {\n const { input, rawById } = ctx;\n const [brief, plan] = input.slug\n ? await Promise.all([\n this.deps.context?.readBrief(input.slug) ?? null,\n this.deps.context?.readPlan(input.slug) ?? null,\n ])\n : [null, null];\n return composeHandoff({\n stage: \"qa\",\n brief,\n plan,\n batch: a.batch,\n worktree: input.worktree,\n tasks: a.tasks.map((t) => ({ ...t, description: rawById.get(t.id)?.description })),\n });\n }\n}\n","import { CATALOG, getAgent, listAgents, writeAgent } from \"@norma/agents\";\nimport type { Command } from \"commander\";\nimport type { ResolvedConfig } from \"../factory.js\";\n\ntype Resolver = () => Promise<ResolvedConfig>;\n\n/** `norma agents list|add` — inspect and install agent definitions from the catalog. */\nexport function registerAgents(program: Command, resolved: Resolver): void {\n const cmd = program.command(\"agents\").description(\"manage agent definitions (.norma/agents)\");\n\n cmd\n .command(\"list\")\n .description(\"list catalog agents and which are installed in this project\")\n .action(async () => {\n const r = await resolved();\n const installed = new Set((await listAgents(r.agentsDir)).map((s) => s.role));\n for (const a of CATALOG) {\n const mark = installed.has(a.role) ? \"●\" : \"○\";\n console.log(`${mark} ${a.role.padEnd(20)} ${a.stage.padEnd(9)} ${a.description}`);\n }\n console.log(\"\\n● installed ○ available (norma agents add <role>)\");\n });\n\n cmd\n .command(\"add\")\n .argument(\"<role>\", \"catalog role to install\")\n .description(\"write a catalog agent to .norma/agents/<role>.md\")\n .action(async (role: string) => {\n const r = await resolved();\n const spec = getAgent(role);\n if (!spec) {\n throw new Error(`unknown catalog role \"${role}\". Run 'norma agents list' to see options.`);\n }\n const path = await writeAgent(r.agentsDir, spec);\n console.log(`wrote ${path}`);\n });\n}\n","import { RetryableError, isTransientStatus, retryAfterMs, withRetry } from \"@norma/tracker\";\n\n/** Minimal REST client for the GitHub API (Bearer token). */\nexport class GhRest {\n constructor(\n private readonly token: string,\n private readonly base = \"https://api.github.com\",\n ) {}\n\n async request<T>(method: string, path: string, body?: unknown): Promise<T> {\n return withRetry(() => this.once<T>(method, path, body));\n }\n\n private async once<T>(method: string, path: string, body?: unknown): Promise<T> {\n let res: Response;\n try {\n res = await fetch(`${this.base}${path}`, {\n method,\n headers: {\n Authorization: `Bearer ${this.token}`,\n Accept: \"application/vnd.github+json\",\n \"X-GitHub-Api-Version\": \"2022-11-28\",\n ...(body ? { \"Content-Type\": \"application/json\" } : {}),\n },\n body: body ? JSON.stringify(body) : undefined,\n });\n } catch (e) {\n throw new RetryableError(`GitHub network error: ${e instanceof Error ? e.message : e}`);\n }\n if (!res.ok) {\n const text = await res.text().catch(() => \"\");\n const msg = `GitHub ${method} ${path} → ${res.status} ${res.statusText}: ${text.slice(0, 300)}`;\n if (isTransientStatus(res.status)) {\n throw new RetryableError(msg, retryAfterMs(res.headers.get(\"retry-after\")));\n }\n throw new GitHubError(msg, res.status);\n }\n if (res.status === 204) return undefined as T;\n return (await res.json()) as T;\n }\n}\n\nexport class GitHubError extends Error {\n constructor(\n message: string,\n readonly status: number,\n ) {\n super(message);\n this.name = \"GitHubError\";\n }\n}\n","import type {\n ApplyInstruction,\n CreateIssueInput,\n CreateProjectInput,\n RawIssue,\n TrackerAdapter,\n TrackerIdentity,\n TrackerIntrospection,\n TrackerLabel,\n TrackerState,\n} from \"@norma/tracker\";\nimport { GhRest, GitHubError } from \"./rest.js\";\n\nexport interface GitHubAdapterOptions {\n /** \"owner/repo\". Defaults to $GITHUB_REPO. */\n repo?: string;\n /** Token with repo scope. Defaults to $GITHUB_TOKEN or $GH_TOKEN. */\n token?: string;\n /** Regex (string) marking a bounce comment; counted for escalation. */\n bounceMarker?: string;\n}\n\ninterface GhIssue {\n number: number;\n title: string;\n state: \"open\" | \"closed\";\n body?: string;\n html_url?: string;\n labels: { name: string }[];\n comments: number;\n}\n\nconst BLOCKED_BY = /^blocked-by:(\\d+)$/i;\n\n/**\n * GitHub Issues implementation of the tracker port. An epic = a **milestone**;\n * phases are carried in labels (GitHub has only open/closed), and the dependency\n * DAG is encoded as `blocked-by:<number>` labels (GitHub Issues has no native\n * blockers). Use the `github` config preset, whose phaseMapping matches this.\n */\nexport class GitHubAdapter implements TrackerAdapter, TrackerIntrospection {\n readonly kind = \"github\";\n private rest: GhRest;\n private owner: string;\n private repo: string;\n private bounceRe: RegExp;\n\n constructor(opts: GitHubAdapterOptions = {}) {\n const token = opts.token ?? process.env.GITHUB_TOKEN ?? process.env.GH_TOKEN;\n const repo = opts.repo ?? process.env.GITHUB_REPO;\n if (!token) throw new Error(\"GitHubAdapter: token (or $GITHUB_TOKEN/$GH_TOKEN) is required\");\n if (!repo || !repo.includes(\"/\"))\n throw new Error('GitHubAdapter: repo \"owner/repo\" is required');\n this.rest = new GhRest(token);\n const [owner, name] = repo.split(\"/\");\n this.owner = owner as string;\n this.repo = name as string;\n this.bounceRe = new RegExp(opts.bounceMarker ?? \"🔁\\\\s*bounce\", \"i\");\n }\n\n private base() {\n return `/repos/${this.owner}/${this.repo}`;\n }\n\n async whoami(): Promise<TrackerIdentity> {\n const me = await this.rest.request<{ id: number; login: string; name?: string }>(\n \"GET\",\n \"/user\",\n );\n return {\n id: String(me.id),\n name: me.name ?? me.login,\n context: { repo: `${this.owner}/${this.repo}` },\n };\n }\n\n async listIssues(query: { projectId: string }): Promise<RawIssue[]> {\n const milestone = query.projectId;\n const raw: GhIssue[] = [];\n for (let page = 1; ; page++) {\n const batch = await this.rest.request<GhIssue[]>(\n \"GET\",\n `${this.base()}/issues?milestone=${encodeURIComponent(milestone)}&state=all&per_page=100&page=${page}`,\n );\n raw.push(...batch);\n if (batch.length < 100) break;\n }\n const stateByNumber = new Map(raw.map((i) => [i.number, i.state]));\n const labelsByNumber = new Map(raw.map((i) => [i.number, i.labels.map((l) => l.name)]));\n const out: RawIssue[] = [];\n for (const i of raw) {\n const labels = i.labels.map((l) => l.name);\n const blockedBy = labels\n .map((l) => l.match(BLOCKED_BY))\n .filter((m): m is RegExpMatchArray => m !== null)\n .map((m) => {\n const num = Number(m[1]);\n // Phases are label-driven on GitHub, so the blocker must carry its labels\n // for correct dep-done classification.\n return {\n id: String(num),\n ref: `#${num}`,\n state: stateByNumber.get(num) ?? \"open\",\n labels: labelsByNumber.get(num) ?? [],\n };\n });\n out.push({\n id: String(i.number),\n ref: `#${i.number}`,\n title: i.title,\n url: i.html_url,\n description: i.body ?? \"\",\n state: i.state,\n labels,\n blockedBy,\n order: i.number,\n bounces: i.comments > 0 ? await this.countBounces(i.number) : 0,\n });\n }\n return out;\n }\n\n private async countBounces(n: number): Promise<number> {\n const comments = await this.listComments(String(n));\n return comments.filter((c) => this.bounceRe.test(c)).length;\n }\n\n async transition(issueId: string, apply: ApplyInstruction): Promise<void> {\n const cur = await this.rest.request<GhIssue>(\"GET\", `${this.base()}/issues/${issueId}`);\n const remove = new Set((apply.removeLabels ?? []).map((l) => l.toLowerCase()));\n const labels = cur.labels.map((l) => l.name).filter((l) => !remove.has(l.toLowerCase()));\n for (const l of apply.addLabels ?? [])\n if (!labels.some((x) => x.toLowerCase() === l.toLowerCase())) labels.push(l);\n const patch: Record<string, unknown> = { labels };\n if (apply.state) patch.state = apply.state.toLowerCase() === \"closed\" ? \"closed\" : \"open\";\n await this.rest.request(\"PATCH\", `${this.base()}/issues/${issueId}`, patch);\n }\n\n async bulkTransition(issueIds: string[], apply: ApplyInstruction): Promise<void> {\n for (const id of issueIds) await this.transition(id, apply);\n }\n\n async comment(issueId: string, body: string): Promise<void> {\n await this.rest.request(\"POST\", `${this.base()}/issues/${issueId}/comments`, { body });\n }\n\n async listComments(issueId: string): Promise<string[]> {\n const comments = await this.rest.request<{ body: string }[]>(\n \"GET\",\n `${this.base()}/issues/${issueId}/comments?per_page=100`,\n );\n return comments.map((c) => c.body ?? \"\");\n }\n\n async createProject(input: CreateProjectInput): Promise<{ id: string; url?: string }> {\n const ms = await this.rest.request<{ number: number; html_url?: string }>(\n \"POST\",\n `${this.base()}/milestones`,\n { title: input.name, description: input.summary ?? input.description },\n );\n return { id: String(ms.number), url: ms.html_url };\n }\n\n async createIssue(input: CreateIssueInput): Promise<{ id: string; ref: string; url?: string }> {\n if (input.labels?.length) for (const l of input.labels) await this.ensureLabel(l);\n const created = await this.rest.request<{ number: number; html_url?: string }>(\n \"POST\",\n `${this.base()}/issues`,\n {\n title: input.title,\n body: input.description,\n labels: input.labels ?? [],\n milestone: Number(input.projectId),\n },\n );\n return { id: String(created.number), ref: `#${created.number}`, url: created.html_url };\n }\n\n async addDependency(input: { issueId: string; blockedById: string }): Promise<void> {\n const label = `blocked-by:${input.blockedById}`;\n await this.ensureLabel(label);\n await this.rest.request(\"POST\", `${this.base()}/issues/${input.issueId}/labels`, {\n labels: [label],\n });\n }\n\n // --- introspection -------------------------------------------------------\n\n async listStates(): Promise<TrackerState[]> {\n return [\n { id: \"open\", name: \"open\", type: \"started\" },\n { id: \"closed\", name: \"closed\", type: \"completed\" },\n ];\n }\n\n async listLabels(): Promise<TrackerLabel[]> {\n const out: TrackerLabel[] = [];\n for (let page = 1; ; page++) {\n const batch = await this.rest.request<{ id: number; name: string }[]>(\n \"GET\",\n `${this.base()}/labels?per_page=100&page=${page}`,\n );\n for (const l of batch) out.push({ id: String(l.id), name: l.name });\n if (batch.length < 100) break;\n }\n return out;\n }\n\n async createLabel(input: { name: string; color?: string }): Promise<TrackerLabel> {\n return this.ensureLabel(input.name, input.color);\n }\n\n private async ensureLabel(name: string, color = \"ededed\"): Promise<TrackerLabel> {\n try {\n const l = await this.rest.request<{ id: number; name: string }>(\n \"POST\",\n `${this.base()}/labels`,\n {\n name,\n color,\n },\n );\n return { id: String(l.id), name: l.name };\n } catch (e) {\n if (e instanceof GitHubError && e.status === 422) return { id: name, name }; // already exists\n throw e;\n }\n }\n}\n","import { RetryableError, isTransientStatus, retryAfterMs, withRetry } from \"@norma/tracker\";\n\n/** Minimal REST client for Jira Cloud (Basic auth: email + API token). */\nexport class JiraRest {\n private auth: string;\n constructor(\n private readonly baseUrl: string,\n email: string,\n apiToken: string,\n ) {\n this.baseUrl = baseUrl.replace(/\\/$/, \"\");\n this.auth = `Basic ${Buffer.from(`${email}:${apiToken}`).toString(\"base64\")}`;\n }\n\n async request<T>(method: string, path: string, body?: unknown): Promise<T> {\n return withRetry(() => this.once<T>(method, path, body));\n }\n\n private async once<T>(method: string, path: string, body?: unknown): Promise<T> {\n let res: Response;\n try {\n res = await fetch(`${this.baseUrl}${path}`, {\n method,\n headers: {\n Authorization: this.auth,\n Accept: \"application/json\",\n ...(body ? { \"Content-Type\": \"application/json\" } : {}),\n },\n body: body ? JSON.stringify(body) : undefined,\n });\n } catch (e) {\n throw new RetryableError(`Jira network error: ${e instanceof Error ? e.message : e}`);\n }\n if (!res.ok) {\n const text = await res.text().catch(() => \"\");\n const msg = `Jira ${method} ${path} → ${res.status} ${res.statusText}: ${text.slice(0, 500)}`;\n if (isTransientStatus(res.status)) {\n throw new RetryableError(msg, retryAfterMs(res.headers.get(\"retry-after\")));\n }\n throw new Error(msg);\n }\n if (res.status === 204) return undefined as T;\n const ct = res.headers.get(\"content-type\") ?? \"\";\n return (ct.includes(\"application/json\") ? await res.json() : undefined) as T;\n }\n\n get<T>(path: string) {\n return this.request<T>(\"GET\", path);\n }\n post<T>(path: string, body: unknown) {\n return this.request<T>(\"POST\", path, body);\n }\n put<T>(path: string, body: unknown) {\n return this.request<T>(\"PUT\", path, body);\n }\n}\n\n/** Flatten an Atlassian Document Format value to plain text (best-effort). */\nexport function adfToText(doc: unknown): string {\n const out: string[] = [];\n const walk = (n: unknown) => {\n if (!n || typeof n !== \"object\") return;\n const node = n as { text?: string; content?: unknown[] };\n if (typeof node.text === \"string\") out.push(node.text);\n if (Array.isArray(node.content)) for (const c of node.content) walk(c);\n };\n walk(doc);\n return out.join(\" \").trim();\n}\n\n/** Build a minimal Atlassian Document Format doc from plain text. */\nexport function adf(text: string) {\n return {\n type: \"doc\",\n version: 1,\n content: [{ type: \"paragraph\", content: [{ type: \"text\", text }] }],\n };\n}\n","import type {\n ApplyInstruction,\n CreateIssueInput,\n CreateProjectInput,\n RawIssue,\n TrackerAdapter,\n TrackerIdentity,\n TrackerIntrospection,\n TrackerLabel,\n TrackerState,\n} from \"@norma/tracker\";\nimport { JiraRest, adf, adfToText } from \"./rest.js\";\n\nexport interface JiraAdapterOptions {\n /** Site base URL, e.g. https://acme.atlassian.net. Defaults to $JIRA_BASE_URL. */\n baseUrl?: string;\n /** Account email. Defaults to $JIRA_EMAIL. */\n email?: string;\n /** API token (https://id.atlassian.com/manage/api-tokens). Defaults to $JIRA_API_TOKEN. */\n apiToken?: string;\n /** Project key used when creating issues / listing by project. Defaults to $JIRA_PROJECT. */\n projectKey?: string;\n /** Issue type for created tasks (default \"Task\"). */\n taskIssueType?: string;\n /** Issue type used to represent an epic (default \"Epic\"). */\n epicIssueType?: string;\n /** Regex (string) marking a bounce comment; counted for escalation. */\n bounceMarker?: string;\n}\n\ninterface JiraIssue {\n id: string;\n key: string;\n fields: {\n summary: string;\n labels: string[];\n status?: { name: string };\n issuelinks?: JiraLink[];\n comment?: { comments: { body: unknown }[] };\n };\n}\n\ninterface JiraLink {\n type: { name: string; inward: string; outward: string };\n inwardIssue?: { id: string; key: string; fields?: { status?: { name: string } } };\n outwardIssue?: { id: string; key: string; fields?: { status?: { name: string } } };\n}\n\nconst FIELDS = [\"summary\", \"labels\", \"status\", \"issuelinks\", \"comment\"];\nconst isIssueKey = (s: string) => /^[A-Z][A-Z0-9]+-\\d+$/.test(s);\n\n/** Jira Cloud implementation of the tracker port. */\nexport class JiraAdapter implements TrackerAdapter, TrackerIntrospection {\n readonly kind = \"jira\";\n private rest: JiraRest;\n private projectKey?: string;\n private taskType: string;\n private epicType: string;\n private bounceRe: RegExp;\n\n constructor(opts: JiraAdapterOptions = {}) {\n const baseUrl = opts.baseUrl ?? process.env.JIRA_BASE_URL;\n const email = opts.email ?? process.env.JIRA_EMAIL;\n const apiToken = opts.apiToken ?? process.env.JIRA_API_TOKEN;\n if (!baseUrl || !email || !apiToken) {\n throw new Error(\n \"JiraAdapter: baseUrl, email and apiToken are required (or $JIRA_BASE_URL/$JIRA_EMAIL/$JIRA_API_TOKEN)\",\n );\n }\n this.rest = new JiraRest(baseUrl, email, apiToken);\n this.projectKey = opts.projectKey ?? process.env.JIRA_PROJECT;\n this.taskType = opts.taskIssueType ?? \"Task\";\n this.epicType = opts.epicIssueType ?? \"Epic\";\n this.bounceRe = new RegExp(opts.bounceMarker ?? \"🔁\\\\s*bounce\", \"i\");\n }\n\n async whoami(): Promise<TrackerIdentity> {\n const me = await this.rest.get<{\n accountId: string;\n displayName: string;\n emailAddress?: string;\n }>(\"/rest/api/3/myself\");\n return {\n id: me.accountId,\n name: me.displayName,\n email: me.emailAddress,\n context: { kind: this.kind, projectKey: this.projectKey },\n };\n }\n\n private shape(issue: JiraIssue): RawIssue {\n const blockedBy = (issue.fields.issuelinks ?? [])\n .filter((l) => l.type.name.toLowerCase() === \"blocks\" && l.inwardIssue)\n .map((l) => ({\n id: l.inwardIssue!.id,\n ref: l.inwardIssue!.key,\n state: l.inwardIssue!.fields?.status?.name ?? \"Backlog\",\n }));\n const bounces = (issue.fields.comment?.comments ?? []).filter((c) =>\n this.bounceRe.test(JSON.stringify(c.body ?? \"\")),\n ).length;\n return {\n id: issue.id,\n ref: issue.key,\n title: issue.fields.summary,\n url: undefined,\n state: issue.fields.status?.name ?? \"Backlog\",\n labels: issue.fields.labels ?? [],\n blockedBy,\n order: Number((issue.key.match(/(\\d+)$/) ?? [])[1] ?? 0),\n bounces,\n };\n }\n\n async listIssues(query: { projectId: string }): Promise<RawIssue[]> {\n // projectId may be a Jira project key OR an epic issue key.\n const jql = isIssueKey(query.projectId)\n ? `parent = \"${query.projectId}\" ORDER BY created ASC`\n : `project = \"${query.projectId}\" ORDER BY created ASC`;\n const out: RawIssue[] = [];\n let nextPageToken: string | undefined;\n do {\n const page = await this.rest.post<{ issues: JiraIssue[]; nextPageToken?: string }>(\n \"/rest/api/3/search/jql\",\n { jql, fields: FIELDS, maxResults: 100, nextPageToken },\n );\n for (const i of page.issues ?? []) out.push(this.shape(i));\n nextPageToken = page.nextPageToken;\n } while (nextPageToken);\n return out;\n }\n\n private async findTransitionId(issueId: string, targetState: string): Promise<string> {\n const d = await this.rest.get<{\n transitions: { id: string; name: string; to: { name: string } }[];\n }>(`/rest/api/3/issue/${issueId}/transitions`);\n const t = d.transitions.find((x) => x.to.name.toLowerCase() === targetState.toLowerCase());\n if (!t) {\n throw new Error(\n `JiraAdapter: no transition to \"${targetState}\" from ${issueId}. Available: ${d.transitions\n .map((x) => x.to.name)\n .join(\", \")}`,\n );\n }\n return t.id;\n }\n\n async transition(issueId: string, apply: ApplyInstruction): Promise<void> {\n if (apply.addLabels?.length || apply.removeLabels?.length) {\n const update = {\n labels: [\n ...(apply.addLabels ?? []).map((l) => ({ add: l })),\n ...(apply.removeLabels ?? []).map((l) => ({ remove: l })),\n ],\n };\n await this.rest.put(`/rest/api/3/issue/${issueId}`, { update });\n }\n if (apply.state) {\n const transitionId = await this.findTransitionId(issueId, apply.state);\n await this.rest.post(`/rest/api/3/issue/${issueId}/transitions`, {\n transition: { id: transitionId },\n });\n }\n }\n\n async bulkTransition(issueIds: string[], apply: ApplyInstruction): Promise<void> {\n for (const id of issueIds) await this.transition(id, apply);\n }\n\n async comment(issueId: string, body: string): Promise<void> {\n await this.rest.post(`/rest/api/3/issue/${issueId}/comment`, { body: adf(body) });\n }\n\n async listComments(issueId: string): Promise<string[]> {\n const d = await this.rest.get<{ comments: { body: unknown }[] }>(\n `/rest/api/3/issue/${issueId}/comment`,\n );\n return (d.comments ?? []).map((c) => adfToText(c.body));\n }\n\n async createProject(input: CreateProjectInput): Promise<{ id: string; url?: string }> {\n // Represent an epic as a Jira Epic issue; its key becomes the \"projectId\".\n if (!this.projectKey) throw new Error(\"JiraAdapter.createProject: projectKey is required\");\n const created = await this.rest.post<{ id: string; key: string }>(\"/rest/api/3/issue\", {\n fields: {\n project: { key: this.projectKey },\n issuetype: { name: this.epicType },\n summary: input.name,\n ...(input.description ? { description: adf(input.description) } : {}),\n },\n });\n return { id: created.key, url: undefined };\n }\n\n async createIssue(input: CreateIssueInput): Promise<{ id: string; ref: string; url?: string }> {\n if (!this.projectKey) throw new Error(\"JiraAdapter.createIssue: projectKey is required\");\n const fields: Record<string, unknown> = {\n project: { key: this.projectKey },\n issuetype: { name: this.taskType },\n summary: input.title,\n };\n if (input.description) fields.description = adf(input.description);\n if (input.labels?.length) fields.labels = input.labels;\n // parentId carries either the epic key or a parent task key.\n if (input.parentId) fields.parent = { key: input.parentId };\n const created = await this.rest.post<{ id: string; key: string }>(\"/rest/api/3/issue\", {\n fields,\n });\n return { id: created.id, ref: created.key };\n }\n\n async addDependency(input: { issueId: string; blockedById: string }): Promise<void> {\n // issue is blocked-by blocker ⇒ blocker \"blocks\" issue.\n await this.rest.post(\"/rest/api/3/issueLink\", {\n type: { name: \"Blocks\" },\n inwardIssue: { id: input.issueId }, // \"is blocked by\"\n outwardIssue: { id: input.blockedById }, // \"blocks\"\n });\n }\n\n // --- introspection (read-only; Jira status/label creation is admin-managed) ---\n\n async listStates(): Promise<TrackerState[]> {\n if (!this.projectKey) throw new Error(\"JiraAdapter.listStates: projectKey is required\");\n // Statuses are grouped per issue type; flatten to a unique set.\n const groups = await this.rest.get<\n { statuses: { id: string; name: string; statusCategory?: { key: string } }[] }[]\n >(`/rest/api/3/project/${this.projectKey}/statuses`);\n const seen = new Map<string, TrackerState>();\n for (const g of groups) {\n for (const s of g.statuses ?? []) {\n if (!seen.has(s.name))\n seen.set(s.name, { id: s.id, name: s.name, type: s.statusCategory?.key });\n }\n }\n return [...seen.values()];\n }\n\n /** Jira labels are freeform — they exist implicitly on first use, so \"creating\"\n * one is a no-op. (Status creation is workflow-scheme/admin managed and is NOT\n * automated; `norma init` prints manual guidance for missing statuses instead.) */\n async createLabel(input: { name: string }): Promise<TrackerLabel> {\n return { id: input.name, name: input.name };\n }\n\n async listLabels(): Promise<TrackerLabel[]> {\n const out: TrackerLabel[] = [];\n let startAt = 0;\n for (;;) {\n const page = await this.rest.get<{ values: string[]; isLast: boolean; total: number }>(\n `/rest/api/3/label?startAt=${startAt}&maxResults=1000`,\n );\n for (const name of page.values ?? []) out.push({ id: name, name });\n if (page.isLast || !page.values?.length) break;\n startAt += page.values.length;\n }\n return out;\n }\n}\n","import { RetryableError, isTransientStatus, retryAfterMs, withRetry } from \"@norma/tracker\";\n\nconst API = \"https://api.linear.app/graphql\";\n\nexport interface GqlResult<T> {\n data?: T;\n errors?: unknown;\n}\n\n/** Minimal GraphQL client for the Linear API, driven by a personal API key. */\nexport class LinearGql {\n constructor(private readonly apiKey: string) {}\n\n async raw<T>(query: string, variables: Record<string, unknown> = {}): Promise<GqlResult<T>> {\n return withRetry(async () => {\n let res: Response;\n try {\n res = await fetch(API, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", Authorization: this.apiKey },\n body: JSON.stringify({ query, variables }),\n });\n } catch (e) {\n throw new RetryableError(`Linear network error: ${e instanceof Error ? e.message : e}`);\n }\n if (isTransientStatus(res.status)) {\n throw new RetryableError(\n `Linear HTTP ${res.status}`,\n retryAfterMs(res.headers.get(\"retry-after\")),\n );\n }\n return (await res.json()) as GqlResult<T>;\n });\n }\n\n /** Hard variant: throws on GraphQL errors. */\n async query<T>(query: string, variables: Record<string, unknown> = {}): Promise<T> {\n const json = await this.raw<T>(query, variables);\n if (json.errors) {\n throw new Error(`Linear GraphQL error: ${JSON.stringify(json.errors)}`);\n }\n if (!json.data) throw new Error(\"Linear GraphQL returned no data\");\n return json.data;\n }\n}\n","import type {\n ApplyInstruction,\n CreateIssueInput,\n CreateProjectInput,\n RawIssue,\n TrackerAdapter,\n TrackerIdentity,\n TrackerIntrospection,\n TrackerLabel,\n TrackerState,\n} from \"@norma/tracker\";\nimport { LinearGql } from \"./gql.js\";\n\nexport interface LinearAdapterOptions {\n /** Personal API key (https://linear.app/settings/api). Defaults to $LINEAR_API_KEY. */\n apiKey?: string;\n /** Team key or name. Defaults to $LINEAR_TEAM or \"Redisco\". */\n team?: string;\n /** Regex (string) marking a bounce comment; counted for escalation. */\n bounceMarker?: string;\n}\n\ninterface TeamData {\n id: string;\n name: string;\n key: string;\n states: { nodes: { id: string; name: string; type: string; position: number }[] };\n labels: { nodes: { id: string; name: string }[] };\n}\n\nconst ISSUE_FIELDS = `\n id identifier title url estimate description\n parent { id identifier }\n state { id name type }\n labels { nodes { id name } }\n comments { nodes { body } }\n inverseRelations { nodes { type issue { id identifier state { name type } } } }\n`;\n\ninterface RawNode {\n id: string;\n identifier: string;\n title: string;\n url?: string;\n description?: string;\n state?: { name: string };\n labels: { nodes: { name: string }[] };\n comments?: { nodes: { body: string }[] };\n inverseRelations: {\n nodes: { type: string; issue?: { id: string; identifier: string; state?: { name: string } } }[];\n };\n}\n\n/** Linear implementation of the tracker port (GraphQL, headless-safe). */\nexport class LinearAdapter implements TrackerAdapter, TrackerIntrospection {\n readonly kind = \"linear\";\n private gql: LinearGql;\n private teamName: string;\n private bounceRe: RegExp;\n private _team?: TeamData;\n\n constructor(opts: LinearAdapterOptions = {}) {\n const apiKey = opts.apiKey ?? process.env.LINEAR_API_KEY;\n if (!apiKey) throw new Error(\"LinearAdapter: apiKey (or $LINEAR_API_KEY) is required\");\n this.gql = new LinearGql(apiKey);\n this.teamName = opts.team ?? process.env.LINEAR_TEAM ?? \"Redisco\";\n this.bounceRe = new RegExp(opts.bounceMarker ?? \"^\\\\s*🔁\\\\s*bounce\", \"i\");\n }\n\n private async team(): Promise<TeamData> {\n if (this._team) return this._team;\n const d = await this.gql.query<{ teams: { nodes: TeamData[] } }>(\n `query($q:String!){ teams(filter:{ or:[{key:{eqIgnoreCase:$q}},{name:{eqIgnoreCase:$q}}] }){ nodes{\n id name key\n states{ nodes{ id name type position } }\n labels{ nodes{ id name } }\n } } }`,\n { q: this.teamName },\n );\n const t = d.teams.nodes[0];\n if (!t) throw new Error(`LinearAdapter: team \"${this.teamName}\" not found`);\n this._team = t;\n return t;\n }\n\n private async stateId(name: string): Promise<string> {\n const t = await this.team();\n const s = t.states.nodes.find((x) => x.name.toLowerCase() === name.toLowerCase());\n if (!s) {\n throw new Error(\n `LinearAdapter: state \"${name}\" not found. Available: ${t.states.nodes.map((x) => x.name).join(\", \")}`,\n );\n }\n return s.id;\n }\n\n private async labelIds(names: string[]): Promise<string[]> {\n const t = await this.team();\n return names.map((n) => {\n const l = t.labels.nodes.find((x) => x.name.toLowerCase() === n.toLowerCase());\n if (!l) throw new Error(`LinearAdapter: label \"${n}\" not found`);\n return l.id;\n });\n }\n\n async whoami(): Promise<TrackerIdentity> {\n const d = await this.gql.query<{ viewer: { id: string; name: string; email: string } }>(\n `{ viewer { id name email } }`,\n );\n const t = await this.team();\n return {\n id: d.viewer.id,\n name: d.viewer.name,\n email: d.viewer.email,\n context: { team: { id: t.id, name: t.name, key: t.key } },\n };\n }\n\n private shape(n: RawNode): RawIssue {\n const labels = n.labels.nodes.map((l) => l.name);\n const blockedBy = n.inverseRelations.nodes\n .filter((r) => r.type === \"blocks\" && r.issue)\n .map((r) => ({\n id: r.issue!.id,\n ref: r.issue!.identifier,\n state: r.issue!.state?.name ?? \"Backlog\",\n }));\n const bounces = (n.comments?.nodes ?? []).filter((c) =>\n this.bounceRe.test(c.body ?? \"\"),\n ).length;\n return {\n id: n.id,\n ref: n.identifier,\n title: n.title,\n url: n.url,\n description: n.description ?? \"\",\n state: n.state?.name ?? \"Backlog\",\n labels,\n blockedBy,\n order: Number((n.identifier.match(/(\\d+)$/) ?? [])[1] ?? 0),\n bounces,\n };\n }\n\n async listIssues(query: { projectId: string }): Promise<RawIssue[]> {\n const t = await this.team();\n const filter = {\n and: [{ team: { id: { eq: t.id } } }, { project: { id: { eq: query.projectId } } }],\n };\n const out: RawIssue[] = [];\n let after: string | null = null;\n do {\n const d: {\n issues: { pageInfo: { hasNextPage: boolean; endCursor: string }; nodes: RawNode[] };\n } = await this.gql.query(\n `query($filter:IssueFilter,$after:String){ issues(filter:$filter, first:100, after:$after){\n pageInfo{ hasNextPage endCursor } nodes{ ${ISSUE_FIELDS} } } }`,\n { filter, after },\n );\n for (const n of d.issues.nodes) out.push(this.shape(n));\n after = d.issues.pageInfo.hasNextPage ? d.issues.pageInfo.endCursor : null;\n } while (after);\n return out;\n }\n\n private async buildUpdateInput(issueId: string, apply: ApplyInstruction) {\n const input: { stateId?: string; labelIds?: string[] } = {};\n if (apply.state) input.stateId = await this.stateId(apply.state);\n const add = apply.addLabels ?? [];\n const remove = (apply.removeLabels ?? []).map((s) => s.toLowerCase());\n if (add.length || remove.length) {\n const cur = await this.gql.query<{\n issue: { labels: { nodes: { id: string; name: string }[] } };\n }>(`query($id:String!){ issue(id:$id){ labels{ nodes{ id name } } } }`, { id: issueId });\n const keep = cur.issue.labels.nodes\n .filter((l) => !remove.includes(l.name.toLowerCase()))\n .map((l) => l.id);\n const addIds = add.length ? await this.labelIds(add) : [];\n input.labelIds = [...new Set([...keep, ...addIds])];\n }\n return input;\n }\n\n async transition(issueId: string, apply: ApplyInstruction): Promise<void> {\n const input = await this.buildUpdateInput(issueId, apply);\n await this.gql.query(\n `mutation($id:String!,$input:IssueUpdateInput!){ issueUpdate(id:$id, input:$input){ success } }`,\n { id: issueId, input },\n );\n }\n\n async bulkTransition(issueIds: string[], apply: ApplyInstruction): Promise<void> {\n // Resolve the state once; labels are usually empty in bulk (e.g. epic-complete → Done).\n const stateId = apply.state ? await this.stateId(apply.state) : undefined;\n for (const id of issueIds) {\n const input =\n apply.addLabels?.length || apply.removeLabels?.length\n ? await this.buildUpdateInput(id, apply)\n : { stateId };\n await this.gql.query(\n `mutation($id:String!,$input:IssueUpdateInput!){ issueUpdate(id:$id, input:$input){ success } }`,\n { id, input },\n );\n }\n }\n\n async comment(issueId: string, body: string): Promise<void> {\n await this.gql.query(\n `mutation($input:CommentCreateInput!){ commentCreate(input:$input){ success } }`,\n { input: { issueId, body } },\n );\n }\n\n async listComments(issueId: string): Promise<string[]> {\n const d = await this.gql.query<{ issue: { comments: { nodes: { body: string }[] } } }>(\n `query($id:String!){ issue(id:$id){ comments{ nodes{ body } } } }`,\n { id: issueId },\n );\n return d.issue.comments.nodes.map((c) => c.body);\n }\n\n async createProject(input: CreateProjectInput): Promise<{ id: string; url?: string }> {\n const t = await this.team();\n const gqlInput: Record<string, unknown> = { name: input.name, teamIds: [t.id] };\n if (input.summary) gqlInput.description = input.summary;\n if (input.description) gqlInput.content = input.description;\n const d = await this.gql.query<{ projectCreate: { project: { id: string; url: string } } }>(\n `mutation($input:ProjectCreateInput!){ projectCreate(input:$input){ success project{ id name url } } }`,\n { input: gqlInput },\n );\n return { id: d.projectCreate.project.id, url: d.projectCreate.project.url };\n }\n\n async createIssue(input: CreateIssueInput): Promise<{ id: string; ref: string; url?: string }> {\n const t = await this.team();\n const gqlInput: Record<string, unknown> = {\n teamId: t.id,\n projectId: input.projectId,\n title: input.title,\n };\n if (input.description) gqlInput.description = input.description;\n if (input.parentId) gqlInput.parentId = input.parentId;\n if (input.estimate) gqlInput.estimate = input.estimate;\n if (input.labels?.length) gqlInput.labelIds = await this.labelIds(input.labels);\n const d = await this.gql.query<{\n issueCreate: { issue: { id: string; identifier: string; url: string } };\n }>(\n `mutation($input:IssueCreateInput!){ issueCreate(input:$input){ success issue{ id identifier url } } }`,\n { input: gqlInput },\n );\n const iss = d.issueCreate.issue;\n return { id: iss.id, ref: iss.identifier, url: iss.url };\n }\n\n async addDependency(input: { issueId: string; blockedById: string }): Promise<void> {\n // \"issue is blocked-by blocker\" ⇒ blocker blocks issue.\n await this.gql.query(\n `mutation($input:IssueRelationCreateInput!){ issueRelationCreate(input:$input){ success } }`,\n { input: { issueId: input.blockedById, relatedIssueId: input.issueId, type: \"blocks\" } },\n );\n }\n\n // --- introspection (board setup for `norma init`) -------------------------\n\n async listStates(): Promise<TrackerState[]> {\n const t = await this.team();\n return t.states.nodes\n .slice()\n .sort((a, b) => a.position - b.position)\n .map((s) => ({ id: s.id, name: s.name, type: s.type }));\n }\n\n async listLabels(): Promise<TrackerLabel[]> {\n const t = await this.team();\n return t.labels.nodes.map((l) => ({ id: l.id, name: l.name }));\n }\n\n async createState(input: { name: string; type?: string; color?: string }): Promise<TrackerState> {\n const t = await this.team();\n const d = await this.gql.query<{\n workflowStateCreate: { workflowState: { id: string; name: string; type: string } };\n }>(\n `mutation($input:WorkflowStateCreateInput!){ workflowStateCreate(input:$input){ success workflowState{ id name type position } } }`,\n {\n input: {\n teamId: t.id,\n name: input.name,\n type: input.type ?? \"started\",\n color: input.color ?? \"#00B8A9\",\n },\n },\n );\n this._team = undefined; // cache is now stale\n const s = d.workflowStateCreate.workflowState;\n return { id: s.id, name: s.name, type: s.type };\n }\n\n async createLabel(input: { name: string; color?: string }): Promise<TrackerLabel> {\n const t = await this.team();\n const d = await this.gql.query<{\n issueLabelCreate: { issueLabel: { id: string; name: string } };\n }>(\n `mutation($input:IssueLabelCreateInput!){ issueLabelCreate(input:$input){ success issueLabel{ id name } } }`,\n { input: { teamId: t.id, name: input.name, color: input.color ?? \"#9B51E0\" } },\n );\n this._team = undefined;\n return d.issueLabelCreate.issueLabel;\n }\n}\n","import { access, readFile } from \"node:fs/promises\";\nimport { dirname, join, resolve } from \"node:path\";\nimport { GitHubAdapter } from \"@norma/adapter-github\";\nimport { JiraAdapter } from \"@norma/adapter-jira\";\nimport { LinearAdapter } from \"@norma/adapter-linear\";\nimport {\n type AgentRunner,\n ClaudeCodeRunner,\n CommandRunner,\n EchoRunner,\n HumanRunner,\n OpenCodeRunner,\n} from \"@norma/agent-runtime\";\nimport { type NormaConfig, parseConfig, softwareDevConfig } from \"@norma/config\";\nimport { FsContextStore } from \"@norma/context\";\nimport { MemoryTracker, type TrackerAdapter } from \"@norma/tracker\";\n\nexport const CONFIG_FILENAME = \"norma.config.json\";\n\nasync function exists(path: string): Promise<boolean> {\n try {\n await access(path);\n return true;\n } catch {\n return false;\n }\n}\n\n/** Walk up from `startDir` looking for norma.config.json. Returns its path or null. */\nexport async function findConfigPath(startDir = process.cwd()): Promise<string | null> {\n let dir = resolve(startDir);\n for (;;) {\n const candidate = join(dir, CONFIG_FILENAME);\n if (await exists(candidate)) return candidate;\n const parent = dirname(dir);\n if (parent === dir) return null;\n dir = parent;\n }\n}\n\nexport interface ResolvedConfig {\n config: NormaConfig;\n /** Absolute path of the config file, or null when the built-in preset is used. */\n configPath: string | null;\n /** Project root (config dir, or cwd for the preset). */\n root: string;\n /** Where durable brief/PLAN/report live. */\n contextRoot: string;\n /** Where `.md` agent definitions live. */\n agentsDir: string;\n}\n\n/**\n * Resolve the active config: an explicit `--config` path wins; otherwise discover\n * norma.config.json upward from cwd; otherwise fall back to the software-dev preset.\n */\nexport async function resolveConfig(explicitPath?: string): Promise<ResolvedConfig> {\n let configPath: string | null = null;\n let config: NormaConfig;\n\n if (explicitPath) {\n configPath = resolve(explicitPath);\n config = parseConfig(JSON.parse(await readFile(configPath, \"utf8\")));\n } else {\n configPath = await findConfigPath();\n if (configPath) {\n config = parseConfig(JSON.parse(await readFile(configPath, \"utf8\")));\n } else {\n config = parseConfig(softwareDevConfig);\n }\n }\n\n const root = configPath ? dirname(configPath) : process.cwd();\n return {\n config,\n configPath,\n root,\n contextRoot: join(root, \".norma\"),\n agentsDir: join(root, \".norma\", \"agents\"),\n };\n}\n\n/** Build a tracker adapter from config + environment. */\nexport function makeTracker(config: NormaConfig): TrackerAdapter {\n const bounceMarker = config.phaseMapping.bounceMarker;\n const o = config.tracker.options as Record<string, unknown>;\n switch (config.tracker.kind) {\n case \"linear\":\n return new LinearAdapter({ team: o.team as string | undefined, bounceMarker });\n case \"jira\":\n return new JiraAdapter({\n baseUrl: o.baseUrl as string | undefined,\n projectKey: o.projectKey as string | undefined,\n bounceMarker,\n });\n case \"github\":\n return new GitHubAdapter({ repo: o.repo as string | undefined, bounceMarker });\n case \"memory\":\n return new MemoryTracker({ bounceMarker });\n default:\n throw new Error(`Unknown tracker kind: ${config.tracker.kind}`);\n }\n}\n\n/** Build an agent runner from config, wiring the agents dir for the Claude Code runtime. */\nexport function makeRunner(\n config: NormaConfig,\n agentsDir?: string,\n tracker?: TrackerAdapter,\n): AgentRunner {\n const o = config.runtime.options as Record<string, unknown>;\n switch (config.runtime.kind) {\n case \"claude-code\":\n return new ClaudeCodeRunner({ model: o.model as string | undefined, agentsDir });\n case \"opencode\":\n return new OpenCodeRunner({ model: o.model as string | undefined, agentsDir });\n case \"echo\":\n return new EchoRunner();\n case \"command\": {\n if (!o.command) throw new Error(\"runtime 'command' requires options.command\");\n return new CommandRunner({\n command: o.command as string,\n args: o.args as string[] | undefined,\n });\n }\n case \"human\": {\n if (!tracker?.listComments) {\n throw new Error(\"runtime 'human' requires a tracker that supports listComments\");\n }\n return new HumanRunner({\n readComments: (id) => tracker.listComments!(id),\n postComment: (id, body) => tracker.comment(id, body),\n });\n }\n default:\n throw new Error(`Unknown runtime kind: ${config.runtime.kind}`);\n }\n}\n\n/** Build the filesystem context store (durable brief/PLAN/report). */\nexport function makeContext(root: string): FsContextStore {\n return new FsContextStore(resolve(root));\n}\n","import { readAgent } from \"@norma/agents\";\nimport { supportsIntrospection } from \"@norma/tracker\";\nimport type { Command } from \"commander\";\nimport { type ResolvedConfig, makeTracker } from \"../factory.js\";\n\ntype Resolver = () => Promise<ResolvedConfig>;\n\nfunction rolesOf(config: ResolvedConfig[\"config\"]): string[] {\n const roles = config.roles;\n return [...new Set([...Object.values(roles.worker), roles.review, roles.qa, roles.escalate])];\n}\n\n/** `norma doctor` — validate config, tracker auth, board mapping, and agent files. */\nexport function registerDoctor(program: Command, resolved: Resolver): void {\n program\n .command(\"doctor\")\n .description(\"validate config, tracker connectivity, board mapping, and agent files\")\n .action(async () => {\n const r = await resolved();\n const ok: string[] = [];\n const warn: string[] = [];\n const bad: string[] = [];\n\n ok.push(`config: ${r.configPath ?? \"(built-in software-dev preset)\"}`);\n\n const tracker = makeTracker(r.config);\n let authed = false;\n try {\n const me = await tracker.whoami();\n ok.push(`tracker ${tracker.kind}: authenticated as ${me.name ?? me.id}`);\n authed = true;\n } catch (e) {\n bad.push(`tracker ${tracker.kind}: ${e instanceof Error ? e.message : String(e)}`);\n }\n\n if (authed && supportsIntrospection(tracker)) {\n const stateNames = new Set((await tracker.listStates()).map((s) => s.name.toLowerCase()));\n const labelNames = new Set((await tracker.listLabels()).map((l) => l.name.toLowerCase()));\n const usedStates = new Set<string>();\n const usedLabels = new Set<string>();\n for (const rule of Object.values(r.config.phaseMapping.apply)) {\n if (rule?.state) usedStates.add(rule.state);\n for (const l of rule?.addLabels ?? []) usedLabels.add(l);\n }\n for (const s of usedStates) {\n stateNames.has(s.toLowerCase())\n ? ok.push(`board state present: ${s}`)\n : bad.push(`missing board state: ${s}`);\n }\n for (const l of usedLabels) {\n labelNames.has(l.toLowerCase())\n ? ok.push(`label present: ${l}`)\n : bad.push(`missing label: ${l}`);\n }\n } else if (authed) {\n warn.push(\n `tracker ${tracker.kind} does not support board introspection — skipping mapping checks`,\n );\n }\n\n for (const role of rolesOf(r.config)) {\n const spec = await readAgent(r.agentsDir, role);\n spec\n ? ok.push(`agent present: ${role}`)\n : bad.push(`missing agent file: ${role} (norma agents add ${role})`);\n }\n\n for (const line of ok) console.log(`✓ ${line}`);\n for (const line of warn) console.log(`! ${line}`);\n for (const line of bad) console.log(`✗ ${line}`);\n console.log(\n `\\n${bad.length ? `${bad.length} problem(s)` : \"all good\"} · ${warn.length} warning(s)`,\n );\n process.exitCode = bad.length ? 1 : 0;\n });\n}\n","import type { EpicPlan, EpicTask, NormaConfig } from \"@norma/config\";\nimport { type TrackerAdapter, supportsIntrospection } from \"@norma/tracker\";\n\n/** The owner + batch labels a task carries, derived from the config's prefixes. */\nexport function taskLabels(task: EpicTask, config: NormaConfig): string[] {\n const labels = [`${config.phaseMapping.owner.fromLabelPrefix}${task.owner}`];\n if (task.batch) labels.push(`${config.phaseMapping.batch.fromLabelPrefix}${task.batch}`);\n return labels;\n}\n\n/** Every distinct routing label a plan needs to exist on the board. */\nexport function labelsForPlan(plan: EpicPlan, config: NormaConfig): string[] {\n return [...new Set(plan.tasks.flatMap((t) => taskLabels(t, config)))];\n}\n\n/** The instruction given to the planner agent; it must WRITE the plan JSON to `outPath`. */\nexport function buildPlannerPrompt(brief: string, config: NormaConfig, outPath: string): string {\n const workers = config.policy.workerTypes.join(\" | \");\n return [\n \"You are the planner. Decompose the demand below into a tracker-neutral epic plan.\",\n \"\",\n \"## Demand\",\n brief.trim(),\n \"\",\n \"## Rules\",\n `- Each task has an owner (worker lane): one of [${workers}].`,\n \"- Prefer few tasks; a shallow dependency DAG; each task a single cohesive unit.\",\n \"- Give every task tight acceptance criteria in its description.\",\n \"- Group tasks into qa-batches (the minimum set testable together).\",\n \"- NEVER put a blocking edge between two SAME-owner tasks in the SAME qa-batch (deadlock).\",\n \"\",\n \"## Output — write EXACTLY this JSON to the file, nothing else:\",\n `File path: ${outPath}`,\n \"Schema:\",\n JSON.stringify(\n {\n name: \"<epic name>\",\n slug: \"<optional-kebab>\",\n brief: \"<one-paragraph summary>\",\n tasks: [\n {\n id: \"<local-id>\",\n title: \"<task title>\",\n owner: `<${workers}>`,\n description: \"<scope + acceptance criteria>\",\n batch: \"<qa-batch key, e.g. 1>\",\n blockedBy: [\"<local-id>\"],\n },\n ],\n },\n null,\n 2,\n ),\n ].join(\"\\n\");\n}\n\nexport interface MaterializeResult {\n projectId: string;\n url?: string;\n created: { localId: string; id: string; ref: string; title: string }[];\n}\n\n/**\n * Create the project, its issues (with owner/batch labels), and the dependency\n * DAG in the tracker. Provisions any missing routing labels first when the\n * adapter supports it (Linear); freeform-label trackers (Jira) need no setup.\n */\nexport async function materializeEpic(\n plan: EpicPlan,\n adapter: TrackerAdapter,\n config: NormaConfig,\n): Promise<MaterializeResult> {\n // 1) ensure routing labels exist (best-effort; only where supported).\n if (supportsIntrospection(adapter) && adapter.createLabel) {\n const have = new Set((await adapter.listLabels()).map((l) => l.name.toLowerCase()));\n for (const label of labelsForPlan(plan, config)) {\n if (!have.has(label.toLowerCase())) await adapter.createLabel({ name: label });\n }\n }\n\n // 2) create the project.\n const project = await adapter.createProject({\n name: plan.name,\n summary: plan.brief,\n description: plan.description,\n });\n\n // 3) create the issues, remembering local-id → tracker id.\n const created: MaterializeResult[\"created\"] = [];\n const idByLocal = new Map<string, string>();\n for (const task of plan.tasks) {\n const issue = await adapter.createIssue({\n projectId: project.id,\n title: task.title,\n description: task.description,\n labels: taskLabels(task, config),\n estimate: task.estimate,\n });\n idByLocal.set(task.id, issue.id);\n created.push({ localId: task.id, id: issue.id, ref: issue.ref, title: task.title });\n }\n\n // 4) wire the dependency DAG.\n for (const task of plan.tasks) {\n for (const dep of task.blockedBy) {\n const issueId = idByLocal.get(task.id);\n const blockedById = idByLocal.get(dep);\n if (issueId && blockedById) await adapter.addDependency({ issueId, blockedById });\n }\n }\n\n return { projectId: project.id, url: project.url, created };\n}\n\n/** Render a human-readable PLAN.md from the plan (durable context / source of truth). */\nexport function renderPlanDoc(plan: EpicPlan, result?: MaterializeResult): string {\n const refOf = (localId: string) =>\n result?.created.find((c) => c.localId === localId)?.ref ?? localId;\n const lines: string[] = [`# Epic: ${plan.name}`, \"\"];\n if (plan.brief) lines.push(plan.brief, \"\");\n lines.push(\"## Tasks\", \"\", \"| task | owner | qa-batch | blocked-by |\", \"|---|---|---|---|\");\n for (const t of plan.tasks) {\n const deps = t.blockedBy.map(refOf).join(\", \") || \"—\";\n lines.push(`| ${refOf(t.id)} ${t.title} | ${t.owner} | ${t.batch ?? \"—\"} | ${deps} |`);\n }\n return `${lines.join(\"\\n\")}\\n`;\n}\n","import { mkdir, readFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { parseEpicPlan, slugify, validateEpicPlan } from \"@norma/config\";\nimport type { Command } from \"commander\";\nimport { type ResolvedConfig, makeContext, makeRunner, makeTracker } from \"../factory.js\";\nimport {\n buildPlannerPrompt,\n labelsForPlan,\n materializeEpic,\n renderPlanDoc,\n} from \"../materialize.js\";\n\ntype Resolver = () => Promise<ResolvedConfig>;\n\ninterface EpicFlags {\n planFile?: string;\n brief?: string;\n briefFile?: string;\n slug?: string;\n worktree?: string;\n dryRun: boolean;\n}\n\n/** `norma epic` — intake: turn a demand into a tracker project + tasks + DAG. */\nexport function registerEpic(program: Command, resolved: Resolver): void {\n program\n .command(\"epic\")\n .description(\n \"intake: decompose a demand into a project + tasks + dependency DAG in the tracker\",\n )\n .option(\n \"--plan-file <path>\",\n \"materialize an existing epic plan (JSON) instead of running the planner\",\n )\n .option(\"--brief <text>\", \"the demand, inline (planner path)\")\n .option(\"--brief-file <path>\", \"the demand, from a file (planner path)\")\n .option(\"--slug <slug>\", \"epic slug (default: derived from the plan name)\")\n .option(\"--worktree <path>\", \"cwd for the planner agent\")\n .option(\"--dry-run\", \"validate + print the plan without writing to the tracker\", false)\n .action((flags: EpicFlags) => runEpic(flags, resolved));\n}\n\nasync function runEpic(flags: EpicFlags, resolved: Resolver): Promise<void> {\n const r = await resolved();\n const plan = flags.planFile\n ? parseEpicPlan(JSON.parse(await readFile(flags.planFile, \"utf8\")))\n : await runPlanner(flags, r);\n\n // Semantic validation (deadlock guard, unknown deps, owner lanes).\n const errors = validateEpicPlan(plan, { workerTypes: r.config.policy.workerTypes });\n if (errors.length) {\n console.error(\"Invalid epic plan:\");\n for (const e of errors) console.error(` ✗ ${e}`);\n process.exit(1);\n }\n\n const slug = flags.slug ?? plan.slug ?? slugify(plan.name);\n\n if (flags.dryRun) {\n console.log(renderPlanDoc(plan));\n console.log(`labels needed: ${labelsForPlan(plan, r.config).join(\", \")}`);\n console.log(`(dry-run — nothing written; slug would be \"${slug}\")`);\n return;\n }\n\n const tracker = makeTracker(r.config);\n const result = await materializeEpic(plan, tracker, r.config);\n\n // Persist durable context: the brief + the human-readable PLAN.\n const context = makeContext(r.contextRoot);\n if (plan.brief) await context.writeBrief(slug, plan.brief);\n await context.writePlan(slug, renderPlanDoc(plan, result));\n\n console.log(\n JSON.stringify(\n {\n project: result.projectId,\n url: result.url,\n slug,\n created: result.created.map((c) => ({ ref: c.ref, title: c.title })),\n },\n null,\n 2,\n ),\n );\n console.error(`\\n✅ epic created — run: norma cycle ${result.projectId} --slug ${slug}`);\n}\n\n/** Run the planner agent, which writes the plan JSON to a known path; then read it. */\nasync function runPlanner(flags: EpicFlags, r: ResolvedConfig) {\n const brief =\n flags.brief ?? (flags.briefFile ? await readFile(flags.briefFile, \"utf8\") : undefined);\n if (!brief) throw new Error(\"provide --brief / --brief-file (planner path) or --plan-file\");\n\n const intakeDir = join(r.contextRoot, \"epics\", \"_intake\");\n await mkdir(intakeDir, { recursive: true });\n const outPath = join(intakeDir, \"plan.json\");\n\n const runner = makeRunner(r.config, r.agentsDir);\n const prompt = buildPlannerPrompt(brief, r.config, outPath);\n const outcome = await runner.run({\n kind: \"plan\",\n role: r.config.roles.escalate,\n context: prompt,\n worktree: flags.worktree ?? r.root,\n });\n if (outcome.verdict !== \"ok\") {\n throw new Error(`planner did not complete (verdict=${outcome.verdict}): ${outcome.summary}`);\n }\n return parseEpicPlan(JSON.parse(await readFile(outPath, \"utf8\")));\n}\n","import type { NormaConfig, PhaseMapping } from \"@norma/config\";\nimport type { TrackerState } from \"@norma/tracker\";\n\n/**\n * The 8 board \"slots\" the pipeline needs mapped to real tracker states/columns.\n * needs_review / needs_qa / needs_rework are label-discriminated within\n * in_review / in_progress, so they don't need their own column.\n */\nexport interface BoardSlots {\n backlog: string;\n ready: string;\n in_progress: string;\n in_review: string;\n released: string;\n done: string;\n canceled: string;\n}\n\nexport interface LabelConventions {\n readyForDev: string;\n needsReview: string;\n needsQa: string;\n changesRequested: string;\n qaApproved: string;\n ownerPrefix: string;\n batchPrefix: string;\n bounceMarker: string;\n}\n\nexport const DEFAULT_LABELS: LabelConventions = {\n readyForDev: \"ready-for-dev\",\n needsReview: \"needs-review\",\n needsQa: \"needs-qa\",\n changesRequested: \"changes-requested\",\n qaApproved: \"qa-approved\",\n ownerPrefix: \"agent:\",\n batchPrefix: \"qa-batch:\",\n bounceMarker: \"🔁\\\\s*bounce\",\n};\n\n/** Preset column names used as defaults when a board has no obvious match. */\nexport const DEFAULT_SLOTS: BoardSlots = {\n backlog: \"Backlog\",\n ready: \"Todo\",\n in_progress: \"In Progress\",\n in_review: \"In Review\",\n released: \"Ready for PR\",\n done: \"Done\",\n canceled: \"Canceled\",\n};\n\nconst includesAny = (name: string, needles: string[]) =>\n needles.some((n) => name.toLowerCase().includes(n));\n\n/** Best-guess a board state for a slot from the tracker's real states. */\nexport function matchSlot(slot: keyof BoardSlots, states: TrackerState[]): string | undefined {\n const byType = (t: string) => states.find((s) => s.type === t)?.name;\n const byName = (needles: string[]) => states.find((s) => includesAny(s.name, needles))?.name;\n switch (slot) {\n case \"backlog\":\n return byType(\"backlog\") ?? byName([\"backlog\"]);\n case \"ready\":\n return byName([\"to do\", \"todo\", \"ready\"]) ?? byType(\"unstarted\");\n case \"in_progress\":\n return byName([\"in progress\", \"doing\"]) ?? byType(\"started\");\n case \"in_review\":\n return byName([\"review\"]);\n case \"released\":\n return byName([\"ready for pr\", \"ready for release\", \"staging\", \"merged\"]);\n case \"done\":\n return byType(\"completed\") ?? byName([\"done\", \"closed\", \"complete\"]);\n case \"canceled\":\n return byType(\"canceled\") ?? byName([\"cancel\"]);\n }\n}\n\n/** Fill a full BoardSlots from real states, falling back to preset names. */\nexport function defaultSlots(states: TrackerState[]): BoardSlots {\n const out = { ...DEFAULT_SLOTS };\n for (const slot of Object.keys(out) as (keyof BoardSlots)[]) {\n out[slot] = matchSlot(slot, states) ?? DEFAULT_SLOTS[slot];\n }\n return out;\n}\n\n/** Assemble the declarative phaseMapping from chosen slots + label conventions. */\nexport function buildPhaseMapping(slots: BoardSlots, labels: LabelConventions): PhaseMapping {\n return {\n classify: [\n { when: { state: slots.backlog }, phase: \"backlog\" },\n { when: { state: slots.ready, label: labels.readyForDev }, phase: \"ready\" },\n { when: { state: slots.in_progress, label: labels.changesRequested }, phase: \"needs_rework\" },\n { when: { state: slots.in_progress }, phase: \"in_progress\" },\n { when: { state: slots.in_review, label: labels.needsQa }, phase: \"needs_qa\" },\n { when: { state: slots.in_review, label: labels.needsReview }, phase: \"needs_review\" },\n { when: { state: slots.in_review }, phase: \"needs_review\" },\n { when: { state: slots.released }, phase: \"released\" },\n { when: { state: slots.done }, phase: \"done\" },\n { when: { state: slots.canceled }, phase: \"canceled\" },\n ],\n apply: {\n ready: { state: slots.ready, addLabels: [labels.readyForDev], removeLabels: [] },\n in_progress: { state: slots.in_progress, addLabels: [], removeLabels: [labels.readyForDev] },\n needs_review: {\n state: slots.in_review,\n addLabels: [labels.needsReview],\n removeLabels: [labels.changesRequested, labels.needsQa],\n },\n needs_qa: {\n state: slots.in_review,\n addLabels: [labels.needsQa],\n removeLabels: [labels.needsReview],\n },\n needs_rework: {\n state: slots.in_progress,\n addLabels: [labels.changesRequested],\n removeLabels: [labels.needsReview, labels.needsQa],\n },\n released: {\n state: slots.released,\n addLabels: [labels.qaApproved],\n removeLabels: [labels.needsQa],\n },\n done: { state: slots.done, addLabels: [], removeLabels: [] },\n },\n owner: { fromLabelPrefix: labels.ownerPrefix },\n batch: { fromLabelPrefix: labels.batchPrefix },\n bounceMarker: labels.bounceMarker,\n };\n}\n\nexport interface BuildConfigInput {\n name: string;\n tracker: NormaConfig[\"tracker\"];\n runtime: NormaConfig[\"runtime\"];\n workers: string[];\n concurrency: number;\n escalateAtBounces: number;\n roles: NormaConfig[\"roles\"];\n slots: BoardSlots;\n labels: LabelConventions;\n}\n\n/** Assemble a full NormaConfig from the wizard's answers. */\nexport function buildConfig(input: BuildConfigInput): NormaConfig {\n return {\n name: input.name,\n tracker: input.tracker,\n runtime: input.runtime,\n policy: {\n workerTypes: input.workers,\n concurrency: input.concurrency,\n escalateAtBounces: input.escalateAtBounces,\n satisfiedPhases: [\"released\", \"done\"],\n depDonePhases: [\"released\", \"done\", \"canceled\"],\n },\n roles: input.roles,\n phaseMapping: buildPhaseMapping(input.slots, input.labels),\n };\n}\n\n/** Every distinct tracker state name the mapping references (for board provisioning). */\nexport function statesUsed(slots: BoardSlots): string[] {\n return [...new Set(Object.values(slots))];\n}\n\n/** Every label the mapping writes (for board provisioning). */\nexport function labelsUsed(labels: LabelConventions): string[] {\n return [\n labels.readyForDev,\n labels.needsReview,\n labels.needsQa,\n labels.changesRequested,\n labels.qaApproved,\n ];\n}\n","import { writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport * as p from \"@clack/prompts\";\nimport { JiraAdapter } from \"@norma/adapter-jira\";\nimport { LinearAdapter } from \"@norma/adapter-linear\";\nimport { type AgentSpec, type AgentStage, getAgent, writeAgents } from \"@norma/agents\";\nimport { type NormaConfig, parseConfig } from \"@norma/config\";\nimport {\n type TrackerAdapter,\n type TrackerIntrospection,\n type TrackerState,\n canProvisionBoard,\n supportsIntrospection,\n} from \"@norma/tracker\";\nimport type { Command } from \"commander\";\nimport { CONFIG_FILENAME, type ResolvedConfig, findConfigPath } from \"../factory.js\";\nimport {\n type BoardSlots,\n DEFAULT_LABELS,\n buildConfig,\n defaultSlots,\n labelsUsed,\n statesUsed,\n} from \"../mapping.js\";\n\ntype Resolver = () => Promise<ResolvedConfig>;\n\ninterface InitFlags {\n yes: boolean;\n tracker?: string;\n team?: string;\n baseUrl?: string;\n projectKey?: string;\n workers?: string;\n runtime?: string;\n model?: string;\n force: boolean;\n}\n\nconst bail = (msg: string): never => {\n p.cancel(msg);\n process.exit(1);\n};\n\n/** Throw-to-cancel wrapper for clack prompts. */\nfunction check<T>(value: T | symbol): T {\n if (p.isCancel(value)) bail(\"Cancelled.\");\n return value as T;\n}\n\n/** Build the tracker adapter from the collected options, for introspection. */\nfunction makeAdapter(kind: string, opts: Record<string, string | undefined>): TrackerAdapter {\n const bounceMarker = DEFAULT_LABELS.bounceMarker;\n if (kind === \"linear\") return new LinearAdapter({ team: opts.team, bounceMarker });\n if (kind === \"jira\")\n return new JiraAdapter({ baseUrl: opts.baseUrl, projectKey: opts.projectKey, bounceMarker });\n throw new Error(`introspection not supported for tracker \"${kind}\"`);\n}\n\n/** A catalog spec for a role, or a generic spec of the right stage with the role renamed. */\nfunction specForRole(role: string, stage: AgentStage): AgentSpec {\n const exact = getAgent(role);\n if (exact) return exact;\n const generic = {\n worker: \"engineer\",\n review: \"reviewer\",\n qa: \"tester\",\n escalate: \"principal-engineer\",\n }[stage];\n const base = getAgent(generic);\n if (!base) throw new Error(`no catalog fallback for stage ${stage}`);\n return { ...base, role };\n}\n\nexport function registerInit(program: Command, _resolved: Resolver): void {\n program\n .command(\"init\")\n .description(\"interactive onboarding: map your board, pick agents, generate norma.config.json\")\n .option(\"--yes\", \"non-interactive: accept defaults + flags\", false)\n .option(\"--tracker <kind>\", \"linear | jira | memory\")\n .option(\"--team <team>\", \"Linear team key/name\")\n .option(\"--base-url <url>\", \"Jira base URL\")\n .option(\"--project-key <key>\", \"Jira project key\")\n .option(\"--workers <list>\", \"comma-separated worker lanes, e.g. api,web\")\n .option(\"--runtime <kind>\", \"claude-code | echo\")\n .option(\"--model <model>\", \"default model for the runtime\")\n .option(\"--force\", \"overwrite an existing norma.config.json\", false)\n .action((_opts, command: Command) =>\n runInit(command.optsWithGlobals() as unknown as InitFlags),\n );\n}\n\nasync function runInit(flags: InitFlags): Promise<void> {\n const root = process.cwd();\n const configPath = join(root, CONFIG_FILENAME);\n const agentsDir = join(root, \".norma\", \"agents\");\n\n p.intro(\"norma init — set up orchestration for this project\");\n\n const existing = await findConfigPath(root);\n if (existing === configPath && !flags.force) {\n if (flags.yes) bail(`${CONFIG_FILENAME} already exists (use --force to overwrite).`);\n const go = check(\n await p.confirm({ message: `${CONFIG_FILENAME} exists. Overwrite?`, initialValue: false }),\n );\n if (!go) bail(\"Kept the existing config.\");\n }\n\n // --- tracker -------------------------------------------------------------\n const trackerKind = flags.yes\n ? (flags.tracker ?? \"linear\")\n : check(\n await p.select({\n message: \"Which tracker backs this project?\",\n options: [\n { value: \"linear\", label: \"Linear\" },\n { value: \"jira\", label: \"Jira Cloud\" },\n { value: \"memory\", label: \"In-memory (offline / testing)\" },\n ],\n initialValue: (flags.tracker as \"linear\") ?? \"linear\",\n }),\n );\n\n const trackerOptions: Record<string, string | undefined> = {};\n if (trackerKind === \"linear\") {\n trackerOptions.team = flags.yes\n ? (flags.team ?? process.env.LINEAR_TEAM ?? \"Redisco\")\n : check(\n await p.text({\n message: \"Linear team (key or name)\",\n initialValue: flags.team ?? process.env.LINEAR_TEAM ?? \"\",\n }),\n );\n if (!process.env.LINEAR_API_KEY)\n p.log.warn(\"LINEAR_API_KEY not set — set it to enable board introspection and runs.\");\n } else if (trackerKind === \"jira\") {\n trackerOptions.baseUrl = flags.yes\n ? (flags.baseUrl ?? process.env.JIRA_BASE_URL)\n : check(\n await p.text({\n message: \"Jira base URL\",\n initialValue: flags.baseUrl ?? process.env.JIRA_BASE_URL ?? \"\",\n }),\n );\n trackerOptions.projectKey = flags.yes\n ? (flags.projectKey ?? process.env.JIRA_PROJECT)\n : check(\n await p.text({\n message: \"Jira project key\",\n initialValue: flags.projectKey ?? process.env.JIRA_PROJECT ?? \"\",\n }),\n );\n }\n\n // --- introspect the board ------------------------------------------------\n let states: TrackerState[] = [];\n if (trackerKind !== \"memory\") {\n const s = p.spinner();\n try {\n s.start(\"Connecting to the tracker…\");\n const adapter = makeAdapter(trackerKind, trackerOptions);\n const me = await adapter.whoami();\n if (supportsIntrospection(adapter)) states = await adapter.listStates();\n s.stop(`Connected as ${me.name ?? me.id} — found ${states.length} board columns.`);\n } catch (e) {\n s.stop(\n `Could not connect (${e instanceof Error ? e.message : e}). Using preset column names.`,\n );\n }\n }\n\n // --- workers + gates -----------------------------------------------------\n const workers = (\n flags.yes\n ? (flags.workers ?? \"api,web\")\n : check(\n await p.text({\n message: \"Worker lanes (comma-separated)\",\n initialValue: flags.workers ?? \"api,web\",\n }),\n )\n )\n .split(\",\")\n .map((w) => w.trim())\n .filter(Boolean);\n\n const concurrency = flags.yes\n ? 1\n : Number(check(await p.text({ message: \"Max in-flight tasks per worker\", initialValue: \"1\" })));\n const escalateAtBounces = flags.yes\n ? 2\n : Number(\n check(await p.text({ message: \"Escalate a task after N bounces\", initialValue: \"2\" })),\n );\n\n // --- map board columns → phases -----------------------------------------\n const slots = defaultSlots(states);\n if (!flags.yes && states.length) {\n const stateOptions = states.map((s) => ({\n value: s.name,\n label: `${s.name}${s.type ? ` (${s.type})` : \"\"}`,\n }));\n for (const slot of Object.keys(slots) as (keyof BoardSlots)[]) {\n slots[slot] = check(\n await p.select({\n message: `Column for phase \"${slot}\"`,\n options: stateOptions,\n initialValue: slots[slot],\n }),\n );\n }\n }\n\n // --- roles + runtime -----------------------------------------------------\n const worker: Record<string, string> = {};\n for (const w of workers) {\n const guess = getAgent(`${w}-engineer`) ? `${w}-engineer` : \"engineer\";\n worker[w] = flags.yes\n ? guess\n : check(await p.text({ message: `Agent role for lane \"${w}\"`, initialValue: guess }));\n }\n const review = flags.yes\n ? \"code-reviewer\"\n : check(await p.text({ message: \"Reviewer role\", initialValue: \"code-reviewer\" }));\n const qa = flags.yes\n ? \"qa-engineer\"\n : check(await p.text({ message: \"QA role\", initialValue: \"qa-engineer\" }));\n const escalate = flags.yes\n ? \"principal-engineer\"\n : check(await p.text({ message: \"Escalation role\", initialValue: \"principal-engineer\" }));\n\n const runtimeKind = flags.yes\n ? (flags.runtime ?? \"claude-code\")\n : check(\n await p.select({\n message: \"Agent execution runtime\",\n options: [\n { value: \"claude-code\", label: \"Claude Code (claude -p)\" },\n { value: \"echo\", label: \"Echo (offline stub)\" },\n ],\n initialValue: (flags.runtime as \"claude-code\") ?? \"claude-code\",\n }),\n );\n const model =\n flags.model ??\n (flags.yes\n ? undefined\n : check(\n await p.text({\n message: \"Default model (blank = per-agent suggestion)\",\n initialValue: \"\",\n }),\n ) || undefined);\n\n // --- assemble + validate -------------------------------------------------\n const config: NormaConfig = buildConfig({\n name: trackerOptions.team ?? trackerOptions.projectKey ?? \"norma\",\n tracker: {\n kind: trackerKind as NormaConfig[\"tracker\"][\"kind\"],\n options: pruneUndefined(trackerOptions),\n },\n runtime: {\n kind: runtimeKind as NormaConfig[\"runtime\"][\"kind\"],\n options: model ? { model } : {},\n },\n workers,\n concurrency,\n escalateAtBounces,\n roles: { worker, review, qa, escalate },\n slots,\n labels: DEFAULT_LABELS,\n });\n parseConfig(config); // throws if invalid\n\n // --- provision missing board states/labels -------------------------------\n if (trackerKind !== \"memory\" && states.length) {\n try {\n const adapter = makeAdapter(trackerKind, trackerOptions);\n if (canProvisionBoard(adapter) && supportsIntrospection(adapter)) {\n await provision(adapter, slots, flags.yes);\n } else {\n // Read-only board (e.g. Jira statuses are admin-managed): guide manual setup.\n const have = new Set(states.map((s) => s.name.toLowerCase()));\n const missing = statesUsed(slots).filter((s) => !have.has(s.toLowerCase()));\n if (missing.length) {\n p.note(\n [\n \"This tracker can't create statuses automatically. Add these columns/\",\n \"statuses to your board so the pipeline can move cards:\",\n ...missing.map((s) => ` • ${s}`),\n \"(Labels are created automatically or on first use.)\",\n ].join(\"\\n\"),\n \"Manual board setup needed\",\n );\n }\n }\n } catch {\n /* provisioning is best-effort */\n }\n }\n\n // --- write artifacts -----------------------------------------------------\n await writeFile(configPath, `${JSON.stringify(config, null, 2)}\\n`, \"utf8\");\n const roles: [string, AgentStage][] = [\n ...workers.map((w) => [worker[w] as string, \"worker\" as AgentStage] as [string, AgentStage]),\n [review, \"review\"],\n [qa, \"qa\"],\n [escalate, \"escalate\"],\n ];\n const specs = dedupeByRole(roles.map(([role, stage]) => specForRole(role, stage)));\n const written = await writeAgents(agentsDir, specs);\n\n p.note(\n [\n `config: ${configPath}`,\n `agents: ${written.length} file(s) in ${agentsDir}`,\n `tracker: ${trackerKind} · runtime: ${runtimeKind}`,\n `workers: ${workers.join(\", \")}`,\n ].join(\"\\n\"),\n \"Generated\",\n );\n p.outro(\"Next: `norma doctor` to validate, then `norma cycle <projectId>`.\");\n}\n\nfunction pruneUndefined(obj: Record<string, string | undefined>): Record<string, unknown> {\n return Object.fromEntries(Object.entries(obj).filter(([, v]) => v !== undefined));\n}\n\nfunction dedupeByRole(specs: AgentSpec[]): AgentSpec[] {\n const seen = new Map<string, AgentSpec>();\n for (const s of specs) if (!seen.has(s.role)) seen.set(s.role, s);\n return [...seen.values()];\n}\n\nasync function provision(\n adapter: TrackerAdapter & TrackerIntrospection,\n slots: BoardSlots,\n auto: boolean,\n): Promise<void> {\n if (!adapter.createState || !adapter.createLabel) return;\n const haveStates = new Set((await adapter.listStates()).map((s) => s.name.toLowerCase()));\n const haveLabels = new Set((await adapter.listLabels()).map((l) => l.name.toLowerCase()));\n const missingStates = statesUsed(slots).filter((s) => !haveStates.has(s.toLowerCase()));\n const missingLabels = labelsUsed(DEFAULT_LABELS).filter((l) => !haveLabels.has(l.toLowerCase()));\n if (!missingStates.length && !missingLabels.length) return;\n\n if (!auto) {\n const go = check(\n await p.confirm({\n message: `Create ${missingStates.length} state(s) + ${missingLabels.length} label(s) on the board?`,\n initialValue: true,\n }),\n );\n if (!go) return;\n }\n for (const name of missingStates) await adapter.createState({ name });\n for (const name of missingLabels) await adapter.createLabel({ name });\n}\n","import type { NormaConfig } from \"@norma/config\";\nimport { type NormalizedTask, Phase } from \"@norma/core\";\nimport { type TrackerAdapter, normalize } from \"@norma/tracker\";\n\nexport interface ReportData {\n title: string;\n brief?: string;\n url?: string;\n date?: string;\n tasks: Pick<NormalizedTask, \"ref\" | \"title\" | \"owner\" | \"batch\" | \"phase\">[];\n}\n\nconst PHASE_LABEL: Record<Phase, string> = {\n [Phase.BACKLOG]: \"backlog\",\n [Phase.READY]: \"ready\",\n [Phase.IN_PROGRESS]: \"in progress\",\n [Phase.NEEDS_REWORK]: \"rework\",\n [Phase.NEEDS_REVIEW]: \"review\",\n [Phase.NEEDS_QA]: \"qa\",\n [Phase.RELEASED]: \"released\",\n [Phase.DONE]: \"done\",\n [Phase.CANCELED]: \"canceled\",\n};\n\n/**\n * Render the epic delivery report (becomes the PR body). Pure + deterministic;\n * kept concise (grouped by owner lane, then by QA batch). ≤200 lines by design.\n */\nexport function renderReport(data: ReportData): string {\n const lines: string[] = [`# ${data.title} — Delivery Report`, \"\"];\n const meta = [\n data.url ? `**Epic:** ${data.url}` : null,\n data.date ? `**Date:** ${data.date}` : null,\n ]\n .filter(Boolean)\n .join(\" · \");\n if (meta) lines.push(meta, \"\");\n if (data.brief) lines.push(\"## Summary\", data.brief.trim(), \"\");\n\n // What was built — grouped by owner lane.\n lines.push(\"## What was built\");\n const byOwner = new Map<string, ReportData[\"tasks\"]>();\n for (const t of data.tasks) {\n const key = t.owner ?? \"unassigned\";\n const arr = byOwner.get(key) ?? [];\n arr.push(t);\n byOwner.set(key, arr);\n }\n for (const [owner, tasks] of [...byOwner.entries()].sort()) {\n lines.push(\"\", `### ${owner}`);\n for (const t of tasks) lines.push(`- **${t.ref}** ${t.title}`);\n }\n\n // QA batches.\n const byBatch = new Map<string, ReportData[\"tasks\"]>();\n for (const t of data.tasks) {\n if (!t.batch) continue;\n const arr = byBatch.get(t.batch) ?? [];\n arr.push(t);\n byBatch.set(t.batch, arr);\n }\n if (byBatch.size) {\n lines.push(\"\", \"## QA batches\");\n for (const [batch, tasks] of [...byBatch.entries()].sort()) {\n lines.push(`- **${batch}** — ${tasks.map((t) => t.ref).join(\", \")}`);\n }\n }\n\n // Status line.\n const counts = new Map<Phase, number>();\n for (const t of data.tasks) counts.set(t.phase, (counts.get(t.phase) ?? 0) + 1);\n const status = [...counts.entries()].map(([p, n]) => `${PHASE_LABEL[p]}: ${n}`).join(\" · \");\n lines.push(\"\", \"## Status\", status, \"\");\n return `${lines.join(\"\\n\")}\\n`;\n}\n\n/** Fetch the tracker's issues and shape them into report data. */\nexport async function gatherReportData(\n tracker: TrackerAdapter,\n config: NormaConfig,\n projectId: string,\n opts: { title: string; brief?: string; date?: string } = { title: projectId },\n): Promise<ReportData> {\n const raw = await tracker.listIssues({ projectId });\n const tasks = normalize(raw, config.phaseMapping).map((t) => ({\n ref: t.ref,\n title: t.title,\n owner: t.owner,\n batch: t.batch,\n phase: t.phase,\n }));\n return { title: opts.title, brief: opts.brief, date: opts.date, tasks };\n}\n","import { spawn } from \"node:child_process\";\nimport type { Command } from \"commander\";\nimport { type ResolvedConfig, makeContext, makeTracker } from \"../factory.js\";\nimport { gatherReportData, renderReport } from \"../report.js\";\n\ntype Resolver = () => Promise<ResolvedConfig>;\n\n/** Build the epic report from the tracker + context and write it to .norma/epics/<slug>/report.md. */\nexport async function writeEpicReport(\n r: ResolvedConfig,\n projectId: string,\n slug: string,\n): Promise<{ path: string; body: string }> {\n const tracker = makeTracker(r.config);\n const context = makeContext(r.contextRoot);\n const brief = (await context.readBrief(slug)) ?? undefined;\n const date = new Date().toISOString().slice(0, 10);\n const data = await gatherReportData(tracker, r.config, projectId, { title: slug, brief, date });\n const body = renderReport(data);\n await context.writeReport(slug, body);\n return { path: `${r.contextRoot}/epics/${slug}/report.md`, body };\n}\n\n/** Open a PR whose body is the report (best-effort; requires gh + a pushed branch). */\nexport function openPullRequest(\n bodyFile: string,\n opts: { title: string; base?: string; cwd?: string },\n): Promise<number> {\n const args = [\n \"pr\",\n \"create\",\n \"--title\",\n opts.title,\n \"--body-file\",\n bodyFile,\n \"--base\",\n opts.base ?? \"main\",\n ];\n return new Promise((resolve) => {\n const child = spawn(\"gh\", args, { cwd: opts.cwd ?? process.cwd(), stdio: \"inherit\" });\n child.on(\"error\", () => resolve(1));\n child.on(\"close\", (code) => resolve(code ?? 1));\n });\n}\n\n/** `norma report <projectId> --slug <slug>` — (re)generate the delivery report on demand. */\nexport function registerReport(program: Command, resolved: Resolver): void {\n program\n .command(\"report\")\n .argument(\"<projectId>\", \"tracker project/epic id\")\n .requiredOption(\"--slug <slug>\", \"epic slug (where the report is written)\")\n .description(\"generate the epic delivery report (report.md) from the tracker + context\")\n .action(async (projectId: string, opts: { slug: string }) => {\n const r = await resolved();\n const { path } = await writeEpicReport(r, projectId, opts.slug);\n console.log(`wrote ${path}`);\n });\n}\n","/** The live dashboard — a self-contained page (no external deps) that polls\n * /api/state, draws the task DAG in columns by phase, animates nodes as they\n * change phase, and highlights in-flight + \"what's next\". Served at `/`. */\nexport const DASHBOARD_HTML = /* html */ `<!doctype html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n<title>Norma — live</title>\n<style>\n :root {\n /* shadcn \"stone\" (neutral) dark tokens */\n --bg: oklch(0.145 0 0); --panel: oklch(0.205 0 0); --line: oklch(1 0 0 / 10%);\n --text: oklch(0.985 0 0); --muted: oklch(0.708 0 0);\n --primary: oklch(0.922 0 0); --primary-fg: oklch(0.205 0 0);\n --backlog:#78716c; --ready:#3b82f6; --in_progress:#f59e0b; --needs_rework:#ef4444;\n --needs_review:#a855f7; --needs_qa:#14b8a6; --released:#22c55e; --done:#15803d; --canceled:#57534e;\n }\n * { box-sizing: border-box; }\n body { margin:0; background:var(--bg); color:var(--text); font:14px/1.4 ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif; }\n header { display:flex; align-items:center; gap:16px; padding:12px 18px; border-bottom:1px solid var(--line); background:var(--panel); position:sticky; top:0; z-index:5; }\n header h1 { font-size:15px; margin:0; letter-spacing:.3px; }\n header h1 b { color:var(--released); }\n .spacer { flex:1; }\n button { background:#1c2333; color:var(--text); border:1px solid var(--line); border-radius:8px; padding:7px 12px; cursor:pointer; font-size:13px; }\n button:hover { border-color:#39415a; }\n button.primary { background:var(--primary); border-color:var(--primary); color:var(--primary-fg); font-weight:600; }\n #status { color:var(--muted); font-size:13px; }\n #status b { color:var(--text); }\n .cols { display:grid; grid-auto-flow:column; grid-auto-columns:minmax(150px,1fr); gap:0; padding:0 8px; }\n .col-h { position:sticky; top:49px; background:var(--bg); padding:10px 8px 6px; font-size:11px; text-transform:uppercase; letter-spacing:.6px; color:var(--muted); border-bottom:1px solid var(--line); text-align:center; z-index:4; }\n .col-h .dot { display:inline-block; width:8px; height:8px; border-radius:50%; margin-right:6px; vertical-align:middle; }\n #graph { position:relative; }\n #edges { position:absolute; inset:0; width:100%; height:100%; pointer-events:none; z-index:1; }\n .node { position:absolute; z-index:2; width:132px; padding:8px 10px; border-radius:10px; background:var(--panel);\n border:1px solid var(--line); border-left:4px solid var(--muted);\n transition: transform .6s cubic-bezier(.4,0,.2,1), border-color .3s, box-shadow .3s; will-change:transform; }\n .node .ref { font-weight:700; font-size:12px; }\n .node .title { color:var(--muted); font-size:11px; margin-top:2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }\n .node .owner { display:inline-block; margin-top:6px; font-size:10px; color:var(--muted); border:1px solid var(--line); border-radius:6px; padding:1px 6px; }\n .node.inflight { box-shadow:0 0 0 2px rgba(245,158,11,.5); animation:pulse 1.4s ease-in-out infinite; }\n .node.next { box-shadow:0 0 0 2px rgba(59,130,246,.7), 0 0 18px rgba(59,130,246,.35); }\n .node .tag { position:absolute; top:-9px; right:-6px; font-size:9px; background:var(--ready); color:#04122b; border-radius:6px; padding:1px 6px; font-weight:700; text-transform:uppercase; }\n @keyframes pulse { 0%,100%{ box-shadow:0 0 0 2px rgba(245,158,11,.5);} 50%{ box-shadow:0 0 0 4px rgba(245,158,11,.15);} }\n .banner { margin:10px 18px; padding:10px 14px; border-radius:10px; background:rgba(34,197,94,.12); border:1px solid rgba(34,197,94,.4); color:var(--released); display:none; }\n .banner.show { display:block; }\n</style>\n</head>\n<body>\n<header>\n <h1><b>norma</b> · live</h1>\n <button id=\"play\" class=\"primary\">▶ auto</button>\n <button id=\"step\">step</button>\n <div id=\"status\">connecting…</div>\n <div class=\"spacer\"></div>\n <div id=\"proj\" style=\"color:var(--muted)\"></div>\n</header>\n<div id=\"done\" class=\"banner\">🏁 epic complete — every task released.</div>\n<div class=\"col-h cols\" id=\"heads\"></div>\n<div id=\"graph\"><svg id=\"edges\"><defs>\n <marker id=\"arrow\" viewBox=\"0 0 10 10\" refX=\"9\" refY=\"5\" markerWidth=\"7\" markerHeight=\"7\" orient=\"auto-start-reverse\">\n <path d=\"M0,0 L10,5 L0,10 z\" fill=\"#39415a\"/></marker>\n</defs></svg></div>\n\n<script>\nconst PHASES = [\"backlog\",\"ready\",\"in_progress\",\"needs_rework\",\"needs_review\",\"needs_qa\",\"released\",\"done\"];\nconst LABEL = { backlog:\"Backlog\", ready:\"Ready\", in_progress:\"In progress\", needs_rework:\"Rework\", needs_review:\"Review\", needs_qa:\"QA\", released:\"Released\", done:\"Done\" };\nconst COLW = 150, NODE_H = 70, TOP = 8, GAP = 12;\nconst colIndex = (p) => { const i = PHASES.indexOf(p); return i < 0 ? PHASES.indexOf(\"done\") : i; };\nconst nodes = new Map();\nlet playing = false, timer = null;\n\nconst heads = document.getElementById(\"heads\");\nPHASES.forEach((p) => {\n const d = document.createElement(\"div\"); d.className = \"col-h\";\n d.innerHTML = '<span class=\"dot\" style=\"background:var(--'+p+')\"></span>' + LABEL[p];\n heads.appendChild(d);\n});\n\nconst graph = document.getElementById(\"graph\");\nconst svg = document.getElementById(\"edges\");\n\nfunction render(state) {\n document.getElementById(\"proj\").textContent = state.project || \"\";\n const seen = new Set();\n const rows = {}; // phase -> next row\n const nextSet = new Set(state.next || []);\n const inflightSet = new Set(Object.values(state.inFlight || {}).flat());\n const actionByRef = {};\n for (const a of state.actions || []) for (const r of a.refs) actionByRef[r] = a.kind;\n\n // stable order: by ref number\n const sorted = [...state.tasks].sort((a,b)=> (parseInt((a.ref.match(/\\\\d+/)||[0])[0]) - parseInt((b.ref.match(/\\\\d+/)||[0])[0])));\n for (const t of sorted) {\n seen.add(t.ref);\n let n = nodes.get(t.ref);\n if (!n) {\n n = document.createElement(\"div\"); n.className = \"node\"; n.dataset.ref = t.ref;\n n.innerHTML = '<div class=\"ref\"></div><div class=\"title\"></div><span class=\"owner\"></span><span class=\"tag\"></span>';\n graph.appendChild(n); nodes.set(t.ref, n);\n }\n n.querySelector(\".ref\").textContent = t.ref;\n n.querySelector(\".title\").textContent = t.title;\n n.title = t.title;\n const owner = n.querySelector(\".owner\"); owner.textContent = t.owner || \"—\";\n n.style.borderLeftColor = \"var(--\"+t.phase+\")\";\n const ci = colIndex(t.phase);\n const row = rows[ci] = (rows[ci] ?? 0);\n rows[ci] = row + 1;\n const x = ci * COLW + 12, y = TOP + row * (NODE_H + GAP) + 34;\n n.style.transform = \"translate(\"+x+\"px,\"+y+\"px)\";\n n.classList.toggle(\"inflight\", inflightSet.has(t.ref));\n n.classList.toggle(\"next\", nextSet.has(t.ref));\n const tag = n.querySelector(\".tag\");\n if (nextSet.has(t.ref)) { tag.style.display=\"block\"; tag.textContent = actionByRef[t.ref] || \"next\"; }\n else tag.style.display = \"none\";\n }\n for (const [ref, n] of nodes) if (!seen.has(ref)) { n.remove(); nodes.delete(ref); }\n\n const maxRows = Math.max(1, ...Object.values(rows));\n graph.style.height = (TOP + 34 + maxRows * (NODE_H + GAP) + 20) + \"px\";\n window._edges = state.edges || [];\n\n const c = state.counts || {};\n document.getElementById(\"status\").innerHTML =\n \"<b>\" + state.tasks.length + \"</b> tasks · \" +\n PHASES.filter(p=>c[p]).map(p=> LABEL[p]+\": \"+c[p]).join(\" · \");\n document.getElementById(\"done\").classList.toggle(\"show\", !!state.complete);\n if (state.complete) stop();\n}\n\nfunction drawEdges() {\n const edges = window._edges || [];\n const box = graph.getBoundingClientRect();\n const lines = edges.map((e) => {\n const a = nodes.get(e.from), b = nodes.get(e.to);\n if (!a || !b) return \"\";\n const ra = a.getBoundingClientRect(), rb = b.getBoundingClientRect();\n const x1 = ra.right - box.left, y1 = ra.top - box.top + ra.height/2;\n const x2 = rb.left - box.left, y2 = rb.top - box.top + rb.height/2;\n const mx = (x1+x2)/2;\n return '<path d=\"M'+x1+','+y1+' C'+mx+','+y1+' '+mx+','+y2+' '+x2+','+y2+'\" fill=\"none\" stroke=\"#39415a\" stroke-width=\"1.5\" marker-end=\"url(#arrow)\"/>';\n });\n svg.innerHTML = svg.querySelector(\"defs\").outerHTML + lines.join(\"\");\n requestAnimationFrame(drawEdges);\n}\n\nasync function refresh() {\n try { const r = await fetch(\"/api/state\"); render(await r.json()); }\n catch (e) { document.getElementById(\"status\").textContent = \"disconnected\"; }\n}\nasync function stepOnce() {\n try { const r = await fetch(\"/api/step\", { method:\"POST\" }); render(await r.json()); }\n catch (e) {}\n}\nfunction play() { playing = true; document.getElementById(\"play\").textContent = \"⏸ pause\"; timer = setInterval(stepOnce, 1300); }\nfunction stop() { playing = false; document.getElementById(\"play\").textContent = \"▶ auto\"; if (timer) clearInterval(timer); timer = null; }\ndocument.getElementById(\"play\").onclick = () => playing ? stop() : play();\ndocument.getElementById(\"step\").onclick = stepOnce;\n\nrefresh();\nsetInterval(() => { if (!playing) refresh(); }, 2500);\nrequestAnimationFrame(drawEdges);\n</script>\n</body>\n</html>`;\n","import { type NormaConfig, toPlanContext } from \"@norma/config\";\nimport { type Intent, type Phase, computePlan } from \"@norma/core\";\nimport { type TrackerAdapter, normalize } from \"@norma/tracker\";\n\nexport interface DashboardTask {\n id: string;\n ref: string;\n title: string;\n phase: Phase;\n owner: string | null;\n batch: string | null;\n}\n\nexport interface DashboardEdge {\n /** blocker ref → dependent ref */\n from: string;\n to: string;\n}\n\nexport interface DashboardAction {\n kind: Intent[\"kind\"];\n refs: string[];\n}\n\nexport interface DashboardState {\n tasks: DashboardTask[];\n edges: DashboardEdge[];\n actions: DashboardAction[];\n /** Refs the engine is about to act on this cycle (\"what's next\"). */\n next: string[];\n inFlight: Record<string, string[]>;\n complete: boolean;\n counts: Record<string, number>;\n}\n\nconst refsOf = (a: Intent): string[] => {\n switch (a.kind) {\n case \"promote\":\n case \"dispatch\":\n case \"review\":\n case \"rework\":\n case \"escalate\":\n return [a.task.ref];\n case \"qa\":\n return a.tasks.map((t) => t.ref);\n default:\n return [];\n }\n};\n\n/** Read the tracker and shape a snapshot for the dashboard: the task graph + what's next. */\nexport async function buildState(\n tracker: TrackerAdapter,\n config: NormaConfig,\n projectId: string,\n): Promise<DashboardState> {\n const raw = await tracker.listIssues({ projectId });\n const tasks = normalize(raw, config.phaseMapping);\n const plan = computePlan(tasks, toPlanContext(config));\n\n const byRef = new Map(tasks.map((t) => [t.ref, t]));\n const edges: DashboardEdge[] = [];\n for (const t of tasks) {\n for (const b of t.blockedBy) {\n if (byRef.has(b.ref)) edges.push({ from: b.ref, to: t.ref });\n }\n }\n\n const actions: DashboardAction[] = plan.actions.map((a) => ({ kind: a.kind, refs: refsOf(a) }));\n const next = [...new Set(actions.flatMap((a) => a.refs))];\n const counts: Record<string, number> = {};\n for (const t of tasks) counts[t.phase] = (counts[t.phase] ?? 0) + 1;\n\n return {\n tasks: tasks.map((t) => ({\n id: t.id,\n ref: t.ref,\n title: t.title,\n phase: t.phase,\n owner: t.owner,\n batch: t.batch,\n })),\n edges,\n actions,\n next,\n inFlight: plan.inFlight,\n complete: plan.complete,\n counts,\n };\n}\n","import { existsSync, readFileSync } from \"node:fs\";\nimport { type Server, type ServerResponse, createServer } from \"node:http\";\nimport { basename, extname, join } from \"node:path\";\nimport type { NormaConfig } from \"@norma/config\";\nimport { Orchestrator, type OrchestratorDeps, type RunCycleInput } from \"@norma/orchestrator\";\nimport type { TrackerAdapter } from \"@norma/tracker\";\nimport { DASHBOARD_HTML } from \"./dashboard.js\";\nimport { buildState } from \"./state.js\";\n\nexport interface NormaServerOptions extends OrchestratorDeps {\n projectId: string;\n slug?: string;\n worktree?: string;\n /** Plan/execute only? When true, /api/step still runs (real work). Default false. */\n dryRun?: boolean;\n /**\n * Path to a built web client (apps/web/dist). When it has an index.html, that\n * shadcn/TanStack SPA is served at `/`; otherwise the zero-dep inline dashboard is.\n */\n webDist?: string;\n}\n\nconst MIME: Record<string, string> = {\n \".js\": \"text/javascript\",\n \".css\": \"text/css\",\n \".html\": \"text/html; charset=utf-8\",\n \".svg\": \"image/svg+xml\",\n \".map\": \"application/json\",\n \".json\": \"application/json\",\n \".ico\": \"image/x-icon\",\n \".woff2\": \"font/woff2\",\n};\n\n/**\n * A tiny HTTP surface over the engine + orchestrator (no external deps). Serves\n * the live dashboard at `/`, the graph snapshot at `/api/state`, and advances the\n * epic one action at a time via `POST /api/step` — so the UI shows the graph move.\n */\nexport function createNormaServer(opts: NormaServerOptions): Server {\n const { tracker, config, projectId } = opts;\n const orch = new Orchestrator(opts);\n const runInput: RunCycleInput = {\n projectId,\n slug: opts.slug,\n worktree: opts.worktree,\n dryRun: opts.dryRun,\n };\n\n const state = async () => ({\n project: projectId,\n ...(await buildState(tracker, config, projectId)),\n });\n const json = (res: ServerResponse, body: unknown) => {\n res.writeHead(200, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify(body));\n };\n\n const indexHtml = opts.webDist ? join(opts.webDist, \"index.html\") : undefined;\n const hasWeb = !!indexHtml && existsSync(indexHtml);\n const sendFile = (res: ServerResponse, path: string) => {\n res.writeHead(200, { \"Content-Type\": MIME[extname(path)] ?? \"application/octet-stream\" });\n res.end(readFileSync(path));\n };\n\n return createServer(async (req, res) => {\n try {\n const url = (req.url ?? \"/\").split(\"?\")[0] ?? \"/\";\n // Serve the built web client (SPA) when present.\n if (hasWeb && req.method === \"GET\" && url.startsWith(\"/assets/\")) {\n const file = join(opts.webDist as string, \"assets\", basename(url));\n if (existsSync(file)) return sendFile(res, file);\n }\n if (req.method === \"GET\" && url === \"/\") {\n if (hasWeb) return sendFile(res, indexHtml as string);\n res.writeHead(200, { \"Content-Type\": \"text/html; charset=utf-8\" });\n res.end(DASHBOARD_HTML);\n return;\n }\n if (req.method === \"GET\" && url === \"/api/state\") return json(res, await state());\n if (req.method === \"POST\" && url === \"/api/step\") {\n await orch.step(runInput);\n return json(res, await state());\n }\n res.writeHead(404, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ error: \"not found\" }));\n } catch (e) {\n res.writeHead(500, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ error: e instanceof Error ? e.message : String(e) }));\n }\n });\n}\n\nexport type { NormaConfig, TrackerAdapter };\n","import { existsSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport { EchoRunner } from \"@norma/agent-runtime\";\nimport { createNormaServer } from \"@norma/server\";\nimport { MemoryTracker, type RawIssue } from \"@norma/tracker\";\nimport type { Command } from \"commander\";\nimport { type ResolvedConfig, makeContext, makeRunner, makeTracker } from \"../factory.js\";\n\ntype Resolver = () => Promise<ResolvedConfig>;\n\n/** Locate a built web client (apps/web/dist) to serve the shadcn SPA, if present. */\nfunction findWebDist(explicit?: string): string | undefined {\n const candidates = [explicit, resolve(process.cwd(), \"apps/web/dist\")].filter(\n Boolean,\n ) as string[];\n return candidates.find((c) => existsSync(resolve(c, \"index.html\")));\n}\n\nconst DEMO_SEED: RawIssue[] = [\n {\n id: \"iss-1\",\n ref: \"DEMO-1\",\n title: \"API endpoint\",\n state: \"Backlog\",\n labels: [\"agent:api\", \"qa-batch:1\", \"harness\"],\n blockedBy: [],\n order: 1,\n },\n {\n id: \"iss-2\",\n ref: \"DEMO-2\",\n title: \"Web page\",\n state: \"Backlog\",\n labels: [\"agent:web\", \"qa-batch:2\", \"harness\"],\n blockedBy: [{ id: \"iss-1\", ref: \"DEMO-1\", state: \"Backlog\" }],\n order: 2,\n },\n {\n id: \"iss-3\",\n ref: \"DEMO-3\",\n title: \"Admin widget\",\n state: \"Backlog\",\n labels: [\"agent:web\", \"qa-batch:3\", \"harness\"],\n blockedBy: [{ id: \"iss-1\", ref: \"DEMO-1\", state: \"Backlog\" }],\n order: 3,\n },\n];\n\n/** `norma serve` — a live dashboard that shows the task graph move as the epic runs. */\nexport function registerServe(program: Command, resolved: Resolver): void {\n program\n .command(\"serve\")\n .argument(\"[projectId]\", \"tracker project/epic id (omit with --demo)\")\n .description(\"start the live graph dashboard (watch the epic advance in the browser)\")\n .option(\"--demo\", \"run offline with a seeded in-memory epic + echo agents\", false)\n .option(\"--port <n>\", \"port\", \"4680\")\n .option(\"--slug <slug>\", \"epic slug for durable context\")\n .option(\"--worktree <path>\", \"worktree handed to agents\")\n .option(\"--web <dir>\", \"path to a built web client (apps/web/dist) to serve the shadcn SPA\")\n .action(\n async (\n projectId: string | undefined,\n opts: { demo: boolean; port: string; slug?: string; worktree?: string; web?: string },\n ) => {\n const r = await resolved();\n const port = Number(opts.port);\n const webDist = findWebDist(opts.web);\n\n let server: ReturnType<typeof createNormaServer>;\n if (opts.demo) {\n const tracker = new MemoryTracker({\n seed: DEMO_SEED,\n bounceMarker: r.config.phaseMapping.bounceMarker,\n });\n server = createNormaServer({\n config: r.config,\n tracker,\n runner: new EchoRunner(),\n projectId: \"demo\",\n webDist,\n });\n } else {\n if (!projectId) throw new Error(\"provide a projectId (or use --demo)\");\n const tracker = makeTracker(r.config);\n server = createNormaServer({\n config: r.config,\n tracker,\n runner: makeRunner(r.config, r.agentsDir, tracker),\n context: makeContext(r.contextRoot),\n webDist,\n projectId,\n slug: opts.slug,\n worktree: opts.worktree,\n });\n }\n\n server.listen(port, () => {\n console.error(\n `▸ norma dashboard on http://localhost:${port} ${opts.demo ? \"(demo)\" : projectId}`,\n );\n console.error(\" open it, then hit ▶ auto (or 'step') to watch the graph move.\");\n });\n },\n );\n}\n","import { ALL_PHASES, type Phase } from \"@norma/core\";\nimport { normalize } from \"@norma/tracker\";\nimport type { Command } from \"commander\";\nimport { type ResolvedConfig, makeTracker } from \"../factory.js\";\n\ntype Resolver = () => Promise<ResolvedConfig>;\n\nexport interface StatusRow {\n ref: string;\n phase: Phase;\n owner: string | null;\n batch: string | null;\n title: string;\n}\n\nconst pad = (s: string, n: number) => s.padEnd(n);\n\n/** Render a per-task status table + a phase-count summary (pure, deterministic). */\nexport function renderStatus(rows: StatusRow[]): string {\n if (!rows.length) return \"no tasks in this project.\";\n const cols = {\n ref: Math.max(3, ...rows.map((r) => r.ref.length)),\n phase: Math.max(5, ...rows.map((r) => r.phase.length)),\n owner: Math.max(5, ...rows.map((r) => (r.owner ?? \"—\").length)),\n batch: Math.max(5, ...rows.map((r) => (r.batch ?? \"—\").length)),\n };\n const lines = rows.map(\n (r) =>\n `${pad(r.ref, cols.ref)} ${pad(r.phase, cols.phase)} ${pad(r.owner ?? \"—\", cols.owner)} ${pad(\n r.batch ?? \"—\",\n cols.batch,\n )} ${r.title}`,\n );\n const counts = new Map<Phase, number>();\n for (const r of rows) counts.set(r.phase, (counts.get(r.phase) ?? 0) + 1);\n const summary = ALL_PHASES.filter((p) => counts.has(p))\n .map((p) => `${p}: ${counts.get(p)}`)\n .join(\" · \");\n return `${lines.join(\"\\n\")}\\n\\n${rows.length} tasks · ${summary}`;\n}\n\n/** `norma status <projectId>` — the board at a glance. */\nexport function registerStatus(program: Command, resolved: Resolver): void {\n program\n .command(\"status\")\n .argument(\"<projectId>\", \"tracker project/epic id\")\n .option(\"--json\", \"print the normalized tasks as JSON\", false)\n .description(\"show per-task status (ref · phase · owner · batch · title)\")\n .action(async (projectId: string, opts: { json: boolean }) => {\n const { config } = await resolved();\n const tracker = makeTracker(config);\n const raw = await tracker.listIssues({ projectId });\n const tasks = normalize(raw, config.phaseMapping);\n const rows: StatusRow[] = tasks\n .slice()\n .sort((a, b) => a.order - b.order)\n .map((t) => ({\n ref: t.ref,\n phase: t.phase,\n owner: t.owner,\n batch: t.batch,\n title: t.title,\n }));\n console.log(opts.json ? JSON.stringify(rows, null, 2) : renderStatus(rows));\n });\n}\n","import { execFile } from \"node:child_process\";\nimport { access } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { promisify } from \"node:util\";\n\nconst run = promisify(execFile);\n\n/** Branch name for an epic. */\nexport const branchFor = (slug: string): string => `epic/${slug}`;\n\n/** Worktree path for an epic, under the repo's .norma/worktrees. */\nexport const worktreePathFor = (repoRoot: string, slug: string): string =>\n join(repoRoot, \".norma\", \"worktrees\", `epic-${slug}`);\n\nasync function git(repoRoot: string, args: string[]): Promise<string> {\n const { stdout } = await run(\"git\", [\"-C\", repoRoot, ...args]);\n return stdout.trim();\n}\n\nexport async function isGitRepo(dir: string): Promise<boolean> {\n try {\n await git(dir, [\"rev-parse\", \"--is-inside-work-tree\"]);\n return true;\n } catch {\n return false;\n }\n}\n\nasync function pathExists(p: string): Promise<boolean> {\n try {\n await access(p);\n return true;\n } catch {\n return false;\n }\n}\n\nexport async function currentBranch(repoRoot: string): Promise<string | undefined> {\n try {\n return (await git(repoRoot, [\"rev-parse\", \"--abbrev-ref\", \"HEAD\"])) || undefined;\n } catch {\n return undefined;\n }\n}\n\nasync function branchExists(repoRoot: string, branch: string): Promise<boolean> {\n try {\n await git(repoRoot, [\"rev-parse\", \"--verify\", \"--quiet\", branch]);\n return true;\n } catch {\n return false;\n }\n}\n\nexport interface EnsureWorktreeResult {\n path: string;\n branch: string;\n created: boolean;\n}\n\n/**\n * Create (or reuse) a git worktree for an epic at .norma/worktrees/epic-<slug>\n * on branch epic/<slug>. Idempotent: reuses the dir/branch if they already exist.\n */\nexport async function ensureWorktree(opts: {\n repoRoot: string;\n slug: string;\n base?: string;\n}): Promise<EnsureWorktreeResult> {\n const { repoRoot, slug } = opts;\n if (!(await isGitRepo(repoRoot))) {\n throw new Error(`${repoRoot} is not a git repository — cannot create a worktree`);\n }\n const path = worktreePathFor(repoRoot, slug);\n const branch = branchFor(slug);\n if (await pathExists(path)) return { path, branch, created: false };\n\n const base = opts.base ?? (await currentBranch(repoRoot)) ?? \"main\";\n if (await branchExists(repoRoot, branch)) {\n await git(repoRoot, [\"worktree\", \"add\", path, branch]);\n } else {\n await git(repoRoot, [\"worktree\", \"add\", \"-b\", branch, path, base]);\n }\n return { path, branch, created: true };\n}\n\n/** Remove an epic's worktree (best-effort). */\nexport async function removeWorktree(repoRoot: string, slug: string): Promise<void> {\n await git(repoRoot, [\"worktree\", \"remove\", worktreePathFor(repoRoot, slug), \"--force\"]);\n}\n","import type { Command } from \"commander\";\nimport type { ResolvedConfig } from \"../factory.js\";\nimport { ensureWorktree, removeWorktree, worktreePathFor } from \"../git.js\";\n\ntype Resolver = () => Promise<ResolvedConfig>;\n\n/** `norma worktree create|remove|path <slug>` — manage per-epic git worktrees. */\nexport function registerWorktree(program: Command, resolved: Resolver): void {\n const cmd = program.command(\"worktree\").description(\"manage per-epic git worktrees\");\n\n cmd\n .command(\"create\")\n .argument(\"<slug>\", \"epic slug\")\n .option(\"--base <branch>\", \"base branch to fork from (default: current branch)\")\n .description(\"create (or reuse) .norma/worktrees/epic-<slug> on branch epic/<slug>\")\n .action(async (slug: string, opts: { base?: string }) => {\n const r = await resolved();\n const res = await ensureWorktree({ repoRoot: r.root, slug, base: opts.base });\n console.log(`${res.created ? \"created\" : \"reused\"} ${res.path} (branch ${res.branch})`);\n });\n\n cmd\n .command(\"remove\")\n .argument(\"<slug>\", \"epic slug\")\n .description(\"remove the epic's worktree\")\n .action(async (slug: string) => {\n const r = await resolved();\n await removeWorktree(r.root, slug);\n console.log(`removed ${worktreePathFor(r.root, slug)}`);\n });\n\n cmd\n .command(\"path\")\n .argument(\"<slug>\", \"epic slug\")\n .description(\"print the epic's worktree path\")\n .action(async (slug: string) => {\n const r = await resolved();\n console.log(worktreePathFor(r.root, slug));\n });\n}\n","import { appendFile, mkdir } from \"node:fs/promises\";\nimport { dirname, join } from \"node:path\";\nimport { EchoRunner } from \"@norma/agent-runtime\";\nimport { type NormaConfig, toPlanContext } from \"@norma/config\";\nimport { Phase, computePlan } from \"@norma/core\";\nimport { Orchestrator } from \"@norma/orchestrator\";\nimport { MemoryTracker, type RawIssue, applyFor, normalize } from \"@norma/tracker\";\nimport { Command } from \"commander\";\nimport { registerAgents } from \"./commands/agents.js\";\nimport { registerDoctor } from \"./commands/doctor.js\";\nimport { registerEpic } from \"./commands/epic.js\";\nimport { registerInit } from \"./commands/init.js\";\nimport { openPullRequest, registerReport, writeEpicReport } from \"./commands/report.js\";\nimport { registerServe } from \"./commands/serve.js\";\nimport { registerStatus } from \"./commands/status.js\";\nimport { registerWorktree } from \"./commands/worktree.js\";\nimport {\n type ResolvedConfig,\n makeContext,\n makeRunner,\n makeTracker,\n resolveConfig,\n} from \"./factory.js\";\nimport { ensureWorktree } from \"./git.js\";\n\ninterface GlobalOpts {\n config?: string;\n tracker?: string;\n runtime?: string;\n}\n\nconst program = new Command();\nprogram\n .name(\"norma\")\n .description(\"Norma — provider-agnostic orchestration for AI agent pipelines\")\n .version(\"0.1.0\")\n .option(\n \"-c, --config <path>\",\n \"path to a norma config JSON (default: discover norma.config.json)\",\n )\n .option(\"--tracker <kind>\", \"override tracker kind (linear|jira|memory)\")\n .option(\"--runtime <kind>\", \"override agent runtime (claude-code|echo)\");\n\n/** Append a one-line JSON run record for observability (.norma/logs/runs.jsonl). */\nasync function logRun(contextRoot: string, record: Record<string, unknown>): Promise<void> {\n const path = join(contextRoot, \"logs\", \"runs.jsonl\");\n await mkdir(dirname(path), { recursive: true });\n await appendFile(\n path,\n `${JSON.stringify({ ts: new Date().toISOString(), ...record })}\\n`,\n \"utf8\",\n );\n}\n\n/** Resolve config (discovery + overrides) shared by every command. */\nexport async function resolved(): Promise<ResolvedConfig> {\n const g = program.opts<GlobalOpts>();\n const r = await resolveConfig(g.config);\n if (g.tracker)\n r.config.tracker = { ...r.config.tracker, kind: g.tracker as NormaConfig[\"tracker\"][\"kind\"] };\n if (g.runtime)\n r.config.runtime = { ...r.config.runtime, kind: g.runtime as NormaConfig[\"runtime\"][\"kind\"] };\n return r;\n}\n\nprogram\n .command(\"whoami\")\n .description(\"verify tracker credentials and print the acting identity\")\n .action(async () => {\n const { config } = await resolved();\n const tracker = makeTracker(config);\n const me = await tracker.whoami();\n console.log(JSON.stringify({ tracker: tracker.kind, ...me }, null, 2));\n });\n\nprogram\n .command(\"plan\")\n .argument(\"<projectId>\", \"tracker project/epic id\")\n .description(\"print the deterministic engine plan (no writes)\")\n .action(async (projectId: string) => {\n const { config } = await resolved();\n const tracker = makeTracker(config);\n const raw = await tracker.listIssues({ projectId });\n const tasks = normalize(raw, config.phaseMapping);\n const plan = computePlan(tasks, toPlanContext(config));\n console.log(JSON.stringify(plan, null, 2));\n });\n\nprogram\n .command(\"cycle\")\n .argument(\"<projectId>\", \"tracker project/epic id\")\n .description(\"run one operator cycle (plan → execute → write-back → re-plan)\")\n .option(\"--slug <slug>\", \"epic slug for durable context lookups\")\n .option(\"--worktree <path>\", \"worktree path handed to agents\")\n .option(\"--max-steps <n>\", \"safety cap on loop iterations\", \"100\")\n .option(\"--dry-run\", \"plan only — no writes, no agent runs\", false)\n .option(\"--pr\", \"on completion, open a PR with the generated report as its body\", false)\n .option(\"--auto-worktree\", \"create/reuse a git worktree for the epic and run agents in it\", false)\n .action(\n async (\n projectId: string,\n opts: {\n slug?: string;\n worktree?: string;\n maxSteps: string;\n dryRun: boolean;\n pr: boolean;\n autoWorktree: boolean;\n },\n ) => {\n const r = await resolved();\n let worktree = opts.worktree;\n if (opts.autoWorktree) {\n if (!opts.slug) throw new Error(\"--auto-worktree requires --slug\");\n const wt = await ensureWorktree({ repoRoot: r.root, slug: opts.slug });\n worktree = wt.path;\n console.error(`worktree: ${wt.path} (branch ${wt.branch})`);\n }\n const tracker = makeTracker(r.config);\n const orch = new Orchestrator({\n config: r.config,\n tracker,\n runner: makeRunner(r.config, r.agentsDir, tracker),\n context: makeContext(r.contextRoot),\n logger: (m) => console.error(m),\n });\n const result = await orch.runCycle({\n projectId,\n slug: opts.slug,\n worktree,\n maxSteps: Number(opts.maxSteps),\n dryRun: opts.dryRun,\n onComplete: async ({ slug }) => {\n const s = slug ?? projectId;\n const { path } = await writeEpicReport(r, projectId, s);\n console.error(`✅ epic complete (${s}) — report: ${path}`);\n if (opts.pr) {\n const code = await openPullRequest(path, {\n title: `feat: ${s}`,\n cwd: worktree ?? r.root,\n });\n console.error(\n code === 0 ? \" PR opened.\" : \" PR not opened (gh failed or no pushed branch).\",\n );\n }\n },\n });\n if (!opts.dryRun) {\n await logRun(r.contextRoot, {\n project: projectId,\n slug: opts.slug,\n steps: result.steps,\n complete: result.complete,\n executed: result.executed,\n });\n }\n console.log(\n JSON.stringify(\n {\n steps: result.steps,\n complete: result.complete,\n executed: result.executed,\n anomalies: result.anomalies,\n },\n null,\n 2,\n ),\n );\n },\n );\n\nprogram\n .command(\"complete\")\n .argument(\"<projectId>\", \"tracker project/epic id\")\n .description(\"flip every released task to done (the /staging step)\")\n .action(async (projectId: string) => {\n const { config } = await resolved();\n const tracker = makeTracker(config);\n const raw = await tracker.listIssues({ projectId });\n const tasks = normalize(raw, config.phaseMapping);\n const releasedIds = tasks.filter((t) => t.phase === Phase.RELEASED).map((t) => t.id);\n const apply = applyFor(Phase.DONE, config.phaseMapping);\n if (!apply) throw new Error(\"no apply rule for 'done'\");\n if (releasedIds.length) await tracker.bulkTransition(releasedIds, apply);\n console.log(JSON.stringify({ movedToDone: releasedIds.length }, null, 2));\n });\n\nprogram\n .command(\"demo\")\n .description(\"run a full cycle offline (memory tracker + echo runner) — no credentials needed\")\n .action(async () => {\n const { config } = await resolved();\n const seed: RawIssue[] = [\n {\n id: \"iss-1\",\n ref: \"DEMO-1\",\n title: \"API endpoint\",\n state: \"Backlog\",\n labels: [\"agent:api\", \"qa-batch:1\", \"harness\"],\n blockedBy: [],\n order: 1,\n },\n {\n id: \"iss-2\",\n ref: \"DEMO-2\",\n title: \"Web page\",\n state: \"Backlog\",\n labels: [\"agent:web\", \"qa-batch:2\", \"harness\"],\n blockedBy: [{ id: \"iss-1\", ref: \"DEMO-1\", state: \"Backlog\" }],\n order: 2,\n },\n ];\n const tracker = new MemoryTracker({ seed, bounceMarker: config.phaseMapping.bounceMarker });\n const orch = new Orchestrator({\n config,\n tracker,\n runner: new EchoRunner(),\n logger: (m) => console.error(m),\n });\n const result = await orch.runCycle({\n projectId: \"demo\",\n onComplete: () => console.error(\"✅ demo epic complete\"),\n });\n const issues = await tracker.listIssues({ projectId: \"demo\" });\n console.log(\n JSON.stringify(\n {\n steps: result.steps,\n complete: result.complete,\n finalStates: issues.map((i) => ({ ref: i.ref, state: i.state, labels: i.labels })),\n },\n null,\n 2,\n ),\n );\n });\n\n// Onboarding & maintenance commands (each registers itself on the program).\nregisterInit(program, resolved);\nregisterEpic(program, resolved);\nregisterReport(program, resolved);\nregisterStatus(program, resolved);\nregisterServe(program, resolved);\nregisterWorktree(program, resolved);\nregisterDoctor(program, resolved);\nregisterAgents(program, resolved);\n\nprogram.parseAsync().catch((err) => {\n console.error(\"FATAL:\", err instanceof Error ? err.message : err);\n process.exit(1);\n});\n"]}