glimmervoid 0.38.2 → 0.40.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.
Files changed (41) hide show
  1. package/README.md +1 -1
  2. package/dist/bin/glimmervoid.js +33 -42
  3. package/dist/chunks/{adapters-CAHxZYT3.js → adapters-B6tbX3Aj.js} +27 -14
  4. package/dist/chunks/{adapters-DDjC7_vG.js → adapters-CXQfLoyj.js} +1 -1
  5. package/dist/chunks/agent-api-cli-BBech5lF.js +1 -0
  6. package/dist/chunks/{agent-api-cli-B5Tm0wXO.js → agent-api-cli-BNHJTmNW.js} +44 -77
  7. package/dist/chunks/agent-api-core-DDrJQEdE.js +304 -0
  8. package/dist/chunks/{agent-setup-cli-DmMfCw5O.js → agent-setup-cli-CeBBwKuL.js} +2 -2
  9. package/dist/chunks/config-store-BZpN2djp.js +1 -0
  10. package/dist/chunks/{config-store-BUNZs4j7.js → config-store-DqMScSdg.js} +82 -268
  11. package/dist/chunks/contracts-CloExMlS.js +680 -0
  12. package/dist/chunks/{contracts-HVCEJfxs.js → control-messages-DpBaniJi.js} +1275 -1021
  13. package/dist/chunks/{git-version-rWZjF2Px.js → git-version-CJQMfxtZ.js} +2 -2
  14. package/dist/chunks/{grok-B6bsCgdd.js → grok-BLzhApwT.js} +7 -8
  15. package/dist/chunks/{guardrails-deps-Cb-ki4EU.js → guardrails-deps-CLxK4J-g.js} +1 -1
  16. package/dist/chunks/{json-file-CIJf0Cel.js → json-file-DFCTvPjj.js} +3 -7
  17. package/dist/chunks/{main-BNSbP-Yk.js → main-DDU8IvFD.js} +28791 -31978
  18. package/dist/chunks/{pair-cli-DNp8i5L4.js → pair-cli-CsOVTQGJ.js} +2 -2
  19. package/dist/chunks/{remote-config-C_s2pnLC.js → remote-config-HlABuLTp.js} +2 -2
  20. package/dist/chunks/{session-BlT68ppa.js → session-BwB43SCa.js} +119 -71
  21. package/dist/chunks/{session-routes-CT1JrjoT.js → session-routes-DNJzsckH.js} +25 -10
  22. package/dist/chunks/{settings-cli-BbzxCyG5.js → settings-cli-DkkbK-dj.js} +30 -156
  23. package/dist/chunks/settings-readout-core-DrXT4aWm.js +201 -0
  24. package/dist/chunks/{ssh-sign-cli-C74BGTQS.js → ssh-sign-cli-CYeKRevK.js} +2 -2
  25. package/dist/client/assets/index-BK9jLR47.js +148 -0
  26. package/dist/client/assets/index-CU_uqJmi.css +2 -0
  27. package/dist/client/assets/xterm-kR64YvZ-.js +79 -0
  28. package/dist/client/assets/zod-BRLv4KqJ.js +55 -0
  29. package/dist/client/index.html +7 -3
  30. package/dist/scripts/postinstall-path-check.js +21 -3
  31. package/dist/server/index.js +1 -1
  32. package/package.json +3 -4
  33. package/dist/chunks/agent-api-cli-BDu1CxZf.js +0 -1
  34. package/dist/chunks/agent-api-core-B_mUSenR.js +0 -341
  35. package/dist/chunks/browser-config-BrBT8269.js +0 -762
  36. package/dist/chunks/config-CjawSOBk.js +0 -219
  37. package/dist/chunks/config-store-MAVQhGMh.js +0 -1
  38. package/dist/chunks/factory-D7ryES9n.js +0 -240
  39. package/dist/chunks/knowledge-graph-cli-ByUJoKw_.js +0 -1354
  40. package/dist/client/assets/index-B5uVtedd.css +0 -1
  41. package/dist/client/assets/index-b13-NGGS.js +0 -275
@@ -1,762 +0,0 @@
1
- import { It as repoParts, Nt as GH_SEGMENT, et as repositoryName, q as MyPrSearchNode, tt as CommitSha } from "./session-BlT68ppa.js";
2
- import { n as isRecord } from "./coerce-NSst8oRP.js";
3
- import { z } from "zod";
4
- //#region shared/contracts/coherence.ts
5
- var CoherenceRisk = z.enum([
6
- "low",
7
- "medium",
8
- "high",
9
- "critical"
10
- ]);
11
- var CoherenceWorkState = z.enum([
12
- "open",
13
- "active",
14
- "blocked",
15
- "completed",
16
- "cancelled"
17
- ]);
18
- var CoherenceReadiness = z.enum([
19
- "ready",
20
- "waiting",
21
- "active",
22
- "blocked",
23
- "done"
24
- ]);
25
- var CoherenceWorkStats = z.looseObject({
26
- total: z.number().int().nonnegative(),
27
- roots: z.number().int().nonnegative(),
28
- dependencies: z.number().int().nonnegative(),
29
- states: z.looseObject({
30
- open: z.number().int().nonnegative(),
31
- active: z.number().int().nonnegative(),
32
- blocked: z.number().int().nonnegative(),
33
- completed: z.number().int().nonnegative(),
34
- cancelled: z.number().int().nonnegative()
35
- }),
36
- readiness: z.looseObject({
37
- ready: z.number().int().nonnegative(),
38
- waiting: z.number().int().nonnegative(),
39
- active: z.number().int().nonnegative(),
40
- blocked: z.number().int().nonnegative(),
41
- done: z.number().int().nonnegative()
42
- }),
43
- risks: z.looseObject({
44
- low: z.number().int().nonnegative(),
45
- medium: z.number().int().nonnegative(),
46
- high: z.number().int().nonnegative(),
47
- critical: z.number().int().nonnegative()
48
- }),
49
- graphProblems: z.number().int().nonnegative(),
50
- scopeOverlaps: z.number().int().nonnegative(),
51
- scopeConflicts: z.number().int().nonnegative(),
52
- orphans: z.number().int().nonnegative(),
53
- unsynthesizedChildren: z.number().int().nonnegative()
54
- });
55
- var CoherenceOrient = z.looseObject({
56
- action: z.enum([
57
- "steady",
58
- "dispatch",
59
- "continue",
60
- "verify",
61
- "synthesize",
62
- "unblock",
63
- "resolve-conflict",
64
- "repair-navigation",
65
- "refuse"
66
- ]),
67
- reasons: z.array(z.string()),
68
- sources: z.array(z.looseObject({
69
- name: z.string(),
70
- ok: z.boolean(),
71
- detail: z.string()
72
- })),
73
- work: z.looseObject({
74
- stats: CoherenceWorkStats,
75
- ready: z.array(z.string()),
76
- active: z.array(z.string()),
77
- blocked: z.array(z.string()),
78
- completed: z.array(z.string()),
79
- conflicts: z.array(z.looseObject({
80
- left: z.string(),
81
- right: z.string(),
82
- scope: z.string()
83
- })),
84
- unsynthesized: z.array(z.unknown())
85
- }).nullable(),
86
- consequences: z.looseObject({ unverifiedCompletedWork: z.array(z.string()) }).nullable(),
87
- verification: z.looseObject({ state: z.string() }).nullable()
88
- });
89
- var CoherenceWorkInspect = z.looseObject({
90
- work: z.array(z.looseObject({
91
- work: z.string(),
92
- state: CoherenceWorkState,
93
- readiness: CoherenceReadiness,
94
- owner: z.looseObject({
95
- session: z.string(),
96
- agent: z.string()
97
- }),
98
- last: z.looseObject({
99
- event: z.string(),
100
- at: z.string(),
101
- session: z.string(),
102
- reason: z.string().optional()
103
- }).nullable(),
104
- opened: z.looseObject({
105
- at: z.iso.datetime(),
106
- objective: z.string(),
107
- authority: z.looseObject({ boundary: z.string() }),
108
- criteria: z.array(z.string()),
109
- risk: CoherenceRisk,
110
- parent: z.string().nullable(),
111
- dependsOn: z.array(z.string()),
112
- readScopes: z.array(z.string()),
113
- writeScopes: z.array(z.string())
114
- })
115
- })),
116
- scopeConflicts: z.array(z.looseObject({
117
- left: z.string(),
118
- right: z.string(),
119
- leftScope: z.string(),
120
- rightScope: z.string(),
121
- status: z.string()
122
- }))
123
- });
124
- var CoherenceWorkCreated = z.looseObject({
125
- version: z.literal(1),
126
- event: z.literal("opened"),
127
- at: z.iso.datetime(),
128
- session: z.literal("glimmervoid-factory"),
129
- work: z.string().regex(/^wrk-[a-f0-9]{16}$/),
130
- id: z.string().regex(/^wev-[a-f0-9]{16}$/),
131
- parent: z.null(),
132
- objective: z.string(),
133
- criteria: z.array(z.string()),
134
- risk: CoherenceRisk,
135
- state: z.literal("open"),
136
- authority: z.object({
137
- kind: z.literal("user-directed"),
138
- grantedBy: z.literal("operator"),
139
- boundary: z.string()
140
- }),
141
- writeScopes: z.array(z.string())
142
- });
143
- var CoherenceTicketCreated = CoherenceWorkCreated.extend({ parent: z.string().regex(/^wrk-[a-f0-9]{16}$/) });
144
- //#endregion
145
- //#region shared/settings-ranges.ts
146
- var FACTORY_MAX_LIVE_WORKERS_RANGE = Object.freeze({ min: 1 });
147
- var POSITIVE_NUMBER_RANGE = Object.freeze({
148
- min: 0,
149
- exclusiveMin: true,
150
- label: "a positive number"
151
- });
152
- var NON_NEGATIVE_NUMBER_RANGE = Object.freeze({
153
- min: 0,
154
- label: "zero or more"
155
- });
156
- var FLYING_ANIMALS_GAP_RANGE = Object.freeze({
157
- min: 0,
158
- max: 300
159
- });
160
- var FLYING_ANIMALS_DURATION_RANGE = Object.freeze({
161
- min: 1,
162
- max: 60
163
- });
164
- var FLYING_ANIMALS_SCALE_RANGE = Object.freeze({
165
- min: .5,
166
- max: 2
167
- });
168
- var FLYING_ANIMALS_DEFAULTS = Object.freeze({
169
- flyingAnimalsMinGapSeconds: 20,
170
- flyingAnimalsMaxGapSeconds: 40,
171
- flyingAnimalsMinDurationSeconds: 6.9,
172
- flyingAnimalsMaxDurationSeconds: 11.5,
173
- flyingAnimalsScale: 1,
174
- flyingAnimalsOnPhone: true
175
- });
176
- var REPLAY_BUFFER_KB_RANGE = Object.freeze({
177
- min: 64,
178
- max: 16384
179
- });
180
- var MEMORY_RESERVE_MB_RANGE = Object.freeze({
181
- min: 0,
182
- max: 65536
183
- });
184
- var PORT_RANGE = Object.freeze({
185
- min: 0,
186
- max: 65535
187
- });
188
- var TASK_TITLE_TIMEOUT_RANGE = Object.freeze({
189
- min: 0,
190
- exclusiveMin: true,
191
- max: 2147483647 / 1e3
192
- });
193
- var BRANCH_GC_STALE_DAYS_RANGE = POSITIVE_NUMBER_RANGE;
194
- var BRANCH_GC_INTERVAL_MS_RANGE = POSITIVE_NUMBER_RANGE;
195
- var VISIONS_QUIET_MS_RANGE = POSITIVE_NUMBER_RANGE;
196
- var VISIONS_COOLDOWN_MS_RANGE = POSITIVE_NUMBER_RANGE;
197
- var VISIONS_MAX_PER_HOUR_RANGE = POSITIVE_NUMBER_RANGE;
198
- var VISIONS_ACTIVITY_MAX_PER_HOUR_RANGE = NON_NEGATIVE_NUMBER_RANGE;
199
- var VISIONS_DISPATCH_TIMEOUT_RANGE = POSITIVE_NUMBER_RANGE;
200
- var VISIONS_INTENT_THREAD_TTL_MS_RANGE = POSITIVE_NUMBER_RANGE;
201
- var POSTHOG_INTERVAL_RANGE = POSITIVE_NUMBER_RANGE;
202
- var POSTHOG_MAX_CONCURRENT_RANGE = POSITIVE_NUMBER_RANGE;
203
- var POSTHOG_INVESTIGATION_TIMEOUT_RANGE = POSITIVE_NUMBER_RANGE;
204
- var POSTHOG_MIN_USERS_RANGE = POSITIVE_NUMBER_RANGE;
205
- var POSTHOG_ESCALATION_RANGE = POSITIVE_NUMBER_RANGE;
206
- var POSTHOG_RECURRENCE_WINDOW_RANGE = POSITIVE_NUMBER_RANGE;
207
- var POSTHOG_TRANSIENT_RECURRENCE_RANGE = POSITIVE_NUMBER_RANGE;
208
- var POSTHOG_FIX_TIMEOUT_RANGE = Object.freeze({
209
- min: 60,
210
- max: 21600,
211
- label: "between 60 and 21600"
212
- });
213
- var POSTHOG_TRAFFIC_MULTIPLIER_RANGE = Object.freeze({
214
- min: 1,
215
- label: "at least 1"
216
- });
217
- var POSTHOG_TRAFFIC_MIN_USERS_RANGE = Object.freeze({
218
- min: 1,
219
- label: "at least 1"
220
- });
221
- var POSTHOG_TRAFFIC_COOLDOWN_RANGE = NON_NEGATIVE_NUMBER_RANGE;
222
- var POSTHOG_TRAFFIC_BASELINE_RANGE = Object.freeze({
223
- min: 1,
224
- max: 30,
225
- label: "between 1 and 30"
226
- });
227
- var USAGE_SCAN_INTERVAL_RANGE = Object.freeze({
228
- min: 1,
229
- max: 1440
230
- });
231
- var USAGE_RETAIN_DAYS_RANGE = Object.freeze({
232
- min: 1,
233
- max: 3650
234
- });
235
- var USAGE_WAREHOUSE_RETAIN_DAYS_RANGE = Object.freeze({
236
- min: 30,
237
- max: 3650
238
- });
239
- var USAGE_SESSION_BLOCK_HOURS_RANGE = Object.freeze({
240
- min: 1,
241
- max: 24
242
- });
243
- var USAGE_BUDGET_RANGE = POSITIVE_NUMBER_RANGE;
244
- var USAGE_INTEGER_RANGES = Object.freeze({
245
- scanIntervalMinutes: USAGE_SCAN_INTERVAL_RANGE,
246
- retainDays: USAGE_RETAIN_DAYS_RANGE,
247
- warehouseRetainDays: USAGE_WAREHOUSE_RETAIN_DAYS_RANGE,
248
- sessionBlockHours: USAGE_SESSION_BLOCK_HOURS_RANGE
249
- });
250
- var CHANGE_MAP_NARRATOR_TIMEOUT_RANGE = Object.freeze({
251
- min: 15,
252
- max: 600
253
- });
254
- var KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE = Object.freeze({
255
- min: 5,
256
- max: 120
257
- });
258
- var WORKFLOWS_MAX_CONCURRENT_SESSIONS_RANGE = Object.freeze({
259
- min: 1,
260
- max: 5
261
- });
262
- var WORKFLOWS_MAX_ACTIONS_PER_POLL_RANGE = Object.freeze({
263
- min: 1,
264
- max: 50
265
- });
266
- Object.freeze({
267
- NON_NEGATIVE_NUMBER_RANGE,
268
- FACTORY_MAX_LIVE_WORKERS_RANGE,
269
- FLYING_ANIMALS_GAP_RANGE,
270
- FLYING_ANIMALS_DURATION_RANGE,
271
- FLYING_ANIMALS_SCALE_RANGE,
272
- CHANGE_MAP_NARRATOR_TIMEOUT_RANGE,
273
- KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE,
274
- PORT_RANGE,
275
- POSTHOG_ESCALATION_RANGE,
276
- POSTHOG_FIX_TIMEOUT_RANGE,
277
- POSTHOG_INTERVAL_RANGE,
278
- POSTHOG_INVESTIGATION_TIMEOUT_RANGE,
279
- POSTHOG_MAX_CONCURRENT_RANGE,
280
- POSTHOG_MIN_USERS_RANGE,
281
- POSTHOG_TRAFFIC_BASELINE_RANGE,
282
- POSTHOG_TRAFFIC_COOLDOWN_RANGE,
283
- POSTHOG_TRAFFIC_MIN_USERS_RANGE,
284
- POSTHOG_TRAFFIC_MULTIPLIER_RANGE,
285
- REPLAY_BUFFER_KB_RANGE,
286
- MEMORY_RESERVE_MB_RANGE,
287
- TASK_TITLE_TIMEOUT_RANGE,
288
- USAGE_BUDGET_RANGE,
289
- USAGE_RETAIN_DAYS_RANGE,
290
- USAGE_SCAN_INTERVAL_RANGE,
291
- VISIONS_ACTIVITY_MAX_PER_HOUR_RANGE,
292
- VISIONS_COOLDOWN_MS_RANGE,
293
- VISIONS_DISPATCH_TIMEOUT_RANGE,
294
- VISIONS_INTENT_THREAD_TTL_MS_RANGE,
295
- VISIONS_MAX_PER_HOUR_RANGE,
296
- VISIONS_QUIET_MS_RANGE,
297
- WORKFLOWS_MAX_ACTIONS_PER_POLL_RANGE,
298
- WORKFLOWS_MAX_CONCURRENT_SESSIONS_RANGE
299
- });
300
- //#endregion
301
- //#region shared/contracts/config-numbers-core.ts
302
- var POSTHOG_WHOLE_NUMBER_ROUNDING = {
303
- maxConcurrentInvestigations: Math.ceil,
304
- minUsersToInvestigate: Math.ceil,
305
- userEscalationThreshold: Math.ceil,
306
- trafficSpikeMinUsers: Math.ceil,
307
- trafficSpikeBaselineDays: Math.floor
308
- };
309
- var LEGACY_INTEGER_FIELDS = [
310
- {
311
- path: [
312
- "visions",
313
- "dispatch",
314
- "quietMs"
315
- ],
316
- min: 1,
317
- round: Math.floor
318
- },
319
- {
320
- path: [
321
- "visions",
322
- "dispatch",
323
- "cooldownMs"
324
- ],
325
- min: 1,
326
- round: Math.floor
327
- },
328
- {
329
- path: [
330
- "visions",
331
- "dispatch",
332
- "maxPerHour"
333
- ],
334
- min: 1,
335
- round: Math.floor
336
- },
337
- {
338
- path: [
339
- "visions",
340
- "dispatch",
341
- "activityMaxPerHour"
342
- ],
343
- min: 0,
344
- round: Math.floor
345
- },
346
- {
347
- path: [
348
- "visions",
349
- "dispatch",
350
- "dispatchTimeoutSeconds"
351
- ],
352
- min: 1,
353
- round: Math.floor
354
- },
355
- {
356
- path: [
357
- "visions",
358
- "intent",
359
- "threadTtlMs"
360
- ],
361
- min: 1,
362
- round: Math.floor
363
- },
364
- ...Object.entries(POSTHOG_WHOLE_NUMBER_ROUNDING).map(([key, round]) => ({
365
- path: ["posthog", key],
366
- min: 1,
367
- round
368
- }))
369
- ];
370
- function normalizeIntegerField(config, path, min, round) {
371
- let target = config;
372
- for (const segment of path.slice(0, -1)) {
373
- const block = target[segment];
374
- if (!isRecord(block)) return;
375
- target[segment] = { ...block };
376
- target = target[segment];
377
- }
378
- const key = path.at(-1);
379
- const value = target[key];
380
- if (typeof value !== "number" || !Number.isFinite(value) || value < 0) return;
381
- if (Number.isInteger(value)) return;
382
- target[key] = Math.min(Number.MAX_SAFE_INTEGER, Math.max(min, round(value)));
383
- }
384
- function normalizeLegacyConfigNumbers(candidate) {
385
- const normalized = { ...candidate };
386
- const replayBufferKB = candidate.replayBufferKB;
387
- if (typeof replayBufferKB === "number" && Number.isFinite(replayBufferKB) && replayBufferKB >= 0 && replayBufferKB <= REPLAY_BUFFER_KB_RANGE.max) normalized.replayBufferKB = Math.max(REPLAY_BUFFER_KB_RANGE.min, Math.floor(replayBufferKB));
388
- for (const { path, min, round } of LEGACY_INTEGER_FIELDS) normalizeIntegerField(normalized, path, min, round);
389
- return normalized;
390
- }
391
- //#endregion
392
- //#region shared/usage-config.ts
393
- var USAGE_COST_MODES = Object.freeze([
394
- "auto",
395
- "calculate",
396
- "display"
397
- ]);
398
- var USAGE_VENDOR_KEYS = Object.freeze(["codex", "grok"]);
399
- var USAGE_BUDGET_KEYS = Object.freeze(["dailyUsd", "monthlyUsd"]);
400
- //#endregion
401
- //#region shared/contracts/workflows.ts
402
- var WORKFLOW_TRIGGERS = Object.freeze([
403
- "opened",
404
- "checks-failed",
405
- "review-requested",
406
- "approved",
407
- "commented",
408
- "merged"
409
- ]);
410
- var WORKFLOW_ACTION_TYPES = Object.freeze([
411
- "notify",
412
- "spawn",
413
- "label",
414
- "comment"
415
- ]);
416
- var WORKFLOW_PROMPT_TEMPLATE_MAX_CHARACTERS = 2e4;
417
- var WORKFLOW_COMMENT_BODY_MAX_CHARACTERS = 65536;
418
- var WORKFLOW_LABEL_NAME_MAX_CHARACTERS = 50;
419
- var RULE_ID = /^[a-z0-9][a-z0-9-]{0,63}$/;
420
- var UNSAFE_LABEL_NAME = /[\x00-\x1f\x7f,]|^-/;
421
- var integerInRange = (field, range) => {
422
- const message = `${field} must be an integer between ${range.min} and ${range.max}`;
423
- return z.number({ error: message }).int({ error: message }).min(range.min, { error: message }).max(range.max, { error: message });
424
- };
425
- var workflowsEnabled = z.boolean({ error: "workflows.enabled must be a boolean" });
426
- var workflowsMaxConcurrentSessions = integerInRange("workflows.maxConcurrentSessions", WORKFLOWS_MAX_CONCURRENT_SESSIONS_RANGE);
427
- var workflowsMaxActionsPerPoll = integerInRange("workflows.maxActionsPerPoll", WORKFLOWS_MAX_ACTIONS_PER_POLL_RANGE);
428
- var nonEmptyList = (field, item) => z.array(item, { error: `${field} must be an array` }).min(1, { error: `${field} must list at least one entry when present` });
429
- var WorkflowLabelName = z.string({ error: "a workflow label name must be a string" }).trim().min(1, { error: "a workflow label name must not be empty" }).max(WORKFLOW_LABEL_NAME_MAX_CHARACTERS, { error: `a workflow label name must be at most ${WORKFLOW_LABEL_NAME_MAX_CHARACTERS} characters` }).refine((name) => !UNSAFE_LABEL_NAME.test(name), { error: "a workflow label name must not start with a dash or hold a comma or control character" });
430
- var WorkflowCommentBody = z.string({ error: "a workflow comment body must be a string" }).min(1, { error: "a workflow comment body must not be empty" }).max(WORKFLOW_COMMENT_BODY_MAX_CHARACTERS, { error: `a workflow comment body must be at most ${WORKFLOW_COMMENT_BODY_MAX_CHARACTERS} characters` }).refine((body) => body.trim().length > 0, { error: "a workflow comment body must not be blank" });
431
- var WorkflowTrigger = z.enum(WORKFLOW_TRIGGERS, { error: `workflows.rules[].trigger must be one of ${WORKFLOW_TRIGGERS.join(", ")}` });
432
- var WorkflowAction = z.discriminatedUnion("type", [
433
- z.strictObject({ type: z.literal("notify") }),
434
- z.strictObject({
435
- type: z.literal("spawn"),
436
- promptTemplate: z.string({ error: "a spawn action needs a promptTemplate string" }).min(1, { error: "a spawn action promptTemplate must not be empty" }).max(WORKFLOW_PROMPT_TEMPLATE_MAX_CHARACTERS, { error: `a spawn action promptTemplate must be at most ${WORKFLOW_PROMPT_TEMPLATE_MAX_CHARACTERS} characters` }).refine((template) => template.trim().length > 0, { error: "a spawn action promptTemplate must not be blank" })
437
- }),
438
- z.strictObject({
439
- type: z.literal("label"),
440
- name: WorkflowLabelName
441
- }),
442
- z.strictObject({
443
- type: z.literal("comment"),
444
- body: WorkflowCommentBody
445
- })
446
- ], { error: `workflows.rules[].actions[].type must be one of ${WORKFLOW_ACTION_TYPES.join(", ")}` });
447
- var WorkflowFilters = z.strictObject({
448
- mine: z.boolean({ error: "workflows.rules[].filters.mine must be a boolean" }).optional(),
449
- teamReviewRequested: z.boolean({ error: "workflows.rules[].filters.teamReviewRequested must be a boolean" }).optional(),
450
- authors: nonEmptyList("workflows.rules[].filters.authors", z.string({ error: "workflows.rules[].filters.authors must hold GitHub logins" }).regex(GH_SEGMENT, { error: "workflows.rules[].filters.authors must hold GitHub logins" })).optional(),
451
- labels: nonEmptyList("workflows.rules[].filters.labels", WorkflowLabelName).optional(),
452
- baseBranches: nonEmptyList("workflows.rules[].filters.baseBranches", z.string({ error: "workflows.rules[].filters.baseBranches must hold branch names" }).min(1, { error: "workflows.rules[].filters.baseBranches must hold branch names" })).optional()
453
- }, { error: "workflows.rules[].filters must be an object" });
454
- var WorkflowRuleId = z.string({ error: "workflows.rules[].id must be a string" }).regex(RULE_ID, { error: "workflows.rules[].id must be 1 to 64 lowercase letters, digits and dashes, starting with a letter or digit" });
455
- var WorkflowRuleEnabled = z.boolean({ error: "workflows.rules[].enabled must be a boolean" });
456
- var WorkflowRule = z.strictObject({
457
- id: WorkflowRuleId,
458
- name: z.string({ error: "workflows.rules[].name must be a string" }).trim().min(1, { error: "workflows.rules[].name must not be empty" }).max(80, { error: "workflows.rules[].name must be at most 80 characters" }),
459
- enabled: WorkflowRuleEnabled.default(false),
460
- repos: nonEmptyList("workflows.rules[].repos", repositoryName),
461
- filters: WorkflowFilters.default({}),
462
- trigger: WorkflowTrigger,
463
- actions: nonEmptyList("workflows.rules[].actions", WorkflowAction)
464
- }, { error: "workflows.rules[] must be an object" });
465
- var WorkflowsSettings = z.strictObject({
466
- enabled: workflowsEnabled.default(true),
467
- maxConcurrentSessions: workflowsMaxConcurrentSessions.default(2),
468
- maxActionsPerPoll: workflowsMaxActionsPerPoll.default(20),
469
- rules: z.array(WorkflowRule, { error: "workflows.rules must be an array" }).default([])
470
- }, { error: "workflows must be an object" }).superRefine((settings, ctx) => {
471
- const claimedIds = /* @__PURE__ */ new Set();
472
- for (const [index, rule] of settings.rules.entries()) {
473
- if (!claimedIds.has(rule.id)) {
474
- claimedIds.add(rule.id);
475
- continue;
476
- }
477
- ctx.addIssue({
478
- code: "custom",
479
- path: [
480
- "rules",
481
- index,
482
- "id"
483
- ],
484
- message: `workflows.rules[${index}].id "${rule.id}" is declared more than once`
485
- });
486
- }
487
- });
488
- var WorkflowRuleToggle = z.strictObject({
489
- id: WorkflowRuleId,
490
- enabled: WorkflowRuleEnabled
491
- }, { error: "a dashboard update of workflows.rules[] carries only id and enabled" });
492
- var WorkflowsSettingsUpdate = z.strictObject({
493
- enabled: workflowsEnabled.optional(),
494
- maxConcurrentSessions: workflowsMaxConcurrentSessions.optional(),
495
- maxActionsPerPoll: workflowsMaxActionsPerPoll.optional(),
496
- rules: z.array(WorkflowRuleToggle, { error: "workflows.rules must be an array" }).optional()
497
- }, { error: "a dashboard update of workflows carries only enabled, maxConcurrentSessions, maxActionsPerPoll and rule toggles" });
498
- var nonnegativeInteger = z.number().int().nonnegative();
499
- var checksState = z.enum([
500
- "SUCCESS",
501
- "FAILURE",
502
- "PENDING",
503
- "ERROR",
504
- "EXPECTED"
505
- ]).nullable();
506
- var WorkflowSearchNode = MyPrSearchNode.extend({
507
- author: z.object({ login: z.string() }).nullable(),
508
- labels: z.object({ nodes: z.array(z.object({ name: z.string() })) }),
509
- comments: z.object({ totalCount: nonnegativeInteger })
510
- });
511
- var WorkflowPr = z.strictObject({
512
- repo: repositoryName,
513
- number: z.number().int().positive(),
514
- title: z.string(),
515
- url: z.url(),
516
- author: z.string().nullable(),
517
- state: z.enum([
518
- "OPEN",
519
- "MERGED",
520
- "CLOSED"
521
- ]),
522
- createdAt: z.string(),
523
- mergedAt: z.string().nullable(),
524
- isDraft: z.boolean(),
525
- isCrossRepository: z.boolean(),
526
- baseRefName: z.string(),
527
- headRefName: z.string().min(1),
528
- headRefOid: CommitSha,
529
- labels: z.array(z.string()),
530
- commentCount: nonnegativeInteger,
531
- reviewRequests: z.array(z.string()),
532
- checksState,
533
- reviewDecision: z.enum([
534
- "APPROVED",
535
- "CHANGES_REQUESTED",
536
- "REVIEW_REQUIRED"
537
- ]).nullable()
538
- });
539
- var WorkflowRepoSnapshot = z.strictObject({
540
- polledAtMs: nonnegativeInteger,
541
- prs: z.array(WorkflowPr)
542
- });
543
- var WorkflowsState = z.strictObject({ repos: z.record(z.string().regex(/^[a-z0-9][a-z0-9._-]*\/[a-z0-9][a-z0-9._-]*$/), WorkflowRepoSnapshot) });
544
- //#endregion
545
- //#region shared/contracts/browser-config.ts
546
- var optionalBoolean = (field) => z.boolean({ error: `${field} must be a boolean` }).optional();
547
- var optionalString = (field, trim = false) => {
548
- const schema = z.string({ error: `${field} must be a string` });
549
- return (trim ? schema.transform((value) => value.trim()) : schema).optional();
550
- };
551
- var numberRangeLabel = (range) => {
552
- if (range.label) return range.label;
553
- if (range.max != null) return `between ${range.min} and ${range.max}`;
554
- if (range.exclusiveMin) return `greater than ${range.min}`;
555
- return `at least ${range.min}`;
556
- };
557
- var optionalNumber = (field, range = POSITIVE_NUMBER_RANGE) => z.number({ error: `${field} must be ${numberRangeLabel(range)}` }).finite().refine((value) => !range.exclusiveMin || value > range.min, { message: `${field} must be ${numberRangeLabel(range)}` }).refine((value) => range.exclusiveMin || value >= range.min, { message: `${field} must be ${numberRangeLabel(range)}` }).refine((value) => range.max == null || value <= range.max, { message: `${field} must be ${numberRangeLabel(range)}` }).optional();
558
- var optionalWholeNumber = (field, range) => optionalNumber(field, range).unwrap().int({ error: `${field} must be a whole number ${numberRangeLabel(range)}` }).optional();
559
- var optionalInteger = (field, range) => z.number({ error: `${field} must be an integer between ${range.min} and ${range.max}` }).int({ error: `${field} must be an integer between ${range.min} and ${range.max}` }).min(range.min, { error: `${field} must be an integer between ${range.min} and ${range.max}` }).max(range.max, { error: `${field} must be an integer between ${range.min} and ${range.max}` }).optional();
560
- var optionalObject = (field, shape) => z.object(shape, { error: `${field} must be an object` }).nullable().optional();
561
- var optionalLooseObject = (field) => z.object({}, { error: `${field} must be an object` }).passthrough().nullable().optional();
562
- var CHANGE_MAP_NARRATOR_ENGINES = Object.freeze(["claude", "codex"]);
563
- var UPDATE_CHANNELS = Object.freeze(["release", "main"]);
564
- var POST_TURN_CHECK_MODES = Object.freeze(["report", "fix"]);
565
- var ChangeMapSettings = optionalObject("changeMap", { narrator: optionalObject("changeMap.narrator", {
566
- enabled: optionalBoolean("changeMap.narrator.enabled"),
567
- engine: z.enum(CHANGE_MAP_NARRATOR_ENGINES, { error: `changeMap.narrator.engine must be one of ${CHANGE_MAP_NARRATOR_ENGINES.join(", ")}` }).optional(),
568
- model: optionalString("changeMap.narrator.model", true),
569
- timeoutSeconds: optionalInteger("changeMap.narrator.timeoutSeconds", CHANGE_MAP_NARRATOR_TIMEOUT_RANGE)
570
- }) });
571
- var TaskTitleSettings = z.object({ refiner: z.object({
572
- enabled: optionalBoolean("taskTitle.refiner.enabled"),
573
- model: optionalString("taskTitle.refiner.model", true),
574
- minIntervalSeconds: optionalNumber("taskTitle.refiner.minIntervalSeconds", { min: 0 }),
575
- timeoutSeconds: optionalNumber("taskTitle.refiner.timeoutSeconds", TASK_TITLE_TIMEOUT_RANGE)
576
- }, { error: "taskTitle.refiner must be an object" }).nullable().optional() }, { error: "taskTitle must be an object" }).nullable().optional();
577
- var BRANCH_GC_SETTINGS_SHAPE = {
578
- enabled: optionalBoolean("branchGc.enabled"),
579
- worktrees: optionalBoolean("branchGc.worktrees"),
580
- prefixes: z.array(z.string({ error: "branchGc.prefixes must be an array of strings" }).min(1, { error: "branchGc.prefixes entries must be non-empty strings" }), { error: "branchGc.prefixes must be an array of strings" }).optional(),
581
- dryRun: optionalBoolean("branchGc.dryRun"),
582
- staleDays: optionalNumber("branchGc.staleDays", BRANCH_GC_STALE_DAYS_RANGE),
583
- deleteUnmerged: optionalBoolean("branchGc.deleteUnmerged"),
584
- intervalMs: optionalNumber("branchGc.intervalMs", BRANCH_GC_INTERVAL_MS_RANGE)
585
- };
586
- var BranchGcFileSettings = z.object(BRANCH_GC_SETTINGS_SHAPE, { error: "branchGc must be an object" });
587
- var BranchGcSettings = optionalObject("branchGc", BRANCH_GC_SETTINGS_SHAPE);
588
- var BranchGcControlSettings = BranchGcFileSettings.omit({
589
- prefixes: true,
590
- dryRun: true,
591
- worktrees: true
592
- }).nullable().optional();
593
- Object.freeze(["enabled", "deleteUnmerged"]);
594
- Object.freeze(["staleDays", "intervalMs"]);
595
- var PostTurnChecksSettings = optionalObject("postTurnChecks", { mode: z.enum(POST_TURN_CHECK_MODES, { error: "postTurnChecks.mode must be one of report, fix" }).optional() });
596
- var VisionsSettings = optionalObject("visions", {
597
- enabled: optionalBoolean("visions.enabled"),
598
- autoFix: optionalBoolean("visions.autoFix"),
599
- projects: z.array(z.string({ error: "visions.projects must be an array of strings" }), { error: "visions.projects must be an array of strings" }).optional(),
600
- dispatch: optionalObject("visions.dispatch", {
601
- enabled: optionalBoolean("visions.dispatch.enabled"),
602
- model: optionalString("visions.dispatch.model", true),
603
- quietMs: optionalWholeNumber("visions.dispatch.quietMs", VISIONS_QUIET_MS_RANGE),
604
- cooldownMs: optionalWholeNumber("visions.dispatch.cooldownMs", VISIONS_COOLDOWN_MS_RANGE),
605
- maxPerHour: optionalWholeNumber("visions.dispatch.maxPerHour", VISIONS_MAX_PER_HOUR_RANGE),
606
- activityMaxPerHour: optionalWholeNumber("visions.dispatch.activityMaxPerHour", VISIONS_ACTIVITY_MAX_PER_HOUR_RANGE),
607
- dispatchTimeoutSeconds: optionalWholeNumber("visions.dispatch.dispatchTimeoutSeconds", VISIONS_DISPATCH_TIMEOUT_RANGE)
608
- }),
609
- intent: optionalObject("visions.intent", { threadTtlMs: optionalWholeNumber("visions.intent.threadTtlMs", VISIONS_INTENT_THREAD_TTL_MS_RANGE) })
610
- });
611
- var GithubSettings = z.object({ teams: z.array(z.string({ error: "github.teams must be an array of org/slug strings" }).refine((team) => repoParts(team) !== null, { message: "github.teams entries must be org/slug with valid GitHub segments" }), { error: "github.teams must be an array of org/slug strings" }).optional() }, { error: "github must be an object" }).nullable().optional();
612
- var TeamReviewSettings = optionalObject("teamReview", {
613
- enabled: optionalBoolean("teamReview.enabled"),
614
- autoRebaseMyPrs: optionalBoolean("teamReview.autoRebaseMyPrs"),
615
- keepMergeableEnabled: optionalBoolean("teamReview.keepMergeableEnabled"),
616
- mergeQueueEnabled: optionalBoolean("teamReview.mergeQueueEnabled"),
617
- keepMergeableTimeoutMinutes: optionalInteger("teamReview.keepMergeableTimeoutMinutes", KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE),
618
- org: optionalString("teamReview.org", true),
619
- team: optionalString("teamReview.team", true),
620
- skill: optionalString("teamReview.skill", true),
621
- reReviewAfterHours: optionalNumber("teamReview.reReviewAfterHours"),
622
- skipIdleAfterDays: optionalNumber("teamReview.skipIdleAfterDays")
623
- });
624
- var BenchmarksSettings = optionalObject("benchmarks", { enabled: optionalBoolean("benchmarks.enabled") });
625
- var DEFAULT_FACTORY_CHECKS = [
626
- "npm run typecheck",
627
- "npm run lint",
628
- "npm test"
629
- ];
630
- var DEFAULT_FACTORY_PROTECTED_PATHS = [
631
- "coherence.config.json",
632
- ".coherence/",
633
- "package.json",
634
- "package-lock.json",
635
- "**/AGENTS.md",
636
- "**/CLAUDE.md",
637
- "**/CLAUDE.local.md",
638
- ".claude/",
639
- ".github/"
640
- ];
641
- var FactorySettings = z.object({
642
- enabled: optionalBoolean("factory.enabled"),
643
- maxRisk: CoherenceRisk.optional(),
644
- maxLiveWorkers: z.number().int().min(FACTORY_MAX_LIVE_WORKERS_RANGE.min).optional(),
645
- checks: z.array(z.string().trim().min(1)).optional(),
646
- protectedPaths: z.array(z.string().trim().min(1)).optional(),
647
- reviewerModel: z.string().trim().min(1).nullable().optional(),
648
- dailyBudgetUsd: z.number().finite().nonnegative().nullable().optional(),
649
- verifierModel: z.string().trim().min(1).nullable().optional(),
650
- mirrorHarnessRuns: optionalBoolean("factory.mirrorHarnessRuns")
651
- }).nullable().optional();
652
- var KnowledgeGraphSettings = optionalObject("knowledgeGraph", { enabled: optionalBoolean("knowledgeGraph.enabled") });
653
- var posthogNumberRanges = {
654
- intervalMinutes: POSTHOG_INTERVAL_RANGE,
655
- maxConcurrentInvestigations: POSTHOG_MAX_CONCURRENT_RANGE,
656
- investigationTimeoutSeconds: POSTHOG_INVESTIGATION_TIMEOUT_RANGE,
657
- fixTimeoutSeconds: POSTHOG_FIX_TIMEOUT_RANGE,
658
- minUsersToInvestigate: POSTHOG_MIN_USERS_RANGE,
659
- userEscalationThreshold: POSTHOG_ESCALATION_RANGE,
660
- recurrenceWindowDays: POSTHOG_RECURRENCE_WINDOW_RANGE,
661
- transientRecurrenceLimit: POSTHOG_TRANSIENT_RECURRENCE_RANGE,
662
- trafficSpikeMultiplier: POSTHOG_TRAFFIC_MULTIPLIER_RANGE,
663
- trafficSpikeMinUsers: POSTHOG_TRAFFIC_MIN_USERS_RANGE,
664
- trafficSpikeCooldownMinutes: POSTHOG_TRAFFIC_COOLDOWN_RANGE,
665
- trafficSpikeBaselineDays: POSTHOG_TRAFFIC_BASELINE_RANGE
666
- };
667
- var PosthogSettings = optionalObject("posthog", {
668
- enabled: optionalBoolean("posthog.enabled"),
669
- recurrenceDedupe: optionalBoolean("posthog.recurrenceDedupe"),
670
- trafficSpikeEnabled: optionalBoolean("posthog.trafficSpikeEnabled"),
671
- autoFix: optionalBoolean("posthog.autoFix"),
672
- host: optionalString("posthog.host", true).refine((value) => value == null || !value || /^https?:\/\//i.test(value), { message: "posthog.host must be an http(s) URL" }),
673
- apiKey: optionalString("posthog.apiKey", true),
674
- repoPath: optionalString("posthog.repoPath", true),
675
- projects: z.union([z.literal("all"), z.array(z.number({ error: "posthog.projects must be \"all\" or an array of positive integer project ids" }).int({ error: "posthog.projects must be \"all\" or an array of positive integer project ids" }).positive({ error: "posthog.projects must be \"all\" or an array of positive integer project ids" }), { error: "posthog.projects must be \"all\" or an array of positive integer project ids" })], { error: "posthog.projects must be \"all\" or an array of positive integer project ids" }).optional(),
676
- projectMap: z.record(z.string(), z.unknown(), { error: "posthog.projectMap must be an object" }).optional(),
677
- ...Object.fromEntries(Object.entries(posthogNumberRanges).map(([key, range]) => [key, Object.hasOwn(POSTHOG_WHOLE_NUMBER_ROUNDING, key) ? optionalWholeNumber(`posthog.${key}`, range) : optionalNumber(`posthog.${key}`, range)]))
678
- });
679
- var usageCostModeMessage = `usage.costMode must be one of ${USAGE_COST_MODES.join(", ")}`;
680
- var usageVendorShape = Object.fromEntries(USAGE_VENDOR_KEYS.map((key) => [key, optionalBoolean(`usage.vendors.${key}`)]));
681
- var usageBudgetShape = Object.fromEntries(USAGE_BUDGET_KEYS.map((key) => [key, z.number({ error: `usage.budget.${key} must be a positive number or null` }).positive({ error: `usage.budget.${key} must be a positive number or null` }).nullable().optional()]));
682
- var createUsageSettings = (isAbsolutePath) => optionalObject("usage", {
683
- enabled: optionalBoolean("usage.enabled"),
684
- fetchPricing: optionalBoolean("usage.fetchPricing"),
685
- planLimits: optionalBoolean("usage.planLimits"),
686
- rtkSavings: optionalBoolean("usage.rtkSavings"),
687
- scanIntervalMinutes: optionalInteger("usage.scanIntervalMinutes", USAGE_INTEGER_RANGES.scanIntervalMinutes),
688
- retainDays: optionalInteger("usage.retainDays", USAGE_INTEGER_RANGES.retainDays),
689
- warehouseRetainDays: optionalInteger("usage.warehouseRetainDays", USAGE_INTEGER_RANGES.warehouseRetainDays),
690
- sessionBlockHours: optionalInteger("usage.sessionBlockHours", USAGE_INTEGER_RANGES.sessionBlockHours),
691
- costMode: z.enum(USAGE_COST_MODES, { error: usageCostModeMessage }).optional(),
692
- vendors: optionalObject("usage.vendors", usageVendorShape),
693
- budget: optionalObject("usage.budget", usageBudgetShape),
694
- extraProjectsDirs: z.array(z.string({ error: "usage.extraProjectsDirs must be an array of absolute paths" }), { error: "usage.extraProjectsDirs must be an array of absolute paths" }).transform((directories) => directories.map((directory) => directory.trim())).refine((directories) => directories.every((directory) => directory && isAbsolutePath(directory)), { message: "usage.extraProjectsDirs entries must be absolute paths" }).optional()
695
- });
696
- var TelegramSettings = optionalObject("telegram", {
697
- botToken: optionalString("telegram.botToken", true),
698
- chatId: optionalString("telegram.chatId", true)
699
- });
700
- var IngestSettings = z.object({ enabled: optionalBoolean("ingest.enabled") }, { error: "ingest must be an object" }).passthrough().optional();
701
- var TraceSettings = z.object({ enabled: optionalBoolean("trace.enabled") }, { error: "trace must be an object" }).optional();
702
- var PlanReviewSettings = z.object({ enabled: optionalBoolean("planReview.enabled") }, { error: "planReview must be an object" }).optional();
703
- var optionalPathList = (field) => z.array(z.string({ error: `${field} must be an array of paths` }).trim().min(1, { error: `${field} must be an array of paths` }), { error: `${field} must be an array of paths` }).optional();
704
- var guardrailsShape = {
705
- unguardedRepos: optionalPathList("guardrails.unguardedRepos"),
706
- blockedPaths: optionalPathList("guardrails.blockedPaths"),
707
- unreadablePaths: optionalPathList("guardrails.unreadablePaths")
708
- };
709
- var isHomeRelativePath = (entry) => entry === "~" || entry.startsWith("~/") || entry.startsWith("~\\");
710
- var createGuardrailsSettings = (isAbsolutePath) => z.object({
711
- ...guardrailsShape,
712
- blockedPaths: z.array(z.string({ error: "guardrails.blockedPaths must be an array of paths" }).trim().min(1, { error: "guardrails.blockedPaths must be an array of paths" }).refine((entry) => isHomeRelativePath(entry) || isAbsolutePath(entry), { message: "guardrails.blockedPaths entries must be absolute paths or start with ~/" }), { error: "guardrails.blockedPaths must be an array of paths" }).optional()
713
- }, { error: "guardrails must be an object" }).strict().optional();
714
- var GuardrailsFileSettings = z.object(guardrailsShape, { error: "guardrails must be an object" }).passthrough().optional();
715
- var telemetryShape = { enabled: optionalBoolean("telemetry.enabled") };
716
- var TelemetrySettings = z.object(telemetryShape, { error: "telemetry must be an object" }).strict().optional();
717
- var TelemetryFileSettings = z.object(telemetryShape, { error: "telemetry must be an object" }).passthrough().optional();
718
- var createBrowserConfigShape = (isAbsolutePath) => ({
719
- port: z.number().int().min(PORT_RANGE.min).max(PORT_RANGE.max).optional(),
720
- notifyDebounceMs: z.number().finite().nonnegative().optional(),
721
- phoneEscalationMs: z.number().finite().nonnegative().optional(),
722
- replayBufferKB: optionalWholeNumber("replayBufferKB", REPLAY_BUFFER_KB_RANGE),
723
- sessionMemoryReserveMB: optionalWholeNumber("sessionMemoryReserveMB", MEMORY_RESERVE_MB_RANGE),
724
- checkMemoryReserveMB: optionalWholeNumber("checkMemoryReserveMB", MEMORY_RESERVE_MB_RANGE),
725
- cursorBlink: optionalBoolean("cursorBlink"),
726
- debugMode: optionalBoolean("debugMode"),
727
- conversationView: optionalBoolean("conversationView"),
728
- streamerMode: optionalBoolean("streamerMode"),
729
- detectBackgroundAgents: optionalBoolean("detectBackgroundAgents"),
730
- recordSignals: optionalBoolean("recordSignals"),
731
- rtk: optionalBoolean("rtk"),
732
- saneYolo: optionalBoolean("saneYolo"),
733
- skipPermissionsByDefault: optionalBoolean("skipPermissionsByDefault"),
734
- checkForUpdates: optionalBoolean("checkForUpdates"),
735
- updateChannel: z.enum(UPDATE_CHANNELS, { error: "updateChannel must be one of release, main" }).optional(),
736
- autoResume: optionalBoolean("autoResume"),
737
- telegramNotifications: optionalBoolean("telegramNotifications"),
738
- integrationBranch: optionalString("integrationBranch").nullable(),
739
- worktreeRoot: optionalString("worktreeRoot"),
740
- worktreeShare: z.array(z.string()).optional(),
741
- repoRoots: z.array(z.string()).optional(),
742
- changeMap: ChangeMapSettings,
743
- taskTitle: TaskTitleSettings,
744
- branchGc: BranchGcSettings,
745
- postTurnChecks: PostTurnChecksSettings,
746
- visions: VisionsSettings,
747
- github: GithubSettings,
748
- teamReview: TeamReviewSettings,
749
- benchmarks: BenchmarksSettings,
750
- factory: FactorySettings,
751
- knowledgeGraph: KnowledgeGraphSettings,
752
- posthog: PosthogSettings,
753
- usage: createUsageSettings(isAbsolutePath),
754
- telegram: TelegramSettings,
755
- ingest: IngestSettings,
756
- guardrails: createGuardrailsSettings(isAbsolutePath),
757
- telemetry: TelemetrySettings,
758
- workflows: WorkflowsSettings.nullable().optional()
759
- });
760
- var createBrowserConfig = (isAbsolutePath) => z.object(createBrowserConfigShape(isAbsolutePath));
761
- //#endregion
762
- export { CoherenceTicketCreated as $, FLYING_ANIMALS_DURATION_RANGE as A, POSTHOG_TRAFFIC_MIN_USERS_RANGE as B, WorkflowsState as C, CHANGE_MAP_NARRATOR_TIMEOUT_RANGE as D, normalizeLegacyConfigNumbers as E, NON_NEGATIVE_NUMBER_RANGE as F, USAGE_INTEGER_RANGES as G, REPLAY_BUFFER_KB_RANGE as H, PORT_RANGE as I, WORKFLOWS_MAX_ACTIONS_PER_POLL_RANGE as J, USAGE_RETAIN_DAYS_RANGE as K, POSITIVE_NUMBER_RANGE as L, FLYING_ANIMALS_SCALE_RANGE as M, KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE as N, FACTORY_MAX_LIVE_WORKERS_RANGE as O, MEMORY_RESERVE_MB_RANGE as P, CoherenceRisk as Q, POSTHOG_FIX_TIMEOUT_RANGE as R, WorkflowsSettingsUpdate as S, USAGE_VENDOR_KEYS as T, TASK_TITLE_TIMEOUT_RANGE as U, POSTHOG_TRAFFIC_MULTIPLIER_RANGE as V, USAGE_BUDGET_RANGE as W, CoherenceOrient as X, WORKFLOWS_MAX_CONCURRENT_SESSIONS_RANGE as Y, CoherenceReadiness as Z, optionalLooseObject as _, DEFAULT_FACTORY_CHECKS as a, WorkflowSearchNode as b, GithubSettings as c, PlanReviewSettings as d, CoherenceWorkCreated as et, TelemetryFileSettings as f, optionalBoolean as g, createBrowserConfig as h, ChangeMapSettings as i, FLYING_ANIMALS_GAP_RANGE as j, FLYING_ANIMALS_DEFAULTS as k, GuardrailsFileSettings as l, UPDATE_CHANNELS as m, BranchGcFileSettings as n, CoherenceWorkState as nt, DEFAULT_FACTORY_PROTECTED_PATHS as o, TraceSettings as p, USAGE_SCAN_INTERVAL_RANGE as q, CHANGE_MAP_NARRATOR_ENGINES as r, FactorySettings as s, BranchGcControlSettings as t, CoherenceWorkInspect as tt, POST_TURN_CHECK_MODES as u, WorkflowCommentBody as v, USAGE_COST_MODES as w, WorkflowsSettings as x, WorkflowLabelName as y, POSTHOG_TRAFFIC_BASELINE_RANGE as z };