@vitest-agent/mcp 5.4.0 → 6.0.1

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
@@ -3,6 +3,7 @@ import { Context, Effect, Layer, Schema, Stdio } from "effect";
3
3
  import { DataReader, DataStore, ProjectDiscovery, SessionContext } from "@vitest-agent/engine";
4
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).
@@ -1413,7 +1383,7 @@ type RegisterAgentOutput = Schema.Schema.Type<typeof RegisterAgentResult>;
1413
1383
  /**
1414
1384
  * Handler for {@link registerAgentTool}. Idempotency is the tool's own
1415
1385
  * business rule (the `agents` idempotency key), not the generic
1416
- * `withIdempotency` combinator.
1386
+ * `ToolReplay` wrapper the write tools use (`replay.ts`).
1417
1387
  *
1418
1388
  * @public
1419
1389
  */
@@ -1666,6 +1636,30 @@ export declare const RunTestsResult: Schema.Union<readonly [Schema.Struct<{
1666
1636
  readonly detail: Schema.String;
1667
1637
  readonly targetTool: Schema.optional<Schema.String>;
1668
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
+ }>>;
1669
1663
  }>, Schema.Struct<{
1670
1664
  readonly kind: Schema.Literal<"timeout">;
1671
1665
  readonly timeoutSeconds: Schema.Number;
@@ -1710,6 +1704,7 @@ export declare const RunTestsInput: Schema.Struct<{
1710
1704
  }>>;
1711
1705
  readonly passWithNoTests: Schema.optionalKey<Schema.Boolean>;
1712
1706
  readonly timeout: Schema.optionalKey<Schema.Finite>;
1707
+ readonly _callerCwd: Schema.optionalKey<Schema.String>;
1713
1708
  readonly _sessionContext: Schema.optionalKey<Schema.Struct<{
1714
1709
  readonly chatId: Schema.String;
1715
1710
  readonly conversationId: Schema.String;
@@ -1723,12 +1718,13 @@ export declare const RunTestsInput: Schema.Struct<{
1723
1718
  */
1724
1719
  type RunTestsInputType = Schema.Schema.Type<typeof RunTestsInput>;
1725
1720
  /**
1726
- * Handler for {@link runTestsTool}. Serialized through a one-permit
1727
- * semaphore: the body assigns the active attribution UUIDs into
1728
- * `process.env.VITEST_AGENT_*` and then awaits `createVitest` /
1729
- * `vitest.start`, which spawns the worker pool that snapshots env at
1730
- * spawn time — two interleaved calls would race, attributing one call's
1731
- * 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.
1732
1728
  *
1733
1729
  * @public
1734
1730
  */
@@ -1750,6 +1746,7 @@ export declare const runTestsTool: Tool.Tool<"run_tests", {
1750
1746
  }>>;
1751
1747
  readonly passWithNoTests: Schema.optionalKey<Schema.Boolean>;
1752
1748
  readonly timeout: Schema.optionalKey<Schema.Finite>;
1749
+ readonly _callerCwd: Schema.optionalKey<Schema.String>;
1753
1750
  readonly _sessionContext: Schema.optionalKey<Schema.Struct<{
1754
1751
  readonly chatId: Schema.String;
1755
1752
  readonly conversationId: Schema.String;
@@ -1965,6 +1962,30 @@ export declare const runTestsTool: Tool.Tool<"run_tests", {
1965
1962
  readonly detail: Schema.String;
1966
1963
  readonly targetTool: Schema.optional<Schema.String>;
1967
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
+ }>>;
1968
1989
  }>, Schema.Struct<{
1969
1990
  readonly kind: Schema.Literal<"timeout">;
1970
1991
  readonly timeoutSeconds: Schema.Number;
@@ -3142,6 +3163,7 @@ export declare const Kit: Toolkit.Toolkit<{
3142
3163
  }>>;
3143
3164
  readonly passWithNoTests: import("effect/Schema").optionalKey<import("effect/Schema").Boolean>;
3144
3165
  readonly timeout: import("effect/Schema").optionalKey<import("effect/Schema").Finite>;
3166
+ readonly _callerCwd: import("effect/Schema").optionalKey<import("effect/Schema").String>;
3145
3167
  readonly _sessionContext: import("effect/Schema").optionalKey<import("effect/Schema").Struct<{
3146
3168
  readonly chatId: import("effect/Schema").String;
3147
3169
  readonly conversationId: import("effect/Schema").String;
@@ -3357,6 +3379,30 @@ export declare const Kit: Toolkit.Toolkit<{
3357
3379
  readonly detail: import("effect/Schema").String;
3358
3380
  readonly targetTool: import("effect/Schema").optional<import("effect/Schema").String>;
3359
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
+ }>>;
3360
3406
  }>, import("effect/Schema").Struct<{
3361
3407
  readonly kind: import("effect/Schema").Literal<"timeout">;
3362
3408
  readonly timeoutSeconds: import("effect/Schema").Number;
@@ -3451,7 +3497,7 @@ export declare const Kit: Toolkit.Toolkit<{
3451
3497
  }>, import("effect/Schema").Struct<{
3452
3498
  readonly action: import("effect/Schema").Literal<"list_by_tdd_task">;
3453
3499
  readonly tddTaskId: import("effect/Schema").Finite;
3454
- }>]>, import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
3500
+ }>]>, import("effect/Schema").Union<readonly [import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
3455
3501
  readonly _idempotentReplay: import("effect/Schema").optionalKey<import("effect/Schema").Literal<true>>;
3456
3502
  readonly ok: import("effect/Schema").Literal<true>;
3457
3503
  readonly action: import("effect/Schema").Literal<"create">;
@@ -3536,16 +3582,73 @@ export declare const Kit: Toolkit.Toolkit<{
3536
3582
  readonly status: import("effect/Schema").Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
3537
3583
  readonly createdAt: import("effect/Schema").String;
3538
3584
  }>>;
3539
- }>, import("effect/Schema").Struct<{
3585
+ }>]>, import("effect/Schema").Struct<{
3540
3586
  readonly ok: import("effect/Schema").Literal<false>;
3541
- readonly error: import("effect/Schema").StructWithRest<import("effect/Schema").Struct<{
3542
- 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;
3543
3640
  readonly remediation: import("effect/Schema").Struct<{
3544
3641
  readonly hint: import("effect/Schema").String;
3545
3642
  readonly suggestedTool: import("effect/Schema").optionalKey<import("effect/Schema").String>;
3546
3643
  readonly suggestedArgs: import("effect/Schema").optionalKey<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>>;
3547
3644
  }>;
3548
- }>, 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
+ }>]>;
3549
3652
  }>]>, typeof import("@effected/mcp").ToolRefusal, import("@vitest-agent/engine").DataReader | import("@vitest-agent/engine").DataStore>;
3550
3653
  readonly tdd_goal: import("@effected/mcp").UnionTool<"tdd_goal", import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
3551
3654
  readonly action: import("effect/Schema").Literal<"create">;
@@ -3565,7 +3668,7 @@ export declare const Kit: Toolkit.Toolkit<{
3565
3668
  }>, import("effect/Schema").Struct<{
3566
3669
  readonly action: import("effect/Schema").Literal<"list">;
3567
3670
  readonly tddTaskId: import("effect/Schema").Finite;
3568
- }>]>, import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
3671
+ }>]>, import("effect/Schema").Union<readonly [import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
3569
3672
  readonly _idempotentReplay: import("effect/Schema").optionalKey<import("effect/Schema").Literal<true>>;
3570
3673
  readonly ok: import("effect/Schema").Literal<true>;
3571
3674
  readonly action: import("effect/Schema").Literal<"create">;
@@ -3637,16 +3740,73 @@ export declare const Kit: Toolkit.Toolkit<{
3637
3740
  readonly createdAt: import("effect/Schema").String;
3638
3741
  }>>;
3639
3742
  }>>;
3640
- }>, import("effect/Schema").Struct<{
3743
+ }>]>, import("effect/Schema").Struct<{
3641
3744
  readonly ok: import("effect/Schema").Literal<false>;
3642
- readonly error: import("effect/Schema").StructWithRest<import("effect/Schema").Struct<{
3643
- 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;
3749
+ readonly remediation: import("effect/Schema").Struct<{
3750
+ readonly hint: import("effect/Schema").String;
3751
+ readonly suggestedTool: import("effect/Schema").optionalKey<import("effect/Schema").String>;
3752
+ readonly suggestedArgs: import("effect/Schema").optionalKey<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>>;
3753
+ }>;
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;
3644
3798
  readonly remediation: import("effect/Schema").Struct<{
3645
3799
  readonly hint: import("effect/Schema").String;
3646
3800
  readonly suggestedTool: import("effect/Schema").optionalKey<import("effect/Schema").String>;
3647
3801
  readonly suggestedArgs: import("effect/Schema").optionalKey<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>>;
3648
3802
  }>;
3649
- }>, readonly [import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>]>;
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
+ }>]>;
3650
3810
  }>]>, typeof import("@effected/mcp").ToolRefusal, import("@vitest-agent/engine").DataReader | import("@vitest-agent/engine").DataStore>;
3651
3811
  readonly tdd_phase_transition_request: import("effect/ai/Tool").Tool<"tdd_phase_transition_request", {
3652
3812
  readonly parameters: import("effect/Schema").Struct<{
@@ -4612,27 +4772,7 @@ export declare const toolHandlers: {
4612
4772
  } | {
4613
4773
  readonly _idempotentReplay?: true;
4614
4774
  readonly action: "validate";
4615
- } | (({
4616
- readonly action: "record";
4617
- readonly id: number;
4618
- } | {
4619
- readonly action: "list";
4620
- readonly count: number;
4621
- readonly hypotheses: readonly {
4622
- readonly id: number;
4623
- readonly sessionId: number;
4624
- readonly content: string;
4625
- readonly citedTestErrorId: number | null;
4626
- readonly citedStackFrameId: number | null;
4627
- readonly validationOutcome: "abandoned" | "confirmed" | "refuted" | null;
4628
- readonly validatedAt: string | null;
4629
- }[];
4630
- } | {
4631
- readonly _idempotentReplay?: true;
4632
- readonly action: "validate";
4633
- }) & {
4634
- _idempotentReplay: true;
4635
- }), 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>;
4636
4776
  tdd_task: (payload: unknown) => import("effect/Effect").Effect<{
4637
4777
  readonly action: "get";
4638
4778
  readonly found: true;
@@ -4717,99 +4857,64 @@ export declare const toolHandlers: {
4717
4857
  readonly action: "end";
4718
4858
  readonly tddTaskId: number;
4719
4859
  readonly outcome: "abandoned" | "blocked" | "succeeded";
4720
- } | (({
4721
- readonly action: "get";
4722
- readonly found: true;
4723
- readonly task: {
4724
- readonly tddTaskId: number;
4725
- readonly sessionId: number;
4726
- readonly goal: string;
4727
- readonly startedAt: string;
4728
- readonly endedAt: string | null;
4729
- readonly outcome: string | null;
4730
- readonly runId: string | null;
4731
- readonly goals: readonly {
4732
- readonly id: number;
4733
- readonly sessionId: number;
4734
- readonly ordinal: number;
4735
- readonly goal: string;
4736
- readonly status: "abandoned" | "done" | "in_progress" | "pending";
4737
- readonly createdAt: string;
4738
- readonly behaviors: readonly {
4739
- readonly id: number;
4740
- readonly goalId: number;
4741
- readonly ordinal: number;
4742
- readonly behavior: string;
4743
- readonly suggestedTestName: string | null;
4744
- readonly status: "abandoned" | "done" | "in_progress" | "pending";
4745
- readonly createdAt: string;
4746
- }[];
4747
- }[];
4748
- readonly phases: readonly {
4749
- readonly id: number;
4750
- readonly behaviorId: number | null;
4751
- readonly phase: string;
4752
- readonly startedAt: string;
4753
- readonly endedAt: string | null;
4754
- readonly transitionReason: string | null;
4755
- }[];
4756
- readonly artifacts: readonly {
4757
- readonly id: number;
4758
- readonly phaseId: number;
4759
- readonly artifactKind: string;
4760
- readonly testCaseId: number | null;
4761
- readonly testRunId: number | null;
4762
- readonly recordedAt: string;
4763
- }[];
4764
- };
4765
- readonly currentPhase: {
4766
- readonly id: number;
4767
- readonly phase: string;
4768
- readonly startedAt: string;
4769
- readonly behaviorId: number | null;
4770
- } | null;
4771
- } | {
4772
- readonly action: "get";
4773
- readonly found: false;
4774
- readonly tddTaskId: number;
4775
- } | {
4776
- readonly action: "resume";
4777
- readonly found: true;
4778
- readonly tddTaskId: number;
4779
- readonly goal: string;
4780
- readonly status: string;
4781
- readonly currentPhase: {
4782
- readonly id: number;
4783
- readonly phase: string;
4784
- readonly startedAt: string;
4785
- readonly behaviorId: number | null;
4786
- } | null;
4787
- readonly phasesRecorded: number;
4788
- readonly artifactsRecorded: number;
4789
- } | {
4790
- readonly action: "resume";
4791
- readonly found: false;
4792
- readonly tddTaskId: number;
4793
- } | {
4794
- readonly _idempotentReplay?: true;
4795
- readonly action: "start";
4796
- readonly tddTaskId: number;
4797
- readonly goal: string;
4798
- readonly runId?: string | undefined;
4799
- } | {
4800
- readonly _idempotentReplay?: true;
4801
- readonly action: "end";
4802
- readonly tddTaskId: number;
4803
- readonly outcome: "abandoned" | "blocked" | "succeeded";
4804
- }) & {
4805
- _idempotentReplay: true;
4806
- }), 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>;
4807
4861
  tdd_phase_transition_request: typeof handlePhaseTransitionRequest;
4808
4862
  tdd_goal: (payload: unknown) => import("effect/Effect").Effect<{
4809
4863
  readonly ok: false;
4810
4864
  readonly error: {
4811
- readonly [x: string]: unknown;
4812
- 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;
4813
4918
  readonly remediation: {
4814
4919
  readonly hint: string;
4815
4920
  readonly suggestedTool?: string;
@@ -4817,6 +4922,9 @@ export declare const toolHandlers: {
4817
4922
  readonly [x: string]: unknown;
4818
4923
  };
4819
4924
  };
4925
+ readonly _tag: "TddTaskNotFoundError";
4926
+ readonly id: number;
4927
+ readonly reason: string;
4820
4928
  };
4821
4929
  } | {
4822
4930
  readonly ok: true;
@@ -4890,11 +4998,11 @@ export declare const toolHandlers: {
4890
4998
  readonly status: "abandoned" | "done" | "in_progress" | "pending";
4891
4999
  readonly createdAt: string;
4892
5000
  };
4893
- } | (({
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<{
4894
5003
  readonly ok: false;
4895
5004
  readonly error: {
4896
- readonly [x: string]: unknown;
4897
- readonly _tag: string;
5005
+ readonly message: string;
4898
5006
  readonly remediation: {
4899
5007
  readonly hint: string;
4900
5008
  readonly suggestedTool?: string;
@@ -4902,87 +5010,11 @@ export declare const toolHandlers: {
4902
5010
  readonly [x: string]: unknown;
4903
5011
  };
4904
5012
  };
4905
- };
4906
- } | {
4907
- readonly ok: true;
4908
- readonly action: "update";
4909
- readonly goal: {
5013
+ readonly _tag: "BehaviorNotFoundError";
4910
5014
  readonly id: number;
4911
- readonly sessionId: number;
4912
- readonly ordinal: number;
4913
- readonly goal: string;
4914
- readonly status: "abandoned" | "done" | "in_progress" | "pending";
4915
- readonly createdAt: string;
4916
- };
4917
- } | {
4918
- readonly ok: true;
4919
- readonly action: "delete";
4920
- readonly id: number;
4921
- } | {
4922
- readonly action: "get";
4923
- readonly found: true;
4924
- readonly goal: {
4925
- readonly id: number;
4926
- readonly sessionId: number;
4927
- readonly ordinal: number;
4928
- readonly goal: string;
4929
- readonly status: "abandoned" | "done" | "in_progress" | "pending";
4930
- readonly createdAt: string;
4931
- readonly behaviors: readonly {
4932
- readonly id: number;
4933
- readonly goalId: number;
4934
- readonly ordinal: number;
4935
- readonly behavior: string;
4936
- readonly suggestedTestName: string | null;
4937
- readonly status: "abandoned" | "done" | "in_progress" | "pending";
4938
- readonly createdAt: string;
4939
- }[];
4940
- };
4941
- } | {
4942
- readonly action: "get";
4943
- readonly found: false;
4944
- readonly id: number;
4945
- } | {
4946
- readonly ok: true;
4947
- readonly action: "list";
4948
- readonly tddTaskId: number;
4949
- readonly goals: readonly {
4950
- readonly id: number;
4951
- readonly sessionId: number;
4952
- readonly ordinal: number;
4953
- readonly goal: string;
4954
- readonly status: "abandoned" | "done" | "in_progress" | "pending";
4955
- readonly createdAt: string;
4956
- readonly behaviors: readonly {
4957
- readonly id: number;
4958
- readonly goalId: number;
4959
- readonly ordinal: number;
4960
- readonly behavior: string;
4961
- readonly suggestedTestName: string | null;
4962
- readonly status: "abandoned" | "done" | "in_progress" | "pending";
4963
- readonly createdAt: string;
4964
- }[];
4965
- }[];
4966
- } | {
4967
- readonly _idempotentReplay?: true;
4968
- readonly ok: true;
4969
- readonly action: "create";
4970
- readonly goal: {
4971
- readonly id: number;
4972
- readonly sessionId: number;
4973
- readonly ordinal: number;
4974
- readonly goal: string;
4975
- readonly status: "abandoned" | "done" | "in_progress" | "pending";
4976
- readonly createdAt: string;
4977
- };
4978
- }) & {
4979
- _idempotentReplay: true;
4980
- }), import("effect/ai/McpSchema").InvalidParams, import("@vitest-agent/engine").DataReader | import("@vitest-agent/engine").DataStore>;
4981
- tdd_behavior: (payload: unknown) => import("effect/Effect").Effect<{
4982
- readonly ok: false;
4983
- readonly error: {
4984
- readonly [x: string]: unknown;
4985
- readonly _tag: string;
5015
+ readonly reason: string;
5016
+ } | {
5017
+ readonly message: string;
4986
5018
  readonly remediation: {
4987
5019
  readonly hint: string;
4988
5020
  readonly suggestedTool?: string;
@@ -4990,97 +5022,39 @@ export declare const toolHandlers: {
4990
5022
  readonly [x: string]: unknown;
4991
5023
  };
4992
5024
  };
4993
- };
4994
- } | {
4995
- readonly ok: true;
4996
- readonly action: "update";
4997
- readonly behavior: {
4998
- readonly id: number;
4999
- readonly goalId: number;
5000
- readonly ordinal: number;
5001
- readonly behavior: string;
5002
- readonly suggestedTestName: string | null;
5003
- readonly status: "abandoned" | "done" | "in_progress" | "pending";
5004
- readonly createdAt: string;
5005
- };
5006
- } | {
5007
- readonly ok: true;
5008
- readonly action: "delete";
5009
- readonly id: number;
5010
- } | {
5011
- readonly action: "get";
5012
- readonly found: true;
5013
- readonly behavior: {
5025
+ readonly _tag: "GoalNotFoundError";
5014
5026
  readonly id: number;
5015
- readonly goalId: number;
5016
- readonly ordinal: number;
5017
- readonly behavior: string;
5018
- readonly suggestedTestName: string | null;
5019
- readonly status: "abandoned" | "done" | "in_progress" | "pending";
5020
- readonly createdAt: string;
5021
- readonly parentGoal: {
5022
- readonly id: number;
5023
- readonly goal: string;
5024
- readonly status: "abandoned" | "done" | "in_progress" | "pending";
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
+ };
5025
5036
  };
5026
- readonly dependencies: readonly {
5027
- readonly id: number;
5028
- readonly goalId: number;
5029
- readonly ordinal: number;
5030
- readonly behavior: string;
5031
- readonly suggestedTestName: string | null;
5032
- readonly status: "abandoned" | "done" | "in_progress" | "pending";
5033
- readonly createdAt: string;
5034
- }[];
5035
- };
5036
- } | {
5037
- readonly action: "get";
5038
- readonly found: false;
5039
- readonly id: number;
5040
- } | {
5041
- readonly ok: true;
5042
- readonly action: "list_by_goal";
5043
- readonly goalId: number;
5044
- readonly behaviors: readonly {
5045
- readonly id: number;
5046
- readonly goalId: number;
5047
- readonly ordinal: number;
5048
- readonly behavior: string;
5049
- readonly suggestedTestName: string | null;
5050
- readonly status: "abandoned" | "done" | "in_progress" | "pending";
5051
- readonly createdAt: string;
5052
- }[];
5053
- } | {
5054
- readonly ok: true;
5055
- readonly action: "list_by_tdd_task";
5056
- readonly tddTaskId: number;
5057
- readonly behaviors: readonly {
5037
+ readonly _tag: "IllegalStatusTransitionError";
5038
+ readonly entity: "behavior" | "goal" | "task";
5058
5039
  readonly id: number;
5059
- readonly goalId: number;
5060
- readonly ordinal: number;
5061
- readonly behavior: string;
5062
- readonly suggestedTestName: string | null;
5063
- readonly status: "abandoned" | "done" | "in_progress" | "pending";
5064
- readonly createdAt: string;
5065
- }[];
5066
- } | {
5067
- readonly _idempotentReplay?: true;
5068
- readonly ok: true;
5069
- readonly action: "create";
5070
- readonly behavior: {
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";
5071
5053
  readonly id: number;
5072
- readonly goalId: number;
5073
- readonly ordinal: number;
5074
- readonly behavior: string;
5075
- readonly suggestedTestName: string | null;
5076
- readonly status: "abandoned" | "done" | "in_progress" | "pending";
5077
- readonly createdAt: string;
5078
- };
5079
- } | (({
5080
- readonly ok: false;
5081
- readonly error: {
5082
- readonly [x: string]: unknown;
5083
- readonly _tag: string;
5054
+ readonly endedAt: string;
5055
+ readonly outcome: "abandoned" | "blocked" | "succeeded";
5056
+ } | {
5057
+ readonly message: string;
5084
5058
  readonly remediation: {
5085
5059
  readonly hint: string;
5086
5060
  readonly suggestedTool?: string;
@@ -5088,6 +5062,9 @@ export declare const toolHandlers: {
5088
5062
  readonly [x: string]: unknown;
5089
5063
  };
5090
5064
  };
5065
+ readonly _tag: "TddTaskNotFoundError";
5066
+ readonly id: number;
5067
+ readonly reason: string;
5091
5068
  };
5092
5069
  } | {
5093
5070
  readonly ok: true;
@@ -5174,9 +5151,7 @@ export declare const toolHandlers: {
5174
5151
  readonly status: "abandoned" | "done" | "in_progress" | "pending";
5175
5152
  readonly createdAt: string;
5176
5153
  };
5177
- }) & {
5178
- _idempotentReplay: true;
5179
- }), 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>;
5180
5155
  tdd_artifact_list: typeof handleTddArtifactList;
5181
5156
  tdd_progress_push: typeof handleTddProgressPush;
5182
5157
  run_tests: typeof handleRunTests;
@@ -5672,6 +5647,7 @@ export declare const ToolsLayer: import("effect/Layer").Layer<import("effect/ai/
5672
5647
  }>>;
5673
5648
  readonly passWithNoTests: import("effect/Schema").optionalKey<import("effect/Schema").Boolean>;
5674
5649
  readonly timeout: import("effect/Schema").optionalKey<import("effect/Schema").Finite>;
5650
+ readonly _callerCwd: import("effect/Schema").optionalKey<import("effect/Schema").String>;
5675
5651
  readonly _sessionContext: import("effect/Schema").optionalKey<import("effect/Schema").Struct<{
5676
5652
  readonly chatId: import("effect/Schema").String;
5677
5653
  readonly conversationId: import("effect/Schema").String;
@@ -5887,6 +5863,30 @@ export declare const ToolsLayer: import("effect/Layer").Layer<import("effect/ai/
5887
5863
  readonly detail: import("effect/Schema").String;
5888
5864
  readonly targetTool: import("effect/Schema").optional<import("effect/Schema").String>;
5889
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
+ }>>;
5890
5890
  }>, import("effect/Schema").Struct<{
5891
5891
  readonly kind: import("effect/Schema").Literal<"timeout">;
5892
5892
  readonly timeoutSeconds: import("effect/Schema").Number;
@@ -5981,7 +5981,7 @@ export declare const ToolsLayer: import("effect/Layer").Layer<import("effect/ai/
5981
5981
  }>, import("effect/Schema").Struct<{
5982
5982
  readonly action: import("effect/Schema").Literal<"list_by_tdd_task">;
5983
5983
  readonly tddTaskId: import("effect/Schema").Finite;
5984
- }>]>, import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
5984
+ }>]>, import("effect/Schema").Union<readonly [import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
5985
5985
  readonly _idempotentReplay: import("effect/Schema").optionalKey<import("effect/Schema").Literal<true>>;
5986
5986
  readonly ok: import("effect/Schema").Literal<true>;
5987
5987
  readonly action: import("effect/Schema").Literal<"create">;
@@ -6066,16 +6066,73 @@ export declare const ToolsLayer: import("effect/Layer").Layer<import("effect/ai/
6066
6066
  readonly status: import("effect/Schema").Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
6067
6067
  readonly createdAt: import("effect/Schema").String;
6068
6068
  }>>;
6069
- }>, import("effect/Schema").Struct<{
6069
+ }>]>, import("effect/Schema").Struct<{
6070
6070
  readonly ok: import("effect/Schema").Literal<false>;
6071
- readonly error: import("effect/Schema").StructWithRest<import("effect/Schema").Struct<{
6072
- 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;
6073
6111
  readonly remediation: import("effect/Schema").Struct<{
6074
6112
  readonly hint: import("effect/Schema").String;
6075
6113
  readonly suggestedTool: import("effect/Schema").optionalKey<import("effect/Schema").String>;
6076
6114
  readonly suggestedArgs: import("effect/Schema").optionalKey<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>>;
6077
6115
  }>;
6078
- }>, readonly [import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>]>;
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;
6124
+ readonly remediation: import("effect/Schema").Struct<{
6125
+ readonly hint: import("effect/Schema").String;
6126
+ readonly suggestedTool: import("effect/Schema").optionalKey<import("effect/Schema").String>;
6127
+ readonly suggestedArgs: import("effect/Schema").optionalKey<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>>;
6128
+ }>;
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
+ }>]>;
6079
6136
  }>]>, typeof import("@effected/mcp").ToolRefusal, import("@vitest-agent/engine").DataReader | import("@vitest-agent/engine").DataStore>;
6080
6137
  readonly tdd_goal: import("@effected/mcp").UnionTool<"tdd_goal", import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
6081
6138
  readonly action: import("effect/Schema").Literal<"create">;
@@ -6095,7 +6152,7 @@ export declare const ToolsLayer: import("effect/Layer").Layer<import("effect/ai/
6095
6152
  }>, import("effect/Schema").Struct<{
6096
6153
  readonly action: import("effect/Schema").Literal<"list">;
6097
6154
  readonly tddTaskId: import("effect/Schema").Finite;
6098
- }>]>, import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
6155
+ }>]>, import("effect/Schema").Union<readonly [import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
6099
6156
  readonly _idempotentReplay: import("effect/Schema").optionalKey<import("effect/Schema").Literal<true>>;
6100
6157
  readonly ok: import("effect/Schema").Literal<true>;
6101
6158
  readonly action: import("effect/Schema").Literal<"create">;
@@ -6167,16 +6224,73 @@ export declare const ToolsLayer: import("effect/Layer").Layer<import("effect/ai/
6167
6224
  readonly createdAt: import("effect/Schema").String;
6168
6225
  }>>;
6169
6226
  }>>;
6170
- }>, import("effect/Schema").Struct<{
6227
+ }>]>, import("effect/Schema").Struct<{
6171
6228
  readonly ok: import("effect/Schema").Literal<false>;
6172
- readonly error: import("effect/Schema").StructWithRest<import("effect/Schema").Struct<{
6173
- 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;
6233
+ readonly remediation: import("effect/Schema").Struct<{
6234
+ readonly hint: import("effect/Schema").String;
6235
+ readonly suggestedTool: import("effect/Schema").optionalKey<import("effect/Schema").String>;
6236
+ readonly suggestedArgs: import("effect/Schema").optionalKey<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>>;
6237
+ }>;
6238
+ } & {
6239
+ readonly id: import("effect/Schema").Number;
6240
+ readonly reason: import("effect/Schema").String;
6241
+ }>, import("effect/Schema").Struct<{
6242
+ readonly _tag: import("effect/Schema").Literal<"BehaviorNotFoundError">;
6243
+ } & {
6244
+ readonly message: import("effect/Schema").String;
6245
+ readonly remediation: import("effect/Schema").Struct<{
6246
+ readonly hint: import("effect/Schema").String;
6247
+ readonly suggestedTool: import("effect/Schema").optionalKey<import("effect/Schema").String>;
6248
+ readonly suggestedArgs: import("effect/Schema").optionalKey<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>>;
6249
+ }>;
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;
6174
6269
  readonly remediation: import("effect/Schema").Struct<{
6175
6270
  readonly hint: import("effect/Schema").String;
6176
6271
  readonly suggestedTool: import("effect/Schema").optionalKey<import("effect/Schema").String>;
6177
6272
  readonly suggestedArgs: import("effect/Schema").optionalKey<import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>>;
6178
6273
  }>;
6179
- }>, readonly [import("effect/Schema").$Record<import("effect/Schema").String, import("effect/Schema").Unknown>]>;
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
+ }>]>;
6180
6294
  }>]>, typeof import("@effected/mcp").ToolRefusal, import("@vitest-agent/engine").DataReader | import("@vitest-agent/engine").DataStore>;
6181
6295
  readonly tdd_phase_transition_request: import("effect/ai/Tool").Tool<"tdd_phase_transition_request", {
6182
6296
  readonly parameters: import("effect/Schema").Struct<{
@@ -6825,8 +6939,9 @@ export declare const ToolsLayer: import("effect/Layer").Layer<import("effect/ai/
6825
6939
  * Success-shaped envelope returned by TDD CRUD tools when a known TDD error occurs.
6826
6940
  *
6827
6941
  * Instead of letting the five tagged TDD errors propagate as transport errors,
6828
- * `catchTddErrorsAsEnvelope` maps them to this shape so the agent receives a normal
6829
- * 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.
6830
6945
  *
6831
6946
  * @public
6832
6947
  */
@@ -6834,6 +6949,7 @@ interface TddErrorEnvelope {
6834
6949
  readonly ok: false;
6835
6950
  readonly error: {
6836
6951
  readonly _tag: string;
6952
+ readonly message: string;
6837
6953
  readonly remediation: Remediation;
6838
6954
  readonly [key: string]: unknown;
6839
6955
  };
@@ -7461,7 +7577,7 @@ export declare const noteTool: import("@effected/mcp").UnionTool<"note", Schema.
7461
7577
  *
7462
7578
  * @public
7463
7579
  */
7464
- export declare const TddBehaviorResult: Schema.Union<readonly [Schema.Struct<{
7580
+ export declare const TddBehaviorResult: Schema.Union<readonly [Schema.Union<readonly [Schema.Struct<{
7465
7581
  readonly _idempotentReplay: Schema.optionalKey<Schema.Literal<true>>;
7466
7582
  readonly ok: Schema.Literal<true>;
7467
7583
  readonly action: Schema.Literal<"create">;
@@ -7546,16 +7662,73 @@ export declare const TddBehaviorResult: Schema.Union<readonly [Schema.Struct<{
7546
7662
  readonly status: Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
7547
7663
  readonly createdAt: Schema.String;
7548
7664
  }>>;
7549
- }>, Schema.Struct<{
7665
+ }>]>, Schema.Struct<{
7550
7666
  readonly ok: Schema.Literal<false>;
7551
- readonly error: Schema.StructWithRest<Schema.Struct<{
7552
- readonly _tag: Schema.String;
7667
+ readonly error: Schema.Union<readonly [Schema.Struct<{
7668
+ readonly _tag: Schema.Literal<"GoalNotFoundError">;
7669
+ } & {
7670
+ readonly message: Schema.String;
7553
7671
  readonly remediation: Schema.Struct<{
7554
7672
  readonly hint: Schema.String;
7555
7673
  readonly suggestedTool: Schema.optionalKey<Schema.String>;
7556
7674
  readonly suggestedArgs: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>;
7557
7675
  }>;
7558
- }>, readonly [Schema.$Record<Schema.String, Schema.Unknown>]>;
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
+ }>]>;
7559
7732
  }>]>;
7560
7733
  /**
7561
7734
  * The decoded {@link TddBehaviorResult}.
@@ -7637,7 +7810,7 @@ export declare const tddBehaviorTool: import("@effected/mcp").UnionTool<"tdd_beh
7637
7810
  }>, Schema.Struct<{
7638
7811
  readonly action: Schema.Literal<"list_by_tdd_task">;
7639
7812
  readonly tddTaskId: Schema.Finite;
7640
- }>]>, Schema.Union<readonly [Schema.Struct<{
7813
+ }>]>, Schema.Union<readonly [Schema.Union<readonly [Schema.Struct<{
7641
7814
  readonly _idempotentReplay: Schema.optionalKey<Schema.Literal<true>>;
7642
7815
  readonly ok: Schema.Literal<true>;
7643
7816
  readonly action: Schema.Literal<"create">;
@@ -7722,23 +7895,80 @@ export declare const tddBehaviorTool: import("@effected/mcp").UnionTool<"tdd_beh
7722
7895
  readonly status: Schema.Literals<readonly ["pending", "in_progress", "done", "abandoned"]>;
7723
7896
  readonly createdAt: Schema.String;
7724
7897
  }>>;
7725
- }>, Schema.Struct<{
7898
+ }>]>, Schema.Struct<{
7726
7899
  readonly ok: Schema.Literal<false>;
7727
- readonly error: Schema.StructWithRest<Schema.Struct<{
7728
- readonly _tag: Schema.String;
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;
7729
7953
  readonly remediation: Schema.Struct<{
7730
7954
  readonly hint: Schema.String;
7731
7955
  readonly suggestedTool: Schema.optionalKey<Schema.String>;
7732
7956
  readonly suggestedArgs: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>;
7733
7957
  }>;
7734
- }>, readonly [Schema.$Record<Schema.String, Schema.Unknown>]>;
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
+ }>]>;
7735
7965
  }>]>, typeof ToolRefusal$1, DataReader | DataStore>;
7736
7966
  /**
7737
7967
  * The `tdd_goal` tool's success payload.
7738
7968
  *
7739
7969
  * @public
7740
7970
  */
7741
- export declare const TddGoalResult: Schema.Union<readonly [Schema.Struct<{
7971
+ export declare const TddGoalResult: Schema.Union<readonly [Schema.Union<readonly [Schema.Struct<{
7742
7972
  readonly _idempotentReplay: Schema.optionalKey<Schema.Literal<true>>;
7743
7973
  readonly ok: Schema.Literal<true>;
7744
7974
  readonly action: Schema.Literal<"create">;
@@ -7810,16 +8040,73 @@ export declare const TddGoalResult: Schema.Union<readonly [Schema.Struct<{
7810
8040
  readonly createdAt: Schema.String;
7811
8041
  }>>;
7812
8042
  }>>;
7813
- }>, Schema.Struct<{
8043
+ }>]>, Schema.Struct<{
7814
8044
  readonly ok: Schema.Literal<false>;
7815
- readonly error: Schema.StructWithRest<Schema.Struct<{
7816
- readonly _tag: Schema.String;
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;
7817
8098
  readonly remediation: Schema.Struct<{
7818
8099
  readonly hint: Schema.String;
7819
8100
  readonly suggestedTool: Schema.optionalKey<Schema.String>;
7820
8101
  readonly suggestedArgs: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>;
7821
8102
  }>;
7822
- }>, readonly [Schema.$Record<Schema.String, Schema.Unknown>]>;
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
+ }>]>;
7823
8110
  }>]>;
7824
8111
  /**
7825
8112
  * The decoded {@link TddGoalResult}.
@@ -7887,7 +8174,7 @@ export declare const tddGoalTool: import("@effected/mcp").UnionTool<"tdd_goal",
7887
8174
  }>, Schema.Struct<{
7888
8175
  readonly action: Schema.Literal<"list">;
7889
8176
  readonly tddTaskId: Schema.Finite;
7890
- }>]>, Schema.Union<readonly [Schema.Struct<{
8177
+ }>]>, Schema.Union<readonly [Schema.Union<readonly [Schema.Struct<{
7891
8178
  readonly _idempotentReplay: Schema.optionalKey<Schema.Literal<true>>;
7892
8179
  readonly ok: Schema.Literal<true>;
7893
8180
  readonly action: Schema.Literal<"create">;
@@ -7959,16 +8246,73 @@ export declare const tddGoalTool: import("@effected/mcp").UnionTool<"tdd_goal",
7959
8246
  readonly createdAt: Schema.String;
7960
8247
  }>>;
7961
8248
  }>>;
7962
- }>, Schema.Struct<{
8249
+ }>]>, Schema.Struct<{
7963
8250
  readonly ok: Schema.Literal<false>;
7964
- readonly error: Schema.StructWithRest<Schema.Struct<{
7965
- readonly _tag: Schema.String;
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;
7966
8304
  readonly remediation: Schema.Struct<{
7967
8305
  readonly hint: Schema.String;
7968
8306
  readonly suggestedTool: Schema.optionalKey<Schema.String>;
7969
8307
  readonly suggestedArgs: Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>;
7970
8308
  }>;
7971
- }>, readonly [Schema.$Record<Schema.String, Schema.Unknown>]>;
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
+ }>]>;
7972
8316
  }>]>, typeof ToolRefusal$1, DataReader | DataStore>;
7973
8317
  /**
7974
8318
  * The `tdd_task` tool's success payload.