@vitest-agent/sdk 7.0.4 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/dispatch.d.ts +0 -6
  2. package/errors/AgentErrors.js +1 -2
  3. package/errors/DataStoreError.js +1 -2
  4. package/errors/DiscoveryError.js +1 -2
  5. package/errors/PathResolutionError.js +1 -2
  6. package/errors/ProjectIdentityError.js +1 -2
  7. package/errors/RunContextError.js +1 -2
  8. package/errors/TddErrors.js +1 -2
  9. package/exit-code-for-tag.js +1 -2
  10. package/index.d.ts +108 -141
  11. package/index.js +2 -2
  12. package/internal-inject-env.js +1 -2
  13. package/package.json +2 -2
  14. package/schemas/5.0/run.json +75 -135
  15. package/schemas/Agent.js +1 -2
  16. package/schemas/AgentReport.js +1 -2
  17. package/schemas/Baselines.js +1 -2
  18. package/schemas/CacheManifest.js +1 -2
  19. package/schemas/ChannelEvent.js +1 -2
  20. package/schemas/Common.js +1 -2
  21. package/schemas/Config.js +73 -7
  22. package/schemas/ConsoleLeaks.js +1 -2
  23. package/schemas/Coverage.js +1 -2
  24. package/schemas/CoverageLevel.js +1 -2
  25. package/schemas/CoverageTargets.js +1 -2
  26. package/schemas/History.js +1 -2
  27. package/schemas/Identity.js +1 -2
  28. package/schemas/Options.js +32 -5
  29. package/schemas/RenderState.js +1 -2
  30. package/schemas/RunEvent.js +1 -2
  31. package/schemas/RunReportFile.js +1 -2
  32. package/schemas/StrayOutput.js +1 -2
  33. package/schemas/Tdd.js +1 -2
  34. package/schemas/TestArtifacts.js +1 -2
  35. package/schemas/Thresholds.js +1 -2
  36. package/schemas/Transport.js +1 -2
  37. package/schemas/Trends.js +1 -2
  38. package/schemas/turns/FileEditPayload.js +1 -2
  39. package/schemas/turns/HookFirePayload.js +1 -2
  40. package/schemas/turns/HypothesisPayload.js +1 -2
  41. package/schemas/turns/NotePayload.js +1 -2
  42. package/schemas/turns/ToolCallPayload.js +1 -2
  43. package/schemas/turns/ToolResultPayload.js +1 -2
  44. package/schemas/turns/UserPromptPayload.js +1 -2
  45. package/schemas/turns/index.js +1 -2
  46. package/sidecar-dispatch.js +1 -2
  47. package/utils/ansi.js +1 -2
  48. package/utils/build-report.js +1 -2
  49. package/utils/canonicalize-git-url.js +1 -2
  50. package/utils/classify-test.js +1 -2
  51. package/utils/coerce-error-text.js +1 -2
  52. package/utils/compress-lines.js +1 -2
  53. package/utils/compute-trend.js +1 -2
  54. package/utils/console-leaks.js +1 -2
  55. package/utils/detect-non-default-discover-strategy.js +1 -2
  56. package/utils/detect-pm.js +1 -2
  57. package/utils/detect-timeout.js +1 -2
  58. package/utils/format-console.js +1 -2
  59. package/utils/format-fatal-error.js +1 -2
  60. package/utils/format-gfm.js +1 -2
  61. package/utils/format-scoped-coverage-note.js +1 -2
  62. package/utils/function-boundary.js +1 -2
  63. package/utils/hyperlink.js +1 -2
  64. package/utils/match-vitest-command.js +1 -2
  65. package/utils/normalize-workspace-key.js +1 -2
  66. package/utils/posix-path.js +1 -2
  67. package/utils/probe-host-metadata.js +1 -2
  68. package/utils/safe-filename.js +1 -2
  69. package/utils/stray-output.js +1 -2
  70. package/utils/test-location.js +1 -2
  71. package/utils/validate-coverage-targets-shape.js +1 -2
  72. package/utils/validate-phase-transition.js +1 -2
  73. package/version.js +2 -3
package/index.d.ts CHANGED
@@ -1,5 +1,4 @@
1
- import { PubSub, Schema } from "effect";
2
- //#region src/schemas/Coverage.d.ts
1
+ import { Option, PubSub, Schema } from "effect";
3
2
  /**
4
3
  * Aggregate coverage percentages across four istanbul metrics.
5
4
  * @public
@@ -174,8 +173,6 @@ export declare const CoverageReport: Schema.Struct<{
174
173
  }>;
175
174
  /** @public */
176
175
  export type CoverageReport = typeof CoverageReport.Type;
177
- //#endregion
178
- //#region src/schemas/RenderState.d.ts
179
176
  /**
180
177
  * Per-test record accumulated as `TestStarted` / `TestFinished` events arrive.
181
178
  * @public
@@ -520,8 +517,6 @@ export type RenderState = typeof RenderState.Type;
520
517
  * @public
521
518
  */
522
519
  export declare const initialRenderState: RenderState;
523
- //#endregion
524
- //#region src/contracts/dispatcher.d.ts
525
520
  /**
526
521
  * The four run shapes the dispatcher distinguishes.
527
522
  *
@@ -643,8 +638,6 @@ export interface CellOptions {
643
638
  */
644
639
  readonly osc8: (url: string, label: string) => string;
645
640
  }
646
- //#endregion
647
- //#region src/formatters/types.d.ts
648
641
  /**
649
642
  * One unit of rendered reporter output, tagged by where it goes.
650
643
  *
@@ -668,8 +661,6 @@ export type RenderedOutput = {
668
661
  readonly content: string;
669
662
  readonly contentType: string;
670
663
  };
671
- //#endregion
672
- //#region src/schemas/AgentReport.d.ts
673
664
  /**
674
665
  * Aggregate test run statistics.
675
666
  * @public
@@ -958,8 +949,6 @@ export declare const AgentReport: Schema.Struct<{
958
949
  }>;
959
950
  /** @public */
960
951
  export type AgentReport = typeof AgentReport.Type;
961
- //#endregion
962
- //#region src/schemas/Common.d.ts
963
952
  /**
964
953
  * Possible states for an individual test case.
965
954
  * @public
@@ -1074,8 +1063,6 @@ export declare const ReportError: Schema.Struct<{
1074
1063
  }>;
1075
1064
  /** @public */
1076
1065
  export type ReportError = typeof ReportError.Type;
1077
- //#endregion
1078
- //#region src/schemas/RunEvent.d.ts
1079
1066
  /**
1080
1067
  * Coverage metric whose threshold can be violated independently.
1081
1068
  * @public
@@ -1366,8 +1353,6 @@ export type RunEvent = typeof RunEvent.Type;
1366
1353
  * @public
1367
1354
  */
1368
1355
  export type RunEventByTag = { [E in RunEvent as E["_tag"]]: E; };
1369
- //#endregion
1370
- //#region src/schemas/Thresholds.d.ts
1371
1356
  /**
1372
1357
  * Per-metric threshold values. All optional -- only set metrics are enforced.
1373
1358
  * @public
@@ -1467,8 +1452,6 @@ export declare const ResolvedThresholds: Schema.Struct<{
1467
1452
  }>;
1468
1453
  /** @public */
1469
1454
  export type ResolvedThresholds = typeof ResolvedThresholds.Type;
1470
- //#endregion
1471
- //#region src/schemas/Transport.d.ts
1472
1455
  /**
1473
1456
  * Transport binding for the persistence layer.
1474
1457
  *
@@ -1483,8 +1466,6 @@ export declare const Transport: Schema.Union<readonly [Schema.Struct<{
1483
1466
  }>]>;
1484
1467
  /** @public */
1485
1468
  export type Transport = typeof Transport.Type;
1486
- //#endregion
1487
- //#region src/contracts/reporter.d.ts
1488
1469
  /**
1489
1470
  * Config the plugin computes from its own options + Vitest's resolved config,
1490
1471
  * then hands to the reporter factory inside {@link ReporterKit}.
@@ -1536,6 +1517,21 @@ export interface ResolvedReporterConfig {
1536
1517
  * @internal
1537
1518
  */
1538
1519
  readonly coverageMode: "full" | "ui-only";
1520
+ /**
1521
+ * Whether this run is recorded in the SQLite `data.db` (issue #625).
1522
+ * `false` when the user passed `AgentPlugin({ persist: false })` or
1523
+ * the `VITEST_AGENT_PERSIST` operator override turned persistence
1524
+ * off: the run still renders, but classifications are empty and
1525
+ * coverage carries no baseline delta or trend, because there is no
1526
+ * history to read. Independent of `coverageMode` — a UI-only run
1527
+ * (`coverage.enabled: false`) skips persistence too, with this field
1528
+ * still reporting what the user asked for.
1529
+ *
1530
+ * The plugin always populates it; it is optional only because a
1531
+ * consumer constructing `ResolvedReporterConfig` by hand may omit it,
1532
+ * in which case treat it as `true`.
1533
+ */
1534
+ readonly persist?: boolean;
1539
1535
  readonly detail: DetailLevel;
1540
1536
  readonly noColor: boolean;
1541
1537
  readonly runCommand?: string;
@@ -1696,8 +1692,6 @@ export interface VitestAgentReporter {
1696
1692
  * @public
1697
1693
  */
1698
1694
  export type VitestAgentReporterFactory = (kit: ReporterKit) => VitestAgentReporter | ReadonlyArray<VitestAgentReporter>;
1699
- //#endregion
1700
- //#region src/schemas/Identity.d.ts
1701
1695
  /**
1702
1696
  * Canonical UUID for an LLM agent invocation. Generated server-side at
1703
1697
  * `register_agent` time. Stable across transport reconnects within an
@@ -1770,8 +1764,6 @@ export type ActorType = typeof ActorType.Type;
1770
1764
  export declare const HostKind: Schema.Literals<readonly ["claude-code", "claude-desktop", "cursor", "goose", "chatgpt", "mcp-inspector", "unknown"]>;
1771
1765
  /** @public */
1772
1766
  export type HostKind = typeof HostKind.Type;
1773
- //#endregion
1774
- //#region src/errors/AgentErrors.d.ts
1775
1767
  declare const AgentNotFoundError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
1776
1768
  readonly _tag: "AgentNotFoundError";
1777
1769
  } & Readonly<A>;
@@ -1853,8 +1845,6 @@ export declare class SidecarTimeoutError extends SidecarTimeoutError_base<{
1853
1845
  readonly timeoutMs: number;
1854
1846
  });
1855
1847
  }
1856
- //#endregion
1857
- //#region src/errors/DataStoreError.d.ts
1858
1848
  declare const DataStoreError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
1859
1849
  readonly _tag: "DataStoreError";
1860
1850
  } & Readonly<A>;
@@ -1886,8 +1876,6 @@ export declare class DataStoreError extends DataStoreError_base<{
1886
1876
  * @public
1887
1877
  */
1888
1878
  export declare const extractSqlReason: (e: unknown) => string;
1889
- //#endregion
1890
- //#region src/errors/DiscoveryError.d.ts
1891
1879
  declare const DiscoveryError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
1892
1880
  readonly _tag: "DiscoveryError";
1893
1881
  } & Readonly<A>;
@@ -1906,8 +1894,6 @@ export declare class DiscoveryError extends DiscoveryError_base<{
1906
1894
  readonly reason: string;
1907
1895
  });
1908
1896
  }
1909
- //#endregion
1910
- //#region src/errors/PathResolutionError.d.ts
1911
1897
  declare const PathResolutionError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
1912
1898
  readonly _tag: "PathResolutionError";
1913
1899
  } & Readonly<A>;
@@ -1928,8 +1914,6 @@ export declare class PathResolutionError extends PathResolutionError_base<{
1928
1914
  readonly reason: string;
1929
1915
  });
1930
1916
  }
1931
- //#endregion
1932
- //#region src/errors/ProjectIdentityError.d.ts
1933
1917
  /**
1934
1918
  * One source the resolver tried while looking for project identity.
1935
1919
  *
@@ -1965,8 +1949,6 @@ export declare class ProjectIdentityNotResolvableError extends ProjectIdentityNo
1965
1949
  readonly tried: ReadonlyArray<ProjectIdentityCandidate>;
1966
1950
  });
1967
1951
  }
1968
- //#endregion
1969
- //#region src/errors/RunContextError.d.ts
1970
1952
  declare const GitCommandError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
1971
1953
  readonly _tag: "GitCommandError";
1972
1954
  } & Readonly<A>;
@@ -2002,8 +1984,6 @@ declare const ProbeMissError_base: new <A extends Record<string, any> = {}>(args
2002
1984
  export declare class ProbeMissError extends ProbeMissError_base<{
2003
1985
  readonly probe: string;
2004
1986
  }> {}
2005
- //#endregion
2006
- //#region src/errors/TddErrors.d.ts
2007
1987
  declare const GoalNotFoundError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
2008
1988
  readonly _tag: "GoalNotFoundError";
2009
1989
  } & Readonly<A>;
@@ -2081,8 +2061,6 @@ export declare class IllegalStatusTransitionError extends IllegalStatusTransitio
2081
2061
  readonly reason: string;
2082
2062
  });
2083
2063
  }
2084
- //#endregion
2085
- //#region src/schemas/Agent.d.ts
2086
2064
  declare const Agent_base: Schema.Class<Agent, Schema.TaggedStruct<"Agent", {
2087
2065
  readonly agentId: Schema.brand<Schema.String, "AgentId">;
2088
2066
  readonly sessionId: Schema.Number;
@@ -2139,8 +2117,6 @@ export interface AgentTreeNode {
2139
2117
  readonly agent: Agent;
2140
2118
  readonly children: ReadonlyArray<AgentTreeNode>;
2141
2119
  }
2142
- //#endregion
2143
- //#region src/schemas/Baselines.d.ts
2144
2120
  /**
2145
2121
  * Coverage baselines -- the auto-ratcheting high-water mark.
2146
2122
  * @public
@@ -2168,8 +2144,6 @@ export declare const CoverageBaselines: Schema.Struct<{
2168
2144
  }>;
2169
2145
  /** @public */
2170
2146
  export type CoverageBaselines = typeof CoverageBaselines.Type;
2171
- //#endregion
2172
- //#region src/schemas/CacheManifest.d.ts
2173
2147
  /**
2174
2148
  * A single project entry in the cache manifest.
2175
2149
  * @public
@@ -2200,8 +2174,6 @@ export declare const CacheManifest: Schema.Struct<{
2200
2174
  }>;
2201
2175
  /** @public */
2202
2176
  export type CacheManifest = typeof CacheManifest.Type;
2203
- //#endregion
2204
- //#region src/schemas/ChannelEvent.d.ts
2205
2177
  /** @public */
2206
2178
  export declare const SessionOutcome: Schema.Literals<readonly ["succeeded", "blocked", "abandoned"]>;
2207
2179
  /** @public */
@@ -2438,18 +2410,46 @@ export type ChannelEvent = typeof ChannelEvent.Type;
2438
2410
  export declare const BehaviorScopedEventTypes: readonly ["behavior_started", "phase_transition", "behavior_completed", "behavior_abandoned", "blocked"];
2439
2411
  /** @public */
2440
2412
  export type BehaviorScopedEventType = (typeof BehaviorScopedEventTypes)[number];
2441
- //#endregion
2442
- //#region src/schemas/Config.d.ts
2413
+ declare const RetentionConfig_base: Schema.Class<RetentionConfig, Schema.Struct<{
2414
+ readonly enabled: Schema.optionalKey<Schema.Boolean>;
2415
+ readonly keepRuns: Schema.optionalKey<Schema.Int>;
2416
+ readonly maxAgeDays: Schema.optionalKey<Schema.Int>;
2417
+ }>, {}>;
2418
+ /**
2419
+ * The optional `[retention]` table of `vitest-agent.config.toml`: how many
2420
+ * `test_runs` rows (and their cascaded modules, cases, errors, coverage
2421
+ * rows) the per-project `data.db` keeps.
2422
+ *
2423
+ * Every field is optional. An absent table means the default policy
2424
+ * (`RunRetentionPolicy.DEFAULT_KEEP_RUNS` newest runs per project, no age
2425
+ * limit); `enabled = false` turns run pruning off entirely.
2426
+ *
2427
+ * Fields:
2428
+ * - `enabled` — `false` disables run retention. Defaults to `true`.
2429
+ * - `keepRuns` — the newest N runs per project to keep. A positive integer;
2430
+ * defaults to `RunRetentionPolicy.DEFAULT_KEEP_RUNS`.
2431
+ * - `maxAgeDays` — additionally drop any run older than this many days,
2432
+ * even inside the newest N. A positive integer; no age limit by default.
2433
+ *
2434
+ * @remarks
2435
+ * `keepRuns = 0` is rejected rather than read as "keep nothing": the run
2436
+ * being written is always kept, and `enabled = false` is the explicit
2437
+ * off switch, so a zero would have two readings.
2438
+ * @public
2439
+ */
2440
+ export declare class RetentionConfig extends RetentionConfig_base {}
2443
2441
  declare const VitestAgentConfig_base: Schema.Class<VitestAgentConfig, Schema.Struct<{
2444
2442
  readonly cacheDir: Schema.optional<Schema.String>;
2445
2443
  readonly projectKey: Schema.optional<Schema.String>;
2444
+ readonly retention: Schema.optionalKey<typeof RetentionConfig>;
2446
2445
  }>, {}>;
2447
2446
  /**
2448
2447
  * Schema for the optional `vitest-agent.config.toml` file.
2449
2448
  *
2450
- * Both fields are optional. When the file is absent or these fields are
2449
+ * Every field is optional. When the file is absent or these fields are
2451
2450
  * unset, `resolveDataPath` falls back to deriving the path from the
2452
- * workspace's `package.json` `name` under the XDG data directory.
2451
+ * workspace's `package.json` `name` under the XDG data directory, and run
2452
+ * retention uses the default policy.
2453
2453
  *
2454
2454
  * Fields:
2455
2455
  * - `cacheDir` — absolute path overriding the entire data directory. Highest
@@ -2460,11 +2460,39 @@ declare const VitestAgentConfig_base: Schema.Class<VitestAgentConfig, Schema.Str
2460
2460
  * directory. Use this when two unrelated projects on the same machine
2461
2461
  * share a `package.json` `name` (the collision case for workspace-name
2462
2462
  * keying), or when you want a stable key independent of `name` changes.
2463
+ * - `retention` — the `[retention]` table; see `RetentionConfig`.
2463
2464
  * @public
2464
2465
  */
2465
2466
  export declare class VitestAgentConfig extends VitestAgentConfig_base {}
2466
- //#endregion
2467
- //#region src/schemas/ConsoleLeaks.d.ts
2467
+ declare const RunRetentionPolicy_base: Schema.Class<RunRetentionPolicy, Schema.Struct<{
2468
+ readonly keepRuns: Schema.Int;
2469
+ readonly maxAgeDays: Schema.optionalKey<Schema.Int>;
2470
+ }>, {}>;
2471
+ /**
2472
+ * The resolved run-retention policy a `data.db` prune applies: keep the
2473
+ * newest `keepRuns` runs of every project, and drop any run older than
2474
+ * `maxAgeDays` days when set. The run being persisted is never pruned.
2475
+ *
2476
+ * @remarks
2477
+ * The default of 200 runs per project is sized against what reads the
2478
+ * data: failure classification reads the newest 10 `test_history` rows per
2479
+ * test and coverage trends keep 50 entries, so 200 leaves both a wide
2480
+ * margin while bounding a 7k-test suite (about 3 MB per run) to a few
2481
+ * hundred megabytes instead of growing without bound (issue 623, where an
2482
+ * unpruned database reached 880 MB over 4,484 runs). `maxAgeDays` is the
2483
+ * lever for a project that runs rarely but wants a calendar bound.
2484
+ * @public
2485
+ */
2486
+ export declare class RunRetentionPolicy extends RunRetentionPolicy_base {
2487
+ /** Newest runs per project kept when the config names no `keepRuns`. */
2488
+ static readonly DEFAULT_KEEP_RUNS = 200;
2489
+ /**
2490
+ * Resolve the policy a loaded config asks for: `Option.none()` when
2491
+ * `retention.enabled` is `false`, otherwise the configured values over
2492
+ * the defaults.
2493
+ */
2494
+ static fromConfig(config: VitestAgentConfig): Option.Option<RunRetentionPolicy>;
2495
+ }
2468
2496
  /**
2469
2497
  * Per-file stray-console-output detail. Counts are of console writes
2470
2498
  * (one `console.*` call), not lines.
@@ -2519,8 +2547,6 @@ export declare const ConsoleLeaks: Schema.Struct<{
2519
2547
  }>;
2520
2548
  /** @public */
2521
2549
  export type ConsoleLeaks = typeof ConsoleLeaks.Type;
2522
- //#endregion
2523
- //#region src/schemas/CoverageLevel.d.ts
2524
2550
  declare const CoverageLevel_base: Schema.Class<CoverageLevel, Schema.Struct<{
2525
2551
  readonly lines: Schema.Number;
2526
2552
  readonly functions: Schema.Number;
@@ -2582,8 +2608,6 @@ export declare function resolveCoverageInput(input: CoverageInput | undefined, f
2582
2608
  * @public
2583
2609
  */
2584
2610
  export declare function validateCoverageConfig(thresholds: CoverageLevel, targets: CoverageLevel): void;
2585
- //#endregion
2586
- //#region src/schemas/CoverageTargets.d.ts
2587
2611
  /**
2588
2612
  * Per-metric leaf shape for coverageTargets entries. Allows optional
2589
2613
  * numeric targets per metric, the `100: true` shortcut, and — mirroring
@@ -2637,8 +2661,6 @@ export declare const CoverageTargets: Schema.$Record<Schema.String, Schema.Union
2637
2661
  }>]>>;
2638
2662
  /** @public */
2639
2663
  export type CoverageTargets = typeof CoverageTargets.Type;
2640
- //#endregion
2641
- //#region src/schemas/History.d.ts
2642
2664
  /**
2643
2665
  * A single test run outcome (pass or fail only).
2644
2666
  * @public
@@ -2681,8 +2703,6 @@ export declare const HistoryRecord: Schema.Struct<{
2681
2703
  }>;
2682
2704
  /** @public */
2683
2705
  export type HistoryRecord = typeof HistoryRecord.Type;
2684
- //#endregion
2685
- //#region src/schemas/Options.d.ts
2686
2706
  /**
2687
2707
  * Per-executor console-output matrix. Most users never set this — the
2688
2708
  * built-in defaults cover the common cases. Override per slot when you
@@ -2731,10 +2751,10 @@ export type ReportOption = typeof ReportOption.Type;
2731
2751
  /**
2732
2752
  * The 2.0 user-facing options for `AgentPlugin`.
2733
2753
  *
2734
- * Six fields total. Two are function-typed (`reporter`, `onRunEvent`)
2754
+ * Seven fields total. Two are function-typed (`reporter`, `onRunEvent`)
2735
2755
  * and live on the `AgentPluginConstructorOptions` companion interface in
2736
2756
  * `@vitest-agent/plugin` — Effect Schema cannot encode functions cleanly,
2737
- * so the schema-decodable struct carries the four data-shaped fields.
2757
+ * so the schema-decodable struct carries the five data-shaped fields.
2738
2758
  * @public
2739
2759
  */
2740
2760
  export declare const AgentPluginOptions: Schema.Struct<{
@@ -2762,6 +2782,34 @@ export declare const AgentPluginOptions: Schema.Struct<{
2762
2782
  readonly report: Schema.optional<Schema.Union<readonly [Schema.Literal<false>, Schema.Struct<{
2763
2783
  readonly scope: Schema.optional<Schema.String>;
2764
2784
  }>]>>;
2785
+ /**
2786
+ * Whether a run is recorded in the SQLite `data.db` (default `true`).
2787
+ *
2788
+ * `false` is the explicit opt-out for a runner where nothing reads the
2789
+ * database back — a throwaway CI job, say. The run still renders every
2790
+ * console and report-file output, still emits every `RunEvent`, and
2791
+ * Vitest still enforces `coverage.thresholds` through its own
2792
+ * mechanism; only the database writes are skipped: run rows, test
2793
+ * cases, failure history, coverage rows and trends, and the baselines
2794
+ * they feed. Consequences a renderer sees: failure classifications are
2795
+ * empty (there is no history to classify against, so no test is
2796
+ * labelled `stable`, `new-failure`, `persistent`, `flaky` or
2797
+ * `recovered`), and coverage renders without a baseline delta or a
2798
+ * trend line. The `data.db` file is never created or opened.
2799
+ *
2800
+ * The opt-out is never automatic: `CI=true` does not imply it, because
2801
+ * some CI setups cache `data.db` between jobs and query it. The
2802
+ * `VITEST_AGENT_PERSIST` environment variable (`0` / `false` / `off`
2803
+ * to disable, `1` / `true` / `on` to enable) is the operator spelling
2804
+ * for a runner whose config cannot be edited, and it wins over this
2805
+ * option in either direction; any other value is ignored with one
2806
+ * stderr line.
2807
+ *
2808
+ * `coverage.enabled: false` in Vitest's own config already skips
2809
+ * persistence (UI-only mode, Decision 38) — this option is for a run
2810
+ * that keeps coverage on and still wants no database.
2811
+ */
2812
+ readonly persist: Schema.optional<Schema.Boolean>;
2765
2813
  }>;
2766
2814
  /** @public */
2767
2815
  export type AgentPluginOptions = typeof AgentPluginOptions.Type;
@@ -2782,8 +2830,6 @@ export declare const AgentReporterOptions: Schema.Struct<{
2782
2830
  }>;
2783
2831
  /** @public */
2784
2832
  export type AgentReporterOptions = typeof AgentReporterOptions.Type;
2785
- //#endregion
2786
- //#region src/schemas/RunReportFile.d.ts
2787
2833
  /**
2788
2834
  * Canonical `$schema` URL for `RunReportFile` — the `schemas/5.0/run.json`
2789
2835
  * document GitHub serves raw from this repository.
@@ -2996,8 +3042,6 @@ export declare const RunReportFile: Schema.Struct<{
2996
3042
  }>;
2997
3043
  /** @public */
2998
3044
  export type RunReportFile = typeof RunReportFile.Type;
2999
- //#endregion
3000
- //#region src/schemas/StrayOutput.d.ts
3001
3045
  /**
3002
3046
  * One line of stray output, kept as a sample: the stream it was written to,
3003
3047
  * and its text with escapes stripped, cut to a sane length.
@@ -3037,8 +3081,6 @@ export declare const StrayOutput: Schema.Struct<{
3037
3081
  }>;
3038
3082
  /** @public */
3039
3083
  export type StrayOutput = typeof StrayOutput.Type;
3040
- //#endregion
3041
- //#region src/schemas/Tdd.d.ts
3042
3084
  /** @public */
3043
3085
  export declare const GoalStatus: Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
3044
3086
  /** @public */
@@ -3116,8 +3158,6 @@ export declare const BehaviorDetail: Schema.Struct<{
3116
3158
  }>;
3117
3159
  /** @public */
3118
3160
  export type BehaviorDetail = typeof BehaviorDetail.Type;
3119
- //#endregion
3120
- //#region src/schemas/TestArtifacts.d.ts
3121
3161
  /**
3122
3162
  * Source position a test annotation or test artifact points at.
3123
3163
  * @public
@@ -3207,8 +3247,6 @@ export declare const TestArtifact: Schema.Struct<{
3207
3247
  }>;
3208
3248
  /** @public */
3209
3249
  export type TestArtifact = typeof TestArtifact.Type;
3210
- //#endregion
3211
- //#region src/schemas/Trends.d.ts
3212
3250
  /**
3213
3251
  * A single coverage trend data point recorded on a full test run.
3214
3252
  * @public
@@ -3257,8 +3295,6 @@ export declare const TrendRecord: Schema.Struct<{
3257
3295
  }>;
3258
3296
  /** @public */
3259
3297
  export type TrendRecord = typeof TrendRecord.Type;
3260
- //#endregion
3261
- //#region src/schemas/turns/FileEditPayload.d.ts
3262
3298
  /** @public */
3263
3299
  export declare const FileEditPayload: Schema.Struct<{
3264
3300
  readonly type: Schema.Literal<"file_edit">;
@@ -3270,8 +3306,6 @@ export declare const FileEditPayload: Schema.Struct<{
3270
3306
  }>;
3271
3307
  /** @public */
3272
3308
  export type FileEditPayload = typeof FileEditPayload.Type;
3273
- //#endregion
3274
- //#region src/schemas/turns/HookFirePayload.d.ts
3275
3309
  /** @public */
3276
3310
  export declare const HookFirePayload: Schema.Struct<{
3277
3311
  readonly type: Schema.Literal<"hook_fire">;
@@ -3281,8 +3315,6 @@ export declare const HookFirePayload: Schema.Struct<{
3281
3315
  }>;
3282
3316
  /** @public */
3283
3317
  export type HookFirePayload = typeof HookFirePayload.Type;
3284
- //#endregion
3285
- //#region src/schemas/turns/HypothesisPayload.d.ts
3286
3318
  /** @public */
3287
3319
  export declare const HypothesisPayload: Schema.Struct<{
3288
3320
  readonly type: Schema.Literal<"hypothesis">;
@@ -3292,8 +3324,6 @@ export declare const HypothesisPayload: Schema.Struct<{
3292
3324
  }>;
3293
3325
  /** @public */
3294
3326
  export type HypothesisPayload = typeof HypothesisPayload.Type;
3295
- //#endregion
3296
- //#region src/schemas/turns/NotePayload.d.ts
3297
3327
  /** @public */
3298
3328
  export declare const NotePayload: Schema.Struct<{
3299
3329
  readonly type: Schema.Literal<"note">;
@@ -3303,8 +3333,6 @@ export declare const NotePayload: Schema.Struct<{
3303
3333
  }>;
3304
3334
  /** @public */
3305
3335
  export type NotePayload = typeof NotePayload.Type;
3306
- //#endregion
3307
- //#region src/schemas/turns/ToolCallPayload.d.ts
3308
3336
  /** @public */
3309
3337
  export declare const ToolCallPayload: Schema.Struct<{
3310
3338
  readonly type: Schema.Literal<"tool_call">;
@@ -3314,8 +3342,6 @@ export declare const ToolCallPayload: Schema.Struct<{
3314
3342
  }>;
3315
3343
  /** @public */
3316
3344
  export type ToolCallPayload = typeof ToolCallPayload.Type;
3317
- //#endregion
3318
- //#region src/schemas/turns/ToolResultPayload.d.ts
3319
3345
  /** @public */
3320
3346
  export declare const ToolResultPayload: Schema.Struct<{
3321
3347
  readonly type: Schema.Literal<"tool_result">;
@@ -3327,8 +3353,6 @@ export declare const ToolResultPayload: Schema.Struct<{
3327
3353
  }>;
3328
3354
  /** @public */
3329
3355
  export type ToolResultPayload = typeof ToolResultPayload.Type;
3330
- //#endregion
3331
- //#region src/schemas/turns/UserPromptPayload.d.ts
3332
3356
  /** @public */
3333
3357
  export declare const UserPromptPayload: Schema.Struct<{
3334
3358
  readonly type: Schema.Literal<"user_prompt">;
@@ -3337,8 +3361,6 @@ export declare const UserPromptPayload: Schema.Struct<{
3337
3361
  }>;
3338
3362
  /** @public */
3339
3363
  export type UserPromptPayload = typeof UserPromptPayload.Type;
3340
- //#endregion
3341
- //#region src/schemas/turns/index.d.ts
3342
3364
  /** @public */
3343
3365
  export declare const TurnPayload: Schema.Union<readonly [Schema.Struct<{
3344
3366
  readonly type: Schema.Literal<"user_prompt">;
@@ -3381,8 +3403,6 @@ export declare const TurnPayload: Schema.Union<readonly [Schema.Struct<{
3381
3403
  }>]>;
3382
3404
  /** @public */
3383
3405
  export type TurnPayload = typeof TurnPayload.Type;
3384
- //#endregion
3385
- //#region src/utils/ansi.d.ts
3386
3406
  /**
3387
3407
  * Options for ANSI color output control.
3388
3408
  *
@@ -3420,8 +3440,6 @@ export declare function ansi(text: string, color: string, options?: AnsiOptions)
3420
3440
  * @internal
3421
3441
  */
3422
3442
  export declare function stripAnsi(text: string): string;
3423
- //#endregion
3424
- //#region src/utils/build-report.d.ts
3425
3443
  /**
3426
3444
  * Duck-typed Vitest parsed stack frame.
3427
3445
  *
@@ -3600,8 +3618,6 @@ export declare function buildAgentReport(testModules: ReadonlyArray<VitestTestMo
3600
3618
  * @public
3601
3619
  */
3602
3620
  export declare const countSuiteFailures: (report: Pick<AgentReport, "failed">) => number;
3603
- //#endregion
3604
- //#region src/utils/canonicalize-git-url.d.ts
3605
3621
  /**
3606
3622
  * Canonicalize a git remote URL.
3607
3623
  *
@@ -3631,8 +3647,6 @@ export declare const canonicalizeGitUrl: (raw: string) => string | null;
3631
3647
  * @public
3632
3648
  */
3633
3649
  export declare const gitUrlToProjectKey: (raw: string) => string | null;
3634
- //#endregion
3635
- //#region src/utils/classify-test.d.ts
3636
3650
  /**
3637
3651
  * Classify a test based on its current state and prior run history.
3638
3652
  *
@@ -3644,8 +3658,6 @@ export declare const gitUrlToProjectKey: (raw: string) => string | null;
3644
3658
  export declare function classifyTest(current: "passed" | "failed", priorRuns: ReadonlyArray<{
3645
3659
  state: string;
3646
3660
  }>): TestClassification;
3647
- //#endregion
3648
- //#region src/utils/coerce-error-text.d.ts
3649
3661
  /**
3650
3662
  * Coerce an unknown error-field value (message, name, diff, stack, ...) into a
3651
3663
  * string that is safe to bind to a SQLite TEXT column or render to a terminal.
@@ -3680,8 +3692,6 @@ export declare const coerceErrorText: (value: unknown) => string | undefined;
3680
3692
  * @public
3681
3693
  */
3682
3694
  export declare const coerceErrorField: (source: unknown, key: string) => string | undefined;
3683
- //#endregion
3684
- //#region src/utils/compress-lines.d.ts
3685
3695
  /**
3686
3696
  * Compress an array of line numbers into a compact range string.
3687
3697
  *
@@ -3709,8 +3719,6 @@ export declare const coerceErrorField: (source: unknown, key: string) => string
3709
3719
  * @public
3710
3720
  */
3711
3721
  export declare function compressLines(lines: number[]): string;
3712
- //#endregion
3713
- //#region src/utils/compute-trend.d.ts
3714
3722
  /**
3715
3723
  * Hash resolved targets to detect configuration changes.
3716
3724
  *
@@ -3736,8 +3744,6 @@ export declare function getRecentDirection(record: TrendRecord, count?: number):
3736
3744
  direction: "improving" | "regressing" | "stable";
3737
3745
  runCount: number;
3738
3746
  };
3739
- //#endregion
3740
- //#region src/utils/console-leaks.d.ts
3741
3747
  /**
3742
3748
  * A single captured stray console write, attributed to a file (and a test
3743
3749
  * when the write happened inside one). Fed to buildConsoleLeaks.
@@ -3804,8 +3810,6 @@ export interface ConsoleLeakTask {
3804
3810
  * @public
3805
3811
  */
3806
3812
  export declare function collectConsoleLeakEntries(files: ReadonlyArray<ConsoleLeakTask>): ConsoleLeakEntry[];
3807
- //#endregion
3808
- //#region src/utils/detect-non-default-discover-strategy.d.ts
3809
3813
  /**
3810
3814
  * Lexically detects whether a Vitest/Vite config source text appears to
3811
3815
  * configure a non-default `DiscoverStrategy` — a custom `discoverStrategy`
@@ -3821,8 +3825,6 @@ export declare function collectConsoleLeakEntries(files: ReadonlyArray<ConsoleLe
3821
3825
  * @public
3822
3826
  */
3823
3827
  export declare function detectNonDefaultDiscoverStrategy(source: string): boolean;
3824
- //#endregion
3825
- //#region src/utils/detect-pm.d.ts
3826
3828
  /**
3827
3829
  * Filesystem abstraction for package manager detection.
3828
3830
  *
@@ -3883,8 +3885,6 @@ export declare function detectPackageManager(root: string, fs: FileSystemAdapter
3883
3885
  * @internal
3884
3886
  */
3885
3887
  export declare function getRunCommand(pm: PackageManager | null): string;
3886
- //#endregion
3887
- //#region src/utils/detect-timeout.d.ts
3888
3888
  /**
3889
3889
  * True when the error looks like a Vitest test or hook timeout. Either
3890
3890
  * the message matches "timed out in Nms" or the error name contains
@@ -3895,8 +3895,6 @@ export declare const isTimeoutError: (error: {
3895
3895
  message?: string;
3896
3896
  name?: string;
3897
3897
  }) => boolean;
3898
- //#endregion
3899
- //#region src/utils/format-console.d.ts
3900
3898
  /**
3901
3899
  * Options controlling console markdown output formatting.
3902
3900
  *
@@ -3988,8 +3986,6 @@ export declare function determineTier(report: AgentReport): "green" | "yellow" |
3988
3986
  * @internal
3989
3987
  */
3990
3988
  export declare function formatConsoleMarkdown(report: AgentReport, options: ConsoleFormatOptions): string;
3991
- //#endregion
3992
- //#region src/utils/format-fatal-error.d.ts
3993
3989
  /**
3994
3990
  * Format an unknown error into a human-readable string with issue URL.
3995
3991
  *
@@ -4002,8 +3998,6 @@ export declare function formatConsoleMarkdown(report: AgentReport, options: Cons
4002
3998
  * @public
4003
3999
  */
4004
4000
  export declare function formatFatalError(err: unknown): string;
4005
- //#endregion
4006
- //#region src/utils/format-gfm.d.ts
4007
4001
  /**
4008
4002
  * Format one or more {@link (AgentReport:variable) | AgentReports} as a GitHub-Flavored
4009
4003
  * Markdown string for writing to `GITHUB_STEP_SUMMARY`.
@@ -4027,8 +4021,6 @@ export declare function formatFatalError(err: unknown): string;
4027
4021
  * @public
4028
4022
  */
4029
4023
  export declare function formatGfm(reports: AgentReport[]): string;
4030
- //#endregion
4031
- //#region src/utils/format-scoped-coverage-note.d.ts
4032
4024
  /**
4033
4025
  * Format the informational note shown when coverage thresholds were
4034
4026
  * skipped because a run only exercised a subset of the project's test
@@ -4048,8 +4040,6 @@ export declare function formatGfm(reports: AgentReport[]): string;
4048
4040
  * @public
4049
4041
  */
4050
4042
  export declare function formatScopedCoverageNote(testedFileCount: number, totalFileCount?: number): string;
4051
- //#endregion
4052
- //#region src/utils/function-boundary.d.ts
4053
4043
  /** @public */
4054
4044
  export interface FunctionBoundary {
4055
4045
  readonly line: number;
@@ -4065,16 +4055,12 @@ export interface FunctionBoundary {
4065
4055
  * @public
4066
4056
  */
4067
4057
  export declare const findFunctionBoundary: (source: string, line: number) => FunctionBoundary | null;
4068
- //#endregion
4069
- //#region src/utils/hyperlink.d.ts
4070
4058
  /** @public */
4071
4059
  export interface Osc8Options {
4072
4060
  readonly enabled: boolean;
4073
4061
  }
4074
4062
  /** @public */
4075
4063
  export declare const osc8: (url: string, label: string, options: Osc8Options) => string;
4076
- //#endregion
4077
- //#region src/utils/match-vitest-command.d.ts
4078
4064
  /**
4079
4065
  * Return `true` if the command invokes Vitest in any of the five
4080
4066
  * supported shapes. The `vitestScripts` set carries the names of
@@ -4121,8 +4107,6 @@ export declare const rewriteBashCommand: (input: {
4121
4107
  * @public
4122
4108
  */
4123
4109
  export declare const detectVitestScripts: (scripts: Record<string, string>) => Set<string>;
4124
- //#endregion
4125
- //#region src/utils/normalize-workspace-key.d.ts
4126
4110
  /**
4127
4111
  * Normalize a workspace name into a filesystem-safe directory segment.
4128
4112
  *
@@ -4151,8 +4135,6 @@ export declare const detectVitestScripts: (scripts: Record<string, string>) => S
4151
4135
  * @public
4152
4136
  */
4153
4137
  export declare function normalizeWorkspaceKey(name: string): string;
4154
- //#endregion
4155
- //#region src/utils/posix-path.d.ts
4156
4138
  /**
4157
4139
  * Pure POSIX path helpers for the platform-free core.
4158
4140
  *
@@ -4186,8 +4168,6 @@ export declare const joinPosix: (...parts: ReadonlyArray<string>) => string;
4186
4168
  * @public
4187
4169
  */
4188
4170
  export declare const relativePosix: (from: string, to: string) => string;
4189
- //#endregion
4190
- //#region src/utils/probe-host-metadata.d.ts
4191
4171
  /** @public */
4192
4172
  export interface HostMetadataResult {
4193
4173
  readonly source: string | null;
@@ -4215,8 +4195,6 @@ export interface HostMetadataResult {
4215
4195
  * @public
4216
4196
  */
4217
4197
  export declare const probeHostMetadataFromEnv: (env: Record<string, string | undefined>) => HostMetadataResult;
4218
- //#endregion
4219
- //#region src/utils/safe-filename.d.ts
4220
4198
  /**
4221
4199
  * Convert a project name to a filesystem-safe filename.
4222
4200
  *
@@ -4244,8 +4222,6 @@ export declare const probeHostMetadataFromEnv: (env: Record<string, string | und
4244
4222
  * @public
4245
4223
  */
4246
4224
  export declare function safeFilename(name: string): string;
4247
- //#endregion
4248
- //#region src/utils/stray-output.d.ts
4249
4225
  /**
4250
4226
  * A stream stray output was written to.
4251
4227
  * @public
@@ -4317,8 +4293,6 @@ export declare const readStrayOutput: (logger: unknown) => StrayOutput | undefin
4317
4293
  * @public
4318
4294
  */
4319
4295
  export declare const formatStrayOutputNote: (stray: StrayOutput) => ReadonlyArray<string>;
4320
- //#endregion
4321
- //#region src/utils/test-location.d.ts
4322
4296
  /** Directory holding source files whose tests may be co-located. @public */
4323
4297
  export declare const SRC_DIR = "src";
4324
4298
  /** Canonical test directory name. @public */
@@ -4409,8 +4383,6 @@ export declare function findOwningWorkspace(workspaces: ReadonlyArray<WorkspaceL
4409
4383
  * @public
4410
4384
  */
4411
4385
  export declare function classifyTestPath(workspaces: ReadonlyArray<WorkspaceLike>, filePath: string): TestPathClassification | null;
4412
- //#endregion
4413
- //#region src/utils/validate-coverage-targets-shape.d.ts
4414
4386
  /** @public */
4415
4387
  export interface CoverageTargetsShapeError {
4416
4388
  readonly code: string;
@@ -4453,8 +4425,6 @@ export interface CoverageTargetsShapeResult {
4453
4425
  * @public
4454
4426
  */
4455
4427
  export declare function validateCoverageTargetsShape(input: unknown): CoverageTargetsShapeResult;
4456
- //#endregion
4457
- //#region src/utils/validate-phase-transition.d.ts
4458
4428
  /** @public */
4459
4429
  export type Phase = "spike" | "red" | "red.triangulate" | "green" | "green.fake-it" | "refactor" | "extended-red" | "green-without-red";
4460
4430
  /** @public */
@@ -4561,8 +4531,6 @@ export declare const requiredArtifactForTransition: (from: Phase, to: Phase) =>
4561
4531
  export declare const transitionEnforcesBehaviorMatch: (from: Phase, to: Phase) => boolean;
4562
4532
  /** @public */
4563
4533
  export declare const validatePhaseTransition: (ctx: PhaseTransitionContext) => PhaseTransitionResult;
4564
- //#endregion
4565
- //#region src/version.d.ts
4566
4534
  /**
4567
4535
  * The version of this package. Inlined at build time from
4568
4536
  * package.json#version via rslib-builder's __PACKAGE_VERSION__ substitution.
@@ -4576,6 +4544,5 @@ export declare const validatePhaseTransition: (ctx: PhaseTransitionContext) => P
4576
4544
  * @public
4577
4545
  */
4578
4546
  export declare const CURRENT_SDK_VERSION: string;
4579
- //#endregion
4580
4547
  export { FileCoverageReport as CoverageFile };
4581
4548
  //# sourceMappingURL=index.d.ts.map