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.
- package/README.md +1 -1
- package/dist/bin/glimmervoid.js +33 -42
- package/dist/chunks/{adapters-CAHxZYT3.js → adapters-B6tbX3Aj.js} +27 -14
- package/dist/chunks/{adapters-DDjC7_vG.js → adapters-CXQfLoyj.js} +1 -1
- package/dist/chunks/agent-api-cli-BBech5lF.js +1 -0
- package/dist/chunks/{agent-api-cli-B5Tm0wXO.js → agent-api-cli-BNHJTmNW.js} +44 -77
- package/dist/chunks/agent-api-core-DDrJQEdE.js +304 -0
- package/dist/chunks/{agent-setup-cli-DmMfCw5O.js → agent-setup-cli-CeBBwKuL.js} +2 -2
- package/dist/chunks/config-store-BZpN2djp.js +1 -0
- package/dist/chunks/{config-store-BUNZs4j7.js → config-store-DqMScSdg.js} +82 -268
- package/dist/chunks/contracts-CloExMlS.js +680 -0
- package/dist/chunks/{contracts-HVCEJfxs.js → control-messages-DpBaniJi.js} +1275 -1021
- package/dist/chunks/{git-version-rWZjF2Px.js → git-version-CJQMfxtZ.js} +2 -2
- package/dist/chunks/{grok-B6bsCgdd.js → grok-BLzhApwT.js} +7 -8
- package/dist/chunks/{guardrails-deps-Cb-ki4EU.js → guardrails-deps-CLxK4J-g.js} +1 -1
- package/dist/chunks/{json-file-CIJf0Cel.js → json-file-DFCTvPjj.js} +3 -7
- package/dist/chunks/{main-BNSbP-Yk.js → main-DDU8IvFD.js} +28791 -31978
- package/dist/chunks/{pair-cli-DNp8i5L4.js → pair-cli-CsOVTQGJ.js} +2 -2
- package/dist/chunks/{remote-config-C_s2pnLC.js → remote-config-HlABuLTp.js} +2 -2
- package/dist/chunks/{session-BlT68ppa.js → session-BwB43SCa.js} +119 -71
- package/dist/chunks/{session-routes-CT1JrjoT.js → session-routes-DNJzsckH.js} +25 -10
- package/dist/chunks/{settings-cli-BbzxCyG5.js → settings-cli-DkkbK-dj.js} +30 -156
- package/dist/chunks/settings-readout-core-DrXT4aWm.js +201 -0
- package/dist/chunks/{ssh-sign-cli-C74BGTQS.js → ssh-sign-cli-CYeKRevK.js} +2 -2
- package/dist/client/assets/index-BK9jLR47.js +148 -0
- package/dist/client/assets/index-CU_uqJmi.css +2 -0
- package/dist/client/assets/xterm-kR64YvZ-.js +79 -0
- package/dist/client/assets/zod-BRLv4KqJ.js +55 -0
- package/dist/client/index.html +7 -3
- package/dist/scripts/postinstall-path-check.js +21 -3
- package/dist/server/index.js +1 -1
- package/package.json +3 -4
- package/dist/chunks/agent-api-cli-BDu1CxZf.js +0 -1
- package/dist/chunks/agent-api-core-B_mUSenR.js +0 -341
- package/dist/chunks/browser-config-BrBT8269.js +0 -762
- package/dist/chunks/config-CjawSOBk.js +0 -219
- package/dist/chunks/config-store-MAVQhGMh.js +0 -1
- package/dist/chunks/factory-D7ryES9n.js +0 -240
- package/dist/chunks/knowledge-graph-cli-ByUJoKw_.js +0 -1354
- package/dist/client/assets/index-B5uVtedd.css +0 -1
- 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 };
|