@vitest-agent/mcp 5.2.6 → 5.2.8
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/annotations.js +1 -2
- package/bin/vitest-agent-mcp.js +1 -2
- package/idempotency.js +1 -2
- package/index.d.ts +0 -68
- package/main.d.ts +0 -2
- package/main.js +1 -2
- package/package.json +10 -10
- package/prompts/explain-failure.js +1 -2
- package/prompts/layer.js +1 -2
- package/prompts/regression-since-pass.js +1 -2
- package/prompts/tdd-resume.js +1 -2
- package/prompts/triage.js +1 -2
- package/prompts/why-flaky.js +1 -2
- package/prompts/wrapup.js +1 -2
- package/server.js +1 -2
- package/session.js +1 -2
- package/toolkit.js +1 -2
- package/tools/_project-groups.js +1 -2
- package/tools/_tdd-error-envelope.js +1 -2
- package/tools/acceptance-metrics.js +1 -2
- package/tools/cache-health.js +1 -2
- package/tools/commit-changes.js +1 -2
- package/tools/configure.js +1 -2
- package/tools/coverage.js +1 -2
- package/tools/errors.js +1 -2
- package/tools/failure-signature-get.js +1 -2
- package/tools/file-coverage.js +1 -2
- package/tools/help.js +1 -2
- package/tools/history.js +1 -2
- package/tools/hypothesis.js +1 -2
- package/tools/inventory.js +1 -2
- package/tools/note.js +1 -2
- package/tools/overview.js +1 -2
- package/tools/ping.js +1 -2
- package/tools/register-agent.js +1 -2
- package/tools/run-tests.js +1 -2
- package/tools/settings-list.js +1 -2
- package/tools/status.js +1 -2
- package/tools/tdd-artifact.js +1 -2
- package/tools/tdd-behavior.js +1 -2
- package/tools/tdd-goal.js +1 -2
- package/tools/tdd-phase-transition-request.js +1 -2
- package/tools/tdd-progress-push.js +1 -2
- package/tools/tdd-task.js +1 -2
- package/tools/test.js +1 -2
- package/tools/trends.js +1 -2
- package/tools/triage-brief.js +1 -2
- package/tools/turn-search.js +1 -2
- package/tools/wrapup-prompt.js +1 -2
- package/utils/replay-marker.js +1 -2
- package/utils/safe-format-fatal-error.js +1 -2
- package/version.js +2 -3
package/annotations.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Context } from "effect";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
// src/annotations.ts
|
|
4
4
|
/**
|
|
5
5
|
* Formerly rendered a tool's encoded result as a markdown `content[0].text`
|
|
6
6
|
* channel. The server no longer reads it: every successful result carries
|
|
@@ -14,5 +14,4 @@ import { Context } from "effect";
|
|
|
14
14
|
*/
|
|
15
15
|
const RenderText = Context.Reference("@vitest-agent/mcp/RenderText", { defaultValue: () => void 0 });
|
|
16
16
|
|
|
17
|
-
//#endregion
|
|
18
17
|
export { RenderText };
|
package/bin/vitest-agent-mcp.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { main } from "../main.js";
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
// src/bin.ts
|
|
5
5
|
/**
|
|
6
6
|
* MCP server entry point for vitest-agent. Thin shim over `main.ts` — the
|
|
7
7
|
* assembled program that owns the process.
|
|
@@ -10,5 +10,4 @@ import { main } from "../main.js";
|
|
|
10
10
|
*/
|
|
11
11
|
main();
|
|
12
12
|
|
|
13
|
-
//#endregion
|
|
14
13
|
export { };
|
package/idempotency.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Effect, Option } from "effect";
|
|
2
2
|
import { DataReader, DataStore } from "@vitest-agent/engine";
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
// src/idempotency.ts
|
|
5
5
|
/**
|
|
6
6
|
* Narrow a raw tool payload to the action-shaped object every consolidated
|
|
7
7
|
* spec keys on: a non-null object carrying an `action` key. Anything else
|
|
@@ -120,5 +120,4 @@ const withIdempotency = (path, handler) => (params) => Effect.gen(function* () {
|
|
|
120
120
|
return result;
|
|
121
121
|
});
|
|
122
122
|
|
|
123
|
-
//#endregion
|
|
124
123
|
export { idempotencyKeys, withIdempotency };
|
package/index.d.ts
CHANGED
|
@@ -5,7 +5,6 @@ import { Toolkit } from "effect/ai";
|
|
|
5
5
|
import "@effected/git";
|
|
6
6
|
import "@vitest-agent/sdk";
|
|
7
7
|
import { Remediation } from "@effected/engine";
|
|
8
|
-
//#region src/annotations.d.ts
|
|
9
8
|
/**
|
|
10
9
|
* Formerly rendered a tool's encoded result as a markdown `content[0].text`
|
|
11
10
|
* channel. The server no longer reads it: every successful result carries
|
|
@@ -18,8 +17,6 @@ import { Remediation } from "@effected/engine";
|
|
|
18
17
|
* @public
|
|
19
18
|
*/
|
|
20
19
|
export declare const RenderText: Context.Reference<((result: unknown) => string | undefined) | undefined>;
|
|
21
|
-
//#endregion
|
|
22
|
-
//#region src/idempotency.d.ts
|
|
23
20
|
/**
|
|
24
21
|
* Wraps `handler` with idempotent-response caching keyed on `path`.
|
|
25
22
|
*
|
|
@@ -51,8 +48,6 @@ export declare const RenderText: Context.Reference<((result: unknown) => string
|
|
|
51
48
|
export declare const withIdempotency: <P, R, E, S>(path: string, handler: (params: P) => Effect.Effect<R, E, S>) => (params: P) => Effect.Effect<R | (R & {
|
|
52
49
|
_idempotentReplay: true;
|
|
53
50
|
}), E, S | DataReader | DataStore>;
|
|
54
|
-
//#endregion
|
|
55
|
-
//#region src/session.d.ts
|
|
56
51
|
/**
|
|
57
52
|
* Mutable holder for the MCP server's currently-associated host chat
|
|
58
53
|
* id (the per-process CC chat UUID).
|
|
@@ -149,8 +144,6 @@ export declare class McpSession extends McpSession_base {
|
|
|
149
144
|
*/
|
|
150
145
|
static readonly layerTest: (overrides: Pick<McpSessionOptions, "cwd"> & Partial<McpSessionOptions>) => Layer.Layer<McpSession>;
|
|
151
146
|
}
|
|
152
|
-
//#endregion
|
|
153
|
-
//#region src/prompts/layer.d.ts
|
|
154
147
|
/**
|
|
155
148
|
* Every framing prompt as one layer; merged into `ServerLayer` beside the
|
|
156
149
|
* toolkit registration. Requires `McpSession` for `tdd-resume`'s default.
|
|
@@ -158,8 +151,6 @@ export declare class McpSession extends McpSession_base {
|
|
|
158
151
|
* @public
|
|
159
152
|
*/
|
|
160
153
|
export declare const PromptsLayer: Layer.Layer<never, never, McpSession>;
|
|
161
|
-
//#endregion
|
|
162
|
-
//#region src/server.d.ts
|
|
163
154
|
/**
|
|
164
155
|
* The platform services the stdio transport needs.
|
|
165
156
|
*
|
|
@@ -201,8 +192,6 @@ export declare const SERVER_INSTRUCTIONS: string;
|
|
|
201
192
|
* @public
|
|
202
193
|
*/
|
|
203
194
|
export declare const ServerLayer: (options: ServerLayerOptions) => Layer.Layer<never, never, PlatformServices | McpSession | DataReader | DataStore | ProjectDiscovery>;
|
|
204
|
-
//#endregion
|
|
205
|
-
//#region src/tools/ping.d.ts
|
|
206
195
|
/**
|
|
207
196
|
* The `ping` tool's success payload.
|
|
208
197
|
*
|
|
@@ -221,8 +210,6 @@ export declare const PingResult: Schema.Struct<{
|
|
|
221
210
|
* @public
|
|
222
211
|
*/
|
|
223
212
|
type PingResultType = Schema.Schema.Type<typeof PingResult>;
|
|
224
|
-
//#endregion
|
|
225
|
-
//#region src/tools/help.d.ts
|
|
226
213
|
/**
|
|
227
214
|
* The `help` tool's success payload.
|
|
228
215
|
*
|
|
@@ -237,8 +224,6 @@ export declare const HelpResult: Schema.Struct<{
|
|
|
237
224
|
* @public
|
|
238
225
|
*/
|
|
239
226
|
type HelpResultType = Schema.Schema.Type<typeof HelpResult>;
|
|
240
|
-
//#endregion
|
|
241
|
-
//#region src/tools/status.d.ts
|
|
242
227
|
/**
|
|
243
228
|
* The `test_status` tool's success payload.
|
|
244
229
|
*
|
|
@@ -280,8 +265,6 @@ export declare const TestStatusInput: Schema.Struct<{
|
|
|
280
265
|
* @public
|
|
281
266
|
*/
|
|
282
267
|
type TestStatusInputType = Schema.Schema.Type<typeof TestStatusInput>;
|
|
283
|
-
//#endregion
|
|
284
|
-
//#region src/tools/overview.d.ts
|
|
285
268
|
/**
|
|
286
269
|
* The `test_overview` tool's success payload.
|
|
287
270
|
*
|
|
@@ -324,8 +307,6 @@ export declare const TestOverviewInput: Schema.Struct<{
|
|
|
324
307
|
* @public
|
|
325
308
|
*/
|
|
326
309
|
type TestOverviewInputType = Schema.Schema.Type<typeof TestOverviewInput>;
|
|
327
|
-
//#endregion
|
|
328
|
-
//#region src/tools/coverage.d.ts
|
|
329
310
|
/**
|
|
330
311
|
* The `test_coverage` tool's success payload.
|
|
331
312
|
*
|
|
@@ -466,8 +447,6 @@ export declare const TestCoverageInput: Schema.Struct<{
|
|
|
466
447
|
* @public
|
|
467
448
|
*/
|
|
468
449
|
type TestCoverageInputType = Schema.Schema.Type<typeof TestCoverageInput>;
|
|
469
|
-
//#endregion
|
|
470
|
-
//#region src/tools/history.d.ts
|
|
471
450
|
/**
|
|
472
451
|
* The `test_history` tool's success payload.
|
|
473
452
|
*
|
|
@@ -535,8 +514,6 @@ export declare const TestHistoryInput: Schema.Struct<{
|
|
|
535
514
|
* @public
|
|
536
515
|
*/
|
|
537
516
|
type TestHistoryInputType = Schema.Schema.Type<typeof TestHistoryInput>;
|
|
538
|
-
//#endregion
|
|
539
|
-
//#region src/tools/trends.d.ts
|
|
540
517
|
/**
|
|
541
518
|
* The `test_trends` tool's success payload.
|
|
542
519
|
*
|
|
@@ -589,8 +566,6 @@ export declare const TestTrendsInput: Schema.Struct<{
|
|
|
589
566
|
* @public
|
|
590
567
|
*/
|
|
591
568
|
type TestTrendsInputType = Schema.Schema.Type<typeof TestTrendsInput>;
|
|
592
|
-
//#endregion
|
|
593
|
-
//#region src/tools/errors.d.ts
|
|
594
569
|
/**
|
|
595
570
|
* The `test_errors` tool's success payload — populates `structuredContent`.
|
|
596
571
|
*
|
|
@@ -644,8 +619,6 @@ export declare const TestErrorsInput: Schema.Struct<{
|
|
|
644
619
|
* @public
|
|
645
620
|
*/
|
|
646
621
|
type TestErrorsInputType = Schema.Schema.Type<typeof TestErrorsInput>;
|
|
647
|
-
//#endregion
|
|
648
|
-
//#region src/tools/file-coverage.d.ts
|
|
649
622
|
/**
|
|
650
623
|
* The `file_coverage` tool's success payload.
|
|
651
624
|
*
|
|
@@ -708,8 +681,6 @@ export declare const FileCoverageInput: Schema.Struct<{
|
|
|
708
681
|
* @public
|
|
709
682
|
*/
|
|
710
683
|
type FileCoverageInputType = Schema.Schema.Type<typeof FileCoverageInput>;
|
|
711
|
-
//#endregion
|
|
712
|
-
//#region src/tools/settings-list.d.ts
|
|
713
684
|
/**
|
|
714
685
|
* The `settings_list` tool's success payload.
|
|
715
686
|
*
|
|
@@ -728,8 +699,6 @@ export declare const SettingsListResult: Schema.Struct<{
|
|
|
728
699
|
* @public
|
|
729
700
|
*/
|
|
730
701
|
type SettingsListResultType = Schema.Schema.Type<typeof SettingsListResult>;
|
|
731
|
-
//#endregion
|
|
732
|
-
//#region src/tools/cache-health.d.ts
|
|
733
702
|
/**
|
|
734
703
|
* The `cache_health` tool's success payload.
|
|
735
704
|
*
|
|
@@ -759,8 +728,6 @@ export declare const CacheHealthResult: Schema.Union<readonly [Schema.Struct<{
|
|
|
759
728
|
* @public
|
|
760
729
|
*/
|
|
761
730
|
type CacheHealthResultType = Schema.Schema.Type<typeof CacheHealthResult>;
|
|
762
|
-
//#endregion
|
|
763
|
-
//#region src/tools/configure.d.ts
|
|
764
731
|
/**
|
|
765
732
|
* The `configure` tool's success payload.
|
|
766
733
|
*
|
|
@@ -808,8 +775,6 @@ export declare const ConfigureInput: Schema.Struct<{
|
|
|
808
775
|
* @public
|
|
809
776
|
*/
|
|
810
777
|
type ConfigureInputType = Schema.Schema.Type<typeof ConfigureInput>;
|
|
811
|
-
//#endregion
|
|
812
|
-
//#region src/tools/commit-changes.d.ts
|
|
813
778
|
/**
|
|
814
779
|
* The `commit_changes` tool's success payload.
|
|
815
780
|
*
|
|
@@ -851,8 +816,6 @@ export declare const CommitChangesInput: Schema.Struct<{
|
|
|
851
816
|
* @public
|
|
852
817
|
*/
|
|
853
818
|
type CommitChangesInputType = Schema.Schema.Type<typeof CommitChangesInput>;
|
|
854
|
-
//#endregion
|
|
855
|
-
//#region src/tools/turn-search.d.ts
|
|
856
819
|
/**
|
|
857
820
|
* The `turn_search` tool's success payload.
|
|
858
821
|
*
|
|
@@ -892,8 +855,6 @@ export declare const TurnSearchInput: Schema.Struct<{
|
|
|
892
855
|
* @public
|
|
893
856
|
*/
|
|
894
857
|
type TurnSearchInputType = Schema.Schema.Type<typeof TurnSearchInput>;
|
|
895
|
-
//#endregion
|
|
896
|
-
//#region src/tools/failure-signature-get.d.ts
|
|
897
858
|
/**
|
|
898
859
|
* The `failure_signature_get` tool's success payload.
|
|
899
860
|
*
|
|
@@ -935,8 +896,6 @@ export declare const FailureSignatureGetInput: Schema.Struct<{
|
|
|
935
896
|
* @public
|
|
936
897
|
*/
|
|
937
898
|
type FailureSignatureGetInputType = Schema.Schema.Type<typeof FailureSignatureGetInput>;
|
|
938
|
-
//#endregion
|
|
939
|
-
//#region src/tools/acceptance-metrics.d.ts
|
|
940
899
|
/**
|
|
941
900
|
* The `acceptance_metrics` tool's success payload.
|
|
942
901
|
*
|
|
@@ -970,8 +929,6 @@ export declare const AcceptanceMetricsResult: Schema.Struct<{
|
|
|
970
929
|
* @public
|
|
971
930
|
*/
|
|
972
931
|
type AcceptanceMetricsResultType = Schema.Schema.Type<typeof AcceptanceMetricsResult>;
|
|
973
|
-
//#endregion
|
|
974
|
-
//#region src/tools/triage-brief.d.ts
|
|
975
932
|
/**
|
|
976
933
|
* The `triage_brief` tool's success payload.
|
|
977
934
|
*
|
|
@@ -1002,8 +959,6 @@ export declare const TriageBriefInput: Schema.Struct<{
|
|
|
1002
959
|
* @public
|
|
1003
960
|
*/
|
|
1004
961
|
type TriageBriefInputType = Schema.Schema.Type<typeof TriageBriefInput>;
|
|
1005
|
-
//#endregion
|
|
1006
|
-
//#region src/tools/wrapup-prompt.d.ts
|
|
1007
962
|
/**
|
|
1008
963
|
* The `wrapup_prompt` tool's success payload.
|
|
1009
964
|
*
|
|
@@ -1037,8 +992,6 @@ export declare const WrapupPromptInput: Schema.Struct<{
|
|
|
1037
992
|
* @public
|
|
1038
993
|
*/
|
|
1039
994
|
type WrapupPromptInputType = Schema.Schema.Type<typeof WrapupPromptInput>;
|
|
1040
|
-
//#endregion
|
|
1041
|
-
//#region src/tools/register-agent.d.ts
|
|
1042
995
|
/**
|
|
1043
996
|
* The `register_agent` tool's parameters.
|
|
1044
997
|
*
|
|
@@ -1086,8 +1039,6 @@ export declare const RegisterAgentResult: Schema.Union<readonly [Schema.Struct<{
|
|
|
1086
1039
|
* @public
|
|
1087
1040
|
*/
|
|
1088
1041
|
type RegisterAgentOutput = Schema.Schema.Type<typeof RegisterAgentResult>;
|
|
1089
|
-
//#endregion
|
|
1090
|
-
//#region src/tools/tdd-phase-transition-request.d.ts
|
|
1091
1042
|
/**
|
|
1092
1043
|
* The `tdd_phase_transition_request` tool's success payload.
|
|
1093
1044
|
*
|
|
@@ -1144,8 +1095,6 @@ export declare const PhaseTransitionInput: Schema.Struct<{
|
|
|
1144
1095
|
* @public
|
|
1145
1096
|
*/
|
|
1146
1097
|
type PhaseTransitionInputType = Schema.Schema.Type<typeof PhaseTransitionInput>;
|
|
1147
|
-
//#endregion
|
|
1148
|
-
//#region src/tools/tdd-artifact.d.ts
|
|
1149
1098
|
/**
|
|
1150
1099
|
* The `tdd_artifact_list` tool's success payload.
|
|
1151
1100
|
*
|
|
@@ -1197,8 +1146,6 @@ export declare const TddArtifactListInput: Schema.Struct<{
|
|
|
1197
1146
|
* @public
|
|
1198
1147
|
*/
|
|
1199
1148
|
type TddArtifactListInputType = Schema.Schema.Type<typeof TddArtifactListInput>;
|
|
1200
|
-
//#endregion
|
|
1201
|
-
//#region src/tools/tdd-progress-push.d.ts
|
|
1202
1149
|
/**
|
|
1203
1150
|
* The `tdd_progress_push` tool's parameters.
|
|
1204
1151
|
*
|
|
@@ -1227,8 +1174,6 @@ export declare const TddProgressPushResult: Schema.Struct<{
|
|
|
1227
1174
|
* @public
|
|
1228
1175
|
*/
|
|
1229
1176
|
type TddProgressPushResultType = Schema.Schema.Type<typeof TddProgressPushResult>;
|
|
1230
|
-
//#endregion
|
|
1231
|
-
//#region src/tools/run-tests.d.ts
|
|
1232
1177
|
/**
|
|
1233
1178
|
* The `run_tests` tool's success payload.
|
|
1234
1179
|
*
|
|
@@ -1492,8 +1437,6 @@ export declare const RunTestsInput: Schema.Struct<{
|
|
|
1492
1437
|
* @public
|
|
1493
1438
|
*/
|
|
1494
1439
|
type RunTestsInputType = Schema.Schema.Type<typeof RunTestsInput>;
|
|
1495
|
-
//#endregion
|
|
1496
|
-
//#region src/toolkit.d.ts
|
|
1497
1440
|
/**
|
|
1498
1441
|
* Every tool the server registers.
|
|
1499
1442
|
*
|
|
@@ -5602,8 +5545,6 @@ export declare const ToolsLayer: import("effect/Layer").Layer<import("effect/ai/
|
|
|
5602
5545
|
readonly failureMode: "error";
|
|
5603
5546
|
}, import("@vitest-agent/engine").DataReader>;
|
|
5604
5547
|
}>, never, never>;
|
|
5605
|
-
//#endregion
|
|
5606
|
-
//#region src/tools/_tdd-error-envelope.d.ts
|
|
5607
5548
|
/**
|
|
5608
5549
|
* Success-shaped envelope returned by TDD CRUD tools when a known TDD error occurs.
|
|
5609
5550
|
*
|
|
@@ -5621,8 +5562,6 @@ interface TddErrorEnvelope {
|
|
|
5621
5562
|
readonly [key: string]: unknown;
|
|
5622
5563
|
};
|
|
5623
5564
|
}
|
|
5624
|
-
//#endregion
|
|
5625
|
-
//#region src/tools/inventory.d.ts
|
|
5626
5565
|
/**
|
|
5627
5566
|
* The `inventory` tool's success payload.
|
|
5628
5567
|
*
|
|
@@ -5763,8 +5702,6 @@ export declare const InventoryInput: Schema.Union<readonly [Schema.Struct<{
|
|
|
5763
5702
|
* @public
|
|
5764
5703
|
*/
|
|
5765
5704
|
type InventoryInputType = Schema.Schema.Type<typeof InventoryInput>;
|
|
5766
|
-
//#endregion
|
|
5767
|
-
//#region src/tools/note.d.ts
|
|
5768
5705
|
/**
|
|
5769
5706
|
* The `note` tool's success payload.
|
|
5770
5707
|
*
|
|
@@ -5890,8 +5827,6 @@ export declare const NoteParams: Schema.Union<readonly [Schema.Struct<{
|
|
|
5890
5827
|
* @public
|
|
5891
5828
|
*/
|
|
5892
5829
|
type NoteParamsType = Schema.Schema.Type<typeof NoteParams>;
|
|
5893
|
-
//#endregion
|
|
5894
|
-
//#region src/tools/test.d.ts
|
|
5895
5830
|
/**
|
|
5896
5831
|
* The `test` tool's success payload.
|
|
5897
5832
|
*
|
|
@@ -6067,8 +6002,6 @@ export declare const TestInput: Schema.Union<readonly [Schema.Struct<{
|
|
|
6067
6002
|
* @public
|
|
6068
6003
|
*/
|
|
6069
6004
|
type TestInputType = Schema.Schema.Type<typeof TestInput>;
|
|
6070
|
-
//#endregion
|
|
6071
|
-
//#region src/version.d.ts
|
|
6072
6005
|
/**
|
|
6073
6006
|
* The version of this package, inlined at build time from
|
|
6074
6007
|
* `package.json#version` via the bundler's `__PACKAGE_VERSION__` substitution.
|
|
@@ -6078,6 +6011,5 @@ type TestInputType = Schema.Schema.Type<typeof TestInput>;
|
|
|
6078
6011
|
* @public
|
|
6079
6012
|
*/
|
|
6080
6013
|
export declare const CURRENT_MCP_VERSION: string;
|
|
6081
|
-
//#endregion
|
|
6082
6014
|
export { type AcceptanceMetricsResultType, type CacheHealthResultType, type CommitChangesInputType, type CommitChangesResultType, type ConfigureInputType, type ConfigureResultType, type CurrentSessionIdRef, type FailureSignatureGetInputType, type FailureSignatureGetResultType, type FileCoverageInputType, type FileCoverageResultType, type HelpResultType, type InventoryInputType, type InventoryResultType, type McpSessionOptions, type NoteParamsType, type NoteResultType, type PhaseTransitionInputType, type PhaseTransitionResultType, type PingResultType, type PlatformServices, type RegisterAgentInputType, type RegisterAgentOutput, type Remediation, type RunTestsInputType, type RunTestsResultType, type ServerLayerOptions, type SessionContext, type SessionContextRef, type SettingsListResultType, type TddArtifactListInputType, type TddArtifactListResultType, type TddErrorEnvelope, type TddProgressPushInputType, type TddProgressPushResultType, type TestCoverageInputType, type TestCoverageResultType, type TestErrorsInputType, type TestErrorsResultType, type TestHistoryInputType, type TestHistoryResultType, type TestInputType, type TestOverviewInputType, type TestOverviewResultType, type TestResultType, type TestStatusInputType, type TestStatusResultType, type TestTrendsInputType, type TestTrendsResultType, ToolRefusal, type TriageBriefInputType, type TriageBriefResultType, type TurnSearchInputType, type TurnSearchResultType, type WrapupPromptInputType, type WrapupPromptResultType };
|
|
6083
6015
|
//# sourceMappingURL=index.d.ts.map
|
package/main.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Distribution } from "@effected/engine";
|
|
2
|
-
//#region src/main.d.ts
|
|
3
2
|
/**
|
|
4
3
|
* Options for {@link main}.
|
|
5
4
|
*
|
|
@@ -26,5 +25,4 @@ export interface MainOptions {
|
|
|
26
25
|
* @public
|
|
27
26
|
*/
|
|
28
27
|
export declare const main: (options?: MainOptions) => Promise<void>;
|
|
29
|
-
//#endregion
|
|
30
28
|
//# sourceMappingURL=main.d.ts.map
|
package/main.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { McpGuard } from "@effected/mcp/guard";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
// src/main.ts
|
|
4
4
|
/**
|
|
5
5
|
* Optional first positional argument: an initial Claude Code chat UUID (the
|
|
6
6
|
* host's `chatId`) to seed the MCP server's session association. Claude Code
|
|
@@ -102,5 +102,4 @@ const main = (options = {}) => McpGuard.run({
|
|
|
102
102
|
}
|
|
103
103
|
});
|
|
104
104
|
|
|
105
|
-
//#endregion
|
|
106
105
|
export { main };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vitest-agent/mcp",
|
|
3
|
-
"version": "5.2.
|
|
3
|
+
"version": "5.2.8",
|
|
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.
|
|
47
|
-
"@effect/sql-sqlite-node": "^4.0.
|
|
48
|
-
"@effected/engine": "^0.
|
|
49
|
-
"@effected/git": "^0.
|
|
50
|
-
"@effected/mcp": "^0.
|
|
51
|
-
"@effected/walker": "^0.
|
|
52
|
-
"@vitest-agent/engine": "1.
|
|
53
|
-
"@vitest-agent/sdk": "7.0.
|
|
54
|
-
"effect": "^4.0.
|
|
46
|
+
"@effect/platform-node": "^4.0.6",
|
|
47
|
+
"@effect/sql-sqlite-node": "^4.0.6",
|
|
48
|
+
"@effected/engine": "^0.8.0",
|
|
49
|
+
"@effected/git": "^0.24.0",
|
|
50
|
+
"@effected/mcp": "^0.9.0",
|
|
51
|
+
"@effected/walker": "^0.19.0",
|
|
52
|
+
"@vitest-agent/engine": "1.1.1",
|
|
53
|
+
"@vitest-agent/sdk": "7.0.5",
|
|
54
|
+
"effect": "^4.0.6"
|
|
55
55
|
},
|
|
56
56
|
"peerDependencies": {
|
|
57
57
|
"vitest": "^5.0.0"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/prompts/explain-failure.ts
|
|
2
2
|
function explainFailurePrompt(args) {
|
|
3
3
|
return { messages: [{
|
|
4
4
|
role: "user",
|
|
@@ -23,5 +23,4 @@ function explainFailurePrompt(args) {
|
|
|
23
23
|
}] };
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
//#endregion
|
|
27
26
|
export { explainFailurePrompt };
|
package/prompts/layer.js
CHANGED
|
@@ -8,7 +8,7 @@ import { wrapupPrompt } from "./wrapup.js";
|
|
|
8
8
|
import { Effect, Layer, Schema } from "effect";
|
|
9
9
|
import { McpSchema, McpServer } from "effect/ai";
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
// src/prompts/layer.ts
|
|
12
12
|
/**
|
|
13
13
|
* The six prompt names `PromptsLayer` registers, in registration order.
|
|
14
14
|
* Pinned against the `help` text by `__test__/help-drift.test.ts`.
|
|
@@ -110,5 +110,4 @@ const Wrapup = McpServer.prompt({
|
|
|
110
110
|
*/
|
|
111
111
|
const PromptsLayer = Layer.mergeAll(Triage, WhyFlaky, RegressionSincePass, ExplainFailure, TddResume, Wrapup);
|
|
112
112
|
|
|
113
|
-
//#endregion
|
|
114
113
|
export { PROMPT_NAMES, PromptsLayer, WRAPUP_KINDS };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/prompts/regression-since-pass.ts
|
|
2
2
|
function regressionSincePassPrompt(args) {
|
|
3
3
|
const projectClause = args.project ? ` in project \`${args.project}\`` : "";
|
|
4
4
|
return { messages: [{
|
|
@@ -24,5 +24,4 @@ function regressionSincePassPrompt(args) {
|
|
|
24
24
|
}] };
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
//#endregion
|
|
28
27
|
export { regressionSincePassPrompt };
|
package/prompts/tdd-resume.js
CHANGED
package/prompts/triage.js
CHANGED
package/prompts/why-flaky.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/prompts/why-flaky.ts
|
|
2
2
|
function whyFlakyPrompt(args) {
|
|
3
3
|
const projectClause = args.project ? ` in project \`${args.project}\`` : "";
|
|
4
4
|
return { messages: [{
|
|
@@ -26,5 +26,4 @@ function whyFlakyPrompt(args) {
|
|
|
26
26
|
}] };
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
//#endregion
|
|
30
29
|
export { whyFlakyPrompt };
|
package/prompts/wrapup.js
CHANGED
package/server.js
CHANGED
|
@@ -3,7 +3,7 @@ import { Kit, ToolsLayer } from "./toolkit.js";
|
|
|
3
3
|
import { McpStdio, McpToolkit } from "@effected/mcp";
|
|
4
4
|
import { Layer } from "effect";
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
// src/server.ts
|
|
7
7
|
/** One-line human summary agents see on `serverInfo.description`. */
|
|
8
8
|
const DESCRIPTION = "vitest-agent MCP server: test results, coverage, history and TDD lifecycle for LLM coding agents.";
|
|
9
9
|
/**
|
|
@@ -45,5 +45,4 @@ const ServerLayer = (options) => Layer.mergeAll(McpToolkit.layer(Kit).pipe(Layer
|
|
|
45
45
|
instructions: SERVER_INSTRUCTIONS
|
|
46
46
|
})));
|
|
47
47
|
|
|
48
|
-
//#endregion
|
|
49
48
|
export { SERVER_INSTRUCTIONS, ServerLayer };
|
package/session.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Context, Layer, MutableRef } from "effect";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
// src/session.ts
|
|
4
4
|
/**
|
|
5
5
|
* Creates a new `CurrentSessionIdRef` with an optional initial value.
|
|
6
6
|
*
|
|
@@ -98,5 +98,4 @@ var McpSession = class McpSession extends Context.Service()("@vitest-agent/mcp/M
|
|
|
98
98
|
});
|
|
99
99
|
};
|
|
100
100
|
|
|
101
|
-
//#endregion
|
|
102
101
|
export { McpSession, createCurrentSessionIdRef, createSessionContextRef, sessionContextFromEnv };
|
package/toolkit.js
CHANGED
|
@@ -32,7 +32,7 @@ import { handleWrapupPrompt, wrapupPromptTool } from "./tools/wrapup-prompt.js";
|
|
|
32
32
|
import { McpToolkit } from "@effected/mcp";
|
|
33
33
|
import { Toolkit } from "effect/ai";
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
// src/toolkit.ts
|
|
36
36
|
/**
|
|
37
37
|
* Every tool the server registers.
|
|
38
38
|
*
|
|
@@ -86,5 +86,4 @@ const toolHandlers = {
|
|
|
86
86
|
*/
|
|
87
87
|
const ToolsLayer = Kit.toLayer(toolHandlers);
|
|
88
88
|
|
|
89
|
-
//#endregion
|
|
90
89
|
export { Kit, ToolsLayer, toolHandlers };
|
package/tools/_project-groups.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
// src/tools/_project-groups.ts
|
|
4
4
|
const resolveProjectTargets = (project, listProjects) => project ? Effect.succeed([{ project }]) : Effect.map(listProjects(), (runs) => runs.map((run) => ({ project: run.project })));
|
|
5
5
|
const collectProjectRows = (targets, listRows) => Effect.gen(function* () {
|
|
6
6
|
const groups = [];
|
|
@@ -20,5 +20,4 @@ const collectProjectRows = (targets, listRows) => Effect.gen(function* () {
|
|
|
20
20
|
};
|
|
21
21
|
});
|
|
22
22
|
|
|
23
|
-
//#endregion
|
|
24
23
|
export { collectProjectRows, resolveProjectTargets };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
2
|
import { BehaviorNotFoundError, GoalNotFoundError, IllegalStatusTransitionError, TddTaskAlreadyEndedError, TddTaskNotFoundError } from "@vitest-agent/sdk";
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
// src/tools/_tdd-error-envelope.ts
|
|
5
5
|
const goalNotFound = (e) => ({
|
|
6
6
|
ok: false,
|
|
7
7
|
error: {
|
|
@@ -85,5 +85,4 @@ const tddErrorToEnvelope = (e) => {
|
|
|
85
85
|
};
|
|
86
86
|
const catchTddErrorsAsEnvelope = (effect) => effect.pipe(Effect.catch((e) => isKnownTddError(e) ? Effect.succeed(tddErrorToEnvelope(e)) : Effect.fail(e)));
|
|
87
87
|
|
|
88
|
-
//#endregion
|
|
89
88
|
export { catchTddErrorsAsEnvelope };
|
|
@@ -2,7 +2,7 @@ import { Effect, Schema } from "effect";
|
|
|
2
2
|
import { DataReader } from "@vitest-agent/engine";
|
|
3
3
|
import { Tool } from "effect/ai";
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
// src/tools/acceptance-metrics.ts
|
|
6
6
|
const totalAnnotation = { description: "Sample size — number of observations the metric ratio is computed over." };
|
|
7
7
|
const ratioAnnotation = { description: "Compliance ratio in [0, 1]. Multiply by 100 for the percentage form." };
|
|
8
8
|
/**
|
|
@@ -68,5 +68,4 @@ const acceptanceMetricsTool = Tool.make("acceptance_metrics", {
|
|
|
68
68
|
dependencies: [DataReader]
|
|
69
69
|
}).annotate(Tool.Title, "Acceptance metrics").annotate(Tool.Readonly, true).annotate(Tool.Destructive, false).annotate(Tool.OpenWorld, false).annotate(Tool.Idempotent, true);
|
|
70
70
|
|
|
71
|
-
//#endregion
|
|
72
71
|
export { AcceptanceMetricsResult, acceptanceMetricsTool, handleAcceptanceMetrics };
|
package/tools/cache-health.js
CHANGED
|
@@ -4,7 +4,7 @@ import { DataReader } from "@vitest-agent/engine";
|
|
|
4
4
|
import { Tool } from "effect/ai";
|
|
5
5
|
import { CacheManifest } from "@vitest-agent/sdk";
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
// src/tools/cache-health.ts
|
|
8
8
|
const ManifestPresent = Schema.Struct({
|
|
9
9
|
manifestPresent: Schema.Literal(true).annotate({ description: "Discriminant — `true` when a cache manifest exists." }),
|
|
10
10
|
manifest: CacheManifest.annotate({ description: "Full cache manifest content as written by the reporter." }),
|
|
@@ -58,5 +58,4 @@ const cacheHealthTool = Tool.make("cache_health", {
|
|
|
58
58
|
dependencies: [DataReader]
|
|
59
59
|
}).annotate(Tool.Title, "Cache health").annotate(Tool.Readonly, true).annotate(Tool.Destructive, false).annotate(Tool.OpenWorld, false).annotate(Tool.Idempotent, true);
|
|
60
60
|
|
|
61
|
-
//#endregion
|
|
62
61
|
export { CacheHealthResult, cacheHealthTool, handleCacheHealth };
|
package/tools/commit-changes.js
CHANGED
|
@@ -2,7 +2,7 @@ import { Effect, Schema } from "effect";
|
|
|
2
2
|
import { DataReader } from "@vitest-agent/engine";
|
|
3
3
|
import { Tool } from "effect/ai";
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
// src/tools/commit-changes.ts
|
|
6
6
|
const FileRow = Schema.Struct({
|
|
7
7
|
filePath: Schema.String.annotate({ description: "Repo-relative path of the changed file." }),
|
|
8
8
|
changeKind: Schema.Literals([
|
|
@@ -67,5 +67,4 @@ const commitChangesTool = Tool.make("commit_changes", {
|
|
|
67
67
|
dependencies: [DataReader]
|
|
68
68
|
}).annotate(Tool.Title, "Commit changes").annotate(Tool.Readonly, true).annotate(Tool.Destructive, false).annotate(Tool.OpenWorld, false).annotate(Tool.Idempotent, true);
|
|
69
69
|
|
|
70
|
-
//#endregion
|
|
71
70
|
export { CommitChangesInput, CommitChangesResult, commitChangesTool, handleCommitChanges };
|
package/tools/configure.js
CHANGED
|
@@ -3,7 +3,7 @@ import { Effect, Option, Schema } from "effect";
|
|
|
3
3
|
import { DataReader } from "@vitest-agent/engine";
|
|
4
4
|
import { Tool } from "effect/ai";
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
// src/tools/configure.ts
|
|
7
7
|
const SettingsRowSchema = Schema.Struct({
|
|
8
8
|
hash: Schema.String.annotate({ description: "Stable SHA-1 of the captured Vitest settings; `test_runs.settings_hash` foreign key." }),
|
|
9
9
|
reporters: Schema.NullOr(Schema.String).annotate({ description: "Comma-separated reporter list as resolved from the user's vitest config." }),
|
|
@@ -88,5 +88,4 @@ const configureTool = Tool.make("configure", {
|
|
|
88
88
|
dependencies: [DataReader]
|
|
89
89
|
}).annotate(Tool.Title, "Configure").annotate(Tool.Readonly, true).annotate(Tool.Destructive, false).annotate(Tool.OpenWorld, false).annotate(Tool.Idempotent, true);
|
|
90
90
|
|
|
91
|
-
//#endregion
|
|
92
91
|
export { ConfigureInput, ConfigureResult, configureTool, handleConfigure };
|
package/tools/coverage.js
CHANGED
|
@@ -4,7 +4,7 @@ import { DataReader } from "@vitest-agent/engine";
|
|
|
4
4
|
import { Tool } from "effect/ai";
|
|
5
5
|
import { CoverageReport } from "@vitest-agent/sdk";
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
// src/tools/coverage.ts
|
|
8
8
|
const CoverageAvailable = Schema.Struct({
|
|
9
9
|
dataAvailable: Schema.Literal(true),
|
|
10
10
|
project: Schema.String,
|
|
@@ -61,5 +61,4 @@ const testCoverageTool = Tool.make("test_coverage", {
|
|
|
61
61
|
dependencies: [DataReader]
|
|
62
62
|
}).annotate(Tool.Title, "Test coverage").annotate(Tool.Readonly, true).annotate(Tool.Destructive, false).annotate(Tool.OpenWorld, false).annotate(Tool.Idempotent, true);
|
|
63
63
|
|
|
64
|
-
//#endregion
|
|
65
64
|
export { TestCoverageInput, TestCoverageResult, handleTestCoverage, testCoverageTool };
|
package/tools/errors.js
CHANGED
|
@@ -2,7 +2,7 @@ import { Effect, Schema } from "effect";
|
|
|
2
2
|
import { DataReader } from "@vitest-agent/engine";
|
|
3
3
|
import { Tool } from "effect/ai";
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
// src/tools/errors.ts
|
|
6
6
|
/** One annotation attached to a failing test, surfaced with its error. */
|
|
7
7
|
const TestErrorAnnotation = Schema.Struct({
|
|
8
8
|
type: Schema.String.annotate({ description: "Annotation type as the test author wrote it — an arbitrary string, not an enum." }),
|
|
@@ -123,5 +123,4 @@ const testErrorsTool = Tool.make("test_errors", {
|
|
|
123
123
|
dependencies: [DataReader]
|
|
124
124
|
}).annotate(Tool.Title, "Test errors").annotate(Tool.Readonly, true).annotate(Tool.Destructive, false).annotate(Tool.OpenWorld, false).annotate(Tool.Idempotent, true);
|
|
125
125
|
|
|
126
|
-
//#endregion
|
|
127
126
|
export { TestErrorAnnotation, TestErrorRow, TestErrorsInput, TestErrorsResult, handleTestErrors, testErrorsTool };
|
|
@@ -3,7 +3,7 @@ import { Effect, Option, Schema } from "effect";
|
|
|
3
3
|
import { DataReader } from "@vitest-agent/engine";
|
|
4
4
|
import { Tool } from "effect/ai";
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
// src/tools/failure-signature-get.ts
|
|
7
7
|
const RecentError = Schema.Struct({
|
|
8
8
|
runId: Schema.Number,
|
|
9
9
|
errorName: Schema.NullOr(Schema.String),
|
|
@@ -69,5 +69,4 @@ const failureSignatureGetTool = Tool.make("failure_signature_get", {
|
|
|
69
69
|
dependencies: [DataReader]
|
|
70
70
|
}).annotate(Tool.Title, "Failure signature").annotate(Tool.Readonly, true).annotate(Tool.Destructive, false).annotate(Tool.OpenWorld, false).annotate(Tool.Idempotent, true);
|
|
71
71
|
|
|
72
|
-
//#endregion
|
|
73
72
|
export { FailureSignatureGetInput, FailureSignatureGetResult, failureSignatureGetTool, handleFailureSignatureGet };
|
package/tools/file-coverage.js
CHANGED
|
@@ -4,7 +4,7 @@ import { DataReader } from "@vitest-agent/engine";
|
|
|
4
4
|
import { Tool } from "effect/ai";
|
|
5
5
|
import { CoverageTotals, FileCoverageReport } from "@vitest-agent/sdk";
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
// src/tools/file-coverage.ts
|
|
8
8
|
const CoverageGlobalThresholds = Schema.Struct({
|
|
9
9
|
statements: Schema.optional(Schema.Number),
|
|
10
10
|
branches: Schema.optional(Schema.Number),
|
|
@@ -98,5 +98,4 @@ const fileCoverageTool = Tool.make("file_coverage", {
|
|
|
98
98
|
dependencies: [DataReader]
|
|
99
99
|
}).annotate(Tool.Title, "File coverage").annotate(Tool.Readonly, true).annotate(Tool.Destructive, false).annotate(Tool.OpenWorld, false).annotate(Tool.Idempotent, true);
|
|
100
100
|
|
|
101
|
-
//#endregion
|
|
102
101
|
export { FileCoverageInput, FileCoverageResult, fileCoverageTool, handleFileCoverage };
|
package/tools/help.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Effect, Schema } from "effect";
|
|
2
2
|
import { Tool } from "effect/ai";
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
// src/tools/help.ts
|
|
5
5
|
/**
|
|
6
6
|
* The `help` tool's success payload.
|
|
7
7
|
*
|
|
@@ -184,5 +184,4 @@ const helpTool = Tool.make("help", {
|
|
|
184
184
|
*/
|
|
185
185
|
const handleHelp = () => Effect.succeed({ helpText: HELP_TEXT });
|
|
186
186
|
|
|
187
|
-
//#endregion
|
|
188
187
|
export { HELP_TEXT, HelpResult, handleHelp, helpTool };
|
package/tools/history.js
CHANGED
|
@@ -3,7 +3,7 @@ import { DataReader } from "@vitest-agent/engine";
|
|
|
3
3
|
import { Tool } from "effect/ai";
|
|
4
4
|
import { HistoryRecord } from "@vitest-agent/sdk";
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
// src/tools/history.ts
|
|
7
7
|
const FlakyTestRow = Schema.Struct({
|
|
8
8
|
fullName: Schema.String.annotate({ description: "Full hierarchical test name (`describe > it`)." }),
|
|
9
9
|
modulePath: Schema.String.annotate({ description: "Project-relative test module path -- disambiguates same-named tests across files." }),
|
|
@@ -117,5 +117,4 @@ const testHistoryTool = Tool.make("test_history", {
|
|
|
117
117
|
dependencies: [DataReader]
|
|
118
118
|
}).annotate(Tool.Title, "Test history").annotate(Tool.Readonly, true).annotate(Tool.Destructive, false).annotate(Tool.OpenWorld, false).annotate(Tool.Idempotent, true);
|
|
119
119
|
|
|
120
|
-
//#endregion
|
|
121
120
|
export { TestHistoryInput, TestHistoryResult, handleTestHistory, testHistoryTool };
|
package/tools/hypothesis.js
CHANGED
|
@@ -5,7 +5,7 @@ import { Effect, Match, Option, Schema } from "effect";
|
|
|
5
5
|
import { DataReader, DataStore } from "@vitest-agent/engine";
|
|
6
6
|
import { Tool } from "effect/ai";
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
// src/tools/hypothesis.ts
|
|
9
9
|
const HypothesisRowSchema = Schema.Struct({
|
|
10
10
|
id: Schema.Number,
|
|
11
11
|
sessionId: Schema.Number,
|
|
@@ -180,5 +180,4 @@ const hypothesisTool = McpToolkit.unionTool("hypothesis", {
|
|
|
180
180
|
failure: ToolRefusal
|
|
181
181
|
}).addDependency(DataReader).addDependency(DataStore).addDependency(McpSession).annotate(Tool.Title, "Hypothesis").annotate(Tool.Readonly, false).annotate(Tool.Destructive, false).annotate(Tool.OpenWorld, false).annotate(Tool.Idempotent, false);
|
|
182
182
|
|
|
183
|
-
//#endregion
|
|
184
183
|
export { HypothesisInput, HypothesisResult, handleHypothesis, hypothesisTool };
|
package/tools/inventory.js
CHANGED
|
@@ -4,7 +4,7 @@ import { Effect, Match, Option, Schema } from "effect";
|
|
|
4
4
|
import { DataReader } from "@vitest-agent/engine";
|
|
5
5
|
import { Tool } from "effect/ai";
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
// src/tools/inventory.ts
|
|
8
8
|
const ProjectRunSummary = Schema.Struct({
|
|
9
9
|
project: Schema.String,
|
|
10
10
|
lastRun: Schema.NullOr(Schema.String),
|
|
@@ -299,5 +299,4 @@ const inventoryTool = McpToolkit.unionTool("inventory", {
|
|
|
299
299
|
failure: ToolRefusal
|
|
300
300
|
}).addDependency(DataReader).annotate(Tool.Title, "Inventory").annotate(Tool.Readonly, true).annotate(Tool.Destructive, false).annotate(Tool.OpenWorld, false).annotate(Tool.Idempotent, true);
|
|
301
301
|
|
|
302
|
-
//#endregion
|
|
303
302
|
export { InventoryInput, InventoryResult, handleInventory, inventoryTool };
|
package/tools/note.js
CHANGED
|
@@ -3,7 +3,7 @@ import { Effect, Match, Option, Schema } from "effect";
|
|
|
3
3
|
import { DataReader, DataStore } from "@vitest-agent/engine";
|
|
4
4
|
import { Tool } from "effect/ai";
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
// src/tools/note.ts
|
|
7
7
|
const NoteScope = Schema.Literals([
|
|
8
8
|
"global",
|
|
9
9
|
"project",
|
|
@@ -218,5 +218,4 @@ const noteTool = McpToolkit.unionTool("note", {
|
|
|
218
218
|
failure: ToolRefusal
|
|
219
219
|
}).addDependency(DataReader).addDependency(DataStore).annotate(Tool.Title, "Note").annotate(Tool.Readonly, false).annotate(Tool.Destructive, true).annotate(Tool.OpenWorld, false).annotate(Tool.Idempotent, false);
|
|
220
220
|
|
|
221
|
-
//#endregion
|
|
222
221
|
export { NoteParams, NoteResult, handleNote, noteTool };
|
package/tools/overview.js
CHANGED
|
@@ -3,7 +3,7 @@ import { Effect, Option, Schema } from "effect";
|
|
|
3
3
|
import { DataReader } from "@vitest-agent/engine";
|
|
4
4
|
import { Tool } from "effect/ai";
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
// src/tools/overview.ts
|
|
7
7
|
const ProjectRunSummary = Schema.Struct({
|
|
8
8
|
project: Schema.String,
|
|
9
9
|
lastRun: Schema.NullOr(Schema.String),
|
|
@@ -83,5 +83,4 @@ const testOverviewTool = Tool.make("test_overview", {
|
|
|
83
83
|
dependencies: [DataReader]
|
|
84
84
|
}).annotate(Tool.Title, "Test overview").annotate(Tool.Readonly, true).annotate(Tool.Destructive, false).annotate(Tool.OpenWorld, false).annotate(Tool.Idempotent, true);
|
|
85
85
|
|
|
86
|
-
//#endregion
|
|
87
86
|
export { TestOverviewInput, TestOverviewResult, handleTestOverview, testOverviewTool };
|
package/tools/ping.js
CHANGED
|
@@ -2,7 +2,7 @@ import { Effect, Option, Schema } from "effect";
|
|
|
2
2
|
import { Tool } from "effect/ai";
|
|
3
3
|
import { CurrentDistribution, DistributionField } from "@effected/engine";
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
// src/tools/ping.ts
|
|
6
6
|
/**
|
|
7
7
|
* The `ping` tool's success payload.
|
|
8
8
|
*
|
|
@@ -40,5 +40,4 @@ const handlePing = () => Effect.gen(function* () {
|
|
|
40
40
|
};
|
|
41
41
|
});
|
|
42
42
|
|
|
43
|
-
//#endregion
|
|
44
43
|
export { PingResult, handlePing, pingTool };
|
package/tools/register-agent.js
CHANGED
|
@@ -3,7 +3,7 @@ import { Effect, Option, Schema } from "effect";
|
|
|
3
3
|
import { DataReader, DataStore, deriveIdempotencyKey } from "@vitest-agent/engine";
|
|
4
4
|
import { Tool } from "effect/ai";
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
// src/tools/register-agent.ts
|
|
7
7
|
/**
|
|
8
8
|
* `register_agent` MCP tool.
|
|
9
9
|
*
|
|
@@ -163,5 +163,4 @@ const registerAgentTool = Tool.make("register_agent", {
|
|
|
163
163
|
dependencies: [DataReader, DataStore]
|
|
164
164
|
}).annotate(Tool.Title, "Register agent").annotate(Tool.Readonly, false).annotate(Tool.Destructive, false).annotate(Tool.OpenWorld, false).annotate(Tool.Idempotent, true);
|
|
165
165
|
|
|
166
|
-
//#endregion
|
|
167
166
|
export { RegisterAgentInput, RegisterAgentResult, handleRegisterAgent, registerAgentTool };
|
package/tools/run-tests.js
CHANGED
|
@@ -18,7 +18,7 @@ import * as NodePath from "@effect/platform-node/NodePath";
|
|
|
18
18
|
import { Git } from "@effected/git";
|
|
19
19
|
import { Walker } from "@effected/walker";
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
// src/tools/run-tests.ts
|
|
22
22
|
const TagFilter = Schema.Struct({
|
|
23
23
|
all: Schema.optionalKey(Schema.Array(Schema.String)).annotate({ description: "Require every listed tag" }),
|
|
24
24
|
any: Schema.optionalKey(Schema.Array(Schema.String)).annotate({ description: "Require at least one listed tag" }),
|
|
@@ -712,5 +712,4 @@ const runTestsTool = Tool.make("run_tests", {
|
|
|
712
712
|
]
|
|
713
713
|
}).annotate(Tool.Title, "Run tests").annotate(Tool.Readonly, false).annotate(Tool.Destructive, false).annotate(Tool.OpenWorld, false).annotate(Tool.Idempotent, false);
|
|
714
714
|
|
|
715
|
-
//#endregion
|
|
716
715
|
export { RunTestsInput, RunTestsResult, coerceErrors, composeTagExpression, deriveRunScope, handleRunTests, isNoMatch, makeBestEffortFork, makeCoverageDirOverride, readDiscoveryLastScannedAt, resolveAnchoredConfigFile, resolveConfigAnchoredRoot, resolveVitestNodeEntry, runTestsSemaphore, runTestsTool, sanitizeTestArgs, staleInstallMessage, toNoMatch, toOkPayload, validateProjectRoot, vitestLoader, withStdioCaptured };
|
package/tools/settings-list.js
CHANGED
|
@@ -2,7 +2,7 @@ import { Effect, Schema } from "effect";
|
|
|
2
2
|
import { DataReader } from "@vitest-agent/engine";
|
|
3
3
|
import { Tool } from "effect/ai";
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
// src/tools/settings-list.ts
|
|
6
6
|
const SettingsRow = Schema.Struct({
|
|
7
7
|
hash: Schema.String.annotate({ description: "Stable SHA-1 of the captured Vitest settings; FK target on test_runs." }),
|
|
8
8
|
capturedAt: Schema.String.annotate({ description: "ISO-8601 timestamp the settings row was first written." })
|
|
@@ -44,5 +44,4 @@ const settingsListTool = Tool.make("settings_list", {
|
|
|
44
44
|
dependencies: [DataReader]
|
|
45
45
|
}).annotate(Tool.Title, "Settings list").annotate(Tool.Readonly, true).annotate(Tool.Destructive, false).annotate(Tool.OpenWorld, false).annotate(Tool.Idempotent, true);
|
|
46
46
|
|
|
47
|
-
//#endregion
|
|
48
47
|
export { SettingsListResult, handleSettingsList, settingsListTool };
|
package/tools/status.js
CHANGED
|
@@ -4,7 +4,7 @@ import { DataReader } from "@vitest-agent/engine";
|
|
|
4
4
|
import { Tool } from "effect/ai";
|
|
5
5
|
import { CacheManifestEntry } from "@vitest-agent/sdk";
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
// src/tools/status.ts
|
|
8
8
|
const StatusAvailable = Schema.Struct({
|
|
9
9
|
dataAvailable: Schema.Literal(true).annotate({ description: "Discriminant — `true` when at least one project entry exists in the manifest." }),
|
|
10
10
|
manifestUpdatedAt: Schema.String,
|
|
@@ -71,5 +71,4 @@ const testStatusTool = Tool.make("test_status", {
|
|
|
71
71
|
dependencies: [DataReader]
|
|
72
72
|
}).annotate(Tool.Title, "Test status").annotate(Tool.Readonly, true).annotate(Tool.Destructive, false).annotate(Tool.OpenWorld, false).annotate(Tool.Idempotent, true);
|
|
73
73
|
|
|
74
|
-
//#endregion
|
|
75
74
|
export { TestStatusInput, TestStatusResult, handleTestStatus, testStatusTool };
|
package/tools/tdd-artifact.js
CHANGED
|
@@ -2,7 +2,7 @@ import { Effect, Schema } from "effect";
|
|
|
2
2
|
import { DataReader } from "@vitest-agent/engine";
|
|
3
3
|
import { Tool } from "effect/ai";
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
// src/tools/tdd-artifact.ts
|
|
6
6
|
const ArtifactKindSchema = Schema.Literals([
|
|
7
7
|
"test_written",
|
|
8
8
|
"test_failed_run",
|
|
@@ -104,5 +104,4 @@ const tddArtifactListTool = Tool.make("tdd_artifact_list", {
|
|
|
104
104
|
dependencies: [DataReader]
|
|
105
105
|
}).annotate(Tool.Title, "TDD artifact list").annotate(Tool.Readonly, true).annotate(Tool.Destructive, false).annotate(Tool.OpenWorld, false).annotate(Tool.Idempotent, true);
|
|
106
106
|
|
|
107
|
-
//#endregion
|
|
108
107
|
export { TddArtifactListInput, TddArtifactListResult, handleTddArtifactList, tddArtifactListTool };
|
package/tools/tdd-behavior.js
CHANGED
|
@@ -7,7 +7,7 @@ import { Tool } from "effect/ai";
|
|
|
7
7
|
import { BehaviorDetail, BehaviorRow } from "@vitest-agent/sdk";
|
|
8
8
|
import { Remediation } from "@effected/engine";
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
// src/tools/tdd-behavior.ts
|
|
11
11
|
/**
|
|
12
12
|
* Consolidated `tdd_behavior` MCP tool.
|
|
13
13
|
*
|
|
@@ -215,5 +215,4 @@ const tddBehaviorTool = McpToolkit.unionTool("tdd_behavior", {
|
|
|
215
215
|
failure: ToolRefusal
|
|
216
216
|
}).addDependency(DataReader).addDependency(DataStore).annotate(Tool.Title, "TDD behavior").annotate(Tool.Readonly, false).annotate(Tool.Destructive, true).annotate(Tool.OpenWorld, false).annotate(Tool.Idempotent, false);
|
|
217
217
|
|
|
218
|
-
//#endregion
|
|
219
218
|
export { TddBehaviorInput, TddBehaviorResult, handleTddBehavior, tddBehaviorTool };
|
package/tools/tdd-goal.js
CHANGED
|
@@ -7,7 +7,7 @@ import { Tool } from "effect/ai";
|
|
|
7
7
|
import { GoalDetail, GoalRow } from "@vitest-agent/sdk";
|
|
8
8
|
import { Remediation } from "@effected/engine";
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
// src/tools/tdd-goal.ts
|
|
11
11
|
/**
|
|
12
12
|
* Consolidated `tdd_goal` MCP tool.
|
|
13
13
|
*
|
|
@@ -183,5 +183,4 @@ const tddGoalTool = McpToolkit.unionTool("tdd_goal", {
|
|
|
183
183
|
failure: ToolRefusal
|
|
184
184
|
}).addDependency(DataReader).addDependency(DataStore).annotate(Tool.Title, "TDD goal").annotate(Tool.Readonly, false).annotate(Tool.Destructive, true).annotate(Tool.OpenWorld, false).annotate(Tool.Idempotent, false);
|
|
185
185
|
|
|
186
|
-
//#endregion
|
|
187
186
|
export { TddGoalInput, TddGoalResult, handleTddGoal, tddGoalTool };
|
|
@@ -5,7 +5,7 @@ import { Tool } from "effect/ai";
|
|
|
5
5
|
import { requiredArtifactForTransition, transitionEnforcesBehaviorMatch, validatePhaseTransition } from "@vitest-agent/sdk";
|
|
6
6
|
import { Remediation } from "@effected/engine";
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
// src/tools/tdd-phase-transition-request.ts
|
|
9
9
|
/**
|
|
10
10
|
* Lookback window for the missing_artifact_evidence cross-session
|
|
11
11
|
* diagnostic (issue #144). Wide enough to catch a subagent dispatch
|
|
@@ -302,5 +302,4 @@ const tddPhaseTransitionRequestTool = Tool.make("tdd_phase_transition_request",
|
|
|
302
302
|
dependencies: [DataReader, DataStore]
|
|
303
303
|
}).annotate(Tool.Title, "TDD phase transition request").annotate(Tool.Readonly, false).annotate(Tool.Destructive, false).annotate(Tool.OpenWorld, false).annotate(Tool.Idempotent, true);
|
|
304
304
|
|
|
305
|
-
//#endregion
|
|
306
305
|
export { PhaseTransitionInput, PhaseTransitionResult, handlePhaseTransitionRequest, tddPhaseTransitionRequestTool };
|
|
@@ -3,7 +3,7 @@ import { DataReader } from "@vitest-agent/engine";
|
|
|
3
3
|
import { McpServer, Tool } from "effect/ai";
|
|
4
4
|
import { ChannelEvent } from "@vitest-agent/sdk";
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
// src/tools/tdd-progress-push.ts
|
|
7
7
|
/**
|
|
8
8
|
* The `tdd_progress_push` tool's parameters.
|
|
9
9
|
*
|
|
@@ -97,5 +97,4 @@ const tddProgressPushTool = Tool.make("tdd_progress_push", {
|
|
|
97
97
|
dependencies: [DataReader, McpServer.McpServer]
|
|
98
98
|
}).annotate(Tool.Title, "TDD progress push").annotate(Tool.Readonly, false).annotate(Tool.Destructive, false).annotate(Tool.OpenWorld, false).annotate(Tool.Idempotent, false);
|
|
99
99
|
|
|
100
|
-
//#endregion
|
|
101
100
|
export { CHANNEL_LOGGER, TddProgressPushInput, TddProgressPushResult, handleTddProgressPush, resolveChannelEvent, tddProgressPushTool };
|
package/tools/tdd-task.js
CHANGED
|
@@ -5,7 +5,7 @@ import { DataReader, DataStore } from "@vitest-agent/engine";
|
|
|
5
5
|
import { Tool } from "effect/ai";
|
|
6
6
|
import { GoalDetail } from "@vitest-agent/sdk";
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
// src/tools/tdd-task.ts
|
|
9
9
|
const TddPhaseRow = Schema.Struct({
|
|
10
10
|
id: Schema.Number,
|
|
11
11
|
behaviorId: Schema.NullOr(Schema.Number),
|
|
@@ -259,5 +259,4 @@ const tddTaskTool = McpToolkit.unionTool("tdd_task", {
|
|
|
259
259
|
failure: ToolRefusal
|
|
260
260
|
}).addDependency(DataReader).addDependency(DataStore).annotate(Tool.Title, "TDD task").annotate(Tool.Readonly, false).annotate(Tool.Destructive, false).annotate(Tool.OpenWorld, false).annotate(Tool.Idempotent, true);
|
|
261
261
|
|
|
262
|
-
//#endregion
|
|
263
262
|
export { TddTaskInput, TddTaskResult, handleTddTask, tddTaskTool };
|
package/tools/test.js
CHANGED
|
@@ -4,7 +4,7 @@ import { Effect, Match, Option, Schema } from "effect";
|
|
|
4
4
|
import { DataReader } from "@vitest-agent/engine";
|
|
5
5
|
import { Tool } from "effect/ai";
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
// src/tools/test.ts
|
|
8
8
|
const TestRowSchema = Schema.Struct({
|
|
9
9
|
id: Schema.Number,
|
|
10
10
|
fullName: Schema.String,
|
|
@@ -343,5 +343,4 @@ const testTool = McpToolkit.unionTool("test", {
|
|
|
343
343
|
failure: ToolRefusal
|
|
344
344
|
}).addDependency(DataReader).annotate(Tool.Title, "Test").annotate(Tool.Readonly, true).annotate(Tool.Destructive, false).annotate(Tool.OpenWorld, false).annotate(Tool.Idempotent, true);
|
|
345
345
|
|
|
346
|
-
//#endregion
|
|
347
346
|
export { TestInput, TestResult, handleTest, testTool };
|
package/tools/trends.js
CHANGED
|
@@ -4,7 +4,7 @@ import { DataReader } from "@vitest-agent/engine";
|
|
|
4
4
|
import { Tool } from "effect/ai";
|
|
5
5
|
import { TrendRecord } from "@vitest-agent/sdk";
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
// src/tools/trends.ts
|
|
8
8
|
const TrendsAvailable = Schema.Struct({
|
|
9
9
|
dataAvailable: Schema.Literal(true).annotate({ description: "Discriminant — `true` when at least one trend entry exists for the project." }),
|
|
10
10
|
project: Schema.String,
|
|
@@ -62,5 +62,4 @@ const testTrendsTool = Tool.make("test_trends", {
|
|
|
62
62
|
dependencies: [DataReader]
|
|
63
63
|
}).annotate(Tool.Title, "Test trends").annotate(Tool.Readonly, true).annotate(Tool.Destructive, false).annotate(Tool.OpenWorld, false).annotate(Tool.Idempotent, true);
|
|
64
64
|
|
|
65
|
-
//#endregion
|
|
66
65
|
export { TestTrendsInput, TestTrendsResult, handleTestTrends, testTrendsTool };
|
package/tools/triage-brief.js
CHANGED
|
@@ -2,7 +2,7 @@ import { Effect, Schema } from "effect";
|
|
|
2
2
|
import { DataReader, formatTriageEffect } from "@vitest-agent/engine";
|
|
3
3
|
import { Tool } from "effect/ai";
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
// src/tools/triage-brief.ts
|
|
6
6
|
/**
|
|
7
7
|
* The `triage_brief` tool's success payload.
|
|
8
8
|
*
|
|
@@ -55,5 +55,4 @@ const triageBriefTool = Tool.make("triage_brief", {
|
|
|
55
55
|
dependencies: [DataReader]
|
|
56
56
|
}).annotate(Tool.Title, "Triage brief").annotate(Tool.Readonly, true).annotate(Tool.Destructive, false).annotate(Tool.OpenWorld, false).annotate(Tool.Idempotent, true);
|
|
57
57
|
|
|
58
|
-
//#endregion
|
|
59
58
|
export { TriageBriefInput, TriageBriefResult, handleTriageBrief, triageBriefTool };
|
package/tools/turn-search.js
CHANGED
|
@@ -2,7 +2,7 @@ import { Effect, Schema } from "effect";
|
|
|
2
2
|
import { DataReader } from "@vitest-agent/engine";
|
|
3
3
|
import { Tool } from "effect/ai";
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
// src/tools/turn-search.ts
|
|
6
6
|
const TurnRow = Schema.Struct({
|
|
7
7
|
id: Schema.Finite.annotate({ description: "Numeric primary key of this turn row." }),
|
|
8
8
|
sessionId: Schema.Finite.annotate({ description: "Owning `sessions.id` (integer FK)." }),
|
|
@@ -75,5 +75,4 @@ const turnSearchTool = Tool.make("turn_search", {
|
|
|
75
75
|
dependencies: [DataReader]
|
|
76
76
|
}).annotate(Tool.Title, "Turn search").annotate(Tool.Readonly, true).annotate(Tool.Destructive, false).annotate(Tool.OpenWorld, false).annotate(Tool.Idempotent, true);
|
|
77
77
|
|
|
78
|
-
//#endregion
|
|
79
78
|
export { TurnSearchInput, TurnSearchResult, handleTurnSearch, turnSearchTool };
|
package/tools/wrapup-prompt.js
CHANGED
|
@@ -2,7 +2,7 @@ import { Effect, Schema } from "effect";
|
|
|
2
2
|
import { DataReader, formatWrapupEffect } from "@vitest-agent/engine";
|
|
3
3
|
import { Tool } from "effect/ai";
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
// src/tools/wrapup-prompt.ts
|
|
6
6
|
/**
|
|
7
7
|
* The `wrapup_prompt` tool's success payload.
|
|
8
8
|
*
|
|
@@ -75,5 +75,4 @@ const wrapupPromptTool = Tool.make("wrapup_prompt", {
|
|
|
75
75
|
dependencies: [DataReader]
|
|
76
76
|
}).annotate(Tool.Title, "Wrap-up prompt").annotate(Tool.Readonly, true).annotate(Tool.Destructive, false).annotate(Tool.OpenWorld, false).annotate(Tool.Idempotent, true);
|
|
77
77
|
|
|
78
|
-
//#endregion
|
|
79
78
|
export { WrapupPromptInput, WrapupPromptResult, handleWrapupPrompt, wrapupPromptTool };
|
package/utils/replay-marker.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Schema } from "effect";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
// src/utils/replay-marker.ts
|
|
4
4
|
/**
|
|
5
5
|
* Fields to spread into a replayable success struct.
|
|
6
6
|
*
|
|
@@ -8,5 +8,4 @@ import { Schema } from "effect";
|
|
|
8
8
|
*/
|
|
9
9
|
const IdempotentReplayMarker = { _idempotentReplay: Schema.optionalKey(Schema.Literal(true)).annotate({ description: "Present (true) when this response was replayed from the idempotency cache instead of re-running the mutation." }) };
|
|
10
10
|
|
|
11
|
-
//#endregion
|
|
12
11
|
export { IdempotentReplayMarker };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { formatFatalError } from "@vitest-agent/sdk";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
// src/utils/safe-format-fatal-error.ts
|
|
4
4
|
/**
|
|
5
5
|
* Fixed fallback emitted when the formatter itself throws. Deliberately a
|
|
6
6
|
* constant: anything derived from the offending value could throw again
|
|
@@ -24,5 +24,4 @@ function safeFormatFatalError(err) {
|
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
//#endregion
|
|
28
27
|
export { UNFORMATTABLE_ERROR_TEXT, safeFormatFatalError };
|
package/version.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/version.ts
|
|
2
2
|
/**
|
|
3
3
|
* The version of this package, inlined at build time from
|
|
4
4
|
* `package.json#version` via the bundler's `__PACKAGE_VERSION__` substitution.
|
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @public
|
|
9
9
|
*/
|
|
10
|
-
const CURRENT_MCP_VERSION = "5.2.
|
|
10
|
+
const CURRENT_MCP_VERSION = "5.2.8";
|
|
11
11
|
|
|
12
|
-
//#endregion
|
|
13
12
|
export { CURRENT_MCP_VERSION };
|