summaryrefslogtreecommitdiffhomepage
path: root/packages/transport-contract
diff options
context:
space:
mode:
authorAdam Malczewski <[email protected]>2026-06-12 19:26:31 +0900
committerAdam Malczewski <[email protected]>2026-06-12 19:26:31 +0900
commit35197ed933044d322d0a653c4e88a5f3e475fe76 (patch)
treef768be26a61b28551a0671f2519c3da4ff682a1f /packages/transport-contract
parentdbf77ba78ff840e0ed5f6294030523fe3ab121fa (diff)
downloaddispatch-35197ed933044d322d0a653c4e88a5f3e475fe76.tar.gz
dispatch-35197ed933044d322d0a653c4e88a5f3e475fe76.zip
feat(contracts): reasoning effort — ReasoningEffort ladder (low..max), ProviderStreamOptions/ChatRequest fields, per-conversation GET/PUT types
wire 0.6.1->0.7.0, transport-contract 0.10.0->0.11.0. Additive only; typecheck+biome clean.
Diffstat (limited to 'packages/transport-contract')
-rw-r--r--packages/transport-contract/package.json2
-rw-r--r--packages/transport-contract/src/index.ts40
2 files changed, 39 insertions, 3 deletions
diff --git a/packages/transport-contract/package.json b/packages/transport-contract/package.json
index 84ceada..3a0a983 100644
--- a/packages/transport-contract/package.json
+++ b/packages/transport-contract/package.json
@@ -1,6 +1,6 @@
{
"name": "@dispatch/transport-contract",
- "version": "0.10.0",
+ "version": "0.11.0",
"type": "module",
"private": true,
"main": "dist/index.js",
diff --git a/packages/transport-contract/src/index.ts b/packages/transport-contract/src/index.ts
index b0f6e20..e992f8b 100644
--- a/packages/transport-contract/src/index.ts
+++ b/packages/transport-contract/src/index.ts
@@ -20,9 +20,15 @@
*/
import type { SurfaceClientMessage, SurfaceServerMessage } from "@dispatch/ui-contract";
-import type { AgentEvent, StoredChunk, TurnMetrics } from "@dispatch/wire";
+import type { AgentEvent, ReasoningEffort, StoredChunk, TurnMetrics } from "@dispatch/wire";
-export type { AgentEvent, StepMetrics, StoredChunk, TurnMetrics } from "@dispatch/wire";
+export type {
+ AgentEvent,
+ ReasoningEffort,
+ StepMetrics,
+ StoredChunk,
+ TurnMetrics,
+} from "@dispatch/wire";
/**
* Request body for `POST /chat` (sent as JSON).
@@ -54,6 +60,14 @@ export interface ChatRequest {
* prompt (so it does not affect prompt caching).
*/
readonly cwd?: string;
+
+ /**
+ * Reasoning-effort override for THIS turn only (does not persist). When
+ * omitted, the server resolves the conversation's persisted value, falling
+ * back to `"high"`. Must be one of the `ReasoningEffort` levels; an
+ * unrecognized value → HTTP 400 `{ error }`.
+ */
+ readonly reasoningEffort?: ReasoningEffort;
}
/**
@@ -191,6 +205,28 @@ export interface SetCwdRequest {
readonly cwd: string;
}
+// ─── Per-conversation reasoning effort ────────────────────────────────────────
+
+/**
+ * Response of `GET /conversations/:id/reasoning-effort`. `reasoningEffort` is
+ * null when never set (the server then resolves turns at the default,
+ * `"high"`).
+ */
+export interface ReasoningEffortResponse {
+ readonly conversationId: string;
+ readonly reasoningEffort: ReasoningEffort | null;
+}
+
+/**
+ * Body of `PUT /conversations/:id/reasoning-effort` — persists the
+ * conversation's sticky reasoning-effort level (used for every later turn that
+ * does not carry a per-turn `ChatRequest.reasoningEffort` override). An
+ * unrecognized level → HTTP 400 `{ error }`.
+ */
+export interface SetReasoningEffortRequest {
+ readonly reasoningEffort: ReasoningEffort;
+}
+
// ─── Conversation close (explicit tab close) ──────────────────────────────────
/**