@byok-sdk/protocol 0.1.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.
@@ -0,0 +1,725 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * HTTP-side request/response shapes for the reference server's auth and blob
4
+ * endpoints (M1 Part B). These are plain HTTP bodies, not wire envelopes —
5
+ * kept in a separate module from `envelope.ts`/`messages.ts` because they
6
+ * never travel over the WSS connection. Documented in full in
7
+ * docs/protocol.md ("Auth flows", "Blob flows", "Long-poll fallback").
8
+ *
9
+ * The wire protocol version (`v:1`) is unaffected by any of this: pairing,
10
+ * token renewal, and blob transfer are out-of-band HTTP calls that happen
11
+ * before/alongside the WSS connection, not envelope types.
12
+ */
13
+ export declare const PairRequestSchema: z.ZodObject<{
14
+ pairingCode: z.ZodString;
15
+ deviceName: z.ZodString;
16
+ devicePublicKey: z.ZodString;
17
+ }, z.core.$strip>;
18
+ export type PairRequest = z.infer<typeof PairRequestSchema>;
19
+ export declare const PairResponseSchema: z.ZodObject<{
20
+ deviceId: z.ZodString;
21
+ accessToken: z.ZodString;
22
+ refreshHint: z.ZodOptional<z.ZodString>;
23
+ }, z.core.$strip>;
24
+ export type PairResponse = z.infer<typeof PairResponseSchema>;
25
+ export declare const ChallengeRequestSchema: z.ZodObject<{
26
+ deviceId: z.ZodString;
27
+ }, z.core.$strip>;
28
+ export type ChallengeRequest = z.infer<typeof ChallengeRequestSchema>;
29
+ export declare const ChallengeResponseSchema: z.ZodObject<{
30
+ nonce: z.ZodString;
31
+ }, z.core.$strip>;
32
+ export type ChallengeResponse = z.infer<typeof ChallengeResponseSchema>;
33
+ export declare const TokenRequestSchema: z.ZodObject<{
34
+ deviceId: z.ZodString;
35
+ nonce: z.ZodString;
36
+ signature: z.ZodString;
37
+ }, z.core.$strip>;
38
+ export type TokenRequest = z.infer<typeof TokenRequestSchema>;
39
+ export declare const TokenResponseSchema: z.ZodObject<{
40
+ accessToken: z.ZodString;
41
+ expiresAt: z.ZodISODateTime;
42
+ }, z.core.$strip>;
43
+ export type TokenResponse = z.infer<typeof TokenResponseSchema>;
44
+ /**
45
+ * Revocation is server-side only (dashboard/API call on the SaaS's own
46
+ * device registry) — there is no wire message for it. A revoked device's
47
+ * next `/byok/challenge` or `/byok/token` call (or WSS connect) gets a 401;
48
+ * the daemon's only recourse is to re-run `/byok/pair` from scratch.
49
+ */
50
+ /** POST /byok/blobs request: declare a blob before uploading it. `contentHash` must be the canonical `sha256:<64 lowercase hex>` form (finding F9) — the server rejects anything else outright, no normalization. */
51
+ export declare const CreateBlobRequestSchema: z.ZodObject<{
52
+ size: z.ZodNumber;
53
+ contentType: z.ZodString;
54
+ contentHash: z.ZodString;
55
+ }, z.core.$strip>;
56
+ export type CreateBlobRequest = z.infer<typeof CreateBlobRequestSchema>;
57
+ /** POST /byok/blobs response: presigned PUT target for the declared blob. */
58
+ export declare const CreateBlobResponseSchema: z.ZodObject<{
59
+ blobId: z.ZodString;
60
+ uploadUrl: z.ZodString;
61
+ }, z.core.$strip>;
62
+ export type CreateBlobResponse = z.infer<typeof CreateBlobResponseSchema>;
63
+ /** GET /byok/blobs/:id/url response: presigned GET target for an existing blob. */
64
+ export declare const BlobDownloadUrlResponseSchema: z.ZodObject<{
65
+ downloadUrl: z.ZodString;
66
+ }, z.core.$strip>;
67
+ export type BlobDownloadUrlResponse = z.infer<typeof BlobDownloadUrlResponseSchema>;
68
+ export declare const EventsPollQuerySchema: z.ZodObject<{
69
+ cursor: z.ZodOptional<z.ZodNumber>;
70
+ }, z.core.$strip>;
71
+ export type EventsPollQuery = z.infer<typeof EventsPollQuerySchema>;
72
+ export declare const EventsPollResponseSchema: z.ZodObject<{
73
+ events: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
74
+ v: z.ZodNumber;
75
+ id: z.ZodUUID;
76
+ ts: z.ZodISODateTime;
77
+ type: z.ZodLiteral<"conn.hello">;
78
+ task_id: z.ZodOptional<z.ZodString>;
79
+ session_ref: z.ZodOptional<z.ZodString>;
80
+ seq: z.ZodOptional<z.ZodNumber>;
81
+ payload: z.ZodObject<{
82
+ protocolVersions: z.ZodArray<z.ZodNumber>;
83
+ capabilities: z.ZodArray<z.ZodString>;
84
+ deviceId: z.ZodString;
85
+ productId: z.ZodString;
86
+ runtimes: z.ZodOptional<z.ZodArray<z.ZodObject<{
87
+ id: z.ZodEnum<{
88
+ claude: "claude";
89
+ codex: "codex";
90
+ pi: "pi";
91
+ }>;
92
+ version: z.ZodOptional<z.ZodString>;
93
+ authPresent: z.ZodOptional<z.ZodBoolean>;
94
+ capabilities: z.ZodOptional<z.ZodObject<{
95
+ steer: z.ZodOptional<z.ZodBoolean>;
96
+ resume: z.ZodOptional<z.ZodBoolean>;
97
+ approvalInteractive: z.ZodOptional<z.ZodBoolean>;
98
+ permissionModes: z.ZodOptional<z.ZodArray<z.ZodString>>;
99
+ }, z.core.$strip>>;
100
+ }, z.core.$strip>>>;
101
+ cursor: z.ZodOptional<z.ZodNumber>;
102
+ }, z.core.$strip>;
103
+ }, z.core.$strip>, z.ZodObject<{
104
+ v: z.ZodNumber;
105
+ id: z.ZodUUID;
106
+ ts: z.ZodISODateTime;
107
+ type: z.ZodLiteral<"conn.ack">;
108
+ task_id: z.ZodOptional<z.ZodString>;
109
+ session_ref: z.ZodOptional<z.ZodString>;
110
+ seq: z.ZodNumber;
111
+ payload: z.ZodObject<{
112
+ protocolVersion: z.ZodNumber;
113
+ capabilities: z.ZodArray<z.ZodString>;
114
+ serverTime: z.ZodISODateTime;
115
+ }, z.core.$strip>;
116
+ }, z.core.$strip>, z.ZodObject<{
117
+ v: z.ZodNumber;
118
+ id: z.ZodUUID;
119
+ ts: z.ZodISODateTime;
120
+ type: z.ZodLiteral<"task.offer">;
121
+ task_id: z.ZodString;
122
+ session_ref: z.ZodOptional<z.ZodString>;
123
+ seq: z.ZodNumber;
124
+ payload: z.ZodObject<{
125
+ instruction: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
126
+ blobRef: z.ZodObject<{
127
+ blobId: z.ZodString;
128
+ contentHash: z.ZodString;
129
+ size: z.ZodNumber;
130
+ contentType: z.ZodString;
131
+ url: z.ZodOptional<z.ZodString>;
132
+ }, z.core.$strip>;
133
+ }, z.core.$strict>]>;
134
+ policy: z.ZodObject<{
135
+ mode: z.ZodEnum<{
136
+ auto: "auto";
137
+ confirm: "confirm";
138
+ plan: "plan";
139
+ readonly: "readonly";
140
+ }>;
141
+ allowTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
142
+ denyTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
143
+ workspaceRoot: z.ZodOptional<z.ZodString>;
144
+ network: z.ZodOptional<z.ZodBoolean>;
145
+ }, z.core.$strict>;
146
+ runtime: z.ZodOptional<z.ZodEnum<{
147
+ claude: "claude";
148
+ codex: "codex";
149
+ pi: "pi";
150
+ }>>;
151
+ sessionRef: z.ZodOptional<z.ZodString>;
152
+ workspaceHint: z.ZodOptional<z.ZodString>;
153
+ limits: z.ZodOptional<z.ZodObject<{
154
+ maxDurationMs: z.ZodOptional<z.ZodNumber>;
155
+ maxTokens: z.ZodOptional<z.ZodNumber>;
156
+ }, z.core.$strip>>;
157
+ }, z.core.$strip>;
158
+ }, z.core.$strip>, z.ZodObject<{
159
+ v: z.ZodNumber;
160
+ id: z.ZodUUID;
161
+ ts: z.ZodISODateTime;
162
+ type: z.ZodLiteral<"task.approve">;
163
+ task_id: z.ZodString;
164
+ session_ref: z.ZodOptional<z.ZodString>;
165
+ seq: z.ZodNumber;
166
+ payload: z.ZodObject<{
167
+ approvalId: z.ZodOptional<z.ZodString>;
168
+ }, z.core.$strip>;
169
+ }, z.core.$strip>, z.ZodObject<{
170
+ v: z.ZodNumber;
171
+ id: z.ZodUUID;
172
+ ts: z.ZodISODateTime;
173
+ type: z.ZodLiteral<"task.reject">;
174
+ task_id: z.ZodString;
175
+ session_ref: z.ZodOptional<z.ZodString>;
176
+ seq: z.ZodNumber;
177
+ payload: z.ZodObject<{
178
+ reason: z.ZodOptional<z.ZodString>;
179
+ approvalId: z.ZodOptional<z.ZodString>;
180
+ }, z.core.$strip>;
181
+ }, z.core.$strip>, z.ZodObject<{
182
+ v: z.ZodNumber;
183
+ id: z.ZodUUID;
184
+ ts: z.ZodISODateTime;
185
+ type: z.ZodLiteral<"task.cancel">;
186
+ task_id: z.ZodString;
187
+ session_ref: z.ZodOptional<z.ZodString>;
188
+ seq: z.ZodNumber;
189
+ payload: z.ZodObject<{
190
+ reason: z.ZodOptional<z.ZodString>;
191
+ }, z.core.$strip>;
192
+ }, z.core.$strip>, z.ZodObject<{
193
+ v: z.ZodNumber;
194
+ id: z.ZodUUID;
195
+ ts: z.ZodISODateTime;
196
+ type: z.ZodLiteral<"task.steer">;
197
+ task_id: z.ZodString;
198
+ session_ref: z.ZodOptional<z.ZodString>;
199
+ seq: z.ZodNumber;
200
+ payload: z.ZodObject<{
201
+ text: z.ZodString;
202
+ }, z.core.$strip>;
203
+ }, z.core.$strip>, z.ZodObject<{
204
+ v: z.ZodNumber;
205
+ id: z.ZodUUID;
206
+ ts: z.ZodISODateTime;
207
+ type: z.ZodLiteral<"task.claim">;
208
+ task_id: z.ZodString;
209
+ session_ref: z.ZodOptional<z.ZodString>;
210
+ seq: z.ZodOptional<z.ZodNumber>;
211
+ payload: z.ZodObject<{
212
+ deviceId: z.ZodString;
213
+ agentId: z.ZodOptional<z.ZodString>;
214
+ runtime: z.ZodOptional<z.ZodEnum<{
215
+ claude: "claude";
216
+ codex: "codex";
217
+ pi: "pi";
218
+ }>>;
219
+ capabilities: z.ZodOptional<z.ZodObject<{
220
+ steer: z.ZodOptional<z.ZodBoolean>;
221
+ resume: z.ZodOptional<z.ZodBoolean>;
222
+ approvalInteractive: z.ZodOptional<z.ZodBoolean>;
223
+ permissionModes: z.ZodOptional<z.ZodArray<z.ZodString>>;
224
+ }, z.core.$strip>>;
225
+ }, z.core.$strip>;
226
+ }, z.core.$strip>, z.ZodObject<{
227
+ v: z.ZodNumber;
228
+ id: z.ZodUUID;
229
+ ts: z.ZodISODateTime;
230
+ type: z.ZodLiteral<"task.started">;
231
+ task_id: z.ZodString;
232
+ session_ref: z.ZodOptional<z.ZodString>;
233
+ seq: z.ZodOptional<z.ZodNumber>;
234
+ payload: z.ZodObject<{}, z.core.$strip>;
235
+ }, z.core.$strip>, z.ZodObject<{
236
+ v: z.ZodNumber;
237
+ id: z.ZodUUID;
238
+ ts: z.ZodISODateTime;
239
+ type: z.ZodLiteral<"task.decline">;
240
+ task_id: z.ZodString;
241
+ session_ref: z.ZodOptional<z.ZodString>;
242
+ seq: z.ZodOptional<z.ZodNumber>;
243
+ payload: z.ZodObject<{
244
+ reason: z.ZodString;
245
+ retryable: z.ZodOptional<z.ZodBoolean>;
246
+ }, z.core.$strip>;
247
+ }, z.core.$strip>, z.ZodObject<{
248
+ v: z.ZodNumber;
249
+ id: z.ZodUUID;
250
+ ts: z.ZodISODateTime;
251
+ type: z.ZodLiteral<"task.progress">;
252
+ task_id: z.ZodString;
253
+ session_ref: z.ZodOptional<z.ZodString>;
254
+ seq: z.ZodOptional<z.ZodNumber>;
255
+ payload: z.ZodObject<{
256
+ seq: z.ZodNumber;
257
+ events: z.ZodArray<z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
258
+ type: z.ZodLiteral<"progress">;
259
+ text: z.ZodString;
260
+ }, z.core.$strip>, z.ZodObject<{
261
+ type: z.ZodLiteral<"tool_use">;
262
+ tool: z.ZodString;
263
+ input: z.ZodOptional<z.ZodUnknown>;
264
+ }, z.core.$strip>, z.ZodObject<{
265
+ type: z.ZodLiteral<"tool_result">;
266
+ tool: z.ZodString;
267
+ output: z.ZodOptional<z.ZodUnknown>;
268
+ }, z.core.$strip>, z.ZodObject<{
269
+ type: z.ZodLiteral<"artifact">;
270
+ name: z.ZodString;
271
+ contentType: z.ZodString;
272
+ }, z.core.$strip>, z.ZodObject<{
273
+ type: z.ZodLiteral<"needs_approval">;
274
+ summary: z.ZodString;
275
+ }, z.core.$strip>, z.ZodObject<{
276
+ type: z.ZodLiteral<"turn_end">;
277
+ }, z.core.$strip>, z.ZodObject<{
278
+ type: z.ZodLiteral<"error">;
279
+ message: z.ZodString;
280
+ }, z.core.$strip>, z.ZodObject<{
281
+ type: z.ZodLiteral<"usage">;
282
+ inputTokens: z.ZodOptional<z.ZodNumber>;
283
+ cachedInputTokens: z.ZodOptional<z.ZodNumber>;
284
+ outputTokens: z.ZodOptional<z.ZodNumber>;
285
+ reasoningTokens: z.ZodOptional<z.ZodNumber>;
286
+ totalTokens: z.ZodOptional<z.ZodNumber>;
287
+ }, z.core.$strip>], "type">, z.ZodObject<{
288
+ type: z.ZodString;
289
+ }, z.core.$loose>]>>;
290
+ }, z.core.$strip>;
291
+ }, z.core.$strip>, z.ZodObject<{
292
+ v: z.ZodNumber;
293
+ id: z.ZodUUID;
294
+ ts: z.ZodISODateTime;
295
+ type: z.ZodLiteral<"task.artifact">;
296
+ task_id: z.ZodString;
297
+ session_ref: z.ZodOptional<z.ZodString>;
298
+ seq: z.ZodOptional<z.ZodNumber>;
299
+ payload: z.ZodObject<{
300
+ name: z.ZodString;
301
+ contentType: z.ZodString;
302
+ inline: z.ZodOptional<z.ZodString>;
303
+ blobRef: z.ZodOptional<z.ZodObject<{
304
+ blobId: z.ZodString;
305
+ contentHash: z.ZodString;
306
+ size: z.ZodNumber;
307
+ contentType: z.ZodString;
308
+ url: z.ZodOptional<z.ZodString>;
309
+ }, z.core.$strip>>;
310
+ }, z.core.$strip>;
311
+ }, z.core.$strip>, z.ZodObject<{
312
+ v: z.ZodNumber;
313
+ id: z.ZodUUID;
314
+ ts: z.ZodISODateTime;
315
+ type: z.ZodLiteral<"task.await_approval">;
316
+ task_id: z.ZodString;
317
+ session_ref: z.ZodOptional<z.ZodString>;
318
+ seq: z.ZodOptional<z.ZodNumber>;
319
+ payload: z.ZodObject<{
320
+ summary: z.ZodString;
321
+ approvalId: z.ZodOptional<z.ZodString>;
322
+ }, z.core.$strip>;
323
+ }, z.core.$strip>, z.ZodObject<{
324
+ v: z.ZodNumber;
325
+ id: z.ZodUUID;
326
+ ts: z.ZodISODateTime;
327
+ type: z.ZodLiteral<"task.complete">;
328
+ task_id: z.ZodString;
329
+ session_ref: z.ZodOptional<z.ZodString>;
330
+ seq: z.ZodOptional<z.ZodNumber>;
331
+ payload: z.ZodObject<{
332
+ summary: z.ZodString;
333
+ sessionRef: z.ZodString;
334
+ artifactRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
335
+ blobId: z.ZodString;
336
+ contentHash: z.ZodString;
337
+ size: z.ZodNumber;
338
+ contentType: z.ZodString;
339
+ url: z.ZodOptional<z.ZodString>;
340
+ }, z.core.$strip>>>;
341
+ }, z.core.$strip>;
342
+ }, z.core.$strip>, z.ZodObject<{
343
+ v: z.ZodNumber;
344
+ id: z.ZodUUID;
345
+ ts: z.ZodISODateTime;
346
+ type: z.ZodLiteral<"task.fail">;
347
+ task_id: z.ZodString;
348
+ session_ref: z.ZodOptional<z.ZodString>;
349
+ seq: z.ZodOptional<z.ZodNumber>;
350
+ payload: z.ZodObject<{
351
+ reason: z.ZodString;
352
+ retryable: z.ZodOptional<z.ZodBoolean>;
353
+ }, z.core.$strip>;
354
+ }, z.core.$strip>, z.ZodObject<{
355
+ v: z.ZodNumber;
356
+ id: z.ZodUUID;
357
+ ts: z.ZodISODateTime;
358
+ type: z.ZodLiteral<"task.cancelled">;
359
+ task_id: z.ZodString;
360
+ session_ref: z.ZodOptional<z.ZodString>;
361
+ seq: z.ZodOptional<z.ZodNumber>;
362
+ payload: z.ZodObject<{
363
+ reason: z.ZodOptional<z.ZodString>;
364
+ }, z.core.$strip>;
365
+ }, z.core.$strip>, z.ZodObject<{
366
+ v: z.ZodNumber;
367
+ id: z.ZodUUID;
368
+ ts: z.ZodISODateTime;
369
+ type: z.ZodLiteral<"task.approval_resolved">;
370
+ task_id: z.ZodString;
371
+ session_ref: z.ZodOptional<z.ZodString>;
372
+ seq: z.ZodOptional<z.ZodNumber>;
373
+ payload: z.ZodObject<{
374
+ approvalId: z.ZodString;
375
+ decision: z.ZodEnum<{
376
+ approve: "approve";
377
+ reject: "reject";
378
+ }>;
379
+ resolvedBy: z.ZodEnum<{
380
+ local: "local";
381
+ }>;
382
+ at: z.ZodISODateTime;
383
+ }, z.core.$strip>;
384
+ }, z.core.$strip>], "type">>;
385
+ cursor: z.ZodNumber;
386
+ }, z.core.$strip>;
387
+ export type EventsPollResponse = z.infer<typeof EventsPollResponseSchema>;
388
+ /**
389
+ * Batch size ceiling for a single `POST /byok/messages` call — generous for
390
+ * normal redelivery-catchup bursts, but bounded so one request can't force
391
+ * the server to process an unbounded batch. Exported (not just a local
392
+ * const) so the client's own outbound drain (`ConnectionManager.drainOutbox`,
393
+ * finding P1) can chunk against the exact same number instead of a
394
+ * hard-coded, driftable copy of it.
395
+ */
396
+ export declare const MAX_MESSAGES_PER_BATCH = 256;
397
+ export declare const MessagesSendRequestSchema: z.ZodObject<{
398
+ messages: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
399
+ v: z.ZodNumber;
400
+ id: z.ZodUUID;
401
+ ts: z.ZodISODateTime;
402
+ type: z.ZodLiteral<"conn.hello">;
403
+ task_id: z.ZodOptional<z.ZodString>;
404
+ session_ref: z.ZodOptional<z.ZodString>;
405
+ seq: z.ZodOptional<z.ZodNumber>;
406
+ payload: z.ZodObject<{
407
+ protocolVersions: z.ZodArray<z.ZodNumber>;
408
+ capabilities: z.ZodArray<z.ZodString>;
409
+ deviceId: z.ZodString;
410
+ productId: z.ZodString;
411
+ runtimes: z.ZodOptional<z.ZodArray<z.ZodObject<{
412
+ id: z.ZodEnum<{
413
+ claude: "claude";
414
+ codex: "codex";
415
+ pi: "pi";
416
+ }>;
417
+ version: z.ZodOptional<z.ZodString>;
418
+ authPresent: z.ZodOptional<z.ZodBoolean>;
419
+ capabilities: z.ZodOptional<z.ZodObject<{
420
+ steer: z.ZodOptional<z.ZodBoolean>;
421
+ resume: z.ZodOptional<z.ZodBoolean>;
422
+ approvalInteractive: z.ZodOptional<z.ZodBoolean>;
423
+ permissionModes: z.ZodOptional<z.ZodArray<z.ZodString>>;
424
+ }, z.core.$strip>>;
425
+ }, z.core.$strip>>>;
426
+ cursor: z.ZodOptional<z.ZodNumber>;
427
+ }, z.core.$strip>;
428
+ }, z.core.$strip>, z.ZodObject<{
429
+ v: z.ZodNumber;
430
+ id: z.ZodUUID;
431
+ ts: z.ZodISODateTime;
432
+ type: z.ZodLiteral<"conn.ack">;
433
+ task_id: z.ZodOptional<z.ZodString>;
434
+ session_ref: z.ZodOptional<z.ZodString>;
435
+ seq: z.ZodNumber;
436
+ payload: z.ZodObject<{
437
+ protocolVersion: z.ZodNumber;
438
+ capabilities: z.ZodArray<z.ZodString>;
439
+ serverTime: z.ZodISODateTime;
440
+ }, z.core.$strip>;
441
+ }, z.core.$strip>, z.ZodObject<{
442
+ v: z.ZodNumber;
443
+ id: z.ZodUUID;
444
+ ts: z.ZodISODateTime;
445
+ type: z.ZodLiteral<"task.offer">;
446
+ task_id: z.ZodString;
447
+ session_ref: z.ZodOptional<z.ZodString>;
448
+ seq: z.ZodNumber;
449
+ payload: z.ZodObject<{
450
+ instruction: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
451
+ blobRef: z.ZodObject<{
452
+ blobId: z.ZodString;
453
+ contentHash: z.ZodString;
454
+ size: z.ZodNumber;
455
+ contentType: z.ZodString;
456
+ url: z.ZodOptional<z.ZodString>;
457
+ }, z.core.$strip>;
458
+ }, z.core.$strict>]>;
459
+ policy: z.ZodObject<{
460
+ mode: z.ZodEnum<{
461
+ auto: "auto";
462
+ confirm: "confirm";
463
+ plan: "plan";
464
+ readonly: "readonly";
465
+ }>;
466
+ allowTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
467
+ denyTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
468
+ workspaceRoot: z.ZodOptional<z.ZodString>;
469
+ network: z.ZodOptional<z.ZodBoolean>;
470
+ }, z.core.$strict>;
471
+ runtime: z.ZodOptional<z.ZodEnum<{
472
+ claude: "claude";
473
+ codex: "codex";
474
+ pi: "pi";
475
+ }>>;
476
+ sessionRef: z.ZodOptional<z.ZodString>;
477
+ workspaceHint: z.ZodOptional<z.ZodString>;
478
+ limits: z.ZodOptional<z.ZodObject<{
479
+ maxDurationMs: z.ZodOptional<z.ZodNumber>;
480
+ maxTokens: z.ZodOptional<z.ZodNumber>;
481
+ }, z.core.$strip>>;
482
+ }, z.core.$strip>;
483
+ }, z.core.$strip>, z.ZodObject<{
484
+ v: z.ZodNumber;
485
+ id: z.ZodUUID;
486
+ ts: z.ZodISODateTime;
487
+ type: z.ZodLiteral<"task.approve">;
488
+ task_id: z.ZodString;
489
+ session_ref: z.ZodOptional<z.ZodString>;
490
+ seq: z.ZodNumber;
491
+ payload: z.ZodObject<{
492
+ approvalId: z.ZodOptional<z.ZodString>;
493
+ }, z.core.$strip>;
494
+ }, z.core.$strip>, z.ZodObject<{
495
+ v: z.ZodNumber;
496
+ id: z.ZodUUID;
497
+ ts: z.ZodISODateTime;
498
+ type: z.ZodLiteral<"task.reject">;
499
+ task_id: z.ZodString;
500
+ session_ref: z.ZodOptional<z.ZodString>;
501
+ seq: z.ZodNumber;
502
+ payload: z.ZodObject<{
503
+ reason: z.ZodOptional<z.ZodString>;
504
+ approvalId: z.ZodOptional<z.ZodString>;
505
+ }, z.core.$strip>;
506
+ }, z.core.$strip>, z.ZodObject<{
507
+ v: z.ZodNumber;
508
+ id: z.ZodUUID;
509
+ ts: z.ZodISODateTime;
510
+ type: z.ZodLiteral<"task.cancel">;
511
+ task_id: z.ZodString;
512
+ session_ref: z.ZodOptional<z.ZodString>;
513
+ seq: z.ZodNumber;
514
+ payload: z.ZodObject<{
515
+ reason: z.ZodOptional<z.ZodString>;
516
+ }, z.core.$strip>;
517
+ }, z.core.$strip>, z.ZodObject<{
518
+ v: z.ZodNumber;
519
+ id: z.ZodUUID;
520
+ ts: z.ZodISODateTime;
521
+ type: z.ZodLiteral<"task.steer">;
522
+ task_id: z.ZodString;
523
+ session_ref: z.ZodOptional<z.ZodString>;
524
+ seq: z.ZodNumber;
525
+ payload: z.ZodObject<{
526
+ text: z.ZodString;
527
+ }, z.core.$strip>;
528
+ }, z.core.$strip>, z.ZodObject<{
529
+ v: z.ZodNumber;
530
+ id: z.ZodUUID;
531
+ ts: z.ZodISODateTime;
532
+ type: z.ZodLiteral<"task.claim">;
533
+ task_id: z.ZodString;
534
+ session_ref: z.ZodOptional<z.ZodString>;
535
+ seq: z.ZodOptional<z.ZodNumber>;
536
+ payload: z.ZodObject<{
537
+ deviceId: z.ZodString;
538
+ agentId: z.ZodOptional<z.ZodString>;
539
+ runtime: z.ZodOptional<z.ZodEnum<{
540
+ claude: "claude";
541
+ codex: "codex";
542
+ pi: "pi";
543
+ }>>;
544
+ capabilities: z.ZodOptional<z.ZodObject<{
545
+ steer: z.ZodOptional<z.ZodBoolean>;
546
+ resume: z.ZodOptional<z.ZodBoolean>;
547
+ approvalInteractive: z.ZodOptional<z.ZodBoolean>;
548
+ permissionModes: z.ZodOptional<z.ZodArray<z.ZodString>>;
549
+ }, z.core.$strip>>;
550
+ }, z.core.$strip>;
551
+ }, z.core.$strip>, z.ZodObject<{
552
+ v: z.ZodNumber;
553
+ id: z.ZodUUID;
554
+ ts: z.ZodISODateTime;
555
+ type: z.ZodLiteral<"task.started">;
556
+ task_id: z.ZodString;
557
+ session_ref: z.ZodOptional<z.ZodString>;
558
+ seq: z.ZodOptional<z.ZodNumber>;
559
+ payload: z.ZodObject<{}, z.core.$strip>;
560
+ }, z.core.$strip>, z.ZodObject<{
561
+ v: z.ZodNumber;
562
+ id: z.ZodUUID;
563
+ ts: z.ZodISODateTime;
564
+ type: z.ZodLiteral<"task.decline">;
565
+ task_id: z.ZodString;
566
+ session_ref: z.ZodOptional<z.ZodString>;
567
+ seq: z.ZodOptional<z.ZodNumber>;
568
+ payload: z.ZodObject<{
569
+ reason: z.ZodString;
570
+ retryable: z.ZodOptional<z.ZodBoolean>;
571
+ }, z.core.$strip>;
572
+ }, z.core.$strip>, z.ZodObject<{
573
+ v: z.ZodNumber;
574
+ id: z.ZodUUID;
575
+ ts: z.ZodISODateTime;
576
+ type: z.ZodLiteral<"task.progress">;
577
+ task_id: z.ZodString;
578
+ session_ref: z.ZodOptional<z.ZodString>;
579
+ seq: z.ZodOptional<z.ZodNumber>;
580
+ payload: z.ZodObject<{
581
+ seq: z.ZodNumber;
582
+ events: z.ZodArray<z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
583
+ type: z.ZodLiteral<"progress">;
584
+ text: z.ZodString;
585
+ }, z.core.$strip>, z.ZodObject<{
586
+ type: z.ZodLiteral<"tool_use">;
587
+ tool: z.ZodString;
588
+ input: z.ZodOptional<z.ZodUnknown>;
589
+ }, z.core.$strip>, z.ZodObject<{
590
+ type: z.ZodLiteral<"tool_result">;
591
+ tool: z.ZodString;
592
+ output: z.ZodOptional<z.ZodUnknown>;
593
+ }, z.core.$strip>, z.ZodObject<{
594
+ type: z.ZodLiteral<"artifact">;
595
+ name: z.ZodString;
596
+ contentType: z.ZodString;
597
+ }, z.core.$strip>, z.ZodObject<{
598
+ type: z.ZodLiteral<"needs_approval">;
599
+ summary: z.ZodString;
600
+ }, z.core.$strip>, z.ZodObject<{
601
+ type: z.ZodLiteral<"turn_end">;
602
+ }, z.core.$strip>, z.ZodObject<{
603
+ type: z.ZodLiteral<"error">;
604
+ message: z.ZodString;
605
+ }, z.core.$strip>, z.ZodObject<{
606
+ type: z.ZodLiteral<"usage">;
607
+ inputTokens: z.ZodOptional<z.ZodNumber>;
608
+ cachedInputTokens: z.ZodOptional<z.ZodNumber>;
609
+ outputTokens: z.ZodOptional<z.ZodNumber>;
610
+ reasoningTokens: z.ZodOptional<z.ZodNumber>;
611
+ totalTokens: z.ZodOptional<z.ZodNumber>;
612
+ }, z.core.$strip>], "type">, z.ZodObject<{
613
+ type: z.ZodString;
614
+ }, z.core.$loose>]>>;
615
+ }, z.core.$strip>;
616
+ }, z.core.$strip>, z.ZodObject<{
617
+ v: z.ZodNumber;
618
+ id: z.ZodUUID;
619
+ ts: z.ZodISODateTime;
620
+ type: z.ZodLiteral<"task.artifact">;
621
+ task_id: z.ZodString;
622
+ session_ref: z.ZodOptional<z.ZodString>;
623
+ seq: z.ZodOptional<z.ZodNumber>;
624
+ payload: z.ZodObject<{
625
+ name: z.ZodString;
626
+ contentType: z.ZodString;
627
+ inline: z.ZodOptional<z.ZodString>;
628
+ blobRef: z.ZodOptional<z.ZodObject<{
629
+ blobId: z.ZodString;
630
+ contentHash: z.ZodString;
631
+ size: z.ZodNumber;
632
+ contentType: z.ZodString;
633
+ url: z.ZodOptional<z.ZodString>;
634
+ }, z.core.$strip>>;
635
+ }, z.core.$strip>;
636
+ }, z.core.$strip>, z.ZodObject<{
637
+ v: z.ZodNumber;
638
+ id: z.ZodUUID;
639
+ ts: z.ZodISODateTime;
640
+ type: z.ZodLiteral<"task.await_approval">;
641
+ task_id: z.ZodString;
642
+ session_ref: z.ZodOptional<z.ZodString>;
643
+ seq: z.ZodOptional<z.ZodNumber>;
644
+ payload: z.ZodObject<{
645
+ summary: z.ZodString;
646
+ approvalId: z.ZodOptional<z.ZodString>;
647
+ }, z.core.$strip>;
648
+ }, z.core.$strip>, z.ZodObject<{
649
+ v: z.ZodNumber;
650
+ id: z.ZodUUID;
651
+ ts: z.ZodISODateTime;
652
+ type: z.ZodLiteral<"task.complete">;
653
+ task_id: z.ZodString;
654
+ session_ref: z.ZodOptional<z.ZodString>;
655
+ seq: z.ZodOptional<z.ZodNumber>;
656
+ payload: z.ZodObject<{
657
+ summary: z.ZodString;
658
+ sessionRef: z.ZodString;
659
+ artifactRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
660
+ blobId: z.ZodString;
661
+ contentHash: z.ZodString;
662
+ size: z.ZodNumber;
663
+ contentType: z.ZodString;
664
+ url: z.ZodOptional<z.ZodString>;
665
+ }, z.core.$strip>>>;
666
+ }, z.core.$strip>;
667
+ }, z.core.$strip>, z.ZodObject<{
668
+ v: z.ZodNumber;
669
+ id: z.ZodUUID;
670
+ ts: z.ZodISODateTime;
671
+ type: z.ZodLiteral<"task.fail">;
672
+ task_id: z.ZodString;
673
+ session_ref: z.ZodOptional<z.ZodString>;
674
+ seq: z.ZodOptional<z.ZodNumber>;
675
+ payload: z.ZodObject<{
676
+ reason: z.ZodString;
677
+ retryable: z.ZodOptional<z.ZodBoolean>;
678
+ }, z.core.$strip>;
679
+ }, z.core.$strip>, z.ZodObject<{
680
+ v: z.ZodNumber;
681
+ id: z.ZodUUID;
682
+ ts: z.ZodISODateTime;
683
+ type: z.ZodLiteral<"task.cancelled">;
684
+ task_id: z.ZodString;
685
+ session_ref: z.ZodOptional<z.ZodString>;
686
+ seq: z.ZodOptional<z.ZodNumber>;
687
+ payload: z.ZodObject<{
688
+ reason: z.ZodOptional<z.ZodString>;
689
+ }, z.core.$strip>;
690
+ }, z.core.$strip>, z.ZodObject<{
691
+ v: z.ZodNumber;
692
+ id: z.ZodUUID;
693
+ ts: z.ZodISODateTime;
694
+ type: z.ZodLiteral<"task.approval_resolved">;
695
+ task_id: z.ZodString;
696
+ session_ref: z.ZodOptional<z.ZodString>;
697
+ seq: z.ZodOptional<z.ZodNumber>;
698
+ payload: z.ZodObject<{
699
+ approvalId: z.ZodString;
700
+ decision: z.ZodEnum<{
701
+ approve: "approve";
702
+ reject: "reject";
703
+ }>;
704
+ resolvedBy: z.ZodEnum<{
705
+ local: "local";
706
+ }>;
707
+ at: z.ZodISODateTime;
708
+ }, z.core.$strip>;
709
+ }, z.core.$strip>], "type">>;
710
+ }, z.core.$strip>;
711
+ export type MessagesSendRequest = z.infer<typeof MessagesSendRequestSchema>;
712
+ /**
713
+ * `accepted` counts every envelope `ConnectionHub.handleInbound` returned
714
+ * `'accepted'` *or* `'duplicate'` for (finding P2) — a dedup'd replay is a
715
+ * wire-level success (§9's idempotency window), even though no handler ran
716
+ * for it a second time. `rejected` (a type outside `DAEMON_TO_SERVER_TYPES`,
717
+ * or an ownership mismatch — N2) is a separate, additive count: omitted
718
+ * entirely when zero, so a batch with nothing rejected keeps the pre-P2
719
+ * `{ accepted }` shape callers already depend on.
720
+ */
721
+ export declare const MessagesSendResponseSchema: z.ZodObject<{
722
+ accepted: z.ZodNumber;
723
+ rejected: z.ZodOptional<z.ZodNumber>;
724
+ }, z.core.$strip>;
725
+ export type MessagesSendResponse = z.infer<typeof MessagesSendResponseSchema>;