@agent-relay/factory 0.1.62 → 0.1.63

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.
Files changed (154) hide show
  1. package/README.md +117 -15
  2. package/dist/cli/exit-codes.d.ts +81 -0
  3. package/dist/cli/exit-codes.d.ts.map +1 -0
  4. package/dist/cli/exit-codes.js +122 -0
  5. package/dist/cli/exit-codes.js.map +1 -0
  6. package/dist/cli/fleet.d.ts +22 -2
  7. package/dist/cli/fleet.d.ts.map +1 -1
  8. package/dist/cli/fleet.js +152 -33
  9. package/dist/cli/fleet.js.map +1 -1
  10. package/dist/cli/index.d.ts +3 -0
  11. package/dist/cli/index.d.ts.map +1 -0
  12. package/dist/cli/index.js +2 -0
  13. package/dist/cli/index.js.map +1 -0
  14. package/dist/config/schema.d.ts +156 -52
  15. package/dist/config/schema.d.ts.map +1 -1
  16. package/dist/config/schema.js +17 -5
  17. package/dist/config/schema.js.map +1 -1
  18. package/dist/dispatch/templates.d.ts +7 -0
  19. package/dist/dispatch/templates.d.ts.map +1 -1
  20. package/dist/dispatch/templates.js +64 -12
  21. package/dist/dispatch/templates.js.map +1 -1
  22. package/dist/dispatch/work-unit-identity.d.ts +19 -0
  23. package/dist/dispatch/work-unit-identity.d.ts.map +1 -0
  24. package/dist/dispatch/work-unit-identity.js +40 -0
  25. package/dist/dispatch/work-unit-identity.js.map +1 -0
  26. package/dist/environments/stack-descriptor.d.ts +3 -3
  27. package/dist/fleet/control-plane-circuit.d.ts +57 -0
  28. package/dist/fleet/control-plane-circuit.d.ts.map +1 -0
  29. package/dist/fleet/control-plane-circuit.js +219 -0
  30. package/dist/fleet/control-plane-circuit.js.map +1 -0
  31. package/dist/fleet/internal-fleet-client.d.ts +2 -1
  32. package/dist/fleet/internal-fleet-client.d.ts.map +1 -1
  33. package/dist/fleet/internal-fleet-client.js +11 -7
  34. package/dist/fleet/internal-fleet-client.js.map +1 -1
  35. package/dist/fleet/relay-fleet-client.d.ts +3 -0
  36. package/dist/fleet/relay-fleet-client.d.ts.map +1 -1
  37. package/dist/fleet/relay-fleet-client.js +97 -18
  38. package/dist/fleet/relay-fleet-client.js.map +1 -1
  39. package/dist/github/writeback-paths.d.ts +7 -0
  40. package/dist/github/writeback-paths.d.ts.map +1 -0
  41. package/dist/github/writeback-paths.js +28 -0
  42. package/dist/github/writeback-paths.js.map +1 -0
  43. package/dist/hosted/orchestrator.d.ts.map +1 -1
  44. package/dist/hosted/orchestrator.js +2 -0
  45. package/dist/hosted/orchestrator.js.map +1 -1
  46. package/dist/index.d.ts +8 -4
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +5 -3
  49. package/dist/index.js.map +1 -1
  50. package/dist/intake/index.d.ts +2 -1
  51. package/dist/intake/index.d.ts.map +1 -1
  52. package/dist/intake/index.js +2 -1
  53. package/dist/intake/index.js.map +1 -1
  54. package/dist/intake/notion-manifest.d.ts +48 -0
  55. package/dist/intake/notion-manifest.d.ts.map +1 -0
  56. package/dist/intake/notion-manifest.js +258 -0
  57. package/dist/intake/notion-manifest.js.map +1 -0
  58. package/dist/intake/notion-relay-claim.d.ts +5 -4
  59. package/dist/intake/notion-relay-claim.d.ts.map +1 -1
  60. package/dist/intake/notion-relay-claim.js +48 -7
  61. package/dist/intake/notion-relay-claim.js.map +1 -1
  62. package/dist/intake/notion.d.ts +6 -3
  63. package/dist/intake/notion.d.ts.map +1 -1
  64. package/dist/intake/notion.js +63 -13
  65. package/dist/intake/notion.js.map +1 -1
  66. package/dist/issue-key-match.d.ts +6 -0
  67. package/dist/issue-key-match.d.ts.map +1 -1
  68. package/dist/issue-key-match.js +6 -1
  69. package/dist/issue-key-match.js.map +1 -1
  70. package/dist/mount/local-mount-preflight.d.ts.map +1 -1
  71. package/dist/mount/local-mount-preflight.js +6 -2
  72. package/dist/mount/local-mount-preflight.js.map +1 -1
  73. package/dist/mount/mount-auth-error.d.ts +16 -3
  74. package/dist/mount/mount-auth-error.d.ts.map +1 -1
  75. package/dist/mount/mount-auth-error.js +34 -7
  76. package/dist/mount/mount-auth-error.js.map +1 -1
  77. package/dist/mount/relayfile-cloud-mount-client.d.ts +14 -1
  78. package/dist/mount/relayfile-cloud-mount-client.d.ts.map +1 -1
  79. package/dist/mount/relayfile-cloud-mount-client.js +107 -6
  80. package/dist/mount/relayfile-cloud-mount-client.js.map +1 -1
  81. package/dist/mount/relayfile-github-connection-write.d.ts +24 -2
  82. package/dist/mount/relayfile-github-connection-write.d.ts.map +1 -1
  83. package/dist/mount/relayfile-github-connection-write.js +90 -1
  84. package/dist/mount/relayfile-github-connection-write.js.map +1 -1
  85. package/dist/node/factory-node.d.ts.map +1 -1
  86. package/dist/node/factory-node.js +18 -4
  87. package/dist/node/factory-node.js.map +1 -1
  88. package/dist/observability/events.d.ts +52 -52
  89. package/dist/orchestrator/batch-tracker.d.ts +25 -0
  90. package/dist/orchestrator/batch-tracker.d.ts.map +1 -1
  91. package/dist/orchestrator/batch-tracker.js +48 -2
  92. package/dist/orchestrator/batch-tracker.js.map +1 -1
  93. package/dist/orchestrator/factory.d.ts +36 -2
  94. package/dist/orchestrator/factory.d.ts.map +1 -1
  95. package/dist/orchestrator/factory.js +383 -31
  96. package/dist/orchestrator/factory.js.map +1 -1
  97. package/dist/orchestrator/index.d.ts +1 -1
  98. package/dist/orchestrator/index.d.ts.map +1 -1
  99. package/dist/orchestrator/index.js +1 -1
  100. package/dist/orchestrator/index.js.map +1 -1
  101. package/dist/ports/fleet.d.ts +6 -0
  102. package/dist/ports/fleet.d.ts.map +1 -1
  103. package/dist/ports/index.d.ts +1 -1
  104. package/dist/ports/index.d.ts.map +1 -1
  105. package/dist/ports/mount.d.ts +39 -0
  106. package/dist/ports/mount.d.ts.map +1 -1
  107. package/dist/ports/state.d.ts +15 -1
  108. package/dist/ports/state.d.ts.map +1 -1
  109. package/dist/state/document-store.d.ts +32 -0
  110. package/dist/state/document-store.d.ts.map +1 -0
  111. package/dist/state/document-store.js +7 -0
  112. package/dist/state/document-store.js.map +1 -0
  113. package/dist/state/file-state-store.d.ts +16 -2
  114. package/dist/state/file-state-store.d.ts.map +1 -1
  115. package/dist/state/file-state-store.js +45 -242
  116. package/dist/state/file-state-store.js.map +1 -1
  117. package/dist/state/watch-state-document.d.ts +5 -0
  118. package/dist/state/watch-state-document.d.ts.map +1 -0
  119. package/dist/state/watch-state-document.js +444 -0
  120. package/dist/state/watch-state-document.js.map +1 -0
  121. package/dist/testing/deadline.d.ts +11 -0
  122. package/dist/testing/deadline.d.ts.map +1 -0
  123. package/dist/testing/deadline.js +23 -0
  124. package/dist/testing/deadline.js.map +1 -0
  125. package/dist/testing/fakes.d.ts +2 -0
  126. package/dist/testing/fakes.d.ts.map +1 -1
  127. package/dist/testing/fakes.js.map +1 -1
  128. package/dist/testing/index.d.ts +1 -0
  129. package/dist/testing/index.d.ts.map +1 -1
  130. package/dist/testing/index.js +1 -0
  131. package/dist/testing/index.js.map +1 -1
  132. package/dist/triage/heuristic.d.ts +5 -0
  133. package/dist/triage/heuristic.d.ts.map +1 -1
  134. package/dist/triage/heuristic.js +42 -3
  135. package/dist/triage/heuristic.js.map +1 -1
  136. package/dist/triage/index.d.ts +1 -1
  137. package/dist/triage/index.d.ts.map +1 -1
  138. package/dist/triage/index.js +1 -1
  139. package/dist/triage/index.js.map +1 -1
  140. package/dist/triage/schema.d.ts +73 -55
  141. package/dist/triage/schema.d.ts.map +1 -1
  142. package/dist/triage/schema.js +2 -1
  143. package/dist/triage/schema.js.map +1 -1
  144. package/dist/types.d.ts +19 -3
  145. package/dist/types.d.ts.map +1 -1
  146. package/dist/writeback/github.d.ts +22 -7
  147. package/dist/writeback/github.d.ts.map +1 -1
  148. package/dist/writeback/github.js +86 -16
  149. package/dist/writeback/github.js.map +1 -1
  150. package/dist/writeback/index.d.ts +1 -1
  151. package/dist/writeback/index.d.ts.map +1 -1
  152. package/dist/writeback/index.js +1 -1
  153. package/dist/writeback/index.js.map +1 -1
  154. package/package.json +13 -8
@@ -55,6 +55,22 @@ export declare const WorkspaceConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObjec
55
55
  maxAttempts?: number | undefined;
56
56
  agentHoldTimeoutMs?: number | undefined;
57
57
  }>>;
58
+ fleetHealth: z.ZodDefault<z.ZodObject<{
59
+ rosterTimeoutMs: z.ZodDefault<z.ZodNumber>;
60
+ failureThreshold: z.ZodDefault<z.ZodNumber>;
61
+ resetTimeoutMs: z.ZodDefault<z.ZodNumber>;
62
+ requireDedicatedBroker: z.ZodDefault<z.ZodBoolean>;
63
+ }, "strip", z.ZodTypeAny, {
64
+ rosterTimeoutMs: number;
65
+ failureThreshold: number;
66
+ resetTimeoutMs: number;
67
+ requireDedicatedBroker: boolean;
68
+ }, {
69
+ rosterTimeoutMs?: number | undefined;
70
+ failureThreshold?: number | undefined;
71
+ resetTimeoutMs?: number | undefined;
72
+ requireDedicatedBroker?: boolean | undefined;
73
+ }>>;
58
74
  loop: z.ZodDefault<z.ZodObject<{
59
75
  maxIterations: z.ZodDefault<z.ZodNumber>;
60
76
  maxConsecutiveFailures: z.ZodDefault<z.ZodNumber>;
@@ -141,8 +157,8 @@ export declare const WorkspaceConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObjec
141
157
  }, {
142
158
  implementer?: string | undefined;
143
159
  reviewer?: string | undefined;
144
- triage?: string | undefined;
145
160
  babysitter?: string | undefined;
161
+ triage?: string | undefined;
146
162
  }>>;
147
163
  agentCapabilities: z.ZodDefault<z.ZodObject<{
148
164
  implementer: z.ZodDefault<z.ZodEnum<["spawn:codex", "spawn:claude"]>>;
@@ -996,9 +1012,6 @@ export declare const WorkspaceConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObjec
996
1012
  } | undefined;
997
1013
  }>>;
998
1014
  }, "strip", z.ZodTypeAny, {
999
- triage: {
1000
- maxImplementers: number;
1001
- };
1002
1015
  babysitter: {
1003
1016
  enabled: boolean;
1004
1017
  mode: "factory-created" | "routed-open-prs";
@@ -1006,6 +1019,9 @@ export declare const WorkspaceConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObjec
1006
1019
  excludePullRequests: string[];
1007
1020
  notifyHumans: boolean;
1008
1021
  };
1022
+ triage: {
1023
+ maxImplementers: number;
1024
+ };
1009
1025
  batchSize: number;
1010
1026
  linear: {
1011
1027
  states: {
@@ -1042,6 +1058,12 @@ export declare const WorkspaceConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObjec
1042
1058
  maxAttempts: number;
1043
1059
  agentHoldTimeoutMs: number;
1044
1060
  };
1061
+ fleetHealth: {
1062
+ rosterTimeoutMs: number;
1063
+ failureThreshold: number;
1064
+ resetTimeoutMs: number;
1065
+ requireDedicatedBroker: boolean;
1066
+ };
1045
1067
  loop: {
1046
1068
  maxIterations: number;
1047
1069
  maxConsecutiveFailures: number;
@@ -1200,9 +1222,6 @@ export declare const WorkspaceConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObjec
1200
1222
  cloneRoot?: string | undefined;
1201
1223
  clonePaths?: Record<string, string> | undefined;
1202
1224
  };
1203
- triage?: {
1204
- maxImplementers?: number | undefined;
1205
- } | undefined;
1206
1225
  babysitter?: {
1207
1226
  enabled?: boolean | undefined;
1208
1227
  mode?: "factory-created" | "routed-open-prs" | undefined;
@@ -1210,6 +1229,9 @@ export declare const WorkspaceConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObjec
1210
1229
  excludePullRequests?: string[] | undefined;
1211
1230
  notifyHumans?: boolean | undefined;
1212
1231
  } | undefined;
1232
+ triage?: {
1233
+ maxImplementers?: number | undefined;
1234
+ } | undefined;
1213
1235
  batchSize?: number | undefined;
1214
1236
  slack?: {
1215
1237
  channel: string;
@@ -1256,6 +1278,12 @@ export declare const WorkspaceConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObjec
1256
1278
  maxAttempts?: number | undefined;
1257
1279
  agentHoldTimeoutMs?: number | undefined;
1258
1280
  } | undefined;
1281
+ fleetHealth?: {
1282
+ rosterTimeoutMs?: number | undefined;
1283
+ failureThreshold?: number | undefined;
1284
+ resetTimeoutMs?: number | undefined;
1285
+ requireDedicatedBroker?: boolean | undefined;
1286
+ } | undefined;
1259
1287
  loop?: {
1260
1288
  maxIterations?: number | undefined;
1261
1289
  maxConsecutiveFailures?: number | undefined;
@@ -1266,8 +1294,8 @@ export declare const WorkspaceConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObjec
1266
1294
  models?: {
1267
1295
  implementer?: string | undefined;
1268
1296
  reviewer?: string | undefined;
1269
- triage?: string | undefined;
1270
1297
  babysitter?: string | undefined;
1298
+ triage?: string | undefined;
1271
1299
  } | undefined;
1272
1300
  agentCapabilities?: {
1273
1301
  implementer?: "spawn:codex" | "spawn:claude" | undefined;
@@ -1376,9 +1404,6 @@ export declare const WorkspaceConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObjec
1376
1404
  } | undefined;
1377
1405
  } | undefined;
1378
1406
  }>, {
1379
- triage: {
1380
- maxImplementers: number;
1381
- };
1382
1407
  babysitter: {
1383
1408
  enabled: boolean;
1384
1409
  mode: "factory-created" | "routed-open-prs";
@@ -1386,6 +1411,9 @@ export declare const WorkspaceConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObjec
1386
1411
  excludePullRequests: string[];
1387
1412
  notifyHumans: boolean;
1388
1413
  };
1414
+ triage: {
1415
+ maxImplementers: number;
1416
+ };
1389
1417
  batchSize: number;
1390
1418
  linear: {
1391
1419
  states: {
@@ -1422,6 +1450,12 @@ export declare const WorkspaceConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObjec
1422
1450
  maxAttempts: number;
1423
1451
  agentHoldTimeoutMs: number;
1424
1452
  };
1453
+ fleetHealth: {
1454
+ rosterTimeoutMs: number;
1455
+ failureThreshold: number;
1456
+ resetTimeoutMs: number;
1457
+ requireDedicatedBroker: boolean;
1458
+ };
1425
1459
  loop: {
1426
1460
  maxIterations: number;
1427
1461
  maxConsecutiveFailures: number;
@@ -1580,9 +1614,6 @@ export declare const WorkspaceConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObjec
1580
1614
  cloneRoot?: string | undefined;
1581
1615
  clonePaths?: Record<string, string> | undefined;
1582
1616
  };
1583
- triage?: {
1584
- maxImplementers?: number | undefined;
1585
- } | undefined;
1586
1617
  babysitter?: {
1587
1618
  enabled?: boolean | undefined;
1588
1619
  mode?: "factory-created" | "routed-open-prs" | undefined;
@@ -1590,6 +1621,9 @@ export declare const WorkspaceConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObjec
1590
1621
  excludePullRequests?: string[] | undefined;
1591
1622
  notifyHumans?: boolean | undefined;
1592
1623
  } | undefined;
1624
+ triage?: {
1625
+ maxImplementers?: number | undefined;
1626
+ } | undefined;
1593
1627
  batchSize?: number | undefined;
1594
1628
  slack?: {
1595
1629
  channel: string;
@@ -1636,6 +1670,12 @@ export declare const WorkspaceConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObjec
1636
1670
  maxAttempts?: number | undefined;
1637
1671
  agentHoldTimeoutMs?: number | undefined;
1638
1672
  } | undefined;
1673
+ fleetHealth?: {
1674
+ rosterTimeoutMs?: number | undefined;
1675
+ failureThreshold?: number | undefined;
1676
+ resetTimeoutMs?: number | undefined;
1677
+ requireDedicatedBroker?: boolean | undefined;
1678
+ } | undefined;
1639
1679
  loop?: {
1640
1680
  maxIterations?: number | undefined;
1641
1681
  maxConsecutiveFailures?: number | undefined;
@@ -1646,8 +1686,8 @@ export declare const WorkspaceConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObjec
1646
1686
  models?: {
1647
1687
  implementer?: string | undefined;
1648
1688
  reviewer?: string | undefined;
1649
- triage?: string | undefined;
1650
1689
  babysitter?: string | undefined;
1690
+ triage?: string | undefined;
1651
1691
  } | undefined;
1652
1692
  agentCapabilities?: {
1653
1693
  implementer?: "spawn:codex" | "spawn:claude" | undefined;
@@ -1789,9 +1829,6 @@ export declare const WorkspaceConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObjec
1789
1829
  org?: string | undefined;
1790
1830
  names?: string[] | undefined;
1791
1831
  };
1792
- triage: {
1793
- maxImplementers: number;
1794
- };
1795
1832
  babysitter: {
1796
1833
  enabled: boolean;
1797
1834
  mode: "factory-created" | "routed-open-prs";
@@ -1799,6 +1836,9 @@ export declare const WorkspaceConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObjec
1799
1836
  excludePullRequests: string[];
1800
1837
  notifyHumans: boolean;
1801
1838
  };
1839
+ triage: {
1840
+ maxImplementers: number;
1841
+ };
1802
1842
  batchSize: number;
1803
1843
  linear: {
1804
1844
  states: {
@@ -1829,6 +1869,12 @@ export declare const WorkspaceConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObjec
1829
1869
  maxAttempts: number;
1830
1870
  agentHoldTimeoutMs: number;
1831
1871
  };
1872
+ fleetHealth: {
1873
+ rosterTimeoutMs: number;
1874
+ failureThreshold: number;
1875
+ resetTimeoutMs: number;
1876
+ requireDedicatedBroker: boolean;
1877
+ };
1832
1878
  loop: {
1833
1879
  maxIterations: number;
1834
1880
  maxConsecutiveFailures: number;
@@ -1960,9 +2006,6 @@ export declare const WorkspaceConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObjec
1960
2006
  cloneRoot?: string | undefined;
1961
2007
  clonePaths?: Record<string, string> | undefined;
1962
2008
  };
1963
- triage?: {
1964
- maxImplementers?: number | undefined;
1965
- } | undefined;
1966
2009
  babysitter?: {
1967
2010
  enabled?: boolean | undefined;
1968
2011
  mode?: "factory-created" | "routed-open-prs" | undefined;
@@ -1970,6 +2013,9 @@ export declare const WorkspaceConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObjec
1970
2013
  excludePullRequests?: string[] | undefined;
1971
2014
  notifyHumans?: boolean | undefined;
1972
2015
  } | undefined;
2016
+ triage?: {
2017
+ maxImplementers?: number | undefined;
2018
+ } | undefined;
1973
2019
  batchSize?: number | undefined;
1974
2020
  slack?: {
1975
2021
  channel: string;
@@ -2016,6 +2062,12 @@ export declare const WorkspaceConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObjec
2016
2062
  maxAttempts?: number | undefined;
2017
2063
  agentHoldTimeoutMs?: number | undefined;
2018
2064
  } | undefined;
2065
+ fleetHealth?: {
2066
+ rosterTimeoutMs?: number | undefined;
2067
+ failureThreshold?: number | undefined;
2068
+ resetTimeoutMs?: number | undefined;
2069
+ requireDedicatedBroker?: boolean | undefined;
2070
+ } | undefined;
2019
2071
  loop?: {
2020
2072
  maxIterations?: number | undefined;
2021
2073
  maxConsecutiveFailures?: number | undefined;
@@ -2026,8 +2078,8 @@ export declare const WorkspaceConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObjec
2026
2078
  models?: {
2027
2079
  implementer?: string | undefined;
2028
2080
  reviewer?: string | undefined;
2029
- triage?: string | undefined;
2030
2081
  babysitter?: string | undefined;
2082
+ triage?: string | undefined;
2031
2083
  } | undefined;
2032
2084
  agentCapabilities?: {
2033
2085
  implementer?: "spawn:codex" | "spawn:claude" | undefined;
@@ -2365,6 +2417,22 @@ export declare const FactoryConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
2365
2417
  maxAttempts?: number | undefined;
2366
2418
  agentHoldTimeoutMs?: number | undefined;
2367
2419
  }>>;
2420
+ fleetHealth: z.ZodDefault<z.ZodObject<{
2421
+ rosterTimeoutMs: z.ZodDefault<z.ZodNumber>;
2422
+ failureThreshold: z.ZodDefault<z.ZodNumber>;
2423
+ resetTimeoutMs: z.ZodDefault<z.ZodNumber>;
2424
+ requireDedicatedBroker: z.ZodDefault<z.ZodBoolean>;
2425
+ }, "strip", z.ZodTypeAny, {
2426
+ rosterTimeoutMs: number;
2427
+ failureThreshold: number;
2428
+ resetTimeoutMs: number;
2429
+ requireDedicatedBroker: boolean;
2430
+ }, {
2431
+ rosterTimeoutMs?: number | undefined;
2432
+ failureThreshold?: number | undefined;
2433
+ resetTimeoutMs?: number | undefined;
2434
+ requireDedicatedBroker?: boolean | undefined;
2435
+ }>>;
2368
2436
  loop: z.ZodDefault<z.ZodObject<{
2369
2437
  maxIterations: z.ZodDefault<z.ZodNumber>;
2370
2438
  maxConsecutiveFailures: z.ZodDefault<z.ZodNumber>;
@@ -2451,8 +2519,8 @@ export declare const FactoryConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
2451
2519
  }, {
2452
2520
  implementer?: string | undefined;
2453
2521
  reviewer?: string | undefined;
2454
- triage?: string | undefined;
2455
2522
  babysitter?: string | undefined;
2523
+ triage?: string | undefined;
2456
2524
  }>>;
2457
2525
  agentCapabilities: z.ZodDefault<z.ZodObject<{
2458
2526
  implementer: z.ZodDefault<z.ZodEnum<["spawn:codex", "spawn:claude"]>>;
@@ -3314,10 +3382,6 @@ export declare const FactoryConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
3314
3382
  httpsPortRange?: [number, number] | undefined;
3315
3383
  }>>;
3316
3384
  }, "strip", z.ZodTypeAny, {
3317
- clonePaths: Record<string, string>;
3318
- triage: {
3319
- maxImplementers: number;
3320
- };
3321
3385
  babysitter: {
3322
3386
  enabled: boolean;
3323
3387
  mode: "factory-created" | "routed-open-prs";
@@ -3325,6 +3389,10 @@ export declare const FactoryConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
3325
3389
  excludePullRequests: string[];
3326
3390
  notifyHumans: boolean;
3327
3391
  };
3392
+ clonePaths: Record<string, string>;
3393
+ triage: {
3394
+ maxImplementers: number;
3395
+ };
3328
3396
  batchSize: number;
3329
3397
  linear: {
3330
3398
  states: {
@@ -3361,6 +3429,12 @@ export declare const FactoryConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
3361
3429
  maxAttempts: number;
3362
3430
  agentHoldTimeoutMs: number;
3363
3431
  };
3432
+ fleetHealth: {
3433
+ rosterTimeoutMs: number;
3434
+ failureThreshold: number;
3435
+ resetTimeoutMs: number;
3436
+ requireDedicatedBroker: boolean;
3437
+ };
3364
3438
  loop: {
3365
3439
  maxIterations: number;
3366
3440
  maxConsecutiveFailures: number;
@@ -3524,11 +3598,6 @@ export declare const FactoryConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
3524
3598
  cloneRoot?: string | undefined;
3525
3599
  clonePaths?: Record<string, string> | undefined;
3526
3600
  };
3527
- cloneRoot?: string | undefined;
3528
- clonePaths?: Record<string, string> | undefined;
3529
- triage?: {
3530
- maxImplementers?: number | undefined;
3531
- } | undefined;
3532
3601
  babysitter?: {
3533
3602
  enabled?: boolean | undefined;
3534
3603
  mode?: "factory-created" | "routed-open-prs" | undefined;
@@ -3536,6 +3605,11 @@ export declare const FactoryConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
3536
3605
  excludePullRequests?: string[] | undefined;
3537
3606
  notifyHumans?: boolean | undefined;
3538
3607
  } | undefined;
3608
+ cloneRoot?: string | undefined;
3609
+ clonePaths?: Record<string, string> | undefined;
3610
+ triage?: {
3611
+ maxImplementers?: number | undefined;
3612
+ } | undefined;
3539
3613
  batchSize?: number | undefined;
3540
3614
  slack?: {
3541
3615
  channel: string;
@@ -3582,6 +3656,12 @@ export declare const FactoryConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
3582
3656
  maxAttempts?: number | undefined;
3583
3657
  agentHoldTimeoutMs?: number | undefined;
3584
3658
  } | undefined;
3659
+ fleetHealth?: {
3660
+ rosterTimeoutMs?: number | undefined;
3661
+ failureThreshold?: number | undefined;
3662
+ resetTimeoutMs?: number | undefined;
3663
+ requireDedicatedBroker?: boolean | undefined;
3664
+ } | undefined;
3585
3665
  loop?: {
3586
3666
  maxIterations?: number | undefined;
3587
3667
  maxConsecutiveFailures?: number | undefined;
@@ -3592,8 +3672,8 @@ export declare const FactoryConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
3592
3672
  models?: {
3593
3673
  implementer?: string | undefined;
3594
3674
  reviewer?: string | undefined;
3595
- triage?: string | undefined;
3596
3675
  babysitter?: string | undefined;
3676
+ triage?: string | undefined;
3597
3677
  } | undefined;
3598
3678
  agentCapabilities?: {
3599
3679
  implementer?: "spawn:codex" | "spawn:claude" | undefined;
@@ -3706,10 +3786,6 @@ export declare const FactoryConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
3706
3786
  factoryLoopHeartbeatPath?: string | undefined;
3707
3787
  factoryLoopRegistryPath?: string | undefined;
3708
3788
  }>, {
3709
- clonePaths: Record<string, string>;
3710
- triage: {
3711
- maxImplementers: number;
3712
- };
3713
3789
  babysitter: {
3714
3790
  enabled: boolean;
3715
3791
  mode: "factory-created" | "routed-open-prs";
@@ -3717,6 +3793,10 @@ export declare const FactoryConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
3717
3793
  excludePullRequests: string[];
3718
3794
  notifyHumans: boolean;
3719
3795
  };
3796
+ clonePaths: Record<string, string>;
3797
+ triage: {
3798
+ maxImplementers: number;
3799
+ };
3720
3800
  batchSize: number;
3721
3801
  linear: {
3722
3802
  states: {
@@ -3753,6 +3833,12 @@ export declare const FactoryConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
3753
3833
  maxAttempts: number;
3754
3834
  agentHoldTimeoutMs: number;
3755
3835
  };
3836
+ fleetHealth: {
3837
+ rosterTimeoutMs: number;
3838
+ failureThreshold: number;
3839
+ resetTimeoutMs: number;
3840
+ requireDedicatedBroker: boolean;
3841
+ };
3756
3842
  loop: {
3757
3843
  maxIterations: number;
3758
3844
  maxConsecutiveFailures: number;
@@ -3916,11 +4002,6 @@ export declare const FactoryConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
3916
4002
  cloneRoot?: string | undefined;
3917
4003
  clonePaths?: Record<string, string> | undefined;
3918
4004
  };
3919
- cloneRoot?: string | undefined;
3920
- clonePaths?: Record<string, string> | undefined;
3921
- triage?: {
3922
- maxImplementers?: number | undefined;
3923
- } | undefined;
3924
4005
  babysitter?: {
3925
4006
  enabled?: boolean | undefined;
3926
4007
  mode?: "factory-created" | "routed-open-prs" | undefined;
@@ -3928,6 +4009,11 @@ export declare const FactoryConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
3928
4009
  excludePullRequests?: string[] | undefined;
3929
4010
  notifyHumans?: boolean | undefined;
3930
4011
  } | undefined;
4012
+ cloneRoot?: string | undefined;
4013
+ clonePaths?: Record<string, string> | undefined;
4014
+ triage?: {
4015
+ maxImplementers?: number | undefined;
4016
+ } | undefined;
3931
4017
  batchSize?: number | undefined;
3932
4018
  slack?: {
3933
4019
  channel: string;
@@ -3974,6 +4060,12 @@ export declare const FactoryConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
3974
4060
  maxAttempts?: number | undefined;
3975
4061
  agentHoldTimeoutMs?: number | undefined;
3976
4062
  } | undefined;
4063
+ fleetHealth?: {
4064
+ rosterTimeoutMs?: number | undefined;
4065
+ failureThreshold?: number | undefined;
4066
+ resetTimeoutMs?: number | undefined;
4067
+ requireDedicatedBroker?: boolean | undefined;
4068
+ } | undefined;
3977
4069
  loop?: {
3978
4070
  maxIterations?: number | undefined;
3979
4071
  maxConsecutiveFailures?: number | undefined;
@@ -3984,8 +4076,8 @@ export declare const FactoryConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
3984
4076
  models?: {
3985
4077
  implementer?: string | undefined;
3986
4078
  reviewer?: string | undefined;
3987
- triage?: string | undefined;
3988
4079
  babysitter?: string | undefined;
4080
+ triage?: string | undefined;
3989
4081
  } | undefined;
3990
4082
  agentCapabilities?: {
3991
4083
  implementer?: "spawn:codex" | "spawn:claude" | undefined;
@@ -4146,9 +4238,6 @@ export declare const FactoryConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
4146
4238
  names?: string[] | undefined;
4147
4239
  org?: string | undefined;
4148
4240
  };
4149
- triage: {
4150
- maxImplementers: number;
4151
- };
4152
4241
  babysitter: {
4153
4242
  enabled: boolean;
4154
4243
  mode: "factory-created" | "routed-open-prs";
@@ -4156,6 +4245,9 @@ export declare const FactoryConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
4156
4245
  excludePullRequests: string[];
4157
4246
  notifyHumans: boolean;
4158
4247
  };
4248
+ triage: {
4249
+ maxImplementers: number;
4250
+ };
4159
4251
  batchSize: number;
4160
4252
  linear: {
4161
4253
  states: {
@@ -4186,6 +4278,12 @@ export declare const FactoryConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
4186
4278
  maxAttempts: number;
4187
4279
  agentHoldTimeoutMs: number;
4188
4280
  };
4281
+ fleetHealth: {
4282
+ rosterTimeoutMs: number;
4283
+ failureThreshold: number;
4284
+ resetTimeoutMs: number;
4285
+ requireDedicatedBroker: boolean;
4286
+ };
4189
4287
  models: {
4190
4288
  babysitter: string;
4191
4289
  implementer?: string | undefined;
@@ -4312,11 +4410,6 @@ export declare const FactoryConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
4312
4410
  cloneRoot?: string | undefined;
4313
4411
  clonePaths?: Record<string, string> | undefined;
4314
4412
  };
4315
- cloneRoot?: string | undefined;
4316
- clonePaths?: Record<string, string> | undefined;
4317
- triage?: {
4318
- maxImplementers?: number | undefined;
4319
- } | undefined;
4320
4413
  babysitter?: {
4321
4414
  enabled?: boolean | undefined;
4322
4415
  mode?: "factory-created" | "routed-open-prs" | undefined;
@@ -4324,6 +4417,11 @@ export declare const FactoryConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
4324
4417
  excludePullRequests?: string[] | undefined;
4325
4418
  notifyHumans?: boolean | undefined;
4326
4419
  } | undefined;
4420
+ cloneRoot?: string | undefined;
4421
+ clonePaths?: Record<string, string> | undefined;
4422
+ triage?: {
4423
+ maxImplementers?: number | undefined;
4424
+ } | undefined;
4327
4425
  batchSize?: number | undefined;
4328
4426
  slack?: {
4329
4427
  channel: string;
@@ -4370,6 +4468,12 @@ export declare const FactoryConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
4370
4468
  maxAttempts?: number | undefined;
4371
4469
  agentHoldTimeoutMs?: number | undefined;
4372
4470
  } | undefined;
4471
+ fleetHealth?: {
4472
+ rosterTimeoutMs?: number | undefined;
4473
+ failureThreshold?: number | undefined;
4474
+ resetTimeoutMs?: number | undefined;
4475
+ requireDedicatedBroker?: boolean | undefined;
4476
+ } | undefined;
4373
4477
  loop?: {
4374
4478
  maxIterations?: number | undefined;
4375
4479
  maxConsecutiveFailures?: number | undefined;
@@ -4380,8 +4484,8 @@ export declare const FactoryConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
4380
4484
  models?: {
4381
4485
  implementer?: string | undefined;
4382
4486
  reviewer?: string | undefined;
4383
- triage?: string | undefined;
4384
4487
  babysitter?: string | undefined;
4488
+ triage?: string | undefined;
4385
4489
  } | undefined;
4386
4490
  agentCapabilities?: {
4387
4491
  implementer?: "spawn:codex" | "spawn:claude" | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAOvB,eAAO,MAAM,mBAAmB,sFAMtB,CAAA;AACV,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAA;AA6BnE,eAAO,MAAM,6BAA6B,QAAkB,CAAA;AA6U5D,eAAO,MAAM,iBAAiB,GAAI,YAAY,MAAM,EAAE,KAAK,MAAM,GAAG,SAAS,KAAG,MAAM,GAAG,SAGxF,CAAA;AA+BD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;QAnXhC,8FAA8F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAoJ9F,sEAAsE;;YAEtE,+EAA+E;;YAE/E,2EAA2E;;YAE3E,4EAA4E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA6C5E,mFAAmF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8KjC,CAAA;AACpD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;YAlO3B,sEAAsE;;YAEtE,+EAA+E;;YAE/E,2EAA2E;;YAE3E,4EAA4E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4NqB,CAAA;AACnG,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;QAvX9B,8FAA8F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAuM9F,mFAAmF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAnDnF,sEAAsE;;YAEtE,+EAA+E;;YAE/E,2EAA2E;;YAE3E,4EAA4E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+N5B,CAAA;AAsIlD,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAS,GAAG,MAAM,CAOxE;AAMD,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,eAAe,CAAA;IAChC,UAAU,EAAE,UAAU,CAAA;IACtB,aAAa,EAAE,aAAa,CAAA;CAC7B;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,CAgBrE;AA6FD,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AACnE,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AACzD,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAA;AACjE,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAA"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAYvB,eAAO,MAAM,mBAAmB,sFAMtB,CAAA;AACV,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAA;AA6BnE,eAAO,MAAM,6BAA6B,QAAkB,CAAA;AAyV5D,eAAO,MAAM,iBAAiB,GAAI,YAAY,MAAM,EAAE,KAAK,MAAM,GAAG,SAAS,KAAG,MAAM,GAAG,SAGxF,CAAA;AA+BD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;QA/XhC,8FAA8F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA+J9F,sEAAsE;;YAEtE,+EAA+E;;YAE/E,2EAA2E;;YAE3E,4EAA4E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA6C5E,mFAAmF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+KjC,CAAA;AACpD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;YAnO3B,sEAAsE;;YAEtE,+EAA+E;;YAE/E,2EAA2E;;YAE3E,4EAA4E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6NqB,CAAA;AACnG,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;QAnY9B,8FAA8F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAkN9F,mFAAmF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAnDnF,sEAAsE;;YAEtE,+EAA+E;;YAE/E,2EAA2E;;YAE3E,4EAA4E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgO5B,CAAA;AAsIlD,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAS,GAAG,MAAM,CAOxE;AAMD,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,eAAe,CAAA;IAChC,UAAU,EAAE,UAAU,CAAA;IACtB,aAAa,EAAE,aAAa,CAAA;CAC7B;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,CAgBrE;AA6FD,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AACnE,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AACzD,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAA;AACjE,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAA"}
@@ -1,6 +1,7 @@
1
1
  import { homedir } from 'node:os';
2
2
  import { isAbsolute, join } from 'node:path';
3
3
  import { z } from 'zod';
4
+ import { DEFAULT_FLEET_CONTROL_FAILURE_THRESHOLD, DEFAULT_FLEET_CONTROL_RESET_TIMEOUT_MS, DEFAULT_FLEET_ROSTER_TIMEOUT_MS, } from '../fleet/control-plane-circuit.js';
4
5
  import { KubernetesEnvironmentConfigSchema } from '../environments/connection-registry.js';
5
6
  // The five workflow-state roles the factory drives an issue through. Each is
6
7
  // configured either by name (config.linear.states.<role>, resolved to a
@@ -47,6 +48,16 @@ const dispatchSchema = z.object({
47
48
  agentHoldTimeoutMs: z.number().int().min(1).max(7 * 24 * 60 * 60_000)
48
49
  .default(DEFAULT_AGENT_HOLD_TIMEOUT_MS),
49
50
  }).default({});
51
+ const fleetHealthSchema = z.object({
52
+ // Roster is read-only, so Factory can safely bound it locally. Mutating
53
+ // spawn/resume calls are never abandoned behind a local timeout.
54
+ rosterTimeoutMs: z.number().int().min(100).max(60_000).default(DEFAULT_FLEET_ROSTER_TIMEOUT_MS),
55
+ failureThreshold: z.number().int().min(1).max(10).default(DEFAULT_FLEET_CONTROL_FAILURE_THRESHOLD),
56
+ resetTimeoutMs: z.number().int().min(1_000).max(15 * 60_000).default(DEFAULT_FLEET_CONTROL_RESET_TIMEOUT_MS),
57
+ // Production launchers can require an explicit, non-project broker state
58
+ // directory so Factory never silently shares an interactive broker.
59
+ requireDedicatedBroker: z.boolean().default(false),
60
+ }).default({});
50
61
  const loopSchema = z.object({
51
62
  maxIterations: z.number().int().min(1).max(5).default(3),
52
63
  maxConsecutiveFailures: z.number().int().min(1).max(5).default(3),
@@ -206,10 +217,10 @@ const previewSchema = z.object({
206
217
  }
207
218
  }).optional();
208
219
  const githubSchema = z.object({
209
- // Controls the credential identity used when Factory creates pull requests.
210
- // `auto` preserves the compatibility behavior: prefer the connected
211
- // workspace GitHub App, then use the operator's local `gh` authentication
212
- // when the app write path is unavailable.
220
+ // Controls the credential identity used for GitHub writes. Exact `app`
221
+ // selects the connected App for both PR publication and issue lifecycle
222
+ // writes. `auto` preserves compatibility: PRs prefer the App, while issue
223
+ // lifecycle writes retain the operator's local `gh` authentication.
213
224
  identity: z.enum(['app', 'user', 'auto']).default('auto'),
214
225
  }).default({});
215
226
  const verificationSchema = z.object({
@@ -269,10 +280,11 @@ const WorkspaceConfigObjectSchema = z.object({
269
280
  subscription: subscriptionSchema,
270
281
  liveSubscription: liveSubscriptionSchema,
271
282
  dispatch: dispatchSchema,
283
+ fleetHealth: fleetHealthSchema,
272
284
  loop: loopSchema,
273
285
  triage: triageSchema,
274
286
  repos: workspaceReposSchema,
275
- batchSize: z.number().int().min(1).max(5).default(5),
287
+ batchSize: z.number().int().min(1).max(5).default(1),
276
288
  models: modelsSchema,
277
289
  agentCapabilities: agentCapabilitiesSchema,
278
290
  slack: slackSchema,