@vitest-agent/mcp 5.3.1 → 6.0.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
@@ -1,8 +1,9 @@
1
- import { ToolRefusal } from "@effected/mcp";
1
+ import { ToolRefusal, ToolRefusal as ToolRefusal$1 } from "@effected/mcp";
2
2
  import { Context, Effect, Layer, Schema, Stdio } from "effect";
3
3
  import { DataReader, DataStore, ProjectDiscovery, SessionContext } from "@vitest-agent/engine";
4
- import { McpServer, Toolkit } from "effect/ai";
4
+ import { McpServer, Tool, Toolkit } from "effect/ai";
5
5
  import "@effected/git";
6
+ import "@effected/mcp/node";
6
7
  import "@vitest-agent/sdk";
7
8
  import { Remediation } from "@effected/engine";
8
9
  /**
@@ -17,37 +18,6 @@ import { Remediation } from "@effected/engine";
17
18
  * @public
18
19
  */
19
20
  export declare const RenderText: Context.Reference<((result: unknown) => string | undefined) | undefined>;
20
- /**
21
- * Wraps `handler` with idempotent-response caching keyed on `path`.
22
- *
23
- * Semantics (unchanged from the retired tRPC middleware):
24
- *
25
- * 1. Look up the `IdempotencyKeySpec` registered for `path`, and
26
- * derive a key from `params` (already decoded — strict registration
27
- * guarantees no key was stripped). No registered spec, or a `null`
28
- * key, runs `handler` untouched with nothing cached.
29
- * 2. Cache HIT — `DataReader.findIdempotentResponse` returns the stored
30
- * JSON. A row that parses falls through to step 2a; a row that fails
31
- * to parse (corrupt or truncated) is treated as step 3, a cache MISS —
32
- * it is not a reason to fail the call.
33
- * 2a. The parsed value is merged with `_idempotentReplay: true` for an
34
- * object payload (a non-object payload passes through unchanged).
35
- * `handler` does not run.
36
- * 3. Cache MISS — run `handler`, then persist the result via
37
- * `DataStore.recordIdempotentResponse` best-effort: a persistence
38
- * failure (or a cache-lookup failure) never surfaces to the caller, it
39
- * is swallowed so a transient DB failure doesn't turn into a tool
40
- * error. A failed `handler` persists nothing, so a retry re-runs it.
41
- *
42
- * The combinator reads no ambient state — `path` and `params` are its
43
- * only inputs beyond the `DataReader` / `DataStore` services it adds to
44
- * `handler`'s requirements.
45
- *
46
- * @public
47
- */
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 & {
49
- _idempotentReplay: true;
50
- }), E, S | DataReader | DataStore>;
51
21
  /**
52
22
  * Mutable holder for the MCP server's currently-associated host chat
53
23
  * id (the per-process CC chat UUID).
@@ -230,7 +200,40 @@ type AcceptanceMetricsResultType = Schema.Schema.Type<typeof AcceptanceMetricsRe
230
200
  *
231
201
  * @public
232
202
  */
233
- declare const handleAcceptanceMetrics: () => Effect.Effect<AcceptanceMetricsResultType, never, DataReader>;
203
+ export declare const handleAcceptanceMetrics: () => Effect.Effect<AcceptanceMetricsResultType, never, DataReader>;
204
+ /**
205
+ * The Effect-native `acceptance_metrics` tool. No parameters (the default
206
+ * `Tool.EmptyParams` serves as a strict empty object).
207
+ *
208
+ * @public
209
+ */
210
+ export declare const acceptanceMetricsTool: Tool.Tool<"acceptance_metrics", {
211
+ readonly parameters: Tool.EmptyParams;
212
+ readonly success: Schema.Struct<{
213
+ readonly phaseEvidenceIntegrity: Schema.Struct<{
214
+ readonly total: Schema.Finite;
215
+ readonly compliant: Schema.Finite;
216
+ readonly ratio: Schema.Finite;
217
+ }>;
218
+ readonly complianceHookResponsiveness: Schema.Struct<{
219
+ readonly total: Schema.Finite;
220
+ readonly withFollowup: Schema.Finite;
221
+ readonly ratio: Schema.Finite;
222
+ }>;
223
+ readonly orientationUsefulness: Schema.Struct<{
224
+ readonly total: Schema.Finite;
225
+ readonly referencedCount: Schema.Finite;
226
+ readonly ratio: Schema.Finite;
227
+ }>;
228
+ readonly antiPatternDetectionRate: Schema.Struct<{
229
+ readonly total: Schema.Finite;
230
+ readonly cleanSessions: Schema.Finite;
231
+ readonly ratio: Schema.Finite;
232
+ }>;
233
+ }>;
234
+ readonly failure: Schema.Never;
235
+ readonly failureMode: "error";
236
+ }, DataReader>;
234
237
  /**
235
238
  * The `cache_health` tool's success payload.
236
239
  *
@@ -265,7 +268,36 @@ type CacheHealthResultType = Schema.Schema.Type<typeof CacheHealthResult>;
265
268
  *
266
269
  * @public
267
270
  */
268
- declare const handleCacheHealth: () => Effect.Effect<CacheHealthResultType, never, DataReader>;
271
+ export declare const handleCacheHealth: () => Effect.Effect<CacheHealthResultType, never, DataReader>;
272
+ /**
273
+ * The Effect-native `cache_health` tool. No parameters (the default
274
+ * `Tool.EmptyParams` serves as a strict empty object).
275
+ *
276
+ * @public
277
+ */
278
+ export declare const cacheHealthTool: Tool.Tool<"cache_health", {
279
+ readonly parameters: Tool.EmptyParams;
280
+ readonly success: Schema.Union<readonly [Schema.Struct<{
281
+ readonly manifestPresent: Schema.Literal<true>;
282
+ readonly manifest: Schema.Struct<{
283
+ readonly updatedAt: Schema.String;
284
+ readonly cacheDir: Schema.String;
285
+ readonly projects: Schema.$Array<Schema.Struct<{
286
+ readonly project: Schema.String;
287
+ readonly reportFile: Schema.String;
288
+ readonly historyFile: Schema.optional<Schema.String>;
289
+ readonly lastRun: Schema.NullOr<Schema.String>;
290
+ readonly lastResult: Schema.NullOr<Schema.Literals<readonly ["passed", "failed", "interrupted"]>>;
291
+ }>>;
292
+ }>;
293
+ readonly ageMs: Schema.Finite;
294
+ readonly stale: Schema.Boolean;
295
+ }>, Schema.Struct<{
296
+ readonly manifestPresent: Schema.Literal<false>;
297
+ }>]>;
298
+ readonly failure: Schema.Never;
299
+ readonly failureMode: "error";
300
+ }, DataReader>;
269
301
  /**
270
302
  * The `commit_changes` tool's success payload.
271
303
  *
@@ -312,7 +344,35 @@ type CommitChangesInputType = Schema.Schema.Type<typeof CommitChangesInput>;
312
344
  *
313
345
  * @public
314
346
  */
315
- declare const handleCommitChanges: (input: CommitChangesInputType) => Effect.Effect<CommitChangesResultType, never, DataReader>;
347
+ export declare const handleCommitChanges: (input: CommitChangesInputType) => Effect.Effect<CommitChangesResultType, never, DataReader>;
348
+ /**
349
+ * The Effect-native `commit_changes` tool.
350
+ *
351
+ * @public
352
+ */
353
+ export declare const commitChangesTool: Tool.Tool<"commit_changes", {
354
+ readonly parameters: Schema.Struct<{
355
+ readonly sha: Schema.optionalKey<Schema.String>;
356
+ }>;
357
+ readonly success: Schema.Struct<{
358
+ readonly filterSha: Schema.optional<Schema.String>;
359
+ readonly count: Schema.Finite;
360
+ readonly commits: Schema.$Array<Schema.Struct<{
361
+ readonly sha: Schema.String;
362
+ readonly parentSha: Schema.NullOr<Schema.String>;
363
+ readonly message: Schema.NullOr<Schema.String>;
364
+ readonly author: Schema.NullOr<Schema.String>;
365
+ readonly committedAt: Schema.NullOr<Schema.String>;
366
+ readonly branch: Schema.NullOr<Schema.String>;
367
+ readonly files: Schema.$Array<Schema.Struct<{
368
+ readonly filePath: Schema.String;
369
+ readonly changeKind: Schema.Literals<readonly ["added", "modified", "deleted", "renamed", "untracked-modified"]>;
370
+ }>>;
371
+ }>>;
372
+ }>;
373
+ readonly failure: Schema.Never;
374
+ readonly failureMode: "error";
375
+ }, DataReader>;
316
376
  /**
317
377
  * The `configure` tool's success payload.
318
378
  *
@@ -365,7 +425,41 @@ type ConfigureInputType = Schema.Schema.Type<typeof ConfigureInput>;
365
425
  *
366
426
  * @public
367
427
  */
368
- declare const handleConfigure: (input: ConfigureInputType) => Effect.Effect<ConfigureResultType, never, DataReader>;
428
+ export declare const handleConfigure: (input: ConfigureInputType) => Effect.Effect<ConfigureResultType, never, DataReader>;
429
+ /**
430
+ * The Effect-native `configure` tool.
431
+ *
432
+ * @public
433
+ */
434
+ export declare const configureTool: Tool.Tool<"configure", {
435
+ readonly parameters: Schema.Struct<{
436
+ readonly settingsHash: Schema.optionalKey<Schema.String>;
437
+ }>;
438
+ readonly success: Schema.Union<readonly [Schema.Struct<{
439
+ readonly found: Schema.Literal<true>;
440
+ readonly source: Schema.Literals<readonly ["requested", "latest"]>;
441
+ readonly settings: Schema.Struct<{
442
+ readonly hash: Schema.String;
443
+ readonly reporters: Schema.NullOr<Schema.String>;
444
+ readonly coverageEnabled: Schema.Boolean;
445
+ readonly coverageProvider: Schema.NullOr<Schema.String>;
446
+ readonly coverageThresholds: Schema.NullOr<Schema.String>;
447
+ readonly coverageTargets: Schema.NullOr<Schema.String>;
448
+ readonly pool: Schema.NullOr<Schema.String>;
449
+ readonly shard: Schema.NullOr<Schema.String>;
450
+ readonly project: Schema.NullOr<Schema.String>;
451
+ readonly environment: Schema.NullOr<Schema.String>;
452
+ readonly envVars: Schema.$Record<Schema.String, Schema.String>;
453
+ readonly capturedAt: Schema.String;
454
+ }>;
455
+ }>, Schema.Struct<{
456
+ readonly found: Schema.Literal<false>;
457
+ readonly source: Schema.Literals<readonly ["requested", "latest"]>;
458
+ readonly requestedHash: Schema.optional<Schema.String>;
459
+ }>]>;
460
+ readonly failure: Schema.Never;
461
+ readonly failureMode: "error";
462
+ }, DataReader>;
369
463
  /**
370
464
  * The `test_coverage` tool's success payload.
371
465
  *
@@ -511,7 +605,134 @@ type TestCoverageInputType = Schema.Schema.Type<typeof TestCoverageInput>;
511
605
  *
512
606
  * @public
513
607
  */
514
- declare const handleTestCoverage: (input: TestCoverageInputType) => Effect.Effect<TestCoverageResultType, never, DataReader>;
608
+ export declare const handleTestCoverage: (input: TestCoverageInputType) => Effect.Effect<TestCoverageResultType, never, DataReader>;
609
+ /**
610
+ * The Effect-native `test_coverage` tool.
611
+ *
612
+ * @public
613
+ */
614
+ export declare const testCoverageTool: Tool.Tool<"test_coverage", {
615
+ readonly parameters: Schema.Struct<{
616
+ readonly project: Schema.optionalKey<Schema.String>;
617
+ }>;
618
+ readonly success: Schema.Union<readonly [Schema.Struct<{
619
+ readonly dataAvailable: Schema.Literal<true>;
620
+ readonly project: Schema.String;
621
+ readonly coverage: Schema.Struct<{
622
+ readonly totals: Schema.Struct<{
623
+ readonly statements: Schema.Finite;
624
+ readonly branches: Schema.Finite;
625
+ readonly functions: Schema.Finite;
626
+ readonly lines: Schema.Finite;
627
+ }>;
628
+ readonly thresholds: Schema.Struct<{
629
+ readonly global: Schema.Struct<{
630
+ readonly lines: Schema.optional<Schema.Finite>;
631
+ readonly functions: Schema.optional<Schema.Finite>;
632
+ readonly branches: Schema.optional<Schema.Finite>;
633
+ readonly statements: Schema.optional<Schema.Finite>;
634
+ }>;
635
+ readonly patterns: Schema.withDecodingDefaultKey<Schema.$Array<Schema.Tuple<readonly [Schema.String, Schema.Struct<{
636
+ readonly lines: Schema.optional<Schema.Finite>;
637
+ readonly functions: Schema.optional<Schema.Finite>;
638
+ readonly branches: Schema.optional<Schema.Finite>;
639
+ readonly statements: Schema.optional<Schema.Finite>;
640
+ readonly perFile: Schema.optionalKey<Schema.Union<readonly [Schema.Boolean, Schema.Struct<{
641
+ readonly lines: Schema.optional<Schema.Finite>;
642
+ readonly functions: Schema.optional<Schema.Finite>;
643
+ readonly branches: Schema.optional<Schema.Finite>;
644
+ readonly statements: Schema.optional<Schema.Finite>;
645
+ }>]>>;
646
+ }>]>>, never>;
647
+ }>;
648
+ readonly targets: Schema.optional<Schema.Struct<{
649
+ readonly global: Schema.Struct<{
650
+ readonly lines: Schema.optional<Schema.Finite>;
651
+ readonly functions: Schema.optional<Schema.Finite>;
652
+ readonly branches: Schema.optional<Schema.Finite>;
653
+ readonly statements: Schema.optional<Schema.Finite>;
654
+ }>;
655
+ readonly patterns: Schema.withDecodingDefaultKey<Schema.$Array<Schema.Tuple<readonly [Schema.String, Schema.Struct<{
656
+ readonly lines: Schema.optional<Schema.Finite>;
657
+ readonly functions: Schema.optional<Schema.Finite>;
658
+ readonly branches: Schema.optional<Schema.Finite>;
659
+ readonly statements: Schema.optional<Schema.Finite>;
660
+ readonly perFile: Schema.optionalKey<Schema.Union<readonly [Schema.Boolean, Schema.Struct<{
661
+ readonly lines: Schema.optional<Schema.Finite>;
662
+ readonly functions: Schema.optional<Schema.Finite>;
663
+ readonly branches: Schema.optional<Schema.Finite>;
664
+ readonly statements: Schema.optional<Schema.Finite>;
665
+ }>]>>;
666
+ }>]>>, never>;
667
+ }>>;
668
+ readonly baselines: Schema.optional<Schema.Struct<{
669
+ readonly global: Schema.Struct<{
670
+ readonly lines: Schema.optional<Schema.Finite>;
671
+ readonly functions: Schema.optional<Schema.Finite>;
672
+ readonly branches: Schema.optional<Schema.Finite>;
673
+ readonly statements: Schema.optional<Schema.Finite>;
674
+ }>;
675
+ readonly patterns: Schema.withDecodingDefaultKey<Schema.$Array<Schema.Tuple<readonly [Schema.String, Schema.Struct<{
676
+ readonly lines: Schema.optional<Schema.Finite>;
677
+ readonly functions: Schema.optional<Schema.Finite>;
678
+ readonly branches: Schema.optional<Schema.Finite>;
679
+ readonly statements: Schema.optional<Schema.Finite>;
680
+ readonly perFile: Schema.optionalKey<Schema.Union<readonly [Schema.Boolean, Schema.Struct<{
681
+ readonly lines: Schema.optional<Schema.Finite>;
682
+ readonly functions: Schema.optional<Schema.Finite>;
683
+ readonly branches: Schema.optional<Schema.Finite>;
684
+ readonly statements: Schema.optional<Schema.Finite>;
685
+ }>]>>;
686
+ }>]>>, never>;
687
+ }>>;
688
+ readonly scoped: Schema.withDecodingDefaultKey<Schema.Boolean, never>;
689
+ readonly scopedFiles: Schema.optional<Schema.$Array<Schema.String>>;
690
+ readonly totalFiles: Schema.optional<Schema.Finite>;
691
+ readonly lowCoverage: Schema.$Array<Schema.Struct<{
692
+ readonly file: Schema.String;
693
+ readonly summary: Schema.Struct<{
694
+ readonly statements: Schema.Finite;
695
+ readonly branches: Schema.Finite;
696
+ readonly functions: Schema.Finite;
697
+ readonly lines: Schema.Finite;
698
+ }>;
699
+ readonly uncoveredLines: Schema.String;
700
+ }>>;
701
+ readonly lowCoverageFiles: Schema.$Array<Schema.String>;
702
+ readonly belowTarget: Schema.optional<Schema.$Array<Schema.Struct<{
703
+ readonly file: Schema.String;
704
+ readonly summary: Schema.Struct<{
705
+ readonly statements: Schema.Finite;
706
+ readonly branches: Schema.Finite;
707
+ readonly functions: Schema.Finite;
708
+ readonly lines: Schema.Finite;
709
+ }>;
710
+ readonly uncoveredLines: Schema.String;
711
+ }>>>;
712
+ readonly belowTargetFiles: Schema.optional<Schema.$Array<Schema.String>>;
713
+ readonly globShortfalls: Schema.optional<Schema.$Array<Schema.Struct<{
714
+ readonly pattern: Schema.String;
715
+ readonly summary: Schema.Struct<{
716
+ readonly statements: Schema.Finite;
717
+ readonly branches: Schema.Finite;
718
+ readonly functions: Schema.Finite;
719
+ readonly lines: Schema.Finite;
720
+ }>;
721
+ readonly thresholds: Schema.Struct<{
722
+ readonly lines: Schema.optional<Schema.Finite>;
723
+ readonly functions: Schema.optional<Schema.Finite>;
724
+ readonly branches: Schema.optional<Schema.Finite>;
725
+ readonly statements: Schema.optional<Schema.Finite>;
726
+ }>;
727
+ }>>>;
728
+ }>;
729
+ }>, Schema.Struct<{
730
+ readonly dataAvailable: Schema.Literal<false>;
731
+ readonly project: Schema.String;
732
+ }>]>;
733
+ readonly failure: Schema.Never;
734
+ readonly failureMode: "error";
735
+ }, DataReader>;
515
736
  /**
516
737
  * The `test_errors` tool's success payload — populates `structuredContent`.
517
738
  *
@@ -570,7 +791,47 @@ type TestErrorsInputType = Schema.Schema.Type<typeof TestErrorsInput>;
570
791
  *
571
792
  * @public
572
793
  */
573
- declare const handleTestErrors: (input: TestErrorsInputType) => Effect.Effect<TestErrorsResultType, never, DataReader>;
794
+ export declare const handleTestErrors: (input: TestErrorsInputType) => Effect.Effect<TestErrorsResultType, never, DataReader>;
795
+ /**
796
+ * The Effect-native `test_errors` tool.
797
+ *
798
+ * @public
799
+ */
800
+ export declare const testErrorsTool: Tool.Tool<"test_errors", {
801
+ readonly parameters: Schema.Struct<{
802
+ readonly project: Schema.String;
803
+ readonly errorName: Schema.optionalKey<Schema.String>;
804
+ }>;
805
+ readonly success: Schema.Struct<{
806
+ readonly project: Schema.String;
807
+ readonly errorName: Schema.optional<Schema.String>;
808
+ readonly count: Schema.Finite;
809
+ readonly errors: Schema.$Array<Schema.Struct<{
810
+ readonly id: Schema.Finite;
811
+ readonly topStackFrameId: Schema.NullOr<Schema.Number>;
812
+ readonly name: Schema.NullOr<Schema.String>;
813
+ readonly message: Schema.String;
814
+ readonly diff: Schema.NullOr<Schema.String>;
815
+ readonly actual: Schema.NullOr<Schema.String>;
816
+ readonly expected: Schema.NullOr<Schema.String>;
817
+ readonly stack: Schema.NullOr<Schema.String>;
818
+ readonly scope: Schema.Literals<readonly ["test", "suite", "module", "unhandled"]>;
819
+ readonly testFullName: Schema.NullOr<Schema.String>;
820
+ readonly moduleFile: Schema.NullOr<Schema.String>;
821
+ readonly annotations: Schema.$Array<Schema.Struct<{
822
+ readonly type: Schema.String;
823
+ readonly message: Schema.String;
824
+ readonly location: Schema.optional<Schema.Struct<{
825
+ readonly file: Schema.String;
826
+ readonly line: Schema.Number;
827
+ readonly column: Schema.Number;
828
+ }>>;
829
+ }>>;
830
+ }>>;
831
+ }>;
832
+ readonly failure: Schema.Never;
833
+ readonly failureMode: "error";
834
+ }, DataReader>;
574
835
  /**
575
836
  * The `failure_signature_get` tool's success payload.
576
837
  *
@@ -617,7 +878,35 @@ type FailureSignatureGetInputType = Schema.Schema.Type<typeof FailureSignatureGe
617
878
  *
618
879
  * @public
619
880
  */
620
- declare const handleFailureSignatureGet: (input: FailureSignatureGetInputType) => Effect.Effect<FailureSignatureGetResultType, never, DataReader>;
881
+ export declare const handleFailureSignatureGet: (input: FailureSignatureGetInputType) => Effect.Effect<FailureSignatureGetResultType, never, DataReader>;
882
+ /**
883
+ * The Effect-native `failure_signature_get` tool.
884
+ *
885
+ * @public
886
+ */
887
+ export declare const failureSignatureGetTool: Tool.Tool<"failure_signature_get", {
888
+ readonly parameters: Schema.Struct<{
889
+ readonly hash: Schema.String;
890
+ }>;
891
+ readonly success: Schema.Union<readonly [Schema.Struct<{
892
+ readonly found: Schema.Literal<true>;
893
+ readonly signatureHash: Schema.String;
894
+ readonly firstSeenRunId: Schema.NullOr<Schema.Number>;
895
+ readonly firstSeenAt: Schema.String;
896
+ readonly lastSeenAt: Schema.NullOr<Schema.String>;
897
+ readonly occurrenceCount: Schema.Finite;
898
+ readonly recentErrors: Schema.$Array<Schema.Struct<{
899
+ readonly runId: Schema.Number;
900
+ readonly errorName: Schema.NullOr<Schema.String>;
901
+ readonly message: Schema.String;
902
+ }>>;
903
+ }>, Schema.Struct<{
904
+ readonly found: Schema.Literal<false>;
905
+ readonly requestedHash: Schema.String;
906
+ }>]>;
907
+ readonly failure: Schema.Never;
908
+ readonly failureMode: "error";
909
+ }, DataReader>;
621
910
  /**
622
911
  * The `file_coverage` tool's success payload.
623
912
  *
@@ -685,7 +974,56 @@ type FileCoverageInputType = Schema.Schema.Type<typeof FileCoverageInput>;
685
974
  *
686
975
  * @public
687
976
  */
688
- declare const handleFileCoverage: (input: FileCoverageInputType) => Effect.Effect<FileCoverageResultType, never, DataReader>;
977
+ export declare const handleFileCoverage: (input: FileCoverageInputType) => Effect.Effect<FileCoverageResultType, never, DataReader>;
978
+ /**
979
+ * The Effect-native `file_coverage` tool.
980
+ *
981
+ * @public
982
+ */
983
+ export declare const fileCoverageTool: Tool.Tool<"file_coverage", {
984
+ readonly parameters: Schema.Struct<{
985
+ readonly filePath: Schema.String;
986
+ readonly project: Schema.optionalKey<Schema.String>;
987
+ }>;
988
+ readonly success: Schema.Union<readonly [Schema.Struct<{
989
+ readonly dataAvailable: Schema.Literal<true>;
990
+ readonly matched: Schema.Literal<true>;
991
+ readonly filePath: Schema.String;
992
+ readonly report: Schema.Struct<{
993
+ readonly file: Schema.String;
994
+ readonly summary: Schema.Struct<{
995
+ readonly statements: Schema.Finite;
996
+ readonly branches: Schema.Finite;
997
+ readonly functions: Schema.Finite;
998
+ readonly lines: Schema.Finite;
999
+ }>;
1000
+ readonly uncoveredLines: Schema.String;
1001
+ }>;
1002
+ readonly globalThresholds: Schema.Struct<{
1003
+ readonly statements: Schema.optional<Schema.Number>;
1004
+ readonly branches: Schema.optional<Schema.Number>;
1005
+ readonly functions: Schema.optional<Schema.Number>;
1006
+ readonly lines: Schema.optional<Schema.Number>;
1007
+ }>;
1008
+ readonly relatedTestFiles: Schema.$Array<Schema.String>;
1009
+ }>, Schema.Struct<{
1010
+ readonly dataAvailable: Schema.Literal<true>;
1011
+ readonly matched: Schema.Literal<false>;
1012
+ readonly filePath: Schema.String;
1013
+ readonly totals: Schema.Struct<{
1014
+ readonly statements: Schema.Finite;
1015
+ readonly branches: Schema.Finite;
1016
+ readonly functions: Schema.Finite;
1017
+ readonly lines: Schema.Finite;
1018
+ }>;
1019
+ readonly relatedTestFiles: Schema.$Array<Schema.String>;
1020
+ }>, Schema.Struct<{
1021
+ readonly dataAvailable: Schema.Literal<false>;
1022
+ readonly filePath: Schema.String;
1023
+ }>]>;
1024
+ readonly failure: Schema.Never;
1025
+ readonly failureMode: "error";
1026
+ }, DataReader>;
689
1027
  /**
690
1028
  * The `help` tool's success payload.
691
1029
  *
@@ -700,12 +1038,26 @@ export declare const HelpResult: Schema.Struct<{
700
1038
  * @public
701
1039
  */
702
1040
  type HelpResultType = Schema.Schema.Type<typeof HelpResult>;
1041
+ /**
1042
+ * The Effect-native `help` tool. `structuredContent.helpText` carries the
1043
+ * markdown reference.
1044
+ *
1045
+ * @public
1046
+ */
1047
+ export declare const helpTool: Tool.Tool<"help", {
1048
+ readonly parameters: Tool.EmptyParams;
1049
+ readonly success: Schema.Struct<{
1050
+ readonly helpText: Schema.String;
1051
+ }>;
1052
+ readonly failure: Schema.Never;
1053
+ readonly failureMode: "error";
1054
+ }, never>;
703
1055
  /**
704
1056
  * Handler for {@link helpTool}.
705
1057
  *
706
1058
  * @public
707
1059
  */
708
- declare const handleHelp: () => Effect.Effect<HelpResultType>;
1060
+ export declare const handleHelp: () => Effect.Effect<HelpResultType>;
709
1061
  /**
710
1062
  * The `test_history` tool's success payload.
711
1063
  *
@@ -792,7 +1144,75 @@ type TestHistoryInputType = Schema.Schema.Type<typeof TestHistoryInput>;
792
1144
  *
793
1145
  * @public
794
1146
  */
795
- declare const handleTestHistory: (input: TestHistoryInputType) => Effect.Effect<TestHistoryResultType, never, DataReader>;
1147
+ export declare const handleTestHistory: (input: TestHistoryInputType) => Effect.Effect<TestHistoryResultType, never, DataReader>;
1148
+ /**
1149
+ * The Effect-native `test_history` tool.
1150
+ *
1151
+ * @public
1152
+ */
1153
+ export declare const testHistoryTool: Tool.Tool<"test_history", {
1154
+ readonly parameters: Schema.Struct<{
1155
+ readonly project: Schema.String;
1156
+ readonly testName: Schema.optionalKey<Schema.String>;
1157
+ readonly modulePath: Schema.optionalKey<Schema.String>;
1158
+ readonly limit: Schema.optionalKey<Schema.Int>;
1159
+ }>;
1160
+ readonly success: Schema.Struct<{
1161
+ readonly project: Schema.String;
1162
+ readonly hasData: Schema.Boolean;
1163
+ readonly history: Schema.Struct<{
1164
+ readonly project: Schema.String;
1165
+ readonly updatedAt: Schema.String;
1166
+ readonly tests: Schema.$Array<Schema.Struct<{
1167
+ readonly modulePath: Schema.String;
1168
+ readonly fullName: Schema.String;
1169
+ readonly runs: Schema.$Array<Schema.Struct<{
1170
+ readonly timestamp: Schema.String;
1171
+ readonly state: Schema.Literals<readonly ["passed", "failed"]>;
1172
+ }>>;
1173
+ }>>;
1174
+ }>;
1175
+ readonly flaky: Schema.$Array<Schema.Struct<{
1176
+ readonly fullName: Schema.String;
1177
+ readonly modulePath: Schema.String;
1178
+ readonly project: Schema.String;
1179
+ readonly passCount: Schema.Finite;
1180
+ readonly failCount: Schema.Finite;
1181
+ readonly lastState: Schema.Literals<readonly ["passed", "failed"]>;
1182
+ readonly lastTimestamp: Schema.String;
1183
+ }>>;
1184
+ readonly persistent: Schema.$Array<Schema.Struct<{
1185
+ readonly fullName: Schema.String;
1186
+ readonly modulePath: Schema.String;
1187
+ readonly project: Schema.String;
1188
+ readonly consecutiveFailures: Schema.Finite;
1189
+ readonly firstFailedAt: Schema.String;
1190
+ readonly lastFailedAt: Schema.String;
1191
+ readonly lastErrorMessage: Schema.NullOr<Schema.String>;
1192
+ }>>;
1193
+ readonly recovered: Schema.$Array<Schema.Struct<{
1194
+ readonly modulePath: Schema.String;
1195
+ readonly fullName: Schema.String;
1196
+ readonly recentRuns: Schema.$Array<Schema.Literals<readonly ["passed", "failed"]>>;
1197
+ }>>;
1198
+ readonly strayOutput: Schema.Struct<{
1199
+ readonly runs: Schema.Finite;
1200
+ readonly runsWithStrayOutput: Schema.Finite;
1201
+ readonly latest: Schema.NullOr<Schema.Struct<{
1202
+ readonly total: Schema.Finite;
1203
+ readonly stdout: Schema.Finite;
1204
+ readonly stderr: Schema.Finite;
1205
+ readonly bytes: Schema.Finite;
1206
+ readonly samples: Schema.$Array<Schema.Struct<{
1207
+ readonly stream: Schema.Literals<readonly ["stdout", "stderr"]>;
1208
+ readonly text: Schema.String;
1209
+ }>>;
1210
+ }>>;
1211
+ }>;
1212
+ }>;
1213
+ readonly failure: Schema.Never;
1214
+ readonly failureMode: "error";
1215
+ }, DataReader>;
796
1216
  /**
797
1217
  * The `test_overview` tool's success payload.
798
1218
  *
@@ -840,7 +1260,36 @@ type TestOverviewInputType = Schema.Schema.Type<typeof TestOverviewInput>;
840
1260
  *
841
1261
  * @public
842
1262
  */
843
- declare const handleTestOverview: (input: TestOverviewInputType) => Effect.Effect<TestOverviewResultType, never, DataReader>;
1263
+ export declare const handleTestOverview: (input: TestOverviewInputType) => Effect.Effect<TestOverviewResultType, never, DataReader>;
1264
+ /**
1265
+ * The Effect-native `test_overview` tool.
1266
+ *
1267
+ * @public
1268
+ */
1269
+ export declare const testOverviewTool: Tool.Tool<"test_overview", {
1270
+ readonly parameters: Schema.Struct<{
1271
+ readonly project: Schema.optionalKey<Schema.String>;
1272
+ }>;
1273
+ readonly success: Schema.Union<readonly [Schema.Struct<{
1274
+ readonly dataAvailable: Schema.Literal<true>;
1275
+ readonly projectFilter: Schema.optional<Schema.String>;
1276
+ readonly runs: Schema.$Array<Schema.Struct<{
1277
+ readonly project: Schema.String;
1278
+ readonly lastRun: Schema.NullOr<Schema.String>;
1279
+ readonly lastResult: Schema.NullOr<Schema.Literals<readonly ["passed", "failed", "interrupted"]>>;
1280
+ readonly total: Schema.Number;
1281
+ readonly passed: Schema.Number;
1282
+ readonly failed: Schema.Number;
1283
+ readonly skipped: Schema.Number;
1284
+ }>>;
1285
+ }>, Schema.Struct<{
1286
+ readonly dataAvailable: Schema.Literal<false>;
1287
+ readonly projectFilter: Schema.optional<Schema.String>;
1288
+ readonly reason: Schema.Literals<readonly ["no_runs", "project_filter_empty"]>;
1289
+ }>]>;
1290
+ readonly failure: Schema.Never;
1291
+ readonly failureMode: "error";
1292
+ }, DataReader>;
844
1293
  /**
845
1294
  * The `ping` tool's success payload.
846
1295
  *
@@ -859,12 +1308,31 @@ export declare const PingResult: Schema.Struct<{
859
1308
  * @public
860
1309
  */
861
1310
  type PingResultType = Schema.Schema.Type<typeof PingResult>;
1311
+ /**
1312
+ * The Effect-native `ping` tool. No parameters (the default
1313
+ * `Tool.EmptyParams` serves as a strict empty object; `Schema.Struct({})`
1314
+ * would serialize to a non-object JSON Schema that MCP rejects).
1315
+ *
1316
+ * @public
1317
+ */
1318
+ export declare const pingTool: Tool.Tool<"ping", {
1319
+ readonly parameters: Tool.EmptyParams;
1320
+ readonly success: Schema.Struct<{
1321
+ readonly message: Schema.Literal<"pong">;
1322
+ readonly distribution: Schema.NullOr<Schema.Struct<{
1323
+ readonly name: Schema.String;
1324
+ readonly version: Schema.String;
1325
+ }>>;
1326
+ }>;
1327
+ readonly failure: Schema.Never;
1328
+ readonly failureMode: "error";
1329
+ }, never>;
862
1330
  /**
863
1331
  * Handler for {@link pingTool}.
864
1332
  *
865
1333
  * @public
866
1334
  */
867
- declare const handlePing: () => Effect.Effect<PingResultType>;
1335
+ export declare const handlePing: () => Effect.Effect<PingResultType>;
868
1336
  /**
869
1337
  * The `register_agent` tool's parameters.
870
1338
  *
@@ -915,11 +1383,45 @@ type RegisterAgentOutput = Schema.Schema.Type<typeof RegisterAgentResult>;
915
1383
  /**
916
1384
  * Handler for {@link registerAgentTool}. Idempotency is the tool's own
917
1385
  * business rule (the `agents` idempotency key), not the generic
918
- * `withIdempotency` combinator.
1386
+ * `ToolReplay` wrapper the write tools use (`replay.ts`).
919
1387
  *
920
1388
  * @public
921
1389
  */
922
- declare const handleRegisterAgent: (input: RegisterAgentInputType) => Effect.Effect<RegisterAgentOutput, never, DataReader | DataStore>;
1390
+ export declare const handleRegisterAgent: (input: RegisterAgentInputType) => Effect.Effect<RegisterAgentOutput, never, DataReader | DataStore>;
1391
+ /**
1392
+ * The Effect-native `register_agent` tool.
1393
+ *
1394
+ * @public
1395
+ */
1396
+ export declare const registerAgentTool: Tool.Tool<"register_agent", {
1397
+ readonly parameters: Schema.Struct<{
1398
+ readonly chatId: Schema.String;
1399
+ readonly conversationId: Schema.optionalKey<Schema.String>;
1400
+ readonly hostKind: Schema.optionalKey<Schema.String>;
1401
+ readonly agentType: Schema.String;
1402
+ readonly parentAgentId: Schema.optionalKey<Schema.String>;
1403
+ readonly clientNonce: Schema.optionalKey<Schema.String>;
1404
+ readonly startGitBranch: Schema.optionalKey<Schema.String>;
1405
+ readonly startGitCommitSha: Schema.optionalKey<Schema.String>;
1406
+ readonly startWorktreeDir: Schema.optionalKey<Schema.String>;
1407
+ }>;
1408
+ readonly success: Schema.Union<readonly [Schema.Struct<{
1409
+ readonly ok: Schema.Literal<true>;
1410
+ readonly agentId: Schema.String;
1411
+ readonly conversationId: Schema.NullOr<Schema.String>;
1412
+ readonly idempotencyKey: Schema.String;
1413
+ }>, Schema.Struct<{
1414
+ readonly ok: Schema.Literal<false>;
1415
+ readonly error: Schema.Struct<{
1416
+ readonly code: Schema.Literals<readonly ["AGENT_ALREADY_REGISTERED", "PARENT_AGENT_NOT_FOUND", "SESSION_NOT_FOUND", "INVALID_AGENT_TYPE_PREFIX"]>;
1417
+ readonly message: Schema.String;
1418
+ readonly existingAgentId: Schema.optional<Schema.String>;
1419
+ readonly expectedPrefix: Schema.optional<Schema.String>;
1420
+ }>;
1421
+ }>]>;
1422
+ readonly failure: Schema.Never;
1423
+ readonly failureMode: "error";
1424
+ }, DataReader | DataStore>;
923
1425
  /**
924
1426
  * The `run_tests` tool's success payload.
925
1427
  *
@@ -1134,6 +1636,30 @@ export declare const RunTestsResult: Schema.Union<readonly [Schema.Struct<{
1134
1636
  readonly detail: Schema.String;
1135
1637
  readonly targetTool: Schema.optional<Schema.String>;
1136
1638
  }>>>;
1639
+ readonly runDiagnostics: Schema.optionalKey<Schema.Struct<{
1640
+ readonly performanceHints: Schema.$Array<Schema.Struct<{
1641
+ readonly kind: Schema.Literals<readonly ["environment", "import", "transform", "isolate"]>;
1642
+ readonly project: Schema.optionalKey<Schema.String>;
1643
+ readonly message: Schema.String;
1644
+ readonly remedy: Schema.String;
1645
+ readonly detail: Schema.String;
1646
+ readonly learnMoreUrl: Schema.String;
1647
+ readonly estimatedSavingMs: Schema.optionalKey<Schema.Finite>;
1648
+ readonly share: Schema.optionalKey<Schema.Finite>;
1649
+ }>>;
1650
+ readonly postRun: Schema.optionalKey<Schema.Struct<{
1651
+ readonly persistMs: Schema.Finite;
1652
+ readonly coverageScanMs: Schema.Finite;
1653
+ readonly totalMs: Schema.Finite;
1654
+ readonly renderMs: Schema.optionalKey<Schema.Finite>;
1655
+ readonly vitestDurationMs: Schema.optionalKey<Schema.Finite>;
1656
+ }>>;
1657
+ readonly persistence: Schema.optionalKey<Schema.Struct<{
1658
+ readonly ok: Schema.Boolean;
1659
+ readonly reason: Schema.optionalKey<Schema.String>;
1660
+ readonly migrationFailed: Schema.optionalKey<Schema.Boolean>;
1661
+ }>>;
1662
+ }>>;
1137
1663
  }>, Schema.Struct<{
1138
1664
  readonly kind: Schema.Literal<"timeout">;
1139
1665
  readonly timeoutSeconds: Schema.Number;
@@ -1178,6 +1704,7 @@ export declare const RunTestsInput: Schema.Struct<{
1178
1704
  }>>;
1179
1705
  readonly passWithNoTests: Schema.optionalKey<Schema.Boolean>;
1180
1706
  readonly timeout: Schema.optionalKey<Schema.Finite>;
1707
+ readonly _callerCwd: Schema.optionalKey<Schema.String>;
1181
1708
  readonly _sessionContext: Schema.optionalKey<Schema.Struct<{
1182
1709
  readonly chatId: Schema.String;
1183
1710
  readonly conversationId: Schema.String;
@@ -1191,16 +1718,298 @@ export declare const RunTestsInput: Schema.Struct<{
1191
1718
  */
1192
1719
  type RunTestsInputType = Schema.Schema.Type<typeof RunTestsInput>;
1193
1720
  /**
1194
- * Handler for {@link runTestsTool}. Serialized through a one-permit
1195
- * semaphore: the body assigns the active attribution UUIDs into
1196
- * `process.env.VITEST_AGENT_*` and then awaits `createVitest` /
1197
- * `vitest.start`, which spawns the worker pool that snapshots env at
1198
- * spawn time — two interleaved calls would race, attributing one call's
1199
- * results to the other's agent.
1721
+ * Handler for {@link runTestsTool}. The body runs in the one-permit
1722
+ * `Exclusive` lane: it assigns the active attribution UUIDs into
1723
+ * `process.env.VITEST_AGENT_*`, enters the run's root, and then awaits
1724
+ * `createVitest` / `vitest.start`, which spawns the worker pool that
1725
+ * snapshots env and cwd at spawn time — two interleaved calls would race,
1726
+ * attributing one call's results to the other's agent. A client cancel
1727
+ * drops the response; the next call waits for the real run to end.
1728
+ *
1729
+ * @public
1730
+ */
1731
+ export declare const handleRunTests: (input: RunTestsInputType) => Effect.Effect<RunTestsResultType, never, McpSession | DataReader | DataStore>;
1732
+ /**
1733
+ * The Effect-native `run_tests` tool.
1200
1734
  *
1201
1735
  * @public
1202
1736
  */
1203
- declare const handleRunTests: (input: RunTestsInputType) => Effect.Effect<RunTestsResultType, never, McpSession | DataReader | DataStore>;
1737
+ export declare const runTestsTool: Tool.Tool<"run_tests", {
1738
+ readonly parameters: Schema.Struct<{
1739
+ readonly files: Schema.optionalKey<Schema.$Array<Schema.String>>;
1740
+ readonly project: Schema.optionalKey<Schema.String>;
1741
+ readonly projectRoot: Schema.optionalKey<Schema.String>;
1742
+ readonly tags: Schema.optionalKey<Schema.Struct<{
1743
+ readonly all: Schema.optionalKey<Schema.$Array<Schema.String>>;
1744
+ readonly any: Schema.optionalKey<Schema.$Array<Schema.String>>;
1745
+ readonly none: Schema.optionalKey<Schema.$Array<Schema.String>>;
1746
+ }>>;
1747
+ readonly passWithNoTests: Schema.optionalKey<Schema.Boolean>;
1748
+ readonly timeout: Schema.optionalKey<Schema.Finite>;
1749
+ readonly _callerCwd: Schema.optionalKey<Schema.String>;
1750
+ readonly _sessionContext: Schema.optionalKey<Schema.Struct<{
1751
+ readonly chatId: Schema.String;
1752
+ readonly conversationId: Schema.String;
1753
+ readonly mainAgentId: Schema.String;
1754
+ }>>;
1755
+ }>;
1756
+ readonly success: Schema.Union<readonly [Schema.Struct<{
1757
+ readonly kind: Schema.Literal<"ok">;
1758
+ readonly project: Schema.optional<Schema.String>;
1759
+ readonly projectRoot: Schema.String;
1760
+ readonly scope: Schema.Struct<{
1761
+ readonly project: Schema.NullOr<Schema.String>;
1762
+ readonly files: Schema.$Array<Schema.String>;
1763
+ readonly tags: Schema.NullOr<Schema.Struct<{
1764
+ readonly all: Schema.optionalKey<Schema.$Array<Schema.String>>;
1765
+ readonly any: Schema.optionalKey<Schema.$Array<Schema.String>>;
1766
+ readonly none: Schema.optionalKey<Schema.$Array<Schema.String>>;
1767
+ }>>;
1768
+ }>;
1769
+ readonly report: Schema.Struct<{
1770
+ readonly timestamp: Schema.String;
1771
+ readonly project: Schema.optional<Schema.String>;
1772
+ readonly reason: Schema.Literals<readonly ["passed", "failed", "interrupted"]>;
1773
+ readonly summary: Schema.Struct<{
1774
+ readonly total: Schema.Finite;
1775
+ readonly passed: Schema.Finite;
1776
+ readonly failed: Schema.Finite;
1777
+ readonly skipped: Schema.Finite;
1778
+ readonly duration: Schema.Finite;
1779
+ readonly modules: Schema.optional<Schema.Finite>;
1780
+ }>;
1781
+ readonly failed: Schema.$Array<Schema.Struct<{
1782
+ readonly file: Schema.String;
1783
+ readonly state: Schema.Literals<readonly ["passed", "failed", "skipped", "pending"]>;
1784
+ readonly duration: Schema.optional<Schema.Finite>;
1785
+ readonly errors: Schema.optional<Schema.$Array<Schema.Struct<{
1786
+ readonly message: Schema.String;
1787
+ readonly stack: Schema.optional<Schema.String>;
1788
+ readonly diff: Schema.optional<Schema.String>;
1789
+ readonly expected: Schema.optional<Schema.String>;
1790
+ readonly received: Schema.optional<Schema.String>;
1791
+ }>>>;
1792
+ readonly tests: Schema.$Array<Schema.Struct<{
1793
+ readonly name: Schema.String;
1794
+ readonly fullName: Schema.String;
1795
+ readonly state: Schema.Literals<readonly ["passed", "failed", "skipped", "pending"]>;
1796
+ readonly duration: Schema.optional<Schema.Finite>;
1797
+ readonly flaky: Schema.optional<Schema.Boolean>;
1798
+ readonly slow: Schema.optional<Schema.Boolean>;
1799
+ readonly errors: Schema.optional<Schema.$Array<Schema.Struct<{
1800
+ readonly message: Schema.String;
1801
+ readonly stack: Schema.optional<Schema.String>;
1802
+ readonly diff: Schema.optional<Schema.String>;
1803
+ readonly expected: Schema.optional<Schema.String>;
1804
+ readonly received: Schema.optional<Schema.String>;
1805
+ }>>>;
1806
+ readonly classification: Schema.optional<Schema.Literals<readonly ["stable", "new-failure", "persistent", "flaky", "recovered"]>>;
1807
+ }>>;
1808
+ }>>;
1809
+ readonly unhandledErrors: Schema.$Array<Schema.Struct<{
1810
+ readonly message: Schema.String;
1811
+ readonly stack: Schema.optional<Schema.String>;
1812
+ readonly diff: Schema.optional<Schema.String>;
1813
+ readonly expected: Schema.optional<Schema.String>;
1814
+ readonly received: Schema.optional<Schema.String>;
1815
+ }>>;
1816
+ readonly failedFiles: Schema.$Array<Schema.String>;
1817
+ readonly coverage: Schema.optional<Schema.Struct<{
1818
+ readonly totals: Schema.Struct<{
1819
+ readonly statements: Schema.Finite;
1820
+ readonly branches: Schema.Finite;
1821
+ readonly functions: Schema.Finite;
1822
+ readonly lines: Schema.Finite;
1823
+ }>;
1824
+ readonly thresholds: Schema.Struct<{
1825
+ readonly global: Schema.Struct<{
1826
+ readonly lines: Schema.optional<Schema.Finite>;
1827
+ readonly functions: Schema.optional<Schema.Finite>;
1828
+ readonly branches: Schema.optional<Schema.Finite>;
1829
+ readonly statements: Schema.optional<Schema.Finite>;
1830
+ }>;
1831
+ readonly patterns: Schema.withDecodingDefaultKey<Schema.$Array<Schema.Tuple<readonly [Schema.String, Schema.Struct<{
1832
+ readonly lines: Schema.optional<Schema.Finite>;
1833
+ readonly functions: Schema.optional<Schema.Finite>;
1834
+ readonly branches: Schema.optional<Schema.Finite>;
1835
+ readonly statements: Schema.optional<Schema.Finite>;
1836
+ readonly perFile: Schema.optionalKey<Schema.Union<readonly [Schema.Boolean, Schema.Struct<{
1837
+ readonly lines: Schema.optional<Schema.Finite>;
1838
+ readonly functions: Schema.optional<Schema.Finite>;
1839
+ readonly branches: Schema.optional<Schema.Finite>;
1840
+ readonly statements: Schema.optional<Schema.Finite>;
1841
+ }>]>>;
1842
+ }>]>>, never>;
1843
+ }>;
1844
+ readonly targets: Schema.optional<Schema.Struct<{
1845
+ readonly global: Schema.Struct<{
1846
+ readonly lines: Schema.optional<Schema.Finite>;
1847
+ readonly functions: Schema.optional<Schema.Finite>;
1848
+ readonly branches: Schema.optional<Schema.Finite>;
1849
+ readonly statements: Schema.optional<Schema.Finite>;
1850
+ }>;
1851
+ readonly patterns: Schema.withDecodingDefaultKey<Schema.$Array<Schema.Tuple<readonly [Schema.String, Schema.Struct<{
1852
+ readonly lines: Schema.optional<Schema.Finite>;
1853
+ readonly functions: Schema.optional<Schema.Finite>;
1854
+ readonly branches: Schema.optional<Schema.Finite>;
1855
+ readonly statements: Schema.optional<Schema.Finite>;
1856
+ readonly perFile: Schema.optionalKey<Schema.Union<readonly [Schema.Boolean, Schema.Struct<{
1857
+ readonly lines: Schema.optional<Schema.Finite>;
1858
+ readonly functions: Schema.optional<Schema.Finite>;
1859
+ readonly branches: Schema.optional<Schema.Finite>;
1860
+ readonly statements: Schema.optional<Schema.Finite>;
1861
+ }>]>>;
1862
+ }>]>>, never>;
1863
+ }>>;
1864
+ readonly baselines: Schema.optional<Schema.Struct<{
1865
+ readonly global: Schema.Struct<{
1866
+ readonly lines: Schema.optional<Schema.Finite>;
1867
+ readonly functions: Schema.optional<Schema.Finite>;
1868
+ readonly branches: Schema.optional<Schema.Finite>;
1869
+ readonly statements: Schema.optional<Schema.Finite>;
1870
+ }>;
1871
+ readonly patterns: Schema.withDecodingDefaultKey<Schema.$Array<Schema.Tuple<readonly [Schema.String, Schema.Struct<{
1872
+ readonly lines: Schema.optional<Schema.Finite>;
1873
+ readonly functions: Schema.optional<Schema.Finite>;
1874
+ readonly branches: Schema.optional<Schema.Finite>;
1875
+ readonly statements: Schema.optional<Schema.Finite>;
1876
+ readonly perFile: Schema.optionalKey<Schema.Union<readonly [Schema.Boolean, Schema.Struct<{
1877
+ readonly lines: Schema.optional<Schema.Finite>;
1878
+ readonly functions: Schema.optional<Schema.Finite>;
1879
+ readonly branches: Schema.optional<Schema.Finite>;
1880
+ readonly statements: Schema.optional<Schema.Finite>;
1881
+ }>]>>;
1882
+ }>]>>, never>;
1883
+ }>>;
1884
+ readonly scoped: Schema.withDecodingDefaultKey<Schema.Boolean, never>;
1885
+ readonly scopedFiles: Schema.optional<Schema.$Array<Schema.String>>;
1886
+ readonly totalFiles: Schema.optional<Schema.Finite>;
1887
+ readonly lowCoverage: Schema.$Array<Schema.Struct<{
1888
+ readonly file: Schema.String;
1889
+ readonly summary: Schema.Struct<{
1890
+ readonly statements: Schema.Finite;
1891
+ readonly branches: Schema.Finite;
1892
+ readonly functions: Schema.Finite;
1893
+ readonly lines: Schema.Finite;
1894
+ }>;
1895
+ readonly uncoveredLines: Schema.String;
1896
+ }>>;
1897
+ readonly lowCoverageFiles: Schema.$Array<Schema.String>;
1898
+ readonly belowTarget: Schema.optional<Schema.$Array<Schema.Struct<{
1899
+ readonly file: Schema.String;
1900
+ readonly summary: Schema.Struct<{
1901
+ readonly statements: Schema.Finite;
1902
+ readonly branches: Schema.Finite;
1903
+ readonly functions: Schema.Finite;
1904
+ readonly lines: Schema.Finite;
1905
+ }>;
1906
+ readonly uncoveredLines: Schema.String;
1907
+ }>>>;
1908
+ readonly belowTargetFiles: Schema.optional<Schema.$Array<Schema.String>>;
1909
+ readonly globShortfalls: Schema.optional<Schema.$Array<Schema.Struct<{
1910
+ readonly pattern: Schema.String;
1911
+ readonly summary: Schema.Struct<{
1912
+ readonly statements: Schema.Finite;
1913
+ readonly branches: Schema.Finite;
1914
+ readonly functions: Schema.Finite;
1915
+ readonly lines: Schema.Finite;
1916
+ }>;
1917
+ readonly thresholds: Schema.Struct<{
1918
+ readonly lines: Schema.optional<Schema.Finite>;
1919
+ readonly functions: Schema.optional<Schema.Finite>;
1920
+ readonly branches: Schema.optional<Schema.Finite>;
1921
+ readonly statements: Schema.optional<Schema.Finite>;
1922
+ }>;
1923
+ }>>>;
1924
+ }>>;
1925
+ readonly tagCounts: Schema.optional<Schema.$Record<Schema.String, Schema.Struct<{
1926
+ readonly passed: Schema.optional<Schema.Finite>;
1927
+ readonly failed: Schema.optional<Schema.Finite>;
1928
+ readonly skipped: Schema.optional<Schema.Finite>;
1929
+ }>>>;
1930
+ readonly consoleLeaks: Schema.optional<Schema.Struct<{
1931
+ readonly total: Schema.Finite;
1932
+ readonly byFile: Schema.$Array<Schema.Struct<{
1933
+ readonly file: Schema.String;
1934
+ readonly stdout: Schema.Finite;
1935
+ readonly stderr: Schema.Finite;
1936
+ readonly tests: Schema.optional<Schema.$Array<Schema.String>>;
1937
+ readonly sample: Schema.optional<Schema.String>;
1938
+ }>>;
1939
+ readonly truncated: Schema.optional<Schema.Boolean>;
1940
+ readonly fromFailingTests: Schema.optional<Schema.Struct<{
1941
+ readonly total: Schema.Finite;
1942
+ readonly files: Schema.Finite;
1943
+ }>>;
1944
+ }>>;
1945
+ readonly strayOutput: Schema.optional<Schema.Struct<{
1946
+ readonly total: Schema.Finite;
1947
+ readonly stdout: Schema.Finite;
1948
+ readonly stderr: Schema.Finite;
1949
+ readonly bytes: Schema.Finite;
1950
+ readonly samples: Schema.$Array<Schema.Struct<{
1951
+ readonly stream: Schema.Literals<readonly ["stdout", "stderr"]>;
1952
+ readonly text: Schema.String;
1953
+ }>>;
1954
+ }>>;
1955
+ }>;
1956
+ readonly classifications: Schema.$Record<Schema.String, Schema.String>;
1957
+ readonly discoveryLastScannedAt: Schema.optional<Schema.NullOr<Schema.String>>;
1958
+ readonly scopedNote: Schema.optional<Schema.NullOr<Schema.String>>;
1959
+ readonly suggestedActions: Schema.optionalKey<Schema.$Array<Schema.Struct<{
1960
+ readonly severity: Schema.Literals<readonly ["info", "warn", "blocker"]>;
1961
+ readonly title: Schema.String;
1962
+ readonly detail: Schema.String;
1963
+ readonly targetTool: Schema.optional<Schema.String>;
1964
+ }>>>;
1965
+ readonly runDiagnostics: Schema.optionalKey<Schema.Struct<{
1966
+ readonly performanceHints: Schema.$Array<Schema.Struct<{
1967
+ readonly kind: Schema.Literals<readonly ["environment", "import", "transform", "isolate"]>;
1968
+ readonly project: Schema.optionalKey<Schema.String>;
1969
+ readonly message: Schema.String;
1970
+ readonly remedy: Schema.String;
1971
+ readonly detail: Schema.String;
1972
+ readonly learnMoreUrl: Schema.String;
1973
+ readonly estimatedSavingMs: Schema.optionalKey<Schema.Finite>;
1974
+ readonly share: Schema.optionalKey<Schema.Finite>;
1975
+ }>>;
1976
+ readonly postRun: Schema.optionalKey<Schema.Struct<{
1977
+ readonly persistMs: Schema.Finite;
1978
+ readonly coverageScanMs: Schema.Finite;
1979
+ readonly totalMs: Schema.Finite;
1980
+ readonly renderMs: Schema.optionalKey<Schema.Finite>;
1981
+ readonly vitestDurationMs: Schema.optionalKey<Schema.Finite>;
1982
+ }>>;
1983
+ readonly persistence: Schema.optionalKey<Schema.Struct<{
1984
+ readonly ok: Schema.Boolean;
1985
+ readonly reason: Schema.optionalKey<Schema.String>;
1986
+ readonly migrationFailed: Schema.optionalKey<Schema.Boolean>;
1987
+ }>>;
1988
+ }>>;
1989
+ }>, Schema.Struct<{
1990
+ readonly kind: Schema.Literal<"timeout">;
1991
+ readonly timeoutSeconds: Schema.Number;
1992
+ }>, Schema.Struct<{
1993
+ readonly kind: Schema.Literal<"error">;
1994
+ readonly message: Schema.String;
1995
+ readonly reason: Schema.optionalKey<Schema.Literals<readonly ["stale-install"]>>;
1996
+ }>, Schema.Struct<{
1997
+ readonly kind: Schema.Literal<"no-match">;
1998
+ readonly projectRoot: Schema.String;
1999
+ readonly filter: Schema.Struct<{
2000
+ readonly project: Schema.NullOr<Schema.String>;
2001
+ readonly files: Schema.$Array<Schema.String>;
2002
+ readonly tags: Schema.NullOr<Schema.Struct<{
2003
+ readonly all: Schema.optionalKey<Schema.$Array<Schema.String>>;
2004
+ readonly any: Schema.optionalKey<Schema.$Array<Schema.String>>;
2005
+ readonly none: Schema.optionalKey<Schema.$Array<Schema.String>>;
2006
+ }>>;
2007
+ readonly resolvedExpression: Schema.NullOr<Schema.String>;
2008
+ }>;
2009
+ }>]>;
2010
+ readonly failure: Schema.Never;
2011
+ readonly failureMode: "error";
2012
+ }, DataReader | DataStore | McpSession>;
1204
2013
  /**
1205
2014
  * The `settings_list` tool's success payload.
1206
2015
  *
@@ -1224,7 +2033,25 @@ type SettingsListResultType = Schema.Schema.Type<typeof SettingsListResult>;
1224
2033
  *
1225
2034
  * @public
1226
2035
  */
1227
- declare const handleSettingsList: () => Effect.Effect<SettingsListResultType, never, DataReader>;
2036
+ export declare const handleSettingsList: () => Effect.Effect<SettingsListResultType, never, DataReader>;
2037
+ /**
2038
+ * The Effect-native `settings_list` tool. No parameters (the default
2039
+ * `Tool.EmptyParams` serves as a strict empty object).
2040
+ *
2041
+ * @public
2042
+ */
2043
+ export declare const settingsListTool: Tool.Tool<"settings_list", {
2044
+ readonly parameters: Tool.EmptyParams;
2045
+ readonly success: Schema.Struct<{
2046
+ readonly count: Schema.Number;
2047
+ readonly settings: Schema.$Array<Schema.Struct<{
2048
+ readonly hash: Schema.String;
2049
+ readonly capturedAt: Schema.String;
2050
+ }>>;
2051
+ }>;
2052
+ readonly failure: Schema.Never;
2053
+ readonly failureMode: "error";
2054
+ }, DataReader>;
1228
2055
  /**
1229
2056
  * The `test_status` tool's success payload.
1230
2057
  *
@@ -1282,7 +2109,45 @@ type TestStatusInputType = Schema.Schema.Type<typeof TestStatusInput>;
1282
2109
  *
1283
2110
  * @public
1284
2111
  */
1285
- declare const handleTestStatus: (input: TestStatusInputType) => Effect.Effect<TestStatusResultType, never, DataReader>;
2112
+ export declare const handleTestStatus: (input: TestStatusInputType) => Effect.Effect<TestStatusResultType, never, DataReader>;
2113
+ /**
2114
+ * The Effect-native `test_status` tool.
2115
+ *
2116
+ * @public
2117
+ */
2118
+ export declare const testStatusTool: Tool.Tool<"test_status", {
2119
+ readonly parameters: Schema.Struct<{
2120
+ readonly project: Schema.optionalKey<Schema.String>;
2121
+ }>;
2122
+ readonly success: Schema.Union<readonly [Schema.Struct<{
2123
+ readonly dataAvailable: Schema.Literal<true>;
2124
+ readonly manifestUpdatedAt: Schema.String;
2125
+ readonly projectFilter: Schema.optional<Schema.String>;
2126
+ readonly entries: Schema.$Array<Schema.Struct<{
2127
+ readonly project: Schema.String;
2128
+ readonly reportFile: Schema.String;
2129
+ readonly historyFile: Schema.optional<Schema.String>;
2130
+ readonly lastRun: Schema.NullOr<Schema.String>;
2131
+ readonly lastResult: Schema.NullOr<Schema.Literals<readonly ["passed", "failed", "interrupted"]>>;
2132
+ readonly strayOutput: Schema.optionalKey<Schema.Struct<{
2133
+ readonly total: Schema.Finite;
2134
+ readonly stdout: Schema.Finite;
2135
+ readonly stderr: Schema.Finite;
2136
+ readonly bytes: Schema.Finite;
2137
+ readonly samples: Schema.$Array<Schema.Struct<{
2138
+ readonly stream: Schema.Literals<readonly ["stdout", "stderr"]>;
2139
+ readonly text: Schema.String;
2140
+ }>>;
2141
+ }>>;
2142
+ }>>;
2143
+ }>, Schema.Struct<{
2144
+ readonly dataAvailable: Schema.Literal<false>;
2145
+ readonly projectFilter: Schema.optional<Schema.String>;
2146
+ readonly reason: Schema.Literals<readonly ["no_manifest", "project_filter_empty"]>;
2147
+ }>]>;
2148
+ readonly failure: Schema.Never;
2149
+ readonly failureMode: "error";
2150
+ }, DataReader>;
1286
2151
  /**
1287
2152
  * The `tdd_artifact_list` tool's success payload.
1288
2153
  *
@@ -1339,7 +2204,45 @@ type TddArtifactListInputType = Schema.Schema.Type<typeof TddArtifactListInput>;
1339
2204
  *
1340
2205
  * @public
1341
2206
  */
1342
- declare const handleTddArtifactList: (input: TddArtifactListInputType) => Effect.Effect<TddArtifactListResultType, never, DataReader>;
2207
+ export declare const handleTddArtifactList: (input: TddArtifactListInputType) => Effect.Effect<TddArtifactListResultType, never, DataReader>;
2208
+ /**
2209
+ * The Effect-native `tdd_artifact_list` tool.
2210
+ *
2211
+ * @public
2212
+ */
2213
+ export declare const tddArtifactListTool: Tool.Tool<"tdd_artifact_list", {
2214
+ readonly parameters: Schema.Struct<{
2215
+ readonly tddTaskId: Schema.Finite;
2216
+ readonly artifactKind: Schema.optionalKey<Schema.Literals<readonly ["test_written", "test_failed_run", "code_written", "test_passed_run", "refactor", "test_weakened"]>>;
2217
+ readonly phaseId: Schema.optionalKey<Schema.Finite>;
2218
+ readonly behaviorId: Schema.optionalKey<Schema.Finite>;
2219
+ readonly limit: Schema.optionalKey<Schema.Finite>;
2220
+ }>;
2221
+ readonly success: Schema.Struct<{
2222
+ readonly tddTaskId: Schema.Number;
2223
+ readonly filters: Schema.Struct<{
2224
+ readonly artifactKind: Schema.optional<Schema.Literals<readonly ["test_written", "test_failed_run", "code_written", "test_passed_run", "refactor", "test_weakened"]>>;
2225
+ readonly phaseId: Schema.optional<Schema.Number>;
2226
+ readonly behaviorId: Schema.optional<Schema.Number>;
2227
+ }>;
2228
+ readonly count: Schema.Number;
2229
+ readonly artifacts: Schema.$Array<Schema.Struct<{
2230
+ readonly id: Schema.Finite;
2231
+ readonly tddTaskId: Schema.Number;
2232
+ readonly phaseId: Schema.Number;
2233
+ readonly phaseName: Schema.Literals<readonly ["spike", "red", "red.triangulate", "green", "green.fake-it", "refactor", "extended-red", "green-without-red"]>;
2234
+ readonly artifactKind: Schema.Literals<readonly ["test_written", "test_failed_run", "code_written", "test_passed_run", "refactor", "test_weakened"]>;
2235
+ readonly behaviorId: Schema.NullOr<Schema.Number>;
2236
+ readonly testCaseId: Schema.NullOr<Schema.Number>;
2237
+ readonly testRunId: Schema.NullOr<Schema.Number>;
2238
+ readonly testFirstFailureRunId: Schema.NullOr<Schema.Number>;
2239
+ readonly recordedAt: Schema.String;
2240
+ readonly suite: Schema.Literals<readonly ["vitest", "bats"]>;
2241
+ }>>;
2242
+ }>;
2243
+ readonly failure: Schema.Never;
2244
+ readonly failureMode: "error";
2245
+ }, DataReader>;
1343
2246
  /**
1344
2247
  * The `tdd_phase_transition_request` tool's success payload.
1345
2248
  *
@@ -1401,7 +2304,42 @@ type PhaseTransitionInputType = Schema.Schema.Type<typeof PhaseTransitionInput>;
1401
2304
  *
1402
2305
  * @public
1403
2306
  */
1404
- declare const handlePhaseTransitionRequest: (input: PhaseTransitionInputType) => Effect.Effect<PhaseTransitionResultType, never, DataReader | DataStore>;
2307
+ export declare const handlePhaseTransitionRequest: (input: PhaseTransitionInputType) => Effect.Effect<PhaseTransitionResultType, never, DataReader | DataStore>;
2308
+ /**
2309
+ * The Effect-native `tdd_phase_transition_request` tool.
2310
+ *
2311
+ * @public
2312
+ */
2313
+ export declare const tddPhaseTransitionRequestTool: Tool.Tool<"tdd_phase_transition_request", {
2314
+ readonly parameters: Schema.Struct<{
2315
+ readonly tddTaskId: Schema.Finite;
2316
+ readonly goalId: Schema.Finite;
2317
+ readonly requestedPhase: Schema.Literals<readonly ["spike", "red", "red.triangulate", "green", "green.fake-it", "refactor", "extended-red", "green-without-red"]>;
2318
+ readonly citedArtifactId: Schema.optionalKey<Schema.Finite>;
2319
+ readonly citedArtifactKind: Schema.optionalKey<Schema.Literals<readonly ["test_written", "test_failed_run", "code_written", "test_passed_run", "refactor", "test_weakened"]>>;
2320
+ readonly behaviorId: Schema.optionalKey<Schema.Finite>;
2321
+ readonly reason: Schema.optionalKey<Schema.String>;
2322
+ }>;
2323
+ readonly success: Schema.Union<readonly [Schema.Struct<{
2324
+ readonly accepted: Schema.Literal<true>;
2325
+ readonly phase: Schema.Literals<readonly ["spike", "red", "red.triangulate", "green", "green.fake-it", "refactor", "extended-red", "green-without-red"]>;
2326
+ readonly newPhaseId: Schema.Finite;
2327
+ readonly previousPhaseId: Schema.NullOr<Schema.Number>;
2328
+ readonly citedArtifactId: Schema.optional<Schema.Number>;
2329
+ readonly citedArtifactSource: Schema.optional<Schema.Literals<readonly ["explicit-id", "explicit-kind", "transition-derived", "none"]>>;
2330
+ }>, Schema.Struct<{
2331
+ readonly accepted: Schema.Literal<false>;
2332
+ readonly phase: Schema.Literals<readonly ["spike", "red", "red.triangulate", "green", "green.fake-it", "refactor", "extended-red", "green-without-red"]>;
2333
+ readonly denialReason: Schema.Literals<readonly ["missing_artifact_evidence", "wrong_artifact_kind", "wrong_source_phase", "unknown_tdd_task", "tdd_task_already_ended", "goal_not_started", "goal_not_found", "goal_not_in_progress", "goal_not_in_tdd_task", "behavior_not_found", "behavior_not_in_goal", "refactor_without_passing_run", "evidence_not_in_phase_window", "evidence_not_for_behavior", "evidence_test_was_already_failing"]>;
2334
+ readonly remediation: Schema.Struct<{
2335
+ readonly hint: Schema.String;
2336
+ readonly suggestedTool: Schema.optionalKey<Schema.String>;
2337
+ readonly suggestedArgs: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>;
2338
+ }>;
2339
+ }>]>;
2340
+ readonly failure: Schema.Never;
2341
+ readonly failureMode: "error";
2342
+ }, DataReader | DataStore>;
1405
2343
  /**
1406
2344
  * The `tdd_progress_push` tool's parameters.
1407
2345
  *
@@ -1438,7 +2376,22 @@ type TddProgressPushResultType = Schema.Schema.Type<typeof TddProgressPushResult
1438
2376
  *
1439
2377
  * @public
1440
2378
  */
1441
- declare const handleTddProgressPush: (input: TddProgressPushInputType) => Effect.Effect<TddProgressPushResultType, never, DataReader | McpServer.McpServer>;
2379
+ export declare const handleTddProgressPush: (input: TddProgressPushInputType) => Effect.Effect<TddProgressPushResultType, never, DataReader | McpServer.McpServer>;
2380
+ /**
2381
+ * The Effect-native `tdd_progress_push` tool.
2382
+ *
2383
+ * @public
2384
+ */
2385
+ export declare const tddProgressPushTool: Tool.Tool<"tdd_progress_push", {
2386
+ readonly parameters: Schema.Struct<{
2387
+ readonly payload: Schema.String;
2388
+ }>;
2389
+ readonly success: Schema.Struct<{
2390
+ readonly ok: Schema.Literal<true>;
2391
+ }>;
2392
+ readonly failure: Schema.Never;
2393
+ readonly failureMode: "error";
2394
+ }, DataReader | McpServer.McpServer>;
1442
2395
  /**
1443
2396
  * The `test_trends` tool's success payload.
1444
2397
  *
@@ -1496,7 +2449,46 @@ type TestTrendsInputType = Schema.Schema.Type<typeof TestTrendsInput>;
1496
2449
  *
1497
2450
  * @public
1498
2451
  */
1499
- declare const handleTestTrends: (input: TestTrendsInputType) => Effect.Effect<TestTrendsResultType, never, DataReader>;
2452
+ export declare const handleTestTrends: (input: TestTrendsInputType) => Effect.Effect<TestTrendsResultType, never, DataReader>;
2453
+ /**
2454
+ * The Effect-native `test_trends` tool.
2455
+ *
2456
+ * @public
2457
+ */
2458
+ export declare const testTrendsTool: Tool.Tool<"test_trends", {
2459
+ readonly parameters: Schema.Struct<{
2460
+ readonly project: Schema.String;
2461
+ readonly limit: Schema.optionalKey<Schema.Finite>;
2462
+ }>;
2463
+ readonly success: Schema.Union<readonly [Schema.Struct<{
2464
+ readonly dataAvailable: Schema.Literal<true>;
2465
+ readonly project: Schema.String;
2466
+ readonly trends: Schema.Struct<{
2467
+ readonly entries: Schema.$Array<Schema.Struct<{
2468
+ readonly timestamp: Schema.String;
2469
+ readonly coverage: Schema.Struct<{
2470
+ readonly statements: Schema.Finite;
2471
+ readonly branches: Schema.Finite;
2472
+ readonly functions: Schema.Finite;
2473
+ readonly lines: Schema.Finite;
2474
+ }>;
2475
+ readonly delta: Schema.Struct<{
2476
+ readonly statements: Schema.Finite;
2477
+ readonly branches: Schema.Finite;
2478
+ readonly functions: Schema.Finite;
2479
+ readonly lines: Schema.Finite;
2480
+ }>;
2481
+ readonly direction: Schema.Literals<readonly ["improving", "regressing", "stable"]>;
2482
+ readonly targetsHash: Schema.optional<Schema.String>;
2483
+ }>>;
2484
+ }>;
2485
+ }>, Schema.Struct<{
2486
+ readonly dataAvailable: Schema.Literal<false>;
2487
+ readonly project: Schema.String;
2488
+ }>]>;
2489
+ readonly failure: Schema.Never;
2490
+ readonly failureMode: "error";
2491
+ }, DataReader>;
1500
2492
  /**
1501
2493
  * The `triage_brief` tool's success payload.
1502
2494
  *
@@ -1532,7 +2524,24 @@ type TriageBriefInputType = Schema.Schema.Type<typeof TriageBriefInput>;
1532
2524
  *
1533
2525
  * @public
1534
2526
  */
1535
- declare const handleTriageBrief: (input: TriageBriefInputType) => Effect.Effect<TriageBriefResultType, never, DataReader>;
2527
+ export declare const handleTriageBrief: (input: TriageBriefInputType) => Effect.Effect<TriageBriefResultType, never, DataReader>;
2528
+ /**
2529
+ * The Effect-native `triage_brief` tool.
2530
+ *
2531
+ * @public
2532
+ */
2533
+ export declare const triageBriefTool: Tool.Tool<"triage_brief", {
2534
+ readonly parameters: Schema.Struct<{
2535
+ readonly project: Schema.optionalKey<Schema.String>;
2536
+ readonly maxLines: Schema.optionalKey<Schema.Finite>;
2537
+ }>;
2538
+ readonly success: Schema.Struct<{
2539
+ readonly hasContent: Schema.Boolean;
2540
+ readonly markdown: Schema.String;
2541
+ }>;
2542
+ readonly failure: Schema.Never;
2543
+ readonly failureMode: "error";
2544
+ }, DataReader>;
1536
2545
  /**
1537
2546
  * The `turn_search` tool's success payload.
1538
2547
  *
@@ -1577,7 +2586,33 @@ type TurnSearchInputType = Schema.Schema.Type<typeof TurnSearchInput>;
1577
2586
  *
1578
2587
  * @public
1579
2588
  */
1580
- declare const handleTurnSearch: (input: TurnSearchInputType) => Effect.Effect<TurnSearchResultType, never, DataReader>;
2589
+ export declare const handleTurnSearch: (input: TurnSearchInputType) => Effect.Effect<TurnSearchResultType, never, DataReader>;
2590
+ /**
2591
+ * The Effect-native `turn_search` tool.
2592
+ *
2593
+ * @public
2594
+ */
2595
+ export declare const turnSearchTool: Tool.Tool<"turn_search", {
2596
+ readonly parameters: Schema.Struct<{
2597
+ readonly sessionId: Schema.optionalKey<Schema.Finite>;
2598
+ readonly since: Schema.optionalKey<Schema.String>;
2599
+ readonly type: Schema.optionalKey<Schema.Literals<readonly ["user_prompt", "tool_call", "tool_result", "file_edit", "hook_fire", "note", "hypothesis"]>>;
2600
+ readonly limit: Schema.optionalKey<Schema.Finite>;
2601
+ }>;
2602
+ readonly success: Schema.Struct<{
2603
+ readonly count: Schema.Finite;
2604
+ readonly turns: Schema.$Array<Schema.Struct<{
2605
+ readonly id: Schema.Finite;
2606
+ readonly sessionId: Schema.Finite;
2607
+ readonly turnNo: Schema.Finite;
2608
+ readonly type: Schema.String;
2609
+ readonly payload: Schema.String;
2610
+ readonly occurredAt: Schema.String;
2611
+ }>>;
2612
+ }>;
2613
+ readonly failure: Schema.Never;
2614
+ readonly failureMode: "error";
2615
+ }, DataReader>;
1581
2616
  /**
1582
2617
  * The `wrapup_prompt` tool's success payload.
1583
2618
  *
@@ -1616,7 +2651,27 @@ type WrapupPromptInputType = Schema.Schema.Type<typeof WrapupPromptInput>;
1616
2651
  *
1617
2652
  * @public
1618
2653
  */
1619
- declare const handleWrapupPrompt: (input: WrapupPromptInputType) => Effect.Effect<WrapupPromptResultType, never, DataReader>;
2654
+ export declare const handleWrapupPrompt: (input: WrapupPromptInputType) => Effect.Effect<WrapupPromptResultType, never, DataReader>;
2655
+ /**
2656
+ * The Effect-native `wrapup_prompt` tool.
2657
+ *
2658
+ * @public
2659
+ */
2660
+ export declare const wrapupPromptTool: Tool.Tool<"wrapup_prompt", {
2661
+ readonly parameters: Schema.Struct<{
2662
+ readonly sessionId: Schema.optionalKey<Schema.Finite>;
2663
+ readonly chatId: Schema.optionalKey<Schema.String>;
2664
+ readonly kind: Schema.optionalKey<Schema.Literals<readonly ["stop", "session_end", "pre_compact", "tdd_handoff", "user_prompt_nudge"]>>;
2665
+ readonly userPromptHint: Schema.optionalKey<Schema.String>;
2666
+ }>;
2667
+ readonly success: Schema.Struct<{
2668
+ readonly hasContent: Schema.Boolean;
2669
+ readonly kind: Schema.Literals<readonly ["stop", "session_end", "pre_compact", "tdd_handoff", "user_prompt_nudge"]>;
2670
+ readonly markdown: Schema.String;
2671
+ }>;
2672
+ readonly failure: Schema.Never;
2673
+ readonly failureMode: "error";
2674
+ }, DataReader>;
1620
2675
  /**
1621
2676
  * Every tool the server registers.
1622
2677
  *
@@ -2108,6 +3163,7 @@ export declare const Kit: Toolkit.Toolkit<{
2108
3163
  }>>;
2109
3164
  readonly passWithNoTests: import("effect/Schema").optionalKey<import("effect/Schema").Boolean>;
2110
3165
  readonly timeout: import("effect/Schema").optionalKey<import("effect/Schema").Finite>;
3166
+ readonly _callerCwd: import("effect/Schema").optionalKey<import("effect/Schema").String>;
2111
3167
  readonly _sessionContext: import("effect/Schema").optionalKey<import("effect/Schema").Struct<{
2112
3168
  readonly chatId: import("effect/Schema").String;
2113
3169
  readonly conversationId: import("effect/Schema").String;
@@ -2323,6 +3379,30 @@ export declare const Kit: Toolkit.Toolkit<{
2323
3379
  readonly detail: import("effect/Schema").String;
2324
3380
  readonly targetTool: import("effect/Schema").optional<import("effect/Schema").String>;
2325
3381
  }>>>;
3382
+ readonly runDiagnostics: import("effect/Schema").optionalKey<import("effect/Schema").Struct<{
3383
+ readonly performanceHints: import("effect/Schema").$Array<import("effect/Schema").Struct<{
3384
+ readonly kind: import("effect/Schema").Literals<readonly ["environment", "import", "transform", "isolate"]>;
3385
+ readonly project: import("effect/Schema").optionalKey<import("effect/Schema").String>;
3386
+ readonly message: import("effect/Schema").String;
3387
+ readonly remedy: import("effect/Schema").String;
3388
+ readonly detail: import("effect/Schema").String;
3389
+ readonly learnMoreUrl: import("effect/Schema").String;
3390
+ readonly estimatedSavingMs: import("effect/Schema").optionalKey<import("effect/Schema").Finite>;
3391
+ readonly share: import("effect/Schema").optionalKey<import("effect/Schema").Finite>;
3392
+ }>>;
3393
+ readonly postRun: import("effect/Schema").optionalKey<import("effect/Schema").Struct<{
3394
+ readonly persistMs: import("effect/Schema").Finite;
3395
+ readonly coverageScanMs: import("effect/Schema").Finite;
3396
+ readonly totalMs: import("effect/Schema").Finite;
3397
+ readonly renderMs: import("effect/Schema").optionalKey<import("effect/Schema").Finite>;
3398
+ readonly vitestDurationMs: import("effect/Schema").optionalKey<import("effect/Schema").Finite>;
3399
+ }>>;
3400
+ readonly persistence: import("effect/Schema").optionalKey<import("effect/Schema").Struct<{
3401
+ readonly ok: import("effect/Schema").Boolean;
3402
+ readonly reason: import("effect/Schema").optionalKey<import("effect/Schema").String>;
3403
+ readonly migrationFailed: import("effect/Schema").optionalKey<import("effect/Schema").Boolean>;
3404
+ }>>;
3405
+ }>>;
2326
3406
  }>, import("effect/Schema").Struct<{
2327
3407
  readonly kind: import("effect/Schema").Literal<"timeout">;
2328
3408
  readonly timeoutSeconds: import("effect/Schema").Number;
@@ -2417,7 +3497,7 @@ export declare const Kit: Toolkit.Toolkit<{
2417
3497
  }>, import("effect/Schema").Struct<{
2418
3498
  readonly action: import("effect/Schema").Literal<"list_by_tdd_task">;
2419
3499
  readonly tddTaskId: import("effect/Schema").Finite;
2420
- }>]>, import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
3500
+ }>]>, import("effect/Schema").Union<readonly [import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
2421
3501
  readonly _idempotentReplay: import("effect/Schema").optionalKey<import("effect/Schema").Literal<true>>;
2422
3502
  readonly ok: import("effect/Schema").Literal<true>;
2423
3503
  readonly action: import("effect/Schema").Literal<"create">;
@@ -2502,16 +3582,73 @@ export declare const Kit: Toolkit.Toolkit<{
2502
3582
  readonly status: import("effect/Schema").Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
2503
3583
  readonly createdAt: import("effect/Schema").String;
2504
3584
  }>>;
2505
- }>, import("effect/Schema").Struct<{
3585
+ }>]>, import("effect/Schema").Struct<{
2506
3586
  readonly ok: import("effect/Schema").Literal<false>;
2507
- readonly error: import("effect/Schema").StructWithRest<import("effect/Schema").Struct<{
2508
- readonly _tag: import("effect/Schema").String;
3587
+ readonly error: import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
3588
+ readonly _tag: import("effect/Schema").Literal<"GoalNotFoundError">;
3589
+ } & {
3590
+ readonly message: import("effect/Schema").String;
3591
+ readonly remediation: import("effect/Schema").Struct<{
3592
+ readonly hint: import("effect/Schema").String;
3593
+ readonly suggestedTool: import("effect/Schema").optionalKey<import("effect/Schema").String>;
3594
+ readonly suggestedArgs: import("effect/Schema").optionalKey<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>>;
3595
+ }>;
3596
+ } & {
3597
+ readonly id: import("effect/Schema").Number;
3598
+ readonly reason: import("effect/Schema").String;
3599
+ }>, import("effect/Schema").Struct<{
3600
+ readonly _tag: import("effect/Schema").Literal<"BehaviorNotFoundError">;
3601
+ } & {
3602
+ readonly message: import("effect/Schema").String;
3603
+ readonly remediation: import("effect/Schema").Struct<{
3604
+ readonly hint: import("effect/Schema").String;
3605
+ readonly suggestedTool: import("effect/Schema").optionalKey<import("effect/Schema").String>;
3606
+ readonly suggestedArgs: import("effect/Schema").optionalKey<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>>;
3607
+ }>;
3608
+ } & {
3609
+ readonly id: import("effect/Schema").Number;
3610
+ readonly reason: import("effect/Schema").String;
3611
+ }>, import("effect/Schema").Struct<{
3612
+ readonly _tag: import("effect/Schema").Literal<"TddTaskNotFoundError">;
3613
+ } & {
3614
+ readonly message: import("effect/Schema").String;
3615
+ readonly remediation: import("effect/Schema").Struct<{
3616
+ readonly hint: import("effect/Schema").String;
3617
+ readonly suggestedTool: import("effect/Schema").optionalKey<import("effect/Schema").String>;
3618
+ readonly suggestedArgs: import("effect/Schema").optionalKey<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>>;
3619
+ }>;
3620
+ } & {
3621
+ readonly id: import("effect/Schema").Number;
3622
+ readonly reason: import("effect/Schema").String;
3623
+ }>, import("effect/Schema").Struct<{
3624
+ readonly _tag: import("effect/Schema").Literal<"TddTaskAlreadyEndedError">;
3625
+ } & {
3626
+ readonly message: import("effect/Schema").String;
3627
+ readonly remediation: import("effect/Schema").Struct<{
3628
+ readonly hint: import("effect/Schema").String;
3629
+ readonly suggestedTool: import("effect/Schema").optionalKey<import("effect/Schema").String>;
3630
+ readonly suggestedArgs: import("effect/Schema").optionalKey<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>>;
3631
+ }>;
3632
+ } & {
3633
+ readonly id: import("effect/Schema").Number;
3634
+ readonly endedAt: import("effect/Schema").String;
3635
+ readonly outcome: import("effect/Schema").Literals<readonly ["succeeded", "blocked", "abandoned"]>;
3636
+ }>, import("effect/Schema").Struct<{
3637
+ readonly _tag: import("effect/Schema").Literal<"IllegalStatusTransitionError">;
3638
+ } & {
3639
+ readonly message: import("effect/Schema").String;
2509
3640
  readonly remediation: import("effect/Schema").Struct<{
2510
3641
  readonly hint: import("effect/Schema").String;
2511
3642
  readonly suggestedTool: import("effect/Schema").optionalKey<import("effect/Schema").String>;
2512
3643
  readonly suggestedArgs: import("effect/Schema").optionalKey<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>>;
2513
3644
  }>;
2514
- }>, readonly [import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>]>;
3645
+ } & {
3646
+ readonly entity: import("effect/Schema").Literals<readonly ["goal", "behavior", "task"]>;
3647
+ readonly id: import("effect/Schema").Number;
3648
+ readonly from: import("effect/Schema").String;
3649
+ readonly to: import("effect/Schema").String;
3650
+ readonly reason: import("effect/Schema").String;
3651
+ }>]>;
2515
3652
  }>]>, typeof import("@effected/mcp").ToolRefusal, import("@vitest-agent/engine").DataReader | import("@vitest-agent/engine").DataStore>;
2516
3653
  readonly tdd_goal: import("@effected/mcp").UnionTool<"tdd_goal", import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
2517
3654
  readonly action: import("effect/Schema").Literal<"create">;
@@ -2531,7 +3668,7 @@ export declare const Kit: Toolkit.Toolkit<{
2531
3668
  }>, import("effect/Schema").Struct<{
2532
3669
  readonly action: import("effect/Schema").Literal<"list">;
2533
3670
  readonly tddTaskId: import("effect/Schema").Finite;
2534
- }>]>, import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
3671
+ }>]>, import("effect/Schema").Union<readonly [import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
2535
3672
  readonly _idempotentReplay: import("effect/Schema").optionalKey<import("effect/Schema").Literal<true>>;
2536
3673
  readonly ok: import("effect/Schema").Literal<true>;
2537
3674
  readonly action: import("effect/Schema").Literal<"create">;
@@ -2603,26 +3740,83 @@ export declare const Kit: Toolkit.Toolkit<{
2603
3740
  readonly createdAt: import("effect/Schema").String;
2604
3741
  }>>;
2605
3742
  }>>;
2606
- }>, import("effect/Schema").Struct<{
3743
+ }>]>, import("effect/Schema").Struct<{
2607
3744
  readonly ok: import("effect/Schema").Literal<false>;
2608
- readonly error: import("effect/Schema").StructWithRest<import("effect/Schema").Struct<{
2609
- readonly _tag: import("effect/Schema").String;
3745
+ readonly error: import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
3746
+ readonly _tag: import("effect/Schema").Literal<"GoalNotFoundError">;
3747
+ } & {
3748
+ readonly message: import("effect/Schema").String;
2610
3749
  readonly remediation: import("effect/Schema").Struct<{
2611
3750
  readonly hint: import("effect/Schema").String;
2612
3751
  readonly suggestedTool: import("effect/Schema").optionalKey<import("effect/Schema").String>;
2613
3752
  readonly suggestedArgs: import("effect/Schema").optionalKey<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>>;
2614
3753
  }>;
2615
- }>, readonly [import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>]>;
2616
- }>]>, typeof import("@effected/mcp").ToolRefusal, import("@vitest-agent/engine").DataReader | import("@vitest-agent/engine").DataStore>;
2617
- readonly tdd_phase_transition_request: import("effect/ai/Tool").Tool<"tdd_phase_transition_request", {
2618
- readonly parameters: import("effect/Schema").Struct<{
2619
- readonly tddTaskId: import("effect/Schema").Finite;
2620
- readonly goalId: import("effect/Schema").Finite;
2621
- readonly requestedPhase: import("effect/Schema").Literals<readonly ["spike", "red", "red.triangulate", "green", "green.fake-it", "refactor", "extended-red", "green-without-red"]>;
2622
- readonly citedArtifactId: import("effect/Schema").optionalKey<import("effect/Schema").Finite>;
2623
- readonly citedArtifactKind: import("effect/Schema").optionalKey<import("effect/Schema").Literals<readonly ["test_written", "test_failed_run", "code_written", "test_passed_run", "refactor", "test_weakened"]>>;
2624
- readonly behaviorId: import("effect/Schema").optionalKey<import("effect/Schema").Finite>;
2625
- readonly reason: import("effect/Schema").optionalKey<import("effect/Schema").String>;
3754
+ } & {
3755
+ readonly id: import("effect/Schema").Number;
3756
+ readonly reason: import("effect/Schema").String;
3757
+ }>, import("effect/Schema").Struct<{
3758
+ readonly _tag: import("effect/Schema").Literal<"BehaviorNotFoundError">;
3759
+ } & {
3760
+ readonly message: import("effect/Schema").String;
3761
+ readonly remediation: import("effect/Schema").Struct<{
3762
+ readonly hint: import("effect/Schema").String;
3763
+ readonly suggestedTool: import("effect/Schema").optionalKey<import("effect/Schema").String>;
3764
+ readonly suggestedArgs: import("effect/Schema").optionalKey<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>>;
3765
+ }>;
3766
+ } & {
3767
+ readonly id: import("effect/Schema").Number;
3768
+ readonly reason: import("effect/Schema").String;
3769
+ }>, import("effect/Schema").Struct<{
3770
+ readonly _tag: import("effect/Schema").Literal<"TddTaskNotFoundError">;
3771
+ } & {
3772
+ readonly message: import("effect/Schema").String;
3773
+ readonly remediation: import("effect/Schema").Struct<{
3774
+ readonly hint: import("effect/Schema").String;
3775
+ readonly suggestedTool: import("effect/Schema").optionalKey<import("effect/Schema").String>;
3776
+ readonly suggestedArgs: import("effect/Schema").optionalKey<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>>;
3777
+ }>;
3778
+ } & {
3779
+ readonly id: import("effect/Schema").Number;
3780
+ readonly reason: import("effect/Schema").String;
3781
+ }>, import("effect/Schema").Struct<{
3782
+ readonly _tag: import("effect/Schema").Literal<"TddTaskAlreadyEndedError">;
3783
+ } & {
3784
+ readonly message: import("effect/Schema").String;
3785
+ readonly remediation: import("effect/Schema").Struct<{
3786
+ readonly hint: import("effect/Schema").String;
3787
+ readonly suggestedTool: import("effect/Schema").optionalKey<import("effect/Schema").String>;
3788
+ readonly suggestedArgs: import("effect/Schema").optionalKey<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>>;
3789
+ }>;
3790
+ } & {
3791
+ readonly id: import("effect/Schema").Number;
3792
+ readonly endedAt: import("effect/Schema").String;
3793
+ readonly outcome: import("effect/Schema").Literals<readonly ["succeeded", "blocked", "abandoned"]>;
3794
+ }>, import("effect/Schema").Struct<{
3795
+ readonly _tag: import("effect/Schema").Literal<"IllegalStatusTransitionError">;
3796
+ } & {
3797
+ readonly message: import("effect/Schema").String;
3798
+ readonly remediation: import("effect/Schema").Struct<{
3799
+ readonly hint: import("effect/Schema").String;
3800
+ readonly suggestedTool: import("effect/Schema").optionalKey<import("effect/Schema").String>;
3801
+ readonly suggestedArgs: import("effect/Schema").optionalKey<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>>;
3802
+ }>;
3803
+ } & {
3804
+ readonly entity: import("effect/Schema").Literals<readonly ["goal", "behavior", "task"]>;
3805
+ readonly id: import("effect/Schema").Number;
3806
+ readonly from: import("effect/Schema").String;
3807
+ readonly to: import("effect/Schema").String;
3808
+ readonly reason: import("effect/Schema").String;
3809
+ }>]>;
3810
+ }>]>, typeof import("@effected/mcp").ToolRefusal, import("@vitest-agent/engine").DataReader | import("@vitest-agent/engine").DataStore>;
3811
+ readonly tdd_phase_transition_request: import("effect/ai/Tool").Tool<"tdd_phase_transition_request", {
3812
+ readonly parameters: import("effect/Schema").Struct<{
3813
+ readonly tddTaskId: import("effect/Schema").Finite;
3814
+ readonly goalId: import("effect/Schema").Finite;
3815
+ readonly requestedPhase: import("effect/Schema").Literals<readonly ["spike", "red", "red.triangulate", "green", "green.fake-it", "refactor", "extended-red", "green-without-red"]>;
3816
+ readonly citedArtifactId: import("effect/Schema").optionalKey<import("effect/Schema").Finite>;
3817
+ readonly citedArtifactKind: import("effect/Schema").optionalKey<import("effect/Schema").Literals<readonly ["test_written", "test_failed_run", "code_written", "test_passed_run", "refactor", "test_weakened"]>>;
3818
+ readonly behaviorId: import("effect/Schema").optionalKey<import("effect/Schema").Finite>;
3819
+ readonly reason: import("effect/Schema").optionalKey<import("effect/Schema").String>;
2626
3820
  }>;
2627
3821
  readonly success: import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
2628
3822
  readonly accepted: import("effect/Schema").Literal<true>;
@@ -3578,27 +4772,7 @@ export declare const toolHandlers: {
3578
4772
  } | {
3579
4773
  readonly _idempotentReplay?: true;
3580
4774
  readonly action: "validate";
3581
- } | (({
3582
- readonly action: "record";
3583
- readonly id: number;
3584
- } | {
3585
- readonly action: "list";
3586
- readonly count: number;
3587
- readonly hypotheses: readonly {
3588
- readonly id: number;
3589
- readonly sessionId: number;
3590
- readonly content: string;
3591
- readonly citedTestErrorId: number | null;
3592
- readonly citedStackFrameId: number | null;
3593
- readonly validationOutcome: "abandoned" | "confirmed" | "refuted" | null;
3594
- readonly validatedAt: string | null;
3595
- }[];
3596
- } | {
3597
- readonly _idempotentReplay?: true;
3598
- readonly action: "validate";
3599
- }) & {
3600
- _idempotentReplay: true;
3601
- }), import("effect/ai/McpSchema").InvalidParams | import("@effected/mcp").ToolRefusal, import("@vitest-agent/engine").DataReader | import("@vitest-agent/engine").DataStore | McpSession>;
4775
+ }, import("effect/ai/McpSchema").InvalidParams | import("@effected/mcp").ToolRefusal, import("@vitest-agent/engine").DataReader | import("@vitest-agent/engine").DataStore | McpSession>;
3602
4776
  tdd_task: (payload: unknown) => import("effect/Effect").Effect<{
3603
4777
  readonly action: "get";
3604
4778
  readonly found: true;
@@ -3683,99 +4857,64 @@ export declare const toolHandlers: {
3683
4857
  readonly action: "end";
3684
4858
  readonly tddTaskId: number;
3685
4859
  readonly outcome: "abandoned" | "blocked" | "succeeded";
3686
- } | (({
3687
- readonly action: "get";
3688
- readonly found: true;
3689
- readonly task: {
3690
- readonly tddTaskId: number;
3691
- readonly sessionId: number;
3692
- readonly goal: string;
3693
- readonly startedAt: string;
3694
- readonly endedAt: string | null;
3695
- readonly outcome: string | null;
3696
- readonly runId: string | null;
3697
- readonly goals: readonly {
3698
- readonly id: number;
3699
- readonly sessionId: number;
3700
- readonly ordinal: number;
3701
- readonly goal: string;
3702
- readonly status: "abandoned" | "done" | "in_progress" | "pending";
3703
- readonly createdAt: string;
3704
- readonly behaviors: readonly {
3705
- readonly id: number;
3706
- readonly goalId: number;
3707
- readonly ordinal: number;
3708
- readonly behavior: string;
3709
- readonly suggestedTestName: string | null;
3710
- readonly status: "abandoned" | "done" | "in_progress" | "pending";
3711
- readonly createdAt: string;
3712
- }[];
3713
- }[];
3714
- readonly phases: readonly {
3715
- readonly id: number;
3716
- readonly behaviorId: number | null;
3717
- readonly phase: string;
3718
- readonly startedAt: string;
3719
- readonly endedAt: string | null;
3720
- readonly transitionReason: string | null;
3721
- }[];
3722
- readonly artifacts: readonly {
3723
- readonly id: number;
3724
- readonly phaseId: number;
3725
- readonly artifactKind: string;
3726
- readonly testCaseId: number | null;
3727
- readonly testRunId: number | null;
3728
- readonly recordedAt: string;
3729
- }[];
3730
- };
3731
- readonly currentPhase: {
3732
- readonly id: number;
3733
- readonly phase: string;
3734
- readonly startedAt: string;
3735
- readonly behaviorId: number | null;
3736
- } | null;
3737
- } | {
3738
- readonly action: "get";
3739
- readonly found: false;
3740
- readonly tddTaskId: number;
3741
- } | {
3742
- readonly action: "resume";
3743
- readonly found: true;
3744
- readonly tddTaskId: number;
3745
- readonly goal: string;
3746
- readonly status: string;
3747
- readonly currentPhase: {
3748
- readonly id: number;
3749
- readonly phase: string;
3750
- readonly startedAt: string;
3751
- readonly behaviorId: number | null;
3752
- } | null;
3753
- readonly phasesRecorded: number;
3754
- readonly artifactsRecorded: number;
3755
- } | {
3756
- readonly action: "resume";
3757
- readonly found: false;
3758
- readonly tddTaskId: number;
3759
- } | {
3760
- readonly _idempotentReplay?: true;
3761
- readonly action: "start";
3762
- readonly tddTaskId: number;
3763
- readonly goal: string;
3764
- readonly runId?: string | undefined;
3765
- } | {
3766
- readonly _idempotentReplay?: true;
3767
- readonly action: "end";
3768
- readonly tddTaskId: number;
3769
- readonly outcome: "abandoned" | "blocked" | "succeeded";
3770
- }) & {
3771
- _idempotentReplay: true;
3772
- }), import("effect/ai/McpSchema").InvalidParams | import("@effected/mcp").ToolRefusal, import("@vitest-agent/engine").DataReader | import("@vitest-agent/engine").DataStore>;
4860
+ }, import("effect/ai/McpSchema").InvalidParams | import("@effected/mcp").ToolRefusal, import("@vitest-agent/engine").DataReader | import("@vitest-agent/engine").DataStore>;
3773
4861
  tdd_phase_transition_request: typeof handlePhaseTransitionRequest;
3774
4862
  tdd_goal: (payload: unknown) => import("effect/Effect").Effect<{
3775
4863
  readonly ok: false;
3776
4864
  readonly error: {
3777
- readonly [x: string]: unknown;
3778
- readonly _tag: string;
4865
+ readonly message: string;
4866
+ readonly remediation: {
4867
+ readonly hint: string;
4868
+ readonly suggestedTool?: string;
4869
+ readonly suggestedArgs?: {
4870
+ readonly [x: string]: unknown;
4871
+ };
4872
+ };
4873
+ readonly _tag: "BehaviorNotFoundError";
4874
+ readonly id: number;
4875
+ readonly reason: string;
4876
+ } | {
4877
+ readonly message: string;
4878
+ readonly remediation: {
4879
+ readonly hint: string;
4880
+ readonly suggestedTool?: string;
4881
+ readonly suggestedArgs?: {
4882
+ readonly [x: string]: unknown;
4883
+ };
4884
+ };
4885
+ readonly _tag: "GoalNotFoundError";
4886
+ readonly id: number;
4887
+ readonly reason: string;
4888
+ } | {
4889
+ readonly message: string;
4890
+ readonly remediation: {
4891
+ readonly hint: string;
4892
+ readonly suggestedTool?: string;
4893
+ readonly suggestedArgs?: {
4894
+ readonly [x: string]: unknown;
4895
+ };
4896
+ };
4897
+ readonly _tag: "IllegalStatusTransitionError";
4898
+ readonly entity: "behavior" | "goal" | "task";
4899
+ readonly id: number;
4900
+ readonly from: string;
4901
+ readonly to: string;
4902
+ readonly reason: string;
4903
+ } | {
4904
+ readonly message: string;
4905
+ readonly remediation: {
4906
+ readonly hint: string;
4907
+ readonly suggestedTool?: string;
4908
+ readonly suggestedArgs?: {
4909
+ readonly [x: string]: unknown;
4910
+ };
4911
+ };
4912
+ readonly _tag: "TddTaskAlreadyEndedError";
4913
+ readonly id: number;
4914
+ readonly endedAt: string;
4915
+ readonly outcome: "abandoned" | "blocked" | "succeeded";
4916
+ } | {
4917
+ readonly message: string;
3779
4918
  readonly remediation: {
3780
4919
  readonly hint: string;
3781
4920
  readonly suggestedTool?: string;
@@ -3783,6 +4922,9 @@ export declare const toolHandlers: {
3783
4922
  readonly [x: string]: unknown;
3784
4923
  };
3785
4924
  };
4925
+ readonly _tag: "TddTaskNotFoundError";
4926
+ readonly id: number;
4927
+ readonly reason: string;
3786
4928
  };
3787
4929
  } | {
3788
4930
  readonly ok: true;
@@ -3856,11 +4998,63 @@ export declare const toolHandlers: {
3856
4998
  readonly status: "abandoned" | "done" | "in_progress" | "pending";
3857
4999
  readonly createdAt: string;
3858
5000
  };
3859
- } | (({
5001
+ }, import("effect/ai/McpSchema").InvalidParams, import("@vitest-agent/engine").DataReader | import("@vitest-agent/engine").DataStore>;
5002
+ tdd_behavior: (payload: unknown) => import("effect/Effect").Effect<{
3860
5003
  readonly ok: false;
3861
5004
  readonly error: {
3862
- readonly [x: string]: unknown;
3863
- readonly _tag: string;
5005
+ readonly message: string;
5006
+ readonly remediation: {
5007
+ readonly hint: string;
5008
+ readonly suggestedTool?: string;
5009
+ readonly suggestedArgs?: {
5010
+ readonly [x: string]: unknown;
5011
+ };
5012
+ };
5013
+ readonly _tag: "BehaviorNotFoundError";
5014
+ readonly id: number;
5015
+ readonly reason: string;
5016
+ } | {
5017
+ readonly message: string;
5018
+ readonly remediation: {
5019
+ readonly hint: string;
5020
+ readonly suggestedTool?: string;
5021
+ readonly suggestedArgs?: {
5022
+ readonly [x: string]: unknown;
5023
+ };
5024
+ };
5025
+ readonly _tag: "GoalNotFoundError";
5026
+ readonly id: number;
5027
+ readonly reason: string;
5028
+ } | {
5029
+ readonly message: string;
5030
+ readonly remediation: {
5031
+ readonly hint: string;
5032
+ readonly suggestedTool?: string;
5033
+ readonly suggestedArgs?: {
5034
+ readonly [x: string]: unknown;
5035
+ };
5036
+ };
5037
+ readonly _tag: "IllegalStatusTransitionError";
5038
+ readonly entity: "behavior" | "goal" | "task";
5039
+ readonly id: number;
5040
+ readonly from: string;
5041
+ readonly to: string;
5042
+ readonly reason: string;
5043
+ } | {
5044
+ readonly message: string;
5045
+ readonly remediation: {
5046
+ readonly hint: string;
5047
+ readonly suggestedTool?: string;
5048
+ readonly suggestedArgs?: {
5049
+ readonly [x: string]: unknown;
5050
+ };
5051
+ };
5052
+ readonly _tag: "TddTaskAlreadyEndedError";
5053
+ readonly id: number;
5054
+ readonly endedAt: string;
5055
+ readonly outcome: "abandoned" | "blocked" | "succeeded";
5056
+ } | {
5057
+ readonly message: string;
3864
5058
  readonly remediation: {
3865
5059
  readonly hint: string;
3866
5060
  readonly suggestedTool?: string;
@@ -3868,15 +5062,19 @@ export declare const toolHandlers: {
3868
5062
  readonly [x: string]: unknown;
3869
5063
  };
3870
5064
  };
5065
+ readonly _tag: "TddTaskNotFoundError";
5066
+ readonly id: number;
5067
+ readonly reason: string;
3871
5068
  };
3872
5069
  } | {
3873
5070
  readonly ok: true;
3874
5071
  readonly action: "update";
3875
- readonly goal: {
5072
+ readonly behavior: {
3876
5073
  readonly id: number;
3877
- readonly sessionId: number;
5074
+ readonly goalId: number;
3878
5075
  readonly ordinal: number;
3879
- readonly goal: string;
5076
+ readonly behavior: string;
5077
+ readonly suggestedTestName: string | null;
3880
5078
  readonly status: "abandoned" | "done" | "in_progress" | "pending";
3881
5079
  readonly createdAt: string;
3882
5080
  };
@@ -3887,14 +5085,20 @@ export declare const toolHandlers: {
3887
5085
  } | {
3888
5086
  readonly action: "get";
3889
5087
  readonly found: true;
3890
- readonly goal: {
5088
+ readonly behavior: {
3891
5089
  readonly id: number;
3892
- readonly sessionId: number;
5090
+ readonly goalId: number;
3893
5091
  readonly ordinal: number;
3894
- readonly goal: string;
5092
+ readonly behavior: string;
5093
+ readonly suggestedTestName: string | null;
3895
5094
  readonly status: "abandoned" | "done" | "in_progress" | "pending";
3896
5095
  readonly createdAt: string;
3897
- readonly behaviors: readonly {
5096
+ readonly parentGoal: {
5097
+ readonly id: number;
5098
+ readonly goal: string;
5099
+ readonly status: "abandoned" | "done" | "in_progress" | "pending";
5100
+ };
5101
+ readonly dependencies: readonly {
3898
5102
  readonly id: number;
3899
5103
  readonly goalId: number;
3900
5104
  readonly ordinal: number;
@@ -3910,207 +5114,14 @@ export declare const toolHandlers: {
3910
5114
  readonly id: number;
3911
5115
  } | {
3912
5116
  readonly ok: true;
3913
- readonly action: "list";
3914
- readonly tddTaskId: number;
3915
- readonly goals: readonly {
5117
+ readonly action: "list_by_goal";
5118
+ readonly goalId: number;
5119
+ readonly behaviors: readonly {
3916
5120
  readonly id: number;
3917
- readonly sessionId: number;
5121
+ readonly goalId: number;
3918
5122
  readonly ordinal: number;
3919
- readonly goal: string;
3920
- readonly status: "abandoned" | "done" | "in_progress" | "pending";
3921
- readonly createdAt: string;
3922
- readonly behaviors: readonly {
3923
- readonly id: number;
3924
- readonly goalId: number;
3925
- readonly ordinal: number;
3926
- readonly behavior: string;
3927
- readonly suggestedTestName: string | null;
3928
- readonly status: "abandoned" | "done" | "in_progress" | "pending";
3929
- readonly createdAt: string;
3930
- }[];
3931
- }[];
3932
- } | {
3933
- readonly _idempotentReplay?: true;
3934
- readonly ok: true;
3935
- readonly action: "create";
3936
- readonly goal: {
3937
- readonly id: number;
3938
- readonly sessionId: number;
3939
- readonly ordinal: number;
3940
- readonly goal: string;
3941
- readonly status: "abandoned" | "done" | "in_progress" | "pending";
3942
- readonly createdAt: string;
3943
- };
3944
- }) & {
3945
- _idempotentReplay: true;
3946
- }), import("effect/ai/McpSchema").InvalidParams, import("@vitest-agent/engine").DataReader | import("@vitest-agent/engine").DataStore>;
3947
- tdd_behavior: (payload: unknown) => import("effect/Effect").Effect<{
3948
- readonly ok: false;
3949
- readonly error: {
3950
- readonly [x: string]: unknown;
3951
- readonly _tag: string;
3952
- readonly remediation: {
3953
- readonly hint: string;
3954
- readonly suggestedTool?: string;
3955
- readonly suggestedArgs?: {
3956
- readonly [x: string]: unknown;
3957
- };
3958
- };
3959
- };
3960
- } | {
3961
- readonly ok: true;
3962
- readonly action: "update";
3963
- readonly behavior: {
3964
- readonly id: number;
3965
- readonly goalId: number;
3966
- readonly ordinal: number;
3967
- readonly behavior: string;
3968
- readonly suggestedTestName: string | null;
3969
- readonly status: "abandoned" | "done" | "in_progress" | "pending";
3970
- readonly createdAt: string;
3971
- };
3972
- } | {
3973
- readonly ok: true;
3974
- readonly action: "delete";
3975
- readonly id: number;
3976
- } | {
3977
- readonly action: "get";
3978
- readonly found: true;
3979
- readonly behavior: {
3980
- readonly id: number;
3981
- readonly goalId: number;
3982
- readonly ordinal: number;
3983
- readonly behavior: string;
3984
- readonly suggestedTestName: string | null;
3985
- readonly status: "abandoned" | "done" | "in_progress" | "pending";
3986
- readonly createdAt: string;
3987
- readonly parentGoal: {
3988
- readonly id: number;
3989
- readonly goal: string;
3990
- readonly status: "abandoned" | "done" | "in_progress" | "pending";
3991
- };
3992
- readonly dependencies: readonly {
3993
- readonly id: number;
3994
- readonly goalId: number;
3995
- readonly ordinal: number;
3996
- readonly behavior: string;
3997
- readonly suggestedTestName: string | null;
3998
- readonly status: "abandoned" | "done" | "in_progress" | "pending";
3999
- readonly createdAt: string;
4000
- }[];
4001
- };
4002
- } | {
4003
- readonly action: "get";
4004
- readonly found: false;
4005
- readonly id: number;
4006
- } | {
4007
- readonly ok: true;
4008
- readonly action: "list_by_goal";
4009
- readonly goalId: number;
4010
- readonly behaviors: readonly {
4011
- readonly id: number;
4012
- readonly goalId: number;
4013
- readonly ordinal: number;
4014
- readonly behavior: string;
4015
- readonly suggestedTestName: string | null;
4016
- readonly status: "abandoned" | "done" | "in_progress" | "pending";
4017
- readonly createdAt: string;
4018
- }[];
4019
- } | {
4020
- readonly ok: true;
4021
- readonly action: "list_by_tdd_task";
4022
- readonly tddTaskId: number;
4023
- readonly behaviors: readonly {
4024
- readonly id: number;
4025
- readonly goalId: number;
4026
- readonly ordinal: number;
4027
- readonly behavior: string;
4028
- readonly suggestedTestName: string | null;
4029
- readonly status: "abandoned" | "done" | "in_progress" | "pending";
4030
- readonly createdAt: string;
4031
- }[];
4032
- } | {
4033
- readonly _idempotentReplay?: true;
4034
- readonly ok: true;
4035
- readonly action: "create";
4036
- readonly behavior: {
4037
- readonly id: number;
4038
- readonly goalId: number;
4039
- readonly ordinal: number;
4040
- readonly behavior: string;
4041
- readonly suggestedTestName: string | null;
4042
- readonly status: "abandoned" | "done" | "in_progress" | "pending";
4043
- readonly createdAt: string;
4044
- };
4045
- } | (({
4046
- readonly ok: false;
4047
- readonly error: {
4048
- readonly [x: string]: unknown;
4049
- readonly _tag: string;
4050
- readonly remediation: {
4051
- readonly hint: string;
4052
- readonly suggestedTool?: string;
4053
- readonly suggestedArgs?: {
4054
- readonly [x: string]: unknown;
4055
- };
4056
- };
4057
- };
4058
- } | {
4059
- readonly ok: true;
4060
- readonly action: "update";
4061
- readonly behavior: {
4062
- readonly id: number;
4063
- readonly goalId: number;
4064
- readonly ordinal: number;
4065
- readonly behavior: string;
4066
- readonly suggestedTestName: string | null;
4067
- readonly status: "abandoned" | "done" | "in_progress" | "pending";
4068
- readonly createdAt: string;
4069
- };
4070
- } | {
4071
- readonly ok: true;
4072
- readonly action: "delete";
4073
- readonly id: number;
4074
- } | {
4075
- readonly action: "get";
4076
- readonly found: true;
4077
- readonly behavior: {
4078
- readonly id: number;
4079
- readonly goalId: number;
4080
- readonly ordinal: number;
4081
- readonly behavior: string;
4082
- readonly suggestedTestName: string | null;
4083
- readonly status: "abandoned" | "done" | "in_progress" | "pending";
4084
- readonly createdAt: string;
4085
- readonly parentGoal: {
4086
- readonly id: number;
4087
- readonly goal: string;
4088
- readonly status: "abandoned" | "done" | "in_progress" | "pending";
4089
- };
4090
- readonly dependencies: readonly {
4091
- readonly id: number;
4092
- readonly goalId: number;
4093
- readonly ordinal: number;
4094
- readonly behavior: string;
4095
- readonly suggestedTestName: string | null;
4096
- readonly status: "abandoned" | "done" | "in_progress" | "pending";
4097
- readonly createdAt: string;
4098
- }[];
4099
- };
4100
- } | {
4101
- readonly action: "get";
4102
- readonly found: false;
4103
- readonly id: number;
4104
- } | {
4105
- readonly ok: true;
4106
- readonly action: "list_by_goal";
4107
- readonly goalId: number;
4108
- readonly behaviors: readonly {
4109
- readonly id: number;
4110
- readonly goalId: number;
4111
- readonly ordinal: number;
4112
- readonly behavior: string;
4113
- readonly suggestedTestName: string | null;
5123
+ readonly behavior: string;
5124
+ readonly suggestedTestName: string | null;
4114
5125
  readonly status: "abandoned" | "done" | "in_progress" | "pending";
4115
5126
  readonly createdAt: string;
4116
5127
  }[];
@@ -4140,9 +5151,7 @@ export declare const toolHandlers: {
4140
5151
  readonly status: "abandoned" | "done" | "in_progress" | "pending";
4141
5152
  readonly createdAt: string;
4142
5153
  };
4143
- }) & {
4144
- _idempotentReplay: true;
4145
- }), import("effect/ai/McpSchema").InvalidParams, import("@vitest-agent/engine").DataReader | import("@vitest-agent/engine").DataStore>;
5154
+ }, import("effect/ai/McpSchema").InvalidParams, import("@vitest-agent/engine").DataReader | import("@vitest-agent/engine").DataStore>;
4146
5155
  tdd_artifact_list: typeof handleTddArtifactList;
4147
5156
  tdd_progress_push: typeof handleTddProgressPush;
4148
5157
  run_tests: typeof handleRunTests;
@@ -4638,6 +5647,7 @@ export declare const ToolsLayer: import("effect/Layer").Layer<import("effect/ai/
4638
5647
  }>>;
4639
5648
  readonly passWithNoTests: import("effect/Schema").optionalKey<import("effect/Schema").Boolean>;
4640
5649
  readonly timeout: import("effect/Schema").optionalKey<import("effect/Schema").Finite>;
5650
+ readonly _callerCwd: import("effect/Schema").optionalKey<import("effect/Schema").String>;
4641
5651
  readonly _sessionContext: import("effect/Schema").optionalKey<import("effect/Schema").Struct<{
4642
5652
  readonly chatId: import("effect/Schema").String;
4643
5653
  readonly conversationId: import("effect/Schema").String;
@@ -4853,6 +5863,30 @@ export declare const ToolsLayer: import("effect/Layer").Layer<import("effect/ai/
4853
5863
  readonly detail: import("effect/Schema").String;
4854
5864
  readonly targetTool: import("effect/Schema").optional<import("effect/Schema").String>;
4855
5865
  }>>>;
5866
+ readonly runDiagnostics: import("effect/Schema").optionalKey<import("effect/Schema").Struct<{
5867
+ readonly performanceHints: import("effect/Schema").$Array<import("effect/Schema").Struct<{
5868
+ readonly kind: import("effect/Schema").Literals<readonly ["environment", "import", "transform", "isolate"]>;
5869
+ readonly project: import("effect/Schema").optionalKey<import("effect/Schema").String>;
5870
+ readonly message: import("effect/Schema").String;
5871
+ readonly remedy: import("effect/Schema").String;
5872
+ readonly detail: import("effect/Schema").String;
5873
+ readonly learnMoreUrl: import("effect/Schema").String;
5874
+ readonly estimatedSavingMs: import("effect/Schema").optionalKey<import("effect/Schema").Finite>;
5875
+ readonly share: import("effect/Schema").optionalKey<import("effect/Schema").Finite>;
5876
+ }>>;
5877
+ readonly postRun: import("effect/Schema").optionalKey<import("effect/Schema").Struct<{
5878
+ readonly persistMs: import("effect/Schema").Finite;
5879
+ readonly coverageScanMs: import("effect/Schema").Finite;
5880
+ readonly totalMs: import("effect/Schema").Finite;
5881
+ readonly renderMs: import("effect/Schema").optionalKey<import("effect/Schema").Finite>;
5882
+ readonly vitestDurationMs: import("effect/Schema").optionalKey<import("effect/Schema").Finite>;
5883
+ }>>;
5884
+ readonly persistence: import("effect/Schema").optionalKey<import("effect/Schema").Struct<{
5885
+ readonly ok: import("effect/Schema").Boolean;
5886
+ readonly reason: import("effect/Schema").optionalKey<import("effect/Schema").String>;
5887
+ readonly migrationFailed: import("effect/Schema").optionalKey<import("effect/Schema").Boolean>;
5888
+ }>>;
5889
+ }>>;
4856
5890
  }>, import("effect/Schema").Struct<{
4857
5891
  readonly kind: import("effect/Schema").Literal<"timeout">;
4858
5892
  readonly timeoutSeconds: import("effect/Schema").Number;
@@ -4947,7 +5981,7 @@ export declare const ToolsLayer: import("effect/Layer").Layer<import("effect/ai/
4947
5981
  }>, import("effect/Schema").Struct<{
4948
5982
  readonly action: import("effect/Schema").Literal<"list_by_tdd_task">;
4949
5983
  readonly tddTaskId: import("effect/Schema").Finite;
4950
- }>]>, import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
5984
+ }>]>, import("effect/Schema").Union<readonly [import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
4951
5985
  readonly _idempotentReplay: import("effect/Schema").optionalKey<import("effect/Schema").Literal<true>>;
4952
5986
  readonly ok: import("effect/Schema").Literal<true>;
4953
5987
  readonly action: import("effect/Schema").Literal<"create">;
@@ -5032,16 +6066,73 @@ export declare const ToolsLayer: import("effect/Layer").Layer<import("effect/ai/
5032
6066
  readonly status: import("effect/Schema").Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
5033
6067
  readonly createdAt: import("effect/Schema").String;
5034
6068
  }>>;
5035
- }>, import("effect/Schema").Struct<{
6069
+ }>]>, import("effect/Schema").Struct<{
5036
6070
  readonly ok: import("effect/Schema").Literal<false>;
5037
- readonly error: import("effect/Schema").StructWithRest<import("effect/Schema").Struct<{
5038
- readonly _tag: import("effect/Schema").String;
6071
+ readonly error: import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
6072
+ readonly _tag: import("effect/Schema").Literal<"GoalNotFoundError">;
6073
+ } & {
6074
+ readonly message: import("effect/Schema").String;
6075
+ readonly remediation: import("effect/Schema").Struct<{
6076
+ readonly hint: import("effect/Schema").String;
6077
+ readonly suggestedTool: import("effect/Schema").optionalKey<import("effect/Schema").String>;
6078
+ readonly suggestedArgs: import("effect/Schema").optionalKey<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>>;
6079
+ }>;
6080
+ } & {
6081
+ readonly id: import("effect/Schema").Number;
6082
+ readonly reason: import("effect/Schema").String;
6083
+ }>, import("effect/Schema").Struct<{
6084
+ readonly _tag: import("effect/Schema").Literal<"BehaviorNotFoundError">;
6085
+ } & {
6086
+ readonly message: import("effect/Schema").String;
6087
+ readonly remediation: import("effect/Schema").Struct<{
6088
+ readonly hint: import("effect/Schema").String;
6089
+ readonly suggestedTool: import("effect/Schema").optionalKey<import("effect/Schema").String>;
6090
+ readonly suggestedArgs: import("effect/Schema").optionalKey<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>>;
6091
+ }>;
6092
+ } & {
6093
+ readonly id: import("effect/Schema").Number;
6094
+ readonly reason: import("effect/Schema").String;
6095
+ }>, import("effect/Schema").Struct<{
6096
+ readonly _tag: import("effect/Schema").Literal<"TddTaskNotFoundError">;
6097
+ } & {
6098
+ readonly message: import("effect/Schema").String;
6099
+ readonly remediation: import("effect/Schema").Struct<{
6100
+ readonly hint: import("effect/Schema").String;
6101
+ readonly suggestedTool: import("effect/Schema").optionalKey<import("effect/Schema").String>;
6102
+ readonly suggestedArgs: import("effect/Schema").optionalKey<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>>;
6103
+ }>;
6104
+ } & {
6105
+ readonly id: import("effect/Schema").Number;
6106
+ readonly reason: import("effect/Schema").String;
6107
+ }>, import("effect/Schema").Struct<{
6108
+ readonly _tag: import("effect/Schema").Literal<"TddTaskAlreadyEndedError">;
6109
+ } & {
6110
+ readonly message: import("effect/Schema").String;
6111
+ readonly remediation: import("effect/Schema").Struct<{
6112
+ readonly hint: import("effect/Schema").String;
6113
+ readonly suggestedTool: import("effect/Schema").optionalKey<import("effect/Schema").String>;
6114
+ readonly suggestedArgs: import("effect/Schema").optionalKey<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>>;
6115
+ }>;
6116
+ } & {
6117
+ readonly id: import("effect/Schema").Number;
6118
+ readonly endedAt: import("effect/Schema").String;
6119
+ readonly outcome: import("effect/Schema").Literals<readonly ["succeeded", "blocked", "abandoned"]>;
6120
+ }>, import("effect/Schema").Struct<{
6121
+ readonly _tag: import("effect/Schema").Literal<"IllegalStatusTransitionError">;
6122
+ } & {
6123
+ readonly message: import("effect/Schema").String;
5039
6124
  readonly remediation: import("effect/Schema").Struct<{
5040
6125
  readonly hint: import("effect/Schema").String;
5041
6126
  readonly suggestedTool: import("effect/Schema").optionalKey<import("effect/Schema").String>;
5042
6127
  readonly suggestedArgs: import("effect/Schema").optionalKey<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>>;
5043
6128
  }>;
5044
- }>, readonly [import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>]>;
6129
+ } & {
6130
+ readonly entity: import("effect/Schema").Literals<readonly ["goal", "behavior", "task"]>;
6131
+ readonly id: import("effect/Schema").Number;
6132
+ readonly from: import("effect/Schema").String;
6133
+ readonly to: import("effect/Schema").String;
6134
+ readonly reason: import("effect/Schema").String;
6135
+ }>]>;
5045
6136
  }>]>, typeof import("@effected/mcp").ToolRefusal, import("@vitest-agent/engine").DataReader | import("@vitest-agent/engine").DataStore>;
5046
6137
  readonly tdd_goal: import("@effected/mcp").UnionTool<"tdd_goal", import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
5047
6138
  readonly action: import("effect/Schema").Literal<"create">;
@@ -5061,7 +6152,7 @@ export declare const ToolsLayer: import("effect/Layer").Layer<import("effect/ai/
5061
6152
  }>, import("effect/Schema").Struct<{
5062
6153
  readonly action: import("effect/Schema").Literal<"list">;
5063
6154
  readonly tddTaskId: import("effect/Schema").Finite;
5064
- }>]>, import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
6155
+ }>]>, import("effect/Schema").Union<readonly [import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
5065
6156
  readonly _idempotentReplay: import("effect/Schema").optionalKey<import("effect/Schema").Literal<true>>;
5066
6157
  readonly ok: import("effect/Schema").Literal<true>;
5067
6158
  readonly action: import("effect/Schema").Literal<"create">;
@@ -5133,46 +6224,103 @@ export declare const ToolsLayer: import("effect/Layer").Layer<import("effect/ai/
5133
6224
  readonly createdAt: import("effect/Schema").String;
5134
6225
  }>>;
5135
6226
  }>>;
5136
- }>, import("effect/Schema").Struct<{
6227
+ }>]>, import("effect/Schema").Struct<{
5137
6228
  readonly ok: import("effect/Schema").Literal<false>;
5138
- readonly error: import("effect/Schema").StructWithRest<import("effect/Schema").Struct<{
5139
- readonly _tag: import("effect/Schema").String;
6229
+ readonly error: import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
6230
+ readonly _tag: import("effect/Schema").Literal<"GoalNotFoundError">;
6231
+ } & {
6232
+ readonly message: import("effect/Schema").String;
5140
6233
  readonly remediation: import("effect/Schema").Struct<{
5141
6234
  readonly hint: import("effect/Schema").String;
5142
6235
  readonly suggestedTool: import("effect/Schema").optionalKey<import("effect/Schema").String>;
5143
6236
  readonly suggestedArgs: import("effect/Schema").optionalKey<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>>;
5144
6237
  }>;
5145
- }>, readonly [import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>]>;
5146
- }>]>, typeof import("@effected/mcp").ToolRefusal, import("@vitest-agent/engine").DataReader | import("@vitest-agent/engine").DataStore>;
5147
- readonly tdd_phase_transition_request: import("effect/ai/Tool").Tool<"tdd_phase_transition_request", {
5148
- readonly parameters: import("effect/Schema").Struct<{
5149
- readonly tddTaskId: import("effect/Schema").Finite;
5150
- readonly goalId: import("effect/Schema").Finite;
5151
- readonly requestedPhase: import("effect/Schema").Literals<readonly ["spike", "red", "red.triangulate", "green", "green.fake-it", "refactor", "extended-red", "green-without-red"]>;
5152
- readonly citedArtifactId: import("effect/Schema").optionalKey<import("effect/Schema").Finite>;
5153
- readonly citedArtifactKind: import("effect/Schema").optionalKey<import("effect/Schema").Literals<readonly ["test_written", "test_failed_run", "code_written", "test_passed_run", "refactor", "test_weakened"]>>;
5154
- readonly behaviorId: import("effect/Schema").optionalKey<import("effect/Schema").Finite>;
5155
- readonly reason: import("effect/Schema").optionalKey<import("effect/Schema").String>;
5156
- }>;
5157
- readonly success: import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
5158
- readonly accepted: import("effect/Schema").Literal<true>;
5159
- readonly phase: import("effect/Schema").Literals<readonly ["spike", "red", "red.triangulate", "green", "green.fake-it", "refactor", "extended-red", "green-without-red"]>;
5160
- readonly newPhaseId: import("effect/Schema").Finite;
5161
- readonly previousPhaseId: import("effect/Schema").NullOr<import("effect/Schema").Number>;
5162
- readonly citedArtifactId: import("effect/Schema").optional<import("effect/Schema").Number>;
5163
- readonly citedArtifactSource: import("effect/Schema").optional<import("effect/Schema").Literals<readonly ["explicit-id", "explicit-kind", "transition-derived", "none"]>>;
6238
+ } & {
6239
+ readonly id: import("effect/Schema").Number;
6240
+ readonly reason: import("effect/Schema").String;
5164
6241
  }>, import("effect/Schema").Struct<{
5165
- readonly accepted: import("effect/Schema").Literal<false>;
5166
- readonly phase: import("effect/Schema").Literals<readonly ["spike", "red", "red.triangulate", "green", "green.fake-it", "refactor", "extended-red", "green-without-red"]>;
5167
- readonly denialReason: import("effect/Schema").Literals<readonly ["missing_artifact_evidence", "wrong_artifact_kind", "wrong_source_phase", "unknown_tdd_task", "tdd_task_already_ended", "goal_not_started", "goal_not_found", "goal_not_in_progress", "goal_not_in_tdd_task", "behavior_not_found", "behavior_not_in_goal", "refactor_without_passing_run", "evidence_not_in_phase_window", "evidence_not_for_behavior", "evidence_test_was_already_failing"]>;
6242
+ readonly _tag: import("effect/Schema").Literal<"BehaviorNotFoundError">;
6243
+ } & {
6244
+ readonly message: import("effect/Schema").String;
5168
6245
  readonly remediation: import("effect/Schema").Struct<{
5169
6246
  readonly hint: import("effect/Schema").String;
5170
6247
  readonly suggestedTool: import("effect/Schema").optionalKey<import("effect/Schema").String>;
5171
6248
  readonly suggestedArgs: import("effect/Schema").optionalKey<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>>;
5172
6249
  }>;
5173
- }>]>;
5174
- readonly failure: import("effect/Schema").Never;
5175
- readonly failureMode: "error";
6250
+ } & {
6251
+ readonly id: import("effect/Schema").Number;
6252
+ readonly reason: import("effect/Schema").String;
6253
+ }>, import("effect/Schema").Struct<{
6254
+ readonly _tag: import("effect/Schema").Literal<"TddTaskNotFoundError">;
6255
+ } & {
6256
+ readonly message: import("effect/Schema").String;
6257
+ readonly remediation: import("effect/Schema").Struct<{
6258
+ readonly hint: import("effect/Schema").String;
6259
+ readonly suggestedTool: import("effect/Schema").optionalKey<import("effect/Schema").String>;
6260
+ readonly suggestedArgs: import("effect/Schema").optionalKey<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>>;
6261
+ }>;
6262
+ } & {
6263
+ readonly id: import("effect/Schema").Number;
6264
+ readonly reason: import("effect/Schema").String;
6265
+ }>, import("effect/Schema").Struct<{
6266
+ readonly _tag: import("effect/Schema").Literal<"TddTaskAlreadyEndedError">;
6267
+ } & {
6268
+ readonly message: import("effect/Schema").String;
6269
+ readonly remediation: import("effect/Schema").Struct<{
6270
+ readonly hint: import("effect/Schema").String;
6271
+ readonly suggestedTool: import("effect/Schema").optionalKey<import("effect/Schema").String>;
6272
+ readonly suggestedArgs: import("effect/Schema").optionalKey<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>>;
6273
+ }>;
6274
+ } & {
6275
+ readonly id: import("effect/Schema").Number;
6276
+ readonly endedAt: import("effect/Schema").String;
6277
+ readonly outcome: import("effect/Schema").Literals<readonly ["succeeded", "blocked", "abandoned"]>;
6278
+ }>, import("effect/Schema").Struct<{
6279
+ readonly _tag: import("effect/Schema").Literal<"IllegalStatusTransitionError">;
6280
+ } & {
6281
+ readonly message: import("effect/Schema").String;
6282
+ readonly remediation: import("effect/Schema").Struct<{
6283
+ readonly hint: import("effect/Schema").String;
6284
+ readonly suggestedTool: import("effect/Schema").optionalKey<import("effect/Schema").String>;
6285
+ readonly suggestedArgs: import("effect/Schema").optionalKey<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>>;
6286
+ }>;
6287
+ } & {
6288
+ readonly entity: import("effect/Schema").Literals<readonly ["goal", "behavior", "task"]>;
6289
+ readonly id: import("effect/Schema").Number;
6290
+ readonly from: import("effect/Schema").String;
6291
+ readonly to: import("effect/Schema").String;
6292
+ readonly reason: import("effect/Schema").String;
6293
+ }>]>;
6294
+ }>]>, typeof import("@effected/mcp").ToolRefusal, import("@vitest-agent/engine").DataReader | import("@vitest-agent/engine").DataStore>;
6295
+ readonly tdd_phase_transition_request: import("effect/ai/Tool").Tool<"tdd_phase_transition_request", {
6296
+ readonly parameters: import("effect/Schema").Struct<{
6297
+ readonly tddTaskId: import("effect/Schema").Finite;
6298
+ readonly goalId: import("effect/Schema").Finite;
6299
+ readonly requestedPhase: import("effect/Schema").Literals<readonly ["spike", "red", "red.triangulate", "green", "green.fake-it", "refactor", "extended-red", "green-without-red"]>;
6300
+ readonly citedArtifactId: import("effect/Schema").optionalKey<import("effect/Schema").Finite>;
6301
+ readonly citedArtifactKind: import("effect/Schema").optionalKey<import("effect/Schema").Literals<readonly ["test_written", "test_failed_run", "code_written", "test_passed_run", "refactor", "test_weakened"]>>;
6302
+ readonly behaviorId: import("effect/Schema").optionalKey<import("effect/Schema").Finite>;
6303
+ readonly reason: import("effect/Schema").optionalKey<import("effect/Schema").String>;
6304
+ }>;
6305
+ readonly success: import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
6306
+ readonly accepted: import("effect/Schema").Literal<true>;
6307
+ readonly phase: import("effect/Schema").Literals<readonly ["spike", "red", "red.triangulate", "green", "green.fake-it", "refactor", "extended-red", "green-without-red"]>;
6308
+ readonly newPhaseId: import("effect/Schema").Finite;
6309
+ readonly previousPhaseId: import("effect/Schema").NullOr<import("effect/Schema").Number>;
6310
+ readonly citedArtifactId: import("effect/Schema").optional<import("effect/Schema").Number>;
6311
+ readonly citedArtifactSource: import("effect/Schema").optional<import("effect/Schema").Literals<readonly ["explicit-id", "explicit-kind", "transition-derived", "none"]>>;
6312
+ }>, import("effect/Schema").Struct<{
6313
+ readonly accepted: import("effect/Schema").Literal<false>;
6314
+ readonly phase: import("effect/Schema").Literals<readonly ["spike", "red", "red.triangulate", "green", "green.fake-it", "refactor", "extended-red", "green-without-red"]>;
6315
+ readonly denialReason: import("effect/Schema").Literals<readonly ["missing_artifact_evidence", "wrong_artifact_kind", "wrong_source_phase", "unknown_tdd_task", "tdd_task_already_ended", "goal_not_started", "goal_not_found", "goal_not_in_progress", "goal_not_in_tdd_task", "behavior_not_found", "behavior_not_in_goal", "refactor_without_passing_run", "evidence_not_in_phase_window", "evidence_not_for_behavior", "evidence_test_was_already_failing"]>;
6316
+ readonly remediation: import("effect/Schema").Struct<{
6317
+ readonly hint: import("effect/Schema").String;
6318
+ readonly suggestedTool: import("effect/Schema").optionalKey<import("effect/Schema").String>;
6319
+ readonly suggestedArgs: import("effect/Schema").optionalKey<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>>;
6320
+ }>;
6321
+ }>]>;
6322
+ readonly failure: import("effect/Schema").Never;
6323
+ readonly failureMode: "error";
5176
6324
  }, import("@vitest-agent/engine").DataReader | import("@vitest-agent/engine").DataStore>;
5177
6325
  readonly tdd_progress_push: import("effect/ai/Tool").Tool<"tdd_progress_push", {
5178
6326
  readonly parameters: import("effect/Schema").Struct<{
@@ -5791,8 +6939,9 @@ export declare const ToolsLayer: import("effect/Layer").Layer<import("effect/ai/
5791
6939
  * Success-shaped envelope returned by TDD CRUD tools when a known TDD error occurs.
5792
6940
  *
5793
6941
  * Instead of letting the five tagged TDD errors propagate as transport errors,
5794
- * `catchTddErrorsAsEnvelope` maps them to this shape so the agent receives a normal
5795
- * tool response with `ok: false` and a `Remediation` describing the next step.
6942
+ * the goal / behavior handlers map them to this shape so the agent receives a
6943
+ * normal tool response with `ok: false`, a one-sentence `message`, and a
6944
+ * `Remediation` describing the next step.
5796
6945
  *
5797
6946
  * @public
5798
6947
  */
@@ -5800,10 +6949,125 @@ interface TddErrorEnvelope {
5800
6949
  readonly ok: false;
5801
6950
  readonly error: {
5802
6951
  readonly _tag: string;
6952
+ readonly message: string;
5803
6953
  readonly remediation: Remediation;
5804
6954
  readonly [key: string]: unknown;
5805
6955
  };
5806
6956
  }
6957
+ /**
6958
+ * The `hypothesis` tool's success payload.
6959
+ *
6960
+ * @public
6961
+ */
6962
+ export declare const HypothesisResult: Schema.Union<readonly [Schema.Struct<{
6963
+ readonly action: Schema.Literal<"record">;
6964
+ readonly id: Schema.Finite;
6965
+ }>, Schema.Struct<{
6966
+ readonly _idempotentReplay: Schema.optionalKey<Schema.Literal<true>>;
6967
+ readonly action: Schema.Literal<"validate">;
6968
+ }>, Schema.Struct<{
6969
+ readonly action: Schema.Literal<"list">;
6970
+ readonly count: Schema.Number;
6971
+ readonly hypotheses: Schema.$Array<Schema.Struct<{
6972
+ readonly id: Schema.Number;
6973
+ readonly sessionId: Schema.Number;
6974
+ readonly content: Schema.String;
6975
+ readonly citedTestErrorId: Schema.NullOr<Schema.Number>;
6976
+ readonly citedStackFrameId: Schema.NullOr<Schema.Number>;
6977
+ readonly validationOutcome: Schema.NullOr<Schema.Literals<readonly ["confirmed", "refuted", "abandoned"]>>;
6978
+ readonly validatedAt: Schema.NullOr<Schema.String>;
6979
+ }>>;
6980
+ }>]>;
6981
+ /**
6982
+ * The decoded {@link HypothesisResult}.
6983
+ *
6984
+ * @public
6985
+ */
6986
+ type HypothesisResultType = Schema.Schema.Type<typeof HypothesisResult>;
6987
+ /**
6988
+ * The `hypothesis` tool's parameters — a union discriminated on `action`.
6989
+ *
6990
+ * @public
6991
+ */
6992
+ export declare const HypothesisInput: Schema.Union<readonly [Schema.Struct<{
6993
+ readonly action: Schema.Literal<"record">;
6994
+ readonly tddTaskId: Schema.optionalKey<Schema.Union<readonly [Schema.Finite, Schema.FiniteFromString]>>;
6995
+ readonly sessionId: Schema.optionalKey<Schema.Union<readonly [Schema.Finite, Schema.FiniteFromString]>>;
6996
+ readonly content: Schema.String;
6997
+ readonly createdTurnId: Schema.optionalKey<Schema.Finite>;
6998
+ readonly citedTestErrorId: Schema.optionalKey<Schema.Finite>;
6999
+ readonly citedStackFrameId: Schema.optionalKey<Schema.Finite>;
7000
+ }>, Schema.Struct<{
7001
+ readonly action: Schema.Literal<"validate">;
7002
+ readonly id: Schema.Finite;
7003
+ readonly outcome: Schema.Literals<readonly ["confirmed", "refuted", "abandoned"]>;
7004
+ readonly validatedTurnId: Schema.optionalKey<Schema.Finite>;
7005
+ readonly validatedAt: Schema.optionalKey<Schema.String>;
7006
+ }>, Schema.Struct<{
7007
+ readonly action: Schema.Literal<"list">;
7008
+ readonly sessionId: Schema.optionalKey<Schema.Finite>;
7009
+ readonly outcome: Schema.optionalKey<Schema.Literals<readonly ["confirmed", "refuted", "abandoned", "open"]>>;
7010
+ readonly limit: Schema.optionalKey<Schema.Finite>;
7011
+ }>]>;
7012
+ /**
7013
+ * The decoded {@link HypothesisInput}.
7014
+ *
7015
+ * @public
7016
+ */
7017
+ type HypothesisInputType = Schema.Schema.Type<typeof HypothesisInput>;
7018
+ /**
7019
+ * Handler for {@link hypothesisTool}. `record` fails with a
7020
+ * `ToolRefusal` (an `isError` result naming the fix) when the binding
7021
+ * session cannot be resolved: an unknown `tddTaskId`, an unknown fallback
7022
+ * `sessionId`, or no session at all; `validate` does for an unknown id. Any
7023
+ * other store failure is a defect.
7024
+ *
7025
+ * @public
7026
+ */
7027
+ export declare const handleHypothesis: (input: HypothesisInputType) => Effect.Effect<HypothesisResultType, ToolRefusal$1, DataReader | DataStore | McpSession>;
7028
+ /**
7029
+ * The Effect-native `hypothesis` tool.
7030
+ *
7031
+ * @public
7032
+ */
7033
+ export declare const hypothesisTool: import("@effected/mcp").UnionTool<"hypothesis", Schema.Union<readonly [Schema.Struct<{
7034
+ readonly action: Schema.Literal<"record">;
7035
+ readonly tddTaskId: Schema.optionalKey<Schema.Union<readonly [Schema.Finite, Schema.FiniteFromString]>>;
7036
+ readonly sessionId: Schema.optionalKey<Schema.Union<readonly [Schema.Finite, Schema.FiniteFromString]>>;
7037
+ readonly content: Schema.String;
7038
+ readonly createdTurnId: Schema.optionalKey<Schema.Finite>;
7039
+ readonly citedTestErrorId: Schema.optionalKey<Schema.Finite>;
7040
+ readonly citedStackFrameId: Schema.optionalKey<Schema.Finite>;
7041
+ }>, Schema.Struct<{
7042
+ readonly action: Schema.Literal<"validate">;
7043
+ readonly id: Schema.Finite;
7044
+ readonly outcome: Schema.Literals<readonly ["confirmed", "refuted", "abandoned"]>;
7045
+ readonly validatedTurnId: Schema.optionalKey<Schema.Finite>;
7046
+ readonly validatedAt: Schema.optionalKey<Schema.String>;
7047
+ }>, Schema.Struct<{
7048
+ readonly action: Schema.Literal<"list">;
7049
+ readonly sessionId: Schema.optionalKey<Schema.Finite>;
7050
+ readonly outcome: Schema.optionalKey<Schema.Literals<readonly ["confirmed", "refuted", "abandoned", "open"]>>;
7051
+ readonly limit: Schema.optionalKey<Schema.Finite>;
7052
+ }>]>, Schema.Union<readonly [Schema.Struct<{
7053
+ readonly action: Schema.Literal<"record">;
7054
+ readonly id: Schema.Finite;
7055
+ }>, Schema.Struct<{
7056
+ readonly _idempotentReplay: Schema.optionalKey<Schema.Literal<true>>;
7057
+ readonly action: Schema.Literal<"validate">;
7058
+ }>, Schema.Struct<{
7059
+ readonly action: Schema.Literal<"list">;
7060
+ readonly count: Schema.Number;
7061
+ readonly hypotheses: Schema.$Array<Schema.Struct<{
7062
+ readonly id: Schema.Number;
7063
+ readonly sessionId: Schema.Number;
7064
+ readonly content: Schema.String;
7065
+ readonly citedTestErrorId: Schema.NullOr<Schema.Number>;
7066
+ readonly citedStackFrameId: Schema.NullOr<Schema.Number>;
7067
+ readonly validationOutcome: Schema.NullOr<Schema.Literals<readonly ["confirmed", "refuted", "abandoned"]>>;
7068
+ readonly validatedAt: Schema.NullOr<Schema.String>;
7069
+ }>>;
7070
+ }>]>, typeof ToolRefusal$1, DataReader | DataStore | McpSession>;
5807
7071
  /**
5808
7072
  * The `inventory` tool's success payload.
5809
7073
  *
@@ -5944,6 +7208,132 @@ export declare const InventoryInput: Schema.Union<readonly [Schema.Struct<{
5944
7208
  * @public
5945
7209
  */
5946
7210
  type InventoryInputType = Schema.Schema.Type<typeof InventoryInput>;
7211
+ /**
7212
+ * Handler for {@link inventoryTool}.
7213
+ *
7214
+ * @public
7215
+ */
7216
+ export declare const handleInventory: (input: InventoryInputType) => Effect.Effect<InventoryResultType, never, DataReader>;
7217
+ /**
7218
+ * The Effect-native `inventory` tool.
7219
+ *
7220
+ * @public
7221
+ */
7222
+ export declare const inventoryTool: import("@effected/mcp").UnionTool<"inventory", Schema.Union<readonly [Schema.Struct<{
7223
+ readonly kind: Schema.Literal<"project">;
7224
+ }>, Schema.Struct<{
7225
+ readonly kind: Schema.Literal<"module">;
7226
+ readonly project: Schema.optionalKey<Schema.String>;
7227
+ }>, Schema.Struct<{
7228
+ readonly kind: Schema.Literal<"suite">;
7229
+ readonly project: Schema.optionalKey<Schema.String>;
7230
+ readonly module: Schema.optionalKey<Schema.String>;
7231
+ }>, Schema.Struct<{
7232
+ readonly kind: Schema.Literal<"session">;
7233
+ readonly id: Schema.optionalKey<Schema.Finite>;
7234
+ readonly project: Schema.optionalKey<Schema.String>;
7235
+ readonly agentKind: Schema.optionalKey<Schema.Literals<readonly ["main", "subagent"]>>;
7236
+ readonly limit: Schema.optionalKey<Schema.Finite>;
7237
+ }>, Schema.Struct<{
7238
+ readonly kind: Schema.Literal<"tag">;
7239
+ readonly project: Schema.optionalKey<Schema.String>;
7240
+ }>]>, Schema.Union<readonly [Schema.Struct<{
7241
+ readonly inventoryKind: Schema.Literal<"project">;
7242
+ readonly count: Schema.Number;
7243
+ readonly projects: Schema.$Array<Schema.Struct<{
7244
+ readonly project: Schema.String;
7245
+ readonly lastRun: Schema.NullOr<Schema.String>;
7246
+ readonly lastResult: Schema.NullOr<Schema.Literals<readonly ["passed", "failed", "interrupted"]>>;
7247
+ readonly total: Schema.Number;
7248
+ readonly passed: Schema.Number;
7249
+ readonly failed: Schema.Number;
7250
+ readonly skipped: Schema.Number;
7251
+ }>>;
7252
+ }>, Schema.Struct<{
7253
+ readonly inventoryKind: Schema.Literal<"module">;
7254
+ readonly count: Schema.Number;
7255
+ readonly groups: Schema.$Array<Schema.Struct<{
7256
+ readonly project: Schema.String;
7257
+ readonly modules: Schema.$Array<Schema.Struct<{
7258
+ readonly id: Schema.Number;
7259
+ readonly file: Schema.String;
7260
+ readonly state: Schema.String;
7261
+ readonly testCount: Schema.Number;
7262
+ readonly duration: Schema.NullOr<Schema.Number>;
7263
+ }>>;
7264
+ }>>;
7265
+ }>, Schema.Struct<{
7266
+ readonly inventoryKind: Schema.Literal<"suite">;
7267
+ readonly count: Schema.Number;
7268
+ readonly groups: Schema.$Array<Schema.Struct<{
7269
+ readonly project: Schema.String;
7270
+ readonly suites: Schema.$Array<Schema.Struct<{
7271
+ readonly id: Schema.Number;
7272
+ readonly name: Schema.String;
7273
+ readonly module: Schema.String;
7274
+ readonly state: Schema.String;
7275
+ readonly testCount: Schema.Number;
7276
+ }>>;
7277
+ }>>;
7278
+ }>, Schema.Struct<{
7279
+ readonly inventoryKind: Schema.Literal<"session_detail">;
7280
+ readonly found: Schema.Literal<true>;
7281
+ readonly session: Schema.Struct<{
7282
+ readonly id: Schema.Number;
7283
+ readonly chatId: Schema.String;
7284
+ readonly project: Schema.String;
7285
+ readonly cwd: Schema.String;
7286
+ readonly agentKind: Schema.Literals<readonly ["main", "subagent"]>;
7287
+ readonly agentType: Schema.NullOr<Schema.String>;
7288
+ readonly parentSessionId: Schema.NullOr<Schema.Number>;
7289
+ readonly triageWasNonEmpty: Schema.Boolean;
7290
+ readonly startedAt: Schema.String;
7291
+ readonly endedAt: Schema.NullOr<Schema.String>;
7292
+ readonly endReason: Schema.NullOr<Schema.String>;
7293
+ }>;
7294
+ }>, Schema.Struct<{
7295
+ readonly inventoryKind: Schema.Literal<"session_detail">;
7296
+ readonly found: Schema.Literal<false>;
7297
+ readonly id: Schema.Number;
7298
+ }>, Schema.Struct<{
7299
+ readonly inventoryKind: Schema.Literal<"session_list">;
7300
+ readonly count: Schema.Number;
7301
+ readonly sessions: Schema.$Array<Schema.Struct<{
7302
+ readonly id: Schema.Number;
7303
+ readonly chatId: Schema.String;
7304
+ readonly project: Schema.String;
7305
+ readonly cwd: Schema.String;
7306
+ readonly agentKind: Schema.Literals<readonly ["main", "subagent"]>;
7307
+ readonly agentType: Schema.NullOr<Schema.String>;
7308
+ readonly parentSessionId: Schema.NullOr<Schema.Number>;
7309
+ readonly triageWasNonEmpty: Schema.Boolean;
7310
+ readonly startedAt: Schema.String;
7311
+ readonly endedAt: Schema.NullOr<Schema.String>;
7312
+ readonly endReason: Schema.NullOr<Schema.String>;
7313
+ }>>;
7314
+ }>, Schema.Struct<{
7315
+ readonly inventoryKind: Schema.Literal<"tag_scoped">;
7316
+ readonly project: Schema.String;
7317
+ readonly count: Schema.Number;
7318
+ readonly tags: Schema.$Array<Schema.Struct<{
7319
+ readonly tag: Schema.String;
7320
+ readonly moduleCount: Schema.Number;
7321
+ readonly testCount: Schema.Number;
7322
+ }>>;
7323
+ }>, Schema.Struct<{
7324
+ readonly inventoryKind: Schema.Literal<"tag_unscoped">;
7325
+ readonly count: Schema.Number;
7326
+ readonly tags: Schema.$Array<Schema.Struct<{
7327
+ readonly tag: Schema.String;
7328
+ readonly moduleCount: Schema.Number;
7329
+ readonly testCount: Schema.Number;
7330
+ readonly byProject: Schema.$Array<Schema.Struct<{
7331
+ readonly project: Schema.String;
7332
+ readonly moduleCount: Schema.Number;
7333
+ readonly testCount: Schema.Number;
7334
+ }>>;
7335
+ }>>;
7336
+ }>]>, typeof ToolRefusal$1, DataReader>;
5947
7337
  /**
5948
7338
  * The `note` tool's success payload.
5949
7339
  *
@@ -6070,18 +7460,1118 @@ export declare const NoteParams: Schema.Union<readonly [Schema.Struct<{
6070
7460
  */
6071
7461
  type NoteParamsType = Schema.Schema.Type<typeof NoteParams>;
6072
7462
  /**
6073
- * The `test` tool's success payload.
7463
+ * Handler for {@link noteTool}.
6074
7464
  *
6075
7465
  * @public
6076
7466
  */
6077
- export declare const TestResult: Schema.Union<readonly [Schema.Struct<{
7467
+ export declare const handleNote: (input: NoteParamsType) => Effect.Effect<NoteResultType, never, DataReader | DataStore>;
7468
+ /**
7469
+ * The Effect-native `note` tool.
7470
+ *
7471
+ * @public
7472
+ */
7473
+ export declare const noteTool: import("@effected/mcp").UnionTool<"note", Schema.Union<readonly [Schema.Struct<{
7474
+ readonly action: Schema.Literal<"create">;
7475
+ readonly title: Schema.String;
7476
+ readonly content: Schema.String;
7477
+ readonly scope: Schema.Literals<readonly ["global", "project", "module", "suite", "test", "note"]>;
7478
+ readonly project: Schema.optionalKey<Schema.String>;
7479
+ readonly testFullName: Schema.optionalKey<Schema.String>;
7480
+ readonly modulePath: Schema.optionalKey<Schema.String>;
7481
+ readonly parentNoteId: Schema.optionalKey<Schema.Finite>;
7482
+ readonly createdBy: Schema.optionalKey<Schema.String>;
7483
+ readonly expiresAt: Schema.optionalKey<Schema.String>;
7484
+ readonly pinned: Schema.optionalKey<Schema.Boolean>;
7485
+ }>, Schema.Struct<{
6078
7486
  readonly action: Schema.Literal<"list">;
6079
- readonly count: Schema.Number;
6080
- readonly groups: Schema.$Array<Schema.Struct<{
6081
- readonly project: Schema.String;
6082
- readonly tests: Schema.$Array<Schema.Struct<{
6083
- readonly id: Schema.Number;
6084
- readonly fullName: Schema.String;
7487
+ readonly scope: Schema.optionalKey<Schema.Literals<readonly ["global", "project", "module", "suite", "test", "note"]>>;
7488
+ readonly project: Schema.optionalKey<Schema.String>;
7489
+ readonly testFullName: Schema.optionalKey<Schema.String>;
7490
+ }>, Schema.Struct<{
7491
+ readonly action: Schema.Literal<"get">;
7492
+ readonly id: Schema.Finite;
7493
+ }>, Schema.Struct<{
7494
+ readonly action: Schema.Literal<"update">;
7495
+ readonly id: Schema.Finite;
7496
+ readonly title: Schema.optionalKey<Schema.String>;
7497
+ readonly content: Schema.optionalKey<Schema.String>;
7498
+ readonly pinned: Schema.optionalKey<Schema.Boolean>;
7499
+ readonly expiresAt: Schema.optionalKey<Schema.String>;
7500
+ }>, Schema.Struct<{
7501
+ readonly action: Schema.Literal<"delete">;
7502
+ readonly id: Schema.Finite;
7503
+ }>, Schema.Struct<{
7504
+ readonly action: Schema.Literal<"search">;
7505
+ readonly query: Schema.String;
7506
+ }>]>, Schema.Union<readonly [Schema.Struct<{
7507
+ readonly action: Schema.Literal<"create">;
7508
+ readonly id: Schema.Finite;
7509
+ }>, Schema.Struct<{
7510
+ readonly action: Schema.Literal<"list">;
7511
+ readonly count: Schema.Number;
7512
+ readonly notes: Schema.$Array<Schema.Struct<{
7513
+ readonly id: Schema.Finite;
7514
+ readonly title: Schema.String;
7515
+ readonly content: Schema.String;
7516
+ readonly scope: Schema.Literals<readonly ["global", "project", "module", "suite", "test", "note"]>;
7517
+ readonly project: Schema.NullOr<Schema.String>;
7518
+ readonly testFullName: Schema.NullOr<Schema.String>;
7519
+ readonly modulePath: Schema.NullOr<Schema.String>;
7520
+ readonly parentNoteId: Schema.NullOr<Schema.Number>;
7521
+ readonly createdBy: Schema.NullOr<Schema.String>;
7522
+ readonly expiresAt: Schema.NullOr<Schema.String>;
7523
+ readonly pinned: Schema.Boolean;
7524
+ readonly createdAt: Schema.String;
7525
+ readonly updatedAt: Schema.String;
7526
+ }>>;
7527
+ }>, Schema.Struct<{
7528
+ readonly action: Schema.Literal<"get">;
7529
+ readonly found: Schema.Literal<true>;
7530
+ readonly note: Schema.Struct<{
7531
+ readonly id: Schema.Finite;
7532
+ readonly title: Schema.String;
7533
+ readonly content: Schema.String;
7534
+ readonly scope: Schema.Literals<readonly ["global", "project", "module", "suite", "test", "note"]>;
7535
+ readonly project: Schema.NullOr<Schema.String>;
7536
+ readonly testFullName: Schema.NullOr<Schema.String>;
7537
+ readonly modulePath: Schema.NullOr<Schema.String>;
7538
+ readonly parentNoteId: Schema.NullOr<Schema.Number>;
7539
+ readonly createdBy: Schema.NullOr<Schema.String>;
7540
+ readonly expiresAt: Schema.NullOr<Schema.String>;
7541
+ readonly pinned: Schema.Boolean;
7542
+ readonly createdAt: Schema.String;
7543
+ readonly updatedAt: Schema.String;
7544
+ }>;
7545
+ }>, Schema.Struct<{
7546
+ readonly action: Schema.Literal<"get">;
7547
+ readonly found: Schema.Literal<false>;
7548
+ readonly id: Schema.Number;
7549
+ }>, Schema.Struct<{
7550
+ readonly action: Schema.Literal<"update">;
7551
+ readonly success: Schema.Literal<true>;
7552
+ }>, Schema.Struct<{
7553
+ readonly action: Schema.Literal<"delete">;
7554
+ readonly success: Schema.Literal<true>;
7555
+ }>, Schema.Struct<{
7556
+ readonly action: Schema.Literal<"search">;
7557
+ readonly query: Schema.String;
7558
+ readonly count: Schema.Number;
7559
+ readonly notes: Schema.$Array<Schema.Struct<{
7560
+ readonly id: Schema.Finite;
7561
+ readonly title: Schema.String;
7562
+ readonly content: Schema.String;
7563
+ readonly scope: Schema.Literals<readonly ["global", "project", "module", "suite", "test", "note"]>;
7564
+ readonly project: Schema.NullOr<Schema.String>;
7565
+ readonly testFullName: Schema.NullOr<Schema.String>;
7566
+ readonly modulePath: Schema.NullOr<Schema.String>;
7567
+ readonly parentNoteId: Schema.NullOr<Schema.Number>;
7568
+ readonly createdBy: Schema.NullOr<Schema.String>;
7569
+ readonly expiresAt: Schema.NullOr<Schema.String>;
7570
+ readonly pinned: Schema.Boolean;
7571
+ readonly createdAt: Schema.String;
7572
+ readonly updatedAt: Schema.String;
7573
+ }>>;
7574
+ }>]>, typeof ToolRefusal$1, DataReader | DataStore>;
7575
+ /**
7576
+ * The `tdd_behavior` tool's success payload.
7577
+ *
7578
+ * @public
7579
+ */
7580
+ export declare const TddBehaviorResult: Schema.Union<readonly [Schema.Union<readonly [Schema.Struct<{
7581
+ readonly _idempotentReplay: Schema.optionalKey<Schema.Literal<true>>;
7582
+ readonly ok: Schema.Literal<true>;
7583
+ readonly action: Schema.Literal<"create">;
7584
+ readonly behavior: Schema.Struct<{
7585
+ readonly id: Schema.Number;
7586
+ readonly goalId: Schema.Number;
7587
+ readonly ordinal: Schema.Number;
7588
+ readonly behavior: Schema.String;
7589
+ readonly suggestedTestName: Schema.NullOr<Schema.String>;
7590
+ readonly status: Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
7591
+ readonly createdAt: Schema.String;
7592
+ }>;
7593
+ }>, Schema.Struct<{
7594
+ readonly ok: Schema.Literal<true>;
7595
+ readonly action: Schema.Literal<"update">;
7596
+ readonly behavior: Schema.Struct<{
7597
+ readonly id: Schema.Number;
7598
+ readonly goalId: Schema.Number;
7599
+ readonly ordinal: Schema.Number;
7600
+ readonly behavior: Schema.String;
7601
+ readonly suggestedTestName: Schema.NullOr<Schema.String>;
7602
+ readonly status: Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
7603
+ readonly createdAt: Schema.String;
7604
+ }>;
7605
+ }>, Schema.Struct<{
7606
+ readonly ok: Schema.Literal<true>;
7607
+ readonly action: Schema.Literal<"delete">;
7608
+ readonly id: Schema.Number;
7609
+ }>, Schema.Struct<{
7610
+ readonly action: Schema.Literal<"get">;
7611
+ readonly found: Schema.Literal<true>;
7612
+ readonly behavior: Schema.Struct<{
7613
+ readonly id: Schema.Number;
7614
+ readonly goalId: Schema.Number;
7615
+ readonly ordinal: Schema.Number;
7616
+ readonly behavior: Schema.String;
7617
+ readonly suggestedTestName: Schema.NullOr<Schema.String>;
7618
+ readonly status: Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
7619
+ readonly createdAt: Schema.String;
7620
+ readonly parentGoal: Schema.Struct<{
7621
+ readonly id: Schema.Number;
7622
+ readonly goal: Schema.String;
7623
+ readonly status: Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
7624
+ }>;
7625
+ readonly dependencies: Schema.$Array<Schema.Struct<{
7626
+ readonly id: Schema.Number;
7627
+ readonly goalId: Schema.Number;
7628
+ readonly ordinal: Schema.Number;
7629
+ readonly behavior: Schema.String;
7630
+ readonly suggestedTestName: Schema.NullOr<Schema.String>;
7631
+ readonly status: Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
7632
+ readonly createdAt: Schema.String;
7633
+ }>>;
7634
+ }>;
7635
+ }>, Schema.Struct<{
7636
+ readonly action: Schema.Literal<"get">;
7637
+ readonly found: Schema.Literal<false>;
7638
+ readonly id: Schema.Number;
7639
+ }>, Schema.Struct<{
7640
+ readonly ok: Schema.Literal<true>;
7641
+ readonly action: Schema.Literal<"list_by_goal">;
7642
+ readonly goalId: Schema.Number;
7643
+ readonly behaviors: Schema.$Array<Schema.Struct<{
7644
+ readonly id: Schema.Number;
7645
+ readonly goalId: Schema.Number;
7646
+ readonly ordinal: Schema.Number;
7647
+ readonly behavior: Schema.String;
7648
+ readonly suggestedTestName: Schema.NullOr<Schema.String>;
7649
+ readonly status: Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
7650
+ readonly createdAt: Schema.String;
7651
+ }>>;
7652
+ }>, Schema.Struct<{
7653
+ readonly ok: Schema.Literal<true>;
7654
+ readonly action: Schema.Literal<"list_by_tdd_task">;
7655
+ readonly tddTaskId: Schema.Number;
7656
+ readonly behaviors: Schema.$Array<Schema.Struct<{
7657
+ readonly id: Schema.Number;
7658
+ readonly goalId: Schema.Number;
7659
+ readonly ordinal: Schema.Number;
7660
+ readonly behavior: Schema.String;
7661
+ readonly suggestedTestName: Schema.NullOr<Schema.String>;
7662
+ readonly status: Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
7663
+ readonly createdAt: Schema.String;
7664
+ }>>;
7665
+ }>]>, Schema.Struct<{
7666
+ readonly ok: Schema.Literal<false>;
7667
+ readonly error: Schema.Union<readonly [Schema.Struct<{
7668
+ readonly _tag: Schema.Literal<"GoalNotFoundError">;
7669
+ } & {
7670
+ readonly message: Schema.String;
7671
+ readonly remediation: Schema.Struct<{
7672
+ readonly hint: Schema.String;
7673
+ readonly suggestedTool: Schema.optionalKey<Schema.String>;
7674
+ readonly suggestedArgs: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>;
7675
+ }>;
7676
+ } & {
7677
+ readonly id: Schema.Number;
7678
+ readonly reason: Schema.String;
7679
+ }>, Schema.Struct<{
7680
+ readonly _tag: Schema.Literal<"BehaviorNotFoundError">;
7681
+ } & {
7682
+ readonly message: Schema.String;
7683
+ readonly remediation: Schema.Struct<{
7684
+ readonly hint: Schema.String;
7685
+ readonly suggestedTool: Schema.optionalKey<Schema.String>;
7686
+ readonly suggestedArgs: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>;
7687
+ }>;
7688
+ } & {
7689
+ readonly id: Schema.Number;
7690
+ readonly reason: Schema.String;
7691
+ }>, Schema.Struct<{
7692
+ readonly _tag: Schema.Literal<"TddTaskNotFoundError">;
7693
+ } & {
7694
+ readonly message: Schema.String;
7695
+ readonly remediation: Schema.Struct<{
7696
+ readonly hint: Schema.String;
7697
+ readonly suggestedTool: Schema.optionalKey<Schema.String>;
7698
+ readonly suggestedArgs: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>;
7699
+ }>;
7700
+ } & {
7701
+ readonly id: Schema.Number;
7702
+ readonly reason: Schema.String;
7703
+ }>, Schema.Struct<{
7704
+ readonly _tag: Schema.Literal<"TddTaskAlreadyEndedError">;
7705
+ } & {
7706
+ readonly message: Schema.String;
7707
+ readonly remediation: Schema.Struct<{
7708
+ readonly hint: Schema.String;
7709
+ readonly suggestedTool: Schema.optionalKey<Schema.String>;
7710
+ readonly suggestedArgs: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>;
7711
+ }>;
7712
+ } & {
7713
+ readonly id: Schema.Number;
7714
+ readonly endedAt: Schema.String;
7715
+ readonly outcome: Schema.Literals<readonly ["succeeded", "blocked", "abandoned"]>;
7716
+ }>, Schema.Struct<{
7717
+ readonly _tag: Schema.Literal<"IllegalStatusTransitionError">;
7718
+ } & {
7719
+ readonly message: Schema.String;
7720
+ readonly remediation: Schema.Struct<{
7721
+ readonly hint: Schema.String;
7722
+ readonly suggestedTool: Schema.optionalKey<Schema.String>;
7723
+ readonly suggestedArgs: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>;
7724
+ }>;
7725
+ } & {
7726
+ readonly entity: Schema.Literals<readonly ["goal", "behavior", "task"]>;
7727
+ readonly id: Schema.Number;
7728
+ readonly from: Schema.String;
7729
+ readonly to: Schema.String;
7730
+ readonly reason: Schema.String;
7731
+ }>]>;
7732
+ }>]>;
7733
+ /**
7734
+ * The decoded {@link TddBehaviorResult}.
7735
+ *
7736
+ * @public
7737
+ */
7738
+ type TddBehaviorResultType = Schema.Schema.Type<typeof TddBehaviorResult>;
7739
+ /**
7740
+ * The `tdd_behavior` tool's parameters — a union discriminated on `action`.
7741
+ *
7742
+ * @public
7743
+ */
7744
+ export declare const TddBehaviorInput: Schema.Union<readonly [Schema.Struct<{
7745
+ readonly action: Schema.Literal<"create">;
7746
+ readonly goalId: Schema.Finite;
7747
+ readonly behavior: Schema.String;
7748
+ readonly suggestedTestName: Schema.optionalKey<Schema.String>;
7749
+ readonly dependsOnBehaviorIds: Schema.optionalKey<Schema.$Array<Schema.Finite>>;
7750
+ }>, Schema.Struct<{
7751
+ readonly action: Schema.Literal<"update">;
7752
+ readonly id: Schema.Finite;
7753
+ readonly behavior: Schema.optionalKey<Schema.String>;
7754
+ readonly suggestedTestName: Schema.optionalKey<Schema.NullOr<Schema.String>>;
7755
+ readonly status: Schema.optionalKey<Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>>;
7756
+ readonly dependsOnBehaviorIds: Schema.optionalKey<Schema.$Array<Schema.Finite>>;
7757
+ }>, Schema.Struct<{
7758
+ readonly action: Schema.Literal<"delete">;
7759
+ readonly id: Schema.Finite;
7760
+ }>, Schema.Struct<{
7761
+ readonly action: Schema.Literal<"get">;
7762
+ readonly id: Schema.Finite;
7763
+ }>, Schema.Struct<{
7764
+ readonly action: Schema.Literal<"list_by_goal">;
7765
+ readonly goalId: Schema.Finite;
7766
+ }>, Schema.Struct<{
7767
+ readonly action: Schema.Literal<"list_by_tdd_task">;
7768
+ readonly tddTaskId: Schema.Finite;
7769
+ }>]>;
7770
+ /**
7771
+ * The decoded {@link TddBehaviorInput}.
7772
+ *
7773
+ * @public
7774
+ */
7775
+ type TddBehaviorInputType = Schema.Schema.Type<typeof TddBehaviorInput>;
7776
+ /**
7777
+ * Handler for {@link tddBehaviorTool}. The five tagged TDD errors come
7778
+ * back as the `{ ok: false, error }` envelope; anything else is a defect.
7779
+ *
7780
+ * @public
7781
+ */
7782
+ export declare const handleTddBehavior: (input: TddBehaviorInputType) => Effect.Effect<TddBehaviorResultType, never, DataReader | DataStore>;
7783
+ /**
7784
+ * The Effect-native `tdd_behavior` tool.
7785
+ *
7786
+ * @public
7787
+ */
7788
+ export declare const tddBehaviorTool: import("@effected/mcp").UnionTool<"tdd_behavior", Schema.Union<readonly [Schema.Struct<{
7789
+ readonly action: Schema.Literal<"create">;
7790
+ readonly goalId: Schema.Finite;
7791
+ readonly behavior: Schema.String;
7792
+ readonly suggestedTestName: Schema.optionalKey<Schema.String>;
7793
+ readonly dependsOnBehaviorIds: Schema.optionalKey<Schema.$Array<Schema.Finite>>;
7794
+ }>, Schema.Struct<{
7795
+ readonly action: Schema.Literal<"update">;
7796
+ readonly id: Schema.Finite;
7797
+ readonly behavior: Schema.optionalKey<Schema.String>;
7798
+ readonly suggestedTestName: Schema.optionalKey<Schema.NullOr<Schema.String>>;
7799
+ readonly status: Schema.optionalKey<Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>>;
7800
+ readonly dependsOnBehaviorIds: Schema.optionalKey<Schema.$Array<Schema.Finite>>;
7801
+ }>, Schema.Struct<{
7802
+ readonly action: Schema.Literal<"delete">;
7803
+ readonly id: Schema.Finite;
7804
+ }>, Schema.Struct<{
7805
+ readonly action: Schema.Literal<"get">;
7806
+ readonly id: Schema.Finite;
7807
+ }>, Schema.Struct<{
7808
+ readonly action: Schema.Literal<"list_by_goal">;
7809
+ readonly goalId: Schema.Finite;
7810
+ }>, Schema.Struct<{
7811
+ readonly action: Schema.Literal<"list_by_tdd_task">;
7812
+ readonly tddTaskId: Schema.Finite;
7813
+ }>]>, Schema.Union<readonly [Schema.Union<readonly [Schema.Struct<{
7814
+ readonly _idempotentReplay: Schema.optionalKey<Schema.Literal<true>>;
7815
+ readonly ok: Schema.Literal<true>;
7816
+ readonly action: Schema.Literal<"create">;
7817
+ readonly behavior: Schema.Struct<{
7818
+ readonly id: Schema.Number;
7819
+ readonly goalId: Schema.Number;
7820
+ readonly ordinal: Schema.Number;
7821
+ readonly behavior: Schema.String;
7822
+ readonly suggestedTestName: Schema.NullOr<Schema.String>;
7823
+ readonly status: Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
7824
+ readonly createdAt: Schema.String;
7825
+ }>;
7826
+ }>, Schema.Struct<{
7827
+ readonly ok: Schema.Literal<true>;
7828
+ readonly action: Schema.Literal<"update">;
7829
+ readonly behavior: Schema.Struct<{
7830
+ readonly id: Schema.Number;
7831
+ readonly goalId: Schema.Number;
7832
+ readonly ordinal: Schema.Number;
7833
+ readonly behavior: Schema.String;
7834
+ readonly suggestedTestName: Schema.NullOr<Schema.String>;
7835
+ readonly status: Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
7836
+ readonly createdAt: Schema.String;
7837
+ }>;
7838
+ }>, Schema.Struct<{
7839
+ readonly ok: Schema.Literal<true>;
7840
+ readonly action: Schema.Literal<"delete">;
7841
+ readonly id: Schema.Number;
7842
+ }>, Schema.Struct<{
7843
+ readonly action: Schema.Literal<"get">;
7844
+ readonly found: Schema.Literal<true>;
7845
+ readonly behavior: Schema.Struct<{
7846
+ readonly id: Schema.Number;
7847
+ readonly goalId: Schema.Number;
7848
+ readonly ordinal: Schema.Number;
7849
+ readonly behavior: Schema.String;
7850
+ readonly suggestedTestName: Schema.NullOr<Schema.String>;
7851
+ readonly status: Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
7852
+ readonly createdAt: Schema.String;
7853
+ readonly parentGoal: Schema.Struct<{
7854
+ readonly id: Schema.Number;
7855
+ readonly goal: Schema.String;
7856
+ readonly status: Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
7857
+ }>;
7858
+ readonly dependencies: Schema.$Array<Schema.Struct<{
7859
+ readonly id: Schema.Number;
7860
+ readonly goalId: Schema.Number;
7861
+ readonly ordinal: Schema.Number;
7862
+ readonly behavior: Schema.String;
7863
+ readonly suggestedTestName: Schema.NullOr<Schema.String>;
7864
+ readonly status: Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
7865
+ readonly createdAt: Schema.String;
7866
+ }>>;
7867
+ }>;
7868
+ }>, Schema.Struct<{
7869
+ readonly action: Schema.Literal<"get">;
7870
+ readonly found: Schema.Literal<false>;
7871
+ readonly id: Schema.Number;
7872
+ }>, Schema.Struct<{
7873
+ readonly ok: Schema.Literal<true>;
7874
+ readonly action: Schema.Literal<"list_by_goal">;
7875
+ readonly goalId: Schema.Number;
7876
+ readonly behaviors: Schema.$Array<Schema.Struct<{
7877
+ readonly id: Schema.Number;
7878
+ readonly goalId: Schema.Number;
7879
+ readonly ordinal: Schema.Number;
7880
+ readonly behavior: Schema.String;
7881
+ readonly suggestedTestName: Schema.NullOr<Schema.String>;
7882
+ readonly status: Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
7883
+ readonly createdAt: Schema.String;
7884
+ }>>;
7885
+ }>, Schema.Struct<{
7886
+ readonly ok: Schema.Literal<true>;
7887
+ readonly action: Schema.Literal<"list_by_tdd_task">;
7888
+ readonly tddTaskId: Schema.Number;
7889
+ readonly behaviors: Schema.$Array<Schema.Struct<{
7890
+ readonly id: Schema.Number;
7891
+ readonly goalId: Schema.Number;
7892
+ readonly ordinal: Schema.Number;
7893
+ readonly behavior: Schema.String;
7894
+ readonly suggestedTestName: Schema.NullOr<Schema.String>;
7895
+ readonly status: Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
7896
+ readonly createdAt: Schema.String;
7897
+ }>>;
7898
+ }>]>, Schema.Struct<{
7899
+ readonly ok: Schema.Literal<false>;
7900
+ readonly error: Schema.Union<readonly [Schema.Struct<{
7901
+ readonly _tag: Schema.Literal<"GoalNotFoundError">;
7902
+ } & {
7903
+ readonly message: Schema.String;
7904
+ readonly remediation: Schema.Struct<{
7905
+ readonly hint: Schema.String;
7906
+ readonly suggestedTool: Schema.optionalKey<Schema.String>;
7907
+ readonly suggestedArgs: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>;
7908
+ }>;
7909
+ } & {
7910
+ readonly id: Schema.Number;
7911
+ readonly reason: Schema.String;
7912
+ }>, Schema.Struct<{
7913
+ readonly _tag: Schema.Literal<"BehaviorNotFoundError">;
7914
+ } & {
7915
+ readonly message: Schema.String;
7916
+ readonly remediation: Schema.Struct<{
7917
+ readonly hint: Schema.String;
7918
+ readonly suggestedTool: Schema.optionalKey<Schema.String>;
7919
+ readonly suggestedArgs: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>;
7920
+ }>;
7921
+ } & {
7922
+ readonly id: Schema.Number;
7923
+ readonly reason: Schema.String;
7924
+ }>, Schema.Struct<{
7925
+ readonly _tag: Schema.Literal<"TddTaskNotFoundError">;
7926
+ } & {
7927
+ readonly message: Schema.String;
7928
+ readonly remediation: Schema.Struct<{
7929
+ readonly hint: Schema.String;
7930
+ readonly suggestedTool: Schema.optionalKey<Schema.String>;
7931
+ readonly suggestedArgs: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>;
7932
+ }>;
7933
+ } & {
7934
+ readonly id: Schema.Number;
7935
+ readonly reason: Schema.String;
7936
+ }>, Schema.Struct<{
7937
+ readonly _tag: Schema.Literal<"TddTaskAlreadyEndedError">;
7938
+ } & {
7939
+ readonly message: Schema.String;
7940
+ readonly remediation: Schema.Struct<{
7941
+ readonly hint: Schema.String;
7942
+ readonly suggestedTool: Schema.optionalKey<Schema.String>;
7943
+ readonly suggestedArgs: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>;
7944
+ }>;
7945
+ } & {
7946
+ readonly id: Schema.Number;
7947
+ readonly endedAt: Schema.String;
7948
+ readonly outcome: Schema.Literals<readonly ["succeeded", "blocked", "abandoned"]>;
7949
+ }>, Schema.Struct<{
7950
+ readonly _tag: Schema.Literal<"IllegalStatusTransitionError">;
7951
+ } & {
7952
+ readonly message: Schema.String;
7953
+ readonly remediation: Schema.Struct<{
7954
+ readonly hint: Schema.String;
7955
+ readonly suggestedTool: Schema.optionalKey<Schema.String>;
7956
+ readonly suggestedArgs: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>;
7957
+ }>;
7958
+ } & {
7959
+ readonly entity: Schema.Literals<readonly ["goal", "behavior", "task"]>;
7960
+ readonly id: Schema.Number;
7961
+ readonly from: Schema.String;
7962
+ readonly to: Schema.String;
7963
+ readonly reason: Schema.String;
7964
+ }>]>;
7965
+ }>]>, typeof ToolRefusal$1, DataReader | DataStore>;
7966
+ /**
7967
+ * The `tdd_goal` tool's success payload.
7968
+ *
7969
+ * @public
7970
+ */
7971
+ export declare const TddGoalResult: Schema.Union<readonly [Schema.Union<readonly [Schema.Struct<{
7972
+ readonly _idempotentReplay: Schema.optionalKey<Schema.Literal<true>>;
7973
+ readonly ok: Schema.Literal<true>;
7974
+ readonly action: Schema.Literal<"create">;
7975
+ readonly goal: Schema.Struct<{
7976
+ readonly id: Schema.Number;
7977
+ readonly sessionId: Schema.Number;
7978
+ readonly ordinal: Schema.Number;
7979
+ readonly goal: Schema.String;
7980
+ readonly status: Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
7981
+ readonly createdAt: Schema.String;
7982
+ }>;
7983
+ }>, Schema.Struct<{
7984
+ readonly ok: Schema.Literal<true>;
7985
+ readonly action: Schema.Literal<"update">;
7986
+ readonly goal: Schema.Struct<{
7987
+ readonly id: Schema.Number;
7988
+ readonly sessionId: Schema.Number;
7989
+ readonly ordinal: Schema.Number;
7990
+ readonly goal: Schema.String;
7991
+ readonly status: Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
7992
+ readonly createdAt: Schema.String;
7993
+ }>;
7994
+ }>, Schema.Struct<{
7995
+ readonly ok: Schema.Literal<true>;
7996
+ readonly action: Schema.Literal<"delete">;
7997
+ readonly id: Schema.Number;
7998
+ }>, Schema.Struct<{
7999
+ readonly action: Schema.Literal<"get">;
8000
+ readonly found: Schema.Literal<true>;
8001
+ readonly goal: Schema.Struct<{
8002
+ readonly id: Schema.Number;
8003
+ readonly sessionId: Schema.Number;
8004
+ readonly ordinal: Schema.Number;
8005
+ readonly goal: Schema.String;
8006
+ readonly status: Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
8007
+ readonly createdAt: Schema.String;
8008
+ readonly behaviors: Schema.$Array<Schema.Struct<{
8009
+ readonly id: Schema.Number;
8010
+ readonly goalId: Schema.Number;
8011
+ readonly ordinal: Schema.Number;
8012
+ readonly behavior: Schema.String;
8013
+ readonly suggestedTestName: Schema.NullOr<Schema.String>;
8014
+ readonly status: Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
8015
+ readonly createdAt: Schema.String;
8016
+ }>>;
8017
+ }>;
8018
+ }>, Schema.Struct<{
8019
+ readonly action: Schema.Literal<"get">;
8020
+ readonly found: Schema.Literal<false>;
8021
+ readonly id: Schema.Number;
8022
+ }>, Schema.Struct<{
8023
+ readonly ok: Schema.Literal<true>;
8024
+ readonly action: Schema.Literal<"list">;
8025
+ readonly tddTaskId: Schema.Number;
8026
+ readonly goals: Schema.$Array<Schema.Struct<{
8027
+ readonly id: Schema.Number;
8028
+ readonly sessionId: Schema.Number;
8029
+ readonly ordinal: Schema.Number;
8030
+ readonly goal: Schema.String;
8031
+ readonly status: Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
8032
+ readonly createdAt: Schema.String;
8033
+ readonly behaviors: Schema.$Array<Schema.Struct<{
8034
+ readonly id: Schema.Number;
8035
+ readonly goalId: Schema.Number;
8036
+ readonly ordinal: Schema.Number;
8037
+ readonly behavior: Schema.String;
8038
+ readonly suggestedTestName: Schema.NullOr<Schema.String>;
8039
+ readonly status: Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
8040
+ readonly createdAt: Schema.String;
8041
+ }>>;
8042
+ }>>;
8043
+ }>]>, Schema.Struct<{
8044
+ readonly ok: Schema.Literal<false>;
8045
+ readonly error: Schema.Union<readonly [Schema.Struct<{
8046
+ readonly _tag: Schema.Literal<"GoalNotFoundError">;
8047
+ } & {
8048
+ readonly message: Schema.String;
8049
+ readonly remediation: Schema.Struct<{
8050
+ readonly hint: Schema.String;
8051
+ readonly suggestedTool: Schema.optionalKey<Schema.String>;
8052
+ readonly suggestedArgs: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>;
8053
+ }>;
8054
+ } & {
8055
+ readonly id: Schema.Number;
8056
+ readonly reason: Schema.String;
8057
+ }>, Schema.Struct<{
8058
+ readonly _tag: Schema.Literal<"BehaviorNotFoundError">;
8059
+ } & {
8060
+ readonly message: Schema.String;
8061
+ readonly remediation: Schema.Struct<{
8062
+ readonly hint: Schema.String;
8063
+ readonly suggestedTool: Schema.optionalKey<Schema.String>;
8064
+ readonly suggestedArgs: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>;
8065
+ }>;
8066
+ } & {
8067
+ readonly id: Schema.Number;
8068
+ readonly reason: Schema.String;
8069
+ }>, Schema.Struct<{
8070
+ readonly _tag: Schema.Literal<"TddTaskNotFoundError">;
8071
+ } & {
8072
+ readonly message: Schema.String;
8073
+ readonly remediation: Schema.Struct<{
8074
+ readonly hint: Schema.String;
8075
+ readonly suggestedTool: Schema.optionalKey<Schema.String>;
8076
+ readonly suggestedArgs: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>;
8077
+ }>;
8078
+ } & {
8079
+ readonly id: Schema.Number;
8080
+ readonly reason: Schema.String;
8081
+ }>, Schema.Struct<{
8082
+ readonly _tag: Schema.Literal<"TddTaskAlreadyEndedError">;
8083
+ } & {
8084
+ readonly message: Schema.String;
8085
+ readonly remediation: Schema.Struct<{
8086
+ readonly hint: Schema.String;
8087
+ readonly suggestedTool: Schema.optionalKey<Schema.String>;
8088
+ readonly suggestedArgs: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>;
8089
+ }>;
8090
+ } & {
8091
+ readonly id: Schema.Number;
8092
+ readonly endedAt: Schema.String;
8093
+ readonly outcome: Schema.Literals<readonly ["succeeded", "blocked", "abandoned"]>;
8094
+ }>, Schema.Struct<{
8095
+ readonly _tag: Schema.Literal<"IllegalStatusTransitionError">;
8096
+ } & {
8097
+ readonly message: Schema.String;
8098
+ readonly remediation: Schema.Struct<{
8099
+ readonly hint: Schema.String;
8100
+ readonly suggestedTool: Schema.optionalKey<Schema.String>;
8101
+ readonly suggestedArgs: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>;
8102
+ }>;
8103
+ } & {
8104
+ readonly entity: Schema.Literals<readonly ["goal", "behavior", "task"]>;
8105
+ readonly id: Schema.Number;
8106
+ readonly from: Schema.String;
8107
+ readonly to: Schema.String;
8108
+ readonly reason: Schema.String;
8109
+ }>]>;
8110
+ }>]>;
8111
+ /**
8112
+ * The decoded {@link TddGoalResult}.
8113
+ *
8114
+ * @public
8115
+ */
8116
+ type TddGoalResultType = Schema.Schema.Type<typeof TddGoalResult>;
8117
+ /**
8118
+ * The `tdd_goal` tool's parameters — a union discriminated on `action`.
8119
+ *
8120
+ * @public
8121
+ */
8122
+ export declare const TddGoalInput: Schema.Union<readonly [Schema.Struct<{
8123
+ readonly action: Schema.Literal<"create">;
8124
+ readonly tddTaskId: Schema.Finite;
8125
+ readonly goal: Schema.String;
8126
+ }>, Schema.Struct<{
8127
+ readonly action: Schema.Literal<"update">;
8128
+ readonly id: Schema.Finite;
8129
+ readonly goal: Schema.optionalKey<Schema.String>;
8130
+ readonly status: Schema.optionalKey<Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>>;
8131
+ }>, Schema.Struct<{
8132
+ readonly action: Schema.Literal<"delete">;
8133
+ readonly id: Schema.Finite;
8134
+ }>, Schema.Struct<{
8135
+ readonly action: Schema.Literal<"get">;
8136
+ readonly id: Schema.Finite;
8137
+ }>, Schema.Struct<{
8138
+ readonly action: Schema.Literal<"list">;
8139
+ readonly tddTaskId: Schema.Finite;
8140
+ }>]>;
8141
+ /**
8142
+ * The decoded {@link TddGoalInput}.
8143
+ *
8144
+ * @public
8145
+ */
8146
+ type TddGoalInputType = Schema.Schema.Type<typeof TddGoalInput>;
8147
+ /**
8148
+ * Handler for {@link tddGoalTool}. The five tagged TDD errors come back as
8149
+ * the `{ ok: false, error }` envelope; anything else is a defect.
8150
+ *
8151
+ * @public
8152
+ */
8153
+ export declare const handleTddGoal: (input: TddGoalInputType) => Effect.Effect<TddGoalResultType, never, DataReader | DataStore>;
8154
+ /**
8155
+ * The Effect-native `tdd_goal` tool.
8156
+ *
8157
+ * @public
8158
+ */
8159
+ export declare const tddGoalTool: import("@effected/mcp").UnionTool<"tdd_goal", Schema.Union<readonly [Schema.Struct<{
8160
+ readonly action: Schema.Literal<"create">;
8161
+ readonly tddTaskId: Schema.Finite;
8162
+ readonly goal: Schema.String;
8163
+ }>, Schema.Struct<{
8164
+ readonly action: Schema.Literal<"update">;
8165
+ readonly id: Schema.Finite;
8166
+ readonly goal: Schema.optionalKey<Schema.String>;
8167
+ readonly status: Schema.optionalKey<Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>>;
8168
+ }>, Schema.Struct<{
8169
+ readonly action: Schema.Literal<"delete">;
8170
+ readonly id: Schema.Finite;
8171
+ }>, Schema.Struct<{
8172
+ readonly action: Schema.Literal<"get">;
8173
+ readonly id: Schema.Finite;
8174
+ }>, Schema.Struct<{
8175
+ readonly action: Schema.Literal<"list">;
8176
+ readonly tddTaskId: Schema.Finite;
8177
+ }>]>, Schema.Union<readonly [Schema.Union<readonly [Schema.Struct<{
8178
+ readonly _idempotentReplay: Schema.optionalKey<Schema.Literal<true>>;
8179
+ readonly ok: Schema.Literal<true>;
8180
+ readonly action: Schema.Literal<"create">;
8181
+ readonly goal: Schema.Struct<{
8182
+ readonly id: Schema.Number;
8183
+ readonly sessionId: Schema.Number;
8184
+ readonly ordinal: Schema.Number;
8185
+ readonly goal: Schema.String;
8186
+ readonly status: Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
8187
+ readonly createdAt: Schema.String;
8188
+ }>;
8189
+ }>, Schema.Struct<{
8190
+ readonly ok: Schema.Literal<true>;
8191
+ readonly action: Schema.Literal<"update">;
8192
+ readonly goal: Schema.Struct<{
8193
+ readonly id: Schema.Number;
8194
+ readonly sessionId: Schema.Number;
8195
+ readonly ordinal: Schema.Number;
8196
+ readonly goal: Schema.String;
8197
+ readonly status: Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
8198
+ readonly createdAt: Schema.String;
8199
+ }>;
8200
+ }>, Schema.Struct<{
8201
+ readonly ok: Schema.Literal<true>;
8202
+ readonly action: Schema.Literal<"delete">;
8203
+ readonly id: Schema.Number;
8204
+ }>, Schema.Struct<{
8205
+ readonly action: Schema.Literal<"get">;
8206
+ readonly found: Schema.Literal<true>;
8207
+ readonly goal: Schema.Struct<{
8208
+ readonly id: Schema.Number;
8209
+ readonly sessionId: Schema.Number;
8210
+ readonly ordinal: Schema.Number;
8211
+ readonly goal: Schema.String;
8212
+ readonly status: Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
8213
+ readonly createdAt: Schema.String;
8214
+ readonly behaviors: Schema.$Array<Schema.Struct<{
8215
+ readonly id: Schema.Number;
8216
+ readonly goalId: Schema.Number;
8217
+ readonly ordinal: Schema.Number;
8218
+ readonly behavior: Schema.String;
8219
+ readonly suggestedTestName: Schema.NullOr<Schema.String>;
8220
+ readonly status: Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
8221
+ readonly createdAt: Schema.String;
8222
+ }>>;
8223
+ }>;
8224
+ }>, Schema.Struct<{
8225
+ readonly action: Schema.Literal<"get">;
8226
+ readonly found: Schema.Literal<false>;
8227
+ readonly id: Schema.Number;
8228
+ }>, Schema.Struct<{
8229
+ readonly ok: Schema.Literal<true>;
8230
+ readonly action: Schema.Literal<"list">;
8231
+ readonly tddTaskId: Schema.Number;
8232
+ readonly goals: Schema.$Array<Schema.Struct<{
8233
+ readonly id: Schema.Number;
8234
+ readonly sessionId: Schema.Number;
8235
+ readonly ordinal: Schema.Number;
8236
+ readonly goal: Schema.String;
8237
+ readonly status: Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
8238
+ readonly createdAt: Schema.String;
8239
+ readonly behaviors: Schema.$Array<Schema.Struct<{
8240
+ readonly id: Schema.Number;
8241
+ readonly goalId: Schema.Number;
8242
+ readonly ordinal: Schema.Number;
8243
+ readonly behavior: Schema.String;
8244
+ readonly suggestedTestName: Schema.NullOr<Schema.String>;
8245
+ readonly status: Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
8246
+ readonly createdAt: Schema.String;
8247
+ }>>;
8248
+ }>>;
8249
+ }>]>, Schema.Struct<{
8250
+ readonly ok: Schema.Literal<false>;
8251
+ readonly error: Schema.Union<readonly [Schema.Struct<{
8252
+ readonly _tag: Schema.Literal<"GoalNotFoundError">;
8253
+ } & {
8254
+ readonly message: Schema.String;
8255
+ readonly remediation: Schema.Struct<{
8256
+ readonly hint: Schema.String;
8257
+ readonly suggestedTool: Schema.optionalKey<Schema.String>;
8258
+ readonly suggestedArgs: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>;
8259
+ }>;
8260
+ } & {
8261
+ readonly id: Schema.Number;
8262
+ readonly reason: Schema.String;
8263
+ }>, Schema.Struct<{
8264
+ readonly _tag: Schema.Literal<"BehaviorNotFoundError">;
8265
+ } & {
8266
+ readonly message: Schema.String;
8267
+ readonly remediation: Schema.Struct<{
8268
+ readonly hint: Schema.String;
8269
+ readonly suggestedTool: Schema.optionalKey<Schema.String>;
8270
+ readonly suggestedArgs: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>;
8271
+ }>;
8272
+ } & {
8273
+ readonly id: Schema.Number;
8274
+ readonly reason: Schema.String;
8275
+ }>, Schema.Struct<{
8276
+ readonly _tag: Schema.Literal<"TddTaskNotFoundError">;
8277
+ } & {
8278
+ readonly message: Schema.String;
8279
+ readonly remediation: Schema.Struct<{
8280
+ readonly hint: Schema.String;
8281
+ readonly suggestedTool: Schema.optionalKey<Schema.String>;
8282
+ readonly suggestedArgs: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>;
8283
+ }>;
8284
+ } & {
8285
+ readonly id: Schema.Number;
8286
+ readonly reason: Schema.String;
8287
+ }>, Schema.Struct<{
8288
+ readonly _tag: Schema.Literal<"TddTaskAlreadyEndedError">;
8289
+ } & {
8290
+ readonly message: Schema.String;
8291
+ readonly remediation: Schema.Struct<{
8292
+ readonly hint: Schema.String;
8293
+ readonly suggestedTool: Schema.optionalKey<Schema.String>;
8294
+ readonly suggestedArgs: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>;
8295
+ }>;
8296
+ } & {
8297
+ readonly id: Schema.Number;
8298
+ readonly endedAt: Schema.String;
8299
+ readonly outcome: Schema.Literals<readonly ["succeeded", "blocked", "abandoned"]>;
8300
+ }>, Schema.Struct<{
8301
+ readonly _tag: Schema.Literal<"IllegalStatusTransitionError">;
8302
+ } & {
8303
+ readonly message: Schema.String;
8304
+ readonly remediation: Schema.Struct<{
8305
+ readonly hint: Schema.String;
8306
+ readonly suggestedTool: Schema.optionalKey<Schema.String>;
8307
+ readonly suggestedArgs: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>;
8308
+ }>;
8309
+ } & {
8310
+ readonly entity: Schema.Literals<readonly ["goal", "behavior", "task"]>;
8311
+ readonly id: Schema.Number;
8312
+ readonly from: Schema.String;
8313
+ readonly to: Schema.String;
8314
+ readonly reason: Schema.String;
8315
+ }>]>;
8316
+ }>]>, typeof ToolRefusal$1, DataReader | DataStore>;
8317
+ /**
8318
+ * The `tdd_task` tool's success payload.
8319
+ *
8320
+ * @public
8321
+ */
8322
+ export declare const TddTaskResult: Schema.Union<readonly [Schema.Struct<{
8323
+ readonly _idempotentReplay: Schema.optionalKey<Schema.Literal<true>>;
8324
+ readonly action: Schema.Literal<"start">;
8325
+ readonly tddTaskId: Schema.Number;
8326
+ readonly goal: Schema.String;
8327
+ readonly runId: Schema.optional<Schema.String>;
8328
+ }>, Schema.Struct<{
8329
+ readonly _idempotentReplay: Schema.optionalKey<Schema.Literal<true>>;
8330
+ readonly action: Schema.Literal<"end">;
8331
+ readonly tddTaskId: Schema.Number;
8332
+ readonly outcome: Schema.Literals<readonly ["succeeded", "blocked", "abandoned"]>;
8333
+ }>, Schema.Struct<{
8334
+ readonly action: Schema.Literal<"get">;
8335
+ readonly found: Schema.Literal<true>;
8336
+ readonly task: Schema.Struct<{
8337
+ readonly tddTaskId: Schema.Number;
8338
+ readonly sessionId: Schema.Number;
8339
+ readonly goal: Schema.String;
8340
+ readonly startedAt: Schema.String;
8341
+ readonly endedAt: Schema.NullOr<Schema.String>;
8342
+ readonly outcome: Schema.NullOr<Schema.String>;
8343
+ readonly runId: Schema.NullOr<Schema.String>;
8344
+ readonly goals: Schema.$Array<Schema.Struct<{
8345
+ readonly id: Schema.Number;
8346
+ readonly sessionId: Schema.Number;
8347
+ readonly ordinal: Schema.Number;
8348
+ readonly goal: Schema.String;
8349
+ readonly status: Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
8350
+ readonly createdAt: Schema.String;
8351
+ readonly behaviors: Schema.$Array<Schema.Struct<{
8352
+ readonly id: Schema.Number;
8353
+ readonly goalId: Schema.Number;
8354
+ readonly ordinal: Schema.Number;
8355
+ readonly behavior: Schema.String;
8356
+ readonly suggestedTestName: Schema.NullOr<Schema.String>;
8357
+ readonly status: Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
8358
+ readonly createdAt: Schema.String;
8359
+ }>>;
8360
+ }>>;
8361
+ readonly phases: Schema.$Array<Schema.Struct<{
8362
+ readonly id: Schema.Number;
8363
+ readonly behaviorId: Schema.NullOr<Schema.Number>;
8364
+ readonly phase: Schema.String;
8365
+ readonly startedAt: Schema.String;
8366
+ readonly endedAt: Schema.NullOr<Schema.String>;
8367
+ readonly transitionReason: Schema.NullOr<Schema.String>;
8368
+ }>>;
8369
+ readonly artifacts: Schema.$Array<Schema.Struct<{
8370
+ readonly id: Schema.Number;
8371
+ readonly phaseId: Schema.Number;
8372
+ readonly artifactKind: Schema.String;
8373
+ readonly testCaseId: Schema.NullOr<Schema.Number>;
8374
+ readonly testRunId: Schema.NullOr<Schema.Number>;
8375
+ readonly recordedAt: Schema.String;
8376
+ }>>;
8377
+ }>;
8378
+ readonly currentPhase: Schema.NullOr<Schema.Struct<{
8379
+ readonly id: Schema.Number;
8380
+ readonly phase: Schema.String;
8381
+ readonly startedAt: Schema.String;
8382
+ readonly behaviorId: Schema.NullOr<Schema.Number>;
8383
+ }>>;
8384
+ }>, Schema.Struct<{
8385
+ readonly action: Schema.Literal<"get">;
8386
+ readonly found: Schema.Literal<false>;
8387
+ readonly tddTaskId: Schema.Number;
8388
+ }>, Schema.Struct<{
8389
+ readonly action: Schema.Literal<"resume">;
8390
+ readonly found: Schema.Literal<true>;
8391
+ readonly tddTaskId: Schema.Number;
8392
+ readonly goal: Schema.String;
8393
+ readonly status: Schema.String;
8394
+ readonly currentPhase: Schema.NullOr<Schema.Struct<{
8395
+ readonly id: Schema.Number;
8396
+ readonly phase: Schema.String;
8397
+ readonly startedAt: Schema.String;
8398
+ readonly behaviorId: Schema.NullOr<Schema.Number>;
8399
+ }>>;
8400
+ readonly phasesRecorded: Schema.Number;
8401
+ readonly artifactsRecorded: Schema.Number;
8402
+ }>, Schema.Struct<{
8403
+ readonly action: Schema.Literal<"resume">;
8404
+ readonly found: Schema.Literal<false>;
8405
+ readonly tddTaskId: Schema.Number;
8406
+ }>]>;
8407
+ /**
8408
+ * The decoded {@link TddTaskResult}.
8409
+ *
8410
+ * @public
8411
+ */
8412
+ type TddTaskResultType = Schema.Schema.Type<typeof TddTaskResult>;
8413
+ /**
8414
+ * The `tdd_task` tool's parameters — a union discriminated on `action`.
8415
+ *
8416
+ * @public
8417
+ */
8418
+ export declare const TddTaskInput: Schema.Union<readonly [Schema.Struct<{
8419
+ readonly action: Schema.Literal<"start">;
8420
+ readonly goal: Schema.String;
8421
+ readonly sessionId: Schema.optionalKey<Schema.Finite>;
8422
+ readonly chatId: Schema.optionalKey<Schema.String>;
8423
+ readonly parentTddTaskId: Schema.optionalKey<Schema.Finite>;
8424
+ readonly startedAt: Schema.optionalKey<Schema.String>;
8425
+ readonly runId: Schema.optionalKey<Schema.String>;
8426
+ }>, Schema.Struct<{
8427
+ readonly action: Schema.Literal<"end">;
8428
+ readonly tddTaskId: Schema.Finite;
8429
+ readonly outcome: Schema.Literals<readonly ["succeeded", "blocked", "abandoned"]>;
8430
+ readonly summaryNoteId: Schema.optionalKey<Schema.Finite>;
8431
+ }>, Schema.Struct<{
8432
+ readonly action: Schema.Literal<"get">;
8433
+ readonly tddTaskId: Schema.Finite;
8434
+ }>, Schema.Struct<{
8435
+ readonly action: Schema.Literal<"resume">;
8436
+ readonly tddTaskId: Schema.Finite;
8437
+ }>]>;
8438
+ /**
8439
+ * The decoded {@link TddTaskInput}.
8440
+ *
8441
+ * @public
8442
+ */
8443
+ type TddTaskInputType = Schema.Schema.Type<typeof TddTaskInput>;
8444
+ /**
8445
+ * Handler for {@link tddTaskTool}. A `start` with neither `sessionId` nor
8446
+ * `chatId`, an unknown `sessionId` or `chatId`, or a blank `runId` fails with a
8447
+ * `ToolRefusal` (an `isError` result naming the fix). A store failure is
8448
+ * a defect.
8449
+ *
8450
+ * @public
8451
+ */
8452
+ export declare const handleTddTask: (input: TddTaskInputType) => Effect.Effect<TddTaskResultType, ToolRefusal$1, DataReader | DataStore>;
8453
+ /**
8454
+ * The Effect-native `tdd_task` tool.
8455
+ *
8456
+ * @public
8457
+ */
8458
+ export declare const tddTaskTool: import("@effected/mcp").UnionTool<"tdd_task", Schema.Union<readonly [Schema.Struct<{
8459
+ readonly action: Schema.Literal<"start">;
8460
+ readonly goal: Schema.String;
8461
+ readonly sessionId: Schema.optionalKey<Schema.Finite>;
8462
+ readonly chatId: Schema.optionalKey<Schema.String>;
8463
+ readonly parentTddTaskId: Schema.optionalKey<Schema.Finite>;
8464
+ readonly startedAt: Schema.optionalKey<Schema.String>;
8465
+ readonly runId: Schema.optionalKey<Schema.String>;
8466
+ }>, Schema.Struct<{
8467
+ readonly action: Schema.Literal<"end">;
8468
+ readonly tddTaskId: Schema.Finite;
8469
+ readonly outcome: Schema.Literals<readonly ["succeeded", "blocked", "abandoned"]>;
8470
+ readonly summaryNoteId: Schema.optionalKey<Schema.Finite>;
8471
+ }>, Schema.Struct<{
8472
+ readonly action: Schema.Literal<"get">;
8473
+ readonly tddTaskId: Schema.Finite;
8474
+ }>, Schema.Struct<{
8475
+ readonly action: Schema.Literal<"resume">;
8476
+ readonly tddTaskId: Schema.Finite;
8477
+ }>]>, Schema.Union<readonly [Schema.Struct<{
8478
+ readonly _idempotentReplay: Schema.optionalKey<Schema.Literal<true>>;
8479
+ readonly action: Schema.Literal<"start">;
8480
+ readonly tddTaskId: Schema.Number;
8481
+ readonly goal: Schema.String;
8482
+ readonly runId: Schema.optional<Schema.String>;
8483
+ }>, Schema.Struct<{
8484
+ readonly _idempotentReplay: Schema.optionalKey<Schema.Literal<true>>;
8485
+ readonly action: Schema.Literal<"end">;
8486
+ readonly tddTaskId: Schema.Number;
8487
+ readonly outcome: Schema.Literals<readonly ["succeeded", "blocked", "abandoned"]>;
8488
+ }>, Schema.Struct<{
8489
+ readonly action: Schema.Literal<"get">;
8490
+ readonly found: Schema.Literal<true>;
8491
+ readonly task: Schema.Struct<{
8492
+ readonly tddTaskId: Schema.Number;
8493
+ readonly sessionId: Schema.Number;
8494
+ readonly goal: Schema.String;
8495
+ readonly startedAt: Schema.String;
8496
+ readonly endedAt: Schema.NullOr<Schema.String>;
8497
+ readonly outcome: Schema.NullOr<Schema.String>;
8498
+ readonly runId: Schema.NullOr<Schema.String>;
8499
+ readonly goals: Schema.$Array<Schema.Struct<{
8500
+ readonly id: Schema.Number;
8501
+ readonly sessionId: Schema.Number;
8502
+ readonly ordinal: Schema.Number;
8503
+ readonly goal: Schema.String;
8504
+ readonly status: Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
8505
+ readonly createdAt: Schema.String;
8506
+ readonly behaviors: Schema.$Array<Schema.Struct<{
8507
+ readonly id: Schema.Number;
8508
+ readonly goalId: Schema.Number;
8509
+ readonly ordinal: Schema.Number;
8510
+ readonly behavior: Schema.String;
8511
+ readonly suggestedTestName: Schema.NullOr<Schema.String>;
8512
+ readonly status: Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
8513
+ readonly createdAt: Schema.String;
8514
+ }>>;
8515
+ }>>;
8516
+ readonly phases: Schema.$Array<Schema.Struct<{
8517
+ readonly id: Schema.Number;
8518
+ readonly behaviorId: Schema.NullOr<Schema.Number>;
8519
+ readonly phase: Schema.String;
8520
+ readonly startedAt: Schema.String;
8521
+ readonly endedAt: Schema.NullOr<Schema.String>;
8522
+ readonly transitionReason: Schema.NullOr<Schema.String>;
8523
+ }>>;
8524
+ readonly artifacts: Schema.$Array<Schema.Struct<{
8525
+ readonly id: Schema.Number;
8526
+ readonly phaseId: Schema.Number;
8527
+ readonly artifactKind: Schema.String;
8528
+ readonly testCaseId: Schema.NullOr<Schema.Number>;
8529
+ readonly testRunId: Schema.NullOr<Schema.Number>;
8530
+ readonly recordedAt: Schema.String;
8531
+ }>>;
8532
+ }>;
8533
+ readonly currentPhase: Schema.NullOr<Schema.Struct<{
8534
+ readonly id: Schema.Number;
8535
+ readonly phase: Schema.String;
8536
+ readonly startedAt: Schema.String;
8537
+ readonly behaviorId: Schema.NullOr<Schema.Number>;
8538
+ }>>;
8539
+ }>, Schema.Struct<{
8540
+ readonly action: Schema.Literal<"get">;
8541
+ readonly found: Schema.Literal<false>;
8542
+ readonly tddTaskId: Schema.Number;
8543
+ }>, Schema.Struct<{
8544
+ readonly action: Schema.Literal<"resume">;
8545
+ readonly found: Schema.Literal<true>;
8546
+ readonly tddTaskId: Schema.Number;
8547
+ readonly goal: Schema.String;
8548
+ readonly status: Schema.String;
8549
+ readonly currentPhase: Schema.NullOr<Schema.Struct<{
8550
+ readonly id: Schema.Number;
8551
+ readonly phase: Schema.String;
8552
+ readonly startedAt: Schema.String;
8553
+ readonly behaviorId: Schema.NullOr<Schema.Number>;
8554
+ }>>;
8555
+ readonly phasesRecorded: Schema.Number;
8556
+ readonly artifactsRecorded: Schema.Number;
8557
+ }>, Schema.Struct<{
8558
+ readonly action: Schema.Literal<"resume">;
8559
+ readonly found: Schema.Literal<false>;
8560
+ readonly tddTaskId: Schema.Number;
8561
+ }>]>, typeof ToolRefusal$1, DataReader | DataStore>;
8562
+ /**
8563
+ * The `test` tool's success payload.
8564
+ *
8565
+ * @public
8566
+ */
8567
+ export declare const TestResult: Schema.Union<readonly [Schema.Struct<{
8568
+ readonly action: Schema.Literal<"list">;
8569
+ readonly count: Schema.Number;
8570
+ readonly groups: Schema.$Array<Schema.Struct<{
8571
+ readonly project: Schema.String;
8572
+ readonly tests: Schema.$Array<Schema.Struct<{
8573
+ readonly id: Schema.Number;
8574
+ readonly fullName: Schema.String;
6085
8575
  readonly state: Schema.String;
6086
8576
  readonly duration: Schema.NullOr<Schema.Number>;
6087
8577
  readonly module: Schema.String;
@@ -6244,6 +8734,167 @@ export declare const TestInput: Schema.Union<readonly [Schema.Struct<{
6244
8734
  * @public
6245
8735
  */
6246
8736
  type TestInputType = Schema.Schema.Type<typeof TestInput>;
8737
+ /**
8738
+ * Handler for {@link testTool}.
8739
+ *
8740
+ * @public
8741
+ */
8742
+ export declare const handleTest: (input: TestInputType) => Effect.Effect<TestResultType, never, DataReader>;
8743
+ /**
8744
+ * The Effect-native `test` tool.
8745
+ *
8746
+ * @public
8747
+ */
8748
+ export declare const testTool: import("@effected/mcp").UnionTool<"test", Schema.Union<readonly [Schema.Struct<{
8749
+ readonly action: Schema.Literal<"list">;
8750
+ readonly project: Schema.optionalKey<Schema.String>;
8751
+ readonly state: Schema.optionalKey<Schema.String>;
8752
+ readonly module: Schema.optionalKey<Schema.String>;
8753
+ readonly limit: Schema.optionalKey<Schema.Finite>;
8754
+ }>, Schema.Struct<{
8755
+ readonly action: Schema.Literal<"get">;
8756
+ readonly fullName: Schema.String;
8757
+ readonly project: Schema.optionalKey<Schema.String>;
8758
+ readonly modulePath: Schema.optionalKey<Schema.String>;
8759
+ }>, Schema.Struct<{
8760
+ readonly action: Schema.Literal<"for_file">;
8761
+ readonly filePath: Schema.String;
8762
+ }>, Schema.Struct<{
8763
+ readonly action: Schema.Literal<"for_tag">;
8764
+ readonly tag: Schema.String;
8765
+ readonly project: Schema.optionalKey<Schema.String>;
8766
+ }>, Schema.Struct<{
8767
+ readonly action: Schema.Literal<"annotations">;
8768
+ readonly fullName: Schema.String;
8769
+ readonly project: Schema.optionalKey<Schema.String>;
8770
+ readonly modulePath: Schema.optionalKey<Schema.String>;
8771
+ readonly maxBytes: Schema.optionalKey<Schema.Int>;
8772
+ }>, Schema.Struct<{
8773
+ readonly action: Schema.Literal<"artifacts">;
8774
+ readonly fullName: Schema.String;
8775
+ readonly project: Schema.optionalKey<Schema.String>;
8776
+ readonly modulePath: Schema.optionalKey<Schema.String>;
8777
+ readonly maxBytes: Schema.optionalKey<Schema.Int>;
8778
+ }>]>, Schema.Union<readonly [Schema.Struct<{
8779
+ readonly action: Schema.Literal<"list">;
8780
+ readonly count: Schema.Number;
8781
+ readonly groups: Schema.$Array<Schema.Struct<{
8782
+ readonly project: Schema.String;
8783
+ readonly tests: Schema.$Array<Schema.Struct<{
8784
+ readonly id: Schema.Number;
8785
+ readonly fullName: Schema.String;
8786
+ readonly state: Schema.String;
8787
+ readonly duration: Schema.NullOr<Schema.Number>;
8788
+ readonly module: Schema.String;
8789
+ readonly classification: Schema.NullOr<Schema.String>;
8790
+ }>>;
8791
+ }>>;
8792
+ }>, Schema.Struct<{
8793
+ readonly action: Schema.Literal<"get">;
8794
+ readonly found: Schema.Literal<true>;
8795
+ readonly project: Schema.String;
8796
+ readonly test: Schema.Struct<{
8797
+ readonly id: Schema.Number;
8798
+ readonly fullName: Schema.String;
8799
+ readonly state: Schema.String;
8800
+ readonly duration: Schema.NullOr<Schema.Number>;
8801
+ readonly module: Schema.String;
8802
+ readonly classification: Schema.NullOr<Schema.String>;
8803
+ }>;
8804
+ readonly errors: Schema.$Array<Schema.Struct<{
8805
+ readonly name: Schema.NullOr<Schema.String>;
8806
+ readonly message: Schema.String;
8807
+ readonly diff: Schema.NullOr<Schema.String>;
8808
+ readonly stack: Schema.NullOr<Schema.String>;
8809
+ }>>;
8810
+ readonly runs: Schema.$Array<Schema.Struct<{
8811
+ readonly state: Schema.Literals<readonly ["passed", "failed"]>;
8812
+ readonly timestamp: Schema.String;
8813
+ }>>;
8814
+ }>, Schema.Struct<{
8815
+ readonly action: Schema.Literal<"get">;
8816
+ readonly found: Schema.Literal<false>;
8817
+ readonly project: Schema.String;
8818
+ readonly fullName: Schema.String;
8819
+ /**
8820
+ * `true` when the lookup failed *because* the name matched more than
8821
+ * one module in the project's latest run and no `modulePath` was
8822
+ * supplied to disambiguate (issue #243) — as opposed to the name
8823
+ * simply not existing.
8824
+ */
8825
+ readonly ambiguous: Schema.optional<Schema.Boolean>;
8826
+ /** The module paths a `fullName` matched when `ambiguous` is `true`. */
8827
+ readonly candidateModules: Schema.optional<Schema.$Array<Schema.String>>;
8828
+ }>, Schema.Struct<{
8829
+ readonly action: Schema.Literal<"for_file">;
8830
+ readonly filePath: Schema.String;
8831
+ readonly count: Schema.Number;
8832
+ readonly testFiles: Schema.$Array<Schema.String>;
8833
+ }>, Schema.Struct<{
8834
+ readonly action: Schema.Literal<"for_tag">;
8835
+ readonly tag: Schema.String;
8836
+ readonly count: Schema.Number;
8837
+ readonly groups: Schema.$Array<Schema.Struct<{
8838
+ readonly project: Schema.String;
8839
+ readonly tests: Schema.$Array<Schema.Struct<{
8840
+ readonly id: Schema.Number;
8841
+ readonly fullName: Schema.String;
8842
+ readonly state: Schema.String;
8843
+ readonly duration: Schema.NullOr<Schema.Number>;
8844
+ readonly module: Schema.String;
8845
+ readonly classification: Schema.NullOr<Schema.String>;
8846
+ }>>;
8847
+ }>>;
8848
+ }>, Schema.Struct<{
8849
+ readonly action: Schema.Literal<"annotations">;
8850
+ readonly project: Schema.String;
8851
+ readonly fullName: Schema.String;
8852
+ readonly count: Schema.Number;
8853
+ readonly annotations: Schema.$Array<Schema.Struct<{
8854
+ readonly id: Schema.Number;
8855
+ readonly type: Schema.String;
8856
+ readonly message: Schema.String;
8857
+ readonly location: Schema.optional<Schema.Struct<{
8858
+ readonly file: Schema.String;
8859
+ readonly line: Schema.Number;
8860
+ readonly column: Schema.Number;
8861
+ }>>;
8862
+ readonly attachments: Schema.$Array<Schema.Struct<{
8863
+ readonly contentType: Schema.optional<Schema.String>;
8864
+ readonly path: Schema.optional<Schema.String>;
8865
+ readonly byteSize: Schema.NullOr<Schema.Number>;
8866
+ /** Present only for inline attachments under the 64 KiB persistence cap. */
8867
+ readonly body: Schema.optional<Schema.String>;
8868
+ /** How to read `body`. Absent when nothing was stored inline. */
8869
+ readonly bodyEncoding: Schema.optional<Schema.Literals<readonly ["base64", "utf-8"]>>;
8870
+ }>>;
8871
+ }>>;
8872
+ }>, Schema.Struct<{
8873
+ readonly action: Schema.Literal<"artifacts">;
8874
+ readonly project: Schema.String;
8875
+ readonly fullName: Schema.String;
8876
+ readonly count: Schema.Number;
8877
+ readonly artifacts: Schema.$Array<Schema.Struct<{
8878
+ readonly id: Schema.Number;
8879
+ readonly type: Schema.String;
8880
+ readonly message: Schema.NullOr<Schema.String>;
8881
+ readonly data: Schema.NullOr<Schema.String>;
8882
+ readonly location: Schema.optional<Schema.Struct<{
8883
+ readonly file: Schema.String;
8884
+ readonly line: Schema.Number;
8885
+ readonly column: Schema.Number;
8886
+ }>>;
8887
+ readonly attachments: Schema.$Array<Schema.Struct<{
8888
+ readonly contentType: Schema.optional<Schema.String>;
8889
+ readonly path: Schema.optional<Schema.String>;
8890
+ readonly byteSize: Schema.NullOr<Schema.Number>;
8891
+ /** Present only for inline attachments under the 64 KiB persistence cap. */
8892
+ readonly body: Schema.optional<Schema.String>;
8893
+ /** How to read `body`. Absent when nothing was stored inline. */
8894
+ readonly bodyEncoding: Schema.optional<Schema.Literals<readonly ["base64", "utf-8"]>>;
8895
+ }>>;
8896
+ }>>;
8897
+ }>]>, typeof ToolRefusal$1, DataReader>;
6247
8898
  /**
6248
8899
  * The version of this package, inlined at build time from
6249
8900
  * `package.json#version` via the bundler's `__PACKAGE_VERSION__` substitution.
@@ -6253,5 +8904,5 @@ type TestInputType = Schema.Schema.Type<typeof TestInput>;
6253
8904
  * @public
6254
8905
  */
6255
8906
  export declare const CURRENT_MCP_VERSION: string;
6256
- 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 };
8907
+ 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 HypothesisInputType, type HypothesisResultType, 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 TddBehaviorInputType, type TddBehaviorResultType, type TddErrorEnvelope, type TddGoalInputType, type TddGoalResultType, type TddProgressPushInputType, type TddProgressPushResultType, type TddTaskInputType, type TddTaskResultType, 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 };
6257
8908
  //# sourceMappingURL=index.d.ts.map