/** * `vigiles` (the package root) — the **free** testing surface: everything you can * run without a model call, and therefore without a bill. * * This is the front door. There is no `vigiles/test` subpath: the bare package * name IS the testing surface, because a second name for the same door is the * duplication this reorganisation removed (the old `.` + `./spec` pair pointed at * one module under two names). A subpath is warranted when something genuinely * DIFFERENT lives behind it — another runtime, another driver, another protocol. * Here the one real difference is whether a call can spend money, so there are * exactly two doors: this one, and [`vigiles/eval`](./eval-surface.ts). * * ## What replaced what * * The old split was by TEST TIER — `vigiles/unit`, `vigiles/integration`, * `vigiles/e2e`, `vigiles/testing`. Tiers are a property of test-file layout and * runner config, not of a module graph: this repo already expresses them as * vitest projects (`test:unit`, `test:integration`, `test:e2e`), so the exports * map was a second, competing implementation of the same idea. `src/e2e.ts` had * degenerated to `export * from "./integration.js"` — a barrel adding zero * symbols, which its own docstring called "the definition of a non-tier". * * ## Two honest costs of the new split * * **1. The type coupling crosses the boundary and cannot be removed.** About two * dozen helpers here — `assertImproves`, `assertNoRegression`, `assertReliable`, * `assertSignificant`, `assertTriggerRate`, `reliable`, `improvement`, * `significantlyBeats`, `compareArms`, `diffReports`, `diffToJUnit`, * `formatBaselineDiff`, `parseBaselineFile`, `readBaseline`, `toBaselineFile`, * `writeBaseline`, `cost`, `latency`, `tokens`, `inputTokens`, `outputTokens`, * `cacheTokens`, plus `formatEvalReport` / `formatCheckReport` / * `formatTriggerRateReport` / `checkReportToJUnit` / `assertRates` — operate on * eval RESULTS while spending nothing themselves. They belong on the free path. * Their TYPES (`EvalReport`, `CheckReport`, `TriggerRateReport`, `Metrics`, …) * are defined on the paid side. So those types are re-exported from BOTH barrels: * a user of the free surface must never import `vigiles/eval` for a type alone. * The duplication is deliberate and is the price of splitting on cost. * * **2. Free is not the same as fast.** The old "real CLI, no API key" tier * (`vigiles/integration`) collapses into this barrel, so the import path no longer * warns you that `runHarnessTest` spawns a real `claude` binary under bubblewrap * and can take ~40 seconds. Nothing here bills you; plenty here is slow. Duration * now lives where duration always lived in practice — in the runner config * (`--project integration`), not in the import. * * **What was lost, stated plainly:** the symmetry with the CLI verbs is now * one-sided. `vigiles/eval` rhymes with `vigiles eval`, but the free half answers * to the plain package name rather than to `vigiles test`. That is accepted, not * overlooked. `@playwright/test` — an end-to-end tool by definition — ships no * subpath naming a test type at all, and keeps the whole fast/slow/expensive * distinction in its config rather than in its imports. */ export { recordCheck } from "./check-count.js"; export { makeTmpDir, cleanupTmpDir } from "./core/tmp-root.js"; export { runScript } from "./run-script.js"; export type { RunScriptOptions, ScriptRunResult } from "./run-script.js"; export { runHook, parseHookOutput, decideHook, propertyHook, fileToolEvents, egressRoutes, } from "./run-hook.js"; export type { HookRunResult, BlockMechanism, HookDelivery, DeliveryChannel, StrandedOutput, RunHookOptions, HookInput, HookOutput, HookPropertyResult, FileToolEventOptions, } from "./run-hook.js"; export * from "./harness-assert.js"; export { experimental_emitTool, experimental_parseEmitted, experimental_assertEmittedOk, type EmitFieldSchema, type EmitObjectSchema, type EmitPropertySchema, type EmitTrackSchema, type EmitToolDefinition, type ExperimentalEmitTool, } from "./experimental-emit.js"; export { loadHook } from "./load-hook.js"; export { experimental_hookState } from "./hook-state-store.js"; export type { HookStateHandle, SeedStateOptions } from "./hook-state-store.js"; export type { StateFact, Duration } from "./core/hook-state.js"; export { evalChecks, assertChecks, tool, toolWith, notTool, onlyTools, skill, output, experimental_eachReply, experimental_replyCount, hookFired, received, turns, wrote, didNotWrite, subagent, blocked, allowed, mcp, cost, latency, tokens, inputTokens, outputTokens, cacheTokens, } from "./check.js"; export type { ArgMatcher, Check, CheckJSON, CheckResult, JudgeFn, } from "./check.js"; export { DISASTER_CATALOG, verifyGuardrail, unblockedDisasters, assertBlocksDisasters, formatGuardrailReport, experimental_alternateSpellings, } from "./guardrail-check.js"; export type { DisasterEvent, DisasterCategory, GuardrailResult, VerifyGuardrailOptions, } from "./guardrail-check.js"; export { experimental_verifyPluginGuards, experimental_formatPluginGuardReport, } from "./verify-plugin-guards.js"; export type { PluginGuardReport, SweptHook, SweptHookOutcome, NonCommandHookAction, VerifyPluginGuardsOptions, } from "./verify-plugin-guards.js"; export { experimental_stub } from "./stub.js"; export type { StubCalledBounds } from "./stub.js"; export type { ArgvPattern, ArgvRest, ArgvToken, StubAnswer, StubCall, StubOutcome, StubReply, StubRule, ToolStub, } from "./core/stub-rules.js"; export type { HomeFiles, HomeSeed, RunEnv } from "./core/run-env.js"; export { runHarnessTest, runHarness, parseToolCalls, parseSubagents, parseResultEvent, parseOutput, parseHooks, decideSandbox, specTrusted, sandboxAvailable, } from "./harness-test.js"; export { experimental_outputStyleArms } from "./output-style-arms.js"; export type { OutputStyleArms } from "./output-style-arms.js"; export type { HarnessTestSpec, Trace, SubagentTrace, HarnessTestResult, RunHarnessTestOptions, ModelTurn, ModelRequest, ToolCall, HookFire, HarnessTestDriver, SandboxMode, } from "./harness-test.js"; export { commandsIn, mustInclude, mustNotInclude } from "./doc-commands.js"; export type { DocCommand } from "./doc-commands.js"; export { skillContract } from "./skill-contract.js"; export type { SkillContract, SkillContractOptions } from "./skill-contract.js"; export { compareContainment, formatContainment, } from "./trigger-containment.js"; export type { ContainmentInput, ContainmentVerdict, } from "./trigger-containment.js"; export { defineEval } from "./eval-define.js"; export type { EvalDefinition, EvalDefinitionInput, EvalHooks, EvalKind, EvalMeasurements, EvalReports, SelectionMatrixSpec, } from "./eval-define.js"; export { assertRates, assertPromptDiversity, checkPromptDiversity, checkReportToJUnit, formatCheckReport, formatEvalReport, formatTriggerRateReport, parseClaudeRun, stubSkillBody, } from "./eval.js"; export type { EvalArm, EvalDriver, EvalSpec, EvalReport, EvalUsage, MeasureSpec, ArmsMeasureSpec, ArmReport, ArmUsage, ArmsCheckReport, CheckRate, CheckReport, MetricStat, Metrics, ModelOutputParser, ParsedModelRun, PromptDiversityIssue, PromptTriggerStat, RunContext, RunOut, SelectionTrialResult, TriggerRateReport, TriggerRateSpec, AgentRunArgs, AgentRunner, } from "./eval.js"; export { experimental_startServices, experimental_withServices, type ServiceSpec, type ServiceReady, type ServiceReset, type ServiceHandle, type ServiceSession, type ContainerRuntime, } from "./services.js"; export { experimental_dockerRuntime, experimental_makeDockerRuntime, type DockerExec, type NetProbe, } from "./services-docker.js"; //# sourceMappingURL=test.d.ts.map