@geenius/release-toolkit 0.10.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":["../src/lib/exit.ts","../src/lib/paths.ts","../src/lib/reporter.ts","../src/lib/scanner.ts","../src/commands/a11y-report.ts","../src/lib/spawn.ts","../src/commands/attw.ts","../src/lib/variants-rich.ts","../src/commands/bundle-budgets.ts","../src/lib/resolve-bin.ts","../src/commands/convex-codegen.ts","../src/commands/convex-build.ts","../src/commands/coverage.ts","../src/commands/coverage-report.ts","../src/commands/db-migrations.ts","../src/commands/diff-coverage.ts","../src/commands/e2e.ts","../src/lib/dist-freshness.ts","../src/commands/license.ts","../src/commands/manifest-contract.ts","../src/commands/mutation-report.ts","../src/commands/perf-smoke.ts","../src/commands/publint.ts","../src/commands/sbom.ts","../src/commands/size-check.ts","../src/commands/smoke-packed.ts","../src/lib/storybook-static-smoke.ts","../src/commands/storybook.ts","../src/env.ts","../src/commands/supply-chain.ts","../src/commands/gauntlet.ts","../src/commands/lint.ts","../src/commands/pack-contract.ts","../src/commands/patch-dts.ts","../src/commands/pnpm-filters.ts","../src/commands/rewrite-imports.ts","../src/lib/npm-registry.ts","../src/commands/sync-template.ts","../src/commands/run-scripts.ts","../src/commands/sanitize-dist.ts","../src/commands/size-limit-config.ts","../src/commands/type-check.ts","../src/commands/variants.ts","../src/commands/vitest-browser-prepare.ts","../src/config.ts","../src/cli.ts"],"names":["join","dirname","pc","existsSync","nsToMs","finalize","mkdirSync","resolve","readFileSync","rmSync","writeFileSync","walk","spawnSync","ok","statSync","readdirSync","status","mkdtempSync","tmpdir","packToTmp","createServer","startStaticServer","r","relative","sep","isAbsolute","spawn","delimiter","runOne"],"mappings":"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","file":"cli.js","sourcesContent":["/**\n * Canonical exit codes. Stable across versions — adding a new code is a major\n * bump. CI integrations rely on these.\n */\nexport const ExitCode = {\n OK: 0,\n REQUIRED_FAILURE: 1,\n CONFIG_ERROR: 2,\n ENV_ERROR: 3,\n INTERNAL_BUG: 4,\n} as const;\n\nexport type ExitCode = (typeof ExitCode)[keyof typeof ExitCode];\n\n/**\n * Errors the CLI knows how to translate into a non-zero exit code. Any other\n * thrown value is an unexpected failure (exit code 4).\n */\nexport class ReleaseToolkitError extends Error {\n constructor(\n message: string,\n public readonly code: ExitCode,\n public readonly hint?: string,\n ) {\n super(message);\n this.name = \"ReleaseToolkitError\";\n }\n}\n\nexport function configError(message: string, hint?: string): ReleaseToolkitError {\n return new ReleaseToolkitError(message, ExitCode.CONFIG_ERROR, hint);\n}\n\nexport function envError(message: string, hint?: string): ReleaseToolkitError {\n return new ReleaseToolkitError(message, ExitCode.ENV_ERROR, hint);\n}\n\nexport function requiredFailure(message: string, hint?: string): ReleaseToolkitError {\n return new ReleaseToolkitError(message, ExitCode.REQUIRED_FAILURE, hint);\n}\n","/**\n * Canonical path resolution. Every command and lib reads paths through here so\n * relocating the report directory or the lockfile name is a one-line edit.\n */\n\nimport { existsSync } from \"node:fs\";\nimport { dirname, isAbsolute, join, resolve } from \"node:path\";\n\nimport { envError } from \"./exit.js\";\n\nexport interface ResolvedPaths {\n /** Absolute path to the package root (the directory containing package.json). */\n packageRoot: string;\n /** Absolute path to the package's pnpm-lock.yaml. */\n lockfile: string;\n /** Absolute path to the package's package.json. */\n packageJson: string;\n /** Absolute path to the package's node_modules root. */\n nodeModules: string;\n /** Absolute path to `.eval/release-toolkit/`. Reports go here. */\n reportDir: string;\n}\n\n/**\n * Resolve filesystem paths relative to a starting cwd. Walks up to find the\n * first directory containing both `package.json` and `pnpm-lock.yaml`. This\n * matches how `pnpm` itself locates package roots and lets the CLI be invoked\n * from a sub-directory.\n */\nexport function resolvePaths(startCwd: string = process.cwd()): ResolvedPaths {\n const packageRoot = findPackageRoot(resolve(startCwd));\n return {\n packageRoot,\n lockfile: join(packageRoot, \"pnpm-lock.yaml\"),\n packageJson: join(packageRoot, \"package.json\"),\n nodeModules: join(packageRoot, \"node_modules\"),\n reportDir: join(packageRoot, \".eval\", \"release-toolkit\"),\n };\n}\n\nfunction findPackageRoot(start: string): string {\n let current = start;\n // Hard cap on filesystem traversal so we never run away on a malformed cwd.\n for (let depth = 0; depth < 64; depth += 1) {\n if (existsSync(join(current, \"package.json\")) && existsSync(join(current, \"pnpm-lock.yaml\"))) {\n return current;\n }\n const parent = dirname(current);\n if (parent === current) break;\n current = parent;\n }\n throw envError(\n `No package.json + pnpm-lock.yaml found at or above ${start}`,\n \"Run the toolkit from inside a Geenius package directory, or pass --cwd <path>.\",\n );\n}\n\n/** Resolve a path that may be relative-to-package-root or absolute. */\nexport function resolveConfigPath(packageRoot: string, candidate: string): string {\n return isAbsolute(candidate) ? candidate : resolve(packageRoot, candidate);\n}\n","/**\n * Reporter. Writes the JSON file alongside human-readable terminal output.\n * Every command emits exactly one report; the reporter is the only place\n * that writes to stdout/stderr and to the report directory.\n */\n\nimport { mkdirSync, writeFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\n\nimport pc from \"picocolors\";\n\nimport type { CommandReport, StepReport, StepStatus } from \"../types.js\";\n\nexport interface ReporterOptions {\n /** Absolute path to `.eval/release-toolkit/` for the current package. */\n reportDir: string;\n /** When true, suppress console output (used by `gauntlet` for sub-commands). */\n quiet?: boolean;\n}\n\n/** Format and write a CommandReport. Returns the absolute report path. */\nexport function writeReport(report: CommandReport, options: ReporterOptions): string {\n const filePath = join(options.reportDir, `${report.command}.json`);\n mkdirSync(dirname(filePath), { recursive: true });\n writeFileSync(filePath, `${JSON.stringify(report, null, 2)}\\n`, \"utf8\");\n if (!options.quiet) {\n printReport(report);\n process.stdout.write(`\\n${pc.dim(`report → ${filePath}`)}\\n`);\n }\n return filePath;\n}\n\n/** Print a CommandReport to stdout in a stable, terminal-friendly format. */\nexport function printReport(report: CommandReport): void {\n for (const step of report.steps) {\n process.stdout.write(`${formatStep(step)}\\n`);\n }\n process.stdout.write(`\\n${formatSummary(report)}\\n`);\n}\n\nfunction formatStep(step: StepReport): string {\n const icon = STEP_ICON[step.status];\n const tint = STEP_TINT[step.status];\n const label = step.name.padEnd(24, \" \");\n const detail =\n step.status === \"passed\"\n ? pc.dim(`(${formatDuration(step.durationMs)})`)\n : pc.dim(step.reason ?? \"\");\n return `${tint(icon)} ${label} ${tint(STATUS_WORD[step.status])} ${detail}`;\n}\n\nfunction formatSummary(report: CommandReport): string {\n const tint = COMMAND_TINT[report.status];\n const banner = `${report.command}: ${STATUS_WORD[report.status === \"skipped\" ? \"skipped\" : report.status === \"passed\" ? \"passed\" : \"failed\"].toUpperCase()}`;\n const dur = formatDuration(report.durationMs);\n const optionalSkips = report.steps.filter((s) => s.status === \"skipped\").length;\n const suffix =\n optionalSkips > 0 ? ` — ${optionalSkips} optional skip${optionalSkips === 1 ? \"\" : \"s\"}` : \"\";\n return tint(`${banner} (${dur})${suffix}`);\n}\n\nfunction formatDuration(ms: number): string {\n if (ms < 1_000) return `${Math.round(ms)}ms`;\n return `${(ms / 1_000).toFixed(1)}s`;\n}\n\nconst STEP_ICON: Record<StepStatus, string> = {\n passed: \"✓\",\n failed: \"✗\",\n skipped: \"i\",\n missing: \"✗\",\n unauthenticated: \"✗\",\n};\n\nconst STATUS_WORD: Record<StepStatus, string> = {\n passed: \"OK\",\n failed: \"FAIL\",\n skipped: \"skip\",\n missing: \"MISSING\",\n unauthenticated: \"AUTH\",\n};\n\nconst STEP_TINT: Record<StepStatus, (s: string) => string> = {\n passed: pc.green,\n failed: pc.red,\n skipped: pc.dim,\n missing: pc.red,\n unauthenticated: pc.red,\n};\n\nconst COMMAND_TINT: Record<\"passed\" | \"failed\" | \"skipped\", (s: string) => string> = {\n passed: pc.green,\n failed: pc.red,\n skipped: pc.dim,\n};\n","/**\n * Scanner state machine. The single source of truth for \"given a scanner's\n * runtime state and its config, should this step pass / fail / skip?\".\n *\n * Every supply-chain scanner (pnpm audit, osv-scanner, socket, license) routes\n * its state through `resolveScannerOutcome`. Other commands reuse the same\n * machine where they have optional dependencies.\n */\n\nimport type { ScannerConfig, SkipPolicy } from \"../config.js\";\nimport type { ScannerState, StepReport, StepStatus } from \"../types.js\";\n\nexport interface ResolveOptions {\n /** Scanner display name. */\n name: string;\n /** Probed state from the scanner (passed / failed / missing / unauthenticated). */\n state: ScannerState;\n /** Per-scanner configuration. */\n config: ScannerConfig;\n /** Strictness override from env (escalate / de-escalate skipIf policies). */\n strictness?: \"strict\" | \"lenient\" | undefined;\n /** CI mode escalates `info` → `warn`. */\n ci: boolean;\n /** Step start time for accurate durationMs. */\n startedAtNs: bigint;\n}\n\n/**\n * Map a ScannerState + ScannerConfig to a final StepReport.\n *\n * Truth table:\n *\n * state.kind required=true required=false\n * ────────────── ─────────────────────────── ───────────────────────────\n * passed status=passed status=passed\n * failed status=failed (always) status=failed (still fails)\n * missing status=failed (with hint) skipIfMissing policy applies\n * unauthenticated status=failed (with hint) skipIfUnauthenticated policy applies\n *\n * When `required=false` and a skipIf* policy is `silent`, the step does not\n * appear in the human-readable output at all (only in the JSON report). For\n * `info` it appears as \"i scanner — reason\"; for `warn` it appears in yellow.\n *\n * `strictness=strict` escalates `info` → `warn` and `warn` → required failure.\n * `strictness=lenient` does the inverse. CI mode escalates `info` → `warn`\n * regardless of strictness.\n */\nexport function resolveScannerOutcome(opts: ResolveOptions): StepReport {\n const { name, state, config, strictness, ci, startedAtNs } = opts;\n const durationMs = nsToMs(process.hrtime.bigint() - startedAtNs);\n\n if (state.kind === \"passed\") {\n return {\n name,\n status: \"passed\",\n durationMs,\n ...(state.output ? { output: state.output } : {}),\n };\n }\n\n if (state.kind === \"failed\") {\n return {\n name,\n status: \"failed\",\n reason: state.reason,\n durationMs,\n ...(state.output ? { output: state.output } : {}),\n };\n }\n\n // missing / unauthenticated: required wins outright.\n if (config.required) {\n return {\n name,\n status: state.kind === \"missing\" ? \"missing\" : \"unauthenticated\",\n reason: missingHint(name, state),\n durationMs,\n };\n }\n\n // optional: respect skipIf* policy, then escalate via CI / strictness.\n const policy =\n state.kind === \"missing\"\n ? (config.skipIfMissing ?? \"info\")\n : (config.skipIfUnauthenticated ?? \"info\");\n\n const escalated = escalate(policy, { ci, strictness });\n\n if (escalated === \"error\") {\n // strictness=strict escalated a soft policy to a hard fail\n return {\n name,\n status: state.kind === \"missing\" ? \"missing\" : \"unauthenticated\",\n reason: missingHint(name, state),\n durationMs,\n };\n }\n\n return {\n name,\n status: \"skipped\",\n reason: skipReason(name, state, escalated),\n durationMs,\n };\n}\n\nfunction missingHint(name: string, state: ScannerState): string {\n if (state.kind === \"missing\") {\n return `${state.reason} (install ${name}, or set \"required\": false in release-toolkit.config.json)`;\n }\n if (state.kind === \"unauthenticated\") {\n return `${state.reason} (run \\`${name} login\\` or set the appropriate API token env var, or set \"required\": false in release-toolkit.config.json)`;\n }\n return \"unreachable\";\n}\n\nfunction skipReason(name: string, state: ScannerState, policy: ResolvedPolicy): string {\n const base = state.kind === \"missing\" ? `${name} not installed` : `${name} not authenticated`;\n const suffix = \"optional per release-toolkit.config.json\";\n if (policy === \"silent\") return `${base} — skipped silently (${suffix})`;\n if (policy === \"info\") return `${base} — skipped (${suffix})`;\n return `${base} — skipped with warning (${suffix})`;\n}\n\ntype ResolvedPolicy = SkipPolicy | \"error\";\n\nfunction escalate(\n policy: SkipPolicy,\n ctx: { ci: boolean; strictness?: \"strict\" | \"lenient\" | undefined },\n): ResolvedPolicy {\n let level: ResolvedPolicy = policy;\n\n if (ctx.strictness === \"strict\") {\n if (level === \"silent\") level = \"info\";\n else if (level === \"info\") level = \"warn\";\n else if (level === \"warn\") level = \"error\";\n } else if (ctx.strictness === \"lenient\") {\n if (level === \"warn\") level = \"info\";\n else if (level === \"info\") level = \"silent\";\n }\n\n // CI nudges info → warn (independent of strictness, additive).\n if (ctx.ci && level === \"info\") level = \"warn\";\n\n return level;\n}\n\nfunction nsToMs(ns: bigint): number {\n return Number(ns) / 1_000_000;\n}\n\n/** Roll a list of step reports up into a command status. Any required failure\n * (`failed` / `missing` / `unauthenticated`) yields `\"failed\"`. All steps\n * passing or skipping yields `\"passed\"`. An empty list yields `\"skipped\"`. */\nexport function rollupCommandStatus(steps: StepReport[]): \"passed\" | \"failed\" | \"skipped\" {\n if (steps.length === 0) return \"skipped\";\n const failedStatuses: ReadonlySet<StepStatus> = new Set([\"failed\", \"missing\", \"unauthenticated\"]);\n for (const step of steps) {\n if (failedStatuses.has(step.status)) return \"failed\";\n }\n return \"passed\";\n}\n","/**\n * `geenius-release a11y-report` — aggregate axe-core results that the package's\n * a11y test run produced. Replaces 28 copies of `a11y-report.mjs`.\n *\n * Looks for a single JSON file at `.eval/a11y/results.json` (or the path\n * passed via `--results`) containing the axe output. Reports the count of\n * violations by severity. Fails when any violation at or above\n * `failThreshold` exists (default: `serious`).\n */\n\nimport { existsSync, readFileSync } from \"node:fs\";\n\nimport { resolveConfigPath, resolvePaths } from \"../lib/paths.js\";\nimport { writeReport } from \"../lib/reporter.js\";\nimport { rollupCommandStatus } from \"../lib/scanner.js\";\nimport type { CommandReport, StepReport } from \"../types.js\";\n\nexport type A11ySeverity = \"minor\" | \"moderate\" | \"serious\" | \"critical\";\n\nexport interface RunA11yReportOptions {\n cwd?: string;\n /** Path to the axe results JSON. Default: `.eval/a11y/results.json`. */\n resultsPath?: string;\n /** Lowest severity that fails the report. Default: `serious`. */\n failThreshold?: A11ySeverity;\n /** Whether absent results is `failed` or `skipped`. */\n optional?: boolean;\n quiet?: boolean;\n}\n\ninterface AxeViolation {\n id: string;\n impact?: A11ySeverity | null;\n nodes?: unknown[];\n}\n\ninterface AxeRun {\n violations?: AxeViolation[];\n}\n\nconst SEVERITY_RANK: Record<A11ySeverity, number> = {\n minor: 1,\n moderate: 2,\n serious: 3,\n critical: 4,\n};\n\nexport async function runA11yReport(opts: RunA11yReportOptions = {}): Promise<CommandReport> {\n const startedAtNs = process.hrtime.bigint();\n const startedAt = new Date().toISOString();\n const paths = resolvePaths(opts.cwd);\n const resultsPath = resolveConfigPath(\n paths.packageRoot,\n opts.resultsPath ?? \".eval/a11y/results.json\",\n );\n const threshold = opts.failThreshold ?? \"serious\";\n\n const steps: StepReport[] = [];\n // Declared up front so `finalize()` can reference them on every code path\n // (TDZ would otherwise bite the early-return branches).\n const buckets: Record<A11ySeverity, number> = {\n minor: 0,\n moderate: 0,\n serious: 0,\n critical: 0,\n };\n let failingCount = 0;\n\n if (!existsSync(resultsPath)) {\n steps.push({\n name: \"a11y results\",\n status: opts.optional ? \"skipped\" : \"missing\",\n reason: `${resultsPath} not found (run \\`pnpm test:a11y\\` first, or pass --optional)`,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n });\n return finalize();\n }\n\n let raw: unknown;\n try {\n raw = JSON.parse(readFileSync(resultsPath, \"utf8\"));\n } catch (error) {\n steps.push({\n name: \"a11y results\",\n status: \"failed\",\n reason: `failed to parse ${resultsPath}: ${(error as Error).message}`,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n });\n return finalize();\n }\n\n // axe can output either a single run (object with `violations`) or an array\n // of runs (one per page/story). Normalize.\n const runs: AxeRun[] = Array.isArray(raw)\n ? (raw as AxeRun[])\n : raw && typeof raw === \"object\"\n ? [raw as AxeRun]\n : [];\n\n for (const run of runs) {\n for (const v of run.violations ?? []) {\n const impact = v.impact ?? \"minor\";\n buckets[impact] += 1;\n }\n }\n\n failingCount = (Object.entries(buckets) as Array<[A11ySeverity, number]>)\n .filter(([sev, count]) => count > 0 && SEVERITY_RANK[sev] >= SEVERITY_RANK[threshold])\n .reduce((acc, [, count]) => acc + count, 0);\n\n for (const sev of [\"critical\", \"serious\", \"moderate\", \"minor\"] as const) {\n if (buckets[sev] === 0) continue;\n steps.push({\n name: `${sev} ${buckets[sev]}`,\n status: SEVERITY_RANK[sev] >= SEVERITY_RANK[threshold] ? \"failed\" : \"passed\",\n durationMs: 0,\n });\n }\n\n if (steps.length === 0) {\n steps.push({\n name: \"violations 0\",\n status: \"passed\",\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n });\n }\n\n return finalize();\n\n function finalize(): CommandReport {\n const status = rollupCommandStatus(steps);\n const report: CommandReport = {\n command: \"a11y-report\",\n status,\n startedAt,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n steps,\n meta: { resultsPath, failThreshold: threshold, buckets, failingCount },\n };\n writeReport(report, {\n reportDir: paths.reportDir,\n ...(opts.quiet === true ? { quiet: true } : {}),\n });\n return report;\n }\n}\n\nfunction nsToMs(ns: bigint): number {\n return Number(ns) / 1_000_000;\n}\n","/**\n * Single subprocess wrapper. Every external command (pnpm audit, osv-scanner,\n * socket, syft, …) goes through `runCommand` — never `child_process` directly.\n *\n * Why: centralized timeout, stdio capture, and ENOENT detection. Tests can\n * stub a single function instead of patching `node:child_process`.\n */\n\nimport { type SpawnSyncOptions, spawnSync } from \"node:child_process\";\n\nexport interface RunResult {\n /** Exit status. `null` if the process was killed by signal. */\n status: number | null;\n signal: NodeJS.Signals | null;\n stdout: string;\n stderr: string;\n /** True iff the binary itself wasn't found on PATH. */\n missing: boolean;\n /** Any other spawn error (permissions, EACCES, etc.). */\n error?: NodeJS.ErrnoException;\n /** Wall-clock duration in ms. */\n durationMs: number;\n}\n\nexport interface RunOptions {\n cwd: string;\n /** Environment overrides; merged with process.env. */\n env?: Record<string, string | undefined>;\n /** Timeout in ms. Default: 5 minutes. */\n timeoutMs?: number;\n /** stdin payload to feed the process. */\n input?: string;\n}\n\nconst DEFAULT_TIMEOUT_MS = 5 * 60 * 1000;\n\n/**\n * Run a command synchronously and capture its stdio. The synchronous shape\n * (vs Promise) is deliberate: the toolkit's commands are sequential by design;\n * sync spawn keeps the control flow flat and avoids zombie-process risks\n * during integration tests.\n */\nexport function runCommand(\n command: string,\n args: readonly string[],\n options: RunOptions,\n): RunResult {\n const spawnOptions: SpawnSyncOptions = {\n cwd: options.cwd,\n encoding: \"utf8\",\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n timeout: options.timeoutMs ?? DEFAULT_TIMEOUT_MS,\n env: { ...process.env, ...options.env },\n input: options.input,\n };\n\n const startedAt = process.hrtime.bigint();\n const result = spawnSync(command, args, spawnOptions);\n const durationMs = Number(process.hrtime.bigint() - startedAt) / 1_000_000;\n\n const stdout = typeof result.stdout === \"string\" ? result.stdout : \"\";\n const stderr = typeof result.stderr === \"string\" ? result.stderr : \"\";\n\n const error = result.error as NodeJS.ErrnoException | undefined;\n const missing = error?.code === \"ENOENT\";\n\n const base: RunResult = {\n status: result.status,\n signal: result.signal,\n stdout,\n stderr,\n missing,\n durationMs,\n };\n return error && !missing ? { ...base, error } : base;\n}\n\n/** Convenience: returns true iff the binary exists on PATH and responds to a\n * `--version` call. Used by scanner probes. */\nexport function commandExists(command: string, cwd: string): boolean {\n const r = runCommand(command, [\"--version\"], { cwd, timeoutMs: 5_000 });\n if (r.missing) return false;\n // Some binaries respond with non-zero to `--version`; presence on PATH is\n // sufficient.\n return !r.missing;\n}\n\n/** Truncate combined output to `bytes` (default 4 KB), keeping the tail since\n * tails tend to contain the actual failure message. */\nexport function truncateOutput(stdout: string, stderr: string, bytes = 4 * 1024): string {\n const combined = [stdout, stderr].filter(Boolean).join(\"\\n\");\n if (combined.length <= bytes) return combined;\n return `…(truncated)\\n${combined.slice(-bytes)}`;\n}\n","/**\n * `geenius-release attw` — run @arethetypeswrong/cli against the packed tarball.\n * Replaces ~13 scripts across 3 filename variations (`run-attw.mjs`,\n * `attw-packed.mjs`, `attw-check.mjs`).\n */\n\nimport { existsSync, mkdirSync, mkdtempSync, rmSync } from \"node:fs\";\nimport { tmpdir } from \"node:os\";\nimport { join } from \"node:path\";\n\nimport { resolvePaths } from \"../lib/paths.js\";\nimport { writeReport } from \"../lib/reporter.js\";\nimport { rollupCommandStatus } from \"../lib/scanner.js\";\nimport { commandExists, runCommand, truncateOutput } from \"../lib/spawn.js\";\nimport type { CommandReport, StepReport } from \"../types.js\";\n\nexport interface RunAttwOptions {\n cwd?: string;\n /** Allow attw to be missing without failing. */\n optional?: boolean;\n /** Comma list of attw `--ignore-rules` (e.g. `cjs-resolves-to-esm`). */\n ignoreRules?: readonly string[];\n /** Reuse a stable directory (relative to packageRoot) for the tarball\n * instead of `mkdtempSync(os.tmpdir())`. Useful when concurrent pnpm\n * installs in the global cache thrash mkdtemp creations. Default:\n * undefined (use os.tmpdir). Common value: `.eval/attw-pack`. */\n safePackDir?: string;\n quiet?: boolean;\n}\n\nexport async function runAttw(opts: RunAttwOptions = {}): Promise<CommandReport> {\n const startedAtNs = process.hrtime.bigint();\n const startedAt = new Date().toISOString();\n const paths = resolvePaths(opts.cwd);\n\n const steps: StepReport[] = [];\n const useSafeDir = Boolean(opts.safePackDir);\n const tmp = useSafeDir\n ? (() => {\n const dir = join(paths.packageRoot, opts.safePackDir as string);\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n return dir;\n })()\n : mkdtempSync(join(tmpdir(), \"geenius-release-attw-\"));\n\n try {\n const packStep = packToTmp(paths.packageRoot, tmp);\n steps.push(packStep);\n\n if (packStep.status !== \"passed\") {\n return finalize(\"failed\");\n }\n const tarball = packStep.reason ?? \"\";\n const attwStep = runAttwAgainst(paths.packageRoot, tarball, opts);\n steps.push(attwStep);\n return finalize();\n } finally {\n if (!useSafeDir) {\n try {\n rmSync(tmp, { recursive: true, force: true });\n } catch {\n // best-effort\n }\n }\n }\n\n function finalize(forceStatus?: \"failed\"): CommandReport {\n const status = forceStatus ?? rollupCommandStatus(steps);\n const report: CommandReport = {\n command: \"attw\",\n status,\n startedAt,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n steps,\n };\n writeReport(report, {\n reportDir: paths.reportDir,\n ...(opts.quiet === true ? { quiet: true } : {}),\n });\n return report;\n }\n}\n\nfunction packToTmp(packageRoot: string, tmp: string): StepReport {\n const startedAtNs = process.hrtime.bigint();\n const r = runCommand(\"pnpm\", [\"pack\", \"--pack-destination\", tmp], { cwd: packageRoot });\n if (r.status !== 0) {\n return {\n name: \"pnpm pack\",\n status: \"failed\",\n reason: `pnpm pack exited ${r.status ?? \"?\"}`,\n output: truncateOutput(r.stdout, r.stderr),\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n }\n const tarball = r.stdout\n .split(/\\r?\\n/g)\n .map((s) => s.trim())\n .filter(Boolean)\n .pop();\n return {\n name: \"pnpm pack\",\n status: \"passed\",\n reason: tarball ?? \"(tarball)\",\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n}\n\nfunction runAttwAgainst(cwd: string, tarballPath: string, opts: RunAttwOptions): StepReport {\n const startedAtNs = process.hrtime.bigint();\n if (!commandExists(\"pnpm\", cwd)) {\n return {\n name: \"attw\",\n status: \"missing\",\n reason: \"pnpm not on PATH\",\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n }\n\n const args = [\"exec\", \"attw\", tarballPath];\n for (const rule of opts.ignoreRules ?? []) {\n args.push(\"--ignore-rules\", rule);\n }\n\n const r = runCommand(\"pnpm\", args, { cwd, timeoutMs: 60_000 });\n if (r.status === 0) {\n return {\n name: \"attw\",\n status: \"passed\",\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n }\n\n const combined = `${r.stdout}\\n${r.stderr}`;\n const looksMissing =\n /command not found|cannot resolve|ERR_PNPM_DLX_NO_BIN|ERR_PNPM_RECURSIVE_EXEC/i.test(combined);\n if (looksMissing) {\n return {\n name: \"attw\",\n status: opts.optional ? \"skipped\" : \"missing\",\n reason: opts.optional\n ? \"@arethetypeswrong/cli not installed — skipped (optional)\"\n : \"@arethetypeswrong/cli not installed (add it to devDependencies, or pass --optional)\",\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n }\n\n return {\n name: \"attw\",\n status: \"failed\",\n reason: `attw reported issues (exit ${r.status ?? \"?\"})`,\n output: truncateOutput(r.stdout, r.stderr),\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n}\n\nfunction nsToMs(ns: bigint): number {\n return Number(ns) / 1_000_000;\n}\n","/**\n * Rich variants loader — replaces the per-package `_variants.mjs` helper\n * (43 copies across the workspace).\n *\n * Reads `variants.json` at the package root and returns typed variant\n * objects with derived `packagePath`/`exists`/`subpaths` fields, plus\n * helper queries (`packageVariants`, `uiVariants`, `dbProviderVariants`,\n * `storybookApps`, `publishedSubpaths`, …). Honors the\n * OMEGA_INCLUDE_OUT_OF_SCOPE env flag the legacy scripts depend on.\n */\n\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\n\nexport interface RichVariantTestsConfig {\n unit?: boolean;\n coverage?: Record<string, number>;\n [key: string]: unknown;\n}\n\nexport interface RichVariant {\n name: string;\n kind: string;\n framework?: string;\n packageDir?: string;\n workspace?: string;\n driver?: string;\n subpath?: string;\n aliases?: string[];\n published?: boolean;\n storybook?: string;\n tests?: RichVariantTestsConfig;\n inScope?: boolean;\n /** Derived: absolute path to the variant directory. */\n packagePath: string | null;\n /** Derived: whether `packagePath` exists on disk. */\n exists: boolean;\n /** Derived: subpath + aliases concatenated. */\n subpaths: string[];\n [key: string]: unknown;\n}\n\nexport interface RichVariantsManifest {\n package: string;\n rootDir: string;\n variants: RichVariant[];\n coverage?: {\n reference?: Record<string, number>;\n library?: Record<string, number>;\n provider?: Record<string, number>;\n };\n [key: string]: unknown;\n}\n\nexport interface LoadRichVariantsOptions {\n /** Override the package root (otherwise the caller's cwd is used). */\n rootDir?: string;\n /** Force-include out-of-scope variants regardless of env. */\n includeOutOfScope?: boolean;\n}\n\nconst FILTERABLE_KEYS = [\"variants\", \"uiVariants\", \"dbProviders\", \"frameworks\", \"libraryVariants\"];\n\nfunction omegaInScopeFilter(manifest: Record<string, unknown>, force: boolean): void {\n if (force || process.env.OMEGA_INCLUDE_OUT_OF_SCOPE === \"1\") return;\n for (const key of FILTERABLE_KEYS) {\n const value = manifest[key];\n if (Array.isArray(value)) {\n manifest[key] = value.filter(\n (v) => v && typeof v === \"object\" && (v as { inScope?: boolean }).inScope !== false,\n );\n }\n }\n}\n\nfunction assertManifestShape(manifest: Record<string, unknown>): asserts manifest is {\n package: string;\n variants: Record<string, unknown>[];\n} & Record<string, unknown> {\n if (!manifest || typeof manifest !== \"object\") {\n throw new TypeError(\"variants.json must contain a JSON object.\");\n }\n if (typeof manifest.package !== \"string\" || !manifest.package) {\n throw new TypeError(\"variants.json must define a non-empty `package` field.\");\n }\n // Merge `workspacePackages` (foundation / always-present packages used by\n // some packages like ai-workflow) into `variants` if present, so consumers\n // see a single normalized list.\n if (Array.isArray(manifest.workspacePackages) && manifest.workspacePackages.length > 0) {\n const existing = Array.isArray(manifest.variants) ? manifest.variants : [];\n manifest.variants = [...manifest.workspacePackages, ...existing];\n }\n const variants = manifest.variants;\n if (!Array.isArray(variants) || variants.length === 0) {\n throw new TypeError(\n \"variants.json must define a non-empty `variants` array (or `workspacePackages`).\",\n );\n }\n const names = new Set<string>();\n for (const variant of variants) {\n if (!variant || typeof variant !== \"object\") {\n throw new TypeError(\"Every variant entry must be an object.\");\n }\n const v = variant as Record<string, unknown>;\n if (typeof v.name !== \"string\" || !v.name) {\n throw new TypeError(\"Every variant entry must define a non-empty `name`.\");\n }\n if (names.has(v.name)) {\n throw new TypeError(`Duplicate variant name: ${v.name}`);\n }\n names.add(v.name);\n if (typeof v.kind !== \"string\" || !v.kind) {\n throw new TypeError(`Variant ${v.name} must define a kind.`);\n }\n }\n}\n\nfunction withDerived(variant: Record<string, unknown>, rootDir: string): RichVariant {\n // Three conventions in the wild:\n // - `packageDir: \"packages/react\"` (full relative path; payments/adapters)\n // - `packageDir: \"react\"` (bare name relative to `packages/`; admin)\n // - `packagePath: \"packages/react\"` (alternate key; ai-workflow)\n const rawPackageDir =\n typeof variant.packageDir === \"string\"\n ? variant.packageDir\n : typeof variant.packagePath === \"string\"\n ? variant.packagePath\n : undefined;\n const packageDir = rawPackageDir ? normalizePackageDir(rootDir, rawPackageDir) : undefined;\n const packagePath = packageDir ? resolve(rootDir, packageDir) : null;\n const exists = packagePath ? existsSync(packagePath) : false;\n const subpath = typeof variant.subpath === \"string\" ? variant.subpath : undefined;\n const aliases = Array.isArray(variant.aliases)\n ? (variant.aliases.filter((a) => typeof a === \"string\") as string[])\n : [];\n return {\n ...(variant as RichVariant),\n ...(packageDir ? { packageDir } : {}),\n packagePath,\n exists,\n subpaths: [...(subpath ? [subpath] : []), ...aliases],\n };\n}\n\nfunction normalizePackageDir(rootDir: string, raw: string): string {\n // Already a full relative path: leave alone.\n if (raw.includes(\"/\")) return raw;\n // Bare form: prefer the bare layout if it exists, otherwise prefix with\n // `packages/` if that resolves.\n if (existsSync(resolve(rootDir, raw))) return raw;\n if (existsSync(resolve(rootDir, \"packages\", raw))) return `packages/${raw}`;\n return raw;\n}\n\nexport function loadRichVariants(opts: LoadRichVariantsOptions = {}): RichVariantsManifest {\n const rootDir = resolve(opts.rootDir ?? process.cwd());\n const variantsPath = resolve(rootDir, \"variants.json\");\n const raw = JSON.parse(readFileSync(variantsPath, \"utf8\")) as Record<string, unknown>;\n // Validate the raw file shape BEFORE filtering — a file that defines\n // variants but happens to have them all out-of-scope is valid (returns []).\n assertManifestShape(raw);\n omegaInScopeFilter(raw, opts.includeOutOfScope === true);\n const variants = (raw.variants as Record<string, unknown>[]).map((v) => withDerived(v, rootDir));\n return {\n ...(raw as unknown as Omit<RichVariantsManifest, \"rootDir\" | \"variants\">),\n package: raw.package as string,\n rootDir,\n variants,\n };\n}\n\n/* ───────── Query helpers (mirror the legacy _variants.mjs API) ───────── */\n\nexport interface VariantQueryOptions extends LoadRichVariantsOptions {\n includeMissing?: boolean;\n publishedOnly?: boolean;\n kinds?: readonly string[];\n /** Only include variants flagged `implemented: true`. */\n implementedOnly?: boolean;\n}\n\nexport function packageVariants(opts: VariantQueryOptions = {}): RichVariant[] {\n const kinds = opts.kinds ? new Set(opts.kinds) : null;\n return loadRichVariants(opts).variants.filter((v) => {\n if (!v.packageDir) return false;\n if (opts.publishedOnly && !v.published) return false;\n if (opts.implementedOnly && v.implemented !== true) return false;\n if (kinds && !kinds.has(v.kind)) return false;\n return opts.includeMissing || v.exists;\n });\n}\n\nexport function variantsByKind(kind: string, opts: LoadRichVariantsOptions = {}): RichVariant[] {\n return loadRichVariants(opts).variants.filter((v) => v.kind === kind);\n}\n\nexport function uiVariants(opts: VariantQueryOptions = {}): RichVariant[] {\n const uiKinds = new Set([\"reference\", \"css-variant\", \"library-variant\"]);\n return packageVariants({ ...opts, includeMissing: opts.includeMissing ?? true }).filter((v) =>\n uiKinds.has(v.kind),\n );\n}\n\nexport function dbProviderVariants(opts: LoadRichVariantsOptions = {}): RichVariant[] {\n return variantsByKind(\"db-provider\", opts);\n}\n\nexport function publishedSubpaths(\n opts: LoadRichVariantsOptions = {},\n): { variant: RichVariant; subpath: string }[] {\n return loadRichVariants(opts).variants.flatMap((v) =>\n v.published ? v.subpaths.map((subpath) => ({ variant: v, subpath })) : [],\n );\n}\n\nexport function storybookVariants(opts: LoadRichVariantsOptions = {}): RichVariant[] {\n return loadRichVariants(opts).variants.filter((v) => Boolean(v.storybook));\n}\n\nexport function storybookApps(\n opts: LoadRichVariantsOptions = {},\n): { variant: RichVariant; app: string; appDir: string }[] {\n return storybookVariants(opts).map((variant) => ({\n variant,\n app: variant.storybook ?? \"\",\n appDir: `apps/${variant.storybook ?? \"\"}`,\n }));\n}\n\nexport function missingRequiredVariants(opts: LoadRichVariantsOptions = {}): RichVariant[] {\n return loadRichVariants(opts).variants.filter((v) => Boolean(v.packageDir) && !v.exists);\n}\n","/**\n * `geenius-release bundle-budgets` — variants.json-native gzip bundle budgets.\n *\n * Replaces `scripts/check-bundle-budgets.mjs` (currently 1 copy in perf, but\n * 8 packages declare `bundleBudget` in their variants.json: perf, agent,\n * ai-magic, devtools, errors, onboarding, ui, tools-legacy — so the pattern\n * is genuinely shared).\n *\n * For every implemented variant declaring `bundleBudget: \"<n><unit>\"`:\n * 1. Gzip-sum every declared runtime asset (default: index.js + index.css)\n * in <packageDir>/dist.\n * 2. Compare against the parsed budget (b / kb / mb units).\n * 3. Fail with a per-variant overshoot list on any violation.\n *\n * Distinct from `size-check` (which uses the external `size-limit` tool with\n * its own config) and from `size-limit-config` (which generates a size-limit\n * config from variants.json). This command is the lightweight, zero-extra-\n * dependency path that just reads the manifest and the dist tree.\n */\n\nimport { existsSync, readFileSync, statSync } from \"node:fs\";\nimport { join, relative, resolve } from \"node:path\";\nimport { gzipSync } from \"node:zlib\";\n\nimport { packageVariants } from \"../lib/variants-rich.js\";\n\nexport interface RunBundleBudgetsOptions {\n cwd?: string;\n /** Runtime asset basenames to gzip-sum per variant (default: index.js, index.css). */\n assets?: string[];\n /** Only include variants flagged `implemented: true` (default: true). */\n implementedOnly?: boolean;\n /** Skip silently when no variant declares a budget. */\n optional?: boolean;\n}\n\nexport interface BundleBudgetsResult {\n status: \"passed\" | \"failed\" | \"skipped\";\n exitCode: number;\n rows: BudgetRow[];\n failures: string[];\n}\n\nexport interface BudgetRow {\n name: string;\n packageDir: string;\n budgetBytes: number;\n gzipBytes: number;\n uncompressedBytes: number;\n assets: string[];\n}\n\nconst DEFAULT_ASSETS = [\"index.js\", \"index.css\"];\nconst UNIT_MULTIPLIERS: Record<string, number> = {\n b: 1,\n kb: 1024,\n mb: 1024 * 1024,\n};\n\nexport async function runBundleBudgets(\n opts: RunBundleBudgetsOptions = {},\n): Promise<BundleBudgetsResult> {\n const cwd = opts.cwd ?? process.cwd();\n const assets = opts.assets ?? DEFAULT_ASSETS;\n const implementedOnly = opts.implementedOnly !== false;\n\n const variants = packageVariants({\n rootDir: cwd,\n ...(implementedOnly ? { implementedOnly: true } : {}),\n });\n\n const budgeted = variants.filter(\n (v) => typeof (v as unknown as { bundleBudget?: unknown }).bundleBudget === \"string\",\n );\n\n if (budgeted.length === 0) {\n if (opts.optional) {\n return { status: \"skipped\", exitCode: 0, rows: [], failures: [] };\n }\n return {\n status: \"failed\",\n exitCode: 1,\n rows: [],\n failures: [\"No implemented variants declare a bundleBudget in variants.json\"],\n };\n }\n\n const rows: BudgetRow[] = [];\n const failures: string[] = [];\n\n for (const v of budgeted) {\n const packageDir = v.packageDir ?? \"\";\n const rawBudget = (v as unknown as { bundleBudget?: string }).bundleBudget;\n let budgetBytes: number;\n try {\n budgetBytes = parseBudget(rawBudget!, v.name);\n } catch (error) {\n failures.push((error as Error).message);\n continue;\n }\n\n const distDir = resolve(cwd, packageDir, \"dist\");\n const present = assets\n .map((asset) => join(distDir, asset))\n .filter((p) => existsSync(p));\n\n if (present.length === 0) {\n failures.push(`${v.name}: no runtime assets found in ${packageDir}/dist`);\n continue;\n }\n\n const gzipBytes = present.reduce(\n (sum, p) => sum + gzipSync(readFileSync(p)).length,\n 0,\n );\n const uncompressedBytes = present.reduce((sum, p) => sum + statSync(p).size, 0);\n const assetList = present.map((p) => relative(resolve(cwd, packageDir), p));\n\n rows.push({\n name: v.name,\n packageDir,\n budgetBytes,\n gzipBytes,\n uncompressedBytes,\n assets: assetList,\n });\n\n if (gzipBytes > budgetBytes) {\n failures.push(\n `${v.name}: ${formatKiB(gzipBytes)} gzip exceeds ${formatKiB(budgetBytes)} budget (${assetList.join(\", \")})`,\n );\n }\n }\n\n for (const row of rows) {\n process.stdout.write(\n `${row.name}: ${formatKiB(row.gzipBytes)} gzip / ${formatKiB(row.budgetBytes)} budget (${formatKiB(row.uncompressedBytes)} raw; ${row.assets.join(\", \")})\\n`,\n );\n }\n\n if (failures.length > 0) {\n process.stderr.write(`\\nBundle budget failures:\\n${failures.join(\"\\n\")}\\n`);\n return { status: \"failed\", exitCode: 1, rows, failures };\n }\n\n process.stdout.write(`\\nBundle budgets passed for ${rows.length} implemented variants.\\n`);\n return { status: \"passed\", exitCode: 0, rows, failures: [] };\n}\n\nfunction parseBudget(raw: string, variantName: string): number {\n const match = raw.trim().match(/^(\\d+(?:\\.\\d+)?)\\s*(b|kb|mb)$/i);\n if (!match) throw new Error(`${variantName} has invalid bundleBudget: ${raw}`);\n const value = Number(match[1]);\n const unit = match[2]!.toLowerCase();\n const mul = UNIT_MULTIPLIERS[unit];\n if (mul === undefined) throw new Error(`${variantName} has unknown bundleBudget unit: ${unit}`);\n return value * mul;\n}\n\nfunction formatKiB(bytes: number): string {\n return `${(bytes / 1024).toFixed(2)} KB`;\n}\n","/**\n * Resolve a locally-installed CLI binary by walking up `node_modules/.bin`.\n *\n * Why this matters: routing every external-tool invocation through `pnpm exec`\n * adds 100-300ms of pnpm bootstrap per spawn. Under heavy parallel workloads\n * (e.g. 20 agents running `geenius-release lint` concurrently) that overhead\n * dominates real work. Spawning the resolved binary directly skips pnpm\n * entirely.\n *\n * Resolution order:\n * 1. <cwd>/node_modules/.bin/<name>\n * 2. ...walk up parents until filesystem root or 8 levels\n * 3. PATH lookup as last resort (callers can decide whether to bail)\n *\n * Cached per-name+cwd within a single process so commands that spawn the\n * same binary many times (e.g. `pnpm-filters` fan-out) don't restat the\n * directory tree.\n */\n\nimport { existsSync } from \"node:fs\";\nimport { delimiter, dirname, resolve } from \"node:path\";\n\nconst MAX_WALK_DEPTH = 8;\nconst cache = new Map<string, string | null>();\n\n/**\n * Returns the absolute path to a local `node_modules/.bin/<name>`, walking\n * up from `cwd`. Returns null if not found in any ancestor.\n */\nexport function resolveLocalBin(name: string, cwd: string): string | null {\n const key = `${cwd}::${name}`;\n const hit = cache.get(key);\n if (hit !== undefined) return hit;\n\n let dir = resolve(cwd);\n for (let depth = 0; depth < MAX_WALK_DEPTH; depth++) {\n const candidate = resolve(dir, \"node_modules\", \".bin\", name);\n if (existsSync(candidate)) {\n cache.set(key, candidate);\n return candidate;\n }\n const parent = dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n cache.set(key, null);\n return null;\n}\n\n/**\n * Resolve a binary or fall back to bare-name spawn (which lets the OS look up\n * PATH). Returns `{bin, args}` ready to feed to spawnSync.\n *\n * When the bin is found locally, we spawn it directly — no pnpm, no node\n * resolution layer, no extra process. When it's not found, the caller still\n * gets a workable spawn target, but the bare name means the OS resolves it\n * (slower, and fails if the binary isn't on PATH).\n */\nexport function spawnTargetFor(name: string, cwd: string): { bin: string; preArgs: string[] } {\n const local = resolveLocalBin(name, cwd);\n if (local) return { bin: local, preArgs: [] };\n return { bin: name, preArgs: [] };\n}\n\n/**\n * Build a PATH string that prepends `cwd`'s ancestor `node_modules/.bin` dirs.\n * Use this for env propagation when a child process needs to find sibling\n * bins (e.g. tsup invoking esbuild, vitest invoking its workers).\n */\nexport function buildBinPath(cwd: string, extra: string = process.env.PATH ?? \"\"): string {\n const dirs: string[] = [];\n let dir = resolve(cwd);\n for (let depth = 0; depth < MAX_WALK_DEPTH; depth++) {\n const candidate = resolve(dir, \"node_modules\", \".bin\");\n if (existsSync(candidate)) dirs.push(candidate);\n const parent = dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return [...dirs, extra].filter(Boolean).join(delimiter);\n}\n\n/** Test-only: clear the resolution cache. */\nexport function _resetResolveBinCache(): void {\n cache.clear();\n}\n","/**\n * `geenius-release convex-codegen` — generate `_generated/` shims for Convex\n * variants.\n *\n * Promotes the standalone `geenius-convex-codegen` script (vendored in\n * geenius-payments and shipped as a bin from geenius-db's convex subpackage)\n * into a first-class toolkit command. All Convex-bearing packages can drop\n * their per-package copy and call this instead.\n *\n * Behaviour:\n * - Discovers the convex source dir by trying (in order):\n * opts.src → packages/convex/src → src → cwd\n * - Generates: server.js, server.d.ts, dataModel.d.ts, api.js, api.d.ts\n * - `--check` mode: verify files are up to date; exit 1 if not.\n * - `--clean` mode: delete `_generated/` and exit.\n */\n\nimport {\n existsSync,\n mkdirSync,\n readdirSync,\n readFileSync,\n rmSync,\n writeFileSync,\n} from \"node:fs\";\nimport { join, resolve } from \"node:path\";\n\nconst CODEGEN_VERSION = Object.freeze({\n sdk: \"^1.34.0\",\n template: \"1.34\",\n revision: 3,\n});\n\nconst GENERATED_DIR = \"_generated\";\nconst EXCLUDE_FROM_API = new Set([\n \"api\",\n \"convex.config\",\n \"index\",\n \"schema\",\n \"tables\",\n \"types\",\n \"validators\",\n]);\n\nexport interface RunConvexCodegenOptions {\n cwd?: string;\n /** Override source directory. */\n src?: string;\n /** Check-only — exit 1 if any file would be written/changed. */\n check?: boolean;\n /** Delete the _generated/ directory. */\n clean?: boolean;\n}\n\nexport interface ConvexCodegenResult {\n status: \"passed\" | \"failed\" | \"skipped\";\n exitCode: number;\n srcDir: string;\n files: { name: string; status: \"new\" | \"changed\" | \"unchanged\" }[];\n modules: string[];\n warnings: string[];\n}\n\nexport async function runConvexCodegen(\n opts: RunConvexCodegenOptions = {},\n): Promise<ConvexCodegenResult> {\n const cwd = opts.cwd ?? process.cwd();\n const srcDir = resolveSrcDir(cwd, opts.src);\n\n if (!existsSync(srcDir)) {\n process.stderr.write(`Source directory not found: ${srcDir}\\n`);\n return { status: \"failed\", exitCode: 1, srcDir, files: [], modules: [], warnings: [] };\n }\n\n if (opts.clean) {\n const cleaned = cleanGenerated(srcDir);\n process.stdout.write(cleaned ? \"Cleaned _generated/\\n\" : \"Nothing to clean\\n\");\n return { status: \"passed\", exitCode: 0, srcDir, files: [], modules: [], warnings: [] };\n }\n\n const result = generate(srcDir, !opts.check);\n const newCount = result.files.filter((f) => f.status === \"new\").length;\n const changedCount = result.files.filter((f) => f.status === \"changed\").length;\n const unchangedCount = result.files.filter((f) => f.status === \"unchanged\").length;\n\n for (const file of result.files) {\n const icon = file.status === \"new\" ? \"+\" : file.status === \"changed\" ? \"~\" : \"=\";\n process.stdout.write(` ${icon} ${file.name}\\n`);\n }\n for (const w of result.warnings) process.stdout.write(` warn: ${w}\\n`);\n if (result.modules.length > 0) {\n process.stdout.write(` modules: ${result.modules.join(\", \")}\\n`);\n }\n process.stdout.write(\n `\\n${newCount} created ${changedCount} updated ${unchangedCount} unchanged\\n`,\n );\n\n if (opts.check && (newCount > 0 || changedCount > 0)) {\n process.stderr.write(\"\\n_generated/ files are out of date. Run: geenius-release convex-codegen\\n\");\n return {\n status: \"failed\",\n exitCode: 1,\n srcDir,\n files: result.files,\n modules: result.modules,\n warnings: result.warnings,\n };\n }\n\n return {\n status: \"passed\",\n exitCode: 0,\n srcDir,\n files: result.files,\n modules: result.modules,\n warnings: result.warnings,\n };\n}\n\nfunction resolveSrcDir(cwd: string, override: string | undefined): string {\n if (override) return resolve(cwd, override);\n const monorepoPath = join(cwd, \"packages\", \"convex\", \"src\");\n if (existsSync(monorepoPath)) return monorepoPath;\n const srcPath = join(cwd, \"src\");\n if (existsSync(srcPath)) return srcPath;\n return cwd;\n}\n\nfunction cleanGenerated(srcDir: string): boolean {\n const generatedDir = join(srcDir, GENERATED_DIR);\n if (!existsSync(generatedDir)) return false;\n rmSync(generatedDir, { force: true, recursive: true });\n return true;\n}\n\ninterface GenerateResult {\n files: { name: string; status: \"new\" | \"changed\" | \"unchanged\" }[];\n modules: string[];\n warnings: string[];\n}\n\nfunction generate(srcDir: string, shouldWrite: boolean): GenerateResult {\n const generatedDir = join(srcDir, GENERATED_DIR);\n const modules = discoverModules(srcDir);\n const header = makeHeader();\n const result: GenerateResult = { files: [], modules, warnings: [] };\n\n if (!existsSync(join(srcDir, \"schema.ts\"))) {\n result.warnings.push(\"Missing schema.ts — server and dataModel types will not type-check.\");\n }\n\n const filesToGenerate: Record<string, string> = {\n \"server.js\": serverJs(header),\n \"server.d.ts\": serverDts(header),\n \"dataModel.d.ts\": dataModelDts(header),\n \"api.js\": apiJs(header),\n \"api.d.ts\": apiDts(header, modules),\n };\n\n for (const [fileName, content] of Object.entries(filesToGenerate)) {\n const filePath = join(generatedDir, fileName);\n let status: \"new\" | \"changed\" | \"unchanged\" = \"new\";\n\n if (existsSync(filePath)) {\n const existing = readFileSync(filePath, \"utf8\");\n status = normalize(existing) === normalize(content) ? \"unchanged\" : \"changed\";\n }\n\n result.files.push({ name: fileName, status });\n\n if (shouldWrite && status !== \"unchanged\") {\n mkdirSync(generatedDir, { recursive: true });\n writeFileSync(filePath, content, \"utf8\");\n }\n }\n\n return result;\n}\n\nfunction discoverModules(srcDir: string): string[] {\n if (!existsSync(srcDir)) return [];\n const modules: string[] = [];\n\n const walk = (dir: string, prefix: string): void => {\n for (const entry of readdirSync(dir, { withFileTypes: true })) {\n if (entry.name === GENERATED_DIR) continue;\n if (entry.isDirectory()) {\n walk(join(dir, entry.name), prefix ? `${prefix}/${entry.name}` : entry.name);\n continue;\n }\n const isModuleFile =\n entry.name.endsWith(\".ts\") &&\n !entry.name.endsWith(\".d.ts\") &&\n !entry.name.endsWith(\".test.ts\") &&\n !entry.name.endsWith(\".spec.ts\");\n if (!isModuleFile) continue;\n const moduleName = prefix\n ? `${prefix}/${entry.name.replace(\".ts\", \"\")}`\n : entry.name.replace(\".ts\", \"\");\n if (!EXCLUDE_FROM_API.has(moduleName)) modules.push(moduleName);\n }\n };\n\n walk(srcDir, \"\");\n return modules.sort();\n}\n\nfunction normalize(content: string): string {\n return content\n .replace(/\\* Generated at: .*/g, \"* Generated at: (date)\")\n .replace(/\\r\\n/g, \"\\n\")\n .trim();\n}\n\nfunction makeHeader(): string {\n const generatedOn = new Date().toISOString().split(\"T\")[0];\n return [\n \"/**\",\n \" * THIS CODE IS AUTOMATICALLY GENERATED by @geenius/release-toolkit convex-codegen.\",\n \" *\",\n ` * Template version: ${CODEGEN_VERSION.template}-r${CODEGEN_VERSION.revision}`,\n ` * Generated at: ${generatedOn}`,\n ` * Convex SDK: ${CODEGEN_VERSION.sdk}`,\n \" *\",\n \" * DO NOT EDIT THIS FILE MANUALLY.\",\n \" * To regenerate, run: geenius-release convex-codegen\",\n \" * @module\",\n \" */\",\n \"\",\n ].join(\"\\n\");\n}\n\nfunction serverJs(header: string): string {\n return `${header}\nimport {\n actionGeneric,\n httpActionGeneric,\n internalActionGeneric,\n internalMutationGeneric,\n internalQueryGeneric,\n mutationGeneric,\n queryGeneric,\n} from \"convex/server\";\n\nexport const query = queryGeneric;\nexport const internalQuery = internalQueryGeneric;\nexport const mutation = mutationGeneric;\nexport const internalMutation = internalMutationGeneric;\nexport const action = actionGeneric;\nexport const internalAction = internalActionGeneric;\nexport const httpAction = httpActionGeneric;\n`;\n}\n\nfunction serverDts(header: string): string {\n return `${header}\nimport type {\n ActionBuilder,\n GenericActionCtx,\n GenericDatabaseReader,\n GenericDatabaseWriter,\n GenericMutationCtx,\n GenericQueryCtx,\n HttpActionBuilder,\n MutationBuilder,\n QueryBuilder,\n} from \"convex/server\";\nimport type { DataModel } from \"./dataModel.js\";\n\nexport declare const query: QueryBuilder<DataModel, \"public\">;\nexport declare const internalQuery: QueryBuilder<DataModel, \"internal\">;\nexport declare const mutation: MutationBuilder<DataModel, \"public\">;\nexport declare const internalMutation: MutationBuilder<DataModel, \"internal\">;\nexport declare const action: ActionBuilder<DataModel, \"public\">;\nexport declare const internalAction: ActionBuilder<DataModel, \"internal\">;\nexport declare const httpAction: HttpActionBuilder;\n\nexport type QueryCtx = GenericQueryCtx<DataModel>;\nexport type MutationCtx = GenericMutationCtx<DataModel>;\nexport type ActionCtx = GenericActionCtx<DataModel>;\nexport type DatabaseReader = GenericDatabaseReader<DataModel>;\nexport type DatabaseWriter = GenericDatabaseWriter<DataModel>;\n`;\n}\n\nfunction dataModelDts(header: string): string {\n return `${header}\nimport type {\n DataModelFromSchemaDefinition,\n DocumentByName,\n SystemTableNames,\n TableNamesInDataModel,\n} from \"convex/server\";\nimport type { GenericId } from \"convex/values\";\nimport schema from \"../schema.js\";\n\nexport type DataModel = DataModelFromSchemaDefinition<typeof schema>;\nexport type TableNames = TableNamesInDataModel<DataModel>;\n\nexport type Doc<TableName extends TableNames> = DocumentByName<\n DataModel,\n TableName\n>;\n\nexport type Id<TableName extends TableNames | SystemTableNames> =\n GenericId<TableName>;\n`;\n}\n\nfunction apiJs(header: string): string {\n return `${header}\nimport { anyApi, componentsGeneric } from \"convex/server\";\n\nexport const api = anyApi;\nexport const internal = anyApi;\nexport const components = componentsGeneric();\n`;\n}\n\nfunction apiDts(header: string, modules: string[]): string {\n const imports = modules\n .map((m) => {\n const variableName = m.replaceAll(\"/\", \"_\");\n return `import type * as ${variableName} from \"../${m}.js\";`;\n })\n .join(\"\\n\");\n\n const apiEntries = modules\n .map((m) => {\n const variableName = m.replaceAll(\"/\", \"_\");\n return ` \"${m}\": typeof ${variableName};`;\n })\n .join(\"\\n\");\n\n return `${header}\n${imports}\n\nimport type {\n ApiFromModules,\n FilterApi,\n FunctionReference,\n} from \"convex/server\";\n\ndeclare const fullApi: ApiFromModules<{\n${apiEntries}\n}>;\n\nexport declare const api: FilterApi<\n typeof fullApi,\n FunctionReference<\"query\" | \"mutation\" | \"action\", \"public\">\n>;\n\nexport declare const internal: FilterApi<\n typeof fullApi,\n FunctionReference<\"query\" | \"mutation\" | \"action\", \"internal\">\n>;\n\nexport declare const components: {};\n`;\n}\n","/**\n * `geenius-release convex-build` — build a Convex sub-package.\n *\n * Replaces the per-package `build: \"node ../../scripts/geenius-convex-codegen.mjs --src src && tsup\"`\n * pattern (repeated across the 16 Convex-bearing packages).\n *\n * Equivalent to:\n * geenius-release convex-codegen --src <src> # default: src/\n * tsup\n *\n * Flags:\n * --src <dir> Convex source dir (default: src)\n * --no-codegen Skip codegen, just run tsup\n * --no-build Run codegen only\n * --clean Clean _generated/ instead of building\n */\n\nimport { spawnSync } from \"node:child_process\";\n\nimport { buildBinPath, resolveLocalBin } from \"../lib/resolve-bin.js\";\nimport { runConvexCodegen } from \"./convex-codegen.js\";\n\nexport interface RunConvexBuildOptions {\n cwd?: string;\n src?: string;\n noCodegen?: boolean;\n noBuild?: boolean;\n clean?: boolean;\n /** Builder to invoke (default: \"tsup\"). */\n builder?: \"tsup\" | \"tsc\";\n /** Extra args forwarded to the builder. */\n passthrough?: string[];\n}\n\nexport interface ConvexBuildResult {\n status: \"passed\" | \"failed\";\n exitCode: number;\n steps: { name: string; exitCode: number }[];\n}\n\nexport async function runConvexBuild(opts: RunConvexBuildOptions = {}): Promise<ConvexBuildResult> {\n const cwd = opts.cwd ?? process.cwd();\n const steps: ConvexBuildResult[\"steps\"] = [];\n\n if (opts.clean) {\n const r = await runConvexCodegen({ cwd, ...(opts.src ? { src: opts.src } : {}), clean: true });\n steps.push({ name: \"codegen:clean\", exitCode: r.exitCode });\n return { status: r.status === \"passed\" ? \"passed\" : \"failed\", exitCode: r.exitCode, steps };\n }\n\n if (!opts.noCodegen) {\n const codegen = await runConvexCodegen({ cwd, ...(opts.src ? { src: opts.src } : {}) });\n steps.push({ name: \"codegen\", exitCode: codegen.exitCode });\n if (codegen.status !== \"passed\") {\n return { status: \"failed\", exitCode: codegen.exitCode, steps };\n }\n }\n\n if (!opts.noBuild) {\n const builder = opts.builder ?? \"tsup\";\n const builderBin = resolveLocalBin(builder, cwd) ?? builder;\n const builderArgs = builder === \"tsc\" ? [\"-b\"] : [];\n const result = spawnSync(builderBin, [...builderArgs, ...(opts.passthrough ?? [])], {\n cwd,\n stdio: \"inherit\",\n env: { ...process.env, PATH: buildBinPath(cwd) },\n });\n const exitCode = result.status ?? 1;\n steps.push({ name: builder, exitCode });\n if (exitCode !== 0) {\n return { status: \"failed\", exitCode, steps };\n }\n }\n\n return { status: \"passed\", exitCode: 0, steps };\n}\n","/**\n * `geenius-release coverage` — canonical vitest --coverage runner.\n *\n * Collapses run-coverage.mjs (5) and the various ad-hoc vitest invocations.\n *\n * Behaviour:\n * 1. Clean root + per-variant coverage/ directories.\n * 2. Run `vitest run --coverage` at the root, excluding tests from any\n * variant packages flagged as `separateCoverage: true` (or matching\n * `--separate-coverage <framework>`).\n * 3. For each separate-coverage package, run vitest inside that package\n * directory so its own coverage report is emitted.\n *\n * Emits the same JSON shape downstream `coverage-report` expects.\n */\n\nimport { spawnSync } from \"node:child_process\";\nimport { existsSync, rmSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\n\nimport { buildBinPath, resolveLocalBin } from \"../lib/resolve-bin.js\";\nimport { packageVariants } from \"../lib/variants-rich.js\";\n\nexport interface RunCoverageOptions {\n cwd?: string;\n /** Run separate vitest passes for variants whose framework matches. */\n separateFrameworks?: string[];\n /** Explicit list of packageDirs to run separately (overrides framework match). */\n separatePackageDirs?: string[];\n /** Skip the cleanup phase. */\n noClean?: boolean;\n /** Strict mode flag forwarded to tests via GEENIUS_COVERAGE_STRICT. */\n strict?: boolean;\n /** Extra args appended to every vitest call. */\n passthrough?: string[];\n}\n\nexport interface CoverageResult {\n status: \"passed\" | \"failed\" | \"skipped\";\n exitCode: number;\n passes: { label: string; cwd: string; exitCode: number }[];\n}\n\nexport async function runCoverage(opts: RunCoverageOptions = {}): Promise<CoverageResult> {\n const cwd = opts.cwd ?? process.cwd();\n\n const separateDirs = new Set<string>(opts.separatePackageDirs ?? []);\n if (opts.separateFrameworks?.length) {\n for (const framework of opts.separateFrameworks) {\n for (const v of packageVariants({ rootDir: cwd })) {\n if (v.framework === framework && v.packageDir) separateDirs.add(v.packageDir);\n }\n }\n }\n\n if (!opts.noClean) {\n rmSync(resolve(cwd, \"coverage\"), { force: true, recursive: true });\n for (const dir of separateDirs) {\n rmSync(resolve(cwd, dir, \"coverage\"), { force: true, recursive: true });\n }\n }\n\n const env = {\n ...process.env,\n GEENIUS_COVERAGE_STRICT: opts.strict ? \"1\" : (process.env.GEENIUS_COVERAGE_STRICT ?? \"0\"),\n };\n\n const passes: CoverageResult[\"passes\"] = [];\n\n // Root pass — spawn vitest directly (skip pnpm exec). Exclude tests from\n // separate-coverage packages.\n const vitestBin = resolveLocalBin(\"vitest\", cwd) ?? \"vitest\";\n const rootExcludes = [...separateDirs].flatMap((dir) => [\n \"--exclude\",\n `${dir}/src/**/*.test.{ts,tsx}`,\n ]);\n const rootArgs = [\"run\", \"--coverage\", ...rootExcludes, ...(opts.passthrough ?? [])];\n const rootResult = spawnSync(vitestBin, rootArgs, {\n cwd,\n env: { ...env, PATH: buildBinPath(cwd) },\n stdio: \"inherit\",\n });\n passes.push({ label: \"root\", cwd, exitCode: rootResult.status ?? 1 });\n if (rootResult.status !== 0) {\n return { status: \"failed\", exitCode: rootResult.status ?? 1, passes };\n }\n\n // Per-package passes. Resolve vitest from each package dir (each may have\n // its own .pnpm install slot under pnpm isolated linker).\n for (const dir of separateDirs) {\n const pkgCwd = resolve(cwd, dir);\n if (!existsSync(pkgCwd)) continue;\n const pkgVitest = resolveLocalBin(\"vitest\", pkgCwd) ?? vitestBin;\n const pkgResult = spawnSync(\n pkgVitest,\n [\n \"run\",\n \"--coverage\",\n \"--coverage.reporter=text\",\n \"--coverage.reporter=lcov\",\n \"--coverage.reporter=json-summary\",\n \"--config\",\n \"vitest.config.ts\",\n ...(opts.passthrough ?? []),\n ],\n { cwd: pkgCwd, env: { ...env, PATH: buildBinPath(pkgCwd) }, stdio: \"inherit\" },\n );\n passes.push({ label: dir, cwd: pkgCwd, exitCode: pkgResult.status ?? 1 });\n if (pkgResult.status !== 0) {\n return { status: \"failed\", exitCode: pkgResult.status ?? 1, passes };\n }\n }\n\n return { status: \"passed\", exitCode: 0, passes };\n}\n","/**\n * `geenius-release coverage-report` — aggregate the coverage summary that\n * vitest (or any tool writing coverage-summary.json / coverage-final.json)\n * produced. Replaces 36 copies of `coverage-report.mjs`.\n *\n * Reads `coverage/coverage-summary.json` (default v8/istanbul output path).\n * Optional thresholds: minimum % lines / branches / functions / statements.\n */\n\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\n\nimport { resolveConfigPath, resolvePaths } from \"../lib/paths.js\";\nimport { writeReport } from \"../lib/reporter.js\";\nimport { rollupCommandStatus } from \"../lib/scanner.js\";\nimport type { CommandReport, StepReport } from \"../types.js\";\n\nexport interface CoverageThresholds {\n lines?: number;\n branches?: number;\n functions?: number;\n statements?: number;\n}\n\nexport interface RunCoverageReportOptions {\n cwd?: string;\n /** Path to coverage-summary.json. Default: `coverage/coverage-summary.json`. */\n summaryPath?: string;\n /** Minimum percentages. Default: pull from `coverage-thresholds.json` if present\n * (legacy flat shape). When `thresholdFile` is set, the per-subpackage shape\n * there takes precedence. */\n thresholds?: CoverageThresholds;\n /** Path to a richer per-subpackage threshold JSON (shape:\n * `{ subpackages: { <name>: { thresholds: { lines, statements, branches, functions }, required?, kind? } } }`).\n * When set, the toolkit emits per-subpackage results in addition to the\n * totals row. Subpackages keyed by name look for `coverage/coverage-summary.json`\n * files at `packages/<name>/coverage/`, `<name>/coverage/`, or matching prefix\n * inside the root summary. */\n thresholdFile?: string;\n /** Write a Markdown report to this path. */\n output?: string;\n /** Write a structured JSON report to this path. */\n json?: string;\n /** Treat any subpackage below threshold as a failure (default: true when\n * `thresholdFile` is set, false otherwise — matches legacy --fail-on-gaps\n * flag in per-package scripts). */\n failOnGaps?: boolean;\n /** Whether absent coverage is `failed` (default) or `skipped`. */\n optional?: boolean;\n quiet?: boolean;\n}\n\ninterface SubpackageThreshold {\n thresholds?: CoverageThresholds;\n required?: boolean;\n kind?: string;\n}\n\ninterface SubpackageThresholdFile {\n subpackages?: Record<string, SubpackageThreshold>;\n}\n\ninterface CoverageSummary {\n total?: {\n lines?: { pct?: number };\n branches?: { pct?: number };\n functions?: { pct?: number };\n statements?: { pct?: number };\n };\n}\n\nexport async function runCoverageReport(\n opts: RunCoverageReportOptions = {},\n): Promise<CommandReport> {\n const startedAtNs = process.hrtime.bigint();\n const startedAt = new Date().toISOString();\n const paths = resolvePaths(opts.cwd);\n const summaryPath = resolveConfigPath(\n paths.packageRoot,\n opts.summaryPath ?? \"coverage/coverage-summary.json\",\n );\n const thresholdFilePath = opts.thresholdFile\n ? resolveConfigPath(paths.packageRoot, opts.thresholdFile)\n : null;\n const subpackageThresholds = thresholdFilePath\n ? readSubpackageThresholdFile(thresholdFilePath)\n : null;\n const thresholds = opts.thresholds ?? readThresholdsFile(paths.packageRoot) ?? {};\n\n const subpackageRows: SubpackageRow[] = [];\n const steps: StepReport[] = [];\n\n if (!existsSync(summaryPath)) {\n steps.push({\n name: \"coverage-summary\",\n status: opts.optional ? \"skipped\" : \"missing\",\n reason: `${summaryPath} not found (run vitest --coverage first, or pass --optional)`,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n });\n return finalize();\n }\n\n let summary: CoverageSummary;\n try {\n summary = JSON.parse(readFileSync(summaryPath, \"utf8\")) as CoverageSummary;\n } catch (error) {\n steps.push({\n name: \"coverage-summary\",\n status: \"failed\",\n reason: `failed to parse ${summaryPath}: ${(error as Error).message}`,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n });\n return finalize();\n }\n\n const totals = {\n lines: summary.total?.lines?.pct ?? 0,\n branches: summary.total?.branches?.pct ?? 0,\n functions: summary.total?.functions?.pct ?? 0,\n statements: summary.total?.statements?.pct ?? 0,\n } as const;\n\n for (const metric of [\"lines\", \"branches\", \"functions\", \"statements\"] as const) {\n const measured = totals[metric];\n const threshold = thresholds[metric];\n if (threshold === undefined) {\n steps.push({\n name: `${metric} ${measured.toFixed(2)}%`,\n status: \"passed\",\n durationMs: 0,\n });\n continue;\n }\n if (measured < threshold) {\n steps.push({\n name: `${metric} ${measured.toFixed(2)}%`,\n status: \"failed\",\n reason: `below threshold ${threshold}%`,\n durationMs: 0,\n });\n } else {\n steps.push({\n name: `${metric} ${measured.toFixed(2)}%`,\n status: \"passed\",\n reason: `≥ ${threshold}%`,\n durationMs: 0,\n });\n }\n }\n\n // Per-subpackage rollup, if a threshold file was provided.\n if (subpackageThresholds) {\n for (const [name, entry] of Object.entries(subpackageThresholds.subpackages ?? {})) {\n const row = evaluateSubpackage(paths.packageRoot, name, entry);\n subpackageRows.push(row);\n const failed = row.status === \"missing-required\" || row.status === \"below-threshold\";\n steps.push({\n name: `subpackage ${name}`,\n status: failed ? \"failed\" : row.status === \"missing-optional\" ? \"skipped\" : \"passed\",\n reason: row.message,\n durationMs: 0,\n });\n }\n }\n\n return finalize();\n\n function finalize(): CommandReport {\n const failOnGaps = opts.failOnGaps ?? Boolean(subpackageThresholds);\n let status = rollupCommandStatus(steps);\n // When the caller opted out of failing on gaps, demote ONLY subpackage-row\n // failures. Other failures (missing summary, parse errors) still propagate.\n if (subpackageThresholds && !failOnGaps && status === \"failed\") {\n const nonSubpackageFailure = steps.some(\n (s) => s.status === \"failed\" && !s.name.startsWith(\"subpackage \"),\n );\n if (!nonSubpackageFailure) status = \"passed\";\n }\n const report: CommandReport = {\n command: \"coverage-report\",\n status,\n startedAt,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n steps,\n meta: { summaryPath, thresholds, subpackages: subpackageRows },\n };\n writeReport(report, {\n reportDir: paths.reportDir,\n ...(opts.quiet === true ? { quiet: true } : {}),\n });\n if (opts.output) {\n writeMarkdown(opts.output, paths.packageRoot, report, subpackageRows);\n }\n if (opts.json) {\n const target = resolveConfigPath(paths.packageRoot, opts.json);\n mkdirSync(dirname(target), { recursive: true });\n writeFileSync(target, `${JSON.stringify(report, null, 2)}\\n`, \"utf8\");\n }\n return report;\n }\n}\n\n/* ───────── Subpackage helpers ───────── */\n\ninterface SubpackageRow {\n name: string;\n required: boolean;\n kind: string | null;\n status: \"passed\" | \"below-threshold\" | \"missing-required\" | \"missing-optional\" | \"no-thresholds\";\n totals: Required<CoverageThresholds>;\n thresholds: CoverageThresholds;\n message: string;\n}\n\nfunction evaluateSubpackage(\n packageRoot: string,\n name: string,\n entry: SubpackageThreshold,\n): SubpackageRow {\n const thresholds = entry.thresholds ?? {};\n const required = entry.required !== false;\n const kind = entry.kind ?? null;\n const summary = findSubpackageSummary(packageRoot, name);\n if (!summary) {\n return {\n name,\n required,\n kind,\n status: required ? \"missing-required\" : \"missing-optional\",\n totals: { lines: 0, branches: 0, functions: 0, statements: 0 },\n thresholds,\n message: required\n ? `${name} required but no coverage-summary.json found`\n : `${name} optional, no coverage found`,\n };\n }\n const totals = {\n lines: summary.total?.lines?.pct ?? 0,\n branches: summary.total?.branches?.pct ?? 0,\n functions: summary.total?.functions?.pct ?? 0,\n statements: summary.total?.statements?.pct ?? 0,\n };\n if (Object.keys(thresholds).length === 0) {\n return {\n name,\n required,\n kind,\n status: \"no-thresholds\",\n totals,\n thresholds,\n message: `${name} has no thresholds; informational only`,\n };\n }\n const gaps: string[] = [];\n for (const metric of [\"lines\", \"branches\", \"functions\", \"statements\"] as const) {\n const min = thresholds[metric];\n if (min !== undefined && totals[metric] < min) {\n gaps.push(`${metric} ${totals[metric].toFixed(2)} < ${min}`);\n }\n }\n if (gaps.length === 0) {\n return {\n name,\n required,\n kind,\n status: \"passed\",\n totals,\n thresholds,\n message: `${name} OK`,\n };\n }\n return {\n name,\n required,\n kind,\n status: \"below-threshold\",\n totals,\n thresholds,\n message: `${name}: ${gaps.join(\", \")}`,\n };\n}\n\nfunction findSubpackageSummary(packageRoot: string, name: string): CoverageSummary | null {\n const candidates = [\n join(packageRoot, \"packages\", name, \"coverage\", \"coverage-summary.json\"),\n join(packageRoot, name, \"coverage\", \"coverage-summary.json\"),\n join(packageRoot, \"coverage\", name, \"coverage-summary.json\"),\n ];\n for (const path of candidates) {\n if (existsSync(path)) {\n try {\n return JSON.parse(readFileSync(path, \"utf8\")) as CoverageSummary;\n } catch {\n return null;\n }\n }\n }\n return null;\n}\n\nfunction readSubpackageThresholdFile(path: string): SubpackageThresholdFile | null {\n if (!existsSync(path)) return null;\n try {\n return JSON.parse(readFileSync(path, \"utf8\")) as SubpackageThresholdFile;\n } catch {\n return null;\n }\n}\n\nfunction writeMarkdown(\n outputPath: string,\n packageRoot: string,\n report: CommandReport,\n rows: readonly SubpackageRow[],\n): void {\n const target = resolveConfigPath(packageRoot, outputPath);\n mkdirSync(dirname(target), { recursive: true });\n const lines: string[] = [`# Coverage report`, ``, `Status: **${report.status}**`, ``];\n if (rows.length > 0) {\n lines.push(\n `| subpackage | kind | required | status | lines | branches | functions | statements |`,\n `|---|---|---|---|---|---|---|---|`,\n );\n for (const row of rows) {\n lines.push(\n `| ${row.name} | ${row.kind ?? \"\"} | ${row.required ? \"yes\" : \"no\"} | ${row.status} | ${row.totals.lines.toFixed(2)} | ${row.totals.branches.toFixed(2)} | ${row.totals.functions.toFixed(2)} | ${row.totals.statements.toFixed(2)} |`,\n );\n }\n lines.push(\"\");\n }\n for (const step of report.steps) {\n lines.push(`- **${step.status}** ${step.name}${step.reason ? ` — ${step.reason}` : \"\"}`);\n }\n writeFileSync(target, `${lines.join(\"\\n\")}\\n`, \"utf8\");\n}\n\nfunction readThresholdsFile(packageRoot: string): CoverageThresholds | undefined {\n const path = join(packageRoot, \"coverage-thresholds.json\");\n if (!existsSync(path)) return undefined;\n try {\n return JSON.parse(readFileSync(path, \"utf8\")) as CoverageThresholds;\n } catch {\n return undefined;\n }\n}\n\nfunction nsToMs(ns: bigint): number {\n return Number(ns) / 1_000_000;\n}\n","/**\n * `geenius-release db-migrations` — run migration tests across db-provider\n * variants.\n *\n * Collapses db-migrations-check.mjs (4 packages). For every variant with\n * kind `db-provider` and `tests.migrations: true`, runs:\n * pnpm --filter ./<packageDir> test -- -t migration\n *\n * Fails fast on the first non-zero status by default.\n */\n\nimport { spawnSync } from \"node:child_process\";\nimport { existsSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\n\nimport { variantsByKind } from \"../lib/variants-rich.js\";\n\nexport interface RunDbMigrationsOptions {\n cwd?: string;\n /** Only run providers whose name matches one of these. */\n only?: string[];\n /** Don't bail on first failure. */\n continueOnFailure?: boolean;\n /** Test-name pattern passed to vitest (default: \"migration\"). */\n pattern?: string;\n}\n\nexport interface DbMigrationsResult {\n status: \"passed\" | \"failed\" | \"skipped\";\n exitCode: number;\n ran: { name: string; packageDir: string; exitCode: number }[];\n}\n\nexport async function runDbMigrations(\n opts: RunDbMigrationsOptions = {},\n): Promise<DbMigrationsResult> {\n const cwd = opts.cwd ?? process.cwd();\n const pattern = opts.pattern ?? \"migration\";\n const only = opts.only && new Set(opts.only);\n\n const providers = variantsByKind(\"db-provider\", { rootDir: cwd }).filter((v) => {\n if (!v.tests?.migrations) return false;\n if (only && !only.has(v.name)) return false;\n return true;\n });\n\n if (providers.length === 0) {\n return { status: \"skipped\", exitCode: 0, ran: [] };\n }\n\n const ran: DbMigrationsResult[\"ran\"] = [];\n let failed = false;\n\n for (const provider of providers) {\n const packageDir = provider.packageDir ?? \"\";\n if (!packageDir || !existsSync(resolve(cwd, packageDir))) {\n process.stderr.write(`Missing migration provider package: ${packageDir}\\n`);\n ran.push({ name: provider.name, packageDir, exitCode: 1 });\n failed = true;\n if (!opts.continueOnFailure) break;\n continue;\n }\n\n const result = spawnSync(\n \"pnpm\",\n [\"--filter\", `./${packageDir}`, \"test\", \"--\", \"-t\", pattern],\n { cwd, stdio: \"inherit\" },\n );\n const exitCode = result.status ?? 1;\n ran.push({ name: provider.name, packageDir, exitCode });\n if (exitCode !== 0) {\n failed = true;\n if (!opts.continueOnFailure) break;\n }\n }\n\n return {\n status: failed ? \"failed\" : \"passed\",\n exitCode: failed ? 1 : 0,\n ran,\n };\n}\n","/**\n * `geenius-release diff-coverage` — changed-line coverage diff against a base\n * git ref. Replaces 22 copies of `diff-coverage.mjs`.\n *\n * Computes which source lines were added or modified between `--base` (default\n * `origin/main`) and `HEAD`, then walks the latest `coverage-final.json` to\n * check whether every such line was hit. Fails if the changed-line coverage\n * percentage falls below `--min`.\n */\n\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\n\nimport { resolveConfigPath, resolvePaths } from \"../lib/paths.js\";\nimport { writeReport } from \"../lib/reporter.js\";\nimport { rollupCommandStatus } from \"../lib/scanner.js\";\nimport { runCommand } from \"../lib/spawn.js\";\nimport type { CommandReport, StepReport } from \"../types.js\";\n\nexport interface RunDiffCoverageOptions {\n cwd?: string;\n /** Git ref to diff against. Default: `origin/main`. */\n base?: string;\n /** Path to vitest's coverage-final.json. Default: `coverage/coverage-final.json`. */\n coveragePath?: string;\n /** Minimum changed-line coverage % required to pass. Default: 80. */\n min?: number;\n /** When `process.env.CI === \"true\"`, use this threshold instead of `min`. */\n minCi?: number;\n /** When `process.env.CI` is unset/falsy, use this threshold. Overrides `min`\n * for local runs. Common pattern: 0 locally + strict in CI. */\n minLocal?: number;\n /** Skip if coverage hasn't been run. Default: false. */\n optional?: boolean;\n quiet?: boolean;\n}\n\ninterface IstanbulFileCoverage {\n path: string;\n statementMap?: Record<string, { start: { line: number }; end: { line: number } }>;\n s?: Record<string, number>;\n}\n\nexport async function runDiffCoverage(opts: RunDiffCoverageOptions = {}): Promise<CommandReport> {\n const startedAtNs = process.hrtime.bigint();\n const startedAt = new Date().toISOString();\n const paths = resolvePaths(opts.cwd);\n const base = opts.base ?? \"origin/main\";\n const isCi = process.env.CI === \"true\" || process.env.CI === \"1\";\n const min =\n isCi && opts.minCi !== undefined\n ? opts.minCi\n : !isCi && opts.minLocal !== undefined\n ? opts.minLocal\n : (opts.min ?? 80);\n const coveragePath = resolveConfigPath(\n paths.packageRoot,\n opts.coveragePath ?? \"coverage/coverage-final.json\",\n );\n\n const steps: StepReport[] = [];\n\n if (!existsSync(coveragePath)) {\n steps.push({\n name: \"coverage-final\",\n status: opts.optional ? \"skipped\" : \"missing\",\n reason: `${coveragePath} not found (run vitest --coverage first, or pass --optional)`,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n });\n return finalize();\n }\n\n // git is required for the diff; if it's not present, skip-or-fail.\n const gitVer = runCommand(\"git\", [\"--version\"], { cwd: paths.packageRoot });\n if (gitVer.missing) {\n steps.push({\n name: \"git\",\n status: opts.optional ? \"skipped\" : \"missing\",\n reason: \"git not on PATH\",\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n });\n return finalize();\n }\n\n // Compute changed lines: `git diff --unified=0 <base>...HEAD -- '*.ts' '*.tsx'`.\n const diff = runCommand(\n \"git\",\n [\n \"diff\",\n \"--unified=0\",\n `${base}...HEAD`,\n \"--\",\n \"*.ts\",\n \"*.tsx\",\n \"*.js\",\n \"*.jsx\",\n \"*.mts\",\n \"*.cts\",\n ],\n { cwd: paths.packageRoot, timeoutMs: 30_000 },\n );\n if (diff.status !== 0) {\n steps.push({\n name: \"git diff\",\n status: \"failed\",\n reason: `git diff ${base}...HEAD exited ${diff.status ?? \"?\"}`,\n output: diff.stderr.slice(0, 512),\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n });\n return finalize();\n }\n\n const changedLines = parseDiffChangedLines(diff.stdout, paths.packageRoot);\n if (changedLines.size === 0) {\n steps.push({\n name: \"changed lines 0\",\n status: \"passed\",\n reason: `no source-line changes vs ${base}`,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n });\n return finalize();\n }\n\n // Load istanbul coverage.\n let coverage: Record<string, IstanbulFileCoverage>;\n try {\n coverage = JSON.parse(readFileSync(coveragePath, \"utf8\")) as Record<\n string,\n IstanbulFileCoverage\n >;\n } catch (error) {\n steps.push({\n name: \"coverage-final\",\n status: \"failed\",\n reason: `failed to parse ${coveragePath}: ${(error as Error).message}`,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n });\n return finalize();\n }\n\n const stats = scoreChangedLines(changedLines, coverage, paths.packageRoot);\n\n steps.push({\n name: `changed-line coverage ${stats.percent.toFixed(2)}%`,\n status: stats.percent >= min ? \"passed\" : \"failed\",\n reason: `${stats.covered}/${stats.total} lines covered; threshold ${min}%`,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n });\n\n return finalize();\n\n function finalize(): CommandReport {\n const status = rollupCommandStatus(steps);\n const report: CommandReport = {\n command: \"diff-coverage\",\n status,\n startedAt,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n steps,\n meta: { base, min, coveragePath },\n };\n writeReport(report, {\n reportDir: paths.reportDir,\n ...(opts.quiet === true ? { quiet: true } : {}),\n });\n return report;\n }\n}\n\n/* ───────── Diff parsing ───────── */\n\n/** Build a map of absolute-file-path → Set<lineNumber> from unified-diff output. */\nfunction parseDiffChangedLines(diff: string, packageRoot: string): Map<string, Set<number>> {\n const out = new Map<string, Set<number>>();\n let currentFile: string | null = null;\n let lineCursor = 0;\n for (const line of diff.split(/\\r?\\n/g)) {\n if (line.startsWith(\"+++ \")) {\n // `+++ b/src/index.ts` — strip the `b/` prefix\n const relPath = line.slice(4).replace(/^b\\//, \"\").trim();\n if (relPath === \"/dev/null\") {\n currentFile = null;\n continue;\n }\n currentFile = resolve(packageRoot, relPath);\n if (!out.has(currentFile)) out.set(currentFile, new Set());\n continue;\n }\n if (line.startsWith(\"@@\") && currentFile) {\n // `@@ -<oldStart>,<oldCount> +<newStart>,<newCount> @@`\n const m = /\\+(\\d+)(?:,(\\d+))?/.exec(line);\n if (m?.[1]) {\n lineCursor = Number.parseInt(m[1], 10);\n }\n continue;\n }\n if (!currentFile) continue;\n if (line.startsWith(\"+\") && !line.startsWith(\"+++\")) {\n out.get(currentFile)?.add(lineCursor);\n lineCursor += 1;\n } else if (line.startsWith(\"-\") && !line.startsWith(\"---\")) {\n // deletion — no line in the new file at this cursor\n } else if (line.startsWith(\" \")) {\n lineCursor += 1;\n }\n // ignore \"\\" and blank lines\n }\n return out;\n}\n\nfunction scoreChangedLines(\n changedLines: Map<string, Set<number>>,\n coverage: Record<string, IstanbulFileCoverage>,\n packageRoot: string,\n): { covered: number; total: number; percent: number } {\n // Index coverage by absolute path.\n const byPath = new Map<string, IstanbulFileCoverage>();\n for (const entry of Object.values(coverage)) {\n const abs = entry.path?.startsWith(\"/\") ? entry.path : resolve(packageRoot, entry.path ?? \"\");\n if (abs) byPath.set(abs, entry);\n }\n\n let total = 0;\n let covered = 0;\n for (const [file, lines] of changedLines) {\n const fileCov = byPath.get(file);\n if (!fileCov?.statementMap || !fileCov.s) {\n // File not in coverage report — count its lines as uncovered.\n total += lines.size;\n continue;\n }\n for (const line of lines) {\n total += 1;\n // A line is \"covered\" iff at least one statement starting at that line\n // has hit-count > 0.\n let hit = false;\n for (const [stmtKey, stmt] of Object.entries(fileCov.statementMap)) {\n if (stmt.start.line <= line && stmt.end.line >= line) {\n if ((fileCov.s?.[stmtKey] ?? 0) > 0) {\n hit = true;\n break;\n }\n }\n }\n if (hit) covered += 1;\n }\n }\n\n const percent = total === 0 ? 100 : (covered / total) * 100;\n return { covered, total, percent };\n}\n\nfunction nsToMs(ns: bigint): number {\n return Number(ns) / 1_000_000;\n}\n","/**\n * `geenius-release e2e` — canonical Playwright runner.\n *\n * Collapses e2e-runner.mjs (5) + playwright-projects.mjs (2).\n *\n * Responsibilities:\n * 1. Reserve ephemeral ports per UI harness variant and inject them as\n * `<PACKAGE>_E2E_<VARIANT>_PORT` env vars (mirroring the existing\n * per-package e2e-runner pattern).\n * 2. Derive `--project=<variantName>-<browser>` filters from variants.json\n * when callers pass `--projects` or `--all-browsers`.\n * 3. Forward all other args to `pnpm exec playwright test`.\n */\n\nimport { spawnSync } from \"node:child_process\";\nimport { createServer } from \"node:net\";\nimport { readFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\n\nimport { buildBinPath, resolveLocalBin } from \"../lib/resolve-bin.js\";\nimport { packageVariants } from \"../lib/variants-rich.js\";\n\nexport interface RunE2EOptions {\n cwd?: string;\n /** Emit `--project=<variant>-<browser>` projects for every e2e variant. */\n projects?: boolean;\n /** When true with projects, include every browser declared on each variant. */\n allBrowsers?: boolean;\n /** Specific browser to use (default: chromium) when --projects. */\n browser?: string;\n /** Env prefix for port vars. Default: derived from package.json name. */\n envPrefix?: string;\n /** Extra args forwarded to `playwright test`. */\n passthrough?: string[];\n /** Print resolved env + command and exit. */\n print?: boolean;\n}\n\nexport interface E2EResult {\n status: \"passed\" | \"failed\" | \"skipped\";\n exitCode: number;\n ports: Record<string, string>;\n projects: string[];\n}\n\nexport async function runE2E(opts: RunE2EOptions = {}): Promise<E2EResult> {\n const cwd = opts.cwd ?? process.cwd();\n const variants = packageVariants({ rootDir: cwd, includeOutOfScope: false });\n\n const env = { ...process.env };\n const ports = await reservePorts(cwd, variants, env, opts.envPrefix);\n\n const projects = opts.projects ? deriveProjects(variants, opts.browser, opts.allBrowsers) : [];\n\n // Spawn playwright directly — skip pnpm exec overhead for parallel agents.\n const playwrightBin = resolveLocalBin(\"playwright\", cwd) ?? \"playwright\";\n const args = [\"test\", ...projects.map((p) => `--project=${p}`), ...(opts.passthrough ?? [])];\n\n if (opts.print) {\n process.stdout.write(`# env additions:\\n`);\n for (const [k, v] of Object.entries(ports)) process.stdout.write(`${k}=${v}\\n`);\n process.stdout.write(`${playwrightBin} ${args.join(\" \")}\\n`);\n return { status: \"passed\", exitCode: 0, ports, projects };\n }\n\n const result = spawnSync(playwrightBin, args, {\n cwd,\n stdio: \"inherit\",\n env: { ...env, PATH: buildBinPath(cwd) },\n });\n const exitCode = result.status ?? 1;\n return {\n status: exitCode === 0 ? \"passed\" : \"failed\",\n exitCode,\n ports,\n projects,\n };\n}\n\n/**\n * Per-package convention is `<PACKAGE>_E2E_<VARIANT>_PORT`. Each UI-bearing\n * e2e variant gets its own port; callers can pre-set any of them.\n */\nasync function reservePorts(\n cwd: string,\n variants: ReturnType<typeof packageVariants>,\n env: Record<string, string | undefined>,\n envPrefix: string | undefined,\n): Promise<Record<string, string>> {\n const prefix = envPrefix ?? derivePrefix(cwd);\n const e2eVariants = variants.filter((v) => v.tests?.e2e && v.harness);\n const used = new Set<string>();\n const ports: Record<string, string> = {};\n\n for (const v of e2eVariants) {\n const key = `${prefix}_E2E_${v.name.toUpperCase().replaceAll(/[^A-Z0-9]/g, \"_\")}_PORT`;\n let port = env[key];\n while (!port || used.has(port)) {\n port = await reserveEphemeralPort();\n }\n env[key] = port;\n used.add(port);\n ports[key] = port;\n }\n\n return ports;\n}\n\nfunction reserveEphemeralPort(): Promise<string> {\n return new Promise((ok, fail) => {\n const server = createServer();\n server.unref();\n server.on(\"error\", fail);\n server.listen(0, \"127.0.0.1\", () => {\n const address = server.address();\n const port = typeof address === \"object\" && address !== null ? address.port : null;\n server.close((error) => {\n if (error) return fail(error);\n if (port === null) return fail(new Error(\"Could not reserve an e2e harness port.\"));\n ok(String(port));\n });\n });\n });\n}\n\nfunction deriveProjects(\n variants: ReturnType<typeof packageVariants>,\n browser: string | undefined,\n allBrowsers: boolean | undefined,\n): string[] {\n return variants\n .filter((v) => v.tests?.e2e && v.harness)\n .flatMap((v) => {\n const declared = (v as unknown as { browsers?: string[] }).browsers;\n const browsers = allBrowsers ? (declared ?? [\"chromium\"]) : [browser ?? \"chromium\"];\n return browsers.map((b) => `${v.name}-${b}`);\n });\n}\n\nfunction derivePrefix(cwd: string): string {\n try {\n const pkg = JSON.parse(readFileSync(resolve(cwd, \"package.json\"), \"utf8\")) as {\n name?: string;\n };\n const name = pkg.name ?? \"PKG\";\n return name.replace(/^@[^/]+\\//, \"\").toUpperCase().replaceAll(/[^A-Z0-9]/g, \"_\");\n } catch {\n return \"PKG\";\n }\n}\n","/**\n * Verify sibling Geenius packages linked via `link:` have built dists that\n * are at least as new as their `src/` tree. Stale or missing sibling dists\n * are the root cause of the recurring TS7016 / \"cannot resolve declarations\"\n * failures during nested gauntlet runs.\n */\n\nimport { existsSync, readdirSync, readFileSync, statSync } from \"node:fs\";\nimport { join, resolve } from \"node:path\";\n\nimport { runCommand } from \"./spawn.js\";\n\nexport interface SiblingDistCheck {\n name: string;\n /** Absolute path to the linked sibling package root. */\n path: string;\n /** `fresh` — dist newer than src; `stale` — dist older than src;\n * `missing` — no dist or no entry files; `unresolved` — link target not on disk;\n * `no-src` — no src/ tree, freshness check N/A. */\n status: \"fresh\" | \"stale\" | \"missing\" | \"unresolved\" | \"no-src\";\n}\n\nexport interface DistFreshnessOptions {\n /** Auto-build stale or missing siblings via `pnpm --dir <path> build`. */\n autoBuild?: boolean;\n /** Timeout per build invocation (ms). Default: 180_000. */\n buildTimeoutMs?: number;\n}\n\nexport interface DistFreshnessResult {\n checks: SiblingDistCheck[];\n /** Names rebuilt during this call. */\n rebuilt: string[];\n /** Names where the rebuild attempt failed. */\n failed: string[];\n}\n\nconst FALLBACK_ENTRY_FILES = [\"dist/index.js\", \"dist/index.d.ts\"] as const;\n\n/**\n * Inspect every `link:` Geenius dep declared in the package manifest at `cwd`,\n * verify its built output is fresh, and (if requested) rebuild stale ones.\n */\nexport function checkSiblingDistFreshness(\n cwd: string,\n opts: DistFreshnessOptions = {},\n): DistFreshnessResult {\n const manifestPath = join(cwd, \"package.json\");\n if (!existsSync(manifestPath)) {\n return { checks: [], rebuilt: [], failed: [] };\n }\n const manifest = JSON.parse(readFileSync(manifestPath, \"utf8\")) as {\n dependencies?: Record<string, string>;\n };\n const deps = Object.entries(manifest.dependencies ?? {}).filter(\n ([name, spec]) =>\n name.startsWith(\"@geenius/\") && typeof spec === \"string\" && spec.startsWith(\"link:\"),\n );\n\n const checks: SiblingDistCheck[] = deps.map(([name, spec]) => {\n const target = resolve(cwd, (spec as string).slice(\"link:\".length));\n if (!existsSync(target)) {\n return { name, path: target, status: \"unresolved\" };\n }\n return { name, path: target, status: classify(target) };\n });\n\n const rebuilt: string[] = [];\n const failed: string[] = [];\n if (opts.autoBuild) {\n for (const check of checks) {\n if (check.status !== \"stale\" && check.status !== \"missing\") continue;\n const r = runCommand(\"pnpm\", [\"--dir\", check.path, \"run\", \"build\"], {\n cwd: check.path,\n timeoutMs: opts.buildTimeoutMs ?? 180_000,\n });\n if (r.status === 0) {\n rebuilt.push(check.name);\n check.status = classify(check.path);\n } else {\n failed.push(check.name);\n }\n }\n }\n\n return { checks, rebuilt, failed };\n}\n\nfunction classify(packageRoot: string): SiblingDistCheck[\"status\"] {\n const srcDir = join(packageRoot, \"src\");\n const entryFiles = resolveEntryFiles(packageRoot);\n const hasSrc = existsSync(srcDir);\n const hasEntries = entryFiles.every((rel) => existsSync(join(packageRoot, rel)));\n if (!hasEntries) return hasSrc ? \"missing\" : \"no-src\";\n if (!hasSrc) return \"no-src\";\n const oldestDist = entryFiles.reduce<number>((acc, rel) => {\n const m = safeMtime(join(packageRoot, rel));\n return acc === 0 ? m : Math.min(acc, m);\n }, 0);\n const newestSrc = walkNewestMtime(srcDir);\n if (newestSrc > oldestDist) return \"stale\";\n return \"fresh\";\n}\n\nfunction resolveEntryFiles(packageRoot: string): string[] {\n const manifestPath = join(packageRoot, \"package.json\");\n if (!existsSync(manifestPath)) return [...FALLBACK_ENTRY_FILES];\n\n const entries = new Set<string>();\n try {\n const manifest = JSON.parse(readFileSync(manifestPath, \"utf8\")) as {\n exports?: unknown;\n main?: unknown;\n module?: unknown;\n types?: unknown;\n typings?: unknown;\n };\n addDistEntry(entries, manifest.types);\n addDistEntry(entries, manifest.typings);\n addDistEntry(entries, manifest.module);\n addDistEntry(entries, manifest.main);\n collectExportEntries(entries, manifest.exports);\n } catch {\n return [...FALLBACK_ENTRY_FILES];\n }\n\n return entries.size > 0 ? [...entries] : [...FALLBACK_ENTRY_FILES];\n}\n\nfunction collectExportEntries(entries: Set<string>, value: unknown): void {\n if (typeof value === \"string\") {\n addDistEntry(entries, value);\n return;\n }\n if (Array.isArray(value)) {\n for (const item of value) collectExportEntries(entries, item);\n return;\n }\n if (value && typeof value === \"object\") {\n for (const item of Object.values(value)) collectExportEntries(entries, item);\n }\n}\n\nfunction addDistEntry(entries: Set<string>, value: unknown): void {\n if (typeof value !== \"string\") return;\n const normalized = value.replace(/^\\.\\//, \"\");\n if (normalized.startsWith(\"dist/\")) entries.add(normalized);\n}\n\nfunction safeMtime(path: string): number {\n try {\n return statSync(path).mtimeMs;\n } catch {\n return 0;\n }\n}\n\nfunction walkNewestMtime(dir: string): number {\n let newest = 0;\n let entries: { name: string; isDirectory(): boolean; isFile(): boolean }[];\n try {\n entries = readdirSync(dir, { withFileTypes: true });\n } catch {\n return 0;\n }\n for (const entry of entries) {\n const full = join(dir, entry.name);\n if (entry.isDirectory()) {\n const inner = walkNewestMtime(full);\n if (inner > newest) newest = inner;\n } else if (entry.isFile()) {\n const m = safeMtime(full);\n if (m > newest) newest = m;\n }\n }\n return newest;\n}\n","/**\n * `geenius-release license` — forbidden-license scan over installed dependencies.\n * Replaces the 36 copies of `license-check.mjs` across the ecosystem.\n */\n\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\n\nimport type { Config } from \"../config.js\";\nimport { resolvePaths } from \"../lib/paths.js\";\nimport { writeReport } from \"../lib/reporter.js\";\nimport { rollupCommandStatus } from \"../lib/scanner.js\";\nimport type { CommandReport, StepReport } from \"../types.js\";\n\nexport interface RunLicenseOptions {\n /** Defaults to `process.cwd()` if omitted. */\n cwd?: string;\n /** Override loaded config. */\n config?: Config[\"license\"];\n /** Override the dependency scope. */\n scope?: \"prod\" | \"all\";\n /** Suppress console output (for gauntlet composition). */\n quiet?: boolean;\n}\n\ninterface DepCheck {\n name: string;\n license: string;\n state: \"passed\" | \"forbidden\" | \"unknown\" | \"not-installed\";\n}\n\nconst DEFAULT_FORBIDDEN = [\"AGPL\", \"GPL\", \"LGPL\", \"CDDL\", \"EPL\", \"MPL\", \"NPL\"];\n\nexport async function runLicense(opts: RunLicenseOptions = {}): Promise<CommandReport> {\n const startedAtNs = process.hrtime.bigint();\n const startedAt = new Date().toISOString();\n const paths = resolvePaths(opts.cwd);\n\n const config = opts.config ?? {\n scope: \"prod\",\n forbidden: DEFAULT_FORBIDDEN,\n allowlist: [],\n unknownPolicy: \"warn\",\n };\n const scope = opts.scope ?? config.scope;\n\n const manifest = readPackageJson(paths.packageJson);\n const deps = collectDependencies(manifest, scope);\n\n const checks: DepCheck[] = [];\n for (const dep of deps) {\n checks.push(checkLicense(paths.nodeModules, dep, config.forbidden, config.allowlist));\n }\n\n const forbidden = checks.filter((c) => c.state === \"forbidden\");\n const unknown = checks.filter((c) => c.state === \"unknown\");\n const notInstalled = checks.filter((c) => c.state === \"not-installed\");\n\n const steps: StepReport[] = [];\n\n if (forbidden.length > 0) {\n steps.push({\n name: `forbidden licenses (${forbidden.length})`,\n status: \"failed\",\n reason: forbidden.map((d) => `${d.name}: ${d.license}`).join(\"; \"),\n durationMs: 0,\n });\n }\n\n if (notInstalled.length > 0) {\n steps.push({\n name: `not-installed deps (${notInstalled.length})`,\n status: \"failed\",\n reason: `package(s) listed in package.json but missing from node_modules: ${notInstalled.map((d) => d.name).join(\", \")}. Run \\`pnpm install\\` before this command.`,\n durationMs: 0,\n });\n }\n\n if (unknown.length > 0) {\n const status: StepReport[\"status\"] =\n config.unknownPolicy === \"fail\"\n ? \"failed\"\n : config.unknownPolicy === \"warn\"\n ? \"skipped\"\n : \"passed\";\n steps.push({\n name: `unknown licenses (${unknown.length})`,\n status,\n reason: unknown.map((d) => d.name).join(\", \"),\n durationMs: 0,\n });\n }\n\n steps.push({\n name: `scanned (${checks.length})`,\n status: \"passed\",\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n reason: `${checks.length - forbidden.length - unknown.length - notInstalled.length} OK`,\n });\n\n const status = rollupCommandStatus(steps);\n\n const report: CommandReport = {\n command: \"license\",\n status,\n startedAt,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n steps,\n meta: { scope, forbidden: config.forbidden, allowlistApplied: config.allowlist.length },\n };\n\n writeReport(report, {\n reportDir: paths.reportDir,\n ...(opts.quiet === true ? { quiet: true } : {}),\n });\n return report;\n}\n\nfunction readPackageJson(path: string): {\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n} {\n return JSON.parse(readFileSync(path, \"utf8\")) as ReturnType<typeof readPackageJson>;\n}\n\nfunction collectDependencies(\n manifest: ReturnType<typeof readPackageJson>,\n scope: \"prod\" | \"all\",\n): string[] {\n const set = new Set<string>(Object.keys(manifest.dependencies ?? {}));\n if (scope === \"all\") {\n for (const k of Object.keys(manifest.devDependencies ?? {})) set.add(k);\n }\n return Array.from(set).sort();\n}\n\nfunction checkLicense(\n nodeModules: string,\n dep: string,\n forbidden: readonly string[],\n allowlist: readonly string[],\n): DepCheck {\n const manifestPath = join(nodeModules, ...dep.split(\"/\"), \"package.json\");\n if (!existsSync(manifestPath)) {\n return { name: dep, license: \"(not installed)\", state: \"not-installed\" };\n }\n let licenseField: string;\n try {\n const pkg = JSON.parse(readFileSync(manifestPath, \"utf8\")) as {\n license?: string | { type?: string };\n licenses?: Array<{ type?: string } | string>;\n };\n if (typeof pkg.license === \"string\") {\n licenseField = pkg.license;\n } else if (pkg.license && typeof pkg.license === \"object\" && pkg.license.type) {\n licenseField = pkg.license.type;\n } else if (Array.isArray(pkg.licenses)) {\n licenseField = pkg.licenses\n .map((entry) => (typeof entry === \"string\" ? entry : (entry.type ?? \"\")))\n .join(\";\");\n } else {\n licenseField = \"UNKNOWN\";\n }\n } catch {\n licenseField = \"UNKNOWN\";\n }\n\n // Allowlist suppresses both forbidden and unknown.\n if (allowlist.some((allowed) => licenseField.includes(allowed))) {\n return { name: dep, license: licenseField, state: \"passed\" };\n }\n\n const forbiddenRegex = new RegExp(`\\\\b(${forbidden.join(\"|\")})\\\\b`, \"i\");\n if (forbiddenRegex.test(licenseField)) {\n return { name: dep, license: licenseField, state: \"forbidden\" };\n }\n\n if (licenseField === \"UNKNOWN\") {\n return { name: dep, license: licenseField, state: \"unknown\" };\n }\n\n return { name: dep, license: licenseField, state: \"passed\" };\n}\n\nfunction nsToMs(ns: bigint): number {\n return Number(ns) / 1_000_000;\n}\n","/**\n * `geenius-release manifest-contract` — verify that every `package.json:exports`\n * target file exists on disk, that `files` patterns cover every export target,\n * and that `bin` entries exist + are executable.\n *\n * Absorbs the inline `test -f dist/index.js && test -f dist/index.d.ts` checks\n * scattered across packages (e.g. tools/devtools' `test:dist-contract`).\n */\n\nimport { existsSync, readFileSync, statSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\n\nimport picomatch from \"picomatch\";\n\nimport { resolvePaths } from \"../lib/paths.js\";\nimport { writeReport } from \"../lib/reporter.js\";\nimport { rollupCommandStatus } from \"../lib/scanner.js\";\nimport type { CommandReport, StepReport } from \"../types.js\";\n\nexport interface RunManifestContractOptions {\n cwd?: string;\n quiet?: boolean;\n}\n\ninterface Manifest {\n name?: string;\n version?: string;\n main?: string;\n types?: string;\n module?: string;\n bin?: string | Record<string, string>;\n files?: string[];\n exports?: Record<string, unknown> | string;\n}\n\nexport async function runManifestContract(\n opts: RunManifestContractOptions = {},\n): Promise<CommandReport> {\n const startedAtNs = process.hrtime.bigint();\n const startedAt = new Date().toISOString();\n const paths = resolvePaths(opts.cwd);\n\n const steps: StepReport[] = [];\n let manifest: Manifest;\n try {\n manifest = JSON.parse(readFileSync(paths.packageJson, \"utf8\")) as Manifest;\n } catch (error) {\n steps.push({\n name: \"package.json\",\n status: \"failed\",\n reason: `failed to parse: ${(error as Error).message}`,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n });\n return finalize();\n }\n\n // 1. Verify top-level entry points exist.\n for (const key of [\"main\", \"types\", \"module\"] as const) {\n const target = manifest[key];\n if (!target) continue;\n const abs = resolve(paths.packageRoot, target);\n const ok = existsSync(abs);\n steps.push({\n name: `${key} → ${target}`,\n status: ok ? \"passed\" : \"failed\",\n ...(ok ? {} : { reason: \"file not found\" }),\n durationMs: 0,\n });\n }\n\n // 2. Verify every exports target resolves.\n if (manifest.exports && typeof manifest.exports === \"object\") {\n for (const [subpath, value] of Object.entries(manifest.exports)) {\n const targets = collectExportTargets(value);\n for (const target of targets) {\n const abs = resolve(paths.packageRoot, target);\n const ok = existsSync(abs);\n steps.push({\n name: `exports[${subpath}] → ${target}`,\n status: ok ? \"passed\" : \"failed\",\n ...(ok ? {} : { reason: \"file not found\" }),\n durationMs: 0,\n });\n }\n }\n }\n\n // 3. Verify bin entries exist + are executable.\n if (manifest.bin) {\n const bins: Array<[string, string]> =\n typeof manifest.bin === \"string\"\n ? [[\"(default)\", manifest.bin]]\n : Object.entries(manifest.bin);\n for (const [name, target] of bins) {\n const abs = resolve(paths.packageRoot, target);\n if (!existsSync(abs)) {\n steps.push({\n name: `bin[${name}] → ${target}`,\n status: \"failed\",\n reason: \"file not found\",\n durationMs: 0,\n });\n continue;\n }\n try {\n const mode = statSync(abs).mode;\n const executable = (mode & 0o111) !== 0;\n const head = readFileSync(abs, \"utf8\").slice(0, 32);\n const hasShebang = head.startsWith(\"#!\");\n const ok = executable && hasShebang;\n steps.push({\n name: `bin[${name}] → ${target}`,\n status: ok ? \"passed\" : \"failed\",\n ...(ok\n ? {}\n : {\n reason: `executable=${executable}, shebang=${hasShebang} (chmod +x and prepend #!/usr/bin/env node)`,\n }),\n durationMs: 0,\n });\n } catch (error) {\n steps.push({\n name: `bin[${name}] → ${target}`,\n status: \"failed\",\n reason: (error as Error).message,\n durationMs: 0,\n });\n }\n }\n }\n\n // 4. Verify files patterns cover the dist directory.\n if (manifest.files && manifest.exports && typeof manifest.exports === \"object\") {\n const allTargets = new Set<string>();\n for (const value of Object.values(manifest.exports)) {\n for (const t of collectExportTargets(value)) allTargets.add(t.replace(/^\\.\\//, \"\"));\n }\n const uncovered: string[] = [];\n for (const target of allTargets) {\n const covered = manifest.files.some((pattern) =>\n targetMatchesPattern(target, pattern.replace(/^\\.\\//, \"\")),\n );\n if (!covered) uncovered.push(target);\n }\n if (uncovered.length > 0) {\n steps.push({\n name: \"files vs exports\",\n status: \"failed\",\n reason: `exports targets not covered by files: ${uncovered.join(\", \")}`,\n durationMs: 0,\n });\n } else {\n steps.push({\n name: \"files vs exports\",\n status: \"passed\",\n durationMs: 0,\n });\n }\n }\n\n // 5. Verify minimum required fields.\n for (const required of [\"name\", \"version\"] as const) {\n if (!manifest[required]) {\n steps.push({\n name: `package.json:${required}`,\n status: \"failed\",\n reason: \"required field missing\",\n durationMs: 0,\n });\n }\n }\n\n return finalize();\n\n function finalize(): CommandReport {\n const status = rollupCommandStatus(steps);\n const report: CommandReport = {\n command: \"manifest-contract\",\n status,\n startedAt,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n steps,\n meta: { package: manifest.name, version: manifest.version },\n };\n writeReport(report, {\n reportDir: paths.reportDir,\n ...(opts.quiet === true ? { quiet: true } : {}),\n });\n return report;\n }\n}\n\n/** Walk a (potentially conditional) export entry and yield every file target. */\nfunction collectExportTargets(value: unknown): string[] {\n if (typeof value === \"string\") return [value];\n if (value && typeof value === \"object\") {\n const out: string[] = [];\n for (const v of Object.values(value as Record<string, unknown>)) {\n out.push(...collectExportTargets(v));\n }\n return out;\n }\n return [];\n}\n\n/** Glob match using picomatch with npm-publish semantics: a bare directory\n * pattern recursively includes everything beneath it. */\nfunction targetMatchesPattern(target: string, pattern: string): boolean {\n if (target === pattern) return true;\n // npm \"files\" semantics: a directory pattern with no glob chars recursively\n // includes all contents. e.g. `dist` covers `dist/index.js`.\n if (!pattern.includes(\"*\") && !pattern.includes(\"?\") && target.startsWith(`${pattern}/`)) {\n return true;\n }\n // For everything else, defer to picomatch — same glob semantics npm uses.\n // We also normalize `pkg/*/dist/**/*` matching `pkg/<x>/dist/index.js`.\n const matchers = [pattern, `${pattern}/**`];\n for (const p of matchers) {\n if (picomatch.isMatch(target, p, { dot: true })) return true;\n }\n return false;\n}\n\nfunction nsToMs(ns: bigint): number {\n return Number(ns) / 1_000_000;\n}\n","/**\n * `geenius-release mutation-report` — Stryker driver. Replaces 36 copies of\n * `mutation-report.mjs`. Optional by default: if Stryker isn't installed or\n * configured, the command skips cleanly.\n */\n\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\n\nimport { resolvePaths } from \"../lib/paths.js\";\nimport { writeReport } from \"../lib/reporter.js\";\nimport { buildBinPath, resolveLocalBin } from \"../lib/resolve-bin.js\";\nimport { rollupCommandStatus } from \"../lib/scanner.js\";\nimport { commandExists, runCommand, truncateOutput } from \"../lib/spawn.js\";\nimport type { CommandReport, StepReport } from \"../types.js\";\n\nexport interface RunMutationReportOptions {\n cwd?: string;\n /** When true (default), missing Stryker config → skipped (not failed). */\n optional?: boolean;\n /** Minimum mutation score required to pass (0-100). */\n minScore?: number;\n /** Just verify a Stryker config exists; do not invoke Stryker. */\n checkConfigOnly?: boolean;\n /** Fall back to `pnpm dlx --package <spec> -c \"stryker run\"` when the\n * package's local @stryker-mutator/core isn't installed. Common form:\n * `@stryker-mutator/core@9.5.0`. */\n dlxSpec?: string;\n /** Write a Markdown summary to this path. */\n markdownOut?: string;\n /** Write a structured JSON summary to this path. */\n jsonOut?: string;\n /** Where Stryker writes its raw report. Used to compute a fallback score\n * if the run didn't print \"Final mutation testing score\" on stdout.\n * Default: `.eval/mutation/mutation.json`. */\n reportJsonPath?: string;\n quiet?: boolean;\n}\n\ninterface StrykerMutant {\n status?: string;\n}\ninterface StrykerRawReport {\n systemUnderTestMetrics?: { metrics?: { mutationScore?: number } };\n metrics?: { mutationScore?: number };\n files?: Record<string, { mutants?: StrykerMutant[] }>;\n}\n\nexport async function runMutationReport(\n opts: RunMutationReportOptions = {},\n): Promise<CommandReport> {\n const startedAtNs = process.hrtime.bigint();\n const startedAt = new Date().toISOString();\n const paths = resolvePaths(opts.cwd);\n const optional = opts.optional ?? true;\n\n const steps: StepReport[] = [];\n\n // Stryker requires a config file at the package root.\n const configPaths = [\n \"stryker.config.json\",\n \"stryker.config.mjs\",\n \"stryker.config.js\",\n \"stryker.conf.json\",\n ];\n const hasConfig = configPaths.some((c) => existsSync(join(paths.packageRoot, c)));\n if (!hasConfig) {\n steps.push({\n name: \"stryker config\",\n status: optional ? \"skipped\" : \"missing\",\n reason: optional\n ? \"no stryker config — skipped (optional)\"\n : \"no stryker.config.{json,mjs,js} at package root\",\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n });\n return finalize();\n }\n\n if (opts.checkConfigOnly) {\n steps.push({\n name: \"stryker config\",\n status: \"passed\",\n reason: \"config present (not running)\",\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n });\n return finalize();\n }\n\n // Resolve stryker from the consuming package's node_modules/.bin and spawn\n // it directly — skips the ~300ms pnpm bootstrap. Falls back to `pnpm dlx`\n // only when no local install AND a --dlx spec is provided (the dlx path\n // requires pnpm regardless).\n const strykerBin = resolveLocalBin(\"stryker\", paths.packageRoot);\n let r: ReturnType<typeof runCommand>;\n let commandLabel: string;\n if (strykerBin) {\n r = runCommand(strykerBin, [\"run\"], {\n cwd: paths.packageRoot,\n timeoutMs: 30 * 60 * 1000, // mutation runs are slow\n env: { ...process.env, PATH: buildBinPath(paths.packageRoot) },\n });\n commandLabel = \"stryker run\";\n } else if (opts.dlxSpec && commandExists(\"pnpm\", paths.packageRoot)) {\n r = runCommand(\"pnpm\", [\"dlx\", \"--package\", opts.dlxSpec, \"-c\", \"stryker run\"], {\n cwd: paths.packageRoot,\n timeoutMs: 30 * 60 * 1000,\n });\n commandLabel = `pnpm dlx --package ${opts.dlxSpec} -c \"stryker run\"`;\n } else {\n steps.push({\n name: \"stryker\",\n status: optional ? \"skipped\" : \"missing\",\n reason: optional\n ? \"stryker not installed — skipped (optional)\"\n : \"stryker not installed (add @stryker-mutator/core to devDependencies or pass --dlx)\",\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n });\n return finalize();\n }\n\n if (r.status !== 0) {\n const combined = `${r.stdout}\\n${r.stderr}`;\n const looksMissing =\n /command not found|cannot resolve|ERR_PNPM_DLX_NO_BIN|ERR_PNPM_RECURSIVE_EXEC/i.test(\n combined,\n );\n if (looksMissing) {\n steps.push({\n name: \"stryker\",\n status: optional ? \"skipped\" : \"missing\",\n reason: optional\n ? \"@stryker-mutator/core not installed — skipped (optional)\"\n : \"@stryker-mutator/core not installed (add to devDeps, or pass --dlx-spec)\",\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n });\n return finalize();\n }\n steps.push({\n name: \"stryker\",\n status: \"failed\",\n reason: `stryker exited ${r.status ?? \"?\"}`,\n output: truncateOutput(r.stdout, r.stderr),\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n });\n return finalize();\n }\n\n // Stryker writes its score on stdout in the line \"Final mutation testing score: <n>\"\n const scoreMatch = /Final mutation testing score:\\s*([0-9.]+)/i.exec(r.stdout);\n let score = scoreMatch?.[1] ? Number.parseFloat(scoreMatch[1]) : undefined;\n // Fall back to the raw report JSON if stdout didn't carry the score line.\n const reportJsonPath = join(\n paths.packageRoot,\n opts.reportJsonPath ?? \".eval/mutation/mutation.json\",\n );\n if (score === undefined && existsSync(reportJsonPath)) {\n score = computeScoreFromReport(reportJsonPath);\n }\n if (opts.minScore !== undefined && score !== undefined && score < opts.minScore) {\n steps.push({\n name: `mutation score ${score.toFixed(2)}`,\n status: \"failed\",\n reason: `below threshold ${opts.minScore}`,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n });\n return finalize();\n }\n\n steps.push({\n name: score !== undefined ? `mutation score ${score.toFixed(2)}` : \"stryker\",\n status: \"passed\",\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n });\n\n if (opts.markdownOut)\n writeMarkdownSummary(paths.packageRoot, opts.markdownOut, score, true, commandLabel);\n if (opts.jsonOut) writeJsonSummary(paths.packageRoot, opts.jsonOut, score, true, commandLabel);\n\n return finalize();\n\n function finalize(): CommandReport {\n const status = rollupCommandStatus(steps);\n const report: CommandReport = {\n command: \"mutation-report\",\n status,\n startedAt,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n steps,\n };\n writeReport(report, {\n reportDir: paths.reportDir,\n ...(opts.quiet === true ? { quiet: true } : {}),\n });\n return report;\n }\n}\n\nfunction nsToMs(ns: bigint): number {\n return Number(ns) / 1_000_000;\n}\n\nfunction computeScoreFromReport(reportPath: string): number | undefined {\n try {\n const raw = JSON.parse(readFileSync(reportPath, \"utf8\")) as StrykerRawReport;\n const reported =\n raw.systemUnderTestMetrics?.metrics?.mutationScore ?? raw.metrics?.mutationScore;\n if (typeof reported === \"number\") return reported;\n const mutants = Object.values(raw.files ?? {}).flatMap((f) => f.mutants ?? []);\n const counted = mutants.filter(\n (m) => m.status && [\"Killed\", \"NoCoverage\", \"Survived\", \"Timeout\"].includes(m.status),\n );\n if (counted.length === 0) return undefined;\n const detected = counted.filter((m) => m.status === \"Killed\" || m.status === \"Timeout\");\n return Number(((detected.length / counted.length) * 100).toFixed(2));\n } catch {\n return undefined;\n }\n}\n\nfunction writeMarkdownSummary(\n packageRoot: string,\n outRel: string,\n score: number | undefined,\n passed: boolean,\n command: string,\n): void {\n const target = join(packageRoot, outRel);\n mkdirSync(dirname(target), { recursive: true });\n const lines = [\n \"# Mutation Report\",\n \"\",\n `- Status: ${passed ? \"passed\" : \"failed\"}`,\n `- Command: \\`${command}\\``,\n `- Mutation score: ${score === undefined ? \"unavailable\" : `${score}%`}`,\n \"\",\n ];\n writeFileSync(target, `${lines.join(\"\\n\")}\\n`, \"utf8\");\n}\n\nfunction writeJsonSummary(\n packageRoot: string,\n outRel: string,\n score: number | undefined,\n passed: boolean,\n command: string,\n): void {\n const target = join(packageRoot, outRel);\n mkdirSync(dirname(target), { recursive: true });\n writeFileSync(\n target,\n `${JSON.stringify({ status: passed ? \"passed\" : \"failed\", command, mutationScore: score ?? null }, null, 2)}\\n`,\n \"utf8\",\n );\n}\n","/**\n * `geenius-release perf-smoke` — perf-budget harness wrapper.\n * Absorbs 7 copies of `perf-smoke.mjs`.\n *\n * Reads `.eval/perf/results.json` produced by the package's perf harness\n * (Storybook perf stories, vitest perf suite, custom Playwright harness — the\n * toolkit doesn't care how the file got there) and enforces budgets from\n * `release-toolkit.config.json:perf` or `perf-budgets.json` at the package\n * root.\n */\n\nimport { existsSync, readFileSync } from \"node:fs\";\n\nimport { resolveConfigPath, resolvePaths } from \"../lib/paths.js\";\nimport { writeReport } from \"../lib/reporter.js\";\nimport { rollupCommandStatus } from \"../lib/scanner.js\";\nimport type { CommandReport, StepReport } from \"../types.js\";\n\nexport interface PerfBudget {\n /** Symbolic metric name; matches the result file's `metric` field. */\n metric: string;\n /** Numerical maximum (e.g. 250 for \"max 250 ms\"). */\n max: number;\n /** Optional unit label for the report, e.g. \"ms\", \"ops/s\". */\n unit?: string;\n /** When set, this metric is a minimum (e.g. ops/sec) rather than a maximum. */\n isMinimum?: boolean;\n}\n\nexport interface PerfResultEntry {\n metric: string;\n value: number;\n}\n\nexport interface RunPerfSmokeOptions {\n cwd?: string;\n /** Path to the perf results JSON. Default: `.eval/perf/results.json`. */\n resultsPath?: string;\n /** Budget list. If absent, the toolkit reads `perf-budgets.json` at the\n * package root, then falls back to \"no enforced budgets\". */\n budgets?: readonly PerfBudget[];\n /** Whether absent results is `failed` or `skipped`. */\n optional?: boolean;\n quiet?: boolean;\n}\n\nexport async function runPerfSmoke(opts: RunPerfSmokeOptions = {}): Promise<CommandReport> {\n const startedAtNs = process.hrtime.bigint();\n const startedAt = new Date().toISOString();\n const paths = resolvePaths(opts.cwd);\n const resultsPath = resolveConfigPath(\n paths.packageRoot,\n opts.resultsPath ?? \".eval/perf/results.json\",\n );\n\n const steps: StepReport[] = [];\n let budgets: readonly PerfBudget[] = [];\n\n if (!existsSync(resultsPath)) {\n steps.push({\n name: \"perf results\",\n status: opts.optional ? \"skipped\" : \"missing\",\n reason: `${resultsPath} not found (run \\`pnpm test:perf\\` first, or pass --optional)`,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n });\n return finalize();\n }\n\n let results: PerfResultEntry[];\n try {\n const raw = JSON.parse(readFileSync(resultsPath, \"utf8\")) as unknown;\n results = normalizeResults(raw);\n } catch (error) {\n steps.push({\n name: \"perf results\",\n status: \"failed\",\n reason: `failed to parse ${resultsPath}: ${(error as Error).message}`,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n });\n return finalize();\n }\n\n budgets = opts.budgets ?? loadBudgetsFile(paths.packageRoot);\n\n if (budgets.length === 0) {\n steps.push({\n name: `recorded ${results.length} metrics`,\n status: \"passed\",\n reason: \"no budgets configured — values recorded only\",\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n });\n return finalize();\n }\n\n for (const budget of budgets) {\n const measured = results.find((r) => r.metric === budget.metric);\n if (measured === undefined) {\n steps.push({\n name: budget.metric,\n status: \"failed\",\n reason: \"budgeted metric not present in results\",\n durationMs: 0,\n });\n continue;\n }\n const ok = budget.isMinimum ? measured.value >= budget.max : measured.value <= budget.max;\n const unit = budget.unit ? ` ${budget.unit}` : \"\";\n const comp = budget.isMinimum ? \"≥\" : \"≤\";\n steps.push({\n name: `${budget.metric} ${measured.value}${unit}`,\n status: ok ? \"passed\" : \"failed\",\n reason: `budget ${comp} ${budget.max}${unit}`,\n durationMs: 0,\n });\n }\n\n return finalize();\n\n function finalize(): CommandReport {\n const status = rollupCommandStatus(steps);\n const report: CommandReport = {\n command: \"perf-smoke\",\n status,\n startedAt,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n steps,\n meta: { resultsPath, budgetCount: budgets.length },\n };\n writeReport(report, {\n reportDir: paths.reportDir,\n ...(opts.quiet === true ? { quiet: true } : {}),\n });\n return report;\n }\n}\n\nfunction normalizeResults(raw: unknown): PerfResultEntry[] {\n if (Array.isArray(raw)) {\n return raw\n .filter((x): x is PerfResultEntry => {\n const obj = x as Record<string, unknown>;\n return (\n obj !== null &&\n typeof obj === \"object\" &&\n typeof obj.metric === \"string\" &&\n typeof obj.value === \"number\"\n );\n })\n .map((x) => ({ metric: x.metric, value: x.value }));\n }\n // Allow `{ metricName: value, … }` object form.\n if (raw && typeof raw === \"object\") {\n const out: PerfResultEntry[] = [];\n for (const [k, v] of Object.entries(raw as Record<string, unknown>)) {\n if (typeof v === \"number\") out.push({ metric: k, value: v });\n }\n return out;\n }\n return [];\n}\n\nfunction loadBudgetsFile(packageRoot: string): PerfBudget[] {\n const path = `${packageRoot}/perf-budgets.json`;\n if (!existsSync(path)) return [];\n try {\n const raw = JSON.parse(readFileSync(path, \"utf8\")) as unknown;\n if (!Array.isArray(raw)) return [];\n return raw.filter((b): b is PerfBudget => {\n const obj = b as Record<string, unknown>;\n return (\n obj !== null &&\n typeof obj === \"object\" &&\n typeof obj.metric === \"string\" &&\n typeof obj.max === \"number\"\n );\n });\n } catch {\n return [];\n }\n}\n\nfunction nsToMs(ns: bigint): number {\n return Number(ns) / 1_000_000;\n}\n","/**\n * `geenius-release publint` — run publint against the package's packed tarball.\n * Replaces ~17 scripts across 4 filename variations in the legacy tree\n * (`publint-package.mjs`, `publint-packed.mjs`, `publint-check.mjs`, `publint.mjs`).\n *\n * publint is resolved from the package's local `node_modules/.bin` and spawned\n * directly (skipping `pnpm exec`'s ~300ms bootstrap). If the binary isn't\n * reachable, we report `missing` and let the config decide whether that's an\n * optional skip.\n */\n\nimport { mkdtempSync, readFileSync, rmSync } from \"node:fs\";\nimport { tmpdir } from \"node:os\";\nimport { join } from \"node:path\";\n\nimport type { Config } from \"../config.js\";\nimport { resolvePaths } from \"../lib/paths.js\";\nimport { writeReport } from \"../lib/reporter.js\";\nimport { buildBinPath, resolveLocalBin } from \"../lib/resolve-bin.js\";\nimport { rollupCommandStatus } from \"../lib/scanner.js\";\nimport { commandExists, runCommand, truncateOutput } from \"../lib/spawn.js\";\nimport type { CommandReport, StepReport } from \"../types.js\";\n\nexport interface RunPublintOptions {\n cwd?: string;\n /** Allow publint to be missing without failing. Default: false (publint should always pass). */\n optional?: boolean;\n /** Tolerance config for source-time `link:` deps. */\n config?: Config[\"publint\"];\n quiet?: boolean;\n}\n\nexport async function runPublint(opts: RunPublintOptions = {}): Promise<CommandReport> {\n const startedAtNs = process.hrtime.bigint();\n const startedAt = new Date().toISOString();\n const paths = resolvePaths(opts.cwd);\n\n const steps: StepReport[] = [];\n const tmp = mkdtempSync(join(tmpdir(), \"geenius-release-publint-\"));\n\n try {\n const packStep = packToTmp(paths.packageRoot, tmp);\n steps.push(packStep);\n\n if (packStep.status !== \"passed\") {\n const fail: CommandReport = {\n command: \"publint\",\n status: \"failed\",\n startedAt,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n steps,\n };\n writeReport(fail, {\n reportDir: paths.reportDir,\n ...(opts.quiet === true ? { quiet: true } : {}),\n });\n return fail;\n }\n\n const tarball = packStep.reason ?? \"\";\n const publintStep = runPublintAgainst(\n paths.packageRoot,\n tarball,\n opts.optional ?? false,\n opts.config,\n );\n steps.push(publintStep);\n } finally {\n try {\n rmSync(tmp, { recursive: true, force: true });\n } catch {\n // best-effort\n }\n }\n\n const status = rollupCommandStatus(steps);\n const report: CommandReport = {\n command: \"publint\",\n status,\n startedAt,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n steps,\n };\n writeReport(report, {\n reportDir: paths.reportDir,\n ...(opts.quiet === true ? { quiet: true } : {}),\n });\n return report;\n}\n\nfunction packToTmp(packageRoot: string, tmp: string): StepReport {\n const startedAtNs = process.hrtime.bigint();\n const r = runCommand(\"pnpm\", [\"pack\", \"--pack-destination\", tmp], { cwd: packageRoot });\n if (r.status !== 0) {\n return {\n name: \"pnpm pack\",\n status: \"failed\",\n reason: `pnpm pack exited ${r.status ?? \"?\"}`,\n output: truncateOutput(r.stdout, r.stderr),\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n }\n const tarball = r.stdout\n .split(/\\r?\\n/g)\n .map((s) => s.trim())\n .filter(Boolean)\n .pop();\n return {\n name: \"pnpm pack\",\n status: \"passed\",\n reason: tarball ?? \"(tarball)\",\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n}\n\nfunction runPublintAgainst(\n cwd: string,\n tarballPath: string,\n optional: boolean,\n config: Config[\"publint\"] | undefined,\n): StepReport {\n const startedAtNs = process.hrtime.bigint();\n\n // Spawn the consuming package's local publint directly — skips the ~300ms\n // pnpm bootstrap per invocation, which matters under parallel agent loads.\n // Falls back to bare-name + OS PATH lookup if publint isn't installed locally.\n const publintBin = resolveLocalBin(\"publint\", cwd);\n if (!publintBin) {\n return {\n name: \"publint\",\n status: optional ? \"skipped\" : \"missing\",\n reason: optional\n ? \"publint not installed — skipped (optional)\"\n : \"publint not installed (add `publint` to devDependencies, or set this command optional)\",\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n }\n\n const r = runCommand(publintBin, [tarballPath, \"--strict\"], {\n cwd,\n timeoutMs: 60_000,\n env: { ...process.env, PATH: buildBinPath(cwd) },\n });\n\n if (r.status === 0) {\n return {\n name: \"publint\",\n status: \"passed\",\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n }\n\n // pnpm exec returns a specific exit code (~127) when the binary doesn't exist.\n const combined = `${r.stdout}\\n${r.stderr}`;\n const looksMissing =\n /command not found|cannot resolve|ERR_PNPM_DLX_NO_BIN|ERR_PNPM_RECURSIVE_EXEC/i.test(combined);\n\n if (looksMissing) {\n return {\n name: \"publint\",\n status: optional ? \"skipped\" : \"missing\",\n reason: optional\n ? \"publint not installed — skipped (optional)\"\n : \"publint not installed (add `publint` to devDependencies, or set this command optional)\",\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n }\n\n // Source-time `link:` tolerance: if every reported diagnostic is a canonical\n // `link:` reference to a manifest-declared dep in the configured scope,\n // treat the run as passed. These get rewritten to semver ranges at publish.\n if (config?.allowSourceTimeLinks ?? true) {\n const verdict = classifyDiagnostics(cwd, r.stdout, r.stderr, config?.sourceLinkScope);\n if (verdict.allCanonicalLinks) {\n return {\n name: \"publint\",\n status: \"passed\",\n reason: `tolerated ${verdict.linkCount} canonical source-time link: diagnostic(s) for ${verdict.toleratedDeps.join(\", \")}`,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n }\n }\n\n return {\n name: \"publint\",\n status: \"failed\",\n reason: `publint reported issues (exit ${r.status ?? \"?\"})`,\n output: truncateOutput(r.stdout, r.stderr),\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n}\n\n/**\n * Decide whether every numbered publint diagnostic is a canonical\n * `link:`-references-X message for X declared in dependencies and matching\n * the configured scope (default: `^@geenius/`). Diagnostics that don't match\n * the link: shape are treated as real failures.\n */\nfunction classifyDiagnostics(\n cwd: string,\n stdout: string,\n stderr: string,\n sourceLinkScope: string | undefined,\n): { allCanonicalLinks: boolean; linkCount: number; toleratedDeps: string[] } {\n const lines = `${stdout}\\n${stderr}`\n .split(/\\r?\\n/g)\n .map((line) => line.trim())\n .filter((line) => /^\\d+\\.\\s/u.test(line));\n if (lines.length === 0) return { allCanonicalLinks: false, linkCount: 0, toleratedDeps: [] };\n\n let manifestDeps: Set<string>;\n try {\n const manifest = JSON.parse(readFileSync(join(cwd, \"package.json\"), \"utf8\")) as {\n dependencies?: Record<string, string>;\n };\n manifestDeps = new Set(\n Object.entries(manifest.dependencies ?? {})\n .filter(([, specifier]) => typeof specifier === \"string\" && specifier.startsWith(\"link:\"))\n .map(([name]) => name),\n );\n } catch {\n return { allCanonicalLinks: false, linkCount: 0, toleratedDeps: [] };\n }\n\n const scope = sourceLinkScope ? new RegExp(sourceLinkScope) : /^@geenius\\//;\n const tolerated = new Set<string>();\n const allMatch = lines.every((line) => {\n const m = line.match(/^\\d+\\.\\s+The \"([^\"]+)\" dependency references \"link:[^\"]+\"/u);\n if (!m) return false;\n const dep = m[1];\n if (!dep || !manifestDeps.has(dep) || !scope.test(dep)) return false;\n tolerated.add(dep);\n return true;\n });\n return {\n allCanonicalLinks: allMatch,\n linkCount: lines.length,\n toleratedDeps: [...tolerated],\n };\n}\n\nfunction nsToMs(ns: bigint): number {\n return Number(ns) / 1_000_000;\n}\n","/**\n * `geenius-release sbom` — emit a CycloneDX 1.5 JSON SBOM from pnpm-lock.yaml.\n * Replaces the 36 copies of `sbom.mjs`.\n *\n * Implementation strategy: parse the lockfile YAML by line (no dependency on a\n * full YAML parser — pnpm-lock.yaml has a stable, simple shape since v9).\n * For SPDX format we shell out to `syft` if available; otherwise we report\n * SPDX as `missing` per the optional-scanner policy.\n */\n\nimport { randomUUID } from \"node:crypto\";\nimport { mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { dirname } from \"node:path\";\nimport type { Config } from \"../config.js\";\n\nimport { resolveConfigPath, resolvePaths } from \"../lib/paths.js\";\nimport { writeReport } from \"../lib/reporter.js\";\nimport { rollupCommandStatus } from \"../lib/scanner.js\";\nimport { commandExists, runCommand, truncateOutput } from \"../lib/spawn.js\";\nimport type { CommandReport, StepReport } from \"../types.js\";\n\nexport interface RunSbomOptions {\n cwd?: string;\n config?: Config[\"sbom\"];\n /** Override output path. */\n out?: string;\n /** Override format. */\n format?: \"cyclonedx-json\" | \"spdx-json\";\n quiet?: boolean;\n}\n\ninterface SbomComponent {\n type: \"library\";\n \"bom-ref\": string;\n name: string;\n version: string;\n purl: string;\n}\n\nexport async function runSbom(opts: RunSbomOptions = {}): Promise<CommandReport> {\n const startedAtNs = process.hrtime.bigint();\n const startedAt = new Date().toISOString();\n const paths = resolvePaths(opts.cwd);\n\n const config = opts.config ?? { format: \"cyclonedx-json\", out: \".eval/sbom.cdx.json\" };\n const format = opts.format ?? config.format;\n const outPath = resolveConfigPath(paths.packageRoot, opts.out ?? config.out);\n\n const steps: StepReport[] = [];\n\n if (format === \"cyclonedx-json\") {\n steps.push(emitCycloneDx(paths.lockfile, paths.packageJson, outPath));\n } else {\n steps.push(await emitSpdx(paths.packageRoot, outPath));\n }\n\n const status = rollupCommandStatus(steps);\n const report: CommandReport = {\n command: \"sbom\",\n status,\n startedAt,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n steps,\n meta: { format, out: outPath },\n };\n\n writeReport(report, {\n reportDir: paths.reportDir,\n ...(opts.quiet === true ? { quiet: true } : {}),\n });\n return report;\n}\n\n/* ───────── CycloneDX ───────── */\n\nfunction emitCycloneDx(lockfile: string, packageJson: string, outPath: string): StepReport {\n const startedAtNs = process.hrtime.bigint();\n try {\n const components = parseLockfileComponents(lockfile);\n const pkg = JSON.parse(readFileSync(packageJson, \"utf8\")) as {\n name?: string;\n version?: string;\n };\n const bom = {\n bomFormat: \"CycloneDX\" as const,\n specVersion: \"1.5\" as const,\n serialNumber: `urn:uuid:${randomUUID()}`,\n version: 1,\n metadata: {\n timestamp: new Date().toISOString(),\n tools: [{ vendor: \"geenius\", name: \"@geenius/release-toolkit\", version: \"0.1.0\" }],\n component: {\n type: \"library\",\n \"bom-ref\": `pkg:npm/${pkg.name ?? \"unknown\"}@${pkg.version ?? \"0.0.0\"}`,\n name: pkg.name ?? \"unknown\",\n version: pkg.version ?? \"0.0.0\",\n },\n },\n components,\n };\n mkdirSync(dirname(outPath), { recursive: true });\n writeFileSync(outPath, `${JSON.stringify(bom, null, 2)}\\n`, \"utf8\");\n return {\n name: \"cyclonedx-json\",\n status: \"passed\",\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n reason: `${components.length} components → ${outPath}`,\n };\n } catch (error) {\n return {\n name: \"cyclonedx-json\",\n status: \"failed\",\n reason: (error as Error).message,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n }\n}\n\n/**\n * Extract npm components from a `pnpm-lock.yaml`. pnpm 9+ stores resolved\n * packages under top-level `packages:` keys shaped like `<name>@<version>`\n * (with optional path-style suffixes for sub-paths). We walk the line list\n * once and pick out every key that matches.\n */\nfunction parseLockfileComponents(lockfilePath: string): SbomComponent[] {\n const text = readFileSync(lockfilePath, \"utf8\");\n const out = new Map<string, SbomComponent>();\n let inPackagesBlock = false;\n // pnpm-lock package keys look like:\n // \"@scope/name@1.2.3\":\n // \"name@1.2.3(peer)\":\n // \"name@1.2.3\":\n const keyRegex = /^\\s{2}['\"]?(@?[A-Za-z0-9._-]+(?:\\/[A-Za-z0-9._-]+)?)@([^'\"():\\s]+)/;\n for (const raw of text.split(/\\r?\\n/g)) {\n const line = raw;\n if (/^packages:\\s*$/.test(line)) {\n inPackagesBlock = true;\n continue;\n }\n if (inPackagesBlock && /^[a-zA-Z]/.test(line)) {\n // Reached the next top-level key, e.g. `snapshots:`\n inPackagesBlock = false;\n }\n if (!inPackagesBlock) continue;\n const m = keyRegex.exec(line);\n if (!m) continue;\n const [, name, version] = m;\n if (!name || !version) continue;\n const ref = `pkg:npm/${name}@${version}`;\n if (out.has(ref)) continue;\n out.set(ref, { type: \"library\", \"bom-ref\": ref, name, version, purl: ref });\n }\n return Array.from(out.values());\n}\n\n/* ───────── SPDX ───────── */\n\nasync function emitSpdx(packageRoot: string, outPath: string): Promise<StepReport> {\n const startedAtNs = process.hrtime.bigint();\n if (!commandExists(\"syft\", packageRoot)) {\n return {\n name: \"spdx-json\",\n status: \"missing\",\n reason: \"syft binary not found on PATH (required for SPDX output)\",\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n }\n mkdirSync(dirname(outPath), { recursive: true });\n const r = runCommand(\"syft\", [`dir:${packageRoot}`, \"-o\", `spdx-json=${outPath}`], {\n cwd: packageRoot,\n });\n if (r.status !== 0) {\n return {\n name: \"spdx-json\",\n status: \"failed\",\n reason: `syft exited ${r.status ?? \"?\"}`,\n output: truncateOutput(r.stdout, r.stderr),\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n }\n return {\n name: \"spdx-json\",\n status: \"passed\",\n reason: `→ ${outPath}`,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n}\n\nfunction nsToMs(ns: bigint): number {\n return Number(ns) / 1_000_000;\n}\n","/**\n * `geenius-release size-check` — size-limit driver. Replaces 13 copies of\n * `size-check.mjs`. Reads the package's `size-limit` config (either from\n * `package.json:size-limit` or `size-limit.config.{js,mjs,ts}`) and runs the\n * `size-limit` binary; passing means every entry is under its budget.\n */\n\nimport { resolvePaths } from \"../lib/paths.js\";\nimport { writeReport } from \"../lib/reporter.js\";\nimport { rollupCommandStatus } from \"../lib/scanner.js\";\nimport { commandExists, runCommand, truncateOutput } from \"../lib/spawn.js\";\nimport type { CommandReport, StepReport } from \"../types.js\";\n\nexport interface RunSizeCheckOptions {\n cwd?: string;\n /** When the size-limit binary or config is absent: `false` → step is `missing`\n * and command fails. `true` (default) → step is `skipped` and command passes.\n * This mirrors `mutation-report` — size-limit is opt-in tooling, not every\n * package adopts it. */\n optional?: boolean;\n /** Additional flags to pass to size-limit (e.g. `--why`). */\n extraArgs?: readonly string[];\n quiet?: boolean;\n}\n\nexport async function runSizeCheck(opts: RunSizeCheckOptions = {}): Promise<CommandReport> {\n const startedAtNs = process.hrtime.bigint();\n const startedAt = new Date().toISOString();\n const paths = resolvePaths(opts.cwd);\n\n // Default to optional. Callers that want strict size enforcement pass\n // `optional: false`. Matches the CLI's `--required` flag if we add one.\n const effective: RunSizeCheckOptions = { ...opts, optional: opts.optional ?? true };\n const step = runSizeLimit(paths.packageRoot, effective);\n const steps = [step];\n const status = rollupCommandStatus(steps);\n\n const report: CommandReport = {\n command: \"size-check\",\n status,\n startedAt,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n steps,\n };\n writeReport(report, {\n reportDir: paths.reportDir,\n ...(opts.quiet === true ? { quiet: true } : {}),\n });\n return report;\n}\n\nfunction runSizeLimit(cwd: string, opts: RunSizeCheckOptions): StepReport {\n const startedAtNs = process.hrtime.bigint();\n if (!commandExists(\"pnpm\", cwd)) {\n return {\n name: \"size-limit\",\n status: \"missing\",\n reason: \"pnpm not on PATH\",\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n }\n\n const args = [\"exec\", \"size-limit\", ...(opts.extraArgs ?? [])];\n const r = runCommand(\"pnpm\", args, { cwd, timeoutMs: 120_000 });\n\n if (r.status === 0) {\n return {\n name: \"size-limit\",\n status: \"passed\",\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n reason: summariseTrailingLine(r.stdout),\n };\n }\n\n const combined = `${r.stdout}\\n${r.stderr}`;\n const looksMissing =\n /command not found|cannot resolve|ERR_PNPM_DLX_NO_BIN|ERR_PNPM_RECURSIVE_EXEC/i.test(\n combined,\n ) || /No \"size-limit\"\\s*config/i.test(combined);\n if (looksMissing) {\n return {\n name: \"size-limit\",\n status: opts.optional ? \"skipped\" : \"missing\",\n reason: opts.optional\n ? \"size-limit not configured — skipped (optional)\"\n : \"size-limit binary or config missing (add `size-limit` to devDeps and configure budgets, or pass --optional)\",\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n }\n\n return {\n name: \"size-limit\",\n status: \"failed\",\n reason: `size-limit budget exceeded (exit ${r.status ?? \"?\"})`,\n output: truncateOutput(r.stdout, r.stderr),\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n}\n\nfunction summariseTrailingLine(stdout: string): string {\n const tail = stdout\n .split(/\\r?\\n/g)\n .map((s) => s.trim())\n .filter(Boolean)\n .slice(-3)\n .join(\" / \");\n return tail.slice(0, 200);\n}\n\nfunction nsToMs(ns: bigint): number {\n return Number(ns) / 1_000_000;\n}\n","/**\n * `geenius-release smoke-packed` — pack the package, install the tarball into\n * an ephemeral tmpdir, and dynamic-import every subpath in `package.json:exports`.\n *\n * Replaces the 36 copies of `smoke-packed-imports.mjs` (the heaviest legacy\n * script at ~286 LOC/copy = 10,318 total LOC absorbed).\n */\n\nimport {\n existsSync,\n mkdirSync,\n mkdtempSync,\n readdirSync,\n readFileSync,\n rmSync,\n statSync,\n symlinkSync,\n writeFileSync,\n} from \"node:fs\";\nimport { tmpdir } from \"node:os\";\nimport { dirname, join, resolve } from \"node:path\";\n\nimport type { Config } from \"../config.js\";\nimport { resolvePaths } from \"../lib/paths.js\";\nimport { writeReport } from \"../lib/reporter.js\";\nimport { rollupCommandStatus } from \"../lib/scanner.js\";\nimport { runCommand, truncateOutput } from \"../lib/spawn.js\";\nimport type { CommandReport, StepReport } from \"../types.js\";\n\nexport interface RunSmokePackedOptions {\n cwd?: string;\n config?: Config[\"smokePacked\"];\n /** Limit to a subset of subpaths. */\n subpaths?: readonly string[];\n quiet?: boolean;\n /** CLI-only overrides (mirror config fields). */\n checkExportsOnDisk?: boolean;\n checkTarballPurity?: string;\n checkStylesheets?: boolean;\n browserConditions?: boolean;\n domStubs?: boolean;\n injectDeps?: readonly string[];\n}\n\nexport async function runSmokePacked(opts: RunSmokePackedOptions = {}): Promise<CommandReport> {\n const startedAtNs = process.hrtime.bigint();\n const startedAt = new Date().toISOString();\n const paths = resolvePaths(opts.cwd);\n // Merge config with CLI overrides. CLI takes precedence per-field.\n const baseConfig: Config[\"smokePacked\"] = opts.config ?? {\n subpathsFromExports: true,\n extraSubpaths: [],\n timeoutMs: 120_000,\n checkExportsOnDisk: false,\n checkTarballPurity: \"\",\n checkStylesheets: false,\n browserConditions: false,\n domStubs: false,\n injectDeps: [],\n };\n const config: Config[\"smokePacked\"] = {\n ...baseConfig,\n ...(opts.checkExportsOnDisk !== undefined\n ? { checkExportsOnDisk: opts.checkExportsOnDisk }\n : {}),\n ...(opts.checkTarballPurity !== undefined\n ? { checkTarballPurity: opts.checkTarballPurity }\n : {}),\n ...(opts.checkStylesheets !== undefined ? { checkStylesheets: opts.checkStylesheets } : {}),\n ...(opts.browserConditions !== undefined ? { browserConditions: opts.browserConditions } : {}),\n ...(opts.domStubs !== undefined ? { domStubs: opts.domStubs } : {}),\n ...(opts.injectDeps !== undefined ? { injectDeps: [...opts.injectDeps] } : {}),\n };\n\n const manifest = JSON.parse(readFileSync(paths.packageJson, \"utf8\")) as {\n name: string;\n version: string;\n exports?: Record<string, unknown> | string;\n };\n\n const subpaths = opts.subpaths ?? deriveSubpaths(manifest, config);\n if (subpaths.length === 0) {\n const empty: CommandReport = {\n command: \"smoke-packed\",\n status: \"skipped\",\n startedAt,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n steps: [\n { name: \"subpaths\", status: \"skipped\", reason: \"no subpaths to test\", durationMs: 0 },\n ],\n meta: { package: manifest.name, version: manifest.version },\n };\n writeReport(empty, {\n reportDir: paths.reportDir,\n ...(opts.quiet === true ? { quiet: true } : {}),\n });\n return empty;\n }\n\n // 1. Pack the package into a tarball in a tmpdir.\n const tmp = mkdtempSync(join(tmpdir(), \"geenius-release-smoke-\"));\n let report: CommandReport;\n try {\n const packStep = packPackage(paths.packageRoot, tmp);\n if (packStep.status === \"failed\") {\n report = {\n command: \"smoke-packed\",\n status: \"failed\",\n startedAt,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n steps: [packStep],\n meta: { package: manifest.name, version: manifest.version },\n };\n } else {\n const tarball = packStep.reason ?? \"\";\n const tarballPath = join(tmp, tarball.replace(/^.*\\//, \"\"));\n const preChecks: StepReport[] = [];\n\n if (config.checkTarballPurity) {\n preChecks.push(checkTarballPurity(tarballPath, config.checkTarballPurity));\n }\n const exportsManifest =\n (manifest.exports as Record<string, unknown> | undefined) ?? undefined;\n if (config.checkExportsOnDisk || config.checkStylesheets) {\n preChecks.push(\n checkPackedExports(tarballPath, exportsManifest, {\n checkAll: config.checkExportsOnDisk,\n checkStylesheets: config.checkStylesheets,\n }),\n );\n }\n\n const failedPre = preChecks.find((s) => s.status === \"failed\");\n if (failedPre) {\n report = {\n command: \"smoke-packed\",\n status: \"failed\",\n startedAt,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n steps: [packStep, ...preChecks],\n meta: { package: manifest.name, version: manifest.version },\n };\n } else {\n const installStep = installTarball(tmp, tarball);\n if (installStep.status === \"failed\") {\n report = {\n command: \"smoke-packed\",\n status: \"failed\",\n startedAt,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n steps: [packStep, ...preChecks, installStep],\n meta: { package: manifest.name, version: manifest.version },\n };\n } else {\n // Optional: symlink workspace siblings into the consumer's\n // node_modules so packages with `link:` peer deps don't fail\n // resolution at import time.\n const injectStep =\n config.injectDeps.length > 0\n ? injectWorkspaceDeps(tmp, paths.packageRoot, config.injectDeps)\n : null;\n const failedInject = injectStep && injectStep.status === \"failed\" ? injectStep : null;\n if (failedInject) {\n report = {\n command: \"smoke-packed\",\n status: \"failed\",\n startedAt,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n steps: [packStep, ...preChecks, installStep, failedInject],\n meta: { package: manifest.name, version: manifest.version },\n };\n } else {\n const domStubStep = config.domStubs ? writeDomStubPackages(tmp) : null;\n const failedDomStub =\n domStubStep && domStubStep.status === \"failed\" ? domStubStep : null;\n if (failedDomStub) {\n report = {\n command: \"smoke-packed\",\n status: \"failed\",\n startedAt,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n steps: [\n packStep,\n ...preChecks,\n installStep,\n ...(injectStep ? [injectStep] : []),\n failedDomStub,\n ],\n meta: { package: manifest.name, version: manifest.version },\n };\n writeReport(report, {\n reportDir: paths.reportDir,\n ...(opts.quiet === true ? { quiet: true } : {}),\n });\n return report;\n }\n const importSteps = await importSubpaths(tmp, manifest.name, subpaths, {\n browserConditions: config.browserConditions,\n domStubs: config.domStubs,\n });\n const steps = [\n packStep,\n ...preChecks,\n installStep,\n ...(injectStep ? [injectStep] : []),\n ...(domStubStep ? [domStubStep] : []),\n ...importSteps,\n ];\n report = {\n command: \"smoke-packed\",\n status: rollupCommandStatus(steps),\n startedAt,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n steps,\n meta: {\n package: manifest.name,\n version: manifest.version,\n subpathCount: subpaths.length,\n },\n };\n }\n }\n }\n }\n } finally {\n try {\n rmSync(tmp, { recursive: true, force: true });\n } catch {\n // best-effort cleanup\n }\n }\n\n writeReport(report, {\n reportDir: paths.reportDir,\n ...(opts.quiet === true ? { quiet: true } : {}),\n });\n return report;\n}\n\n/* ───────── Steps ───────── */\n\nfunction packPackage(packageRoot: string, tmp: string): StepReport {\n const startedAtNs = process.hrtime.bigint();\n const r = runCommand(\"pnpm\", [\"pack\", \"--pack-destination\", tmp], { cwd: packageRoot });\n if (r.status !== 0) {\n return {\n name: \"pnpm pack\",\n status: \"failed\",\n reason: `pnpm pack exited ${r.status ?? \"?\"}`,\n output: truncateOutput(r.stdout, r.stderr),\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n }\n // Capture the produced tarball name from stdout (pnpm prints it on the last\n // non-empty line). The path is also discoverable by listing tmp; we prefer\n // the stdout line for determinism.\n const tarball = r.stdout\n .split(/\\r?\\n/g)\n .map((s) => s.trim())\n .filter(Boolean)\n .pop();\n return {\n name: \"pnpm pack\",\n status: \"passed\",\n reason: tarball ?? \"(tarball)\",\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n}\n\nfunction installTarball(tmp: string, tarballName: string): StepReport {\n const startedAtNs = process.hrtime.bigint();\n // Create a minimal package in tmp to install the tarball into.\n const consumer = join(tmp, \"consumer\");\n try {\n mkdirSync(consumer, { recursive: true });\n writeFileSync(\n join(consumer, \"package.json\"),\n JSON.stringify({ name: \"smoke-consumer\", version: \"0.0.0\", private: true }, null, 2),\n \"utf8\",\n );\n } catch (error) {\n return {\n name: \"install\",\n status: \"failed\",\n reason: (error as Error).message,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n }\n\n // tarballName may be an absolute path (pnpm prints the full path on its\n // final stdout line) or a bare filename. `join` lets the absolute form win.\n const tarballPath = join(tmp, tarballName.replace(/^.*\\//, \"\"));\n\n // Install order:\n // 1. npm install — fully materialises the tarball, catches\n // `exports`/`files`/`typesVersions` bugs that pnpm's hard-link semantics\n // can hide. We do NOT pass --silent: npm uses stderr for the actual\n // resolution diagnostics, and silencing them produced \"exit 1 with\n // empty output\" failures that cost real debugging time.\n let r = runCommand(\"npm\", [\"install\", \"--no-audit\", \"--no-fund\", tarballPath], {\n cwd: consumer,\n timeoutMs: 120_000,\n });\n const attempts: { tool: string; status: number | null; stdout: string; stderr: string }[] = [\n { tool: \"npm install\", status: r.status, stdout: r.stdout, stderr: r.stderr },\n ];\n\n if (r.status !== 0) {\n // The tarball commonly carries source-time `link:` / `workspace:`\n // specifiers for sibling Geenius packages. pnpm resolves those against\n // the workspace; fall back unconditionally on npm failure so a real\n // bug (e.g. malformed `exports`) is still reported via the second\n // attempt's output rather than being swallowed.\n r = runCommand(\"pnpm\", [\"add\", tarballPath], {\n cwd: consumer,\n timeoutMs: 120_000,\n });\n attempts.push({\n tool: \"pnpm add\",\n status: r.status,\n stdout: r.stdout,\n stderr: r.stderr,\n });\n }\n\n if (r.status !== 0) {\n const combined = attempts\n .map((a) => `--- ${a.tool} (exit ${a.status ?? \"?\"}) ---\\n${a.stdout}\\n${a.stderr}`)\n .join(\"\\n\");\n return {\n name: \"install\",\n status: \"failed\",\n reason: `install failed after ${attempts.length} attempt(s) (last: ${\n attempts[attempts.length - 1]?.tool\n } exited ${r.status ?? \"?\"})`,\n output: truncateOutput(combined, \"\"),\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n }\n return {\n name: \"install\",\n status: \"passed\",\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n}\n\ninterface ImportProbeOptions {\n browserConditions: boolean;\n domStubs: boolean;\n}\n\nasync function importSubpaths(\n tmp: string,\n packageName: string,\n subpaths: readonly string[],\n options: ImportProbeOptions,\n): Promise<StepReport[]> {\n const consumer = join(tmp, \"consumer\");\n const steps: StepReport[] = [];\n\n for (const subpath of subpaths) {\n const startedAtNs = process.hrtime.bigint();\n const specifier =\n subpath === \".\" ? packageName : `${packageName}/${subpath.replace(/^\\.\\//, \"\")}`;\n const result = await runImportProbe(consumer, specifier, options);\n if (result.ok) {\n steps.push({\n name: `import ${specifier}`,\n status: \"passed\",\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n });\n } else {\n steps.push({\n name: `import ${specifier}`,\n status: \"failed\",\n reason: result.reason,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n });\n }\n }\n return steps;\n}\n\nconst DOM_STUB_PREAMBLE = [\n \"const noop = () => {};\",\n \"class HTMLElementStub { focus() {} blur() {} }\",\n \"globalThis.window = globalThis.window ?? globalThis;\",\n \"globalThis.self = globalThis.self ?? globalThis;\",\n \"globalThis.HTMLElement = globalThis.HTMLElement ?? HTMLElementStub;\",\n \"globalThis.Element = globalThis.Element ?? HTMLElementStub;\",\n \"globalThis.Node = globalThis.Node ?? HTMLElementStub;\",\n \"globalThis.addEventListener = globalThis.addEventListener ?? noop;\",\n \"globalThis.removeEventListener = globalThis.removeEventListener ?? noop;\",\n \"const elementStub = () => ({ style: {}, currentStyle: null, addEventListener: noop, removeEventListener: noop, setAttribute: noop, appendChild: noop, removeChild: noop, querySelector: () => null, querySelectorAll: () => [] });\",\n \"globalThis.document = globalThis.document ?? { documentElement: elementStub(), head: elementStub(), body: elementStub(), createElement: elementStub, createTextNode: () => ({}), addEventListener: noop, removeEventListener: noop, querySelector: () => null, querySelectorAll: () => [] };\",\n \"if (!globalThis.navigator?.userAgent) Object.defineProperty(globalThis, 'navigator', { value: { userAgent: 'node' }, configurable: true });\",\n \"globalThis.matchMedia = globalThis.matchMedia ?? (() => ({ matches: false, addEventListener: noop, removeEventListener: noop, addListener: noop, removeListener: noop }));\",\n].join(\"\\n\");\n\nasync function runImportProbe(\n consumer: string,\n specifier: string,\n options: ImportProbeOptions,\n): Promise<{ ok: true } | { ok: false; reason: string }> {\n // Run a child node process so a failing import doesn't crash the toolkit.\n const probeBody =\n `await import(${JSON.stringify(specifier)}).then(m => {` +\n `if (m === null || (typeof m !== 'object' && typeof m !== 'function')) {` +\n `console.error('empty module'); process.exit(1);` +\n `} process.exit(0); }).catch(e => { console.error(e?.message ?? String(e)); process.exit(1); });`;\n const probeScript = options.domStubs ? `${DOM_STUB_PREAMBLE}\\n${probeBody}` : probeBody;\n const nodeArgs = [\n ...(options.browserConditions ? [\"--conditions=browser\"] : []),\n \"--input-type=module\",\n \"-e\",\n probeScript,\n ];\n const r = runCommand(\"node\", nodeArgs, {\n cwd: consumer,\n timeoutMs: 30_000,\n });\n if (r.status === 0) return { ok: true };\n return { ok: false, reason: truncateOutput(r.stdout, r.stderr, 512) };\n}\n\n/* ───────── Tarball purity + exports-on-disk ───────── */\n\nfunction checkTarballPurity(tarballPath: string, pattern: string): StepReport {\n const startedAtNs = process.hrtime.bigint();\n const r = runCommand(\"tar\", [\"-tzf\", tarballPath], { cwd: dirname(tarballPath) });\n if (r.status !== 0) {\n return {\n name: \"tarball-purity\",\n status: \"failed\",\n reason: `tar -tzf exited ${r.status ?? \"?\"}`,\n output: truncateOutput(r.stdout, r.stderr),\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n }\n let regex: RegExp;\n try {\n regex = new RegExp(pattern);\n } catch (error) {\n return {\n name: \"tarball-purity\",\n status: \"failed\",\n reason: `invalid regex: ${(error as Error).message}`,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n }\n const unexpected = r.stdout\n .split(/\\r?\\n/g)\n .map((s) => s.trim())\n .filter(Boolean)\n .filter((path) => !regex.test(path));\n if (unexpected.length > 0) {\n return {\n name: \"tarball-purity\",\n status: \"failed\",\n reason: `${unexpected.length} unexpected file(s) in tarball`,\n output: unexpected.slice(0, 20).join(\"\\n\"),\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n }\n return {\n name: \"tarball-purity\",\n status: \"passed\",\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n}\n\nfunction checkPackedExports(\n tarballPath: string,\n exportsManifest: Record<string, unknown> | undefined,\n flags: { checkAll: boolean; checkStylesheets: boolean },\n): StepReport {\n const startedAtNs = process.hrtime.bigint();\n if (!exportsManifest) {\n return {\n name: \"exports-on-disk\",\n status: \"skipped\",\n reason: \"no exports in package.json\",\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n }\n\n // Extract tarball into a sibling tmp dir.\n const extractDir = join(dirname(tarballPath), \"extract\");\n try {\n mkdirSync(extractDir, { recursive: true });\n } catch {\n /* ignore */\n }\n const tarRes = runCommand(\"tar\", [\"-xzf\", tarballPath, \"-C\", extractDir], {\n cwd: dirname(tarballPath),\n });\n if (tarRes.status !== 0) {\n return {\n name: \"exports-on-disk\",\n status: \"failed\",\n reason: `tar -xzf exited ${tarRes.status ?? \"?\"}`,\n output: truncateOutput(tarRes.stdout, tarRes.stderr),\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n }\n const packedRoot = join(extractDir, \"package\");\n\n const missing: string[] = [];\n for (const [subpath, target] of Object.entries(exportsManifest)) {\n for (const condition of [\"types\", \"import\", \"default\"]) {\n const targetPath = pickConditionTarget(target, condition);\n if (typeof targetPath !== \"string\") continue;\n const isCss = targetPath.endsWith(\".css\");\n if (isCss && !flags.checkStylesheets) continue;\n if (!isCss && !flags.checkAll) continue;\n const onDisk = join(packedRoot, targetPath.replace(/^\\.\\//, \"\"));\n if (!existsSync(onDisk)) {\n missing.push(`${subpath} (${condition}) → ${targetPath}`);\n }\n }\n }\n\n if (missing.length > 0) {\n return {\n name: \"exports-on-disk\",\n status: \"failed\",\n reason: `${missing.length} missing export target(s) in packed tarball`,\n output: missing.slice(0, 20).join(\"\\n\"),\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n }\n return {\n name: \"exports-on-disk\",\n status: \"passed\",\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n}\n\nfunction pickConditionTarget(target: unknown, condition: string): string | undefined {\n if (typeof target === \"string\") return target;\n if (!target || typeof target !== \"object\") return undefined;\n const value = (target as Record<string, unknown>)[condition];\n return typeof value === \"string\" ? value : undefined;\n}\n\n/* ───────── Workspace dep injection ───────── */\n\nfunction injectWorkspaceDeps(\n tmp: string,\n packageRoot: string,\n injectDeps: readonly string[],\n): StepReport {\n const startedAtNs = process.hrtime.bigint();\n const consumerNodeModules = join(tmp, \"consumer\", \"node_modules\");\n const siblingsRoot = resolve(packageRoot, \"..\");\n try {\n mkdirSync(consumerNodeModules, { recursive: true });\n } catch {\n /* ignore */\n }\n\n // Pre-scan variant packageDirs once — they're the secondary lookup path for\n // external peer deps (e.g. react, @mui/material) that aren't workspace\n // siblings but ARE installed in a variant's own node_modules.\n const variantPackageDirs = collectVariantPackageDirs(packageRoot);\n\n const linked: string[] = [];\n const missing: string[] = [];\n for (const dep of injectDeps) {\n const target =\n resolveSiblingPackage(dep, siblingsRoot) ??\n resolveFromVariantNodeModules(dep, packageRoot, variantPackageDirs);\n if (!target) {\n missing.push(dep);\n continue;\n }\n try {\n linkSymlink(consumerNodeModules, dep, target);\n linked.push(`${dep} → ${target}`);\n } catch (error) {\n missing.push(`${dep} (link error: ${(error as Error).message})`);\n }\n }\n\n if (missing.length > 0) {\n return {\n name: \"inject-workspace-deps\",\n status: \"failed\",\n reason: `${missing.length} dep(s) unresolved`,\n output: missing.join(\"\\n\"),\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n }\n return {\n name: \"inject-workspace-deps\",\n status: \"passed\",\n reason: `linked ${linked.length} dep(s)`,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n}\n\n/**\n * Resolve a workspace package name to its on-disk root via the sibling-dir\n * convention.\n *\n * Conventions tried (in order):\n * 1. `@geenius/<name>` → `<siblingsRoot>/geenius-<name>`\n * 2. `<siblingsRoot>/<name>` (bare or scoped-tail)\n *\n * Returns the resolved absolute path or null if no candidate exists.\n */\nfunction resolveSiblingPackage(depName: string, siblingsRoot: string): string | null {\n if (depName.startsWith(\"@geenius/\")) {\n const tail = depName.slice(\"@geenius/\".length);\n const candidate = resolve(siblingsRoot, `geenius-${tail}`);\n if (existsSync(candidate)) return candidate;\n }\n const direct = resolve(siblingsRoot, depName.replace(/^@[^/]+\\//, \"\"));\n if (existsSync(direct)) return direct;\n return null;\n}\n\nfunction writeDomStubPackages(tmp: string): StepReport {\n const startedAtNs = process.hrtime.bigint();\n const consumerNodeModules = join(tmp, \"consumer\", \"node_modules\");\n\n try {\n writeReactNativeStubPackage(consumerNodeModules);\n writeScopedStubPackage(\n consumerNodeModules,\n \"@shopify\",\n \"flash-list\",\n [\"export const FlashList = () => null;\", \"export default { FlashList };\", \"\"].join(\"\\n\"),\n );\n writeScopedStubPackage(\n consumerNodeModules,\n \"@shopify\",\n \"react-native-performance\",\n [\n \"export const PerformanceProfiler = (props = {}) => props.children ?? null;\",\n \"export default { PerformanceProfiler };\",\n \"\",\n ].join(\"\\n\"),\n );\n } catch (error) {\n return {\n name: \"dom-stub-packages\",\n status: \"failed\",\n reason: (error as Error).message,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n }\n\n return {\n name: \"dom-stub-packages\",\n status: \"passed\",\n reason: \"react-native, @shopify/flash-list, @shopify/react-native-performance\",\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n };\n}\n\nfunction writeReactNativeStubPackage(nodeModulesDir: string): void {\n const packageDir = join(nodeModulesDir, \"react-native\");\n rmSync(packageDir, { recursive: true, force: true });\n mkdirSync(packageDir, { recursive: true });\n writeFileSync(\n join(packageDir, \"package.json\"),\n `${JSON.stringify({ type: \"module\", exports: { \".\": \"./index.js\" } }, null, 2)}\\n`,\n );\n writeFileSync(\n join(packageDir, \"index.js\"),\n [\n \"const Stub = () => null;\",\n \"const removable = { remove() {} };\",\n \"export const View = Stub;\",\n \"export const Text = Stub;\",\n \"export const Pressable = Stub;\",\n \"export const ScrollView = Stub;\",\n \"export const SafeAreaView = Stub;\",\n \"export const KeyboardAvoidingView = Stub;\",\n \"export const TouchableOpacity = Stub;\",\n \"export const ActivityIndicator = Stub;\",\n \"export const TextInput = Stub;\",\n \"export const FlatList = Stub;\",\n \"export const Modal = Stub;\",\n \"export const Switch = Stub;\",\n \"export const Image = Stub;\",\n \"export const StyleSheet = { create: (styles) => styles ?? {}, flatten: (style) => style, compose: (...styles) => styles.filter(Boolean) };\",\n \"export const Linking = { openURL: async () => undefined, canOpenURL: async () => true };\",\n \"export const Share = { share: async () => ({ action: 'sharedAction' }) };\",\n \"export const Keyboard = { addListener: () => removable, dismiss() {}, removeAllListeners() {} };\",\n \"export const BackHandler = { addEventListener: () => removable, exitApp() {} };\",\n \"export const Platform = { OS: 'web', select: (values) => values?.web ?? values?.default ?? values?.ios ?? values?.android };\",\n \"export const Dimensions = { get: () => ({ width: 1024, height: 768, scale: 1, fontScale: 1 }), addEventListener: () => removable };\",\n \"export const Animated = { View: Stub, Text: Stub, createAnimatedComponent: () => Stub, timing: () => ({ start: (callback) => callback?.() }), Value: class {} };\",\n \"export default { View, Text, Pressable, ScrollView, SafeAreaView, KeyboardAvoidingView, TouchableOpacity, ActivityIndicator, TextInput, FlatList, Modal, Switch, Image, StyleSheet, Linking, Share, Keyboard, BackHandler, Platform, Dimensions, Animated };\",\n \"\",\n ].join(\"\\n\"),\n );\n}\n\nfunction writeScopedStubPackage(\n nodeModulesDir: string,\n scope: string,\n name: string,\n source: string,\n): void {\n const packageDir = join(nodeModulesDir, scope, name);\n rmSync(packageDir, { recursive: true, force: true });\n mkdirSync(packageDir, { recursive: true });\n writeFileSync(\n join(packageDir, \"package.json\"),\n `${JSON.stringify({ name: `${scope}/${name}`, type: \"module\", exports: { \".\": \"./index.js\" } }, null, 2)}\\n`,\n );\n writeFileSync(join(packageDir, \"index.js\"), source);\n}\n\n/**\n * Fallback: resolve a peer dep from one of the variant packageDirs'\n * `node_modules/`. Used for external UI libs (react, @mui/material, …) that\n * are pulled in as peer deps of variant packages and live in their local\n * isolated `node_modules/` slot under pnpm's default linker.\n */\nfunction resolveFromVariantNodeModules(\n depName: string,\n packageRoot: string,\n variantPackageDirs: readonly string[],\n): string | null {\n for (const packageDir of variantPackageDirs) {\n const candidate = resolve(packageRoot, packageDir, \"node_modules\", depName);\n if (existsSync(candidate)) return candidate;\n }\n // Also try the root node_modules as last resort (hoisted installs).\n const root = resolve(packageRoot, \"node_modules\", depName);\n if (existsSync(root)) return root;\n return null;\n}\n\nfunction collectVariantPackageDirs(packageRoot: string): string[] {\n // Reads packageRoot/packages/* directories. Cheap (one readdir) and\n // doesn't require the toolkit's variants loader (which we want to keep\n // smoke-packed independent of, so it works on packages without a\n // variants.json).\n const packagesRoot = resolve(packageRoot, \"packages\");\n if (!existsSync(packagesRoot)) return [];\n try {\n return readdirSync(packagesRoot)\n .map((name) => join(\"packages\", name))\n .filter((rel) => {\n try {\n return statSync(resolve(packageRoot, rel)).isDirectory();\n } catch {\n return false;\n }\n });\n } catch {\n return [];\n }\n}\n\nfunction linkSymlink(nodeModulesDir: string, depName: string, target: string): void {\n const parts = depName.split(\"/\");\n const scoped = parts.length === 2 && depName.startsWith(\"@\");\n const parentDir = scoped ? join(nodeModulesDir, parts[0]!) : nodeModulesDir;\n const linkPath = scoped ? join(parentDir, parts[1]!) : join(nodeModulesDir, depName);\n mkdirSync(parentDir, { recursive: true });\n if (existsSync(linkPath)) return;\n symlinkSync(target, linkPath, \"dir\");\n}\n\n/* ───────── Subpath discovery ───────── */\n\nfunction deriveSubpaths(\n manifest: { exports?: Record<string, unknown> | string },\n config: Config[\"smokePacked\"],\n): readonly string[] {\n const out = new Set<string>();\n if (config.subpathsFromExports && manifest.exports && typeof manifest.exports === \"object\") {\n for (const key of Object.keys(manifest.exports)) {\n if (key.endsWith(\".css\")) continue;\n out.add(key);\n }\n } else {\n out.add(\".\");\n }\n for (const extra of config.extraSubpaths) out.add(extra);\n return Array.from(out);\n}\n\nfunction nsToMs(ns: bigint): number {\n return Number(ns) / 1_000_000;\n}\n","/**\n * Static Storybook smoke — serve a built Storybook from disk and visit every\n * indexed story under headless Chromium, asserting that `#storybook-root` is\n * non-empty and that no page errors fire. Replaces the per-package\n * `storybook-runner.mjs` / `storybook-test-runner.mjs` (~30 copies) that\n * agents had to reinvent after Storybook's Vitest browser addon kept hanging.\n *\n * `@playwright/test` is loaded lazily so the toolkit doesn't pull Chromium\n * into every package that only needs the build/lint commands.\n */\n\nimport { createReadStream, existsSync, readFileSync, statSync } from \"node:fs\";\nimport { createServer, type Server } from \"node:http\";\nimport { createRequire } from \"node:module\";\nimport { extname, join, resolve, sep } from \"node:path\";\n\nexport interface StorybookSmokeApp {\n name: string;\n /** Absolute path to the app's `storybook-static` directory. */\n staticDir: string;\n}\n\nexport interface StorybookSmokeResult {\n app: StorybookSmokeApp;\n storyCount: number;\n passed: boolean;\n /** Reason for failure, if any. */\n reason?: string;\n /** Story ids that rendered empty roots. */\n emptyStoryIds: string[];\n /** Story ids that emitted page errors. */\n erroringStoryIds: string[];\n}\n\nexport interface StorybookSmokeOptions {\n apps: readonly StorybookSmokeApp[];\n /** Per-story navigation timeout (ms). Default: 15_000. */\n navigationTimeoutMs?: number;\n /** Throw on the first failure instead of accumulating. Default: false. */\n failFast?: boolean;\n /** Required story ids that every app must include. Default: []. */\n requiredStoryIds?: readonly string[];\n}\n\nconst MIME = new Map<string, string>([\n [\".css\", \"text/css; charset=utf-8\"],\n [\".html\", \"text/html; charset=utf-8\"],\n [\".js\", \"text/javascript; charset=utf-8\"],\n [\".json\", \"application/json; charset=utf-8\"],\n [\".map\", \"application/json; charset=utf-8\"],\n [\".svg\", \"image/svg+xml\"],\n [\".woff2\", \"font/woff2\"],\n [\".woff\", \"font/woff\"],\n]);\n\ninterface StorybookStoryEntry {\n id: string;\n type?: string;\n subtype?: string;\n}\n\ninterface StorybookIndex {\n entries?: Record<string, StorybookStoryEntry>;\n}\n\n// `@playwright/test` lives only in consuming packages; we use minimal duck\n// types so the toolkit doesn't need it as a direct dependency.\ninterface MinimalBrowser {\n newPage(): Promise<MinimalPage>;\n close(): Promise<void>;\n}\ninterface MinimalPage {\n on(event: \"pageerror\", listener: (error: { message: string }) => void): void;\n on(event: \"console\", listener: (message: { type(): string; text(): string }) => void): void;\n goto(url: string, opts: { waitUntil: string; timeout: number }): Promise<unknown>;\n locator(selector: string): { evaluate<T>(fn: (root: unknown) => T): Promise<T> };\n close(): Promise<void>;\n}\ninterface MinimalPlaywright {\n chromium: { launch(opts: { headless: boolean }): Promise<MinimalBrowser> };\n}\n\nexport async function runStorybookStaticSmoke(\n opts: StorybookSmokeOptions,\n): Promise<StorybookSmokeResult[]> {\n if (opts.apps.length === 0) return [];\n\n let playwright: MinimalPlaywright;\n try {\n // Resolve from the package invoking the CLI, not the linked toolkit repo.\n // `@playwright/test` is intentionally optional and lives in consumers that\n // run static Storybook smoke checks.\n const playwrightSpecifier = \"@playwright/test\";\n const requireFromConsumer = createRequire(resolve(process.cwd(), \"package.json\"));\n playwright = requireFromConsumer(playwrightSpecifier) as MinimalPlaywright;\n } catch (error) {\n throw new Error(\n `@playwright/test not installed in this package — static Storybook smoke needs Chromium. Underlying error: ${\n (error as Error).message\n }`,\n );\n }\n\n const browser = await playwright.chromium.launch({ headless: true });\n const results: StorybookSmokeResult[] = [];\n try {\n for (const app of opts.apps) {\n const result = await smokeOneApp(app, browser, opts);\n results.push(result);\n if (!result.passed && opts.failFast) break;\n }\n } finally {\n await browser.close();\n }\n return results;\n}\n\nasync function smokeOneApp(\n app: StorybookSmokeApp,\n browser: MinimalBrowser,\n opts: StorybookSmokeOptions,\n): Promise<StorybookSmokeResult> {\n const indexPath = join(app.staticDir, \"index.json\");\n if (!existsSync(indexPath)) {\n return {\n app,\n storyCount: 0,\n passed: false,\n reason: `missing Storybook index at ${indexPath}`,\n emptyStoryIds: [],\n erroringStoryIds: [],\n };\n }\n const index = JSON.parse(readFileSync(indexPath, \"utf8\")) as StorybookIndex;\n const entries = Object.values(index.entries ?? {}).filter(\n (entry) => entry?.type === \"story\" || entry?.subtype === \"story\",\n );\n if (entries.length === 0) {\n return {\n app,\n storyCount: 0,\n passed: false,\n reason: \"no indexed stories\",\n emptyStoryIds: [],\n erroringStoryIds: [],\n };\n }\n if (opts.requiredStoryIds && opts.requiredStoryIds.length > 0) {\n const present = new Set(entries.map((e) => e.id));\n const missing = opts.requiredStoryIds.filter((id) => !present.has(id));\n if (missing.length > 0) {\n return {\n app,\n storyCount: entries.length,\n passed: false,\n reason: `missing required stories: ${missing.join(\", \")}`,\n emptyStoryIds: [],\n erroringStoryIds: [],\n };\n }\n }\n\n const server = await startStaticServer(app.staticDir);\n const empty: string[] = [];\n const erroring: string[] = [];\n const page = await browser.newPage();\n const navTimeout = opts.navigationTimeoutMs ?? 15_000;\n const errors: { id: string; messages: string[] } = { id: \"\", messages: [] };\n\n page.on(\"pageerror\", (error) => {\n errors.messages.push(error.message);\n });\n page.on(\"console\", (message) => {\n if (message.type() === \"error\") errors.messages.push(message.text());\n });\n\n try {\n for (const story of entries) {\n errors.id = story.id;\n errors.messages.length = 0;\n await page.goto(`${server.origin}/iframe.html?id=${story.id}&viewMode=story`, {\n waitUntil: \"networkidle\",\n timeout: navTimeout,\n });\n const hasMarkup = await page.locator(\"#storybook-root\").evaluate((root: unknown) => {\n const r = root as { innerHTML?: string } | null;\n return Boolean(r && typeof r.innerHTML === \"string\" && r.innerHTML.trim().length > 0);\n });\n if (!hasMarkup) empty.push(story.id);\n if (errors.messages.length > 0) erroring.push(story.id);\n }\n } finally {\n await page.close();\n await server.close();\n }\n\n const passed = empty.length === 0 && erroring.length === 0;\n return {\n app,\n storyCount: entries.length,\n passed,\n emptyStoryIds: empty,\n erroringStoryIds: erroring,\n ...(passed\n ? {}\n : {\n reason: [\n empty.length > 0 ? `${empty.length} empty root(s)` : \"\",\n erroring.length > 0 ? `${erroring.length} story(ies) emitted page errors` : \"\",\n ]\n .filter(Boolean)\n .join(\", \"),\n }),\n };\n}\n\ninterface RunningServer {\n origin: string;\n close: () => Promise<void>;\n}\n\nfunction startStaticServer(staticDir: string): Promise<RunningServer> {\n const root = resolve(staticDir);\n const server: Server = createServer((request, response) => {\n const filePath = fileForRequest(root, request.url ?? \"/\");\n if (!filePath) {\n response.writeHead(403);\n response.end(\"Forbidden\");\n return;\n }\n if (!existsSync(filePath) || !statSync(filePath).isFile()) {\n response.writeHead(404);\n response.end(\"Not found\");\n return;\n }\n response.writeHead(200, {\n \"content-type\": MIME.get(extname(filePath)) ?? \"application/octet-stream\",\n });\n createReadStream(filePath).pipe(response);\n });\n\n return new Promise((resolveServer, reject) => {\n server.once(\"error\", reject);\n server.listen(0, \"127.0.0.1\", () => {\n const address = server.address();\n if (!address || typeof address === \"string\") {\n reject(new Error(\"Failed to allocate Storybook static smoke port.\"));\n return;\n }\n resolveServer({\n origin: `http://127.0.0.1:${address.port}`,\n close: () => new Promise<void>((ok) => server.close(() => ok())),\n });\n });\n });\n}\n\nfunction fileForRequest(staticDir: string, requestUrl: string): string | null {\n const url = new URL(requestUrl, \"http://127.0.0.1\");\n const pathname = decodeURIComponent(url.pathname === \"/\" ? \"/index.html\" : url.pathname);\n const resolved = resolve(join(staticDir, pathname));\n if (resolved !== staticDir && !resolved.startsWith(`${staticDir}${sep}`)) {\n return null;\n }\n if (existsSync(resolved) && statSync(resolved).isDirectory()) {\n return join(resolved, \"index.html\");\n }\n return resolved;\n}\n","/**\n * `geenius-release storybook` — build + test-runner orchestration for every\n * Storybook app declared in `release-toolkit.config.json:storybook.apps`.\n *\n * Absorbs ~28 scripts across 5 filename variations (`storybook-runner.mjs`,\n * `storybook-test-runner.mjs`, `test-storybook-static.mjs`, `storybook-build.mjs`,\n * `storybook-apps.mjs`).\n *\n * Each app is identified by a relative path to its directory; the toolkit\n * invokes `pnpm --dir <path> <action>` for each. Actions are configurable\n * (default: build then test:storybook).\n */\n\nimport { existsSync, readdirSync, readFile, readFileSync, statSync } from \"node:fs\";\nimport { createServer, type Server } from \"node:http\";\nimport { resolve } from \"node:path\";\n\nimport { resolvePaths } from \"../lib/paths.js\";\nimport { writeReport } from \"../lib/reporter.js\";\nimport { rollupCommandStatus } from \"../lib/scanner.js\";\nimport { runCommand, truncateOutput } from \"../lib/spawn.js\";\nimport { runStorybookStaticSmoke, type StorybookSmokeApp } from \"../lib/storybook-static-smoke.js\";\nimport { storybookVariants } from \"../lib/variants-rich.js\";\nimport type { CommandReport, StepReport } from \"../types.js\";\n\nexport interface RunStorybookOptions {\n cwd?: string;\n /** Relative paths to Storybook app directories. If omitted, falls back to\n * globbing `apps/storybook-*` at the package root. */\n apps?: readonly string[];\n /** Lifecycle action to run per app. Default: `[\"build\", \"test:storybook\"]`. */\n actions?: readonly string[];\n /** Limit to a subset of apps via a substring filter. */\n filter?: string;\n /** Soft-skip apps that don't have the requested script. Default: true. */\n skipIfMissingScript?: boolean;\n /** Continue with the next app after a failure. */\n continueOnFailure?: boolean;\n /** When set, run the toolkit's built-in static smoke (Playwright + http\n * server) instead of (or after) shelling out to `pnpm test:storybook`.\n * `replace` skips per-app `test:storybook`, `after` runs it then smoke,\n * `only` skips `build` too. Default: undefined (legacy behavior). */\n staticSmoke?: \"replace\" | \"after\" | \"only\";\n /** Per-app runner. `static-smoke` is the toolkit's built-in Playwright +\n * http-server smoke (equivalent to `staticSmoke: \"replace\"`).\n * `test-runner` invokes `@storybook/test-runner` against a served\n * built Storybook. `vitest` runs the app's `test:storybook` script\n * (which typically points at a Vitest browser-mode config).\n * When set, `staticSmoke` is ignored and a single build step runs\n * before the chosen runner. */\n runner?: \"static-smoke\" | \"test-runner\" | \"vitest\";\n /** Story ids every Storybook must include during static smoke. */\n requiredStoryIds?: readonly string[];\n /** Discover apps from variants.json instead of auto-globbing apps/storybook-*.\n * Reads variants where `storybook` field is set; respects `published` if\n * `fromVariantsScope: \"published\"` is also set. */\n fromVariants?: boolean;\n /** When `fromVariants` is true: `all` (default) includes every variant\n * with a `storybook` field; `published` includes only variants with\n * `published: true`. */\n fromVariantsScope?: \"all\" | \"published\";\n /** When set, assert per-app structural shape (required + forbidden files,\n * required story titles in the built index.json). Same intent as the\n * per-package `scripts/storybook-app-smoke.mjs` shim. */\n checkShape?: StorybookShapeSpec;\n quiet?: boolean;\n}\n\nexport interface StorybookShapeSpec {\n /** Paths (relative to the app dir) that must exist. */\n requiredFiles?: readonly string[];\n /** Paths (relative to the app dir) that must NOT exist. */\n forbiddenFiles?: readonly string[];\n /** Story titles (from index.json `entries[].title`) that must be present. */\n requiredTitles?: readonly string[];\n}\n\nexport async function runStorybook(opts: RunStorybookOptions = {}): Promise<CommandReport> {\n const startedAtNs = process.hrtime.bigint();\n const startedAt = new Date().toISOString();\n const paths = resolvePaths(opts.cwd);\n\n const apps =\n opts.apps ??\n (opts.fromVariants\n ? discoverAppsFromVariants(paths.packageRoot, opts.fromVariantsScope ?? \"all\")\n : discoverApps(paths.packageRoot));\n const filtered = opts.filter ? apps.filter((a) => a.includes(opts.filter as string)) : apps;\n // `runner` is the cleaner 0.6.0+ flag; `staticSmoke` remains for\n // back-compat. When `runner` is set, the build → runner sequence is fully\n // controlled by the toolkit.\n const runner = opts.runner;\n const smokeMode = opts.staticSmoke ?? (runner === \"static-smoke\" ? \"replace\" : undefined);\n const defaultActions =\n runner === \"test-runner\"\n ? [\"build\"]\n : runner === \"vitest\"\n ? [\"build\", \"test:storybook\"]\n : smokeMode === \"replace\" || smokeMode === \"after\"\n ? [\"build\"]\n : smokeMode === \"only\"\n ? []\n : [\"build\", \"test:storybook\"];\n const actions = opts.actions ?? defaultActions;\n\n if (filtered.length === 0) {\n const empty: CommandReport = {\n command: \"storybook\",\n status: \"skipped\",\n startedAt,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n steps: [\n { name: \"apps\", status: \"skipped\", reason: \"no Storybook apps found\", durationMs: 0 },\n ],\n };\n writeReport(empty, {\n reportDir: paths.reportDir,\n ...(opts.quiet === true ? { quiet: true } : {}),\n });\n return empty;\n }\n\n const steps: StepReport[] = [];\n outer: for (const appPath of filtered) {\n const abs = resolve(paths.packageRoot, appPath);\n if (!existsSync(abs)) {\n steps.push({\n name: appPath,\n status: \"failed\",\n reason: \"app directory not found\",\n durationMs: 0,\n });\n if (!opts.continueOnFailure) break;\n continue;\n }\n for (const action of actions) {\n const stepStartNs = process.hrtime.bigint();\n const stepName = `${appPath} ${action}`;\n\n if (opts.skipIfMissingScript !== false && !hasScript(abs, action)) {\n steps.push({\n name: stepName,\n status: \"skipped\",\n reason: \"script not declared\",\n durationMs: nsToMs(process.hrtime.bigint() - stepStartNs),\n });\n continue;\n }\n\n const r = runCommand(\"pnpm\", [\"--dir\", appPath, \"run\", \"--silent\", action], {\n cwd: paths.packageRoot,\n timeoutMs: 15 * 60 * 1000,\n });\n if (r.status === 0) {\n steps.push({\n name: stepName,\n status: \"passed\",\n durationMs: nsToMs(process.hrtime.bigint() - stepStartNs),\n });\n } else {\n steps.push({\n name: stepName,\n status: \"failed\",\n reason: `pnpm exited ${r.status ?? \"?\"}`,\n output: truncateOutput(r.stdout, r.stderr),\n durationMs: nsToMs(process.hrtime.bigint() - stepStartNs),\n });\n if (!opts.continueOnFailure) break outer;\n }\n }\n }\n\n if (\n smokeMode &&\n (steps.length === 0 || steps.every((s) => s.status === \"passed\" || s.status === \"skipped\"))\n ) {\n const smokeStartNs = process.hrtime.bigint();\n const smokeApps: StorybookSmokeApp[] = filtered.map((appPath) => ({\n name: appPath,\n staticDir: resolve(paths.packageRoot, appPath, \"storybook-static\"),\n }));\n try {\n const results = await runStorybookStaticSmoke({\n apps: smokeApps,\n ...(opts.requiredStoryIds ? { requiredStoryIds: opts.requiredStoryIds } : {}),\n failFast: opts.continueOnFailure !== true,\n });\n for (const r of results) {\n steps.push({\n name: `${r.app.name} static-smoke`,\n status: r.passed ? \"passed\" : \"failed\",\n reason: r.passed ? `${r.storyCount} stories rendered cleanly` : (r.reason ?? \"failed\"),\n durationMs: nsToMs(process.hrtime.bigint() - smokeStartNs),\n });\n }\n } catch (error) {\n steps.push({\n name: \"static-smoke\",\n status: \"failed\",\n reason: (error as Error).message,\n durationMs: nsToMs(process.hrtime.bigint() - smokeStartNs),\n });\n }\n }\n\n if (\n runner === \"test-runner\" &&\n (steps.length === 0 || steps.every((s) => s.status === \"passed\" || s.status === \"skipped\"))\n ) {\n for (const appPath of filtered) {\n const tStart = process.hrtime.bigint();\n const abs = resolve(paths.packageRoot, appPath);\n const status = await runTestRunnerForApp(paths.packageRoot, abs, appPath);\n steps.push({\n name: `${appPath} test-runner`,\n status: status === 0 ? \"passed\" : \"failed\",\n ...(status !== 0 ? { reason: `@storybook/test-runner exited ${status}` } : {}),\n durationMs: nsToMs(process.hrtime.bigint() - tStart),\n });\n if (status !== 0 && !opts.continueOnFailure) break;\n }\n }\n\n if (\n opts.checkShape &&\n (steps.length === 0 || steps.every((s) => s.status === \"passed\" || s.status === \"skipped\"))\n ) {\n for (const appPath of filtered) {\n const checkStart = process.hrtime.bigint();\n const abs = resolve(paths.packageRoot, appPath);\n const result = checkAppShape(abs, opts.checkShape);\n steps.push({\n name: `${appPath} check-shape`,\n status: result.ok ? \"passed\" : \"failed\",\n reason: result.message,\n durationMs: nsToMs(process.hrtime.bigint() - checkStart),\n });\n if (!result.ok && !opts.continueOnFailure) break;\n }\n }\n\n const status = rollupCommandStatus(steps);\n const report: CommandReport = {\n command: \"storybook\",\n status,\n startedAt,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n steps,\n meta: {\n appCount: filtered.length,\n actions,\n staticSmoke: smokeMode ?? null,\n checkShape: Boolean(opts.checkShape),\n },\n };\n writeReport(report, {\n reportDir: paths.reportDir,\n ...(opts.quiet === true ? { quiet: true } : {}),\n });\n return report;\n}\n\nfunction discoverApps(packageRoot: string): readonly string[] {\n // Conservative discovery: only top-level apps/storybook-* dirs. Packages\n // with nested apps configure them explicitly via `storybook.apps`.\n const candidates: string[] = [];\n const appsDir = resolve(packageRoot, \"apps\");\n if (!existsSync(appsDir)) return [];\n try {\n for (const name of readdirSync(appsDir)) {\n if (!name.startsWith(\"storybook-\")) continue;\n const full = resolve(appsDir, name);\n if (statSync(full).isDirectory()) candidates.push(`apps/${name}`);\n }\n } catch {\n return [];\n }\n return candidates;\n}\n\nfunction discoverAppsFromVariants(\n packageRoot: string,\n scope: \"all\" | \"published\",\n): readonly string[] {\n try {\n const matrix = storybookVariants({ rootDir: packageRoot });\n return matrix\n .filter((v) => (scope === \"published\" ? v.published : true))\n .map((v) => `apps/${v.storybook}`)\n .filter((appPath) => existsSync(resolve(packageRoot, appPath)));\n } catch {\n return [];\n }\n}\n\nfunction checkAppShape(appDir: string, spec: StorybookShapeSpec): { ok: boolean; message: string } {\n const missingRequired = (spec.requiredFiles ?? []).filter((f) => !existsSync(resolve(appDir, f)));\n const presentForbidden = (spec.forbiddenFiles ?? []).filter((f) =>\n existsSync(resolve(appDir, f)),\n );\n\n let missingTitles: string[] = [];\n if (spec.requiredTitles && spec.requiredTitles.length > 0) {\n const indexPath = resolve(appDir, \"storybook-static/index.json\");\n if (!existsSync(indexPath)) {\n return { ok: false, message: `missing storybook-static/index.json` };\n }\n try {\n const index = JSON.parse(readFileSync(indexPath, \"utf8\")) as {\n entries?: Record<string, { title?: string; type?: string }>;\n stories?: Record<string, { title?: string }>;\n };\n const titles = new Set<string>();\n for (const entry of Object.values(index.entries ?? index.stories ?? {})) {\n if (entry && typeof entry.title === \"string\") titles.add(entry.title);\n }\n missingTitles = spec.requiredTitles.filter((t) => !titles.has(t));\n } catch (error) {\n return { ok: false, message: `parse ${indexPath}: ${(error as Error).message}` };\n }\n }\n\n const problems: string[] = [];\n if (missingRequired.length > 0) {\n problems.push(`missing required: ${missingRequired.join(\", \")}`);\n }\n if (presentForbidden.length > 0) {\n problems.push(`present-but-forbidden: ${presentForbidden.join(\", \")}`);\n }\n if (missingTitles.length > 0) {\n problems.push(`missing titles: ${missingTitles.join(\", \")}`);\n }\n if (problems.length === 0) return { ok: true, message: \"shape OK\" };\n return { ok: false, message: problems.join(\"; \") };\n}\n\nasync function runTestRunnerForApp(\n packageRoot: string,\n appDir: string,\n appPath: string,\n): Promise<number> {\n // `@storybook/test-runner` doesn't accept --static-dir; it wants a --url\n // pointing at an already-serving static instance. We spin up an ephemeral\n // static server on a free port, point the runner at it, then tear down.\n const staticDir = resolve(appDir, \"storybook-static\");\n if (!existsSync(staticDir)) {\n process.stderr.write(`${appPath}: missing storybook-static — build first\\n`);\n return 1;\n }\n const { server, port } = await startStaticServer(staticDir);\n try {\n const r = runCommand(\n \"pnpm\",\n [\"--dir\", appPath, \"exec\", \"test-storybook\", \"--url\", `http://127.0.0.1:${port}`],\n { cwd: packageRoot, timeoutMs: 20 * 60 * 1000 },\n );\n return r.status ?? 1;\n } finally {\n await new Promise<void>((res) => server.close(() => res()));\n }\n}\n\nfunction startStaticServer(rootDir: string): Promise<{ server: Server; port: number }> {\n return new Promise((resolvePromise, reject) => {\n const server = createServer((req, res) => {\n const url = (req.url ?? \"/\").split(\"?\")[0] ?? \"/\";\n let rel = decodeURIComponent(url.replace(/^\\/+/, \"\"));\n if (rel === \"\" || rel.endsWith(\"/\")) rel = `${rel}index.html`;\n const filePath = resolve(rootDir, rel);\n if (!filePath.startsWith(rootDir)) {\n res.writeHead(403);\n res.end();\n return;\n }\n readFile(filePath, (err, data) => {\n if (err) {\n res.writeHead(404);\n res.end();\n return;\n }\n res.writeHead(200, { \"content-type\": mimeFor(filePath) });\n res.end(data);\n });\n });\n server.on(\"error\", reject);\n server.listen(0, \"127.0.0.1\", () => {\n const addr = server.address();\n if (!addr || typeof addr === \"string\") {\n reject(new Error(\"static server failed to bind\"));\n return;\n }\n resolvePromise({ server, port: addr.port });\n });\n });\n}\n\nfunction mimeFor(filePath: string): string {\n if (filePath.endsWith(\".html\")) return \"text/html; charset=utf-8\";\n if (filePath.endsWith(\".js\")) return \"application/javascript\";\n if (filePath.endsWith(\".mjs\")) return \"application/javascript\";\n if (filePath.endsWith(\".css\")) return \"text/css\";\n if (filePath.endsWith(\".json\")) return \"application/json\";\n if (filePath.endsWith(\".svg\")) return \"image/svg+xml\";\n if (filePath.endsWith(\".png\")) return \"image/png\";\n if (filePath.endsWith(\".woff2\")) return \"font/woff2\";\n return \"application/octet-stream\";\n}\n\nfunction hasScript(appDir: string, action: string): boolean {\n try {\n const pkg = JSON.parse(readFileSync(resolve(appDir, \"package.json\"), \"utf8\")) as {\n scripts?: Record<string, string>;\n };\n return Boolean(pkg.scripts?.[action]);\n } catch {\n return false;\n }\n}\n\nfunction nsToMs(ns: bigint): number {\n return Number(ns) / 1_000_000;\n}\n","/**\n * Centralized environment detection. Every subcommand reads its strictness\n * dials from here instead of inspecting `process.env` ad-hoc.\n */\n\nexport interface EnvSnapshot {\n /** True if `CI` is set to a truthy value (`\"1\"`, `\"true\"`, `\"yes\"`). */\n ci: boolean;\n /** True when `SOCKET_API_TOKEN` is set; informs the supply-chain scanner. */\n socketTokenPresent: boolean;\n /** Coarse strictness override, parsed from `GEENIUS_RELEASE_STRICTNESS`.\n * - `\"strict\"`: every optional/skipIfX policy escalates one level.\n * - `\"lenient\"`: every optional/skipIfX policy de-escalates one level.\n * - `undefined`: use configured defaults. */\n strictness: \"strict\" | \"lenient\" | undefined;\n /** Per-scanner override: `GEENIUS_SUPPLY_CHAIN_<NAME>=off|optional|required`. */\n supplyChainOverrides: Record<string, \"off\" | \"optional\" | \"required\">;\n}\n\nconst TRUTHY = new Set([\"1\", \"true\", \"yes\", \"on\"]);\n\nfunction truthy(value: string | undefined): boolean {\n return value !== undefined && TRUTHY.has(value.toLowerCase());\n}\n\nfunction readScannerOverride(raw: string | undefined): \"off\" | \"optional\" | \"required\" | undefined {\n if (raw === undefined) return undefined;\n const v = raw.toLowerCase();\n if (v === \"off\" || v === \"optional\" || v === \"required\") return v;\n return undefined;\n}\n\n/**\n * Read the environment once. Pure with respect to `env`; callers in tests can\n * pass a custom object instead of `process.env`.\n */\nexport function readEnv(env: NodeJS.ProcessEnv = process.env): EnvSnapshot {\n const supplyChainOverrides: Record<string, \"off\" | \"optional\" | \"required\"> = {};\n for (const [key, value] of Object.entries(env)) {\n if (!key.startsWith(\"GEENIUS_SUPPLY_CHAIN_\")) continue;\n const scannerName = key.slice(\"GEENIUS_SUPPLY_CHAIN_\".length).toLowerCase();\n // Normalize from `OSV` / `OSV_SCANNER` / `PNPM_AUDIT` etc. to camelCase keys.\n const normalized = toCamelCase(scannerName);\n const parsed = readScannerOverride(value);\n if (parsed) supplyChainOverrides[normalized] = parsed;\n }\n\n const strictnessRaw = env.GEENIUS_RELEASE_STRICTNESS?.toLowerCase();\n const strictness =\n strictnessRaw === \"strict\" || strictnessRaw === \"lenient\" ? strictnessRaw : undefined;\n\n return {\n ci: truthy(env.CI),\n socketTokenPresent: typeof env.SOCKET_API_TOKEN === \"string\" && env.SOCKET_API_TOKEN.length > 0,\n strictness,\n supplyChainOverrides,\n };\n}\n\nfunction toCamelCase(snakeOrKebab: string): string {\n return snakeOrKebab\n .split(/[_-]+/g)\n .map((part, index) => (index === 0 ? part : part.charAt(0).toUpperCase() + part.slice(1)))\n .join(\"\");\n}\n","/**\n * `geenius-release supply-chain` — pnpm audit + osv-scanner + Socket + license,\n * all configurable required/optional. Replaces the 26 scripts across 7\n * filename variations in the legacy tree.\n */\n\nimport type { Config, ScannerConfig } from \"../config.js\";\nimport { readEnv } from \"../env.js\";\nimport { resolvePaths } from \"../lib/paths.js\";\nimport { writeReport } from \"../lib/reporter.js\";\nimport { buildBinPath, resolveLocalBin } from \"../lib/resolve-bin.js\";\nimport { resolveScannerOutcome, rollupCommandStatus } from \"../lib/scanner.js\";\nimport { commandExists, runCommand, truncateOutput } from \"../lib/spawn.js\";\nimport type { CommandReport, ScannerState, StepReport } from \"../types.js\";\n\nimport { runLicense } from \"./license.js\";\n\nexport interface RunSupplyChainOptions {\n cwd?: string;\n config?: Config[\"supplyChain\"];\n /** Inherited from the parent License command settings, when invoked from gauntlet. */\n licenseConfig?: Config[\"license\"];\n quiet?: boolean;\n}\n\nexport async function runSupplyChain(opts: RunSupplyChainOptions = {}): Promise<CommandReport> {\n const startedAtNs = process.hrtime.bigint();\n const startedAt = new Date().toISOString();\n const paths = resolvePaths(opts.cwd);\n const env = readEnv();\n\n const config = opts.config ?? defaultSupplyChainConfig();\n const overrides = env.supplyChainOverrides;\n\n const steps: StepReport[] = [];\n\n // pnpm audit\n steps.push(\n await runPnpmAudit(\n paths.packageRoot,\n applyOverride(config.scanners.pnpmAudit, overrides.pnpmAudit),\n env,\n ),\n );\n\n // osv-scanner\n steps.push(\n await runOsvScanner(\n paths.packageRoot,\n applyOverride(config.scanners.osvScanner, overrides.osvScanner),\n env,\n ),\n );\n\n // socket\n steps.push(\n await runSocket(\n paths.packageRoot,\n applyOverride(config.scanners.socket, overrides.socket),\n env,\n ),\n );\n\n // license (delegates to the License command, condensed into a single step)\n steps.push(\n await runLicenseStep(paths.packageRoot, config.scanners.license, env, opts.licenseConfig),\n );\n\n const status = rollupCommandStatus(steps);\n const report: CommandReport = {\n command: \"supply-chain\",\n status,\n startedAt,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n steps,\n meta: {\n socketTokenPresent: env.socketTokenPresent,\n ci: env.ci,\n strictness: env.strictness ?? null,\n },\n };\n\n writeReport(report, {\n reportDir: paths.reportDir,\n ...(opts.quiet === true ? { quiet: true } : {}),\n });\n return report;\n}\n\n/* ───────── Scanners ───────── */\n\nasync function runPnpmAudit(\n cwd: string,\n config: ScannerConfig & { auditLevel?: string; scope?: string },\n env: ReturnType<typeof readEnv>,\n): Promise<StepReport> {\n const startedAtNs = process.hrtime.bigint();\n const args = [\"audit\", `--audit-level=${config.auditLevel ?? \"moderate\"}`];\n if ((config.scope ?? \"prod\") === \"prod\") args.push(\"--prod\");\n\n if (!commandExists(\"pnpm\", cwd)) {\n return resolveScannerOutcome({\n name: \"pnpm audit\",\n state: { kind: \"missing\", reason: \"pnpm not found on PATH\" },\n config,\n ci: env.ci,\n ...(env.strictness ? { strictness: env.strictness } : {}),\n startedAtNs,\n });\n }\n const r = runCommand(\"pnpm\", args, { cwd });\n const state: ScannerState =\n r.status === 0\n ? { kind: \"passed\", output: truncateOutput(r.stdout, r.stderr) }\n : {\n kind: \"failed\",\n reason: `exit ${r.status ?? \"?\"}`,\n output: truncateOutput(r.stdout, r.stderr),\n };\n return resolveScannerOutcome({\n name: \"pnpm audit\",\n state,\n config,\n ci: env.ci,\n ...(env.strictness ? { strictness: env.strictness } : {}),\n startedAtNs,\n });\n}\n\nasync function runOsvScanner(\n cwd: string,\n config: ScannerConfig,\n env: ReturnType<typeof readEnv>,\n): Promise<StepReport> {\n const startedAtNs = process.hrtime.bigint();\n if (!commandExists(\"osv-scanner\", cwd)) {\n return resolveScannerOutcome({\n name: \"osv-scanner\",\n state: { kind: \"missing\", reason: \"osv-scanner not found on PATH\" },\n config,\n ci: env.ci,\n ...(env.strictness ? { strictness: env.strictness } : {}),\n startedAtNs,\n });\n }\n const r = runCommand(\"osv-scanner\", [\"--lockfile\", \"pnpm-lock.yaml\"], { cwd });\n const state: ScannerState =\n r.status === 0\n ? { kind: \"passed\", output: truncateOutput(r.stdout, r.stderr) }\n : {\n kind: \"failed\",\n reason: `vulnerabilities found (exit ${r.status ?? \"?\"})`,\n output: truncateOutput(r.stdout, r.stderr),\n };\n return resolveScannerOutcome({\n name: \"osv-scanner\",\n state,\n config,\n ci: env.ci,\n ...(env.strictness ? { strictness: env.strictness } : {}),\n startedAtNs,\n });\n}\n\nasync function runSocket(\n cwd: string,\n config: ScannerConfig,\n env: ReturnType<typeof readEnv>,\n): Promise<StepReport> {\n const startedAtNs = process.hrtime.bigint();\n\n // 1. Resolve socket. Prefer a local install (consuming package's\n // devDependency) over a global PATH lookup, since it's both faster and\n // version-pinned. We skip the `pnpm exec socket` fallback entirely —\n // callers that need socket should depend on it locally.\n const localSocket = resolveLocalBin(\"socket\", cwd);\n const probe = runCommand(localSocket ?? \"socket\", [\"--version\"], {\n cwd,\n timeoutMs: 5_000,\n ...(localSocket ? { env: { ...process.env, PATH: buildBinPath(cwd) } } : {}),\n });\n if (probe.missing || probe.status !== 0) {\n return resolveScannerOutcome({\n name: \"socket\",\n state: {\n kind: \"missing\",\n reason: localSocket\n ? `socket binary failed --version probe at ${localSocket}`\n : \"socket binary not found on PATH and no local install in node_modules/.bin\",\n },\n config,\n ci: env.ci,\n ...(env.strictness ? { strictness: env.strictness } : {}),\n startedAtNs,\n });\n }\n\n // 2. Run `socket ci pnpm-lock.yaml`. The CLI returns:\n // - exit 0 on clean lockfile\n // - non-zero with `Auth Error` in stdout when unauthenticated\n // - non-zero with vuln details when issues found\n const r = runCommand(localSocket ?? \"socket\", [\"ci\", \"pnpm-lock.yaml\"], {\n cwd,\n ...(localSocket ? { env: { ...process.env, PATH: buildBinPath(cwd) } } : {}),\n });\n\n if (r.status === 0) {\n return resolveScannerOutcome({\n name: \"socket\",\n state: { kind: \"passed\", output: truncateOutput(r.stdout, r.stderr) },\n config,\n ci: env.ci,\n ...(env.strictness ? { strictness: env.strictness } : {}),\n startedAtNs,\n });\n }\n\n // Heuristic: Socket emits `\"Auth Error\"` or `\"You need to provide an API token\"`\n // when unauthenticated. Distinguish from real vuln findings.\n const combined = `${r.stdout}\\n${r.stderr}`;\n const looksUnauthenticated =\n !env.socketTokenPresent && /auth\\s*error|provide an api token|socket login/i.test(combined);\n\n const state: ScannerState = looksUnauthenticated\n ? {\n kind: \"unauthenticated\",\n reason:\n \"socket is not authenticated (no SOCKET_API_TOKEN, and `socket login` has not been run)\",\n }\n : {\n kind: \"failed\",\n reason: `socket ci failed (exit ${r.status ?? \"?\"})`,\n output: truncateOutput(r.stdout, r.stderr),\n };\n\n return resolveScannerOutcome({\n name: \"socket\",\n state,\n config,\n ci: env.ci,\n ...(env.strictness ? { strictness: env.strictness } : {}),\n startedAtNs,\n });\n}\n\nasync function runLicenseStep(\n cwd: string,\n config: ScannerConfig,\n env: ReturnType<typeof readEnv>,\n licenseConfig: Config[\"license\"] | undefined,\n): Promise<StepReport> {\n const startedAtNs = process.hrtime.bigint();\n try {\n const r = await runLicense({\n cwd,\n quiet: true,\n ...(licenseConfig ? { config: licenseConfig } : {}),\n });\n const state: ScannerState =\n r.status === \"passed\"\n ? { kind: \"passed\", output: `${r.steps.length} checks` }\n : {\n kind: \"failed\",\n reason: r.steps.find((s) => s.status === \"failed\")?.reason ?? \"license check failed\",\n };\n return resolveScannerOutcome({\n name: \"license\",\n state,\n config,\n ci: env.ci,\n ...(env.strictness ? { strictness: env.strictness } : {}),\n startedAtNs,\n });\n } catch (error) {\n return resolveScannerOutcome({\n name: \"license\",\n state: { kind: \"failed\", reason: (error as Error).message },\n config,\n ci: env.ci,\n ...(env.strictness ? { strictness: env.strictness } : {}),\n startedAtNs,\n });\n }\n}\n\n/* ───────── Helpers ───────── */\n\nfunction applyOverride<T extends ScannerConfig>(\n config: T,\n override: \"off\" | \"optional\" | \"required\" | undefined,\n): T {\n if (!override) return config;\n if (override === \"off\")\n return { ...config, required: false, skipIfMissing: \"silent\", skipIfUnauthenticated: \"silent\" };\n if (override === \"optional\") return { ...config, required: false };\n return { ...config, required: true };\n}\n\nfunction defaultSupplyChainConfig(): Config[\"supplyChain\"] {\n return {\n scanners: {\n pnpmAudit: { required: true, auditLevel: \"moderate\", scope: \"prod\" },\n osvScanner: { required: true, skipIfMissing: \"warn\" },\n socket: { required: false, skipIfMissing: \"info\", skipIfUnauthenticated: \"info\" },\n license: { required: true },\n },\n };\n}\n\nfunction nsToMs(ns: bigint): number {\n return Number(ns) / 1_000_000;\n}\n","/**\n * `geenius-release gauntlet` — compose the configured step sequence.\n *\n * External steps (`lint`, `type-check`, `test:unit`, anything else) shell out\n * to `pnpm <step>` so existing per-package scripts continue to work.\n *\n * Internal steps (`supply-chain`, `license`, `sbom`, `smoke-packed`) call the\n * toolkit's `runX` functions directly — no `pnpm` overhead, full structured\n * report aggregation.\n */\n\nimport type { Config } from \"../config.js\";\nimport { checkSiblingDistFreshness } from \"../lib/dist-freshness.js\";\nimport { resolvePaths } from \"../lib/paths.js\";\nimport { writeReport } from \"../lib/reporter.js\";\nimport { rollupCommandStatus } from \"../lib/scanner.js\";\nimport { runCommand, truncateOutput } from \"../lib/spawn.js\";\nimport type { CommandReport, StepReport } from \"../types.js\";\n\nimport { runA11yReport } from \"./a11y-report.js\";\nimport { runAttw } from \"./attw.js\";\nimport { runCoverageReport } from \"./coverage-report.js\";\nimport { runDiffCoverage } from \"./diff-coverage.js\";\nimport { runLicense } from \"./license.js\";\nimport { runManifestContract } from \"./manifest-contract.js\";\nimport { runMutationReport } from \"./mutation-report.js\";\nimport { runPerfSmoke } from \"./perf-smoke.js\";\nimport { runPublint } from \"./publint.js\";\nimport { runSbom } from \"./sbom.js\";\nimport { runSizeCheck } from \"./size-check.js\";\nimport { runSmokePacked } from \"./smoke-packed.js\";\nimport { runStorybook } from \"./storybook.js\";\nimport { runSupplyChain } from \"./supply-chain.js\";\n\nexport interface RunGauntletOptions {\n cwd?: string;\n config?: Config;\n /** Override the step list. */\n steps?: readonly string[];\n /** Continue running remaining steps after a failure. */\n continueOnFailure?: boolean;\n quiet?: boolean;\n}\n\nconst INTERNAL_STEPS: ReadonlySet<string> = new Set([\n \"supply-chain\",\n \"license\",\n \"sbom\",\n \"smoke-packed\",\n \"publint\",\n \"attw\",\n \"size-check\",\n \"coverage-report\",\n \"mutation-report\",\n \"a11y-report\",\n \"diff-coverage\",\n \"manifest-contract\",\n \"storybook\",\n \"perf-smoke\",\n]);\n\nexport async function runGauntlet(opts: RunGauntletOptions = {}): Promise<CommandReport> {\n const startedAtNs = process.hrtime.bigint();\n const startedAt = new Date().toISOString();\n const paths = resolvePaths(opts.cwd);\n\n const config = opts.config;\n const steps = opts.steps ?? config?.gauntlet.steps ?? defaultSteps();\n const continueOnFailure = opts.continueOnFailure ?? config?.gauntlet.continueOnFailure ?? false;\n\n const reports: StepReport[] = [];\n\n const freshnessMode = config?.gauntlet.siblingDistFreshness ?? \"check\";\n if (freshnessMode !== \"off\") {\n const preStartNs = process.hrtime.bigint();\n const result = checkSiblingDistFreshness(paths.packageRoot, {\n autoBuild: freshnessMode === \"build\",\n });\n const stale = result.checks.filter(\n (c) => c.status === \"stale\" || c.status === \"missing\" || c.status === \"unresolved\",\n );\n const stillBroken = stale.filter((c) => !result.rebuilt.includes(c.name));\n if (stillBroken.length > 0) {\n reports.push({\n name: \"sibling-dist-freshness\",\n status: \"failed\",\n reason: `${stillBroken.length} linked sibling(s) have stale/missing dist: ${stillBroken\n .map((c) => `${c.name}(${c.status})`)\n .join(\", \")}${\n result.failed.length > 0 ? `; failed to rebuild: ${result.failed.join(\", \")}` : \"\"\n }`,\n durationMs: nsToMs(process.hrtime.bigint() - preStartNs),\n });\n if (!continueOnFailure) {\n return finalize(reports, paths.reportDir, startedAt, startedAtNs, steps.length, opts.quiet);\n }\n } else if (result.rebuilt.length > 0) {\n reports.push({\n name: \"sibling-dist-freshness\",\n status: \"passed\",\n reason: `rebuilt ${result.rebuilt.length} stale sibling(s): ${result.rebuilt.join(\", \")}`,\n durationMs: nsToMs(process.hrtime.bigint() - preStartNs),\n });\n }\n }\n\n for (const [index, step] of steps.entries()) {\n const stepStartNs = process.hrtime.bigint();\n const label = `[${index + 1}/${steps.length}] ${step}`;\n if (!opts.quiet) process.stdout.write(`${label}\\n`);\n\n const stepReport = INTERNAL_STEPS.has(step)\n ? await runInternalStep(step, paths.packageRoot, config, stepStartNs)\n : runExternalStep(step, paths.packageRoot, stepStartNs);\n\n reports.push(stepReport);\n\n if (stepReport.status === \"failed\" && !continueOnFailure) {\n break;\n }\n }\n\n return finalize(reports, paths.reportDir, startedAt, startedAtNs, steps.length, opts.quiet);\n}\n\nfunction finalize(\n reports: StepReport[],\n reportDir: string,\n startedAt: string,\n startedAtNs: bigint,\n stepCount: number,\n quiet: boolean | undefined,\n): CommandReport {\n const status = rollupCommandStatus(reports);\n const report: CommandReport = {\n command: \"gauntlet\",\n status,\n startedAt,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n steps: reports,\n meta: { stepCount, ranCount: reports.length },\n };\n writeReport(report, {\n reportDir,\n ...(quiet === true ? { quiet: true } : {}),\n });\n return report;\n}\n\nasync function runInternalStep(\n step: string,\n cwd: string,\n config: Config | undefined,\n stepStartNs: bigint,\n): Promise<StepReport> {\n try {\n let inner: CommandReport;\n switch (step) {\n case \"supply-chain\":\n inner = await runSupplyChain({\n cwd,\n quiet: true,\n ...(config?.supplyChain ? { config: config.supplyChain } : {}),\n ...(config?.license ? { licenseConfig: config.license } : {}),\n });\n break;\n case \"license\":\n inner = await runLicense({\n cwd,\n quiet: true,\n ...(config?.license ? { config: config.license } : {}),\n });\n break;\n case \"sbom\":\n inner = await runSbom({\n cwd,\n quiet: true,\n ...(config?.sbom ? { config: config.sbom } : {}),\n });\n break;\n case \"smoke-packed\":\n inner = await runSmokePacked({\n cwd,\n quiet: true,\n ...(config?.smokePacked ? { config: config.smokePacked } : {}),\n });\n break;\n case \"publint\":\n inner = await runPublint({ cwd, quiet: true });\n break;\n case \"attw\":\n inner = await runAttw({ cwd, quiet: true });\n break;\n case \"size-check\":\n inner = await runSizeCheck({ cwd, quiet: true });\n break;\n case \"coverage-report\":\n inner = await runCoverageReport({ cwd, quiet: true });\n break;\n case \"mutation-report\":\n inner = await runMutationReport({ cwd, quiet: true });\n break;\n case \"a11y-report\":\n inner = await runA11yReport({ cwd, quiet: true });\n break;\n case \"diff-coverage\":\n inner = await runDiffCoverage({ cwd, quiet: true });\n break;\n case \"manifest-contract\":\n inner = await runManifestContract({ cwd, quiet: true });\n break;\n case \"storybook\":\n inner = await runStorybook({ cwd, quiet: true });\n break;\n case \"perf-smoke\":\n inner = await runPerfSmoke({ cwd, quiet: true });\n break;\n default:\n // Unreachable when callers gate on INTERNAL_STEPS.\n return {\n name: step,\n status: \"failed\",\n reason: `internal step '${step}' is not implemented`,\n durationMs: nsToMs(process.hrtime.bigint() - stepStartNs),\n };\n }\n const status: StepReport[\"status\"] =\n inner.status === \"passed\" ? \"passed\" : inner.status === \"skipped\" ? \"skipped\" : \"failed\";\n const reason = summarizeInnerReport(inner);\n return {\n name: step,\n status,\n ...(reason ? { reason } : {}),\n durationMs: nsToMs(process.hrtime.bigint() - stepStartNs),\n };\n } catch (error) {\n return {\n name: step,\n status: \"failed\",\n reason: (error as Error).message,\n durationMs: nsToMs(process.hrtime.bigint() - stepStartNs),\n };\n }\n}\n\nfunction runExternalStep(step: string, cwd: string, stepStartNs: bigint): StepReport {\n const r = runCommand(\"pnpm\", [\"run\", \"--silent\", step], { cwd });\n const status: StepReport[\"status\"] = r.status === 0 ? \"passed\" : \"failed\";\n const base: StepReport = {\n name: step,\n status,\n durationMs: nsToMs(process.hrtime.bigint() - stepStartNs),\n };\n if (status === \"failed\") {\n return {\n ...base,\n reason: `pnpm run ${step} exited ${r.status ?? \"?\"}`,\n output: truncateOutput(r.stdout, r.stderr),\n };\n }\n return base;\n}\n\nfunction summarizeInnerReport(inner: CommandReport): string {\n const counts = inner.steps.reduce<Record<string, number>>((acc, s) => {\n acc[s.status] = (acc[s.status] ?? 0) + 1;\n return acc;\n }, {});\n const parts = Object.entries(counts).map(([k, v]) => `${v} ${k}`);\n return parts.join(\", \");\n}\n\nfunction defaultSteps(): readonly string[] {\n return [\"lint\", \"type-check\", \"test:unit\", \"supply-chain\", \"license\", \"sbom\", \"smoke-packed\"];\n}\n\nfunction nsToMs(ns: bigint): number {\n return Number(ns) / 1_000_000;\n}\n","/**\n * `geenius-release lint` — single canonical lint entry point.\n *\n * Collapses run-lint.mjs (9 pkgs) + lint-apps.mjs (4) + lint-scope.mjs (3) +\n * biome-scope.mjs (5) + lint-pub.mjs (7) etc.\n *\n * Modes:\n * default (root): root files + every in-scope variant's packageDir, plus\n * discovered apps/ directories if any exist.\n * --scope package: root files + variant packageDirs only.\n * --scope apps: apps/* dirs derived from ui+storybook+e2e variants only.\n * --scope all: everything (default behaviour, kept explicit).\n * --apps: shortcut for --scope apps.\n *\n * Always invokes `biome check` (or `biome lint`/`biome format` via --command).\n * Extra args after `--` (collected into passthrough) are forwarded.\n */\n\nimport { spawnSync } from \"node:child_process\";\nimport { existsSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\n\nimport { buildBinPath, resolveLocalBin } from \"../lib/resolve-bin.js\";\nimport { packageVariants, storybookVariants, uiVariants } from \"../lib/variants-rich.js\";\n\nexport type LintScope = \"package\" | \"apps\" | \"all\";\n\nexport interface RunLintOptions {\n cwd?: string;\n scope?: LintScope;\n /** Biome subcommand (default \"check\"). */\n command?: \"check\" | \"lint\" | \"format\" | \"ci\";\n /** Apply autofixes (`--write`). */\n fix?: boolean;\n /** Extra args forwarded to biome after the path list. */\n passthrough?: string[];\n /** Print the resolved command and exit. */\n print?: boolean;\n /** Limit variant collection to `implemented: true` variants. */\n implementedOnly?: boolean;\n}\n\nexport interface LintResult {\n status: \"passed\" | \"failed\" | \"skipped\";\n command: string;\n paths: string[];\n exitCode: number;\n}\n\nconst ROOT_PATHS = [\n \"package.json\",\n \"variants.json\",\n \"tsconfig.json\",\n \"tsconfig.build.json\",\n \"vitest.config.ts\",\n \"playwright.config.ts\",\n \"biome.json\",\n \"scripts\",\n \"__tests__\",\n \"e2e\",\n];\n\nexport async function runLint(opts: RunLintOptions = {}): Promise<LintResult> {\n const cwd = opts.cwd ?? process.cwd();\n const scope: LintScope = opts.scope ?? \"all\";\n const command = opts.command ?? \"check\";\n\n const paths = collectPaths(cwd, scope, opts.implementedOnly === true);\n if (paths.length === 0) {\n return { status: \"skipped\", command, paths, exitCode: 0 };\n }\n\n // Spawn biome directly — skipping `pnpm exec` saves ~100-300ms of pnpm\n // bootstrap per call, which matters under heavy parallel agent workloads.\n const biome = resolveLocalBin(\"biome\", cwd);\n const bin = biome ?? \"biome\";\n const args = [command, ...(opts.fix ? [\"--write\"] : []), ...paths];\n if (opts.passthrough?.length) args.push(...opts.passthrough);\n\n if (opts.print) {\n process.stdout.write(`${bin} ${args.join(\" \")}\\n`);\n return { status: \"passed\", command, paths, exitCode: 0 };\n }\n\n const result = spawnSync(bin, args, {\n cwd,\n stdio: \"inherit\",\n env: { ...process.env, PATH: buildBinPath(cwd) },\n });\n const exitCode = result.status ?? 1;\n return {\n status: exitCode === 0 ? \"passed\" : \"failed\",\n command,\n paths,\n exitCode,\n };\n}\n\nfunction collectPaths(cwd: string, scope: LintScope, implementedOnly: boolean): string[] {\n const out = new Set<string>();\n const exists = (rel: string) => existsSync(resolve(cwd, rel));\n\n if (scope === \"package\" || scope === \"all\") {\n for (const p of ROOT_PATHS) if (exists(p)) out.add(p);\n const queryOpts = { rootDir: cwd, includeOutOfScope: false, ...(implementedOnly ? { implementedOnly: true } : {}) };\n for (const v of packageVariants(queryOpts)) {\n if (v.packageDir && exists(v.packageDir)) out.add(v.packageDir);\n }\n }\n\n if (scope === \"apps\" || scope === \"all\") {\n const appPaths = new Set<string>();\n for (const v of uiVariants({ rootDir: cwd })) {\n if (v.harness) appPaths.add(`apps/${v.harness}`);\n }\n for (const v of storybookVariants({ rootDir: cwd })) {\n const storybook = (v as unknown as { storybook?: string }).storybook;\n if (storybook) appPaths.add(`apps/${storybook}`);\n }\n for (const app of appPaths) if (exists(app)) out.add(app);\n if (exists(\"playwright.config.ts\")) out.add(\"playwright.config.ts\");\n }\n\n return [...out].sort();\n}\n","/**\n * `geenius-release pack-contract` — run `pnpm pack --json`, capture the\n * resulting manifest into a temp directory, expose the path via\n * `PACK_CONTRACT_JSON`, then run a consumer-supplied vitest config that\n * asserts on the packed contents (files included, exports targets, README\n * present, etc.).\n *\n * Generic harness — the actual contract tests are package-specific. The\n * caller passes `--test-config <vitest.pack-contract.config.ts>`.\n *\n * Replaces local `scripts/pack-contract.mjs` shims.\n */\n\nimport { spawnSync } from \"node:child_process\";\nimport { existsSync, mkdtempSync, rmSync, writeFileSync } from \"node:fs\";\nimport { tmpdir } from \"node:os\";\nimport { join } from \"node:path\";\n\nimport { resolvePaths } from \"../lib/paths.js\";\n\nexport interface RunPackContractOptions {\n cwd?: string;\n /** Vitest config that runs the contract assertions. Required. */\n testConfig: string;\n /** Pass an existing pack JSON instead of running `pnpm pack` first. */\n packJson?: string;\n /** Tests to run (passed to vitest as positional args). */\n testFiles?: readonly string[];\n}\n\nexport interface PackContractResult {\n status: number;\n packJsonPath: string;\n}\n\nexport function runPackContract(opts: RunPackContractOptions): PackContractResult {\n if (!opts.testConfig) {\n throw new Error(\"runPackContract: `testConfig` is required.\");\n }\n const paths = resolvePaths(opts.cwd);\n const tmp = mkdtempSync(join(tmpdir(), \"geenius-release-pack-contract-\"));\n const packJsonPath = join(tmp, \"pack.json\");\n\n try {\n if (opts.packJson && existsSync(opts.packJson)) {\n // Caller already produced pack JSON — copy it into our tmp slot.\n const r = spawnSync(\"cp\", [opts.packJson, packJsonPath], { stdio: \"inherit\" });\n if (r.status !== 0) {\n throw new Error(`Failed to stage pack json from ${opts.packJson}`);\n }\n } else {\n const r = spawnSync(\"pnpm\", [\"pack\", \"--json\", \"--pack-destination\", tmp], {\n cwd: paths.packageRoot,\n encoding: \"utf8\",\n stdio: [\"ignore\", \"pipe\", \"inherit\"],\n });\n if (r.status !== 0 || !r.stdout) {\n throw new Error(`pnpm pack --json exited ${r.status ?? \"?\"}`);\n }\n writeFileSync(packJsonPath, r.stdout, \"utf8\");\n }\n\n const vitestArgs = [\"exec\", \"vitest\", \"run\", \"--config\", opts.testConfig];\n if (opts.testFiles && opts.testFiles.length > 0) {\n vitestArgs.push(...opts.testFiles);\n }\n const r = spawnSync(\"pnpm\", vitestArgs, {\n cwd: paths.packageRoot,\n stdio: \"inherit\",\n env: { ...process.env, PACK_CONTRACT_JSON: packJsonPath },\n });\n return { status: r.status ?? 1, packJsonPath };\n } finally {\n try {\n rmSync(tmp, { recursive: true, force: true });\n } catch {\n // best-effort\n }\n }\n}\n","/**\n * `geenius-release patch-dts` — post-build patcher for dist outputs.\n *\n * Collapses patch-dts-imports.mjs (4) + patch-solid-web-import.mjs (2) +\n * the `--fix-solid-jsx-runtime` flag previously embedded in sanitize-dist.\n *\n * Operations (composable; pass any combination):\n * --rewrite <from=to> Plain string replaceAll in .d.ts files (repeatable).\n * --solid Rewrite solid-js/web → solid-js/web/dist/web.js and\n * gate delegateEvents() on a window check, in .js files.\n * --solid-jsx Rewrite solid-js/jsx-runtime → solid-js/h/jsx-runtime\n * in .js files.\n * --files <list> Operate on an explicit file list instead of walking\n * a directory.\n *\n * Default directory is `dist/`. Walks recursively; only touches `.d.ts` for\n * --rewrite, only `.js`/`.mjs`/`.cjs` for the --solid* flags.\n */\n\nimport {\n existsSync,\n readdirSync,\n readFileSync,\n statSync,\n writeFileSync,\n} from \"node:fs\";\nimport { resolve } from \"node:path\";\n\nexport interface DtsRewriteRule {\n from: string;\n to: string;\n}\n\nexport interface RunPatchDtsOptions {\n cwd?: string;\n /** Directory to walk (default: \"dist\"). Ignored when `files` is provided. */\n dir?: string;\n /** Explicit file list (absolute or relative to cwd). */\n files?: string[];\n /** Plain string replacements applied to .d.ts files. */\n rewrites?: DtsRewriteRule[];\n /** Apply Solid web import + delegateEvents patch to .js files. */\n solid?: boolean;\n /** Rewrite solid-js/jsx-runtime → solid-js/h/jsx-runtime in .js files. */\n solidJsx?: boolean;\n}\n\nexport interface PatchDtsResult {\n status: \"passed\" | \"skipped\";\n filesChanged: number;\n filesScanned: number;\n}\n\nexport async function runPatchDts(opts: RunPatchDtsOptions = {}): Promise<PatchDtsResult> {\n const cwd = opts.cwd ?? process.cwd();\n const rewrites = opts.rewrites ?? [];\n const wantSolid = !!opts.solid;\n const wantSolidJsx = !!opts.solidJsx;\n\n if (rewrites.length === 0 && !wantSolid && !wantSolidJsx) {\n return { status: \"skipped\", filesChanged: 0, filesScanned: 0 };\n }\n\n const files = opts.files?.length\n ? opts.files.map((f) => resolve(cwd, f))\n : walk(resolve(cwd, opts.dir ?? \"dist\"));\n\n let scanned = 0;\n let changed = 0;\n\n for (const file of files) {\n const isDts = file.endsWith(\".d.ts\");\n const isJs = /\\.[cm]?js$/.test(file);\n if (!isDts && !isJs) continue;\n scanned++;\n\n let source: string;\n try {\n source = readFileSync(file, \"utf8\");\n } catch {\n continue;\n }\n let patched = source;\n\n if (isDts) {\n for (const { from, to } of rewrites) patched = patched.replaceAll(from, to);\n }\n\n if (isJs && wantSolid) {\n patched = patched\n .replaceAll(\"from 'solid-js/web'\", \"from 'solid-js/web/dist/web.js'\")\n .replaceAll('from \"solid-js/web\"', 'from \"solid-js/web/dist/web.js\"')\n .replaceAll(\n \"\\ndelegateEvents(\",\n '\\ntypeof window !== \"undefined\" && delegateEvents(',\n );\n }\n\n if (isJs && wantSolidJsx) {\n patched = patched.replace(/\\bsolid-js\\/jsx-runtime\\b/g, \"solid-js/h/jsx-runtime\");\n }\n\n if (patched !== source) {\n writeFileSync(file, patched);\n changed++;\n }\n }\n\n return { status: \"passed\", filesChanged: changed, filesScanned: scanned };\n}\n\nfunction walk(dir: string): string[] {\n if (!existsSync(dir)) return [];\n return readdirSync(dir).flatMap((entry) => {\n const absolute = resolve(dir, entry);\n const stat = statSync(absolute);\n return stat.isDirectory() ? walk(absolute) : [absolute];\n });\n}\n","/**\n * `geenius-release pnpm-filters` — run a per-package script across the variant\n * matrix.\n *\n * **The name is historical.** Earlier versions shelled out to\n * `pnpm -r --filter ... <task>`. This version skips pnpm entirely and spawns\n * each variant's `scripts.<task>` directly via `/bin/sh -c <cmd>`, which:\n *\n * - eliminates the ~100-300ms pnpm bootstrap per package (critical when\n * fanning out 16 variants × 20 parallel agents);\n * - keeps `package.json` script semantics intact (shell pipes, &&, env\n * substitution all work because we hand the raw command to sh);\n * - augments PATH with each variant's `node_modules/.bin` and every\n * ancestor `node_modules/.bin` so locally-installed tools resolve the\n * same way pnpm exec would have resolved them.\n *\n * Execution modes (CLI surface is unchanged from the pnpm-era):\n * - **parallel** (default): launch all variants concurrently, optionally\n * capped by `--workspace-concurrency=N`. Stdout/stderr prefixed per pkg.\n * - **sequential**: one variant at a time, optional shared-first + kind\n * tiering + heartbeat.\n * - **shared-then-parallel**: shared first sequentially, then everything\n * else in parallel.\n *\n * `--prebuild <dir>` runs `<dir>`'s `build` script (always `build`, not the\n * requested task) before the main fan-out, and removes `<dir>` from the main\n * fan-out when task is also build.\n */\n\nimport { spawn } from \"node:child_process\";\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\n\nimport { buildBinPath } from \"../lib/resolve-bin.js\";\nimport { packageVariants, type RichVariant } from \"../lib/variants-rich.js\";\n\nexport interface RunPnpmFiltersOptions {\n cwd?: string;\n task: string;\n includeMissing?: boolean;\n /** Limit fan-out to variants flagged `implemented: true`. */\n implementedOnly?: boolean;\n /** Skip variants whose package.json has no entry for `task` (default: true). */\n ifPresent?: boolean;\n /** Force unbounded parallelism (alias for `workspaceConcurrency: undefined`). */\n parallel?: boolean;\n /** Cap concurrent in-flight spawns in parallel mode (string for CLI parity). */\n workspaceConcurrency?: string;\n /** Print the resolved per-variant invocations and exit (no spawns). */\n print?: boolean;\n kinds?: readonly string[];\n /** Forward extra arguments after the script body. Joined with space and\n * appended; the package script receives them via `$@`-like shell expansion. */\n passthrough?: readonly string[];\n /** Filter variants to those declaring `variant.tests.<key> === true`. */\n requires?: readonly string[];\n /** Sequential mode (one variant at a time). Overrides --parallel. */\n sequential?: boolean;\n /** Execution mode (takes precedence over `sequential`/`parallel`). */\n mode?: \"parallel\" | \"sequential\" | \"shared-then-parallel\";\n /** When sequential or shared-then-parallel, run this packageDir first. */\n sharedFirst?: string;\n /** Heartbeat interval (ms) when sequential, so CI doesn't kill a quiet job. */\n heartbeatMs?: number;\n /** Order variant kinds into tiers (sequential mode only). */\n sequentialKindOrder?: readonly (readonly string[])[];\n /** Build `<dir>` (always `build`, not the requested task) before main fan-out.\n * When `task === \"build\"`, the main fan-out excludes `<dir>`. */\n prebuild?: string;\n}\n\nexport interface PnpmFiltersResult {\n status: number;\n /** Per-variant resolved invocations. Each entry: `[label, command]`. */\n invocations: { label: string; cwd: string; command: string }[];\n}\n\ninterface ResolvedEntry {\n label: string;\n packageDir: string;\n pkgCwd: string;\n command: string | null; // null = script not present in package.json\n}\n\nexport async function runPnpmFilters(opts: RunPnpmFiltersOptions): Promise<PnpmFiltersResult> {\n if (!opts.task) throw new Error(\"runPnpmFilters: `task` is required.\");\n\n const rootDir = resolve(opts.cwd ?? process.cwd());\n let variants = packageVariants({\n ...(opts.includeMissing ? { includeMissing: true } : {}),\n ...(opts.implementedOnly ? { implementedOnly: true } : {}),\n ...(opts.kinds ? { kinds: opts.kinds } : {}),\n rootDir,\n });\n if (opts.requires?.length) {\n const requires = opts.requires;\n variants = variants.filter((v) => {\n const tests = v.tests as Record<string, unknown> | undefined;\n return requires.every((key) => tests?.[key] === true);\n });\n }\n\n // --prebuild: always build <dir> first. If task is also `build`, drop <dir>\n // from the main fan-out to avoid double-build.\n if (opts.prebuild) {\n const status = await runPrebuild(rootDir, opts);\n if (status !== 0) return { status, invocations: [] };\n if (opts.task === \"build\") {\n variants = variants.filter((v) => v.packageDir !== opts.prebuild);\n if (variants.length === 0) return { status: 0, invocations: [] };\n }\n }\n\n const mode = opts.mode ?? (opts.sequential ? \"sequential\" : \"parallel\");\n const entries = resolveEntries(rootDir, variants, opts);\n\n if (entries.length === 0) {\n if (!opts.print) {\n process.stdout.write(`No variants resolved for task \\`${opts.task}\\`; skipping.\\n`);\n }\n return { status: 0, invocations: [] };\n }\n\n if (opts.print) {\n for (const e of entries) {\n if (e.command) process.stdout.write(`(${e.label}) ${e.command}\\n`);\n else process.stdout.write(`# skip ${e.label}: no ${opts.task} script\\n`);\n }\n return {\n status: 0,\n invocations: entries\n .filter((e): e is ResolvedEntry & { command: string } => e.command !== null)\n .map((e) => ({ label: e.label, cwd: e.pkgCwd, command: e.command })),\n };\n }\n\n if (mode === \"sequential\") return runSequential(rootDir, entries, opts);\n if (mode === \"shared-then-parallel\") return runSharedThenParallel(rootDir, entries, opts);\n return runParallel(rootDir, entries, opts);\n}\n\n/* ───────── Entry resolution ───────── */\n\nfunction resolveEntries(\n rootDir: string,\n variants: readonly RichVariant[],\n opts: RunPnpmFiltersOptions,\n): ResolvedEntry[] {\n const out: ResolvedEntry[] = [];\n const seen = new Set<string>();\n\n const considerDir = (packageDir: string): void => {\n if (seen.has(packageDir)) return;\n seen.add(packageDir);\n const pkgCwd = resolve(rootDir, packageDir);\n const manifest = readManifest(pkgCwd);\n const command = manifest?.scripts?.[opts.task] ?? null;\n out.push({\n label: manifest?.name ?? packageDir,\n packageDir,\n pkgCwd,\n command: command ?? null,\n });\n };\n\n // shared-first slot (used only by sequential mode for ordering; the\n // shared-then-parallel mode handles its own ordering).\n if (opts.sharedFirst && (opts.mode === \"sequential\" || opts.sequential)) {\n if (existsSync(resolve(rootDir, opts.sharedFirst))) considerDir(opts.sharedFirst);\n }\n\n const ordered = orderForSequential(variants, opts);\n for (const v of ordered) {\n if (!v.packageDir) continue;\n considerDir(v.packageDir);\n }\n\n return out;\n}\n\nfunction orderForSequential(\n variants: readonly RichVariant[],\n opts: RunPnpmFiltersOptions,\n): RichVariant[] {\n if (!opts.sequentialKindOrder || opts.sequentialKindOrder.length === 0) {\n return [...variants];\n }\n const tiers = opts.sequentialKindOrder.map((kindSet) => new Set(kindSet));\n const tierOf = (variant: RichVariant): number => {\n for (const [idx, set] of tiers.entries()) {\n if (set.has(variant.kind)) return idx;\n }\n return tiers.length;\n };\n return [...variants].sort((a, b) => tierOf(a) - tierOf(b));\n}\n\n/* ───────── --prebuild ───────── */\n\nasync function runPrebuild(rootDir: string, opts: RunPnpmFiltersOptions): Promise<number> {\n const dir = opts.prebuild;\n if (!dir) return 0;\n const abs = resolve(rootDir, dir);\n if (!existsSync(abs)) {\n process.stdout.write(`Skipping --prebuild ${dir}: directory missing\\n`);\n return 0;\n }\n const manifest = readManifest(abs);\n const command = manifest?.scripts?.build;\n if (!command) {\n process.stdout.write(`Skipping --prebuild ${dir}: no build script\\n`);\n return 0;\n }\n const label = manifest?.name ?? dir;\n if (opts.print) {\n process.stdout.write(`# prebuild\\n(${label}) ${command}\\n`);\n return 0;\n }\n process.stdout.write(`\\n[prebuild] build → ${label}\\n`);\n return spawnScript(abs, command, label, \"build\", opts.heartbeatMs ?? 0, []);\n}\n\n/* ───────── Sequential mode ───────── */\n\nasync function runSequential(\n _rootDir: string,\n entries: ResolvedEntry[],\n opts: RunPnpmFiltersOptions,\n): Promise<PnpmFiltersResult> {\n const ifPresent = opts.ifPresent !== false;\n const invocations: PnpmFiltersResult[\"invocations\"] = [];\n for (const [i, entry] of entries.entries()) {\n if (!entry.command) {\n if (ifPresent) {\n process.stdout.write(`Skipping ${entry.label}: no ${opts.task} script\\n`);\n continue;\n }\n // Not skipping on absent → treat as failure.\n process.stderr.write(`${entry.label}: no ${opts.task} script\\n`);\n return { status: 1, invocations };\n }\n process.stdout.write(`\\n[${i + 1}/${entries.length}] ${opts.task} → ${entry.label}\\n`);\n invocations.push({ label: entry.label, cwd: entry.pkgCwd, command: entry.command });\n const status = await spawnScript(\n entry.pkgCwd,\n entry.command,\n entry.label,\n opts.task,\n opts.heartbeatMs ?? 0,\n opts.passthrough ?? [],\n );\n if (status !== 0) return { status, invocations };\n }\n return { status: 0, invocations };\n}\n\n/* ───────── Parallel mode ───────── */\n\nasync function runParallel(\n _rootDir: string,\n entries: ResolvedEntry[],\n opts: RunPnpmFiltersOptions,\n): Promise<PnpmFiltersResult> {\n const ifPresent = opts.ifPresent !== false;\n const runnable = entries.filter((e) => {\n if (e.command) return true;\n if (ifPresent) {\n process.stdout.write(`Skipping ${e.label}: no ${opts.task} script\\n`);\n return false;\n }\n return true; // will fail at spawn time\n });\n\n const concurrency =\n opts.parallel || !opts.workspaceConcurrency\n ? runnable.length\n : Math.max(1, Number(opts.workspaceConcurrency) || 1);\n\n const invocations: PnpmFiltersResult[\"invocations\"] = runnable\n .filter((e): e is ResolvedEntry & { command: string } => e.command !== null)\n .map((e) => ({ label: e.label, cwd: e.pkgCwd, command: e.command }));\n\n // Bounded pool: launch up to `concurrency` at once, refill as they finish.\n let exitStatus = 0;\n let nextIdx = 0;\n const inFlight = new Set<Promise<void>>();\n\n const launchOne = (entry: ResolvedEntry): Promise<void> => {\n if (!entry.command) {\n exitStatus = exitStatus || 1;\n process.stderr.write(`${entry.label}: no ${opts.task} script\\n`);\n return Promise.resolve();\n }\n process.stdout.write(`\\n[parallel] ${opts.task} → ${entry.label}\\n`);\n return spawnScript(\n entry.pkgCwd,\n entry.command,\n entry.label,\n opts.task,\n 0,\n opts.passthrough ?? [],\n ).then((status) => {\n if (status !== 0) exitStatus = status;\n });\n };\n\n while (nextIdx < runnable.length || inFlight.size > 0) {\n while (inFlight.size < concurrency && nextIdx < runnable.length) {\n const entry = runnable[nextIdx++]!;\n const p = launchOne(entry).finally(() => {\n inFlight.delete(p);\n });\n inFlight.add(p);\n }\n if (inFlight.size > 0) await Promise.race(inFlight);\n }\n\n return { status: exitStatus, invocations };\n}\n\n/* ───────── shared-then-parallel mode ───────── */\n\nasync function runSharedThenParallel(\n rootDir: string,\n entries: ResolvedEntry[],\n opts: RunPnpmFiltersOptions,\n): Promise<PnpmFiltersResult> {\n const sharedDir = opts.sharedFirst ?? \"packages/shared\";\n const sharedAbs = resolve(rootDir, sharedDir);\n const sharedManifest = existsSync(sharedAbs) ? readManifest(sharedAbs) : null;\n const sharedCommand = sharedManifest?.scripts?.[opts.task];\n const sharedLabel = sharedManifest?.name ?? sharedDir;\n const ifPresent = opts.ifPresent !== false;\n\n const invocations: PnpmFiltersResult[\"invocations\"] = [];\n\n // Step 1: shared.\n if (sharedCommand) {\n process.stdout.write(`\\n[shared] ${opts.task} → ${sharedLabel}\\n`);\n invocations.push({ label: sharedLabel, cwd: sharedAbs, command: sharedCommand });\n const status = await spawnScript(\n sharedAbs,\n sharedCommand,\n sharedLabel,\n opts.task,\n opts.heartbeatMs ?? 0,\n opts.passthrough ?? [],\n );\n if (status !== 0) return { status, invocations };\n } else if (ifPresent) {\n process.stdout.write(`Skipping ${sharedLabel}: no ${opts.task} script\\n`);\n }\n\n // Step 2: rest in parallel.\n const rest = entries.filter((e) => e.packageDir !== sharedDir);\n if (rest.length === 0) return { status: 0, invocations };\n const restResult = await runParallel(rootDir, rest, opts);\n invocations.push(...restResult.invocations);\n return { status: restResult.status, invocations };\n}\n\n/* ───────── Spawn primitive ───────── */\n\nfunction readManifest(\n packageDir: string,\n): { name?: string; scripts?: Record<string, string> } | null {\n try {\n const manifestPath = resolve(packageDir, \"package.json\");\n if (!existsSync(manifestPath)) return null;\n return JSON.parse(readFileSync(manifestPath, \"utf8\")) as {\n name?: string;\n scripts?: Record<string, string>;\n };\n } catch {\n return null;\n }\n}\n\nfunction spawnScript(\n cwd: string,\n command: string,\n label: string,\n task: string,\n heartbeatMs: number,\n passthrough: readonly string[],\n): Promise<number> {\n const fullCmd = passthrough.length > 0 ? `${command} ${passthrough.join(\" \")}` : command;\n return new Promise((ok, fail) => {\n const child = spawn(\"/bin/sh\", [\"-c\", fullCmd], {\n cwd,\n stdio: \"inherit\",\n env: { ...process.env, PATH: buildBinPath(cwd) },\n });\n const interval =\n heartbeatMs > 0\n ? setInterval(() => {\n process.stdout.write(` … still running ${task} → ${label}\\n`);\n }, heartbeatMs)\n : null;\n if (interval && typeof interval.unref === \"function\") interval.unref();\n\n child.once(\"error\", (error) => {\n if (interval) clearInterval(interval);\n fail(error);\n });\n child.once(\"close\", (code, signal) => {\n if (interval) clearInterval(interval);\n if (signal) {\n process.stderr.write(`${task} for ${label} terminated by signal ${signal}\\n`);\n ok(1);\n return;\n }\n ok(code ?? 1);\n });\n });\n}\n","/**\n * `geenius-release rewrite-imports` — post-build codemod that rewrites\n * private subpath imports in a variant's built `dist/` so packed tarballs\n * don't need to advertise internal `./shared` (or similar) exports.\n *\n * Replaces ~36 copies of `rewrite-private-imports.mjs`. Rules are\n * config-driven and token-aware (`${packageName}`, `${framework}`,\n * `${variant}`) so the same toolkit serves every Geenius package that\n * keeps shared code under `packages/shared/` and per-framework variants\n * under `packages/<variant>/`.\n */\n\nimport { existsSync, readdirSync, readFileSync, statSync, writeFileSync } from \"node:fs\";\nimport { basename, join, relative, resolve, sep } from \"node:path\";\n\nimport type { Config } from \"../config.js\";\nimport { resolvePaths } from \"../lib/paths.js\";\nimport { writeReport } from \"../lib/reporter.js\";\nimport { rollupCommandStatus } from \"../lib/scanner.js\";\nimport type { CommandReport, StepReport } from \"../types.js\";\n\nexport interface RewriteRule {\n /** Literal specifier to find. Token-expanded before matching. */\n match: string;\n /** Replacement. Token-expanded. When `literal` is false (default), treated\n * as a path relative to packageRoot and converted into a module specifier\n * relative to the variant's `dist/`. When `literal` is true, used as-is —\n * useful for JSDoc / comment cleanup (\"internal-name → public-name\"). */\n replaceWith: string;\n /** If true, `replaceWith` is used as literal text (no path resolution). */\n literal?: boolean;\n /** If true, only quoted occurrences are matched (both `\"<match>\"` and\n * `'<match>'`). Use this for import-specifier rewrites that must not\n * touch identical strings in JSDoc / comments. */\n quoted?: boolean;\n}\n\nexport interface RunRewriteImportsOptions {\n cwd?: string;\n /** Variant directory, relative to packageRoot (e.g. `packages/react`). */\n variantDir: string;\n /** Override config rules. */\n rules?: readonly RewriteRule[];\n /** Override framework detection. Map of framework name → variant-basename regex. */\n frameworkDetect?: Record<string, string>;\n /** Explicit framework name (skips detection). */\n framework?: string;\n /** File extensions to rewrite. Default: `[\".js\", \".d.ts\"]`. */\n extensions?: readonly string[];\n /** If true, generate additional literal rules from the root manifest's\n * `exports` map: for every `packages/<name>` referenced from an exports\n * target, map the private workspace name (read from `packages/<name>/\n * package.json`) to the public root-subpath specifier. Useful when\n * consumers must not see internal workspace package names in published\n * declaration files. Added after any explicitly configured rules. */\n deriveFromExports?: boolean;\n /** Built-in preset names to layer on. Currently: `solid-web` (rewrite\n * `solid-js/web` to `solid-js/web/dist/web.js` so Node ESM consumers can\n * resolve it without subpath redirects). Presets append to the rule list. */\n presets?: readonly \"solid-web\"[];\n config?: Config[\"rewriteImports\"];\n quiet?: boolean;\n}\n\nconst PRESET_RULES: Record<\"solid-web\", RewriteRule[]> = {\n \"solid-web\": [\n {\n match: \"solid-js/web\",\n replaceWith: \"solid-js/web/dist/web.js\",\n literal: true,\n quoted: true,\n },\n ],\n};\n\nexport async function runRewriteImports(opts: RunRewriteImportsOptions): Promise<CommandReport> {\n const startedAtNs = process.hrtime.bigint();\n const startedAt = new Date().toISOString();\n const paths = resolvePaths(opts.cwd);\n\n const config = opts.config ?? {\n rules: [],\n frameworkDetect: {},\n extensions: [],\n deriveFromExports: false,\n };\n const configuredRules = opts.rules ?? config.rules;\n const frameworkDetect = opts.frameworkDetect ?? config.frameworkDetect;\n const extensions =\n opts.extensions ?? (config.extensions.length > 0 ? config.extensions : [\".js\", \".d.ts\"]);\n const deriveFromExports = opts.deriveFromExports ?? config.deriveFromExports;\n\n const variantAbs = resolve(paths.packageRoot, opts.variantDir);\n const variant = basename(variantAbs);\n const distDir = join(variantAbs, \"dist\");\n const manifest = JSON.parse(readFileSync(paths.packageJson, \"utf8\")) as {\n name: string;\n exports?: Record<string, unknown> | string;\n };\n const framework = opts.framework ?? detectFramework(variant, frameworkDetect);\n\n const derivedRules = deriveFromExports ? deriveRulesFromExports(paths.packageRoot, manifest) : [];\n const presetRules = (opts.presets ?? []).flatMap((name) => PRESET_RULES[name] ?? []);\n const rules = [...configuredRules, ...derivedRules, ...presetRules];\n\n const steps: StepReport[] = [];\n\n if (rules.length === 0) {\n steps.push({\n name: \"rules\",\n status: \"skipped\",\n reason: deriveFromExports\n ? \"no rules configured and deriveFromExports produced none\"\n : \"no rewriteImports.rules configured\",\n durationMs: 0,\n });\n return finish(steps, \"skipped\");\n }\n\n if (!existsSync(distDir)) {\n steps.push({\n name: \"dist\",\n status: \"failed\",\n reason: `missing dist directory: ${relative(paths.packageRoot, distDir)}`,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n });\n return finish(steps, \"failed\");\n }\n\n const tokens = { packageName: manifest.name, framework, variant };\n const expandedRules = rules.map((r) => ({\n match: expand(r.match, tokens),\n expandedReplace: expand(r.replaceWith, tokens),\n literal: r.literal === true,\n quoted: r.quoted === true,\n }));\n\n let rewrittenFiles = 0;\n let totalReplacements = 0;\n\n for (const file of listBuiltFiles(distDir, extensions)) {\n const stepStarted = process.hrtime.bigint();\n const source = readFileSync(file, \"utf8\");\n let next = source;\n let fileReplacements = 0;\n\n for (const rule of expandedRules) {\n const replacement = rule.literal\n ? rule.expandedReplace\n : toModuleSpecifier(relative(distDir, resolve(paths.packageRoot, rule.expandedReplace)));\n if (rule.quoted) {\n for (const quote of ['\"', \"'\"] as const) {\n const needle = `${quote}${rule.match}${quote}`;\n const occurrences = countOccurrences(next, needle);\n if (occurrences > 0) {\n next = next.split(needle).join(`${quote}${replacement}${quote}`);\n fileReplacements += occurrences;\n }\n }\n } else {\n const occurrences = countOccurrences(next, rule.match);\n if (occurrences > 0) {\n next = next.split(rule.match).join(replacement);\n fileReplacements += occurrences;\n }\n }\n }\n\n if (fileReplacements > 0) {\n writeFileSync(file, next);\n rewrittenFiles += 1;\n totalReplacements += fileReplacements;\n steps.push({\n name: relative(paths.packageRoot, file),\n status: \"passed\",\n reason: `${fileReplacements} replacement${fileReplacements === 1 ? \"\" : \"s\"}`,\n durationMs: nsToMs(process.hrtime.bigint() - stepStarted),\n });\n }\n }\n\n if (rewrittenFiles === 0) {\n steps.push({\n name: \"scan\",\n status: \"passed\",\n reason: \"no private specifiers found — nothing to rewrite\",\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n });\n }\n\n return finish(steps, rollupCommandStatus(steps), {\n variant,\n framework,\n rewrittenFiles,\n totalReplacements,\n });\n\n function finish(\n finalSteps: StepReport[],\n status: CommandReport[\"status\"],\n meta?: Record<string, unknown>,\n ): CommandReport {\n const report: CommandReport = {\n command: \"rewrite-imports\",\n status,\n startedAt,\n durationMs: nsToMs(process.hrtime.bigint() - startedAtNs),\n steps: finalSteps,\n ...(meta ? { meta } : {}),\n };\n writeReport(report, {\n reportDir: paths.reportDir,\n ...(opts.quiet === true ? { quiet: true } : {}),\n });\n return report;\n }\n}\n\n/* ───────── Helpers ───────── */\n\nfunction deriveRulesFromExports(\n packageRoot: string,\n manifest: { name: string; exports?: Record<string, unknown> | string },\n): RewriteRule[] {\n if (!manifest.exports || typeof manifest.exports !== \"object\") return [];\n\n // 1. Map `packages/<name>` → public specifier (root pkg name + subpath).\n const publicSpecifierByPackagePath = new Map<string, string>();\n for (const [subpath, target] of Object.entries(manifest.exports)) {\n for (const file of collectTargetFiles(target)) {\n const packagePath = extractPackagePath(file);\n if (packagePath && !publicSpecifierByPackagePath.has(packagePath)) {\n publicSpecifierByPackagePath.set(packagePath, publicSpecifier(manifest.name, subpath));\n }\n }\n }\n\n // 2. For each `packages/<name>`, read its package.json; map private→public.\n const packagesDir = join(packageRoot, \"packages\");\n if (!existsSync(packagesDir)) return [];\n\n const rules: RewriteRule[] = [];\n for (const entry of readdirSync(packagesDir)) {\n const manifestPath = join(packagesDir, entry, \"package.json\");\n if (!existsSync(manifestPath)) continue;\n let workspace: { name?: string };\n try {\n workspace = JSON.parse(readFileSync(manifestPath, \"utf8\")) as { name?: string };\n } catch {\n continue;\n }\n const publicName = publicSpecifierByPackagePath.get(`packages/${entry}`);\n if (workspace.name && publicName && workspace.name !== publicName) {\n rules.push({ match: workspace.name, replaceWith: publicName, literal: true });\n }\n }\n return rules;\n}\n\nfunction collectTargetFiles(target: unknown): string[] {\n if (typeof target === \"string\") return [target];\n if (!target || typeof target !== \"object\") return [];\n return Object.values(target as Record<string, unknown>).flatMap(collectTargetFiles);\n}\n\nfunction extractPackagePath(target: string): string | null {\n const normalized = target.replace(/^\\.\\//, \"\");\n const m = normalized.match(/^(packages\\/[^/]+)\\/dist\\//);\n return m ? (m[1] ?? null) : null;\n}\n\nfunction publicSpecifier(rootName: string, subpath: string): string {\n if (subpath === \".\") return rootName;\n return `${rootName}/${subpath.replace(/^\\.\\//, \"\")}`;\n}\n\nfunction detectFramework(variant: string, detect: Record<string, string>): string {\n for (const [name, pattern] of Object.entries(detect)) {\n if (pattern && new RegExp(pattern).test(variant)) return name;\n }\n // Geenius convention: `solidjs*` → solidjs, everything else → react.\n if (/^solidjs/.test(variant)) return \"solidjs\";\n return \"react\";\n}\n\nfunction expand(template: string, tokens: Record<string, string>): string {\n return template.replace(/\\$\\{(\\w+)\\}/g, (_, key: string) => tokens[key] ?? \"\");\n}\n\nfunction toModuleSpecifier(path: string): string {\n const normalized = path.split(sep).join(\"/\");\n return normalized.startsWith(\".\") ? normalized : `./${normalized}`;\n}\n\nfunction listBuiltFiles(dir: string, extensions: readonly string[]): string[] {\n const out: string[] = [];\n for (const entry of readdirSync(dir)) {\n const full = join(dir, entry);\n if (statSync(full).isDirectory()) {\n out.push(...listBuiltFiles(full, extensions));\n } else if (extensions.some((ext) => entry.endsWith(ext))) {\n out.push(full);\n }\n }\n return out;\n}\n\nfunction countOccurrences(haystack: string, needle: string): number {\n if (!needle) return 0;\n let count = 0;\n let index = haystack.indexOf(needle);\n while (index !== -1) {\n count += 1;\n index = haystack.indexOf(needle, index + needle.length);\n }\n return count;\n}\n\nfunction nsToMs(ns: bigint): number {\n return Number(ns) / 1_000_000;\n}\n","/**\n * Minimal npm registry client. Used by `sync-template` to resolve the latest\n * published version of a workspace-linked package so `link:../X` can be\n * rewritten to `^x.y.z` on the consuming repo's `main` branch.\n *\n * The registry response shape is well-known; we only need the `version` field\n * of the `latest` dist-tag.\n */\n\nimport { ExitCode, ReleaseToolkitError } from \"./exit.js\";\n\nconst DEFAULT_REGISTRY = \"https://registry.npmjs.org\";\n\nexport interface FetchLatestOptions {\n registry?: string;\n /** Optional bearer token for private-registry reads. */\n authToken?: string;\n /** When true, fail if only prerelease versions exist. */\n excludePrerelease?: boolean;\n}\n\ninterface PackumentLatest {\n version?: string;\n}\n\ninterface Packument {\n \"dist-tags\"?: Record<string, string>;\n versions?: Record<string, unknown>;\n}\n\n/**\n * Returns the version string published under the `latest` dist-tag for the\n * given scoped or unscoped package name. Throws a `ReleaseToolkitError` with\n * a clear hint when the package isn't published or the registry is\n * unreachable.\n */\nexport async function fetchLatestVersion(\n packageName: string,\n options: FetchLatestOptions = {},\n): Promise<string> {\n const registry = (options.registry ?? DEFAULT_REGISTRY).replace(/\\/$/, \"\");\n const url = `${registry}/${packageName}/latest`;\n\n const headers: Record<string, string> = { accept: \"application/json\" };\n if (options.authToken) {\n headers.authorization = `Bearer ${options.authToken}`;\n }\n\n let response: Response;\n try {\n response = await fetch(url, { headers });\n } catch (cause) {\n throw new ReleaseToolkitError(\n `Failed to reach npm registry for ${packageName}`,\n ExitCode.ENV_ERROR,\n `URL: ${url}. Check network connectivity and registry config.`,\n );\n }\n\n if (response.status === 404) {\n throw new ReleaseToolkitError(\n `Package ${packageName} not found on registry`,\n ExitCode.CONFIG_ERROR,\n `Publish ${packageName} to ${registry} before running sync-template on a consumer.`,\n );\n }\n if (!response.ok) {\n throw new ReleaseToolkitError(\n `Registry returned ${response.status} for ${packageName}`,\n ExitCode.REQUIRED_FAILURE,\n `URL: ${url}`,\n );\n }\n\n const body = (await response.json()) as PackumentLatest;\n const version = body.version;\n if (!version || typeof version !== \"string\") {\n throw new ReleaseToolkitError(\n `Registry response missing version for ${packageName}`,\n ExitCode.INTERNAL_BUG,\n );\n }\n\n if (options.excludePrerelease && /[-+]/.test(version)) {\n throw new ReleaseToolkitError(\n `${packageName} latest is a prerelease (${version})`,\n ExitCode.REQUIRED_FAILURE,\n \"Publish a stable version or pass --include-pre to allow.\",\n );\n }\n\n return version;\n}\n\n/**\n * Sanity-check helper used in tests. Returns `null` on any failure rather\n * than throwing, so callers can probe whether a package exists.\n */\nexport async function probeLatestVersion(\n packageName: string,\n options: FetchLatestOptions = {},\n): Promise<string | null> {\n try {\n return await fetchLatestVersion(packageName, options);\n } catch {\n return null;\n }\n}\n","/**\n * `geenius-release sync-template` — rewrites monorepo-style\n * `link:../../../<other-geenius-package>` dependencies to `^x.y.z` semver\n * ranges resolved from the npm registry. Used to generate the `main`\n * branch of a boilerplate or package repo from its `dev` branch, so\n * external buyers cloning `main` get a runnable package.json that\n * resolves via npm rather than via filesystem links.\n *\n * Idempotent. Running twice on the same input produces no diff.\n *\n * Scope of edits:\n * - The repo's root `package.json`\n * - Every nested workspace `package.json` (e.g. `packages/react/package.json`)\n *\n * Only `link:` specifiers that resolve outside the current repo are\n * rewritten. Intra-repo `link:` (e.g. `link:./packages/shared`) is left\n * alone — that's a workspace-internal reference, not a cross-package one.\n *\n * Version resolution strategy: option (b) — queries the npm registry for\n * each linked package's `latest` dist-tag. This is the authoritative\n * source of truth after a publish.\n */\n\nimport { existsSync, readdirSync, readFileSync, statSync, writeFileSync } from \"node:fs\";\nimport { dirname, isAbsolute, join, relative, resolve } from \"node:path\";\n\nimport { ExitCode, ReleaseToolkitError } from \"../lib/exit.js\";\nimport { fetchLatestVersion } from \"../lib/npm-registry.js\";\n\nexport interface RunSyncTemplateOptions {\n cwd?: string;\n /** When true, prints planned changes and exits 0 without writing. */\n dryRun?: boolean;\n /** npm registry base URL. Defaults to https://registry.npmjs.org. */\n registry?: string;\n /** Optional bearer token for private registries. */\n authToken?: string;\n /** Allow prerelease `latest` versions. Off by default. */\n includePrerelease?: boolean;\n /** Range prefix for rewritten versions. Defaults to `^`. */\n rangePrefix?: \"^\" | \"~\" | \"\";\n}\n\nexport interface SyncTemplateRewriteEntry {\n file: string;\n dependencyName: string;\n field: \"dependencies\" | \"devDependencies\" | \"peerDependencies\" | \"optionalDependencies\";\n oldSpecifier: string;\n newSpecifier: string;\n resolvedFrom: string;\n}\n\nexport interface SyncTemplateResult {\n dryRun: boolean;\n rewrites: SyncTemplateRewriteEntry[];\n filesChanged: string[];\n}\n\ntype DependencyField =\n | \"dependencies\"\n | \"devDependencies\"\n | \"peerDependencies\"\n | \"optionalDependencies\";\n\nconst DEPENDENCY_FIELDS: DependencyField[] = [\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n \"optionalDependencies\",\n];\n\ninterface PackageJsonShape {\n name?: string;\n version?: string;\n workspaces?: string[] | { packages?: string[] };\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n peerDependencies?: Record<string, string>;\n optionalDependencies?: Record<string, string>;\n}\n\nexport async function runSyncTemplate(\n options: RunSyncTemplateOptions = {},\n): Promise<SyncTemplateResult> {\n const cwd = options.cwd ? resolve(options.cwd) : process.cwd();\n const rangePrefix = options.rangePrefix ?? \"^\";\n const dryRun = options.dryRun ?? false;\n const repoRootPackageJson = join(cwd, \"package.json\");\n if (!existsSync(repoRootPackageJson)) {\n throw new ReleaseToolkitError(\n `No package.json found at ${repoRootPackageJson}`,\n ExitCode.CONFIG_ERROR,\n \"Run sync-template from a repo root or pass --cwd <path>.\",\n );\n }\n\n const manifests = discoverManifests(cwd);\n const rewrites: SyncTemplateRewriteEntry[] = [];\n const filesChanged = new Set<string>();\n const versionCache = new Map<string, string>();\n\n for (const manifestPath of manifests) {\n const raw = readFileSync(manifestPath, \"utf8\");\n let parsed: PackageJsonShape;\n try {\n parsed = JSON.parse(raw) as PackageJsonShape;\n } catch (cause) {\n throw new ReleaseToolkitError(\n `Invalid JSON in ${manifestPath}`,\n ExitCode.CONFIG_ERROR,\n cause instanceof Error ? cause.message : undefined,\n );\n }\n\n let mutated = false;\n\n for (const field of DEPENDENCY_FIELDS) {\n const block = parsed[field];\n if (!block) continue;\n\n for (const [depName, specifier] of Object.entries(block)) {\n if (!isCrossRepoLink(specifier, manifestPath, cwd)) continue;\n\n const linkedPackageJson = resolveLinkedPackageJson(specifier, manifestPath);\n if (!linkedPackageJson) {\n throw new ReleaseToolkitError(\n `Cannot resolve link target for ${depName}=${specifier} in ${manifestPath}`,\n ExitCode.CONFIG_ERROR,\n \"The link: path doesn't point to a readable package.json.\",\n );\n }\n\n const linkedName = readPackageName(linkedPackageJson);\n if (linkedName !== depName) {\n throw new ReleaseToolkitError(\n `Linked package name mismatch in ${manifestPath}: dependency is \"${depName}\" but ${linkedPackageJson} declares \"${linkedName}\"`,\n ExitCode.CONFIG_ERROR,\n \"Rename the dep key to match the linked package's `name` field.\",\n );\n }\n\n let version = versionCache.get(linkedName);\n if (!version) {\n version = await fetchLatestVersion(linkedName, {\n registry: options.registry,\n authToken: options.authToken,\n excludePrerelease: !options.includePrerelease,\n });\n versionCache.set(linkedName, version);\n }\n\n const newSpecifier = `${rangePrefix}${version}`;\n if (newSpecifier === specifier) continue;\n\n block[depName] = newSpecifier;\n mutated = true;\n rewrites.push({\n file: relative(cwd, manifestPath) || \"package.json\",\n dependencyName: depName,\n field,\n oldSpecifier: specifier,\n newSpecifier,\n resolvedFrom: relative(cwd, linkedPackageJson),\n });\n }\n }\n\n if (mutated && !dryRun) {\n const trailingNewline = raw.endsWith(\"\\n\") ? \"\\n\" : \"\";\n const indent = inferIndent(raw);\n const next = `${JSON.stringify(parsed, null, indent)}${trailingNewline}`;\n writeFileSync(manifestPath, next, \"utf8\");\n filesChanged.add(manifestPath);\n } else if (mutated) {\n filesChanged.add(manifestPath);\n }\n }\n\n return {\n dryRun,\n rewrites,\n filesChanged: Array.from(filesChanged).map((file) => relative(cwd, file)),\n };\n}\n\nfunction discoverManifests(repoRoot: string): string[] {\n const found: string[] = [];\n const rootPkg = join(repoRoot, \"package.json\");\n if (existsSync(rootPkg)) found.push(rootPkg);\n\n for (const candidate of [\n \"packages\",\n \"apps\",\n ]) {\n const dir = join(repoRoot, candidate);\n if (!existsSync(dir) || !statSync(dir).isDirectory()) continue;\n walkOneLevel(dir, (childDir) => {\n const pkg = join(childDir, \"package.json\");\n if (existsSync(pkg)) found.push(pkg);\n });\n }\n\n return found;\n}\n\nfunction walkOneLevel(dir: string, visit: (childDir: string) => void): void {\n let entries: Array<{ name: string; isDirectory: () => boolean }>;\n try {\n entries = readdirSync(dir, { withFileTypes: true });\n } catch {\n return;\n }\n for (const entry of entries) {\n if (!entry.isDirectory()) continue;\n if (entry.name.startsWith(\".\") || entry.name === \"node_modules\") continue;\n visit(join(dir, entry.name));\n }\n}\n\n/**\n * Returns true if the specifier is a `link:` pointing OUTSIDE the current\n * repo (i.e. a sibling-package reference, not an internal workspace one).\n */\nfunction isCrossRepoLink(specifier: string, manifestPath: string, repoRoot: string): boolean {\n if (!specifier.startsWith(\"link:\")) return false;\n const target = specifier.slice(\"link:\".length);\n const absoluteTarget = isAbsolute(target) ? target : resolve(dirname(manifestPath), target);\n const normalizedTarget = absoluteTarget.replace(/\\/+$/, \"\");\n const normalizedRoot = repoRoot.replace(/\\/+$/, \"\");\n return !normalizedTarget.startsWith(`${normalizedRoot}/`) && normalizedTarget !== normalizedRoot;\n}\n\nfunction resolveLinkedPackageJson(\n specifier: string,\n fromManifestPath: string,\n): string | null {\n const target = specifier.slice(\"link:\".length);\n const absolute = isAbsolute(target)\n ? target\n : resolve(dirname(fromManifestPath), target);\n const candidate = join(absolute, \"package.json\");\n return existsSync(candidate) ? candidate : null;\n}\n\nfunction readPackageName(packageJsonPath: string): string {\n const raw = readFileSync(packageJsonPath, \"utf8\");\n const parsed = JSON.parse(raw) as PackageJsonShape;\n if (!parsed.name) {\n throw new ReleaseToolkitError(\n `${packageJsonPath} has no \"name\" field`,\n ExitCode.CONFIG_ERROR,\n );\n }\n return parsed.name;\n}\n\nfunction inferIndent(raw: string): string | number {\n const match = raw.match(/^(\\s+)\"/m);\n if (!match) return 2;\n const sample = match[1];\n if (sample.startsWith(\"\\t\")) return \"\\t\";\n return sample.length;\n}\n","/**\n * `geenius-release run-scripts <s1> <s2> …` — run multiple top-level\n * `package.json` scripts sequentially in the package root, with PATH\n * augmented to include `node_modules/.bin`. Stops on the first failure\n * and propagates the failing exit code.\n *\n * Replaces local `_run-root-scripts.mjs` shims that exist in adapters and\n * similar packages, where a single command needs to chain build → tests\n * → exports → dist-contract in the same shell context.\n */\n\nimport { spawn } from \"node:child_process\";\nimport { readFileSync } from \"node:fs\";\nimport { delimiter, resolve } from \"node:path\";\n\nexport interface RunScriptsOptions {\n cwd?: string;\n scripts: readonly string[];\n /** Stop on first failure (default: true). */\n stopOnFailure?: boolean;\n /** Don't actually spawn; print the command list. */\n print?: boolean;\n}\n\nexport interface RunScriptsResult {\n status: number;\n /** Names of scripts that ran (including the failing one if applicable). */\n ran: string[];\n /** Name of the failing script, if any. */\n failedAt?: string;\n}\n\nexport async function runScripts(opts: RunScriptsOptions): Promise<RunScriptsResult> {\n if (!opts.scripts || opts.scripts.length === 0) {\n throw new Error(\"runScripts: at least one script name is required.\");\n }\n const cwd = opts.cwd ?? process.cwd();\n const manifest = JSON.parse(readFileSync(resolve(cwd, \"package.json\"), \"utf8\")) as {\n name?: string;\n version?: string;\n scripts?: Record<string, string>;\n };\n\n const stopOnFailure = opts.stopOnFailure !== false;\n const ran: string[] = [];\n\n for (const name of opts.scripts) {\n const command = manifest.scripts?.[name];\n if (!command) {\n return { status: 1, ran, failedAt: name };\n }\n if (opts.print) {\n process.stdout.write(\n `> ${manifest.name ?? \"\"}@${manifest.version ?? \"\"} ${name}\\n> ${command}\\n`,\n );\n ran.push(name);\n continue;\n }\n process.stdout.write(\n `\\n> ${manifest.name ?? \"\"}@${manifest.version ?? \"\"} ${name} ${cwd}\\n> ${command}\\n`,\n );\n const status = await runOne(cwd, command, manifest.name, manifest.version);\n ran.push(name);\n if (status !== 0) {\n if (stopOnFailure) {\n return { status, ran, failedAt: name };\n }\n }\n }\n\n return { status: 0, ran };\n}\n\nfunction runOne(\n cwd: string,\n command: string,\n name: string | undefined,\n version: string | undefined,\n): Promise<number> {\n return new Promise((ok, fail) => {\n const child = spawn(\"/bin/sh\", [\"-c\", command], {\n cwd,\n stdio: \"inherit\",\n env: {\n ...process.env,\n PATH: [resolve(cwd, \"node_modules/.bin\"), process.env.PATH ?? \"\"].join(delimiter),\n ...(name ? { npm_package_name: name } : {}),\n ...(version ? { npm_package_version: version } : {}),\n },\n });\n child.once(\"error\", fail);\n child.once(\"close\", (code, signal) => {\n if (signal) {\n process.stderr.write(`script terminated by signal ${signal}\\n`);\n ok(1);\n return;\n }\n ok(code ?? 1);\n });\n });\n}\n","/**\n * `geenius-release sanitize-dist` — strip leaky tsup artifacts from built JS.\n *\n * Collapses sanitize-dist-comments.mjs (3) + sanitize-dist.mjs (2).\n *\n * Operations (composable):\n * --comments (default on) Strip `// src/...` / `// .../src/...` comments tsup leaves at\n * the top of bundled chunks (they expose workspace\n * source paths).\n * --maps Strip `//# sourceMappingURL=` comments.\n * --fix-solid-jsx-runtime Rewrite solid-js/jsx-runtime → solid-js/h/jsx-runtime.\n *\n * Walks `dist/` (override with `dir`) and only touches `.js`, `.cjs`, `.mjs`.\n */\n\nimport { existsSync, readdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\n\nexport interface RunSanitizeDistOptions {\n cwd?: string;\n dir?: string;\n /** Default true. Strip `// .../src/...` source-path comments. */\n comments?: boolean;\n /** Default false. Strip sourceMappingURL comments. */\n maps?: boolean;\n /** Default false. Rewrite solid-js/jsx-runtime to runtime/h variant. */\n fixSolidJsxRuntime?: boolean;\n}\n\nexport interface SanitizeDistResult {\n status: \"passed\" | \"skipped\";\n filesScanned: number;\n filesChanged: number;\n}\n\nconst SOURCE_PATH_COMMENT = /(^|\\n)\\/\\/ (?:[^\\n]*\\/)?src\\/[^\\n]*/g;\nconst SOURCEMAP_URL = /\\n\\/\\/# sourceMappingURL=[^\\n]*/g;\n\nexport async function runSanitizeDist(\n opts: RunSanitizeDistOptions = {},\n): Promise<SanitizeDistResult> {\n const cwd = opts.cwd ?? process.cwd();\n const distDir = resolve(cwd, opts.dir ?? \"dist\");\n const stripComments = opts.comments !== false;\n const stripMaps = !!opts.maps;\n const fixJsx = !!opts.fixSolidJsxRuntime;\n\n if (!stripComments && !stripMaps && !fixJsx) {\n return { status: \"skipped\", filesScanned: 0, filesChanged: 0 };\n }\n\n if (!existsSync(distDir)) {\n return { status: \"skipped\", filesScanned: 0, filesChanged: 0 };\n }\n\n let scanned = 0;\n let changed = 0;\n\n for (const file of walk(distDir)) {\n if (!/\\.[cm]?js$/.test(file)) continue;\n scanned++;\n const source = readFileSync(file, \"utf8\");\n let patched = source;\n if (stripComments) patched = patched.replace(SOURCE_PATH_COMMENT, \"$1\");\n if (stripMaps) patched = patched.replace(SOURCEMAP_URL, \"\");\n if (fixJsx) patched = patched.replace(/\\bsolid-js\\/jsx-runtime\\b/g, \"solid-js/h/jsx-runtime\");\n if (patched !== source) {\n writeFileSync(file, patched);\n changed++;\n }\n }\n\n if (changed > 0) {\n process.stdout.write(`Sanitized ${changed} of ${scanned} file(s) in ${opts.dir ?? \"dist\"}.\\n`);\n }\n\n return { status: \"passed\", filesScanned: scanned, filesChanged: changed };\n}\n\nfunction walk(dir: string): string[] {\n return readdirSync(dir, { withFileTypes: true }).flatMap((entry) => {\n const path = resolve(dir, entry.name);\n if (entry.isDirectory()) return walk(path);\n return entry.isFile() ? [path] : [];\n });\n}\n","/**\n * `geenius-release size-limit-config` — generate size-limit entries from\n * `variants.json` and the root manifest's `exports` map.\n *\n * For every variant whose `packageDir` is referenced in `root.exports` (i.e.\n * actually shipped) and that declares `budget.gzip`, emit a size-limit entry:\n * { name, path: \"<packageDir>/dist/index.js\", ignore: [...peerDeps], limit }\n *\n * Variants without `budget.gzip` cause an error when they're in the exported\n * set — this is the same invariant adapters' local `size-limit-config.mjs`\n * enforces. Replaces ~5 copies across the ecosystem.\n *\n * Emits JSON to stdout; consumers pipe it into their `.size-limit.cjs` /\n * `size-limit.config.mjs` (typically `module.exports = JSON.parse(read(...))`).\n */\n\nimport { readFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\n\nimport { loadRichVariants, type RichVariant } from \"../lib/variants-rich.js\";\n\nexport interface RunSizeLimitConfigOptions {\n cwd?: string;\n /** Pretty-print JSON. Default: true. */\n pretty?: boolean;\n /** Match variants by exact `packageDir`. Default: derive from root exports. */\n packageDirs?: readonly string[];\n}\n\nexport interface SizeLimitEntry {\n name: string;\n path: string;\n ignore: string[];\n limit: string;\n}\n\nexport function runSizeLimitConfig(opts: RunSizeLimitConfigOptions = {}): {\n ok: boolean;\n entries: SizeLimitEntry[];\n output: string;\n} {\n const cwd = opts.cwd ?? process.cwd();\n const rootManifest = JSON.parse(readFileSync(resolve(cwd, \"package.json\"), \"utf8\")) as {\n name?: string;\n exports?: Record<string, unknown>;\n };\n const manifest = loadRichVariants({ rootDir: cwd, includeOutOfScope: true });\n\n const packageDirs = opts.packageDirs\n ? new Set(opts.packageDirs)\n : exportedPackageDirs(rootManifest.exports ?? {});\n\n const runtimeVariants = manifest.variants.filter(\n (v) => v.packageDir && packageDirs.has(v.packageDir),\n );\n\n const missing = runtimeVariants.filter((v) => !budgetGzip(v));\n if (missing.length > 0) {\n throw new Error(\n `Missing size-limit budget.gzip for exported package(s): ${missing\n .map((v) => `${v.name} (${v.packageDir})`)\n .join(\", \")}`,\n );\n }\n\n const entries: SizeLimitEntry[] = runtimeVariants.map((v) => ({\n name: v.name,\n path: `${v.packageDir}/dist/index.js`,\n ignore: ignoredPackagesForVariant(cwd, rootManifest.name, v),\n limit: budgetGzip(v) ?? \"\",\n }));\n\n const output = JSON.stringify(entries, null, opts.pretty === false ? 0 : 2);\n return { ok: true, entries, output };\n}\n\nfunction exportedPackageDirs(exportsMap: Record<string, unknown>): Set<string> {\n const out = new Set<string>();\n for (const target of Object.values(exportsMap)) {\n for (const value of flattenExportValues(target)) {\n const match = value.match(/^\\.\\/(packages\\/[^/]+)\\/dist\\//);\n if (match?.[1]) out.add(match[1]);\n }\n }\n return out;\n}\n\nfunction flattenExportValues(target: unknown): string[] {\n if (typeof target === \"string\") return [target];\n if (!target || typeof target !== \"object\") return [];\n return Object.values(target as Record<string, unknown>).flatMap(flattenExportValues);\n}\n\nfunction ignoredPackagesForVariant(\n cwd: string,\n rootName: string | undefined,\n variant: RichVariant,\n): string[] {\n if (!variant.packageDir) return rootName ? [rootName] : [];\n try {\n const manifest = JSON.parse(\n readFileSync(resolve(cwd, variant.packageDir, \"package.json\"), \"utf8\"),\n ) as { peerDependencies?: Record<string, string> };\n const peers = Object.keys(manifest.peerDependencies ?? {});\n return [...new Set([rootName, ...peers].filter((s): s is string => Boolean(s)))];\n } catch {\n return rootName ? [rootName] : [];\n }\n}\n\nfunction budgetGzip(variant: RichVariant): string | undefined {\n const budget = variant.budget as { gzip?: string } | undefined;\n return typeof budget?.gzip === \"string\" ? budget.gzip : undefined;\n}\n","/**\n * `geenius-release type-check` — run a per-variant type-check command,\n * with a fallback chain. For each variant declaring a `packageDir`:\n *\n * 1. If the variant's `package.json` has a `type-check` script, run it.\n * 2. Otherwise, if it has a `lint` script, run that.\n * 3. Otherwise, run `tsc --noEmit` from the variant directory.\n *\n * PATH is augmented to include both the variant's and root's `node_modules/.bin`\n * so locally-installed `tsc` resolves correctly. Replaces\n * `scripts/type-check-packages.mjs` (78 LOC × several packages).\n */\n\nimport { spawn } from \"node:child_process\";\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { delimiter, resolve } from \"node:path\";\n\nimport { packageVariants } from \"../lib/variants-rich.js\";\n\nexport interface RunTypeCheckOptions {\n cwd?: string;\n /** Continue with the next variant after a failure (default: false). */\n continueOnFailure?: boolean;\n /** Include variants marked inScope:false (default: true — type-checking\n * out-of-scope code surfaces drift early). */\n includeOutOfScope?: boolean;\n /** Run this packageDir first (typical: packages/shared). Default: undefined. */\n sharedFirst?: string;\n /** Don't spawn; print the resolved command list. */\n print?: boolean;\n}\n\nexport interface TypeCheckResult {\n status: number;\n results: { packageDir: string; command: string; status: number }[];\n}\n\nexport async function runTypeCheck(opts: RunTypeCheckOptions = {}): Promise<TypeCheckResult> {\n const cwd = opts.cwd ?? process.cwd();\n const variants = packageVariants({\n rootDir: cwd,\n includeMissing: false,\n ...(opts.includeOutOfScope !== false ? { includeOutOfScope: true } : {}),\n });\n\n const packageDirs: string[] = [];\n if (opts.sharedFirst && existsSync(resolve(cwd, opts.sharedFirst))) {\n packageDirs.push(opts.sharedFirst);\n }\n for (const v of variants) {\n if (v.packageDir && !packageDirs.includes(v.packageDir)) {\n packageDirs.push(v.packageDir);\n }\n }\n\n const results: TypeCheckResult[\"results\"] = [];\n let failed = false;\n\n for (const packageDir of packageDirs) {\n const packageDirPath = resolve(cwd, packageDir);\n const manifestPath = resolve(packageDirPath, \"package.json\");\n if (!existsSync(manifestPath)) continue;\n const manifest = JSON.parse(readFileSync(manifestPath, \"utf8\")) as {\n scripts?: Record<string, string>;\n };\n const command = manifest.scripts?.[\"type-check\"] ?? manifest.scripts?.lint ?? \"tsc --noEmit\";\n\n if (opts.print) {\n process.stdout.write(`(${packageDir}) ${command}\\n`);\n results.push({ packageDir, command, status: 0 });\n continue;\n }\n\n process.stdout.write(`\\nType-checking ${packageDir}\\n`);\n const status = await runOne(packageDirPath, cwd, command);\n results.push({ packageDir, command, status });\n if (status !== 0) {\n failed = true;\n if (!opts.continueOnFailure) break;\n }\n }\n\n return { status: failed ? 1 : 0, results };\n}\n\nfunction runOne(packageDirPath: string, rootPath: string, command: string): Promise<number> {\n return new Promise((ok, fail) => {\n const child = spawn(\"/bin/sh\", [\"-c\", command], {\n cwd: packageDirPath,\n stdio: \"inherit\",\n env: {\n ...process.env,\n PATH: [\n resolve(packageDirPath, \"node_modules/.bin\"),\n resolve(rootPath, \"node_modules/.bin\"),\n process.env.PATH ?? \"\",\n ]\n .filter(Boolean)\n .join(delimiter),\n },\n });\n child.once(\"error\", fail);\n child.once(\"close\", (code, signal) => {\n if (signal) {\n process.stderr.write(`type-check terminated by signal ${signal}\\n`);\n ok(1);\n return;\n }\n ok(code ?? 1);\n });\n });\n}\n","/**\n * `geenius-release variants` — print the package's variant matrix.\n *\n * Subcommands:\n * - list (default) Emit `manifest.variants` as JSON.\n * - missing Emit only required variants whose `packageDir` is absent.\n * - published-subpaths Emit `{variant,subpath}[]` for every published subpath.\n * - ui Emit only UI-kind variants.\n * - db Emit only db-provider variants.\n * - storybook-apps Emit `{variant,app,appDir}[]` for every Storybook host.\n *\n * Replaces 43 copies of `scripts/_variants.mjs`.\n */\n\nimport {\n dbProviderVariants,\n loadRichVariants,\n missingRequiredVariants,\n publishedSubpaths,\n storybookApps,\n uiVariants,\n} from \"../lib/variants-rich.js\";\n\nexport interface RunVariantsOptions {\n cwd?: string;\n subcommand?: \"list\" | \"missing\" | \"published-subpaths\" | \"ui\" | \"db\" | \"storybook-apps\" | \"check\";\n includeOutOfScope?: boolean;\n /** Pretty-print JSON. Default: true. */\n pretty?: boolean;\n /** `check` subcommand: require every entry with `required: true` (or\n * unspecified `required`) to have a `packageDir` that exists on disk. */\n requireAll?: boolean;\n}\n\nexport function runVariants(opts: RunVariantsOptions = {}): { ok: boolean; output: string } {\n const sub = opts.subcommand ?? \"list\";\n const loadOpts = {\n ...(opts.cwd ? { rootDir: opts.cwd } : {}),\n ...(opts.includeOutOfScope ? { includeOutOfScope: true } : {}),\n };\n const indent = opts.pretty === false ? 0 : 2;\n\n switch (sub) {\n case \"list\":\n return ok(JSON.stringify(loadRichVariants(loadOpts).variants, null, indent));\n case \"missing\":\n return ok(JSON.stringify(missingRequiredVariants(loadOpts), null, indent));\n case \"published-subpaths\":\n return ok(JSON.stringify(publishedSubpaths(loadOpts), null, indent));\n case \"ui\":\n return ok(JSON.stringify(uiVariants(loadOpts), null, indent));\n case \"db\":\n return ok(JSON.stringify(dbProviderVariants(loadOpts), null, indent));\n case \"storybook-apps\":\n return ok(JSON.stringify(storybookApps(loadOpts), null, indent));\n case \"check\": {\n const manifest = loadRichVariants({ ...loadOpts, includeOutOfScope: true });\n const problems: string[] = [];\n for (const v of manifest.variants) {\n const isRequired = opts.requireAll || (v as { required?: boolean }).required !== false;\n if (!isRequired) continue;\n if (!v.packageDir) {\n problems.push(`${v.name}: missing packageDir`);\n continue;\n }\n if (!v.exists) {\n problems.push(`${v.name}: packageDir ${v.packageDir} does not exist on disk`);\n }\n }\n if (problems.length === 0) {\n return ok(\n `variants check OK (${manifest.variants.length} variants verified${opts.requireAll ? \"; all required\" : \"\"})\\n`,\n );\n }\n return {\n ok: false,\n output: `variants check FAILED\\n${problems.map((p) => ` - ${p}`).join(\"\\n\")}\\n`,\n };\n }\n default:\n return { ok: false, output: `unknown variants subcommand: ${sub as string}` };\n }\n}\n\nfunction ok(output: string): { ok: true; output: string } {\n return { ok: true, output };\n}\n","/**\n * `geenius-release vitest-browser-prepare` — vitest browser-mode prepare plugin.\n *\n * Collapses vitest-browser-prepare-retry.ts copies across 4 packages.\n *\n * Exposed both as a programmatic plugin factory (for `vitest.config.ts`) and as\n * a CLI command that prints the plugin source for ad-hoc copy/integration. In\n * practice every package should import the factory, not the CLI; the CLI is\n * just an inspection escape hatch.\n */\n\nexport interface VitestBrowserPreparePlugin {\n name: string;\n transformIndexHtml: {\n order: \"pre\";\n handler: () => { tag: string; injectTo: \"head-prepend\"; children: string }[];\n };\n}\n\n/**\n * Returns a Vitest browser-mode plugin that proxies `BroadcastChannel`\n * construction inside the harness iframe so prepare/execute/cleanup messages\n * emitted before the iframe's listener is attached are still delivered.\n *\n * Mirrors the per-package `vitestBrowserPrepareRetry()` factory verbatim so\n * existing vitest configs can swap `from \"./scripts/...\"` for `from\n * \"@geenius/release-toolkit/vitest\"` without behavioural drift.\n */\nexport function vitestBrowserPrepareRetry(): VitestBrowserPreparePlugin {\n return {\n name: \"geenius:vitest-browser-prepare-retry\",\n transformIndexHtml: {\n order: \"pre\",\n handler() {\n return [\n {\n tag: \"script\",\n injectTo: \"head-prepend\",\n children: SCRIPT,\n },\n ];\n },\n },\n };\n}\n\nconst SCRIPT = `(() => {\n const params = new URLSearchParams(location.search);\n const sessionId = params.get(\"sessionId\");\n const iframeId = params.get(\"iframeId\");\n if (!sessionId || !iframeId) {\n return;\n }\n\n const channelName = \"vitest:\" + sessionId;\n const pendingMessages = [];\n const NativeBroadcastChannel = window.BroadcastChannel;\n const earlyChannel = new NativeBroadcastChannel(channelName);\n\n earlyChannel.addEventListener(\"message\", (event) => {\n const data = event.data;\n if (\n data &&\n data.iframeId === iframeId &&\n (data.event === \"prepare\" ||\n data.event === \"execute\" ||\n data.event === \"cleanup\")\n ) {\n pendingMessages.push(data);\n }\n });\n\n window.BroadcastChannel = new Proxy(NativeBroadcastChannel, {\n construct(target, args) {\n const channel = new target(...args);\n if (args[0] !== channelName) {\n return channel;\n }\n\n const addEventListener = channel.addEventListener.bind(channel);\n channel.addEventListener = (type, listener, options) => {\n const result = addEventListener(type, listener, options);\n if (type === \"message\" && typeof listener === \"function\") {\n queueMicrotask(() => {\n for (const data of pendingMessages.splice(0)) {\n listener.call(channel, new MessageEvent(\"message\", { data }));\n }\n });\n }\n return result;\n };\n return channel;\n },\n });\n})();`;\n\nexport interface RunVitestBrowserPrepareOptions {\n /** Print the injected script body to stdout (CLI inspection). */\n print?: boolean;\n}\n\nexport function runVitestBrowserPrepare(opts: RunVitestBrowserPrepareOptions = {}): {\n status: \"passed\";\n source: string;\n} {\n if (opts.print) process.stdout.write(`${SCRIPT}\\n`);\n return { status: \"passed\", source: SCRIPT };\n}\n","/**\n * Configuration: schema, defaults, loader.\n *\n * The single Zod schema below is the source of truth for `release-toolkit.config.json`.\n * Defaults are applied per-field so that an absent config file is equivalent to\n * an empty `{}` — every consumer gets sensible behaviour out of the box.\n */\n\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\n\nimport { z } from \"zod\";\n\nimport { configError } from \"./lib/exit.js\";\n\n/* ───────── Scanner sub-schemas ───────── */\n\nexport type SkipPolicy = \"silent\" | \"info\" | \"warn\";\n\nconst SkipPolicySchema = z.enum([\"silent\", \"info\", \"warn\"]);\n\nexport const PnpmAuditScannerSchema = z\n .object({\n required: z.boolean().default(true),\n auditLevel: z.enum([\"low\", \"moderate\", \"high\", \"critical\"]).default(\"moderate\"),\n scope: z.enum([\"prod\", \"all\"]).default(\"prod\"),\n skipIfMissing: SkipPolicySchema.optional(),\n skipIfUnauthenticated: SkipPolicySchema.optional(),\n })\n .strict();\n\nexport const OsvScannerSchema = z\n .object({\n required: z.boolean().default(true),\n skipIfMissing: SkipPolicySchema.default(\"warn\"),\n skipIfUnauthenticated: SkipPolicySchema.optional(),\n })\n .strict();\n\nexport const SocketScannerSchema = z\n .object({\n required: z.boolean().default(false),\n skipIfMissing: SkipPolicySchema.default(\"info\"),\n skipIfUnauthenticated: SkipPolicySchema.default(\"info\"),\n })\n .strict();\n\nexport const LicenseScannerSchema = z\n .object({\n required: z.boolean().default(true),\n skipIfMissing: SkipPolicySchema.optional(),\n skipIfUnauthenticated: SkipPolicySchema.optional(),\n })\n .strict();\n\nconst ScannersSchema = z\n .object({\n pnpmAudit: PnpmAuditScannerSchema.default(() => PnpmAuditScannerSchema.parse({})),\n osvScanner: OsvScannerSchema.default(() => OsvScannerSchema.parse({})),\n socket: SocketScannerSchema.default(() => SocketScannerSchema.parse({})),\n license: LicenseScannerSchema.default(() => LicenseScannerSchema.parse({})),\n })\n .strict();\n\nexport const SupplyChainSchema = z\n .object({\n scanners: ScannersSchema.default(() => ScannersSchema.parse({})),\n })\n .strict();\n\n/* ───────── Other command sub-schemas ───────── */\n\nexport const LicenseConfigSchema = z\n .object({\n scope: z.enum([\"prod\", \"all\"]).default(\"prod\"),\n forbidden: z.array(z.string()).default([\"AGPL\", \"GPL\", \"LGPL\", \"CDDL\", \"EPL\", \"MPL\", \"NPL\"]),\n allowlist: z.array(z.string()).default([]),\n unknownPolicy: z.enum([\"pass\", \"warn\", \"fail\"]).default(\"warn\"),\n })\n .strict();\n\nexport const SbomConfigSchema = z\n .object({\n format: z.enum([\"cyclonedx-json\", \"spdx-json\"]).default(\"cyclonedx-json\"),\n out: z.string().default(\".eval/sbom.cdx.json\"),\n })\n .strict();\n\nexport const PublintConfigSchema = z\n .object({\n /** Allow publint diagnostics of the form `The \"X\" dependency references \"link:...\"`\n * for X declared in the consuming manifest's `dependencies`. This is the\n * canonical source-time shape for in-monorepo Geenius packages; it gets\n * rewritten to a semver range at publish time. Default: true. */\n allowSourceTimeLinks: z.boolean().default(true),\n /** Package-name pattern (regex) eligible for the source-time link tolerance.\n * Default: `^@geenius/`. */\n sourceLinkScope: z.string().default(\"^@geenius/\"),\n })\n .strict();\n\nexport const SmokePackedConfigSchema = z\n .object({\n subpathsFromExports: z.boolean().default(true),\n extraSubpaths: z.array(z.string()).default([]),\n timeoutMs: z.number().int().positive().default(120_000),\n /** Verify each declared export target (types/import/default) exists in the\n * packed tarball as a file on disk. Off by default; UI / multi-subpath\n * packages benefit. */\n checkExportsOnDisk: z.boolean().default(false),\n /** Regex source pattern that every tar entry must match. Empty disables\n * the check. Example: `^package/(packages/[^/]+/dist/.+|.+\\\\.md|LICENSE|package\\\\.json)$`. */\n checkTarballPurity: z.string().default(\"\"),\n /** Verify .css export target files exist in the packed tarball (no\n * import — file-exists only). */\n checkStylesheets: z.boolean().default(false),\n /** Pass `--conditions=browser` to the import probe so packages with\n * browser/server condition splits resolve the browser branch. */\n browserConditions: z.boolean().default(false),\n /** Prepend DOM stubs (window, document, matchMedia, etc.) to the probe so\n * UI imports that touch DOM at module-evaluation time don't crash. */\n domStubs: z.boolean().default(false),\n /** Workspace package names to symlink into the consumer's node_modules\n * before the probe runs. Each name is resolved against the sibling\n * packages root (`<repoRoot>/..`). Use for `link:` workspace deps that\n * npm/pnpm can't satisfy from a registry. */\n injectDeps: z.array(z.string()).default([]),\n })\n .strict();\n\nexport const VariantsConfigSchema = z\n .object({\n include: z.array(z.string()).optional(),\n exclude: z.array(z.string()).optional(),\n })\n .strict();\n\nexport const RewriteImportsConfigSchema = z\n .object({\n rules: z\n .array(\n z\n .object({\n match: z.string().min(1),\n replaceWith: z.string().min(1),\n literal: z.boolean().optional(),\n quoted: z.boolean().optional(),\n })\n .strict(),\n )\n .default([]),\n frameworkDetect: z.record(z.string(), z.string()).default({}),\n /** File extensions to rewrite. Empty = use built-in defaults (`.js`, `.d.ts`). */\n extensions: z.array(z.string()).default([]),\n /** If true, derive additional literal rules from the root manifest's\n * `exports` map (private workspace name → public root-subpath). */\n deriveFromExports: z.boolean().default(false),\n })\n .strict();\n\nexport const GauntletConfigSchema = z\n .object({\n steps: z\n .array(z.string())\n .default([\n \"lint\",\n \"type-check\",\n \"test:unit\",\n \"supply-chain\",\n \"license\",\n \"sbom\",\n \"smoke-packed\",\n ]),\n continueOnFailure: z.boolean().default(false),\n /** Verify sibling @geenius/* link: deps have fresh dist outputs before\n * the first step. `off` skips, `check` reports stale siblings as a\n * failed pre-step, `build` rebuilds them automatically. Default: check. */\n siblingDistFreshness: z.enum([\"off\", \"check\", \"build\"]).default(\"check\"),\n })\n .strict();\n\n/* ───────── Top-level schema ───────── */\n\nexport const ConfigSchema = z\n .object({\n /** Optional JSON-schema pointer for editors. Ignored at runtime. */\n $schema: z.string().optional(),\n variants: VariantsConfigSchema.default(() => VariantsConfigSchema.parse({})),\n supplyChain: SupplyChainSchema.default(() => SupplyChainSchema.parse({})),\n license: LicenseConfigSchema.default(() => LicenseConfigSchema.parse({})),\n sbom: SbomConfigSchema.default(() => SbomConfigSchema.parse({})),\n smokePacked: SmokePackedConfigSchema.default(() => SmokePackedConfigSchema.parse({})),\n publint: PublintConfigSchema.default(() => PublintConfigSchema.parse({})),\n rewriteImports: RewriteImportsConfigSchema.default(() => RewriteImportsConfigSchema.parse({})),\n gauntlet: GauntletConfigSchema.default(() => GauntletConfigSchema.parse({})),\n })\n .strict();\n\nexport type Config = z.infer<typeof ConfigSchema>;\nexport type ScannerConfig =\n | z.infer<typeof PnpmAuditScannerSchema>\n | z.infer<typeof OsvScannerSchema>\n | z.infer<typeof SocketScannerSchema>\n | z.infer<typeof LicenseScannerSchema>;\n\n/* ───────── Loader ───────── */\n\nexport interface LoadedConfig {\n config: Config;\n /** Absolute path to the config file that was read, or `null` if defaults were used. */\n filePath: string | null;\n}\n\nconst CONFIG_FILE = \"release-toolkit.config.json\";\n\n/**\n * Read `release-toolkit.config.json` if present; merge with defaults via Zod's\n * `default()` mechanism. Missing config file is not an error.\n */\nexport function loadConfig(packageRoot: string): LoadedConfig {\n const filePath = join(packageRoot, CONFIG_FILE);\n if (!existsSync(filePath)) {\n return { config: ConfigSchema.parse({}), filePath: null };\n }\n\n let raw: unknown;\n try {\n raw = JSON.parse(readFileSync(filePath, \"utf8\"));\n } catch (error) {\n throw configError(\n `Failed to parse ${CONFIG_FILE}: ${(error as Error).message}`,\n \"Ensure the file is valid JSON.\",\n );\n }\n\n const parsed = ConfigSchema.safeParse(raw);\n if (!parsed.success) {\n const issues = parsed.error.issues\n .map((issue) => ` - ${issue.path.join(\".\") || \"(root)\"}: ${issue.message}`)\n .join(\"\\n\");\n throw configError(\n `Invalid ${CONFIG_FILE}:\\n${issues}`,\n \"Refer to the schema in @geenius/release-toolkit/dist/config.d.ts.\",\n );\n }\n\n return { config: parsed.data, filePath };\n}\n","#!/usr/bin/env node\n/**\n * CLI router. Thin wrapper over the programmatic `runX` functions.\n * Subcommand registry — one entry per command. Adding a new subcommand is\n * O(one entry here + one file under `commands/`).\n */\n\nimport { readFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\n\nimport { Command } from \"commander\";\nimport pc from \"picocolors\";\nimport { type A11ySeverity, runA11yReport } from \"./commands/a11y-report.js\";\nimport { runAttw } from \"./commands/attw.js\";\nimport { runBundleBudgets } from \"./commands/bundle-budgets.js\";\nimport { runConvexBuild } from \"./commands/convex-build.js\";\nimport { runConvexCodegen } from \"./commands/convex-codegen.js\";\nimport { runCoverage } from \"./commands/coverage.js\";\nimport { runCoverageReport } from \"./commands/coverage-report.js\";\nimport { runDbMigrations } from \"./commands/db-migrations.js\";\nimport { runDiffCoverage } from \"./commands/diff-coverage.js\";\nimport { runE2E } from \"./commands/e2e.js\";\nimport { runGauntlet } from \"./commands/gauntlet.js\";\nimport { runLicense } from \"./commands/license.js\";\nimport { runLint } from \"./commands/lint.js\";\nimport { runManifestContract } from \"./commands/manifest-contract.js\";\nimport { runMutationReport } from \"./commands/mutation-report.js\";\nimport { runPackContract } from \"./commands/pack-contract.js\";\nimport { runPatchDts } from \"./commands/patch-dts.js\";\nimport { runPerfSmoke } from \"./commands/perf-smoke.js\";\nimport { runPnpmFilters } from \"./commands/pnpm-filters.js\";\nimport { runPublint } from \"./commands/publint.js\";\nimport { runRewriteImports } from \"./commands/rewrite-imports.js\";\nimport { runSyncTemplate } from \"./commands/sync-template.js\";\nimport { runScripts } from \"./commands/run-scripts.js\";\nimport { runSanitizeDist } from \"./commands/sanitize-dist.js\";\nimport { runSbom } from \"./commands/sbom.js\";\nimport { runSizeCheck } from \"./commands/size-check.js\";\nimport { runSizeLimitConfig } from \"./commands/size-limit-config.js\";\nimport { runSmokePacked } from \"./commands/smoke-packed.js\";\nimport { runStorybook } from \"./commands/storybook.js\";\nimport { runSupplyChain } from \"./commands/supply-chain.js\";\nimport { runTypeCheck } from \"./commands/type-check.js\";\nimport { runVariants } from \"./commands/variants.js\";\nimport { runVitestBrowserPrepare } from \"./commands/vitest-browser-prepare.js\";\nimport { loadConfig } from \"./config.js\";\nimport { ExitCode, ReleaseToolkitError } from \"./lib/exit.js\";\nimport { resolvePaths } from \"./lib/paths.js\";\n\nconst VERSION = \"0.9.3\";\n\nconst program = new Command();\nprogram\n .name(\"geenius-release\")\n .description(\"Canonical release toolkit for Geenius packages and boilerplates\")\n .version(VERSION, \"-v, --version\")\n .option(\"--cwd <path>\", \"Run as if invoked from <path>\")\n .showHelpAfterError();\n\nprogram\n .command(\"supply-chain\")\n .description(\"Run pnpm audit + osv-scanner + Socket + license (configurable required/optional)\")\n .action(async () => {\n await runWithConfig(async (config, cwd) => {\n const r = await runSupplyChain({\n cwd,\n config: config.supplyChain,\n licenseConfig: config.license,\n });\n return r.status === \"passed\" || r.status === \"skipped\"\n ? ExitCode.OK\n : ExitCode.REQUIRED_FAILURE;\n });\n });\n\nprogram\n .command(\"license\")\n .description(\"Forbidden-license scan over installed dependencies\")\n .option(\"--scope <prod|all>\", \"Dependency scope (default from config)\", undefined)\n .action(async (cmdOpts: { scope?: \"prod\" | \"all\" }) => {\n await runWithConfig(async (config, cwd) => {\n const r = await runLicense({\n cwd,\n config: config.license,\n ...(cmdOpts.scope ? { scope: cmdOpts.scope } : {}),\n });\n return r.status === \"passed\" ? ExitCode.OK : ExitCode.REQUIRED_FAILURE;\n });\n });\n\nprogram\n .command(\"sbom\")\n .description(\"Emit a CycloneDX or SPDX SBOM from pnpm-lock.yaml\")\n .option(\"--format <cyclonedx-json|spdx-json>\", \"Output format\")\n .option(\"--out <path>\", \"Output path\")\n .action(async (cmdOpts: { format?: \"cyclonedx-json\" | \"spdx-json\"; out?: string }) => {\n await runWithConfig(async (config, cwd) => {\n const r = await runSbom({\n cwd,\n config: config.sbom,\n ...(cmdOpts.format ? { format: cmdOpts.format } : {}),\n ...(cmdOpts.out ? { out: cmdOpts.out } : {}),\n });\n return r.status === \"passed\" ? ExitCode.OK : ExitCode.REQUIRED_FAILURE;\n });\n });\n\nprogram\n .command(\"smoke-packed\")\n .description(\"Pack, install, and dynamic-import every subpath in package.json:exports\")\n .option(\"--subpaths <list>\", \"Comma-separated subpath list (overrides config)\", (raw) =>\n raw\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean),\n )\n .option(\n \"--check-exports-on-disk\",\n \"Verify each declared export target file exists in the packed tarball\",\n )\n .option(\n \"--check-tarball-purity <pattern>\",\n \"Regex source pattern — every tar entry must match. Empty disables.\",\n )\n .option(\"--check-stylesheets\", \"Verify .css export target files exist in the packed tarball\")\n .option(\"--browser-conditions\", \"Pass --conditions=browser to the import probe (UI packages)\")\n .option(\n \"--dom-stubs\",\n \"Prepend DOM stubs (window/document/matchMedia) so UI imports don't crash at module evaluation\",\n )\n .option(\n \"--inject-deps <list>\",\n \"Comma-separated workspace dep names to symlink into the consumer (e.g. @geenius/errors,@geenius/logger)\",\n (raw) =>\n raw\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean),\n )\n .action(\n async (cmdOpts: {\n subpaths?: string[];\n checkExportsOnDisk?: boolean;\n checkTarballPurity?: string;\n checkStylesheets?: boolean;\n browserConditions?: boolean;\n domStubs?: boolean;\n injectDeps?: string[];\n }) => {\n await runWithConfig(async (config, cwd) => {\n const r = await runSmokePacked({\n cwd,\n config: config.smokePacked,\n ...(cmdOpts.subpaths ? { subpaths: cmdOpts.subpaths } : {}),\n ...(cmdOpts.checkExportsOnDisk ? { checkExportsOnDisk: true } : {}),\n ...(cmdOpts.checkTarballPurity !== undefined\n ? { checkTarballPurity: cmdOpts.checkTarballPurity }\n : {}),\n ...(cmdOpts.checkStylesheets ? { checkStylesheets: true } : {}),\n ...(cmdOpts.browserConditions ? { browserConditions: true } : {}),\n ...(cmdOpts.domStubs ? { domStubs: true } : {}),\n ...(cmdOpts.injectDeps ? { injectDeps: cmdOpts.injectDeps } : {}),\n });\n return r.status === \"passed\" || r.status === \"skipped\"\n ? ExitCode.OK\n : ExitCode.REQUIRED_FAILURE;\n });\n },\n );\n\nprogram\n .command(\"publint\")\n .description(\"Run publint against the packed tarball\")\n .option(\"--optional\", \"Skip silently if publint isn't installed\")\n .action(async (cmdOpts: { optional?: boolean }) => {\n await runWithConfig(async (config, cwd) => {\n const r = await runPublint({\n cwd,\n config: config.publint,\n ...(cmdOpts.optional ? { optional: true } : {}),\n });\n return r.status === \"passed\" || r.status === \"skipped\"\n ? ExitCode.OK\n : ExitCode.REQUIRED_FAILURE;\n });\n });\n\nprogram\n .command(\"attw\")\n .description(\"Run @arethetypeswrong/cli against the packed tarball\")\n .option(\"--optional\", \"Skip silently if attw isn't installed\")\n .option(\n \"--ignore-rules <list>\",\n \"Comma-separated rules to suppress (e.g. cjs-resolves-to-esm)\",\n (raw) =>\n raw\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean),\n )\n .option(\n \"--safe-pack-dir <path>\",\n \"Reuse this dir (relative to packageRoot) instead of mkdtemp for the tarball\",\n )\n .action(async (cmdOpts: { optional?: boolean; ignoreRules?: string[]; safePackDir?: string }) => {\n await runWithConfig(async (_config, cwd) => {\n const r = await runAttw({\n cwd,\n ...(cmdOpts.optional ? { optional: true } : {}),\n ...(cmdOpts.ignoreRules ? { ignoreRules: cmdOpts.ignoreRules } : {}),\n ...(cmdOpts.safePackDir ? { safePackDir: cmdOpts.safePackDir } : {}),\n });\n return r.status === \"passed\" || r.status === \"skipped\"\n ? ExitCode.OK\n : ExitCode.REQUIRED_FAILURE;\n });\n });\n\nprogram\n .command(\"size-check\")\n .description(\"Run size-limit and enforce size budgets (optional by default)\")\n .option(\"--required\", \"Treat missing size-limit binary/config as a failure (default: optional)\")\n .option(\"--why\", \"Pass --why through to size-limit for debug detail\")\n .action(async (cmdOpts: { required?: boolean; why?: boolean }) => {\n await runWithConfig(async (_config, cwd) => {\n const r = await runSizeCheck({\n cwd,\n optional: !cmdOpts.required,\n ...(cmdOpts.why ? { extraArgs: [\"--why\"] } : {}),\n });\n return r.status === \"passed\" || r.status === \"skipped\"\n ? ExitCode.OK\n : ExitCode.REQUIRED_FAILURE;\n });\n });\n\nprogram\n .command(\"coverage-report\")\n .description(\"Aggregate coverage-summary.json and (optionally) enforce thresholds\")\n .option(\"--summary <path>\", \"Path to coverage-summary.json\")\n .option(\"--optional\", \"Skip silently if coverage hasn't been run\")\n .option(\"--min-lines <pct>\", \"Minimum lines %\", (v) => Number(v))\n .option(\"--min-branches <pct>\", \"Minimum branches %\", (v) => Number(v))\n .option(\"--min-functions <pct>\", \"Minimum functions %\", (v) => Number(v))\n .option(\"--min-statements <pct>\", \"Minimum statements %\", (v) => Number(v))\n .option(\n \"--threshold-file <path>\",\n \"Per-subpackage threshold registry (JSON) — see docs/coverage.md\",\n )\n .option(\"--output <path>\", \"Write a Markdown report to <path>\")\n .option(\"--json <path>\", \"Write the structured JSON report to <path>\")\n .option(\"--fail-on-gaps\", \"Exit non-zero on any subpackage below threshold\")\n .action(\n async (cmdOpts: {\n summary?: string;\n optional?: boolean;\n minLines?: number;\n minBranches?: number;\n minFunctions?: number;\n minStatements?: number;\n thresholdFile?: string;\n output?: string;\n json?: string;\n failOnGaps?: boolean;\n }) => {\n await runWithConfig(async (_config, cwd) => {\n const thresholds: Record<string, number> = {};\n if (cmdOpts.minLines !== undefined) thresholds.lines = cmdOpts.minLines;\n if (cmdOpts.minBranches !== undefined) thresholds.branches = cmdOpts.minBranches;\n if (cmdOpts.minFunctions !== undefined) thresholds.functions = cmdOpts.minFunctions;\n if (cmdOpts.minStatements !== undefined) thresholds.statements = cmdOpts.minStatements;\n const r = await runCoverageReport({\n cwd,\n ...(cmdOpts.summary ? { summaryPath: cmdOpts.summary } : {}),\n ...(cmdOpts.optional ? { optional: true } : {}),\n ...(Object.keys(thresholds).length > 0 ? { thresholds } : {}),\n ...(cmdOpts.thresholdFile ? { thresholdFile: cmdOpts.thresholdFile } : {}),\n ...(cmdOpts.output ? { output: cmdOpts.output } : {}),\n ...(cmdOpts.json ? { json: cmdOpts.json } : {}),\n ...(cmdOpts.failOnGaps ? { failOnGaps: true } : {}),\n });\n return r.status === \"passed\" || r.status === \"skipped\"\n ? ExitCode.OK\n : ExitCode.REQUIRED_FAILURE;\n });\n },\n );\n\nprogram\n .command(\"mutation-report\")\n .description(\"Run Stryker mutation tests (optional by default)\")\n .option(\"--required\", \"Treat missing Stryker config as a failure (default: optional)\")\n .option(\"--min-score <pct>\", \"Minimum mutation score (0-100)\", (v) => Number(v))\n .option(\"--check-config-only\", \"Only verify a Stryker config exists; do not invoke Stryker\")\n .option(\n \"--dlx <spec>\",\n \"Fall back to `pnpm dlx --package <spec>` when local @stryker-mutator/core is missing (e.g. @stryker-mutator/core@9.5.0)\",\n )\n .option(\"--markdown <path>\", \"Write a Markdown summary report to <path>\")\n .option(\"--json <path>\", \"Write a structured JSON summary report to <path>\")\n .option(\n \"--report-json <path>\",\n \"Path to Stryker's raw report.json (used for fallback score). Default: .eval/mutation/mutation.json\",\n )\n .action(\n async (cmdOpts: {\n required?: boolean;\n minScore?: number;\n checkConfigOnly?: boolean;\n dlx?: string;\n markdown?: string;\n json?: string;\n reportJson?: string;\n }) => {\n await runWithConfig(async (_config, cwd) => {\n const r = await runMutationReport({\n cwd,\n optional: !cmdOpts.required,\n ...(cmdOpts.minScore !== undefined ? { minScore: cmdOpts.minScore } : {}),\n ...(cmdOpts.checkConfigOnly ? { checkConfigOnly: true } : {}),\n ...(cmdOpts.dlx ? { dlxSpec: cmdOpts.dlx } : {}),\n ...(cmdOpts.markdown ? { markdownOut: cmdOpts.markdown } : {}),\n ...(cmdOpts.json ? { jsonOut: cmdOpts.json } : {}),\n ...(cmdOpts.reportJson ? { reportJsonPath: cmdOpts.reportJson } : {}),\n });\n return r.status === \"passed\" || r.status === \"skipped\"\n ? ExitCode.OK\n : ExitCode.REQUIRED_FAILURE;\n });\n },\n );\n\nprogram\n .command(\"a11y-report\")\n .description(\"Aggregate axe-core results and enforce a severity threshold\")\n .option(\"--results <path>\", \"Path to the axe results JSON\")\n .option(\n \"--fail-threshold <severity>\",\n \"Lowest severity that fails (minor|moderate|serious|critical)\",\n )\n .option(\"--optional\", \"Skip silently if no results file is present\")\n .action(\n async (cmdOpts: { results?: string; failThreshold?: A11ySeverity; optional?: boolean }) => {\n await runWithConfig(async (_config, cwd) => {\n const r = await runA11yReport({\n cwd,\n ...(cmdOpts.results ? { resultsPath: cmdOpts.results } : {}),\n ...(cmdOpts.failThreshold ? { failThreshold: cmdOpts.failThreshold } : {}),\n ...(cmdOpts.optional ? { optional: true } : {}),\n });\n return r.status === \"passed\" || r.status === \"skipped\"\n ? ExitCode.OK\n : ExitCode.REQUIRED_FAILURE;\n });\n },\n );\n\nprogram\n .command(\"diff-coverage\")\n .description(\"Changed-line coverage diff against a git base ref\")\n .option(\"--base <ref>\", \"Git base ref to diff against (default: origin/main)\")\n .option(\"--coverage <path>\", \"Path to coverage-final.json\")\n .option(\"--min <pct>\", \"Minimum changed-line coverage % (default: 80)\", (v) => Number(v))\n .option(\n \"--min-ci <pct>\",\n \"Threshold when process.env.CI is truthy (overrides --min in CI)\",\n (v) => Number(v),\n )\n .option(\n \"--min-local <pct>\",\n \"Threshold when process.env.CI is falsy (overrides --min locally)\",\n (v) => Number(v),\n )\n .option(\"--optional\", \"Skip silently if coverage hasn't been run\")\n .action(\n async (cmdOpts: {\n base?: string;\n coverage?: string;\n min?: number;\n minCi?: number;\n minLocal?: number;\n optional?: boolean;\n }) => {\n await runWithConfig(async (_config, cwd) => {\n const r = await runDiffCoverage({\n cwd,\n ...(cmdOpts.base ? { base: cmdOpts.base } : {}),\n ...(cmdOpts.coverage ? { coveragePath: cmdOpts.coverage } : {}),\n ...(cmdOpts.min !== undefined ? { min: cmdOpts.min } : {}),\n ...(cmdOpts.minCi !== undefined ? { minCi: cmdOpts.minCi } : {}),\n ...(cmdOpts.minLocal !== undefined ? { minLocal: cmdOpts.minLocal } : {}),\n ...(cmdOpts.optional ? { optional: true } : {}),\n });\n return r.status === \"passed\" || r.status === \"skipped\"\n ? ExitCode.OK\n : ExitCode.REQUIRED_FAILURE;\n });\n },\n );\n\nprogram\n .command(\"manifest-contract\")\n .description(\"Verify package.json exports/files/bin entries resolve on disk\")\n .action(async () => {\n await runWithConfig(async (_config, cwd) => {\n const r = await runManifestContract({ cwd });\n return r.status === \"passed\" ? ExitCode.OK : ExitCode.REQUIRED_FAILURE;\n });\n });\n\nprogram\n .command(\"rewrite-imports <variant-dir>\")\n .description(\"Rewrite private subpath imports in a variant's dist/ to relative dist paths\")\n .option(\n \"--rule <match=replaceWith>\",\n // biome-ignore lint/suspicious/noTemplateCurlyInString: documenting token syntax\n \"Inline rule (repeatable). Tokens: ${packageName} ${framework} ${variant}\",\n (raw, prev: Array<{ match: string; replaceWith: string }> = []) => {\n const idx = raw.indexOf(\"=\");\n if (idx <= 0) {\n throw new Error(`--rule must be '<match>=<replaceWith>', got: ${raw}`);\n }\n prev.push({ match: raw.slice(0, idx), replaceWith: raw.slice(idx + 1) });\n return prev;\n },\n )\n .option(\"--framework <name>\", \"Override detected framework (e.g. react, solidjs)\")\n .option(\n \"--derive-from-exports\",\n \"Add literal rules derived from the root manifest's `exports` map\",\n )\n .option(\n \"--preset <names>\",\n \"Comma-separated built-in presets to layer on (e.g. solid-web)\",\n (raw) =>\n raw\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean),\n )\n .action(\n async (\n variantDir: string,\n cmdOpts: {\n rule?: Array<{ match: string; replaceWith: string }>;\n framework?: string;\n deriveFromExports?: boolean;\n preset?: string[];\n },\n ) => {\n await runWithConfig(async (config, cwd) => {\n type RewriteOpts = Parameters<typeof runRewriteImports>[0];\n const r = await runRewriteImports({\n cwd,\n variantDir,\n config: config.rewriteImports,\n ...(cmdOpts.rule ? { rules: cmdOpts.rule } : {}),\n ...(cmdOpts.framework ? { framework: cmdOpts.framework } : {}),\n ...(cmdOpts.deriveFromExports ? { deriveFromExports: true } : {}),\n ...(cmdOpts.preset\n ? { presets: cmdOpts.preset as NonNullable<RewriteOpts[\"presets\"]> }\n : {}),\n });\n return r.status === \"passed\" || r.status === \"skipped\"\n ? ExitCode.OK\n : ExitCode.REQUIRED_FAILURE;\n });\n },\n );\n\nprogram\n .command(\"sync-template\")\n .description(\n \"Rewrite cross-repo link: deps to npm semver ranges (resolves via npm registry). Use to generate the main branch from dev.\",\n )\n .option(\"--dry-run\", \"Print planned rewrites without writing files\", false)\n .option(\n \"--registry <url>\",\n \"npm registry URL (default: https://registry.npmjs.org)\",\n )\n .option(\n \"--range-prefix <prefix>\",\n \"Range prefix for rewritten versions: ^, ~, or empty (default: ^)\",\n \"^\",\n )\n .option(\n \"--include-pre\",\n \"Accept prerelease versions from the latest dist-tag\",\n false,\n )\n .action(\n async (cmdOpts: {\n dryRun?: boolean;\n registry?: string;\n rangePrefix?: string;\n includePre?: boolean;\n }) => {\n await runWithConfig(async (_config, cwd) => {\n const prefix = (cmdOpts.rangePrefix ?? \"^\") as \"^\" | \"~\" | \"\";\n if (![\"^\", \"~\", \"\"].includes(prefix)) {\n throw new ReleaseToolkitError(\n `Invalid --range-prefix \"${cmdOpts.rangePrefix}\". Must be \"^\", \"~\", or empty.`,\n ExitCode.CONFIG_ERROR,\n );\n }\n const result = await runSyncTemplate({\n cwd,\n dryRun: cmdOpts.dryRun ?? false,\n ...(cmdOpts.registry ? { registry: cmdOpts.registry } : {}),\n ...(cmdOpts.includePre ? { includePrerelease: true } : {}),\n rangePrefix: prefix,\n });\n\n const verb = result.dryRun ? \"would rewrite\" : \"rewrote\";\n if (result.rewrites.length === 0) {\n console.log(pc.green(\"sync-template: nothing to do (no cross-repo link: deps found)\"));\n return ExitCode.OK;\n }\n console.log(\n pc.bold(\n `sync-template: ${verb} ${result.rewrites.length} dependenc${result.rewrites.length === 1 ? \"y\" : \"ies\"} across ${result.filesChanged.length} file${result.filesChanged.length === 1 ? \"\" : \"s\"}`,\n ),\n );\n for (const entry of result.rewrites) {\n console.log(\n ` ${pc.dim(entry.file)} ${pc.cyan(entry.field)}.${entry.dependencyName}: ${pc.yellow(entry.oldSpecifier)} → ${pc.green(entry.newSpecifier)}`,\n );\n }\n if (result.dryRun) {\n console.log(pc.dim(\"\\n(dry run — no files were modified)\"));\n }\n return ExitCode.OK;\n });\n },\n );\n\nprogram\n .command(\"storybook\")\n .description(\"Build + test-run every Storybook app in the package\")\n .option(\n \"--apps <list>\",\n \"Comma-separated app dirs (default: auto-discover apps/storybook-*)\",\n (raw) =>\n raw\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean),\n )\n .option(\n \"--actions <list>\",\n \"Comma-separated lifecycle actions (default: build,test:storybook)\",\n (raw) =>\n raw\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean),\n )\n .option(\"--filter <substring>\", \"Run only apps whose path includes <substring>\")\n .option(\"--continue-on-failure\", \"Run all apps even when one fails\")\n .option(\n \"--static-smoke <mode>\",\n \"Run the toolkit's built-in Playwright static smoke (replace|after|only)\",\n )\n .option(\n \"--runner <name>\",\n \"Per-app runner: static-smoke | test-runner | vitest. Supersedes --static-smoke.\",\n )\n .option(\n \"--required-story <id>\",\n \"Story id every app must include during static smoke (repeatable)\",\n (raw: string, prev: string[] = []) => prev.concat([raw]),\n )\n .option(\"--from-variants\", \"Discover apps from variants.json instead of auto-globbing\")\n .option(\"--variants-scope <scope>\", \"When --from-variants: 'all' (default) or 'published'\", \"all\")\n .option(\n \"--check-shape <jsonOrPath>\",\n \"Assert per-app shape (inline JSON or @path). Schema: { requiredFiles, forbiddenFiles, requiredTitles }\",\n )\n .action(\n async (cmdOpts: {\n apps?: string[];\n actions?: string[];\n filter?: string;\n continueOnFailure?: boolean;\n staticSmoke?: \"replace\" | \"after\" | \"only\";\n runner?: \"static-smoke\" | \"test-runner\" | \"vitest\";\n requiredStory?: string[];\n fromVariants?: boolean;\n variantsScope?: \"all\" | \"published\";\n checkShape?: string;\n }) => {\n await runWithConfig(async (_config, cwd) => {\n type StorybookOpts = NonNullable<Parameters<typeof runStorybook>[0]>;\n let checkShape: StorybookOpts[\"checkShape\"];\n if (cmdOpts.checkShape) {\n const raw = cmdOpts.checkShape.startsWith(\"@\")\n ? readFileSync(resolve(cwd, cmdOpts.checkShape.slice(1)), \"utf8\")\n : cmdOpts.checkShape;\n checkShape = JSON.parse(raw) as StorybookOpts[\"checkShape\"];\n }\n const r = await runStorybook({\n cwd,\n ...(cmdOpts.apps ? { apps: cmdOpts.apps } : {}),\n ...(cmdOpts.actions ? { actions: cmdOpts.actions } : {}),\n ...(cmdOpts.filter ? { filter: cmdOpts.filter } : {}),\n ...(cmdOpts.continueOnFailure ? { continueOnFailure: true } : {}),\n ...(cmdOpts.staticSmoke ? { staticSmoke: cmdOpts.staticSmoke } : {}),\n ...(cmdOpts.runner ? { runner: cmdOpts.runner } : {}),\n ...(cmdOpts.requiredStory ? { requiredStoryIds: cmdOpts.requiredStory } : {}),\n ...(cmdOpts.fromVariants ? { fromVariants: true } : {}),\n ...(cmdOpts.variantsScope ? { fromVariantsScope: cmdOpts.variantsScope } : {}),\n ...(checkShape ? { checkShape } : {}),\n });\n return r.status === \"passed\" || r.status === \"skipped\"\n ? ExitCode.OK\n : ExitCode.REQUIRED_FAILURE;\n });\n },\n );\n\nprogram\n .command(\"perf-smoke\")\n .description(\"Enforce perf budgets against .eval/perf/results.json\")\n .option(\"--results <path>\", \"Path to perf results JSON\")\n .option(\"--optional\", \"Skip silently if perf hasn't been run\")\n .action(async (cmdOpts: { results?: string; optional?: boolean }) => {\n await runWithConfig(async (_config, cwd) => {\n const r = await runPerfSmoke({\n cwd,\n ...(cmdOpts.results ? { resultsPath: cmdOpts.results } : {}),\n ...(cmdOpts.optional ? { optional: true } : {}),\n });\n return r.status === \"passed\" || r.status === \"skipped\"\n ? ExitCode.OK\n : ExitCode.REQUIRED_FAILURE;\n });\n });\n\nprogram\n .command(\"gauntlet\")\n .description(\"Run the configured release gauntlet (composed step sequence)\")\n .option(\"--steps <list>\", \"Comma-separated step list (overrides config)\", (raw) =>\n raw\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean),\n )\n .option(\"--continue-on-failure\", \"Run all steps even when one fails\")\n .action(async (cmdOpts: { steps?: string[]; continueOnFailure?: boolean }) => {\n await runWithConfig(async (config, cwd) => {\n const r = await runGauntlet({\n cwd,\n config,\n ...(cmdOpts.steps ? { steps: cmdOpts.steps } : {}),\n ...(cmdOpts.continueOnFailure !== undefined\n ? { continueOnFailure: cmdOpts.continueOnFailure }\n : {}),\n });\n return r.status === \"passed\" || r.status === \"skipped\"\n ? ExitCode.OK\n : ExitCode.REQUIRED_FAILURE;\n });\n });\n\nprogram\n .command(\"variants [subcommand]\")\n .description(\n \"Print the package's variant matrix (list|missing|published-subpaths|ui|db|storybook-apps)\",\n )\n .option(\"--include-out-of-scope\", \"Include variants marked inScope:false\")\n .option(\"--compact\", \"Emit compact JSON instead of pretty-printed\")\n .option(\n \"--require-all\",\n \"With 'check' subcommand: require every variant (not just required:true) to have an existing packageDir\",\n )\n .action(\n async (\n subcommand: string | undefined,\n cmdOpts: { includeOutOfScope?: boolean; compact?: boolean; requireAll?: boolean },\n ) => {\n const globalOpts = program.opts<{ cwd?: string }>();\n const cwd = resolvePaths(globalOpts.cwd ?? process.cwd()).packageRoot;\n try {\n type VariantsSub = NonNullable<Parameters<typeof runVariants>[0]>[\"subcommand\"];\n const result = runVariants({\n cwd,\n subcommand: (subcommand as VariantsSub) ?? \"list\",\n ...(cmdOpts.includeOutOfScope ? { includeOutOfScope: true } : {}),\n ...(cmdOpts.compact ? { pretty: false } : {}),\n ...(cmdOpts.requireAll ? { requireAll: true } : {}),\n });\n if (!result.ok) {\n process.stderr.write(`${pc.red(\"error:\")} ${result.output}\\n`);\n process.exit(ExitCode.CONFIG_ERROR);\n }\n process.stdout.write(`${result.output}\\n`);\n process.exit(ExitCode.OK);\n } catch (error) {\n process.stderr.write(`${pc.red(\"error:\")} ${(error as Error).message}\\n`);\n process.exit(ExitCode.REQUIRED_FAILURE);\n }\n },\n );\n\nprogram\n .command(\"pnpm-filters <task> [passthrough...]\")\n .description(\"Run a pnpm recursive task with --filter args derived from variants.json\")\n .option(\"--include-missing\", \"Include variants whose packageDir does not exist on disk\")\n .option(\"--implemented-only\", \"Limit fan-out to variants flagged implemented:true\")\n .option(\"--no-if-present\", \"Drop --if-present\")\n .option(\"--parallel\", \"Run filters in parallel (overrides --workspace-concurrency)\")\n .option(\"--workspace-concurrency <n>\", \"Pass --workspace-concurrency=<n> (default 1)\", \"1\")\n .option(\"--print\", \"Print the resolved pnpm invocation and exit\")\n .option(\"--kind <list>\", \"Comma-separated variant kinds to include\", (raw) =>\n raw\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean),\n )\n .option(\"--sequential\", \"Run each variant in turn (one pnpm --filter per call)\")\n .option(\n \"--shared-first <packageDir>\",\n \"When sequential, run this packageDir first (typical: packages/shared)\",\n )\n .option(\n \"--heartbeat-ms <ms>\",\n \"When sequential, log a heartbeat every N ms during a sub-call (default: 0 off)\",\n (raw) => Number(raw),\n )\n .option(\n \"--kind-order <tiers>\",\n \"When sequential, order variant kinds in tiers. Pipe-separated tiers, comma-separated kinds: 'shared|reference,css-variant|library-variant'\",\n )\n .option(\n \"--requires <bins>\",\n \"Comma-separated list of binaries that must be on PATH before fanning out\",\n (raw) =>\n raw\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean),\n )\n .option(\n \"--mode <mode>\",\n \"Execution mode: 'parallel' (default) | 'sequential' | 'shared-then-parallel'\",\n )\n .option(\n \"--prebuild <packageDir>\",\n \"Build this packageDir before the main fan-out (always runs `build` regardless of task). If task=build, the main fan-out skips it.\",\n )\n .action(\n async (\n task: string,\n passthrough: string[],\n cmdOpts: {\n includeMissing?: boolean;\n implementedOnly?: boolean;\n ifPresent?: boolean;\n parallel?: boolean;\n workspaceConcurrency?: string;\n print?: boolean;\n kind?: string[];\n sequential?: boolean;\n sharedFirst?: string;\n heartbeatMs?: number;\n kindOrder?: string;\n requires?: string[];\n mode?: \"parallel\" | \"sequential\" | \"shared-then-parallel\";\n prebuild?: string;\n },\n ) => {\n const globalOpts = program.opts<{ cwd?: string }>();\n const cwd = resolvePaths(globalOpts.cwd ?? process.cwd()).packageRoot;\n try {\n const sequentialKindOrder = cmdOpts.kindOrder\n ? cmdOpts.kindOrder.split(\"|\").map((tier) =>\n tier\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean),\n )\n : undefined;\n const result = await runPnpmFilters({\n cwd,\n task,\n ...(cmdOpts.includeMissing ? { includeMissing: true } : {}),\n ...(cmdOpts.implementedOnly ? { implementedOnly: true } : {}),\n ...(cmdOpts.ifPresent === false ? { ifPresent: false } : {}),\n ...(cmdOpts.parallel ? { parallel: true } : {}),\n ...(cmdOpts.workspaceConcurrency\n ? { workspaceConcurrency: cmdOpts.workspaceConcurrency }\n : {}),\n ...(cmdOpts.print ? { print: true } : {}),\n ...(cmdOpts.kind ? { kinds: cmdOpts.kind } : {}),\n ...(cmdOpts.sequential ? { sequential: true } : {}),\n ...(cmdOpts.sharedFirst ? { sharedFirst: cmdOpts.sharedFirst } : {}),\n ...(cmdOpts.heartbeatMs ? { heartbeatMs: cmdOpts.heartbeatMs } : {}),\n ...(sequentialKindOrder ? { sequentialKindOrder } : {}),\n ...(cmdOpts.requires ? { requires: cmdOpts.requires } : {}),\n ...(cmdOpts.mode ? { mode: cmdOpts.mode } : {}),\n ...(cmdOpts.prebuild ? { prebuild: cmdOpts.prebuild } : {}),\n ...(passthrough.length > 0 ? { passthrough } : {}),\n });\n process.exit(result.status);\n } catch (error) {\n process.stderr.write(`${pc.red(\"error:\")} ${(error as Error).message}\\n`);\n process.exit(ExitCode.REQUIRED_FAILURE);\n }\n },\n );\n\nprogram\n .command(\"run-scripts <scripts...>\")\n .description(\"Run multiple top-level package.json scripts sequentially in this package\")\n .option(\"--continue-on-failure\", \"Run all scripts even when one fails\")\n .option(\"--print\", \"Print the script chain and exit\")\n .action(async (scripts: string[], cmdOpts: { continueOnFailure?: boolean; print?: boolean }) => {\n const globalOpts = program.opts<{ cwd?: string }>();\n const cwd = resolvePaths(globalOpts.cwd ?? process.cwd()).packageRoot;\n try {\n const r = await runScripts({\n cwd,\n scripts,\n ...(cmdOpts.continueOnFailure ? { stopOnFailure: false } : {}),\n ...(cmdOpts.print ? { print: true } : {}),\n });\n process.exit(r.status);\n } catch (error) {\n process.stderr.write(`${pc.red(\"error:\")} ${(error as Error).message}\\n`);\n process.exit(ExitCode.REQUIRED_FAILURE);\n }\n });\n\nprogram\n .command(\"type-check\")\n .description(\"Run per-variant type-check (or lint, or tsc --noEmit fallback)\")\n .option(\"--continue-on-failure\", \"Run all variants even when one fails\")\n .option(\"--exclude-out-of-scope\", \"Skip inScope:false variants (default: include)\")\n .option(\n \"--shared-first <packageDir>\",\n \"Type-check this packageDir first (typical: packages/shared)\",\n )\n .option(\"--print\", \"Print the resolved commands and exit\")\n .action(\n async (cmdOpts: {\n continueOnFailure?: boolean;\n excludeOutOfScope?: boolean;\n sharedFirst?: string;\n print?: boolean;\n }) => {\n const globalOpts = program.opts<{ cwd?: string }>();\n const cwd = resolvePaths(globalOpts.cwd ?? process.cwd()).packageRoot;\n try {\n const r = await runTypeCheck({\n cwd,\n ...(cmdOpts.continueOnFailure ? { continueOnFailure: true } : {}),\n ...(cmdOpts.excludeOutOfScope ? { includeOutOfScope: false } : {}),\n ...(cmdOpts.sharedFirst ? { sharedFirst: cmdOpts.sharedFirst } : {}),\n ...(cmdOpts.print ? { print: true } : {}),\n });\n process.exit(r.status);\n } catch (error) {\n process.stderr.write(`${pc.red(\"error:\")} ${(error as Error).message}\\n`);\n process.exit(ExitCode.REQUIRED_FAILURE);\n }\n },\n );\n\nprogram\n .command(\"size-limit-config\")\n .description(\"Emit size-limit entries derived from variants.json + root exports\")\n .option(\"--compact\", \"Compact JSON output\")\n .option(\n \"--package-dirs <list>\",\n \"Override the exported-packageDir set (comma-separated)\",\n (raw) =>\n raw\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean),\n )\n .action(async (cmdOpts: { compact?: boolean; packageDirs?: string[] }) => {\n const globalOpts = program.opts<{ cwd?: string }>();\n const cwd = resolvePaths(globalOpts.cwd ?? process.cwd()).packageRoot;\n try {\n const r = runSizeLimitConfig({\n cwd,\n ...(cmdOpts.compact ? { pretty: false } : {}),\n ...(cmdOpts.packageDirs ? { packageDirs: cmdOpts.packageDirs } : {}),\n });\n process.stdout.write(`${r.output}\\n`);\n process.exit(ExitCode.OK);\n } catch (error) {\n process.stderr.write(`${pc.red(\"error:\")} ${(error as Error).message}\\n`);\n process.exit(ExitCode.REQUIRED_FAILURE);\n }\n });\n\nprogram\n .command(\"pack-contract\")\n .description(\"pnpm pack --json, expose PACK_CONTRACT_JSON, run a vitest contract config\")\n .requiredOption(\"--test-config <path>\", \"Vitest config with the contract assertions\")\n .option(\"--pack-json <path>\", \"Skip the pack step and use this JSON\")\n .option(\"--test-files <list>\", \"Pass specific test files to vitest (comma-separated)\", (raw) =>\n raw\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean),\n )\n .action(async (cmdOpts: { testConfig: string; packJson?: string; testFiles?: string[] }) => {\n const globalOpts = program.opts<{ cwd?: string }>();\n const cwd = resolvePaths(globalOpts.cwd ?? process.cwd()).packageRoot;\n try {\n const r = runPackContract({\n cwd,\n testConfig: cmdOpts.testConfig,\n ...(cmdOpts.packJson ? { packJson: cmdOpts.packJson } : {}),\n ...(cmdOpts.testFiles ? { testFiles: cmdOpts.testFiles } : {}),\n });\n process.exit(r.status);\n } catch (error) {\n process.stderr.write(`${pc.red(\"error:\")} ${(error as Error).message}\\n`);\n process.exit(ExitCode.REQUIRED_FAILURE);\n }\n });\n\nprogram\n .command(\"lint [passthrough...]\")\n .description(\"Canonical biome lint over root files + variant packageDirs + apps\")\n .option(\"--scope <package|apps|all>\", \"Lint scope (default: all)\")\n .option(\"--apps\", \"Shortcut for --scope apps\")\n .option(\"--command <check|lint|format|ci>\", \"Biome subcommand (default: check)\")\n .option(\"--fix\", \"Pass --write to biome\")\n .option(\"--print\", \"Print the resolved command and exit\")\n .option(\"--implemented-only\", \"Limit variant collection to implemented:true variants\")\n .allowUnknownOption(true)\n .action(\n async (\n passthrough: string[],\n cmdOpts: {\n scope?: \"package\" | \"apps\" | \"all\";\n apps?: boolean;\n command?: \"check\" | \"lint\" | \"format\" | \"ci\";\n fix?: boolean;\n print?: boolean;\n implementedOnly?: boolean;\n },\n ) => {\n const globalOpts = program.opts<{ cwd?: string }>();\n const cwd = resolvePaths(globalOpts.cwd ?? process.cwd()).packageRoot;\n try {\n const r = await runLint({\n cwd,\n ...(cmdOpts.apps\n ? { scope: \"apps\" as const }\n : cmdOpts.scope\n ? { scope: cmdOpts.scope }\n : {}),\n ...(cmdOpts.command ? { command: cmdOpts.command } : {}),\n ...(cmdOpts.fix ? { fix: true } : {}),\n ...(cmdOpts.print ? { print: true } : {}),\n ...(cmdOpts.implementedOnly ? { implementedOnly: true } : {}),\n ...(passthrough.length > 0 ? { passthrough } : {}),\n });\n process.exit(r.exitCode);\n } catch (error) {\n process.stderr.write(`${pc.red(\"error:\")} ${(error as Error).message}\\n`);\n process.exit(ExitCode.REQUIRED_FAILURE);\n }\n },\n );\n\nprogram\n .command(\"coverage\")\n .description(\"Canonical vitest --coverage runner (root + per-package separate passes)\")\n .option(\n \"--separate-frameworks <list>\",\n \"Comma-separated frameworks whose packages get their own vitest pass\",\n (raw) =>\n raw\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean),\n )\n .option(\n \"--separate-package-dirs <list>\",\n \"Comma-separated packageDirs whose tests get their own vitest pass\",\n (raw) =>\n raw\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean),\n )\n .option(\"--no-clean\", \"Skip cleaning coverage/ directories before running\")\n .option(\"--strict\", \"Set GEENIUS_COVERAGE_STRICT=1 for child processes\")\n .action(\n async (cmdOpts: {\n separateFrameworks?: string[];\n separatePackageDirs?: string[];\n clean?: boolean;\n strict?: boolean;\n }) => {\n const globalOpts = program.opts<{ cwd?: string }>();\n const cwd = resolvePaths(globalOpts.cwd ?? process.cwd()).packageRoot;\n try {\n const r = await runCoverage({\n cwd,\n ...(cmdOpts.separateFrameworks ? { separateFrameworks: cmdOpts.separateFrameworks } : {}),\n ...(cmdOpts.separatePackageDirs\n ? { separatePackageDirs: cmdOpts.separatePackageDirs }\n : {}),\n ...(cmdOpts.clean === false ? { noClean: true } : {}),\n ...(cmdOpts.strict ? { strict: true } : {}),\n });\n process.exit(r.exitCode);\n } catch (error) {\n process.stderr.write(`${pc.red(\"error:\")} ${(error as Error).message}\\n`);\n process.exit(ExitCode.REQUIRED_FAILURE);\n }\n },\n );\n\nprogram\n .command(\"e2e [passthrough...]\")\n .description(\"Playwright runner with ephemeral port reservation + variant project filters\")\n .option(\"--projects\", \"Emit --project=<variant>-<browser> filters from variants.json\")\n .option(\"--all-browsers\", \"With --projects: include every browser declared on each variant\")\n .option(\"--browser <name>\", \"With --projects: browser to use (default: chromium)\")\n .option(\n \"--env-prefix <prefix>\",\n \"Env-var prefix for port reservation (default: derived from name)\",\n )\n .option(\"--print\", \"Print resolved env + command and exit\")\n .action(\n async (\n passthrough: string[],\n cmdOpts: {\n projects?: boolean;\n allBrowsers?: boolean;\n browser?: string;\n envPrefix?: string;\n print?: boolean;\n },\n ) => {\n const globalOpts = program.opts<{ cwd?: string }>();\n const cwd = resolvePaths(globalOpts.cwd ?? process.cwd()).packageRoot;\n try {\n const r = await runE2E({\n cwd,\n ...(cmdOpts.projects ? { projects: true } : {}),\n ...(cmdOpts.allBrowsers ? { allBrowsers: true } : {}),\n ...(cmdOpts.browser ? { browser: cmdOpts.browser } : {}),\n ...(cmdOpts.envPrefix ? { envPrefix: cmdOpts.envPrefix } : {}),\n ...(cmdOpts.print ? { print: true } : {}),\n ...(passthrough.length > 0 ? { passthrough } : {}),\n });\n process.exit(r.exitCode);\n } catch (error) {\n process.stderr.write(`${pc.red(\"error:\")} ${(error as Error).message}\\n`);\n process.exit(ExitCode.REQUIRED_FAILURE);\n }\n },\n );\n\nprogram\n .command(\"vitest-browser-prepare\")\n .description(\"Print the vitest browser-mode prepare script (also importable from the package)\")\n .action(() => {\n runVitestBrowserPrepare({ print: true });\n process.exit(ExitCode.OK);\n });\n\nprogram\n .command(\"patch-dts\")\n .description(\"Post-build dist patcher: .d.ts rewrites + Solid web/jsx-runtime fixes\")\n .option(\"--dir <path>\", \"Directory to walk (default: dist)\")\n .option(\n \"--files <list>\",\n \"Explicit file list to patch (comma-separated, overrides --dir)\",\n (raw) =>\n raw\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean),\n )\n .option(\n \"--rewrite <from=to>\",\n \"Plain string replaceAll in .d.ts files (repeatable)\",\n (raw, prev: { from: string; to: string }[] = []) => {\n const idx = raw.indexOf(\"=\");\n if (idx <= 0) throw new Error(`--rewrite must be '<from>=<to>', got: ${raw}`);\n prev.push({ from: raw.slice(0, idx), to: raw.slice(idx + 1) });\n return prev;\n },\n )\n .option(\"--solid\", \"Apply Solid web import + delegateEvents window guard to .js files\")\n .option(\"--solid-jsx\", \"Rewrite solid-js/jsx-runtime → solid-js/h/jsx-runtime in .js files\")\n .action(\n async (cmdOpts: {\n dir?: string;\n files?: string[];\n rewrite?: { from: string; to: string }[];\n solid?: boolean;\n solidJsx?: boolean;\n }) => {\n const globalOpts = program.opts<{ cwd?: string }>();\n const cwd = resolvePaths(globalOpts.cwd ?? process.cwd()).packageRoot;\n try {\n const r = await runPatchDts({\n cwd,\n ...(cmdOpts.dir ? { dir: cmdOpts.dir } : {}),\n ...(cmdOpts.files ? { files: cmdOpts.files } : {}),\n ...(cmdOpts.rewrite ? { rewrites: cmdOpts.rewrite } : {}),\n ...(cmdOpts.solid ? { solid: true } : {}),\n ...(cmdOpts.solidJsx ? { solidJsx: true } : {}),\n });\n process.exit(\n r.status === \"skipped\" || r.status === \"passed\" ? ExitCode.OK : ExitCode.REQUIRED_FAILURE,\n );\n } catch (error) {\n process.stderr.write(`${pc.red(\"error:\")} ${(error as Error).message}\\n`);\n process.exit(ExitCode.REQUIRED_FAILURE);\n }\n },\n );\n\nprogram\n .command(\"db-migrations\")\n .description(\"Run migration tests across db-provider variants flagged tests.migrations:true\")\n .option(\"--only <list>\", \"Comma-separated provider names to include\", (raw) =>\n raw\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean),\n )\n .option(\"--continue-on-failure\", \"Run every provider even after a failure\")\n .option(\"--pattern <pattern>\", \"vitest -t pattern (default: migration)\")\n .action(async (cmdOpts: { only?: string[]; continueOnFailure?: boolean; pattern?: string }) => {\n const globalOpts = program.opts<{ cwd?: string }>();\n const cwd = resolvePaths(globalOpts.cwd ?? process.cwd()).packageRoot;\n try {\n const r = await runDbMigrations({\n cwd,\n ...(cmdOpts.only ? { only: cmdOpts.only } : {}),\n ...(cmdOpts.continueOnFailure ? { continueOnFailure: true } : {}),\n ...(cmdOpts.pattern ? { pattern: cmdOpts.pattern } : {}),\n });\n process.exit(r.exitCode);\n } catch (error) {\n process.stderr.write(`${pc.red(\"error:\")} ${(error as Error).message}\\n`);\n process.exit(ExitCode.REQUIRED_FAILURE);\n }\n });\n\nprogram\n .command(\"sanitize-dist\")\n .description(\"Strip source-path comments, sourcemap URLs, and Solid JSX runtime from dist/\")\n .option(\"--dir <path>\", \"Directory to walk (default: dist)\")\n .option(\"--no-comments\", \"Skip the source-path comment strip (on by default)\")\n .option(\"--maps\", \"Strip sourceMappingURL comments\")\n .option(\"--fix-solid-jsx-runtime\", \"Rewrite solid-js/jsx-runtime → solid-js/h/jsx-runtime\")\n .action(\n async (cmdOpts: {\n dir?: string;\n comments?: boolean;\n maps?: boolean;\n fixSolidJsxRuntime?: boolean;\n }) => {\n const globalOpts = program.opts<{ cwd?: string }>();\n const cwd = resolvePaths(globalOpts.cwd ?? process.cwd()).packageRoot;\n try {\n const r = await runSanitizeDist({\n cwd,\n ...(cmdOpts.dir ? { dir: cmdOpts.dir } : {}),\n ...(cmdOpts.comments === false ? { comments: false } : {}),\n ...(cmdOpts.maps ? { maps: true } : {}),\n ...(cmdOpts.fixSolidJsxRuntime ? { fixSolidJsxRuntime: true } : {}),\n });\n process.exit(\n r.status === \"skipped\" || r.status === \"passed\" ? ExitCode.OK : ExitCode.REQUIRED_FAILURE,\n );\n } catch (error) {\n process.stderr.write(`${pc.red(\"error:\")} ${(error as Error).message}\\n`);\n process.exit(ExitCode.REQUIRED_FAILURE);\n }\n },\n );\n\nprogram\n .command(\"bundle-budgets\")\n .description(\"Gzip-check dist runtime assets against variants.json bundleBudget per variant\")\n .option(\n \"--assets <list>\",\n \"Comma-separated runtime asset basenames (default: index.js,index.css)\",\n (raw) =>\n raw\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean),\n )\n .option(\"--include-unimplemented\", \"Include variants with implemented:false\")\n .option(\"--optional\", \"Skip silently when no variant declares a bundleBudget\")\n .action(\n async (cmdOpts: { assets?: string[]; includeUnimplemented?: boolean; optional?: boolean }) => {\n const globalOpts = program.opts<{ cwd?: string }>();\n const cwd = resolvePaths(globalOpts.cwd ?? process.cwd()).packageRoot;\n try {\n const r = await runBundleBudgets({\n cwd,\n ...(cmdOpts.assets ? { assets: cmdOpts.assets } : {}),\n ...(cmdOpts.includeUnimplemented ? { implementedOnly: false } : {}),\n ...(cmdOpts.optional ? { optional: true } : {}),\n });\n process.exit(r.exitCode);\n } catch (error) {\n process.stderr.write(`${pc.red(\"error:\")} ${(error as Error).message}\\n`);\n process.exit(ExitCode.REQUIRED_FAILURE);\n }\n },\n );\n\nprogram\n .command(\"convex-codegen\")\n .description(\"Generate Convex _generated/ shims (server, api, dataModel)\")\n .option(\"--src <dir>\", \"Convex source dir (default: packages/convex/src or src/)\")\n .option(\"--check\", \"Exit 1 if any file would be created or changed\")\n .option(\"--clean\", \"Delete the _generated/ directory and exit\")\n .action(async (cmdOpts: { src?: string; check?: boolean; clean?: boolean }) => {\n const globalOpts = program.opts<{ cwd?: string }>();\n const cwd = resolvePaths(globalOpts.cwd ?? process.cwd()).packageRoot;\n try {\n const r = await runConvexCodegen({\n cwd,\n ...(cmdOpts.src ? { src: cmdOpts.src } : {}),\n ...(cmdOpts.check ? { check: true } : {}),\n ...(cmdOpts.clean ? { clean: true } : {}),\n });\n process.exit(r.exitCode);\n } catch (error) {\n process.stderr.write(`${pc.red(\"error:\")} ${(error as Error).message}\\n`);\n process.exit(ExitCode.REQUIRED_FAILURE);\n }\n });\n\nprogram\n .command(\"convex-build [passthrough...]\")\n .description(\"Convex sub-package build: codegen + tsup\")\n .option(\"--src <dir>\", \"Convex source dir (default: src)\")\n .option(\"--no-codegen\", \"Skip codegen, just run the builder\")\n .option(\"--no-build\", \"Run codegen only\")\n .option(\"--clean\", \"Clean _generated/ instead of building\")\n .option(\"--builder <tsup|tsc>\", \"Builder to invoke (default: tsup)\")\n .action(\n async (\n passthrough: string[],\n cmdOpts: {\n src?: string;\n codegen?: boolean;\n build?: boolean;\n clean?: boolean;\n builder?: \"tsup\" | \"tsc\";\n },\n ) => {\n const globalOpts = program.opts<{ cwd?: string }>();\n const cwd = resolvePaths(globalOpts.cwd ?? process.cwd()).packageRoot;\n try {\n const r = await runConvexBuild({\n cwd,\n ...(cmdOpts.src ? { src: cmdOpts.src } : {}),\n ...(cmdOpts.codegen === false ? { noCodegen: true } : {}),\n ...(cmdOpts.build === false ? { noBuild: true } : {}),\n ...(cmdOpts.clean ? { clean: true } : {}),\n ...(cmdOpts.builder ? { builder: cmdOpts.builder } : {}),\n ...(passthrough.length > 0 ? { passthrough } : {}),\n });\n process.exit(r.exitCode);\n } catch (error) {\n process.stderr.write(`${pc.red(\"error:\")} ${(error as Error).message}\\n`);\n process.exit(ExitCode.REQUIRED_FAILURE);\n }\n },\n );\n\nawait program.parseAsync(process.argv);\n\n/* ───────── Wrapper that loads config + handles errors uniformly ───────── */\n\nasync function runWithConfig(\n action: (\n config: Awaited<ReturnType<typeof loadConfig>>[\"config\"],\n cwd: string,\n ) => Promise<ExitCode>,\n): Promise<void> {\n const globalOpts = program.opts<{ cwd?: string }>();\n const startCwd = globalOpts.cwd ?? process.cwd();\n // Resolve the package root so config loads work when invoked from a\n // subdirectory (e.g. `packages/<variant>` build scripts).\n const cwd = resolvePaths(startCwd).packageRoot;\n\n try {\n const { config } = loadConfig(cwd);\n const code = await action(config, cwd);\n process.exit(code);\n } catch (error) {\n if (error instanceof ReleaseToolkitError) {\n process.stderr.write(`${pc.red(\"error:\")} ${error.message}\\n`);\n if (error.hint) process.stderr.write(`${pc.dim(\"hint:\")} ${error.hint}\\n`);\n process.exit(error.code);\n }\n process.stderr.write(\n `${pc.red(\"internal error:\")} ${(error as Error).stack ?? String(error)}\\n`,\n );\n process.exit(ExitCode.INTERNAL_BUG);\n }\n}\n"]}