@vitest-agent/mcp 5.1.8 → 5.2.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.
package/index.d.ts CHANGED
@@ -426,6 +426,21 @@ export declare const TestCoverageResult: Schema.Union<readonly [Schema.Struct<{
426
426
  readonly uncoveredLines: Schema.String;
427
427
  }>>>;
428
428
  readonly belowTargetFiles: Schema.optional<Schema.$Array<Schema.String>>;
429
+ readonly globShortfalls: Schema.optional<Schema.$Array<Schema.Struct<{
430
+ readonly pattern: Schema.String;
431
+ readonly summary: Schema.Struct<{
432
+ readonly statements: Schema.Number;
433
+ readonly branches: Schema.Number;
434
+ readonly functions: Schema.Number;
435
+ readonly lines: Schema.Number;
436
+ }>;
437
+ readonly thresholds: Schema.Struct<{
438
+ readonly lines: Schema.optional<Schema.Number>;
439
+ readonly functions: Schema.optional<Schema.Number>;
440
+ readonly branches: Schema.optional<Schema.Number>;
441
+ readonly statements: Schema.optional<Schema.Number>;
442
+ }>;
443
+ }>>>;
429
444
  }>;
430
445
  }>, Schema.Struct<{
431
446
  readonly dataAvailable: Schema.Literal<false>;
@@ -1372,6 +1387,21 @@ export declare const RunTestsResult: Schema.Union<readonly [Schema.Struct<{
1372
1387
  readonly uncoveredLines: Schema.String;
1373
1388
  }>>>;
1374
1389
  readonly belowTargetFiles: Schema.optional<Schema.$Array<Schema.String>>;
1390
+ readonly globShortfalls: Schema.optional<Schema.$Array<Schema.Struct<{
1391
+ readonly pattern: Schema.String;
1392
+ readonly summary: Schema.Struct<{
1393
+ readonly statements: Schema.Number;
1394
+ readonly branches: Schema.Number;
1395
+ readonly functions: Schema.Number;
1396
+ readonly lines: Schema.Number;
1397
+ }>;
1398
+ readonly thresholds: Schema.Struct<{
1399
+ readonly lines: Schema.optional<Schema.Number>;
1400
+ readonly functions: Schema.optional<Schema.Number>;
1401
+ readonly branches: Schema.optional<Schema.Number>;
1402
+ readonly statements: Schema.optional<Schema.Number>;
1403
+ }>;
1404
+ }>>>;
1375
1405
  }>>;
1376
1406
  readonly tagCounts: Schema.optional<Schema.$Record<Schema.String, Schema.Struct<{
1377
1407
  readonly passed: Schema.optional<Schema.Number>;
@@ -1393,6 +1423,16 @@ export declare const RunTestsResult: Schema.Union<readonly [Schema.Struct<{
1393
1423
  readonly files: Schema.Number;
1394
1424
  }>>;
1395
1425
  }>>;
1426
+ readonly strayOutput: Schema.optional<Schema.Struct<{
1427
+ readonly total: Schema.Number;
1428
+ readonly stdout: Schema.Number;
1429
+ readonly stderr: Schema.Number;
1430
+ readonly bytes: Schema.Number;
1431
+ readonly samples: Schema.$Array<Schema.Struct<{
1432
+ readonly stream: Schema.Literals<readonly ["stdout", "stderr"]>;
1433
+ readonly text: Schema.String;
1434
+ }>>;
1435
+ }>>;
1396
1436
  }>;
1397
1437
  readonly classifications: Schema.$Record<Schema.String, Schema.String>;
1398
1438
  readonly discoveryLastScannedAt: Schema.optional<Schema.NullOr<Schema.String>>;
@@ -2104,6 +2144,21 @@ export declare const Kit: Toolkit.Toolkit<{
2104
2144
  readonly uncoveredLines: import("effect/Schema").String;
2105
2145
  }>>>;
2106
2146
  readonly belowTargetFiles: import("effect/Schema").optional<import("effect/Schema").$Array<import("effect/Schema").String>>;
2147
+ readonly globShortfalls: import("effect/Schema").optional<import("effect/Schema").$Array<import("effect/Schema").Struct<{
2148
+ readonly pattern: import("effect/Schema").String;
2149
+ readonly summary: import("effect/Schema").Struct<{
2150
+ readonly statements: import("effect/Schema").Number;
2151
+ readonly branches: import("effect/Schema").Number;
2152
+ readonly functions: import("effect/Schema").Number;
2153
+ readonly lines: import("effect/Schema").Number;
2154
+ }>;
2155
+ readonly thresholds: import("effect/Schema").Struct<{
2156
+ readonly lines: import("effect/Schema").optional<import("effect/Schema").Number>;
2157
+ readonly functions: import("effect/Schema").optional<import("effect/Schema").Number>;
2158
+ readonly branches: import("effect/Schema").optional<import("effect/Schema").Number>;
2159
+ readonly statements: import("effect/Schema").optional<import("effect/Schema").Number>;
2160
+ }>;
2161
+ }>>>;
2107
2162
  }>>;
2108
2163
  readonly tagCounts: import("effect/Schema").optional<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Struct<{
2109
2164
  readonly passed: import("effect/Schema").optional<import("effect/Schema").Number>;
@@ -2125,6 +2180,16 @@ export declare const Kit: Toolkit.Toolkit<{
2125
2180
  readonly files: import("effect/Schema").Number;
2126
2181
  }>>;
2127
2182
  }>>;
2183
+ readonly strayOutput: import("effect/Schema").optional<import("effect/Schema").Struct<{
2184
+ readonly total: import("effect/Schema").Number;
2185
+ readonly stdout: import("effect/Schema").Number;
2186
+ readonly stderr: import("effect/Schema").Number;
2187
+ readonly bytes: import("effect/Schema").Number;
2188
+ readonly samples: import("effect/Schema").$Array<import("effect/Schema").Struct<{
2189
+ readonly stream: import("effect/Schema").Literals<readonly ["stdout", "stderr"]>;
2190
+ readonly text: import("effect/Schema").String;
2191
+ }>>;
2192
+ }>>;
2128
2193
  }>;
2129
2194
  readonly classifications: import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").String>;
2130
2195
  readonly discoveryLastScannedAt: import("effect/Schema").optional<import("effect/Schema").NullOr<import("effect/Schema").String>>;
@@ -2801,6 +2866,21 @@ export declare const Kit: Toolkit.Toolkit<{
2801
2866
  readonly uncoveredLines: import("effect/Schema").String;
2802
2867
  }>>>;
2803
2868
  readonly belowTargetFiles: import("effect/Schema").optional<import("effect/Schema").$Array<import("effect/Schema").String>>;
2869
+ readonly globShortfalls: import("effect/Schema").optional<import("effect/Schema").$Array<import("effect/Schema").Struct<{
2870
+ readonly pattern: import("effect/Schema").String;
2871
+ readonly summary: import("effect/Schema").Struct<{
2872
+ readonly statements: import("effect/Schema").Number;
2873
+ readonly branches: import("effect/Schema").Number;
2874
+ readonly functions: import("effect/Schema").Number;
2875
+ readonly lines: import("effect/Schema").Number;
2876
+ }>;
2877
+ readonly thresholds: import("effect/Schema").Struct<{
2878
+ readonly lines: import("effect/Schema").optional<import("effect/Schema").Number>;
2879
+ readonly functions: import("effect/Schema").optional<import("effect/Schema").Number>;
2880
+ readonly branches: import("effect/Schema").optional<import("effect/Schema").Number>;
2881
+ readonly statements: import("effect/Schema").optional<import("effect/Schema").Number>;
2882
+ }>;
2883
+ }>>>;
2804
2884
  }>;
2805
2885
  }>, import("effect/Schema").Struct<{
2806
2886
  readonly dataAvailable: import("effect/Schema").Literal<false>;
@@ -4563,6 +4643,21 @@ export declare const ToolsLayer: import("effect/Layer").Layer<import("effect/ai/
4563
4643
  readonly uncoveredLines: import("effect/Schema").String;
4564
4644
  }>>>;
4565
4645
  readonly belowTargetFiles: import("effect/Schema").optional<import("effect/Schema").$Array<import("effect/Schema").String>>;
4646
+ readonly globShortfalls: import("effect/Schema").optional<import("effect/Schema").$Array<import("effect/Schema").Struct<{
4647
+ readonly pattern: import("effect/Schema").String;
4648
+ readonly summary: import("effect/Schema").Struct<{
4649
+ readonly statements: import("effect/Schema").Number;
4650
+ readonly branches: import("effect/Schema").Number;
4651
+ readonly functions: import("effect/Schema").Number;
4652
+ readonly lines: import("effect/Schema").Number;
4653
+ }>;
4654
+ readonly thresholds: import("effect/Schema").Struct<{
4655
+ readonly lines: import("effect/Schema").optional<import("effect/Schema").Number>;
4656
+ readonly functions: import("effect/Schema").optional<import("effect/Schema").Number>;
4657
+ readonly branches: import("effect/Schema").optional<import("effect/Schema").Number>;
4658
+ readonly statements: import("effect/Schema").optional<import("effect/Schema").Number>;
4659
+ }>;
4660
+ }>>>;
4566
4661
  }>>;
4567
4662
  readonly tagCounts: import("effect/Schema").optional<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Struct<{
4568
4663
  readonly passed: import("effect/Schema").optional<import("effect/Schema").Number>;
@@ -4584,6 +4679,16 @@ export declare const ToolsLayer: import("effect/Layer").Layer<import("effect/ai/
4584
4679
  readonly files: import("effect/Schema").Number;
4585
4680
  }>>;
4586
4681
  }>>;
4682
+ readonly strayOutput: import("effect/Schema").optional<import("effect/Schema").Struct<{
4683
+ readonly total: import("effect/Schema").Number;
4684
+ readonly stdout: import("effect/Schema").Number;
4685
+ readonly stderr: import("effect/Schema").Number;
4686
+ readonly bytes: import("effect/Schema").Number;
4687
+ readonly samples: import("effect/Schema").$Array<import("effect/Schema").Struct<{
4688
+ readonly stream: import("effect/Schema").Literals<readonly ["stdout", "stderr"]>;
4689
+ readonly text: import("effect/Schema").String;
4690
+ }>>;
4691
+ }>>;
4587
4692
  }>;
4588
4693
  readonly classifications: import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").String>;
4589
4694
  readonly discoveryLastScannedAt: import("effect/Schema").optional<import("effect/Schema").NullOr<import("effect/Schema").String>>;
@@ -5260,6 +5365,21 @@ export declare const ToolsLayer: import("effect/Layer").Layer<import("effect/ai/
5260
5365
  readonly uncoveredLines: import("effect/Schema").String;
5261
5366
  }>>>;
5262
5367
  readonly belowTargetFiles: import("effect/Schema").optional<import("effect/Schema").$Array<import("effect/Schema").String>>;
5368
+ readonly globShortfalls: import("effect/Schema").optional<import("effect/Schema").$Array<import("effect/Schema").Struct<{
5369
+ readonly pattern: import("effect/Schema").String;
5370
+ readonly summary: import("effect/Schema").Struct<{
5371
+ readonly statements: import("effect/Schema").Number;
5372
+ readonly branches: import("effect/Schema").Number;
5373
+ readonly functions: import("effect/Schema").Number;
5374
+ readonly lines: import("effect/Schema").Number;
5375
+ }>;
5376
+ readonly thresholds: import("effect/Schema").Struct<{
5377
+ readonly lines: import("effect/Schema").optional<import("effect/Schema").Number>;
5378
+ readonly functions: import("effect/Schema").optional<import("effect/Schema").Number>;
5379
+ readonly branches: import("effect/Schema").optional<import("effect/Schema").Number>;
5380
+ readonly statements: import("effect/Schema").optional<import("effect/Schema").Number>;
5381
+ }>;
5382
+ }>>>;
5263
5383
  }>;
5264
5384
  }>, import("effect/Schema").Struct<{
5265
5385
  readonly dataAvailable: import("effect/Schema").Literal<false>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vitest-agent/mcp",
3
- "version": "5.1.8",
3
+ "version": "5.2.0",
4
4
  "private": false,
5
5
  "description": "Model Context Protocol server for vitest-agent. Exposes 30 tools for agent access to test data, TDD lifecycle, and session management.",
6
6
  "keywords": [
@@ -43,15 +43,15 @@
43
43
  "vitest-agent-mcp": "bin/vitest-agent-mcp.js"
44
44
  },
45
45
  "dependencies": {
46
- "@effect/platform-node": "^4.0.0",
47
- "@effect/sql-sqlite-node": "^4.0.0",
48
- "@effected/engine": "^0.3.0",
46
+ "@effect/platform-node": "^4.0.2",
47
+ "@effect/sql-sqlite-node": "^4.0.2",
48
+ "@effected/engine": "^0.4.0",
49
49
  "@effected/git": "^0.20.0",
50
- "@effected/mcp": "^0.4.0",
50
+ "@effected/mcp": "^0.5.0",
51
51
  "@effected/walker": "^0.15.0",
52
- "@vitest-agent/engine": "0.6.0",
53
- "@vitest-agent/sdk": "6.0.0",
54
- "effect": "^4.0.0"
52
+ "@vitest-agent/engine": "1.0.0",
53
+ "@vitest-agent/sdk": "7.0.0",
54
+ "effect": "^4.0.2"
55
55
  },
56
56
  "peerDependencies": {
57
57
  "vitest": "^5.0.0"
@@ -4,7 +4,7 @@ import { ToolOutputSchema } from "@effected/mcp";
4
4
  import { Data, Effect, Layer, Option, Path, Result, Schema, Semaphore } from "effect";
5
5
  import { DataReader, DataStore } from "@vitest-agent/engine";
6
6
  import { Tool } from "effect/ai";
7
- import { AgentReport, buildAgentReport, buildConsoleLeaks, coerceErrorField, collectConsoleLeakEntries, formatScopedCoverageNote } from "@vitest-agent/sdk";
7
+ import { AgentReport, buildAgentReport, buildConsoleLeaks, coerceErrorField, collectConsoleLeakEntries, formatScopedCoverageNote, readStrayOutput } from "@vitest-agent/sdk";
8
8
  import { AsyncLocalStorage } from "node:async_hooks";
9
9
  import { existsSync, mkdtempSync, rmSync } from "node:fs";
10
10
  import { stat } from "node:fs/promises";
@@ -603,10 +603,12 @@ const runTestsBody = async (input, ctx) => {
603
603
  const preliminaryReason = unhandledErrors.length > 0 || result.testModules.some((m) => m.state() === "failed") ? "failed" : "passed";
604
604
  const baseReport = buildAgentReport(testModules, unhandledErrors, preliminaryReason, { omitPassingTests: true });
605
605
  const leaks = buildConsoleLeaks(collectConsoleLeakEntries(localVitest.state.getFiles()));
606
- const report = leaks !== void 0 ? {
606
+ const strayOutput = readStrayOutput(localVitest.logger);
607
+ const report = {
607
608
  ...baseReport,
608
- consoleLeaks: leaks
609
- } : baseReport;
609
+ ...leaks !== void 0 && { consoleLeaks: leaks },
610
+ ...strayOutput !== void 0 && { strayOutput }
611
+ };
610
612
  let classifications;
611
613
  try {
612
614
  classifications = await ctx.runPromise(Effect.gen(function* () {
package/version.js CHANGED
@@ -7,7 +7,7 @@
7
7
  *
8
8
  * @public
9
9
  */
10
- const CURRENT_MCP_VERSION = "5.1.8";
10
+ const CURRENT_MCP_VERSION = "5.2.0";
11
11
 
12
12
  //#endregion
13
13
  export { CURRENT_MCP_VERSION };