@knpkv/herdr-fleet 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/service.d.ts CHANGED
@@ -1,15 +1,60 @@
1
- import { Crypto, Effect } from "effect";
2
- import { FleetApprovalError, FleetJobNotFoundError, FleetOperationError, FleetStoreError, FleetTransitionConflictError, FleetValidationError } from "./errors.js";
3
- import { type AgentDelegate, type AgentInventory, type AgentWorkerIdentity, type CoreJobPayload, type HostDetails, type JobHash, type LocalJobPayload } from "./model.js";
1
+ import { Crypto, Effect, Schema } from "effect";
2
+ import { FleetApprovalError, FleetJobNotFoundError, FleetOperationError, FleetOperationUnavailableError, FleetStoreError, FleetTransitionConflictError, FleetValidationError } from "./errors.js";
3
+ import { type AgentDelegate, type AgentInventory, type AgentWorkerIdentity, type CoreJobPayload, type HostDetails, JobActor, type JobHash, type LocalJobPayload, type SubmissionProvenance, type WorkJobKind } from "./model.js";
4
4
  import type { JobStore } from "./store.js";
5
5
  export type { AgentInventory, AgentSummary, HostDetails } from "./model.js";
6
6
  export type WorkerStarted = (identity: AgentWorkerIdentity) => Effect.Effect<void, FleetOperationError>;
7
+ export declare const hostOperationTerminalDetailMaxLength = 20000;
8
+ export declare const HostOperationTerminal: Schema.Union<readonly [Schema.Struct<{
9
+ readonly type: Schema.Literal<"settled">;
10
+ readonly detail: Schema.String;
11
+ }>, Schema.Struct<{
12
+ readonly type: Schema.Literal<"delivery_failed">;
13
+ readonly detail: Schema.String;
14
+ }>, Schema.Struct<{
15
+ readonly type: Schema.Literal<"task_failed">;
16
+ readonly detail: Schema.String;
17
+ }>]>;
18
+ export type HostOperationTerminal = typeof HostOperationTerminal.Type;
19
+ /** Projects an authoritative coordinator detail into Fleet's bounded summary. */
20
+ export declare const summarizeHostOperationTerminalDetail: (detail: string) => string;
21
+ export type HostOperationLifecycle = {
22
+ /** Persists a durable receipt while the fleet job remains running. */
23
+ readonly accepted: (receipt: string) => Effect.Effect<void, FleetOperationError>;
24
+ /** Mirrors the authoritative durable terminal event into the fleet job. */
25
+ readonly terminal: (event: HostOperationTerminal) => Effect.Effect<void, FleetOperationError>;
26
+ };
27
+ export type ResumeHostOperation = (payload: CoreJobPayload, workerStarted: WorkerStarted, jobId: string, actor: JobActor, receipt: string | null, lifecycle: HostOperationLifecycle, persistedWorker: AgentWorkerIdentity | null) => Effect.Effect<void, FleetOperationError>;
28
+ export type HostOperationRecovery = {
29
+ /** Identifies operations whose deterministic Fleet job ID is their durable submission identity. */
30
+ readonly matches: (payload: CoreJobPayload) => boolean;
31
+ /**
32
+ * Rejoins or idempotently completes submission, including before Fleet persisted a receipt.
33
+ * A running job's exact persisted worker is supplied for authoritative replay without discovery.
34
+ * It must attach observation in its owning scope and return without waiting for terminal work.
35
+ */
36
+ readonly resume: ResumeHostOperation;
37
+ };
7
38
  export type HostOperations = {
8
39
  readonly listAgents: () => Effect.Effect<AgentInventory, FleetOperationError>;
9
40
  readonly inspect: () => Effect.Effect<HostDetails, FleetOperationError>;
10
- readonly run: (payload: CoreJobPayload, workerStarted: WorkerStarted, jobId: string) => Effect.Effect<string, FleetOperationError>;
41
+ readonly run: (payload: CoreJobPayload, workerStarted: WorkerStarted, jobId: string, actor: JobActor, lifecycle: HostOperationLifecycle, approval?: ApprovedJobIdentity | null) => Effect.Effect<string, FleetOperationError>;
11
42
  readonly runLocal: (payload: LocalJobPayload) => Effect.Effect<string, FleetOperationError>;
12
- readonly runCoordinatorChat: (payload: AgentDelegate, workerStarted: WorkerStarted, jobId: string) => Effect.Effect<string, FleetOperationError>;
43
+ readonly runCoordinatorChat: (payload: AgentDelegate, workerStarted: WorkerStarted, jobId: string, actor: JobActor, lifecycle: HostOperationLifecycle) => Effect.Effect<string, FleetOperationError>;
44
+ /** Explicit crash recovery for operations backed by another durable store. */
45
+ readonly recovery?: HostOperationRecovery;
46
+ /**
47
+ * Work job kinds this host's composed Work adapter executes. Submission
48
+ * refuses every other Work kind before an approval request exists; absent
49
+ * means the host executes none.
50
+ */
51
+ readonly workJobKinds?: ReadonlySet<WorkJobKind>;
52
+ };
53
+ /** Persisted Fleet approval, distinct from the job's submitting actor. */
54
+ export type ApprovedJobIdentity = {
55
+ readonly approvedBy: string;
56
+ readonly approvedAt: number;
57
+ readonly hash: JobHash;
13
58
  };
14
59
  export type Approval = {
15
60
  readonly hash: JobHash;
@@ -37,16 +82,140 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
37
82
  readonly kind: "agent.delegate";
38
83
  readonly repository: string;
39
84
  readonly prompt: string;
40
- readonly mode: "consult" | "review" | "work";
85
+ readonly mode: "consult" | "review" | "transition_summary" | "work";
41
86
  readonly channel?: "coordinator_chat";
42
87
  } | {
43
88
  readonly kind: "agent.message";
44
89
  readonly session: string;
45
90
  readonly message: string;
91
+ } | {
92
+ readonly kind: "work.reconcile";
93
+ readonly repository: string;
94
+ readonly pullRequest: number;
95
+ readonly goalId: string;
96
+ readonly laneId: string;
97
+ readonly operationId: string;
98
+ readonly expectedRevision: number;
99
+ readonly expectedHead: string;
100
+ readonly newHead: string;
101
+ readonly expectedOwner: {
102
+ readonly id: string;
103
+ readonly name: string;
104
+ };
105
+ readonly expectedGoalEventId: string;
106
+ readonly bindingDispatchRequestId: string;
107
+ readonly sessionId: string;
108
+ readonly expectedWork: string;
109
+ readonly worker: {
110
+ readonly host: string;
111
+ readonly agentId: string;
112
+ readonly name: string;
113
+ readonly paneId: string;
114
+ readonly relationship?: {
115
+ readonly parentAgentId: string;
116
+ readonly relation: "delegated" | "pair" | "review";
117
+ };
118
+ };
119
+ readonly worktree: string;
120
+ readonly branch: string;
121
+ } | {
122
+ readonly kind: "work.admit";
123
+ readonly repository: string;
124
+ readonly pullRequest: number;
125
+ readonly reviewUrl: string;
126
+ readonly goalId: string;
127
+ readonly laneId: string;
128
+ readonly operationId: string;
129
+ readonly expectedAbsenceToken: string;
130
+ readonly head: string;
131
+ readonly baseHead: string;
132
+ readonly owner: {
133
+ readonly id: string;
134
+ readonly name: string;
135
+ };
136
+ readonly sessionId: string;
137
+ readonly expectedWork: string;
138
+ readonly worker: {
139
+ readonly host: string;
140
+ readonly agentId: string;
141
+ readonly name: string;
142
+ readonly paneId: string;
143
+ readonly relationship?: {
144
+ readonly parentAgentId: string;
145
+ readonly relation: "delegated" | "pair" | "review";
146
+ };
147
+ };
148
+ readonly worktree: string;
149
+ readonly branch: string;
150
+ readonly title: string;
151
+ readonly summary: string;
152
+ readonly detail: string;
153
+ } | {
154
+ readonly kind: "work.recover";
155
+ readonly repository: string;
156
+ readonly pullRequest: number;
157
+ readonly reviewUrl: string;
158
+ readonly goalId: string;
159
+ readonly laneId: string;
160
+ readonly operationId: string;
161
+ readonly expectedGoalEventId: string;
162
+ readonly expectedGoalUpdatedAt: number;
163
+ readonly expectedHistoryToken: string;
164
+ readonly head: string;
165
+ readonly baseHead: string;
166
+ readonly owner: {
167
+ readonly id: string;
168
+ readonly name: string;
169
+ };
170
+ readonly sessionId: string;
171
+ readonly expectedWork: string;
172
+ readonly worker: {
173
+ readonly host: string;
174
+ readonly agentId: string;
175
+ readonly name: string;
176
+ readonly paneId: string;
177
+ readonly relationship?: {
178
+ readonly parentAgentId: string;
179
+ readonly relation: "delegated" | "pair" | "review";
180
+ };
181
+ };
182
+ readonly worktree: string;
183
+ readonly branch: string;
184
+ } | {
185
+ readonly kind: "work.reassign";
186
+ readonly goalId: string;
187
+ readonly from: {
188
+ readonly id: string;
189
+ readonly name: string;
190
+ };
191
+ readonly to: {
192
+ readonly id: string;
193
+ readonly name: string;
194
+ };
195
+ readonly toAgent: {
196
+ readonly _tag: "clear";
197
+ } | {
198
+ readonly _tag: "keep";
199
+ } | {
200
+ readonly _tag: "set";
201
+ readonly agent: {
202
+ readonly host: string;
203
+ readonly agentId: string;
204
+ readonly name: string;
205
+ readonly paneId: string;
206
+ readonly relationship?: {
207
+ readonly parentAgentId: string;
208
+ readonly relation: "delegated" | "pair" | "review";
209
+ };
210
+ };
211
+ };
212
+ readonly reason: string;
213
+ readonly expectedGoalEventId: string;
214
+ readonly expectedGoalUpdatedAt: number;
46
215
  } | {
47
216
  readonly kind: "browser.mcp.recover";
48
217
  };
49
- }, actor: string) => Effect.Effect<{
218
+ }, actor: string, provenance?: SubmissionProvenance | undefined) => Effect.Effect<{
50
219
  readonly id: string;
51
220
  readonly createdAt: number;
52
221
  readonly updatedAt: number;
@@ -69,16 +238,142 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
69
238
  readonly kind: "agent.delegate";
70
239
  readonly repository: string;
71
240
  readonly prompt: string;
72
- readonly mode: "consult" | "review" | "work";
241
+ readonly mode: "consult" | "review" | "transition_summary" | "work";
73
242
  readonly channel?: "coordinator_chat";
74
243
  } | {
75
244
  readonly kind: "agent.message";
76
245
  readonly session: string;
77
246
  readonly message: string;
247
+ } | {
248
+ readonly kind: "work.reconcile";
249
+ readonly repository: string;
250
+ readonly pullRequest: number;
251
+ readonly goalId: string;
252
+ readonly laneId: string;
253
+ readonly operationId: string;
254
+ readonly expectedRevision: number;
255
+ readonly expectedHead: string;
256
+ readonly newHead: string;
257
+ readonly expectedOwner: {
258
+ readonly id: string;
259
+ readonly name: string;
260
+ };
261
+ readonly expectedGoalEventId: string;
262
+ readonly bindingDispatchRequestId: string;
263
+ readonly sessionId: string;
264
+ readonly expectedWork: string;
265
+ readonly worker: {
266
+ readonly host: string;
267
+ readonly agentId: string;
268
+ readonly name: string;
269
+ readonly paneId: string;
270
+ readonly relationship?: {
271
+ readonly parentAgentId: string;
272
+ readonly relation: "delegated" | "pair" | "review";
273
+ };
274
+ };
275
+ readonly worktree: string;
276
+ readonly branch: string;
277
+ } | {
278
+ readonly kind: "work.admit";
279
+ readonly repository: string;
280
+ readonly pullRequest: number;
281
+ readonly reviewUrl: string;
282
+ readonly goalId: string;
283
+ readonly laneId: string;
284
+ readonly operationId: string;
285
+ readonly expectedAbsenceToken: string;
286
+ readonly head: string;
287
+ readonly baseHead: string;
288
+ readonly owner: {
289
+ readonly id: string;
290
+ readonly name: string;
291
+ };
292
+ readonly sessionId: string;
293
+ readonly expectedWork: string;
294
+ readonly worker: {
295
+ readonly host: string;
296
+ readonly agentId: string;
297
+ readonly name: string;
298
+ readonly paneId: string;
299
+ readonly relationship?: {
300
+ readonly parentAgentId: string;
301
+ readonly relation: "delegated" | "pair" | "review";
302
+ };
303
+ };
304
+ readonly worktree: string;
305
+ readonly branch: string;
306
+ readonly title: string;
307
+ readonly summary: string;
308
+ readonly detail: string;
309
+ } | {
310
+ readonly kind: "work.recover";
311
+ readonly repository: string;
312
+ readonly pullRequest: number;
313
+ readonly reviewUrl: string;
314
+ readonly goalId: string;
315
+ readonly laneId: string;
316
+ readonly operationId: string;
317
+ readonly expectedGoalEventId: string;
318
+ readonly expectedGoalUpdatedAt: number;
319
+ readonly expectedHistoryToken: string;
320
+ readonly head: string;
321
+ readonly baseHead: string;
322
+ readonly owner: {
323
+ readonly id: string;
324
+ readonly name: string;
325
+ };
326
+ readonly sessionId: string;
327
+ readonly expectedWork: string;
328
+ readonly worker: {
329
+ readonly host: string;
330
+ readonly agentId: string;
331
+ readonly name: string;
332
+ readonly paneId: string;
333
+ readonly relationship?: {
334
+ readonly parentAgentId: string;
335
+ readonly relation: "delegated" | "pair" | "review";
336
+ };
337
+ };
338
+ readonly worktree: string;
339
+ readonly branch: string;
340
+ } | {
341
+ readonly kind: "work.reassign";
342
+ readonly goalId: string;
343
+ readonly from: {
344
+ readonly id: string;
345
+ readonly name: string;
346
+ };
347
+ readonly to: {
348
+ readonly id: string;
349
+ readonly name: string;
350
+ };
351
+ readonly toAgent: {
352
+ readonly _tag: "clear";
353
+ } | {
354
+ readonly _tag: "keep";
355
+ } | {
356
+ readonly _tag: "set";
357
+ readonly agent: {
358
+ readonly host: string;
359
+ readonly agentId: string;
360
+ readonly name: string;
361
+ readonly paneId: string;
362
+ readonly relationship?: {
363
+ readonly parentAgentId: string;
364
+ readonly relation: "delegated" | "pair" | "review";
365
+ };
366
+ };
367
+ };
368
+ readonly reason: string;
369
+ readonly expectedGoalEventId: string;
370
+ readonly expectedGoalUpdatedAt: number;
78
371
  } | {
79
372
  readonly kind: "browser.mcp.recover";
80
373
  };
81
374
  readonly result: string | null;
375
+ readonly acceptedReceipt?: string | null;
376
+ readonly durableOperation?: true;
82
377
  readonly error: string | null;
83
378
  readonly worker?: {
84
379
  readonly host: string;
@@ -96,7 +391,7 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
96
391
  readonly url: string;
97
392
  };
98
393
  readonly workerTerminalObservedAt?: number | null;
99
- }, import("./errors.js").FleetJobConflictError | FleetOperationError | FleetStoreError | FleetValidationError, never>;
394
+ }, import("./errors.js").FleetJobConflictError | FleetOperationError | FleetOperationUnavailableError | FleetStoreError | FleetValidationError, never>;
100
395
  approve: (jobId: string, approval: Approval, actor: string) => Effect.Effect<{
101
396
  readonly id: string;
102
397
  readonly createdAt: number;
@@ -120,16 +415,142 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
120
415
  readonly kind: "agent.delegate";
121
416
  readonly repository: string;
122
417
  readonly prompt: string;
123
- readonly mode: "consult" | "review" | "work";
418
+ readonly mode: "consult" | "review" | "transition_summary" | "work";
124
419
  readonly channel?: "coordinator_chat";
125
420
  } | {
126
421
  readonly kind: "agent.message";
127
422
  readonly session: string;
128
423
  readonly message: string;
424
+ } | {
425
+ readonly kind: "work.reconcile";
426
+ readonly repository: string;
427
+ readonly pullRequest: number;
428
+ readonly goalId: string;
429
+ readonly laneId: string;
430
+ readonly operationId: string;
431
+ readonly expectedRevision: number;
432
+ readonly expectedHead: string;
433
+ readonly newHead: string;
434
+ readonly expectedOwner: {
435
+ readonly id: string;
436
+ readonly name: string;
437
+ };
438
+ readonly expectedGoalEventId: string;
439
+ readonly bindingDispatchRequestId: string;
440
+ readonly sessionId: string;
441
+ readonly expectedWork: string;
442
+ readonly worker: {
443
+ readonly host: string;
444
+ readonly agentId: string;
445
+ readonly name: string;
446
+ readonly paneId: string;
447
+ readonly relationship?: {
448
+ readonly parentAgentId: string;
449
+ readonly relation: "delegated" | "pair" | "review";
450
+ };
451
+ };
452
+ readonly worktree: string;
453
+ readonly branch: string;
454
+ } | {
455
+ readonly kind: "work.admit";
456
+ readonly repository: string;
457
+ readonly pullRequest: number;
458
+ readonly reviewUrl: string;
459
+ readonly goalId: string;
460
+ readonly laneId: string;
461
+ readonly operationId: string;
462
+ readonly expectedAbsenceToken: string;
463
+ readonly head: string;
464
+ readonly baseHead: string;
465
+ readonly owner: {
466
+ readonly id: string;
467
+ readonly name: string;
468
+ };
469
+ readonly sessionId: string;
470
+ readonly expectedWork: string;
471
+ readonly worker: {
472
+ readonly host: string;
473
+ readonly agentId: string;
474
+ readonly name: string;
475
+ readonly paneId: string;
476
+ readonly relationship?: {
477
+ readonly parentAgentId: string;
478
+ readonly relation: "delegated" | "pair" | "review";
479
+ };
480
+ };
481
+ readonly worktree: string;
482
+ readonly branch: string;
483
+ readonly title: string;
484
+ readonly summary: string;
485
+ readonly detail: string;
486
+ } | {
487
+ readonly kind: "work.recover";
488
+ readonly repository: string;
489
+ readonly pullRequest: number;
490
+ readonly reviewUrl: string;
491
+ readonly goalId: string;
492
+ readonly laneId: string;
493
+ readonly operationId: string;
494
+ readonly expectedGoalEventId: string;
495
+ readonly expectedGoalUpdatedAt: number;
496
+ readonly expectedHistoryToken: string;
497
+ readonly head: string;
498
+ readonly baseHead: string;
499
+ readonly owner: {
500
+ readonly id: string;
501
+ readonly name: string;
502
+ };
503
+ readonly sessionId: string;
504
+ readonly expectedWork: string;
505
+ readonly worker: {
506
+ readonly host: string;
507
+ readonly agentId: string;
508
+ readonly name: string;
509
+ readonly paneId: string;
510
+ readonly relationship?: {
511
+ readonly parentAgentId: string;
512
+ readonly relation: "delegated" | "pair" | "review";
513
+ };
514
+ };
515
+ readonly worktree: string;
516
+ readonly branch: string;
517
+ } | {
518
+ readonly kind: "work.reassign";
519
+ readonly goalId: string;
520
+ readonly from: {
521
+ readonly id: string;
522
+ readonly name: string;
523
+ };
524
+ readonly to: {
525
+ readonly id: string;
526
+ readonly name: string;
527
+ };
528
+ readonly toAgent: {
529
+ readonly _tag: "clear";
530
+ } | {
531
+ readonly _tag: "keep";
532
+ } | {
533
+ readonly _tag: "set";
534
+ readonly agent: {
535
+ readonly host: string;
536
+ readonly agentId: string;
537
+ readonly name: string;
538
+ readonly paneId: string;
539
+ readonly relationship?: {
540
+ readonly parentAgentId: string;
541
+ readonly relation: "delegated" | "pair" | "review";
542
+ };
543
+ };
544
+ };
545
+ readonly reason: string;
546
+ readonly expectedGoalEventId: string;
547
+ readonly expectedGoalUpdatedAt: number;
129
548
  } | {
130
549
  readonly kind: "browser.mcp.recover";
131
550
  };
132
551
  readonly result: string | null;
552
+ readonly acceptedReceipt?: string | null;
553
+ readonly durableOperation?: true;
133
554
  readonly error: string | null;
134
555
  readonly worker?: {
135
556
  readonly host: string;
@@ -171,16 +592,142 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
171
592
  readonly kind: "agent.delegate";
172
593
  readonly repository: string;
173
594
  readonly prompt: string;
174
- readonly mode: "consult" | "review" | "work";
595
+ readonly mode: "consult" | "review" | "transition_summary" | "work";
175
596
  readonly channel?: "coordinator_chat";
176
597
  } | {
177
598
  readonly kind: "agent.message";
178
599
  readonly session: string;
179
600
  readonly message: string;
601
+ } | {
602
+ readonly kind: "work.reconcile";
603
+ readonly repository: string;
604
+ readonly pullRequest: number;
605
+ readonly goalId: string;
606
+ readonly laneId: string;
607
+ readonly operationId: string;
608
+ readonly expectedRevision: number;
609
+ readonly expectedHead: string;
610
+ readonly newHead: string;
611
+ readonly expectedOwner: {
612
+ readonly id: string;
613
+ readonly name: string;
614
+ };
615
+ readonly expectedGoalEventId: string;
616
+ readonly bindingDispatchRequestId: string;
617
+ readonly sessionId: string;
618
+ readonly expectedWork: string;
619
+ readonly worker: {
620
+ readonly host: string;
621
+ readonly agentId: string;
622
+ readonly name: string;
623
+ readonly paneId: string;
624
+ readonly relationship?: {
625
+ readonly parentAgentId: string;
626
+ readonly relation: "delegated" | "pair" | "review";
627
+ };
628
+ };
629
+ readonly worktree: string;
630
+ readonly branch: string;
631
+ } | {
632
+ readonly kind: "work.admit";
633
+ readonly repository: string;
634
+ readonly pullRequest: number;
635
+ readonly reviewUrl: string;
636
+ readonly goalId: string;
637
+ readonly laneId: string;
638
+ readonly operationId: string;
639
+ readonly expectedAbsenceToken: string;
640
+ readonly head: string;
641
+ readonly baseHead: string;
642
+ readonly owner: {
643
+ readonly id: string;
644
+ readonly name: string;
645
+ };
646
+ readonly sessionId: string;
647
+ readonly expectedWork: string;
648
+ readonly worker: {
649
+ readonly host: string;
650
+ readonly agentId: string;
651
+ readonly name: string;
652
+ readonly paneId: string;
653
+ readonly relationship?: {
654
+ readonly parentAgentId: string;
655
+ readonly relation: "delegated" | "pair" | "review";
656
+ };
657
+ };
658
+ readonly worktree: string;
659
+ readonly branch: string;
660
+ readonly title: string;
661
+ readonly summary: string;
662
+ readonly detail: string;
663
+ } | {
664
+ readonly kind: "work.recover";
665
+ readonly repository: string;
666
+ readonly pullRequest: number;
667
+ readonly reviewUrl: string;
668
+ readonly goalId: string;
669
+ readonly laneId: string;
670
+ readonly operationId: string;
671
+ readonly expectedGoalEventId: string;
672
+ readonly expectedGoalUpdatedAt: number;
673
+ readonly expectedHistoryToken: string;
674
+ readonly head: string;
675
+ readonly baseHead: string;
676
+ readonly owner: {
677
+ readonly id: string;
678
+ readonly name: string;
679
+ };
680
+ readonly sessionId: string;
681
+ readonly expectedWork: string;
682
+ readonly worker: {
683
+ readonly host: string;
684
+ readonly agentId: string;
685
+ readonly name: string;
686
+ readonly paneId: string;
687
+ readonly relationship?: {
688
+ readonly parentAgentId: string;
689
+ readonly relation: "delegated" | "pair" | "review";
690
+ };
691
+ };
692
+ readonly worktree: string;
693
+ readonly branch: string;
694
+ } | {
695
+ readonly kind: "work.reassign";
696
+ readonly goalId: string;
697
+ readonly from: {
698
+ readonly id: string;
699
+ readonly name: string;
700
+ };
701
+ readonly to: {
702
+ readonly id: string;
703
+ readonly name: string;
704
+ };
705
+ readonly toAgent: {
706
+ readonly _tag: "clear";
707
+ } | {
708
+ readonly _tag: "keep";
709
+ } | {
710
+ readonly _tag: "set";
711
+ readonly agent: {
712
+ readonly host: string;
713
+ readonly agentId: string;
714
+ readonly name: string;
715
+ readonly paneId: string;
716
+ readonly relationship?: {
717
+ readonly parentAgentId: string;
718
+ readonly relation: "delegated" | "pair" | "review";
719
+ };
720
+ };
721
+ };
722
+ readonly reason: string;
723
+ readonly expectedGoalEventId: string;
724
+ readonly expectedGoalUpdatedAt: number;
180
725
  } | {
181
726
  readonly kind: "browser.mcp.recover";
182
727
  };
183
728
  readonly result: string | null;
729
+ readonly acceptedReceipt?: string | null;
730
+ readonly durableOperation?: true;
184
731
  readonly error: string | null;
185
732
  readonly worker?: {
186
733
  readonly host: string;
@@ -222,16 +769,142 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
222
769
  readonly kind: "agent.delegate";
223
770
  readonly repository: string;
224
771
  readonly prompt: string;
225
- readonly mode: "consult" | "review" | "work";
772
+ readonly mode: "consult" | "review" | "transition_summary" | "work";
226
773
  readonly channel?: "coordinator_chat";
227
774
  } | {
228
775
  readonly kind: "agent.message";
229
776
  readonly session: string;
230
777
  readonly message: string;
778
+ } | {
779
+ readonly kind: "work.reconcile";
780
+ readonly repository: string;
781
+ readonly pullRequest: number;
782
+ readonly goalId: string;
783
+ readonly laneId: string;
784
+ readonly operationId: string;
785
+ readonly expectedRevision: number;
786
+ readonly expectedHead: string;
787
+ readonly newHead: string;
788
+ readonly expectedOwner: {
789
+ readonly id: string;
790
+ readonly name: string;
791
+ };
792
+ readonly expectedGoalEventId: string;
793
+ readonly bindingDispatchRequestId: string;
794
+ readonly sessionId: string;
795
+ readonly expectedWork: string;
796
+ readonly worker: {
797
+ readonly host: string;
798
+ readonly agentId: string;
799
+ readonly name: string;
800
+ readonly paneId: string;
801
+ readonly relationship?: {
802
+ readonly parentAgentId: string;
803
+ readonly relation: "delegated" | "pair" | "review";
804
+ };
805
+ };
806
+ readonly worktree: string;
807
+ readonly branch: string;
808
+ } | {
809
+ readonly kind: "work.admit";
810
+ readonly repository: string;
811
+ readonly pullRequest: number;
812
+ readonly reviewUrl: string;
813
+ readonly goalId: string;
814
+ readonly laneId: string;
815
+ readonly operationId: string;
816
+ readonly expectedAbsenceToken: string;
817
+ readonly head: string;
818
+ readonly baseHead: string;
819
+ readonly owner: {
820
+ readonly id: string;
821
+ readonly name: string;
822
+ };
823
+ readonly sessionId: string;
824
+ readonly expectedWork: string;
825
+ readonly worker: {
826
+ readonly host: string;
827
+ readonly agentId: string;
828
+ readonly name: string;
829
+ readonly paneId: string;
830
+ readonly relationship?: {
831
+ readonly parentAgentId: string;
832
+ readonly relation: "delegated" | "pair" | "review";
833
+ };
834
+ };
835
+ readonly worktree: string;
836
+ readonly branch: string;
837
+ readonly title: string;
838
+ readonly summary: string;
839
+ readonly detail: string;
840
+ } | {
841
+ readonly kind: "work.recover";
842
+ readonly repository: string;
843
+ readonly pullRequest: number;
844
+ readonly reviewUrl: string;
845
+ readonly goalId: string;
846
+ readonly laneId: string;
847
+ readonly operationId: string;
848
+ readonly expectedGoalEventId: string;
849
+ readonly expectedGoalUpdatedAt: number;
850
+ readonly expectedHistoryToken: string;
851
+ readonly head: string;
852
+ readonly baseHead: string;
853
+ readonly owner: {
854
+ readonly id: string;
855
+ readonly name: string;
856
+ };
857
+ readonly sessionId: string;
858
+ readonly expectedWork: string;
859
+ readonly worker: {
860
+ readonly host: string;
861
+ readonly agentId: string;
862
+ readonly name: string;
863
+ readonly paneId: string;
864
+ readonly relationship?: {
865
+ readonly parentAgentId: string;
866
+ readonly relation: "delegated" | "pair" | "review";
867
+ };
868
+ };
869
+ readonly worktree: string;
870
+ readonly branch: string;
871
+ } | {
872
+ readonly kind: "work.reassign";
873
+ readonly goalId: string;
874
+ readonly from: {
875
+ readonly id: string;
876
+ readonly name: string;
877
+ };
878
+ readonly to: {
879
+ readonly id: string;
880
+ readonly name: string;
881
+ };
882
+ readonly toAgent: {
883
+ readonly _tag: "clear";
884
+ } | {
885
+ readonly _tag: "keep";
886
+ } | {
887
+ readonly _tag: "set";
888
+ readonly agent: {
889
+ readonly host: string;
890
+ readonly agentId: string;
891
+ readonly name: string;
892
+ readonly paneId: string;
893
+ readonly relationship?: {
894
+ readonly parentAgentId: string;
895
+ readonly relation: "delegated" | "pair" | "review";
896
+ };
897
+ };
898
+ };
899
+ readonly reason: string;
900
+ readonly expectedGoalEventId: string;
901
+ readonly expectedGoalUpdatedAt: number;
231
902
  } | {
232
903
  readonly kind: "browser.mcp.recover";
233
904
  };
234
905
  readonly result: string | null;
906
+ readonly acceptedReceipt?: string | null;
907
+ readonly durableOperation?: true;
235
908
  readonly error: string | null;
236
909
  readonly worker?: {
237
910
  readonly host: string;
@@ -249,7 +922,7 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
249
922
  readonly url: string;
250
923
  };
251
924
  readonly workerTerminalObservedAt?: number | null;
252
- }, FleetApprovalError | FleetJobNotFoundError | FleetStoreError | FleetTransitionConflictError, never>;
925
+ }, FleetApprovalError | FleetJobNotFoundError | FleetOperationError | FleetStoreError | FleetTransitionConflictError | FleetValidationError, never>;
253
926
  runCoordinatorChat: (jobId: string) => Effect.Effect<{
254
927
  readonly id: string;
255
928
  readonly createdAt: number;
@@ -273,16 +946,142 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
273
946
  readonly kind: "agent.delegate";
274
947
  readonly repository: string;
275
948
  readonly prompt: string;
276
- readonly mode: "consult" | "review" | "work";
949
+ readonly mode: "consult" | "review" | "transition_summary" | "work";
277
950
  readonly channel?: "coordinator_chat";
278
951
  } | {
279
952
  readonly kind: "agent.message";
280
953
  readonly session: string;
281
954
  readonly message: string;
955
+ } | {
956
+ readonly kind: "work.reconcile";
957
+ readonly repository: string;
958
+ readonly pullRequest: number;
959
+ readonly goalId: string;
960
+ readonly laneId: string;
961
+ readonly operationId: string;
962
+ readonly expectedRevision: number;
963
+ readonly expectedHead: string;
964
+ readonly newHead: string;
965
+ readonly expectedOwner: {
966
+ readonly id: string;
967
+ readonly name: string;
968
+ };
969
+ readonly expectedGoalEventId: string;
970
+ readonly bindingDispatchRequestId: string;
971
+ readonly sessionId: string;
972
+ readonly expectedWork: string;
973
+ readonly worker: {
974
+ readonly host: string;
975
+ readonly agentId: string;
976
+ readonly name: string;
977
+ readonly paneId: string;
978
+ readonly relationship?: {
979
+ readonly parentAgentId: string;
980
+ readonly relation: "delegated" | "pair" | "review";
981
+ };
982
+ };
983
+ readonly worktree: string;
984
+ readonly branch: string;
985
+ } | {
986
+ readonly kind: "work.admit";
987
+ readonly repository: string;
988
+ readonly pullRequest: number;
989
+ readonly reviewUrl: string;
990
+ readonly goalId: string;
991
+ readonly laneId: string;
992
+ readonly operationId: string;
993
+ readonly expectedAbsenceToken: string;
994
+ readonly head: string;
995
+ readonly baseHead: string;
996
+ readonly owner: {
997
+ readonly id: string;
998
+ readonly name: string;
999
+ };
1000
+ readonly sessionId: string;
1001
+ readonly expectedWork: string;
1002
+ readonly worker: {
1003
+ readonly host: string;
1004
+ readonly agentId: string;
1005
+ readonly name: string;
1006
+ readonly paneId: string;
1007
+ readonly relationship?: {
1008
+ readonly parentAgentId: string;
1009
+ readonly relation: "delegated" | "pair" | "review";
1010
+ };
1011
+ };
1012
+ readonly worktree: string;
1013
+ readonly branch: string;
1014
+ readonly title: string;
1015
+ readonly summary: string;
1016
+ readonly detail: string;
1017
+ } | {
1018
+ readonly kind: "work.recover";
1019
+ readonly repository: string;
1020
+ readonly pullRequest: number;
1021
+ readonly reviewUrl: string;
1022
+ readonly goalId: string;
1023
+ readonly laneId: string;
1024
+ readonly operationId: string;
1025
+ readonly expectedGoalEventId: string;
1026
+ readonly expectedGoalUpdatedAt: number;
1027
+ readonly expectedHistoryToken: string;
1028
+ readonly head: string;
1029
+ readonly baseHead: string;
1030
+ readonly owner: {
1031
+ readonly id: string;
1032
+ readonly name: string;
1033
+ };
1034
+ readonly sessionId: string;
1035
+ readonly expectedWork: string;
1036
+ readonly worker: {
1037
+ readonly host: string;
1038
+ readonly agentId: string;
1039
+ readonly name: string;
1040
+ readonly paneId: string;
1041
+ readonly relationship?: {
1042
+ readonly parentAgentId: string;
1043
+ readonly relation: "delegated" | "pair" | "review";
1044
+ };
1045
+ };
1046
+ readonly worktree: string;
1047
+ readonly branch: string;
1048
+ } | {
1049
+ readonly kind: "work.reassign";
1050
+ readonly goalId: string;
1051
+ readonly from: {
1052
+ readonly id: string;
1053
+ readonly name: string;
1054
+ };
1055
+ readonly to: {
1056
+ readonly id: string;
1057
+ readonly name: string;
1058
+ };
1059
+ readonly toAgent: {
1060
+ readonly _tag: "clear";
1061
+ } | {
1062
+ readonly _tag: "keep";
1063
+ } | {
1064
+ readonly _tag: "set";
1065
+ readonly agent: {
1066
+ readonly host: string;
1067
+ readonly agentId: string;
1068
+ readonly name: string;
1069
+ readonly paneId: string;
1070
+ readonly relationship?: {
1071
+ readonly parentAgentId: string;
1072
+ readonly relation: "delegated" | "pair" | "review";
1073
+ };
1074
+ };
1075
+ };
1076
+ readonly reason: string;
1077
+ readonly expectedGoalEventId: string;
1078
+ readonly expectedGoalUpdatedAt: number;
282
1079
  } | {
283
1080
  readonly kind: "browser.mcp.recover";
284
1081
  };
285
1082
  readonly result: string | null;
1083
+ readonly acceptedReceipt?: string | null;
1084
+ readonly durableOperation?: true;
286
1085
  readonly error: string | null;
287
1086
  readonly worker?: {
288
1087
  readonly host: string;
@@ -300,7 +1099,7 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
300
1099
  readonly url: string;
301
1100
  };
302
1101
  readonly workerTerminalObservedAt?: number | null;
303
- }, FleetApprovalError | FleetJobNotFoundError | FleetStoreError | FleetTransitionConflictError | FleetValidationError, never>;
1102
+ }, FleetApprovalError | FleetJobNotFoundError | FleetOperationError | FleetStoreError | FleetTransitionConflictError | FleetValidationError, never>;
304
1103
  get: (jobId: string) => Effect.Effect<{
305
1104
  readonly id: string;
306
1105
  readonly createdAt: number;
@@ -321,19 +1120,145 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
321
1120
  readonly kind: "nix.apply";
322
1121
  readonly ref: string;
323
1122
  } | {
324
- readonly kind: "agent.delegate";
1123
+ readonly kind: "agent.delegate";
1124
+ readonly repository: string;
1125
+ readonly prompt: string;
1126
+ readonly mode: "consult" | "review" | "transition_summary" | "work";
1127
+ readonly channel?: "coordinator_chat";
1128
+ } | {
1129
+ readonly kind: "agent.message";
1130
+ readonly session: string;
1131
+ readonly message: string;
1132
+ } | {
1133
+ readonly kind: "work.reconcile";
1134
+ readonly repository: string;
1135
+ readonly pullRequest: number;
1136
+ readonly goalId: string;
1137
+ readonly laneId: string;
1138
+ readonly operationId: string;
1139
+ readonly expectedRevision: number;
1140
+ readonly expectedHead: string;
1141
+ readonly newHead: string;
1142
+ readonly expectedOwner: {
1143
+ readonly id: string;
1144
+ readonly name: string;
1145
+ };
1146
+ readonly expectedGoalEventId: string;
1147
+ readonly bindingDispatchRequestId: string;
1148
+ readonly sessionId: string;
1149
+ readonly expectedWork: string;
1150
+ readonly worker: {
1151
+ readonly host: string;
1152
+ readonly agentId: string;
1153
+ readonly name: string;
1154
+ readonly paneId: string;
1155
+ readonly relationship?: {
1156
+ readonly parentAgentId: string;
1157
+ readonly relation: "delegated" | "pair" | "review";
1158
+ };
1159
+ };
1160
+ readonly worktree: string;
1161
+ readonly branch: string;
1162
+ } | {
1163
+ readonly kind: "work.admit";
1164
+ readonly repository: string;
1165
+ readonly pullRequest: number;
1166
+ readonly reviewUrl: string;
1167
+ readonly goalId: string;
1168
+ readonly laneId: string;
1169
+ readonly operationId: string;
1170
+ readonly expectedAbsenceToken: string;
1171
+ readonly head: string;
1172
+ readonly baseHead: string;
1173
+ readonly owner: {
1174
+ readonly id: string;
1175
+ readonly name: string;
1176
+ };
1177
+ readonly sessionId: string;
1178
+ readonly expectedWork: string;
1179
+ readonly worker: {
1180
+ readonly host: string;
1181
+ readonly agentId: string;
1182
+ readonly name: string;
1183
+ readonly paneId: string;
1184
+ readonly relationship?: {
1185
+ readonly parentAgentId: string;
1186
+ readonly relation: "delegated" | "pair" | "review";
1187
+ };
1188
+ };
1189
+ readonly worktree: string;
1190
+ readonly branch: string;
1191
+ readonly title: string;
1192
+ readonly summary: string;
1193
+ readonly detail: string;
1194
+ } | {
1195
+ readonly kind: "work.recover";
325
1196
  readonly repository: string;
326
- readonly prompt: string;
327
- readonly mode: "consult" | "review" | "work";
328
- readonly channel?: "coordinator_chat";
1197
+ readonly pullRequest: number;
1198
+ readonly reviewUrl: string;
1199
+ readonly goalId: string;
1200
+ readonly laneId: string;
1201
+ readonly operationId: string;
1202
+ readonly expectedGoalEventId: string;
1203
+ readonly expectedGoalUpdatedAt: number;
1204
+ readonly expectedHistoryToken: string;
1205
+ readonly head: string;
1206
+ readonly baseHead: string;
1207
+ readonly owner: {
1208
+ readonly id: string;
1209
+ readonly name: string;
1210
+ };
1211
+ readonly sessionId: string;
1212
+ readonly expectedWork: string;
1213
+ readonly worker: {
1214
+ readonly host: string;
1215
+ readonly agentId: string;
1216
+ readonly name: string;
1217
+ readonly paneId: string;
1218
+ readonly relationship?: {
1219
+ readonly parentAgentId: string;
1220
+ readonly relation: "delegated" | "pair" | "review";
1221
+ };
1222
+ };
1223
+ readonly worktree: string;
1224
+ readonly branch: string;
329
1225
  } | {
330
- readonly kind: "agent.message";
331
- readonly session: string;
332
- readonly message: string;
1226
+ readonly kind: "work.reassign";
1227
+ readonly goalId: string;
1228
+ readonly from: {
1229
+ readonly id: string;
1230
+ readonly name: string;
1231
+ };
1232
+ readonly to: {
1233
+ readonly id: string;
1234
+ readonly name: string;
1235
+ };
1236
+ readonly toAgent: {
1237
+ readonly _tag: "clear";
1238
+ } | {
1239
+ readonly _tag: "keep";
1240
+ } | {
1241
+ readonly _tag: "set";
1242
+ readonly agent: {
1243
+ readonly host: string;
1244
+ readonly agentId: string;
1245
+ readonly name: string;
1246
+ readonly paneId: string;
1247
+ readonly relationship?: {
1248
+ readonly parentAgentId: string;
1249
+ readonly relation: "delegated" | "pair" | "review";
1250
+ };
1251
+ };
1252
+ };
1253
+ readonly reason: string;
1254
+ readonly expectedGoalEventId: string;
1255
+ readonly expectedGoalUpdatedAt: number;
333
1256
  } | {
334
1257
  readonly kind: "browser.mcp.recover";
335
1258
  };
336
1259
  readonly result: string | null;
1260
+ readonly acceptedReceipt?: string | null;
1261
+ readonly durableOperation?: true;
337
1262
  readonly error: string | null;
338
1263
  readonly worker?: {
339
1264
  readonly host: string;
@@ -375,16 +1300,142 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
375
1300
  readonly kind: "agent.delegate";
376
1301
  readonly repository: string;
377
1302
  readonly prompt: string;
378
- readonly mode: "consult" | "review" | "work";
1303
+ readonly mode: "consult" | "review" | "transition_summary" | "work";
379
1304
  readonly channel?: "coordinator_chat";
380
1305
  } | {
381
1306
  readonly kind: "agent.message";
382
1307
  readonly session: string;
383
1308
  readonly message: string;
1309
+ } | {
1310
+ readonly kind: "work.reconcile";
1311
+ readonly repository: string;
1312
+ readonly pullRequest: number;
1313
+ readonly goalId: string;
1314
+ readonly laneId: string;
1315
+ readonly operationId: string;
1316
+ readonly expectedRevision: number;
1317
+ readonly expectedHead: string;
1318
+ readonly newHead: string;
1319
+ readonly expectedOwner: {
1320
+ readonly id: string;
1321
+ readonly name: string;
1322
+ };
1323
+ readonly expectedGoalEventId: string;
1324
+ readonly bindingDispatchRequestId: string;
1325
+ readonly sessionId: string;
1326
+ readonly expectedWork: string;
1327
+ readonly worker: {
1328
+ readonly host: string;
1329
+ readonly agentId: string;
1330
+ readonly name: string;
1331
+ readonly paneId: string;
1332
+ readonly relationship?: {
1333
+ readonly parentAgentId: string;
1334
+ readonly relation: "delegated" | "pair" | "review";
1335
+ };
1336
+ };
1337
+ readonly worktree: string;
1338
+ readonly branch: string;
1339
+ } | {
1340
+ readonly kind: "work.admit";
1341
+ readonly repository: string;
1342
+ readonly pullRequest: number;
1343
+ readonly reviewUrl: string;
1344
+ readonly goalId: string;
1345
+ readonly laneId: string;
1346
+ readonly operationId: string;
1347
+ readonly expectedAbsenceToken: string;
1348
+ readonly head: string;
1349
+ readonly baseHead: string;
1350
+ readonly owner: {
1351
+ readonly id: string;
1352
+ readonly name: string;
1353
+ };
1354
+ readonly sessionId: string;
1355
+ readonly expectedWork: string;
1356
+ readonly worker: {
1357
+ readonly host: string;
1358
+ readonly agentId: string;
1359
+ readonly name: string;
1360
+ readonly paneId: string;
1361
+ readonly relationship?: {
1362
+ readonly parentAgentId: string;
1363
+ readonly relation: "delegated" | "pair" | "review";
1364
+ };
1365
+ };
1366
+ readonly worktree: string;
1367
+ readonly branch: string;
1368
+ readonly title: string;
1369
+ readonly summary: string;
1370
+ readonly detail: string;
1371
+ } | {
1372
+ readonly kind: "work.recover";
1373
+ readonly repository: string;
1374
+ readonly pullRequest: number;
1375
+ readonly reviewUrl: string;
1376
+ readonly goalId: string;
1377
+ readonly laneId: string;
1378
+ readonly operationId: string;
1379
+ readonly expectedGoalEventId: string;
1380
+ readonly expectedGoalUpdatedAt: number;
1381
+ readonly expectedHistoryToken: string;
1382
+ readonly head: string;
1383
+ readonly baseHead: string;
1384
+ readonly owner: {
1385
+ readonly id: string;
1386
+ readonly name: string;
1387
+ };
1388
+ readonly sessionId: string;
1389
+ readonly expectedWork: string;
1390
+ readonly worker: {
1391
+ readonly host: string;
1392
+ readonly agentId: string;
1393
+ readonly name: string;
1394
+ readonly paneId: string;
1395
+ readonly relationship?: {
1396
+ readonly parentAgentId: string;
1397
+ readonly relation: "delegated" | "pair" | "review";
1398
+ };
1399
+ };
1400
+ readonly worktree: string;
1401
+ readonly branch: string;
1402
+ } | {
1403
+ readonly kind: "work.reassign";
1404
+ readonly goalId: string;
1405
+ readonly from: {
1406
+ readonly id: string;
1407
+ readonly name: string;
1408
+ };
1409
+ readonly to: {
1410
+ readonly id: string;
1411
+ readonly name: string;
1412
+ };
1413
+ readonly toAgent: {
1414
+ readonly _tag: "clear";
1415
+ } | {
1416
+ readonly _tag: "keep";
1417
+ } | {
1418
+ readonly _tag: "set";
1419
+ readonly agent: {
1420
+ readonly host: string;
1421
+ readonly agentId: string;
1422
+ readonly name: string;
1423
+ readonly paneId: string;
1424
+ readonly relationship?: {
1425
+ readonly parentAgentId: string;
1426
+ readonly relation: "delegated" | "pair" | "review";
1427
+ };
1428
+ };
1429
+ };
1430
+ readonly reason: string;
1431
+ readonly expectedGoalEventId: string;
1432
+ readonly expectedGoalUpdatedAt: number;
384
1433
  } | {
385
1434
  readonly kind: "browser.mcp.recover";
386
1435
  };
387
1436
  readonly result: string | null;
1437
+ readonly acceptedReceipt?: string | null;
1438
+ readonly durableOperation?: true;
388
1439
  readonly error: string | null;
389
1440
  readonly worker?: {
390
1441
  readonly host: string;
@@ -429,16 +1480,142 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
429
1480
  readonly kind: "agent.delegate";
430
1481
  readonly repository: string;
431
1482
  readonly prompt: string;
432
- readonly mode: "consult" | "review" | "work";
1483
+ readonly mode: "consult" | "review" | "transition_summary" | "work";
433
1484
  readonly channel?: "coordinator_chat";
434
1485
  } | {
435
1486
  readonly kind: "agent.message";
436
1487
  readonly session: string;
437
1488
  readonly message: string;
1489
+ } | {
1490
+ readonly kind: "work.reconcile";
1491
+ readonly repository: string;
1492
+ readonly pullRequest: number;
1493
+ readonly goalId: string;
1494
+ readonly laneId: string;
1495
+ readonly operationId: string;
1496
+ readonly expectedRevision: number;
1497
+ readonly expectedHead: string;
1498
+ readonly newHead: string;
1499
+ readonly expectedOwner: {
1500
+ readonly id: string;
1501
+ readonly name: string;
1502
+ };
1503
+ readonly expectedGoalEventId: string;
1504
+ readonly bindingDispatchRequestId: string;
1505
+ readonly sessionId: string;
1506
+ readonly expectedWork: string;
1507
+ readonly worker: {
1508
+ readonly host: string;
1509
+ readonly agentId: string;
1510
+ readonly name: string;
1511
+ readonly paneId: string;
1512
+ readonly relationship?: {
1513
+ readonly parentAgentId: string;
1514
+ readonly relation: "delegated" | "pair" | "review";
1515
+ };
1516
+ };
1517
+ readonly worktree: string;
1518
+ readonly branch: string;
1519
+ } | {
1520
+ readonly kind: "work.admit";
1521
+ readonly repository: string;
1522
+ readonly pullRequest: number;
1523
+ readonly reviewUrl: string;
1524
+ readonly goalId: string;
1525
+ readonly laneId: string;
1526
+ readonly operationId: string;
1527
+ readonly expectedAbsenceToken: string;
1528
+ readonly head: string;
1529
+ readonly baseHead: string;
1530
+ readonly owner: {
1531
+ readonly id: string;
1532
+ readonly name: string;
1533
+ };
1534
+ readonly sessionId: string;
1535
+ readonly expectedWork: string;
1536
+ readonly worker: {
1537
+ readonly host: string;
1538
+ readonly agentId: string;
1539
+ readonly name: string;
1540
+ readonly paneId: string;
1541
+ readonly relationship?: {
1542
+ readonly parentAgentId: string;
1543
+ readonly relation: "delegated" | "pair" | "review";
1544
+ };
1545
+ };
1546
+ readonly worktree: string;
1547
+ readonly branch: string;
1548
+ readonly title: string;
1549
+ readonly summary: string;
1550
+ readonly detail: string;
1551
+ } | {
1552
+ readonly kind: "work.recover";
1553
+ readonly repository: string;
1554
+ readonly pullRequest: number;
1555
+ readonly reviewUrl: string;
1556
+ readonly goalId: string;
1557
+ readonly laneId: string;
1558
+ readonly operationId: string;
1559
+ readonly expectedGoalEventId: string;
1560
+ readonly expectedGoalUpdatedAt: number;
1561
+ readonly expectedHistoryToken: string;
1562
+ readonly head: string;
1563
+ readonly baseHead: string;
1564
+ readonly owner: {
1565
+ readonly id: string;
1566
+ readonly name: string;
1567
+ };
1568
+ readonly sessionId: string;
1569
+ readonly expectedWork: string;
1570
+ readonly worker: {
1571
+ readonly host: string;
1572
+ readonly agentId: string;
1573
+ readonly name: string;
1574
+ readonly paneId: string;
1575
+ readonly relationship?: {
1576
+ readonly parentAgentId: string;
1577
+ readonly relation: "delegated" | "pair" | "review";
1578
+ };
1579
+ };
1580
+ readonly worktree: string;
1581
+ readonly branch: string;
1582
+ } | {
1583
+ readonly kind: "work.reassign";
1584
+ readonly goalId: string;
1585
+ readonly from: {
1586
+ readonly id: string;
1587
+ readonly name: string;
1588
+ };
1589
+ readonly to: {
1590
+ readonly id: string;
1591
+ readonly name: string;
1592
+ };
1593
+ readonly toAgent: {
1594
+ readonly _tag: "clear";
1595
+ } | {
1596
+ readonly _tag: "keep";
1597
+ } | {
1598
+ readonly _tag: "set";
1599
+ readonly agent: {
1600
+ readonly host: string;
1601
+ readonly agentId: string;
1602
+ readonly name: string;
1603
+ readonly paneId: string;
1604
+ readonly relationship?: {
1605
+ readonly parentAgentId: string;
1606
+ readonly relation: "delegated" | "pair" | "review";
1607
+ };
1608
+ };
1609
+ };
1610
+ readonly reason: string;
1611
+ readonly expectedGoalEventId: string;
1612
+ readonly expectedGoalUpdatedAt: number;
438
1613
  } | {
439
1614
  readonly kind: "browser.mcp.recover";
440
1615
  };
441
1616
  readonly result: string | null;
1617
+ readonly acceptedReceipt?: string | null;
1618
+ readonly durableOperation?: true;
442
1619
  readonly error: string | null;
443
1620
  readonly worker?: {
444
1621
  readonly host: string;
@@ -484,16 +1661,142 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
484
1661
  readonly kind: "agent.delegate";
485
1662
  readonly repository: string;
486
1663
  readonly prompt: string;
487
- readonly mode: "consult" | "review" | "work";
1664
+ readonly mode: "consult" | "review" | "transition_summary" | "work";
488
1665
  readonly channel?: "coordinator_chat";
489
1666
  } | {
490
1667
  readonly kind: "agent.message";
491
1668
  readonly session: string;
492
1669
  readonly message: string;
1670
+ } | {
1671
+ readonly kind: "work.reconcile";
1672
+ readonly repository: string;
1673
+ readonly pullRequest: number;
1674
+ readonly goalId: string;
1675
+ readonly laneId: string;
1676
+ readonly operationId: string;
1677
+ readonly expectedRevision: number;
1678
+ readonly expectedHead: string;
1679
+ readonly newHead: string;
1680
+ readonly expectedOwner: {
1681
+ readonly id: string;
1682
+ readonly name: string;
1683
+ };
1684
+ readonly expectedGoalEventId: string;
1685
+ readonly bindingDispatchRequestId: string;
1686
+ readonly sessionId: string;
1687
+ readonly expectedWork: string;
1688
+ readonly worker: {
1689
+ readonly host: string;
1690
+ readonly agentId: string;
1691
+ readonly name: string;
1692
+ readonly paneId: string;
1693
+ readonly relationship?: {
1694
+ readonly parentAgentId: string;
1695
+ readonly relation: "delegated" | "pair" | "review";
1696
+ };
1697
+ };
1698
+ readonly worktree: string;
1699
+ readonly branch: string;
1700
+ } | {
1701
+ readonly kind: "work.admit";
1702
+ readonly repository: string;
1703
+ readonly pullRequest: number;
1704
+ readonly reviewUrl: string;
1705
+ readonly goalId: string;
1706
+ readonly laneId: string;
1707
+ readonly operationId: string;
1708
+ readonly expectedAbsenceToken: string;
1709
+ readonly head: string;
1710
+ readonly baseHead: string;
1711
+ readonly owner: {
1712
+ readonly id: string;
1713
+ readonly name: string;
1714
+ };
1715
+ readonly sessionId: string;
1716
+ readonly expectedWork: string;
1717
+ readonly worker: {
1718
+ readonly host: string;
1719
+ readonly agentId: string;
1720
+ readonly name: string;
1721
+ readonly paneId: string;
1722
+ readonly relationship?: {
1723
+ readonly parentAgentId: string;
1724
+ readonly relation: "delegated" | "pair" | "review";
1725
+ };
1726
+ };
1727
+ readonly worktree: string;
1728
+ readonly branch: string;
1729
+ readonly title: string;
1730
+ readonly summary: string;
1731
+ readonly detail: string;
1732
+ } | {
1733
+ readonly kind: "work.recover";
1734
+ readonly repository: string;
1735
+ readonly pullRequest: number;
1736
+ readonly reviewUrl: string;
1737
+ readonly goalId: string;
1738
+ readonly laneId: string;
1739
+ readonly operationId: string;
1740
+ readonly expectedGoalEventId: string;
1741
+ readonly expectedGoalUpdatedAt: number;
1742
+ readonly expectedHistoryToken: string;
1743
+ readonly head: string;
1744
+ readonly baseHead: string;
1745
+ readonly owner: {
1746
+ readonly id: string;
1747
+ readonly name: string;
1748
+ };
1749
+ readonly sessionId: string;
1750
+ readonly expectedWork: string;
1751
+ readonly worker: {
1752
+ readonly host: string;
1753
+ readonly agentId: string;
1754
+ readonly name: string;
1755
+ readonly paneId: string;
1756
+ readonly relationship?: {
1757
+ readonly parentAgentId: string;
1758
+ readonly relation: "delegated" | "pair" | "review";
1759
+ };
1760
+ };
1761
+ readonly worktree: string;
1762
+ readonly branch: string;
1763
+ } | {
1764
+ readonly kind: "work.reassign";
1765
+ readonly goalId: string;
1766
+ readonly from: {
1767
+ readonly id: string;
1768
+ readonly name: string;
1769
+ };
1770
+ readonly to: {
1771
+ readonly id: string;
1772
+ readonly name: string;
1773
+ };
1774
+ readonly toAgent: {
1775
+ readonly _tag: "clear";
1776
+ } | {
1777
+ readonly _tag: "keep";
1778
+ } | {
1779
+ readonly _tag: "set";
1780
+ readonly agent: {
1781
+ readonly host: string;
1782
+ readonly agentId: string;
1783
+ readonly name: string;
1784
+ readonly paneId: string;
1785
+ readonly relationship?: {
1786
+ readonly parentAgentId: string;
1787
+ readonly relation: "delegated" | "pair" | "review";
1788
+ };
1789
+ };
1790
+ };
1791
+ readonly reason: string;
1792
+ readonly expectedGoalEventId: string;
1793
+ readonly expectedGoalUpdatedAt: number;
493
1794
  } | {
494
1795
  readonly kind: "browser.mcp.recover";
495
1796
  };
496
1797
  readonly result: string | null;
1798
+ readonly acceptedReceipt?: string | null;
1799
+ readonly durableOperation?: true;
497
1800
  readonly error: string | null;
498
1801
  readonly worker?: {
499
1802
  readonly host: string;
@@ -544,16 +1847,142 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
544
1847
  readonly kind: "agent.delegate";
545
1848
  readonly repository: string;
546
1849
  readonly prompt: string;
547
- readonly mode: "consult" | "review" | "work";
1850
+ readonly mode: "consult" | "review" | "transition_summary" | "work";
548
1851
  readonly channel?: "coordinator_chat";
549
1852
  } | {
550
1853
  readonly kind: "agent.message";
551
1854
  readonly session: string;
552
1855
  readonly message: string;
1856
+ } | {
1857
+ readonly kind: "work.reconcile";
1858
+ readonly repository: string;
1859
+ readonly pullRequest: number;
1860
+ readonly goalId: string;
1861
+ readonly laneId: string;
1862
+ readonly operationId: string;
1863
+ readonly expectedRevision: number;
1864
+ readonly expectedHead: string;
1865
+ readonly newHead: string;
1866
+ readonly expectedOwner: {
1867
+ readonly id: string;
1868
+ readonly name: string;
1869
+ };
1870
+ readonly expectedGoalEventId: string;
1871
+ readonly bindingDispatchRequestId: string;
1872
+ readonly sessionId: string;
1873
+ readonly expectedWork: string;
1874
+ readonly worker: {
1875
+ readonly host: string;
1876
+ readonly agentId: string;
1877
+ readonly name: string;
1878
+ readonly paneId: string;
1879
+ readonly relationship?: {
1880
+ readonly parentAgentId: string;
1881
+ readonly relation: "delegated" | "pair" | "review";
1882
+ };
1883
+ };
1884
+ readonly worktree: string;
1885
+ readonly branch: string;
1886
+ } | {
1887
+ readonly kind: "work.admit";
1888
+ readonly repository: string;
1889
+ readonly pullRequest: number;
1890
+ readonly reviewUrl: string;
1891
+ readonly goalId: string;
1892
+ readonly laneId: string;
1893
+ readonly operationId: string;
1894
+ readonly expectedAbsenceToken: string;
1895
+ readonly head: string;
1896
+ readonly baseHead: string;
1897
+ readonly owner: {
1898
+ readonly id: string;
1899
+ readonly name: string;
1900
+ };
1901
+ readonly sessionId: string;
1902
+ readonly expectedWork: string;
1903
+ readonly worker: {
1904
+ readonly host: string;
1905
+ readonly agentId: string;
1906
+ readonly name: string;
1907
+ readonly paneId: string;
1908
+ readonly relationship?: {
1909
+ readonly parentAgentId: string;
1910
+ readonly relation: "delegated" | "pair" | "review";
1911
+ };
1912
+ };
1913
+ readonly worktree: string;
1914
+ readonly branch: string;
1915
+ readonly title: string;
1916
+ readonly summary: string;
1917
+ readonly detail: string;
1918
+ } | {
1919
+ readonly kind: "work.recover";
1920
+ readonly repository: string;
1921
+ readonly pullRequest: number;
1922
+ readonly reviewUrl: string;
1923
+ readonly goalId: string;
1924
+ readonly laneId: string;
1925
+ readonly operationId: string;
1926
+ readonly expectedGoalEventId: string;
1927
+ readonly expectedGoalUpdatedAt: number;
1928
+ readonly expectedHistoryToken: string;
1929
+ readonly head: string;
1930
+ readonly baseHead: string;
1931
+ readonly owner: {
1932
+ readonly id: string;
1933
+ readonly name: string;
1934
+ };
1935
+ readonly sessionId: string;
1936
+ readonly expectedWork: string;
1937
+ readonly worker: {
1938
+ readonly host: string;
1939
+ readonly agentId: string;
1940
+ readonly name: string;
1941
+ readonly paneId: string;
1942
+ readonly relationship?: {
1943
+ readonly parentAgentId: string;
1944
+ readonly relation: "delegated" | "pair" | "review";
1945
+ };
1946
+ };
1947
+ readonly worktree: string;
1948
+ readonly branch: string;
1949
+ } | {
1950
+ readonly kind: "work.reassign";
1951
+ readonly goalId: string;
1952
+ readonly from: {
1953
+ readonly id: string;
1954
+ readonly name: string;
1955
+ };
1956
+ readonly to: {
1957
+ readonly id: string;
1958
+ readonly name: string;
1959
+ };
1960
+ readonly toAgent: {
1961
+ readonly _tag: "clear";
1962
+ } | {
1963
+ readonly _tag: "keep";
1964
+ } | {
1965
+ readonly _tag: "set";
1966
+ readonly agent: {
1967
+ readonly host: string;
1968
+ readonly agentId: string;
1969
+ readonly name: string;
1970
+ readonly paneId: string;
1971
+ readonly relationship?: {
1972
+ readonly parentAgentId: string;
1973
+ readonly relation: "delegated" | "pair" | "review";
1974
+ };
1975
+ };
1976
+ };
1977
+ readonly reason: string;
1978
+ readonly expectedGoalEventId: string;
1979
+ readonly expectedGoalUpdatedAt: number;
553
1980
  } | {
554
1981
  readonly kind: "browser.mcp.recover";
555
1982
  };
556
1983
  readonly result: string | null;
1984
+ readonly acceptedReceipt?: string | null;
1985
+ readonly durableOperation?: true;
557
1986
  readonly error: string | null;
558
1987
  readonly worker?: {
559
1988
  readonly host: string;
@@ -600,16 +2029,142 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
600
2029
  readonly kind: "agent.delegate";
601
2030
  readonly repository: string;
602
2031
  readonly prompt: string;
603
- readonly mode: "consult" | "review" | "work";
2032
+ readonly mode: "consult" | "review" | "transition_summary" | "work";
604
2033
  readonly channel?: "coordinator_chat";
605
2034
  } | {
606
2035
  readonly kind: "agent.message";
607
2036
  readonly session: string;
608
2037
  readonly message: string;
2038
+ } | {
2039
+ readonly kind: "work.reconcile";
2040
+ readonly repository: string;
2041
+ readonly pullRequest: number;
2042
+ readonly goalId: string;
2043
+ readonly laneId: string;
2044
+ readonly operationId: string;
2045
+ readonly expectedRevision: number;
2046
+ readonly expectedHead: string;
2047
+ readonly newHead: string;
2048
+ readonly expectedOwner: {
2049
+ readonly id: string;
2050
+ readonly name: string;
2051
+ };
2052
+ readonly expectedGoalEventId: string;
2053
+ readonly bindingDispatchRequestId: string;
2054
+ readonly sessionId: string;
2055
+ readonly expectedWork: string;
2056
+ readonly worker: {
2057
+ readonly host: string;
2058
+ readonly agentId: string;
2059
+ readonly name: string;
2060
+ readonly paneId: string;
2061
+ readonly relationship?: {
2062
+ readonly parentAgentId: string;
2063
+ readonly relation: "delegated" | "pair" | "review";
2064
+ };
2065
+ };
2066
+ readonly worktree: string;
2067
+ readonly branch: string;
2068
+ } | {
2069
+ readonly kind: "work.admit";
2070
+ readonly repository: string;
2071
+ readonly pullRequest: number;
2072
+ readonly reviewUrl: string;
2073
+ readonly goalId: string;
2074
+ readonly laneId: string;
2075
+ readonly operationId: string;
2076
+ readonly expectedAbsenceToken: string;
2077
+ readonly head: string;
2078
+ readonly baseHead: string;
2079
+ readonly owner: {
2080
+ readonly id: string;
2081
+ readonly name: string;
2082
+ };
2083
+ readonly sessionId: string;
2084
+ readonly expectedWork: string;
2085
+ readonly worker: {
2086
+ readonly host: string;
2087
+ readonly agentId: string;
2088
+ readonly name: string;
2089
+ readonly paneId: string;
2090
+ readonly relationship?: {
2091
+ readonly parentAgentId: string;
2092
+ readonly relation: "delegated" | "pair" | "review";
2093
+ };
2094
+ };
2095
+ readonly worktree: string;
2096
+ readonly branch: string;
2097
+ readonly title: string;
2098
+ readonly summary: string;
2099
+ readonly detail: string;
2100
+ } | {
2101
+ readonly kind: "work.recover";
2102
+ readonly repository: string;
2103
+ readonly pullRequest: number;
2104
+ readonly reviewUrl: string;
2105
+ readonly goalId: string;
2106
+ readonly laneId: string;
2107
+ readonly operationId: string;
2108
+ readonly expectedGoalEventId: string;
2109
+ readonly expectedGoalUpdatedAt: number;
2110
+ readonly expectedHistoryToken: string;
2111
+ readonly head: string;
2112
+ readonly baseHead: string;
2113
+ readonly owner: {
2114
+ readonly id: string;
2115
+ readonly name: string;
2116
+ };
2117
+ readonly sessionId: string;
2118
+ readonly expectedWork: string;
2119
+ readonly worker: {
2120
+ readonly host: string;
2121
+ readonly agentId: string;
2122
+ readonly name: string;
2123
+ readonly paneId: string;
2124
+ readonly relationship?: {
2125
+ readonly parentAgentId: string;
2126
+ readonly relation: "delegated" | "pair" | "review";
2127
+ };
2128
+ };
2129
+ readonly worktree: string;
2130
+ readonly branch: string;
2131
+ } | {
2132
+ readonly kind: "work.reassign";
2133
+ readonly goalId: string;
2134
+ readonly from: {
2135
+ readonly id: string;
2136
+ readonly name: string;
2137
+ };
2138
+ readonly to: {
2139
+ readonly id: string;
2140
+ readonly name: string;
2141
+ };
2142
+ readonly toAgent: {
2143
+ readonly _tag: "clear";
2144
+ } | {
2145
+ readonly _tag: "keep";
2146
+ } | {
2147
+ readonly _tag: "set";
2148
+ readonly agent: {
2149
+ readonly host: string;
2150
+ readonly agentId: string;
2151
+ readonly name: string;
2152
+ readonly paneId: string;
2153
+ readonly relationship?: {
2154
+ readonly parentAgentId: string;
2155
+ readonly relation: "delegated" | "pair" | "review";
2156
+ };
2157
+ };
2158
+ };
2159
+ readonly reason: string;
2160
+ readonly expectedGoalEventId: string;
2161
+ readonly expectedGoalUpdatedAt: number;
609
2162
  } | {
610
2163
  readonly kind: "browser.mcp.recover";
611
2164
  };
612
2165
  readonly result: string | null;
2166
+ readonly acceptedReceipt?: string | null;
2167
+ readonly durableOperation?: true;
613
2168
  readonly error: string | null;
614
2169
  readonly worker?: {
615
2170
  readonly host: string;
@@ -679,7 +2234,7 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
679
2234
  readonly error: string | null;
680
2235
  };
681
2236
  }, FleetOperationError, never>;
682
- recover: () => Effect.Effect<string[], FleetStoreError | FleetTransitionConflictError, never>;
2237
+ recover: () => Effect.Effect<string[], FleetOperationError | FleetStoreError | FleetTransitionConflictError, never>;
683
2238
  abortSubmission: (jobId: string, detail: string) => Effect.Effect<{
684
2239
  readonly id: string;
685
2240
  readonly createdAt: number;
@@ -703,16 +2258,142 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
703
2258
  readonly kind: "agent.delegate";
704
2259
  readonly repository: string;
705
2260
  readonly prompt: string;
706
- readonly mode: "consult" | "review" | "work";
2261
+ readonly mode: "consult" | "review" | "transition_summary" | "work";
707
2262
  readonly channel?: "coordinator_chat";
708
2263
  } | {
709
2264
  readonly kind: "agent.message";
710
2265
  readonly session: string;
711
2266
  readonly message: string;
2267
+ } | {
2268
+ readonly kind: "work.reconcile";
2269
+ readonly repository: string;
2270
+ readonly pullRequest: number;
2271
+ readonly goalId: string;
2272
+ readonly laneId: string;
2273
+ readonly operationId: string;
2274
+ readonly expectedRevision: number;
2275
+ readonly expectedHead: string;
2276
+ readonly newHead: string;
2277
+ readonly expectedOwner: {
2278
+ readonly id: string;
2279
+ readonly name: string;
2280
+ };
2281
+ readonly expectedGoalEventId: string;
2282
+ readonly bindingDispatchRequestId: string;
2283
+ readonly sessionId: string;
2284
+ readonly expectedWork: string;
2285
+ readonly worker: {
2286
+ readonly host: string;
2287
+ readonly agentId: string;
2288
+ readonly name: string;
2289
+ readonly paneId: string;
2290
+ readonly relationship?: {
2291
+ readonly parentAgentId: string;
2292
+ readonly relation: "delegated" | "pair" | "review";
2293
+ };
2294
+ };
2295
+ readonly worktree: string;
2296
+ readonly branch: string;
2297
+ } | {
2298
+ readonly kind: "work.admit";
2299
+ readonly repository: string;
2300
+ readonly pullRequest: number;
2301
+ readonly reviewUrl: string;
2302
+ readonly goalId: string;
2303
+ readonly laneId: string;
2304
+ readonly operationId: string;
2305
+ readonly expectedAbsenceToken: string;
2306
+ readonly head: string;
2307
+ readonly baseHead: string;
2308
+ readonly owner: {
2309
+ readonly id: string;
2310
+ readonly name: string;
2311
+ };
2312
+ readonly sessionId: string;
2313
+ readonly expectedWork: string;
2314
+ readonly worker: {
2315
+ readonly host: string;
2316
+ readonly agentId: string;
2317
+ readonly name: string;
2318
+ readonly paneId: string;
2319
+ readonly relationship?: {
2320
+ readonly parentAgentId: string;
2321
+ readonly relation: "delegated" | "pair" | "review";
2322
+ };
2323
+ };
2324
+ readonly worktree: string;
2325
+ readonly branch: string;
2326
+ readonly title: string;
2327
+ readonly summary: string;
2328
+ readonly detail: string;
2329
+ } | {
2330
+ readonly kind: "work.recover";
2331
+ readonly repository: string;
2332
+ readonly pullRequest: number;
2333
+ readonly reviewUrl: string;
2334
+ readonly goalId: string;
2335
+ readonly laneId: string;
2336
+ readonly operationId: string;
2337
+ readonly expectedGoalEventId: string;
2338
+ readonly expectedGoalUpdatedAt: number;
2339
+ readonly expectedHistoryToken: string;
2340
+ readonly head: string;
2341
+ readonly baseHead: string;
2342
+ readonly owner: {
2343
+ readonly id: string;
2344
+ readonly name: string;
2345
+ };
2346
+ readonly sessionId: string;
2347
+ readonly expectedWork: string;
2348
+ readonly worker: {
2349
+ readonly host: string;
2350
+ readonly agentId: string;
2351
+ readonly name: string;
2352
+ readonly paneId: string;
2353
+ readonly relationship?: {
2354
+ readonly parentAgentId: string;
2355
+ readonly relation: "delegated" | "pair" | "review";
2356
+ };
2357
+ };
2358
+ readonly worktree: string;
2359
+ readonly branch: string;
2360
+ } | {
2361
+ readonly kind: "work.reassign";
2362
+ readonly goalId: string;
2363
+ readonly from: {
2364
+ readonly id: string;
2365
+ readonly name: string;
2366
+ };
2367
+ readonly to: {
2368
+ readonly id: string;
2369
+ readonly name: string;
2370
+ };
2371
+ readonly toAgent: {
2372
+ readonly _tag: "clear";
2373
+ } | {
2374
+ readonly _tag: "keep";
2375
+ } | {
2376
+ readonly _tag: "set";
2377
+ readonly agent: {
2378
+ readonly host: string;
2379
+ readonly agentId: string;
2380
+ readonly name: string;
2381
+ readonly paneId: string;
2382
+ readonly relationship?: {
2383
+ readonly parentAgentId: string;
2384
+ readonly relation: "delegated" | "pair" | "review";
2385
+ };
2386
+ };
2387
+ };
2388
+ readonly reason: string;
2389
+ readonly expectedGoalEventId: string;
2390
+ readonly expectedGoalUpdatedAt: number;
712
2391
  } | {
713
2392
  readonly kind: "browser.mcp.recover";
714
2393
  };
715
2394
  readonly result: string | null;
2395
+ readonly acceptedReceipt?: string | null;
2396
+ readonly durableOperation?: true;
716
2397
  readonly error: string | null;
717
2398
  readonly worker?: {
718
2399
  readonly host: string;