@knpkv/herdr-fleet 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../src/response.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAa,MAAM,EAAU,MAAM,QAAQ,CAAA;AAC1D,OAAO,KAAK,KAAK,kBAAkB,MAAM,gCAAgC,CAAA;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAGpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AASvD,eAAO,MAAM,mBAAmB,+HAqC9B,CAAA;AAEF,eAAO,MAAM,yBAAyB,GAAmD,CAAC,wLAgBxF,CAAA"}
1
+ {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../src/response.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAa,MAAM,EAAE,MAAM,QAAQ,CAAA;AAClD,OAAO,KAAK,KAAK,kBAAkB,MAAM,gCAAgC,CAAA;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAGpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAEvD,eAAO,MAAM,mBAAmB,+HAqB9B,CAAA;AAEF,eAAO,MAAM,yBAAyB,GAAmD,CAAC,wLAgBxF,CAAA"}
package/dist/response.js CHANGED
@@ -1,31 +1,21 @@
1
- import { Effect, Predicate, Schema, Stream } from "effect";
1
+ import { collectBounded } from "@knpkv/bounded-io";
2
+ import { Effect, Predicate, Schema } from "effect";
2
3
  import { FleetResponseBodyError } from "./errors.js";
3
4
  import { fleetResponseBodyMaxBytes } from "./limits.js";
4
5
  export { fleetResponseBodyMaxBytes } from "./limits.js";
5
- const emptyResponseBody = () => ({ bytes: 0, chunks: [] });
6
6
  export const boundedResponseText = Effect.fn("FleetResponse.boundedText")(function* (response, maximumBytes = fleetResponseBodyMaxBytes) {
7
- const collected = yield* response.stream.pipe(Stream.runFoldEffect(emptyResponseBody, (state, chunk) => {
8
- const bytes = state.bytes + chunk.byteLength;
9
- return bytes > maximumBytes
10
- ? Effect.fail(new FleetResponseBodyError({
11
- cause: bytes,
12
- detail: `response body exceeded ${maximumBytes} bytes`,
13
- reason: "too_large"
14
- }))
15
- : Effect.succeed({ bytes, chunks: [...state.chunks, chunk] });
16
- }), Effect.mapError((cause) => Predicate.isTagged(cause, "FleetResponseBodyError")
17
- ? cause
7
+ // A whole-body decode, as before: a truncated trailing sequence becomes U+FFFD.
8
+ const body = yield* collectBounded(response.stream, maximumBytes).pipe(Effect.mapError((cause) => Predicate.isTagged(cause, "ByteLimitExceeded")
9
+ ? new FleetResponseBodyError({
10
+ cause: cause.observedBytes,
11
+ detail: `response body exceeded ${maximumBytes} bytes`,
12
+ reason: "too_large"
13
+ })
18
14
  : new FleetResponseBodyError({
19
15
  cause,
20
16
  detail: String(cause),
21
17
  reason: "transport"
22
18
  })));
23
- const body = new Uint8Array(collected.bytes);
24
- let offset = 0;
25
- for (const chunk of collected.chunks) {
26
- body.set(chunk, offset);
27
- offset += chunk.byteLength;
28
- }
29
19
  return new TextDecoder().decode(body);
30
20
  });
31
21
  export const decodeBoundedResponseJson = Effect.fn("FleetResponse.decodeJson")(function* (response, schema, maximumBytes = fleetResponseBodyMaxBytes) {
@@ -1 +1 @@
1
- {"version":3,"file":"response.js","sourceRoot":"","sources":["../src/response.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAEvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAOvD,MAAM,iBAAiB,GAAG,GAAsB,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAA;AAE7E,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,EAAE,CAAC,2BAA2B,CAAC,CAAC,QAAQ,CAAC,EACjF,QAA+C,EAC/C,YAAY,GAAG,yBAAyB;IAExC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAC3C,MAAM,CAAC,aAAa,CAClB,iBAAiB,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACf,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,UAAU,CAAA;QAC5C,OAAO,KAAK,GAAG,YAAY;YACzB,CAAC,CAAC,MAAM,CAAC,IAAI,CACX,IAAI,sBAAsB,CAAC;gBACzB,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,0BAA0B,YAAY,QAAQ;gBACtD,MAAM,EAAE,WAAW;aACpB,CAAC,CACH;YACD,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAA;IACjE,CAAC,CACF,EACD,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CACxB,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,wBAAwB,CAAC;QACjD,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,IAAI,sBAAsB,CAAC;YAC3B,KAAK;YACL,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;YACrB,MAAM,EAAE,WAAW;SACpB,CAAC,CACL,CACF,CAAA;IACD,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAC5C,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QACrC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QACvB,MAAM,IAAI,KAAK,CAAC,UAAU,CAAA;IAC5B,CAAC;IACD,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC,EAAE,CAAC,0BAA0B,CAAC,CAAC,QAAQ,CAAC,EACtF,QAA+C,EAC/C,MAA8C,EAC9C,YAAY,GAAG,yBAAyB;IAExC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;IAC/D,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAChF,MAAM,CAAC,QAAQ,CACb,CAAC,KAAK,EAAE,EAAE,CACR,IAAI,sBAAsB,CAAC;QACzB,KAAK;QACL,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;QACrB,MAAM,EAAE,QAAQ;KACjB,CAAC,CACL,CACF,CAAA;AACH,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"response.js","sourceRoot":"","sources":["../src/response.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAElD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAEvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAEvD,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,EAAE,CAAC,2BAA2B,CAAC,CAAC,QAAQ,CAAC,EACjF,QAA+C,EAC/C,YAAY,GAAG,yBAAyB;IAExC,gFAAgF;IAChF,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,IAAI,CACpE,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CACxB,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;QAC5C,CAAC,CAAC,IAAI,sBAAsB,CAAC;YAC3B,KAAK,EAAE,KAAK,CAAC,aAAa;YAC1B,MAAM,EAAE,0BAA0B,YAAY,QAAQ;YACtD,MAAM,EAAE,WAAW;SACpB,CAAC;QACF,CAAC,CAAC,IAAI,sBAAsB,CAAC;YAC3B,KAAK;YACL,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;YACrB,MAAM,EAAE,WAAW;SACpB,CAAC,CACL,CACF,CAAA;IACD,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC,EAAE,CAAC,0BAA0B,CAAC,CAAC,QAAQ,CAAC,EACtF,QAA+C,EAC/C,MAA8C,EAC9C,YAAY,GAAG,yBAAyB;IAExC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;IAC/D,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAChF,MAAM,CAAC,QAAQ,CACb,CAAC,KAAK,EAAE,EAAE,CACR,IAAI,sBAAsB,CAAC;QACzB,KAAK;QACL,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;QACrB,MAAM,EAAE,QAAQ;KACjB,CAAC,CACL,CACF,CAAA;AACH,CAAC,CAAC,CAAA"}
package/dist/service.d.ts CHANGED
@@ -74,11 +74,20 @@ type Options = {
74
74
  export declare const makeFleetService: (options: Options) => Effect.Effect<{
75
75
  submit: (request: {
76
76
  readonly payload: {
77
+ readonly kind: "nix.check";
78
+ } | {
79
+ readonly kind: "nix.apply";
80
+ readonly ref: string;
81
+ } | {
77
82
  readonly kind: "agent.delegate";
78
83
  readonly repository: string;
79
84
  readonly prompt: string;
80
85
  readonly mode: "consult" | "review" | "transition_summary" | "work";
81
86
  readonly channel?: "coordinator_chat";
87
+ } | {
88
+ readonly kind: "agent.message";
89
+ readonly session: string;
90
+ readonly message: string;
82
91
  } | {
83
92
  readonly kind: "work.reconcile";
84
93
  readonly repository: string;
@@ -205,15 +214,6 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
205
214
  readonly expectedGoalUpdatedAt: number;
206
215
  } | {
207
216
  readonly kind: "browser.mcp.recover";
208
- } | {
209
- readonly kind: "nix.check";
210
- } | {
211
- readonly kind: "nix.apply";
212
- readonly ref: string;
213
- } | {
214
- readonly kind: "agent.message";
215
- readonly session: string;
216
- readonly message: string;
217
217
  };
218
218
  }, actor: string, provenance?: SubmissionProvenance | undefined) => Effect.Effect<{
219
219
  readonly id: string;
@@ -230,11 +230,20 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
230
230
  readonly expiredAt?: number | null;
231
231
  readonly status: "expired" | "failed" | "interrupted" | "pending_approval" | "queued" | "rejected" | "running" | "succeeded";
232
232
  readonly payload: {
233
+ readonly kind: "nix.check";
234
+ } | {
235
+ readonly kind: "nix.apply";
236
+ readonly ref: string;
237
+ } | {
233
238
  readonly kind: "agent.delegate";
234
239
  readonly repository: string;
235
240
  readonly prompt: string;
236
241
  readonly mode: "consult" | "review" | "transition_summary" | "work";
237
242
  readonly channel?: "coordinator_chat";
243
+ } | {
244
+ readonly kind: "agent.message";
245
+ readonly session: string;
246
+ readonly message: string;
238
247
  } | {
239
248
  readonly kind: "work.reconcile";
240
249
  readonly repository: string;
@@ -361,15 +370,6 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
361
370
  readonly expectedGoalUpdatedAt: number;
362
371
  } | {
363
372
  readonly kind: "browser.mcp.recover";
364
- } | {
365
- readonly kind: "nix.check";
366
- } | {
367
- readonly kind: "nix.apply";
368
- readonly ref: string;
369
- } | {
370
- readonly kind: "agent.message";
371
- readonly session: string;
372
- readonly message: string;
373
373
  };
374
374
  readonly result: string | null;
375
375
  readonly acceptedReceipt?: string | null;
@@ -407,11 +407,20 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
407
407
  readonly expiredAt?: number | null;
408
408
  readonly status: "expired" | "failed" | "interrupted" | "pending_approval" | "queued" | "rejected" | "running" | "succeeded";
409
409
  readonly payload: {
410
+ readonly kind: "nix.check";
411
+ } | {
412
+ readonly kind: "nix.apply";
413
+ readonly ref: string;
414
+ } | {
410
415
  readonly kind: "agent.delegate";
411
416
  readonly repository: string;
412
417
  readonly prompt: string;
413
418
  readonly mode: "consult" | "review" | "transition_summary" | "work";
414
419
  readonly channel?: "coordinator_chat";
420
+ } | {
421
+ readonly kind: "agent.message";
422
+ readonly session: string;
423
+ readonly message: string;
415
424
  } | {
416
425
  readonly kind: "work.reconcile";
417
426
  readonly repository: string;
@@ -538,15 +547,6 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
538
547
  readonly expectedGoalUpdatedAt: number;
539
548
  } | {
540
549
  readonly kind: "browser.mcp.recover";
541
- } | {
542
- readonly kind: "nix.check";
543
- } | {
544
- readonly kind: "nix.apply";
545
- readonly ref: string;
546
- } | {
547
- readonly kind: "agent.message";
548
- readonly session: string;
549
- readonly message: string;
550
550
  };
551
551
  readonly result: string | null;
552
552
  readonly acceptedReceipt?: string | null;
@@ -584,11 +584,20 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
584
584
  readonly expiredAt?: number | null;
585
585
  readonly status: "expired" | "failed" | "interrupted" | "pending_approval" | "queued" | "rejected" | "running" | "succeeded";
586
586
  readonly payload: {
587
+ readonly kind: "nix.check";
588
+ } | {
589
+ readonly kind: "nix.apply";
590
+ readonly ref: string;
591
+ } | {
587
592
  readonly kind: "agent.delegate";
588
593
  readonly repository: string;
589
594
  readonly prompt: string;
590
595
  readonly mode: "consult" | "review" | "transition_summary" | "work";
591
596
  readonly channel?: "coordinator_chat";
597
+ } | {
598
+ readonly kind: "agent.message";
599
+ readonly session: string;
600
+ readonly message: string;
592
601
  } | {
593
602
  readonly kind: "work.reconcile";
594
603
  readonly repository: string;
@@ -715,15 +724,6 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
715
724
  readonly expectedGoalUpdatedAt: number;
716
725
  } | {
717
726
  readonly kind: "browser.mcp.recover";
718
- } | {
719
- readonly kind: "nix.check";
720
- } | {
721
- readonly kind: "nix.apply";
722
- readonly ref: string;
723
- } | {
724
- readonly kind: "agent.message";
725
- readonly session: string;
726
- readonly message: string;
727
727
  };
728
728
  readonly result: string | null;
729
729
  readonly acceptedReceipt?: string | null;
@@ -761,11 +761,20 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
761
761
  readonly expiredAt?: number | null;
762
762
  readonly status: "expired" | "failed" | "interrupted" | "pending_approval" | "queued" | "rejected" | "running" | "succeeded";
763
763
  readonly payload: {
764
+ readonly kind: "nix.check";
765
+ } | {
766
+ readonly kind: "nix.apply";
767
+ readonly ref: string;
768
+ } | {
764
769
  readonly kind: "agent.delegate";
765
770
  readonly repository: string;
766
771
  readonly prompt: string;
767
772
  readonly mode: "consult" | "review" | "transition_summary" | "work";
768
773
  readonly channel?: "coordinator_chat";
774
+ } | {
775
+ readonly kind: "agent.message";
776
+ readonly session: string;
777
+ readonly message: string;
769
778
  } | {
770
779
  readonly kind: "work.reconcile";
771
780
  readonly repository: string;
@@ -892,15 +901,6 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
892
901
  readonly expectedGoalUpdatedAt: number;
893
902
  } | {
894
903
  readonly kind: "browser.mcp.recover";
895
- } | {
896
- readonly kind: "nix.check";
897
- } | {
898
- readonly kind: "nix.apply";
899
- readonly ref: string;
900
- } | {
901
- readonly kind: "agent.message";
902
- readonly session: string;
903
- readonly message: string;
904
904
  };
905
905
  readonly result: string | null;
906
906
  readonly acceptedReceipt?: string | null;
@@ -938,11 +938,20 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
938
938
  readonly expiredAt?: number | null;
939
939
  readonly status: "expired" | "failed" | "interrupted" | "pending_approval" | "queued" | "rejected" | "running" | "succeeded";
940
940
  readonly payload: {
941
+ readonly kind: "nix.check";
942
+ } | {
943
+ readonly kind: "nix.apply";
944
+ readonly ref: string;
945
+ } | {
941
946
  readonly kind: "agent.delegate";
942
947
  readonly repository: string;
943
948
  readonly prompt: string;
944
949
  readonly mode: "consult" | "review" | "transition_summary" | "work";
945
950
  readonly channel?: "coordinator_chat";
951
+ } | {
952
+ readonly kind: "agent.message";
953
+ readonly session: string;
954
+ readonly message: string;
946
955
  } | {
947
956
  readonly kind: "work.reconcile";
948
957
  readonly repository: string;
@@ -1069,15 +1078,6 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
1069
1078
  readonly expectedGoalUpdatedAt: number;
1070
1079
  } | {
1071
1080
  readonly kind: "browser.mcp.recover";
1072
- } | {
1073
- readonly kind: "nix.check";
1074
- } | {
1075
- readonly kind: "nix.apply";
1076
- readonly ref: string;
1077
- } | {
1078
- readonly kind: "agent.message";
1079
- readonly session: string;
1080
- readonly message: string;
1081
1081
  };
1082
1082
  readonly result: string | null;
1083
1083
  readonly acceptedReceipt?: string | null;
@@ -1115,11 +1115,20 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
1115
1115
  readonly expiredAt?: number | null;
1116
1116
  readonly status: "expired" | "failed" | "interrupted" | "pending_approval" | "queued" | "rejected" | "running" | "succeeded";
1117
1117
  readonly payload: {
1118
+ readonly kind: "nix.check";
1119
+ } | {
1120
+ readonly kind: "nix.apply";
1121
+ readonly ref: string;
1122
+ } | {
1118
1123
  readonly kind: "agent.delegate";
1119
1124
  readonly repository: string;
1120
1125
  readonly prompt: string;
1121
1126
  readonly mode: "consult" | "review" | "transition_summary" | "work";
1122
1127
  readonly channel?: "coordinator_chat";
1128
+ } | {
1129
+ readonly kind: "agent.message";
1130
+ readonly session: string;
1131
+ readonly message: string;
1123
1132
  } | {
1124
1133
  readonly kind: "work.reconcile";
1125
1134
  readonly repository: string;
@@ -1246,15 +1255,6 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
1246
1255
  readonly expectedGoalUpdatedAt: number;
1247
1256
  } | {
1248
1257
  readonly kind: "browser.mcp.recover";
1249
- } | {
1250
- readonly kind: "nix.check";
1251
- } | {
1252
- readonly kind: "nix.apply";
1253
- readonly ref: string;
1254
- } | {
1255
- readonly kind: "agent.message";
1256
- readonly session: string;
1257
- readonly message: string;
1258
1258
  };
1259
1259
  readonly result: string | null;
1260
1260
  readonly acceptedReceipt?: string | null;
@@ -1292,11 +1292,20 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
1292
1292
  readonly expiredAt?: number | null;
1293
1293
  readonly status: "expired" | "failed" | "interrupted" | "pending_approval" | "queued" | "rejected" | "running" | "succeeded";
1294
1294
  readonly payload: {
1295
+ readonly kind: "nix.check";
1296
+ } | {
1297
+ readonly kind: "nix.apply";
1298
+ readonly ref: string;
1299
+ } | {
1295
1300
  readonly kind: "agent.delegate";
1296
1301
  readonly repository: string;
1297
1302
  readonly prompt: string;
1298
1303
  readonly mode: "consult" | "review" | "transition_summary" | "work";
1299
1304
  readonly channel?: "coordinator_chat";
1305
+ } | {
1306
+ readonly kind: "agent.message";
1307
+ readonly session: string;
1308
+ readonly message: string;
1300
1309
  } | {
1301
1310
  readonly kind: "work.reconcile";
1302
1311
  readonly repository: string;
@@ -1423,15 +1432,6 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
1423
1432
  readonly expectedGoalUpdatedAt: number;
1424
1433
  } | {
1425
1434
  readonly kind: "browser.mcp.recover";
1426
- } | {
1427
- readonly kind: "nix.check";
1428
- } | {
1429
- readonly kind: "nix.apply";
1430
- readonly ref: string;
1431
- } | {
1432
- readonly kind: "agent.message";
1433
- readonly session: string;
1434
- readonly message: string;
1435
1435
  };
1436
1436
  readonly result: string | null;
1437
1437
  readonly acceptedReceipt?: string | null;
@@ -1472,11 +1472,20 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
1472
1472
  readonly expiredAt?: number | null;
1473
1473
  readonly status: "expired" | "failed" | "interrupted" | "pending_approval" | "queued" | "rejected" | "running" | "succeeded";
1474
1474
  readonly payload: {
1475
+ readonly kind: "nix.check";
1476
+ } | {
1477
+ readonly kind: "nix.apply";
1478
+ readonly ref: string;
1479
+ } | {
1475
1480
  readonly kind: "agent.delegate";
1476
1481
  readonly repository: string;
1477
1482
  readonly prompt: string;
1478
1483
  readonly mode: "consult" | "review" | "transition_summary" | "work";
1479
1484
  readonly channel?: "coordinator_chat";
1485
+ } | {
1486
+ readonly kind: "agent.message";
1487
+ readonly session: string;
1488
+ readonly message: string;
1480
1489
  } | {
1481
1490
  readonly kind: "work.reconcile";
1482
1491
  readonly repository: string;
@@ -1603,15 +1612,6 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
1603
1612
  readonly expectedGoalUpdatedAt: number;
1604
1613
  } | {
1605
1614
  readonly kind: "browser.mcp.recover";
1606
- } | {
1607
- readonly kind: "nix.check";
1608
- } | {
1609
- readonly kind: "nix.apply";
1610
- readonly ref: string;
1611
- } | {
1612
- readonly kind: "agent.message";
1613
- readonly session: string;
1614
- readonly message: string;
1615
1615
  };
1616
1616
  readonly result: string | null;
1617
1617
  readonly acceptedReceipt?: string | null;
@@ -1653,11 +1653,20 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
1653
1653
  readonly expiredAt?: number | null;
1654
1654
  readonly status: "expired" | "failed" | "interrupted" | "pending_approval" | "queued" | "rejected" | "running" | "succeeded";
1655
1655
  readonly payload: {
1656
+ readonly kind: "nix.check";
1657
+ } | {
1658
+ readonly kind: "nix.apply";
1659
+ readonly ref: string;
1660
+ } | {
1656
1661
  readonly kind: "agent.delegate";
1657
1662
  readonly repository: string;
1658
1663
  readonly prompt: string;
1659
1664
  readonly mode: "consult" | "review" | "transition_summary" | "work";
1660
1665
  readonly channel?: "coordinator_chat";
1666
+ } | {
1667
+ readonly kind: "agent.message";
1668
+ readonly session: string;
1669
+ readonly message: string;
1661
1670
  } | {
1662
1671
  readonly kind: "work.reconcile";
1663
1672
  readonly repository: string;
@@ -1784,15 +1793,6 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
1784
1793
  readonly expectedGoalUpdatedAt: number;
1785
1794
  } | {
1786
1795
  readonly kind: "browser.mcp.recover";
1787
- } | {
1788
- readonly kind: "nix.check";
1789
- } | {
1790
- readonly kind: "nix.apply";
1791
- readonly ref: string;
1792
- } | {
1793
- readonly kind: "agent.message";
1794
- readonly session: string;
1795
- readonly message: string;
1796
1796
  };
1797
1797
  readonly result: string | null;
1798
1798
  readonly acceptedReceipt?: string | null;
@@ -1839,11 +1839,20 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
1839
1839
  readonly expiredAt?: number | null;
1840
1840
  readonly status: "expired" | "failed" | "interrupted" | "pending_approval" | "queued" | "rejected" | "running" | "succeeded";
1841
1841
  readonly payload: {
1842
+ readonly kind: "nix.check";
1843
+ } | {
1844
+ readonly kind: "nix.apply";
1845
+ readonly ref: string;
1846
+ } | {
1842
1847
  readonly kind: "agent.delegate";
1843
1848
  readonly repository: string;
1844
1849
  readonly prompt: string;
1845
1850
  readonly mode: "consult" | "review" | "transition_summary" | "work";
1846
1851
  readonly channel?: "coordinator_chat";
1852
+ } | {
1853
+ readonly kind: "agent.message";
1854
+ readonly session: string;
1855
+ readonly message: string;
1847
1856
  } | {
1848
1857
  readonly kind: "work.reconcile";
1849
1858
  readonly repository: string;
@@ -1970,15 +1979,6 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
1970
1979
  readonly expectedGoalUpdatedAt: number;
1971
1980
  } | {
1972
1981
  readonly kind: "browser.mcp.recover";
1973
- } | {
1974
- readonly kind: "nix.check";
1975
- } | {
1976
- readonly kind: "nix.apply";
1977
- readonly ref: string;
1978
- } | {
1979
- readonly kind: "agent.message";
1980
- readonly session: string;
1981
- readonly message: string;
1982
1982
  };
1983
1983
  readonly result: string | null;
1984
1984
  readonly acceptedReceipt?: string | null;
@@ -2021,11 +2021,20 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
2021
2021
  readonly expiredAt?: number | null;
2022
2022
  readonly status: "expired" | "failed" | "interrupted" | "pending_approval" | "queued" | "rejected" | "running" | "succeeded";
2023
2023
  readonly payload: {
2024
+ readonly kind: "nix.check";
2025
+ } | {
2026
+ readonly kind: "nix.apply";
2027
+ readonly ref: string;
2028
+ } | {
2024
2029
  readonly kind: "agent.delegate";
2025
2030
  readonly repository: string;
2026
2031
  readonly prompt: string;
2027
2032
  readonly mode: "consult" | "review" | "transition_summary" | "work";
2028
2033
  readonly channel?: "coordinator_chat";
2034
+ } | {
2035
+ readonly kind: "agent.message";
2036
+ readonly session: string;
2037
+ readonly message: string;
2029
2038
  } | {
2030
2039
  readonly kind: "work.reconcile";
2031
2040
  readonly repository: string;
@@ -2152,15 +2161,6 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
2152
2161
  readonly expectedGoalUpdatedAt: number;
2153
2162
  } | {
2154
2163
  readonly kind: "browser.mcp.recover";
2155
- } | {
2156
- readonly kind: "nix.check";
2157
- } | {
2158
- readonly kind: "nix.apply";
2159
- readonly ref: string;
2160
- } | {
2161
- readonly kind: "agent.message";
2162
- readonly session: string;
2163
- readonly message: string;
2164
2164
  };
2165
2165
  readonly result: string | null;
2166
2166
  readonly acceptedReceipt?: string | null;
@@ -2250,11 +2250,20 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
2250
2250
  readonly expiredAt?: number | null;
2251
2251
  readonly status: "expired" | "failed" | "interrupted" | "pending_approval" | "queued" | "rejected" | "running" | "succeeded";
2252
2252
  readonly payload: {
2253
+ readonly kind: "nix.check";
2254
+ } | {
2255
+ readonly kind: "nix.apply";
2256
+ readonly ref: string;
2257
+ } | {
2253
2258
  readonly kind: "agent.delegate";
2254
2259
  readonly repository: string;
2255
2260
  readonly prompt: string;
2256
2261
  readonly mode: "consult" | "review" | "transition_summary" | "work";
2257
2262
  readonly channel?: "coordinator_chat";
2263
+ } | {
2264
+ readonly kind: "agent.message";
2265
+ readonly session: string;
2266
+ readonly message: string;
2258
2267
  } | {
2259
2268
  readonly kind: "work.reconcile";
2260
2269
  readonly repository: string;
@@ -2381,15 +2390,6 @@ export declare const makeFleetService: (options: Options) => Effect.Effect<{
2381
2390
  readonly expectedGoalUpdatedAt: number;
2382
2391
  } | {
2383
2392
  readonly kind: "browser.mcp.recover";
2384
- } | {
2385
- readonly kind: "nix.check";
2386
- } | {
2387
- readonly kind: "nix.apply";
2388
- readonly ref: string;
2389
- } | {
2390
- readonly kind: "agent.message";
2391
- readonly session: string;
2392
- readonly message: string;
2393
2393
  };
2394
2394
  readonly result: string | null;
2395
2395
  readonly acceptedReceipt?: string | null;
package/dist/store.d.ts CHANGED
@@ -20,20 +20,11 @@ export declare class JobStore {
20
20
  readonly expiredAt?: number | null;
21
21
  readonly status: "expired" | "failed" | "interrupted" | "pending_approval" | "queued" | "rejected" | "running" | "succeeded";
22
22
  readonly payload: {
23
- readonly kind: "nix.check";
24
- } | {
25
- readonly kind: "nix.apply";
26
- readonly ref: string;
27
- } | {
28
23
  readonly kind: "agent.delegate";
29
24
  readonly repository: string;
30
25
  readonly prompt: string;
31
26
  readonly mode: "consult" | "review" | "transition_summary" | "work";
32
27
  readonly channel?: "coordinator_chat";
33
- } | {
34
- readonly kind: "agent.message";
35
- readonly session: string;
36
- readonly message: string;
37
28
  } | {
38
29
  readonly kind: "work.reconcile";
39
30
  readonly repository: string;
@@ -160,6 +151,15 @@ export declare class JobStore {
160
151
  readonly expectedGoalUpdatedAt: number;
161
152
  } | {
162
153
  readonly kind: "browser.mcp.recover";
154
+ } | {
155
+ readonly kind: "nix.check";
156
+ } | {
157
+ readonly kind: "nix.apply";
158
+ readonly ref: string;
159
+ } | {
160
+ readonly kind: "agent.message";
161
+ readonly session: string;
162
+ readonly message: string;
163
163
  };
164
164
  readonly result: string | null;
165
165
  readonly acceptedReceipt?: string | null;
@@ -196,20 +196,11 @@ export declare class JobStore {
196
196
  readonly expiredAt?: number | null;
197
197
  readonly status: "expired" | "failed" | "interrupted" | "pending_approval" | "queued" | "rejected" | "running" | "succeeded";
198
198
  readonly payload: {
199
- readonly kind: "nix.check";
200
- } | {
201
- readonly kind: "nix.apply";
202
- readonly ref: string;
203
- } | {
204
199
  readonly kind: "agent.delegate";
205
200
  readonly repository: string;
206
201
  readonly prompt: string;
207
202
  readonly mode: "consult" | "review" | "transition_summary" | "work";
208
203
  readonly channel?: "coordinator_chat";
209
- } | {
210
- readonly kind: "agent.message";
211
- readonly session: string;
212
- readonly message: string;
213
204
  } | {
214
205
  readonly kind: "work.reconcile";
215
206
  readonly repository: string;
@@ -336,6 +327,15 @@ export declare class JobStore {
336
327
  readonly expectedGoalUpdatedAt: number;
337
328
  } | {
338
329
  readonly kind: "browser.mcp.recover";
330
+ } | {
331
+ readonly kind: "nix.check";
332
+ } | {
333
+ readonly kind: "nix.apply";
334
+ readonly ref: string;
335
+ } | {
336
+ readonly kind: "agent.message";
337
+ readonly session: string;
338
+ readonly message: string;
339
339
  };
340
340
  readonly result: string | null;
341
341
  readonly acceptedReceipt?: string | null;
@@ -373,20 +373,11 @@ export declare class JobStore {
373
373
  readonly expiredAt?: number | null;
374
374
  readonly status: "expired" | "failed" | "interrupted" | "pending_approval" | "queued" | "rejected" | "running" | "succeeded";
375
375
  readonly payload: {
376
- readonly kind: "nix.check";
377
- } | {
378
- readonly kind: "nix.apply";
379
- readonly ref: string;
380
- } | {
381
376
  readonly kind: "agent.delegate";
382
377
  readonly repository: string;
383
378
  readonly prompt: string;
384
379
  readonly mode: "consult" | "review" | "transition_summary" | "work";
385
380
  readonly channel?: "coordinator_chat";
386
- } | {
387
- readonly kind: "agent.message";
388
- readonly session: string;
389
- readonly message: string;
390
381
  } | {
391
382
  readonly kind: "work.reconcile";
392
383
  readonly repository: string;
@@ -513,6 +504,15 @@ export declare class JobStore {
513
504
  readonly expectedGoalUpdatedAt: number;
514
505
  } | {
515
506
  readonly kind: "browser.mcp.recover";
507
+ } | {
508
+ readonly kind: "nix.check";
509
+ } | {
510
+ readonly kind: "nix.apply";
511
+ readonly ref: string;
512
+ } | {
513
+ readonly kind: "agent.message";
514
+ readonly session: string;
515
+ readonly message: string;
516
516
  };
517
517
  readonly result: string | null;
518
518
  readonly acceptedReceipt?: string | null;
@@ -549,20 +549,11 @@ export declare class JobStore {
549
549
  readonly expiredAt?: number | null;
550
550
  readonly status: "expired" | "failed" | "interrupted" | "pending_approval" | "queued" | "rejected" | "running" | "succeeded";
551
551
  readonly payload: {
552
- readonly kind: "nix.check";
553
- } | {
554
- readonly kind: "nix.apply";
555
- readonly ref: string;
556
- } | {
557
552
  readonly kind: "agent.delegate";
558
553
  readonly repository: string;
559
554
  readonly prompt: string;
560
555
  readonly mode: "consult" | "review" | "transition_summary" | "work";
561
556
  readonly channel?: "coordinator_chat";
562
- } | {
563
- readonly kind: "agent.message";
564
- readonly session: string;
565
- readonly message: string;
566
557
  } | {
567
558
  readonly kind: "work.reconcile";
568
559
  readonly repository: string;
@@ -689,6 +680,15 @@ export declare class JobStore {
689
680
  readonly expectedGoalUpdatedAt: number;
690
681
  } | {
691
682
  readonly kind: "browser.mcp.recover";
683
+ } | {
684
+ readonly kind: "nix.check";
685
+ } | {
686
+ readonly kind: "nix.apply";
687
+ readonly ref: string;
688
+ } | {
689
+ readonly kind: "agent.message";
690
+ readonly session: string;
691
+ readonly message: string;
692
692
  };
693
693
  readonly result: string | null;
694
694
  readonly acceptedReceipt?: string | null;
@@ -725,20 +725,11 @@ export declare class JobStore {
725
725
  readonly expiredAt?: number | null;
726
726
  readonly status: "expired" | "failed" | "interrupted" | "pending_approval" | "queued" | "rejected" | "running" | "succeeded";
727
727
  readonly payload: {
728
- readonly kind: "nix.check";
729
- } | {
730
- readonly kind: "nix.apply";
731
- readonly ref: string;
732
- } | {
733
728
  readonly kind: "agent.delegate";
734
729
  readonly repository: string;
735
730
  readonly prompt: string;
736
731
  readonly mode: "consult" | "review" | "transition_summary" | "work";
737
732
  readonly channel?: "coordinator_chat";
738
- } | {
739
- readonly kind: "agent.message";
740
- readonly session: string;
741
- readonly message: string;
742
733
  } | {
743
734
  readonly kind: "work.reconcile";
744
735
  readonly repository: string;
@@ -865,6 +856,15 @@ export declare class JobStore {
865
856
  readonly expectedGoalUpdatedAt: number;
866
857
  } | {
867
858
  readonly kind: "browser.mcp.recover";
859
+ } | {
860
+ readonly kind: "nix.check";
861
+ } | {
862
+ readonly kind: "nix.apply";
863
+ readonly ref: string;
864
+ } | {
865
+ readonly kind: "agent.message";
866
+ readonly session: string;
867
+ readonly message: string;
868
868
  };
869
869
  readonly result: string | null;
870
870
  readonly acceptedReceipt?: string | null;
@@ -902,20 +902,11 @@ export declare class JobStore {
902
902
  readonly expiredAt?: number | null;
903
903
  readonly status: "expired" | "failed" | "interrupted" | "pending_approval" | "queued" | "rejected" | "running" | "succeeded";
904
904
  readonly payload: {
905
- readonly kind: "nix.check";
906
- } | {
907
- readonly kind: "nix.apply";
908
- readonly ref: string;
909
- } | {
910
905
  readonly kind: "agent.delegate";
911
906
  readonly repository: string;
912
907
  readonly prompt: string;
913
908
  readonly mode: "consult" | "review" | "transition_summary" | "work";
914
909
  readonly channel?: "coordinator_chat";
915
- } | {
916
- readonly kind: "agent.message";
917
- readonly session: string;
918
- readonly message: string;
919
910
  } | {
920
911
  readonly kind: "work.reconcile";
921
912
  readonly repository: string;
@@ -1042,6 +1033,15 @@ export declare class JobStore {
1042
1033
  readonly expectedGoalUpdatedAt: number;
1043
1034
  } | {
1044
1035
  readonly kind: "browser.mcp.recover";
1036
+ } | {
1037
+ readonly kind: "nix.check";
1038
+ } | {
1039
+ readonly kind: "nix.apply";
1040
+ readonly ref: string;
1041
+ } | {
1042
+ readonly kind: "agent.message";
1043
+ readonly session: string;
1044
+ readonly message: string;
1045
1045
  };
1046
1046
  readonly result: string | null;
1047
1047
  readonly acceptedReceipt?: string | null;
@@ -1079,20 +1079,11 @@ export declare class JobStore {
1079
1079
  readonly expiredAt?: number | null;
1080
1080
  readonly status: "expired" | "failed" | "interrupted" | "pending_approval" | "queued" | "rejected" | "running" | "succeeded";
1081
1081
  readonly payload: {
1082
- readonly kind: "nix.check";
1083
- } | {
1084
- readonly kind: "nix.apply";
1085
- readonly ref: string;
1086
- } | {
1087
1082
  readonly kind: "agent.delegate";
1088
1083
  readonly repository: string;
1089
1084
  readonly prompt: string;
1090
1085
  readonly mode: "consult" | "review" | "transition_summary" | "work";
1091
1086
  readonly channel?: "coordinator_chat";
1092
- } | {
1093
- readonly kind: "agent.message";
1094
- readonly session: string;
1095
- readonly message: string;
1096
1087
  } | {
1097
1088
  readonly kind: "work.reconcile";
1098
1089
  readonly repository: string;
@@ -1219,6 +1210,15 @@ export declare class JobStore {
1219
1210
  readonly expectedGoalUpdatedAt: number;
1220
1211
  } | {
1221
1212
  readonly kind: "browser.mcp.recover";
1213
+ } | {
1214
+ readonly kind: "nix.check";
1215
+ } | {
1216
+ readonly kind: "nix.apply";
1217
+ readonly ref: string;
1218
+ } | {
1219
+ readonly kind: "agent.message";
1220
+ readonly session: string;
1221
+ readonly message: string;
1222
1222
  };
1223
1223
  readonly result: string | null;
1224
1224
  readonly acceptedReceipt?: string | null;
@@ -1259,20 +1259,11 @@ export declare class JobStore {
1259
1259
  readonly expiredAt?: number | null;
1260
1260
  readonly status: "expired" | "failed" | "interrupted" | "pending_approval" | "queued" | "rejected" | "running" | "succeeded";
1261
1261
  readonly payload: {
1262
- readonly kind: "nix.check";
1263
- } | {
1264
- readonly kind: "nix.apply";
1265
- readonly ref: string;
1266
- } | {
1267
1262
  readonly kind: "agent.delegate";
1268
1263
  readonly repository: string;
1269
1264
  readonly prompt: string;
1270
1265
  readonly mode: "consult" | "review" | "transition_summary" | "work";
1271
1266
  readonly channel?: "coordinator_chat";
1272
- } | {
1273
- readonly kind: "agent.message";
1274
- readonly session: string;
1275
- readonly message: string;
1276
1267
  } | {
1277
1268
  readonly kind: "work.reconcile";
1278
1269
  readonly repository: string;
@@ -1399,6 +1390,15 @@ export declare class JobStore {
1399
1390
  readonly expectedGoalUpdatedAt: number;
1400
1391
  } | {
1401
1392
  readonly kind: "browser.mcp.recover";
1393
+ } | {
1394
+ readonly kind: "nix.check";
1395
+ } | {
1396
+ readonly kind: "nix.apply";
1397
+ readonly ref: string;
1398
+ } | {
1399
+ readonly kind: "agent.message";
1400
+ readonly session: string;
1401
+ readonly message: string;
1402
1402
  };
1403
1403
  readonly result: string | null;
1404
1404
  readonly acceptedReceipt?: string | null;
@@ -1439,20 +1439,11 @@ export declare class JobStore {
1439
1439
  readonly expiredAt?: number | null;
1440
1440
  readonly status: "expired" | "failed" | "interrupted" | "pending_approval" | "queued" | "rejected" | "running" | "succeeded";
1441
1441
  readonly payload: {
1442
- readonly kind: "nix.check";
1443
- } | {
1444
- readonly kind: "nix.apply";
1445
- readonly ref: string;
1446
- } | {
1447
1442
  readonly kind: "agent.delegate";
1448
1443
  readonly repository: string;
1449
1444
  readonly prompt: string;
1450
1445
  readonly mode: "consult" | "review" | "transition_summary" | "work";
1451
1446
  readonly channel?: "coordinator_chat";
1452
- } | {
1453
- readonly kind: "agent.message";
1454
- readonly session: string;
1455
- readonly message: string;
1456
1447
  } | {
1457
1448
  readonly kind: "work.reconcile";
1458
1449
  readonly repository: string;
@@ -1579,6 +1570,15 @@ export declare class JobStore {
1579
1570
  readonly expectedGoalUpdatedAt: number;
1580
1571
  } | {
1581
1572
  readonly kind: "browser.mcp.recover";
1573
+ } | {
1574
+ readonly kind: "nix.check";
1575
+ } | {
1576
+ readonly kind: "nix.apply";
1577
+ readonly ref: string;
1578
+ } | {
1579
+ readonly kind: "agent.message";
1580
+ readonly session: string;
1581
+ readonly message: string;
1582
1582
  };
1583
1583
  readonly result: string | null;
1584
1584
  readonly acceptedReceipt?: string | null;
@@ -1616,20 +1616,11 @@ export declare class JobStore {
1616
1616
  readonly expiredAt?: number | null;
1617
1617
  readonly status: "expired" | "failed" | "interrupted" | "pending_approval" | "queued" | "rejected" | "running" | "succeeded";
1618
1618
  readonly payload: {
1619
- readonly kind: "nix.check";
1620
- } | {
1621
- readonly kind: "nix.apply";
1622
- readonly ref: string;
1623
- } | {
1624
1619
  readonly kind: "agent.delegate";
1625
1620
  readonly repository: string;
1626
1621
  readonly prompt: string;
1627
1622
  readonly mode: "consult" | "review" | "transition_summary" | "work";
1628
1623
  readonly channel?: "coordinator_chat";
1629
- } | {
1630
- readonly kind: "agent.message";
1631
- readonly session: string;
1632
- readonly message: string;
1633
1624
  } | {
1634
1625
  readonly kind: "work.reconcile";
1635
1626
  readonly repository: string;
@@ -1756,6 +1747,15 @@ export declare class JobStore {
1756
1747
  readonly expectedGoalUpdatedAt: number;
1757
1748
  } | {
1758
1749
  readonly kind: "browser.mcp.recover";
1750
+ } | {
1751
+ readonly kind: "nix.check";
1752
+ } | {
1753
+ readonly kind: "nix.apply";
1754
+ readonly ref: string;
1755
+ } | {
1756
+ readonly kind: "agent.message";
1757
+ readonly session: string;
1758
+ readonly message: string;
1759
1759
  };
1760
1760
  readonly result: string | null;
1761
1761
  readonly acceptedReceipt?: string | null;
@@ -1793,20 +1793,11 @@ export declare class JobStore {
1793
1793
  readonly expiredAt?: number | null;
1794
1794
  readonly status: "expired" | "failed" | "interrupted" | "pending_approval" | "queued" | "rejected" | "running" | "succeeded";
1795
1795
  readonly payload: {
1796
- readonly kind: "nix.check";
1797
- } | {
1798
- readonly kind: "nix.apply";
1799
- readonly ref: string;
1800
- } | {
1801
1796
  readonly kind: "agent.delegate";
1802
1797
  readonly repository: string;
1803
1798
  readonly prompt: string;
1804
1799
  readonly mode: "consult" | "review" | "transition_summary" | "work";
1805
1800
  readonly channel?: "coordinator_chat";
1806
- } | {
1807
- readonly kind: "agent.message";
1808
- readonly session: string;
1809
- readonly message: string;
1810
1801
  } | {
1811
1802
  readonly kind: "work.reconcile";
1812
1803
  readonly repository: string;
@@ -1933,6 +1924,15 @@ export declare class JobStore {
1933
1924
  readonly expectedGoalUpdatedAt: number;
1934
1925
  } | {
1935
1926
  readonly kind: "browser.mcp.recover";
1927
+ } | {
1928
+ readonly kind: "nix.check";
1929
+ } | {
1930
+ readonly kind: "nix.apply";
1931
+ readonly ref: string;
1932
+ } | {
1933
+ readonly kind: "agent.message";
1934
+ readonly session: string;
1935
+ readonly message: string;
1936
1936
  };
1937
1937
  readonly result: string | null;
1938
1938
  readonly acceptedReceipt?: string | null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@knpkv/herdr-fleet",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "Typed job protocol and local authority runtime for Herdr fleets",
5
5
  "license": "MIT",
6
6
  "author": "knpkv",
@@ -42,7 +42,8 @@
42
42
  "node": ">=26"
43
43
  },
44
44
  "dependencies": {
45
- "effect": "4.0.0"
45
+ "effect": "4.0.0",
46
+ "@knpkv/bounded-io": "^0.2.0"
46
47
  },
47
48
  "devDependencies": {
48
49
  "@effect/platform-node": "4.0.0",