agent-relay 8.7.2 → 8.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auto/classifier.d.ts +29 -0
- package/dist/auto/classifier.d.ts.map +1 -0
- package/dist/auto/classifier.js +126 -0
- package/dist/auto/classifier.js.map +1 -0
- package/dist/auto/composer.d.ts +105 -0
- package/dist/auto/composer.d.ts.map +1 -0
- package/dist/auto/composer.js +439 -0
- package/dist/auto/composer.js.map +1 -0
- package/dist/auto/director-prompt.d.ts +25 -0
- package/dist/auto/director-prompt.d.ts.map +1 -0
- package/dist/auto/director-prompt.js +53 -0
- package/dist/auto/director-prompt.js.map +1 -0
- package/dist/auto/index.d.ts +15 -0
- package/dist/auto/index.d.ts.map +1 -0
- package/dist/auto/index.js +13 -0
- package/dist/auto/index.js.map +1 -0
- package/dist/cli/agent-relay-mcp.d.ts +1 -1
- package/dist/cli/agent-relay-mcp.d.ts.map +1 -1
- package/dist/cli/agent-relay-mcp.js +428 -518
- package/dist/cli/agent-relay-mcp.js.map +1 -1
- package/dist/cli/bootstrap.d.ts.map +1 -1
- package/dist/cli/bootstrap.js +2 -0
- package/dist/cli/bootstrap.js.map +1 -1
- package/dist/cli/commands/core.d.ts +1 -0
- package/dist/cli/commands/core.d.ts.map +1 -1
- package/dist/cli/commands/core.js +1 -1
- package/dist/cli/commands/core.js.map +1 -1
- package/dist/cli/commands/fleet.d.ts +16 -0
- package/dist/cli/commands/fleet.d.ts.map +1 -0
- package/dist/cli/commands/fleet.js +188 -0
- package/dist/cli/commands/fleet.js.map +1 -0
- package/dist/cli/commands/local-agent.d.ts.map +1 -1
- package/dist/cli/commands/local-agent.js +43 -11
- package/dist/cli/commands/local-agent.js.map +1 -1
- package/dist/cli/lib/broker-lifecycle.d.ts +5 -1
- package/dist/cli/lib/broker-lifecycle.d.ts.map +1 -1
- package/dist/cli/lib/broker-lifecycle.js +32 -2
- package/dist/cli/lib/broker-lifecycle.js.map +1 -1
- package/dist/cli/lib/fleet-sidecar.d.ts +53 -0
- package/dist/cli/lib/fleet-sidecar.d.ts.map +1 -0
- package/dist/cli/lib/fleet-sidecar.js +400 -0
- package/dist/cli/lib/fleet-sidecar.js.map +1 -0
- package/dist/index.cjs +2545 -16773
- package/package.json +10 -8
|
@@ -0,0 +1,439 @@
|
|
|
1
|
+
// ── Codex model tier data (from lifecycle eval 2026-06-12) ───────────────────
|
|
2
|
+
// s01–s04, 5 runs each, 4 onboarding variants.
|
|
3
|
+
// Use this to pick the right codex model when spawning codex workers.
|
|
4
|
+
export const CODEX_MODEL_TIERS = {
|
|
5
|
+
/**
|
|
6
|
+
* gpt-5.5 — best. 16/16 scenarios PASS, 100% s03 one-liner+, 100% s04 all.
|
|
7
|
+
* Recommended default for codex workers.
|
|
8
|
+
*/
|
|
9
|
+
recommended: 'gpt-5.5',
|
|
10
|
+
/**
|
|
11
|
+
* gpt-5.4-mini — viable budget tier. 15/16 scenarios PASS (only s03:skill fails).
|
|
12
|
+
* 100% s03 bare/one-liner, 80% brief/skill. 80–100% s04. Use bare or one-liner
|
|
13
|
+
* onboarding for best results. phantom=31% (slightly noisy).
|
|
14
|
+
*/
|
|
15
|
+
budget: 'gpt-5.4-mini',
|
|
16
|
+
/**
|
|
17
|
+
* gpt-5.4 — avoid. 16/16 scenarios PASS on majority-vote but phantom=52% (14
|
|
18
|
+
* phantom agents) and per-run reliability is 60% across s03/s04 variants.
|
|
19
|
+
* The config migration alias `gpt-5.4 → gpt-5.5` does NOT apply at runtime —
|
|
20
|
+
* these are distinct models with significantly different behaviour.
|
|
21
|
+
*/
|
|
22
|
+
avoid: 'gpt-5.4',
|
|
23
|
+
/**
|
|
24
|
+
* gpt-5.3-codex-spark — not viable. 6/16 scenarios PASS. Fails s03 one-liner/
|
|
25
|
+
* brief/skill, s04 one-liner/brief. Ultra-fast but sacrifices relay reliability.
|
|
26
|
+
*/
|
|
27
|
+
notViable: 'gpt-5.3-codex-spark',
|
|
28
|
+
};
|
|
29
|
+
// Onboarding recommendations per harness (from s01–s04 eval data 2026-06-12).
|
|
30
|
+
// Used by the Director meta-prompt builder to select the right onboarding text.
|
|
31
|
+
export const HARNESS_ONBOARDING = {
|
|
32
|
+
claude: 'one-liner', // sonnet: 100% s03; haiku: needs skill (broker injects SMALL_MODEL_RELAY_SKILL)
|
|
33
|
+
codex: 'bare', // relay-native; bare s03=80%, one-liner=100% — bare saves tokens
|
|
34
|
+
opencode: 'bare', // relay-native; bare s03=100% (best bare of all harnesses)
|
|
35
|
+
gemini: 'one-liner', // bare s03=60% (release failures); one-liner=100%
|
|
36
|
+
droid: 'bare', // bare s03=100%; NEVER use skill (kills s03 to 0%)
|
|
37
|
+
};
|
|
38
|
+
// ── Role-fit map (from eval data 2026-06-12/13) ───────────────────────────────
|
|
39
|
+
// Maps each harness to which roles it can reliably fill in swarm patterns.
|
|
40
|
+
// opencode model results from Phase 1 batch eval (s01–s04, repeat=3).
|
|
41
|
+
// See specs/auto-routing.md §5 for the full role-fit table and what s07+ will add.
|
|
42
|
+
export const HARNESS_ROLE_MAP = [
|
|
43
|
+
{
|
|
44
|
+
harness: 'codex',
|
|
45
|
+
defaultModel: 'gpt-5.5',
|
|
46
|
+
bestOnboarding: 'bare',
|
|
47
|
+
relayNative: true,
|
|
48
|
+
roles: {
|
|
49
|
+
worker: { fitness: 'confirmed', notes: 's03 100% all variants' },
|
|
50
|
+
coordinator: { fitness: 'confirmed', notes: 's03+s04 100%; viable lead for pre-spawned teams' },
|
|
51
|
+
planner: { fitness: 'confirmed', notes: 's03 non-interactive ok; relay-native' },
|
|
52
|
+
reviewer: { fitness: 'confirmed', notes: 's04 100%; relay-native; never routes to native tools' },
|
|
53
|
+
mapper: { fitness: 'confirmed', notes: 'interactive:false reliable' },
|
|
54
|
+
reducer: { fitness: 'confirmed', notes: 'interactive:false reliable' },
|
|
55
|
+
verifier: { fitness: 'confirmed' },
|
|
56
|
+
judge: { fitness: 'provisional', notes: 'untested for multi-input adjudication' },
|
|
57
|
+
debater: { fitness: 'provisional', notes: 'relay-native but adversarial exchange untested' },
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
harness: 'claude',
|
|
62
|
+
defaultModel: 'sonnet',
|
|
63
|
+
bestOnboarding: 'one-liner',
|
|
64
|
+
relayNative: false,
|
|
65
|
+
roles: {
|
|
66
|
+
lead: { fitness: 'confirmed', notes: 'sonnet one-liner=100%; opus bare=67%' },
|
|
67
|
+
coordinator: { fitness: 'confirmed', notes: 'sonnet is default lead; opus for high-complexity' },
|
|
68
|
+
worker: { fitness: 'confirmed', notes: 'sonnet one-liner=100%; haiku worker-only' },
|
|
69
|
+
reviewer: { fitness: 'confirmed', notes: 'sonnet/opus strong reviewers' },
|
|
70
|
+
critic: { fitness: 'confirmed' },
|
|
71
|
+
judge: { fitness: 'confirmed', notes: 'opus preferred for high-stakes adjudication' },
|
|
72
|
+
debater: { fitness: 'confirmed', notes: 'sonnet/opus capable of adversarial exchange' },
|
|
73
|
+
planner: { fitness: 'confirmed' },
|
|
74
|
+
mapper: { fitness: 'confirmed', notes: 'haiku viable for simple map tasks' },
|
|
75
|
+
reducer: { fitness: 'confirmed' },
|
|
76
|
+
supervisor: { fitness: 'confirmed', notes: 'sonnet+ only; haiku not viable as supervisor' },
|
|
77
|
+
verifier: { fitness: 'confirmed' },
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
harness: 'opencode',
|
|
82
|
+
defaultModel: 'mimo-v2.5-free',
|
|
83
|
+
bestOnboarding: 'bare',
|
|
84
|
+
relayNative: true,
|
|
85
|
+
roles: {
|
|
86
|
+
worker: { fitness: 'confirmed', notes: 'mimo s03 bare=100%; best bare result of all harnesses' },
|
|
87
|
+
planner: { fitness: 'confirmed' },
|
|
88
|
+
mapper: { fitness: 'confirmed' },
|
|
89
|
+
reducer: { fitness: 'confirmed' },
|
|
90
|
+
coordinator: { fitness: 'provisional', notes: 's03+s04 good; multi-DM coordination untested' },
|
|
91
|
+
reviewer: { fitness: 'provisional', notes: 'relay-native; structured verdict format untested' },
|
|
92
|
+
// Per-model fitness from Phase 1 batch eval (2026-06-13). All tested via opencode harness.
|
|
93
|
+
// Top tier (16/16, 0-2 phantoms): deepseek-v4-flash, deepseek-v4-flash-free, qwen3.6-plus,
|
|
94
|
+
// qwen3.5-plus, minimax-m2.5, minimax-m2.7, glm-5.1, big-pickle
|
|
95
|
+
// Confirmed (16/16, 3-9 phantoms): glm-5, gemini-3.1-pro, grok-build-0.1, gemini-3-flash
|
|
96
|
+
// Provisional (12-15/16): kimi-k2.5, kimi-k2.6, mimo-v2.5-free, gemini-3.5-flash, north-mini-code-free
|
|
97
|
+
// Eliminated: deepseek-v4-pro (11/16, s03/s04 inconsistent), nemotron-3-ultra-free (10/16)
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
// ── opencode top-tier models (16/16, ≤2 phantoms) — best for any worker/mapper role ──
|
|
101
|
+
{
|
|
102
|
+
harness: 'opencode:deepseek-v4-flash',
|
|
103
|
+
bestOnboarding: 'bare',
|
|
104
|
+
relayNative: true,
|
|
105
|
+
roles: {
|
|
106
|
+
worker: { fitness: 'confirmed', notes: '16/16 s01-s04, 0 phantoms' },
|
|
107
|
+
mapper: { fitness: 'confirmed' },
|
|
108
|
+
reducer: { fitness: 'confirmed' },
|
|
109
|
+
planner: { fitness: 'confirmed' },
|
|
110
|
+
reviewer: { fitness: 'provisional' },
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
harness: 'opencode:deepseek-v4-flash-free',
|
|
115
|
+
bestOnboarding: 'bare',
|
|
116
|
+
relayNative: true,
|
|
117
|
+
roles: {
|
|
118
|
+
worker: { fitness: 'confirmed', notes: '16/16, 0-1 phantoms; skip skill onboarding' },
|
|
119
|
+
mapper: { fitness: 'confirmed' },
|
|
120
|
+
reducer: { fitness: 'confirmed' },
|
|
121
|
+
planner: { fitness: 'confirmed' },
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
harness: 'opencode:qwen3.6-plus',
|
|
126
|
+
bestOnboarding: 'bare',
|
|
127
|
+
relayNative: true,
|
|
128
|
+
roles: {
|
|
129
|
+
worker: { fitness: 'confirmed', notes: '16/16, 0 phantoms' },
|
|
130
|
+
mapper: { fitness: 'confirmed' },
|
|
131
|
+
reducer: { fitness: 'confirmed' },
|
|
132
|
+
planner: { fitness: 'confirmed' },
|
|
133
|
+
reviewer: { fitness: 'provisional' },
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
harness: 'opencode:qwen3.5-plus',
|
|
138
|
+
bestOnboarding: 'bare',
|
|
139
|
+
relayNative: true,
|
|
140
|
+
roles: {
|
|
141
|
+
worker: { fitness: 'confirmed', notes: '16/16, 0 phantoms' },
|
|
142
|
+
mapper: { fitness: 'confirmed' },
|
|
143
|
+
reducer: { fitness: 'confirmed' },
|
|
144
|
+
planner: { fitness: 'confirmed' },
|
|
145
|
+
},
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
harness: 'opencode:minimax-m2.5',
|
|
149
|
+
bestOnboarding: 'bare',
|
|
150
|
+
relayNative: true,
|
|
151
|
+
roles: {
|
|
152
|
+
worker: { fitness: 'confirmed', notes: '16/16, 0 phantoms — cleanest MiniMax' },
|
|
153
|
+
mapper: { fitness: 'confirmed' },
|
|
154
|
+
reducer: { fitness: 'confirmed' },
|
|
155
|
+
planner: { fitness: 'confirmed' },
|
|
156
|
+
},
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
harness: 'opencode:minimax-m2.7',
|
|
160
|
+
bestOnboarding: 'bare',
|
|
161
|
+
relayNative: true,
|
|
162
|
+
roles: {
|
|
163
|
+
worker: { fitness: 'confirmed', notes: '16/16, 2 phantoms' },
|
|
164
|
+
mapper: { fitness: 'confirmed' },
|
|
165
|
+
reducer: { fitness: 'confirmed' },
|
|
166
|
+
planner: { fitness: 'confirmed' },
|
|
167
|
+
},
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
harness: 'opencode:glm-5.1',
|
|
171
|
+
bestOnboarding: 'bare',
|
|
172
|
+
relayNative: true,
|
|
173
|
+
roles: {
|
|
174
|
+
worker: { fitness: 'confirmed', notes: '16/16, 1 phantom — prefer over glm-5' },
|
|
175
|
+
mapper: { fitness: 'confirmed' },
|
|
176
|
+
reducer: { fitness: 'confirmed' },
|
|
177
|
+
planner: { fitness: 'confirmed' },
|
|
178
|
+
},
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
harness: 'opencode:big-pickle',
|
|
182
|
+
bestOnboarding: 'bare',
|
|
183
|
+
relayNative: true,
|
|
184
|
+
roles: {
|
|
185
|
+
worker: { fitness: 'confirmed', notes: '16/16, 0 phantoms' },
|
|
186
|
+
mapper: { fitness: 'confirmed' },
|
|
187
|
+
reducer: { fitness: 'confirmed' },
|
|
188
|
+
planner: { fitness: 'confirmed' },
|
|
189
|
+
},
|
|
190
|
+
},
|
|
191
|
+
// ── opencode confirmed (16/16, 3-9 phantoms) ─────────────────────────────────
|
|
192
|
+
{
|
|
193
|
+
harness: 'opencode:glm-5',
|
|
194
|
+
bestOnboarding: 'bare',
|
|
195
|
+
relayNative: true,
|
|
196
|
+
roles: {
|
|
197
|
+
worker: { fitness: 'confirmed', notes: '16/16, 3 phantoms' },
|
|
198
|
+
mapper: { fitness: 'confirmed' },
|
|
199
|
+
planner: { fitness: 'provisional' },
|
|
200
|
+
},
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
harness: 'opencode:gemini-3.1-pro',
|
|
204
|
+
bestOnboarding: 'bare',
|
|
205
|
+
relayNative: true,
|
|
206
|
+
roles: {
|
|
207
|
+
worker: { fitness: 'confirmed', notes: '16/16, 5 phantoms; bare works (fixes native CLI bare=60%)' },
|
|
208
|
+
reviewer: { fitness: 'provisional' },
|
|
209
|
+
mapper: { fitness: 'confirmed' },
|
|
210
|
+
coordinator: { fitness: 'provisional' },
|
|
211
|
+
},
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
harness: 'opencode:grok-build-0.1',
|
|
215
|
+
bestOnboarding: 'bare',
|
|
216
|
+
relayNative: true,
|
|
217
|
+
roles: {
|
|
218
|
+
worker: {
|
|
219
|
+
fitness: 'confirmed',
|
|
220
|
+
notes: '16/16, 5 phantoms; grok model is capable — native CLI MCP was the failure',
|
|
221
|
+
},
|
|
222
|
+
mapper: { fitness: 'confirmed' },
|
|
223
|
+
planner: { fitness: 'provisional' },
|
|
224
|
+
},
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
harness: 'opencode:gemini-3-flash',
|
|
228
|
+
bestOnboarding: 'bare',
|
|
229
|
+
relayNative: true,
|
|
230
|
+
roles: {
|
|
231
|
+
worker: { fitness: 'confirmed', notes: '16/16, 9 phantoms' },
|
|
232
|
+
mapper: { fitness: 'confirmed' },
|
|
233
|
+
planner: { fitness: 'provisional' },
|
|
234
|
+
},
|
|
235
|
+
},
|
|
236
|
+
// ── opencode provisional (12-15/16) ──────────────────────────────────────────
|
|
237
|
+
{
|
|
238
|
+
harness: 'opencode:kimi-k2.5',
|
|
239
|
+
bestOnboarding: 'bare',
|
|
240
|
+
relayNative: true,
|
|
241
|
+
roles: {
|
|
242
|
+
worker: { fitness: 'provisional', notes: '15/16, 0 phantoms; s02:one-liner weak — use bare/skill' },
|
|
243
|
+
mapper: { fitness: 'provisional' },
|
|
244
|
+
},
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
harness: 'opencode:kimi-k2.6',
|
|
248
|
+
bestOnboarding: 'bare',
|
|
249
|
+
relayNative: true,
|
|
250
|
+
roles: {
|
|
251
|
+
worker: { fitness: 'provisional', notes: '15/16, 5 phantoms; s02:brief weak — use bare/skill' },
|
|
252
|
+
mapper: { fitness: 'provisional' },
|
|
253
|
+
},
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
harness: 'opencode:gemini-3.5-flash',
|
|
257
|
+
bestOnboarding: 'one-liner',
|
|
258
|
+
relayNative: false,
|
|
259
|
+
roles: {
|
|
260
|
+
worker: {
|
|
261
|
+
fitness: 'provisional',
|
|
262
|
+
notes: '14/16, 20 phantoms — high phantom rate; avoid spawning roles',
|
|
263
|
+
},
|
|
264
|
+
},
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
harness: 'opencode:north-mini-code-free',
|
|
268
|
+
bestOnboarding: 'bare',
|
|
269
|
+
relayNative: true,
|
|
270
|
+
roles: {
|
|
271
|
+
worker: {
|
|
272
|
+
fitness: 'provisional',
|
|
273
|
+
notes: '12/16; s02 all-fail (injected DONE) but s03 all-pass (real tasks work)',
|
|
274
|
+
},
|
|
275
|
+
},
|
|
276
|
+
},
|
|
277
|
+
// ── eliminated ────────────────────────────────────────────────────────────────
|
|
278
|
+
{
|
|
279
|
+
harness: 'opencode:deepseek-v4-pro',
|
|
280
|
+
bestOnboarding: 'bare',
|
|
281
|
+
relayNative: false,
|
|
282
|
+
roles: {
|
|
283
|
+
worker: { fitness: 'not-viable', notes: '11/16; s03 only brief passes, s04 partially fails' },
|
|
284
|
+
},
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
harness: 'opencode:nemotron-3-ultra-free',
|
|
288
|
+
bestOnboarding: 'one-liner',
|
|
289
|
+
relayNative: false,
|
|
290
|
+
roles: {
|
|
291
|
+
worker: {
|
|
292
|
+
fitness: 'not-viable',
|
|
293
|
+
notes: '10/16; scattered s01/s03/s04 failures, no reliable onboarding',
|
|
294
|
+
},
|
|
295
|
+
},
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
harness: 'gemini',
|
|
299
|
+
defaultModel: undefined,
|
|
300
|
+
bestOnboarding: 'one-liner',
|
|
301
|
+
relayNative: false,
|
|
302
|
+
roles: {
|
|
303
|
+
worker: { fitness: 'confirmed', notes: 'one-liner s03=100%; bare=60%' },
|
|
304
|
+
planner: { fitness: 'provisional', notes: 'relay-native when prompted; avoid relay-agent vocab' },
|
|
305
|
+
mapper: { fitness: 'confirmed', notes: 'one-liner+ reliable' },
|
|
306
|
+
reducer: { fitness: 'provisional' },
|
|
307
|
+
coordinator: { fitness: 'provisional', notes: 's04=60-80%; occasional native fallback' },
|
|
308
|
+
reviewer: { fitness: 'provisional' },
|
|
309
|
+
},
|
|
310
|
+
},
|
|
311
|
+
{
|
|
312
|
+
harness: 'droid',
|
|
313
|
+
defaultModel: undefined,
|
|
314
|
+
bestOnboarding: 'bare',
|
|
315
|
+
relayNative: false,
|
|
316
|
+
roles: {
|
|
317
|
+
worker: { fitness: 'confirmed', notes: 's03 bare=100% with directive phrasing' },
|
|
318
|
+
mapper: { fitness: 'confirmed', notes: 'leaf-only; no spawning tasks' },
|
|
319
|
+
planner: { fitness: 'provisional' },
|
|
320
|
+
// NEVER use for roles that involve spawning: s04=0% bare/one-liner
|
|
321
|
+
coordinator: { fitness: 'not-viable', notes: 's04=0%; routes to native Task tool' },
|
|
322
|
+
supervisor: { fitness: 'not-viable', notes: 'would use native Task, not relay' },
|
|
323
|
+
},
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
harness: 'grok',
|
|
327
|
+
defaultModel: undefined,
|
|
328
|
+
bestOnboarding: 'bare',
|
|
329
|
+
relayNative: false,
|
|
330
|
+
roles: {
|
|
331
|
+
worker: { fitness: 'not-viable', notes: '0/48 — model does not call relay MCP tools' },
|
|
332
|
+
coordinator: { fitness: 'not-viable' },
|
|
333
|
+
},
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
harness: 'cursor-agent',
|
|
337
|
+
defaultModel: undefined,
|
|
338
|
+
bestOnboarding: 'bare',
|
|
339
|
+
relayNative: false,
|
|
340
|
+
roles: {
|
|
341
|
+
worker: { fitness: 'not-viable', notes: '0/48 — model does not call relay MCP tools' },
|
|
342
|
+
coordinator: { fitness: 'not-viable' },
|
|
343
|
+
},
|
|
344
|
+
},
|
|
345
|
+
];
|
|
346
|
+
/**
|
|
347
|
+
* Look up which harnesses can fill a given role at 'confirmed' or better fitness.
|
|
348
|
+
* Use to populate role slots when composing teams for specific swarm patterns.
|
|
349
|
+
*/
|
|
350
|
+
export function harnessesForRole(role) {
|
|
351
|
+
return HARNESS_ROLE_MAP.filter((h) => {
|
|
352
|
+
const entry = h.roles[role];
|
|
353
|
+
return entry?.fitness === 'confirmed' || entry?.fitness === 'provisional';
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
const ROUTING_TABLE = {
|
|
357
|
+
// Low complexity — cheapest reliable setup.
|
|
358
|
+
// Worker: codex:gpt-5.5 (relay-native, no skill injection needed, cheaper than claude)
|
|
359
|
+
'low:serial': {
|
|
360
|
+
leadModel: 'sonnet',
|
|
361
|
+
leadOnboarding: 'one-liner',
|
|
362
|
+
worker: { model: 'haiku', cli: 'codex', codexModel: CODEX_MODEL_TIERS.recommended },
|
|
363
|
+
},
|
|
364
|
+
'low:parallel': {
|
|
365
|
+
leadModel: 'sonnet',
|
|
366
|
+
leadOnboarding: 'one-liner',
|
|
367
|
+
worker: { model: 'haiku', cli: 'codex', codexModel: CODEX_MODEL_TIERS.recommended },
|
|
368
|
+
},
|
|
369
|
+
// Medium serial — quality matters, use sonnet-class worker.
|
|
370
|
+
// Worker: codex:gpt-5.5 (relay-native, equivalent quality to claude:sonnet for task execution)
|
|
371
|
+
'medium:serial': {
|
|
372
|
+
leadModel: 'sonnet',
|
|
373
|
+
leadOnboarding: 'one-liner',
|
|
374
|
+
worker: { model: 'sonnet', cli: 'codex', codexModel: CODEX_MODEL_TIERS.recommended },
|
|
375
|
+
},
|
|
376
|
+
// Medium parallel — fan-out with cheap workers + sonnet synthesiser.
|
|
377
|
+
// Workers: opencode:deepseek-v4-flash (16/16, 0 phantoms, fast, cost-effective)
|
|
378
|
+
// Synth: claude:sonnet (structured aggregation needs Claude's output quality)
|
|
379
|
+
'medium:parallel': {
|
|
380
|
+
leadModel: 'sonnet',
|
|
381
|
+
leadOnboarding: 'one-liner',
|
|
382
|
+
worker: { model: 'haiku', cli: 'opencode', opencodeModel: 'deepseek-v4-flash' },
|
|
383
|
+
synth: true,
|
|
384
|
+
},
|
|
385
|
+
// High serial — depth work; sonnet workers via codex for reliability.
|
|
386
|
+
'high:serial': {
|
|
387
|
+
leadModel: 'opus',
|
|
388
|
+
leadOnboarding: 'bare',
|
|
389
|
+
worker: { model: 'sonnet', cli: 'codex', codexModel: CODEX_MODEL_TIERS.recommended },
|
|
390
|
+
},
|
|
391
|
+
// High parallel — large fan-out; opencode workers cost-effective at scale.
|
|
392
|
+
// Synthesiser is claude:sonnet (needs judgment for high-complexity aggregation).
|
|
393
|
+
'high:parallel': {
|
|
394
|
+
leadModel: 'opus',
|
|
395
|
+
leadOnboarding: 'bare',
|
|
396
|
+
worker: { model: 'haiku', cli: 'opencode', opencodeModel: 'deepseek-v4-flash' },
|
|
397
|
+
synth: true,
|
|
398
|
+
},
|
|
399
|
+
};
|
|
400
|
+
// ── Composer ─────────────────────────────────────────────────────────────────
|
|
401
|
+
/**
|
|
402
|
+
* Map a TaskAssessment to a TeamSpec using the routing table.
|
|
403
|
+
* Pure function — no I/O, no LLM call.
|
|
404
|
+
*/
|
|
405
|
+
export function composeTeam(assessment, originalTask) {
|
|
406
|
+
const { complexity, parallelizable, estimatedWorkers, subtasks, domains } = assessment;
|
|
407
|
+
const key = `${complexity}:${parallelizable ? 'parallel' : 'serial'}`;
|
|
408
|
+
const row = ROUTING_TABLE[key];
|
|
409
|
+
const workerOnboarding = HARNESS_ONBOARDING[row.worker.cli ?? 'claude'] ?? 'bare';
|
|
410
|
+
// Build worker specs from the inferred subtask list.
|
|
411
|
+
const baseWorkers = subtasks.slice(0, estimatedWorkers).map((subtask, i) => {
|
|
412
|
+
const domain = domains[i] ?? 'general';
|
|
413
|
+
return {
|
|
414
|
+
role: 'worker',
|
|
415
|
+
model: row.worker.model,
|
|
416
|
+
cli: row.worker.cli,
|
|
417
|
+
codexModel: row.worker.codexModel,
|
|
418
|
+
opencodeModel: row.worker.opencodeModel,
|
|
419
|
+
task: `You are a specialised ${domain} relay worker. Your task:\n\n${originalTask}\n\nFocus exclusively on the ${subtask}. Report DONE when complete with a concise summary.`,
|
|
420
|
+
};
|
|
421
|
+
});
|
|
422
|
+
// Synthesiser is always claude:sonnet — needs judgment for aggregation.
|
|
423
|
+
const workers = row.synth
|
|
424
|
+
? [
|
|
425
|
+
...baseWorkers,
|
|
426
|
+
{
|
|
427
|
+
role: 'reducer',
|
|
428
|
+
model: 'sonnet',
|
|
429
|
+
cli: 'claude',
|
|
430
|
+
task: `You are a synthesis relay worker. Wait for all other relay workers to report DONE, then synthesise their findings into a single coherent summary for the lead. Report DONE when the synthesis is complete.`,
|
|
431
|
+
},
|
|
432
|
+
]
|
|
433
|
+
: baseWorkers;
|
|
434
|
+
return {
|
|
435
|
+
lead: { model: row.leadModel, onboarding: row.leadOnboarding },
|
|
436
|
+
workers,
|
|
437
|
+
};
|
|
438
|
+
}
|
|
439
|
+
//# sourceMappingURL=composer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composer.js","sourceRoot":"","sources":["../../src/auto/composer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Director meta-prompt builder for auto-routing.
|
|
3
|
+
*
|
|
4
|
+
* The Director is the lead agent in an auto-composed team. Its meta-prompt
|
|
5
|
+
* tells it *what team it has* and *what each worker's job is* — so it only
|
|
6
|
+
* needs to coordinate, not plan. Pre-composing the team is the key insight
|
|
7
|
+
* that makes auto-routing reliable: the lead follows a script rather than
|
|
8
|
+
* inventing delegation on its own.
|
|
9
|
+
*
|
|
10
|
+
* Worker noun: "relay worker" — chosen from s05 phrasing eval results. This
|
|
11
|
+
* phrasing anchors the model to the agent-relay MCP tool namespace rather
|
|
12
|
+
* than its native subagent mechanism.
|
|
13
|
+
*/
|
|
14
|
+
import type { TeamSpec } from './composer.js';
|
|
15
|
+
/**
|
|
16
|
+
* Build the full system prompt for the Director (lead) agent.
|
|
17
|
+
*
|
|
18
|
+
* Includes:
|
|
19
|
+
* - Role description with team size and composition
|
|
20
|
+
* - Per-worker instructions (name, model tier, subtask)
|
|
21
|
+
* - Coordination protocol (spawn → wait → synthesise → release)
|
|
22
|
+
* - Onboarding text for the spawn/release tools
|
|
23
|
+
*/
|
|
24
|
+
export declare function buildDirectorPrompt(originalTask: string, team: TeamSpec): string;
|
|
25
|
+
//# sourceMappingURL=director-prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"director-prompt.d.ts","sourceRoot":"","sources":["../../src/auto/director-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,CAqDhF"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build the full system prompt for the Director (lead) agent.
|
|
3
|
+
*
|
|
4
|
+
* Includes:
|
|
5
|
+
* - Role description with team size and composition
|
|
6
|
+
* - Per-worker instructions (name, model tier, subtask)
|
|
7
|
+
* - Coordination protocol (spawn → wait → synthesise → release)
|
|
8
|
+
* - Onboarding text for the spawn/release tools
|
|
9
|
+
*/
|
|
10
|
+
export function buildDirectorPrompt(originalTask, team) {
|
|
11
|
+
const { workers, lead } = team;
|
|
12
|
+
const N = workers.length;
|
|
13
|
+
const workerList = workers
|
|
14
|
+
.map((w, i) => ` ${i + 1}. **${w.role}** (${w.model} relay worker): ${w.task.split('\n')[0].replace('You are a specialised ', '').replace(' worker. Your task:', '')}`)
|
|
15
|
+
.join('\n');
|
|
16
|
+
const spawnInstructions = workers
|
|
17
|
+
.map((w) => `mcp__agent-relay__add_agent({ name: "${w.role}", cli: "claude", task: ${JSON.stringify(w.task)} })`)
|
|
18
|
+
.join('\n');
|
|
19
|
+
const releaseInstructions = workers
|
|
20
|
+
.map((w) => `mcp__agent-relay__remove_agent({ name: "${w.role}" })`)
|
|
21
|
+
.join('\n');
|
|
22
|
+
// Onboarding injection: lead gets the relay tool names + protocol, regardless
|
|
23
|
+
// of the lead onboarding tier (bare leads still need explicit tool names in
|
|
24
|
+
// the meta-prompt since the meta-prompt IS their system prompt).
|
|
25
|
+
const onboarding = `
|
|
26
|
+
## Your relay worker tools
|
|
27
|
+
- Spawn a relay worker: mcp__agent-relay__add_agent({ name, cli: "claude", task })
|
|
28
|
+
- Release a relay worker: mcp__agent-relay__remove_agent({ name })
|
|
29
|
+
|
|
30
|
+
Each relay worker DMs you "ACK: <understanding>" when it starts and "DONE: <result>" when done.
|
|
31
|
+
Always release workers with remove_agent as soon as they report DONE.`;
|
|
32
|
+
return `You are Director, leading a ${N}-relay-worker team on this task:
|
|
33
|
+
|
|
34
|
+
${originalTask}
|
|
35
|
+
|
|
36
|
+
## Your team
|
|
37
|
+
${workerList}
|
|
38
|
+
|
|
39
|
+
## Protocol
|
|
40
|
+
1. Spawn each relay worker with the exact calls below:
|
|
41
|
+
${spawnInstructions}
|
|
42
|
+
|
|
43
|
+
2. Wait for all ${N} workers to DM you "DONE: …".
|
|
44
|
+
|
|
45
|
+
3. Synthesise their findings into a concise final answer.
|
|
46
|
+
|
|
47
|
+
4. Release each worker immediately after receiving their DONE:
|
|
48
|
+
${releaseInstructions}
|
|
49
|
+
|
|
50
|
+
5. Report your synthesised result to the channel.
|
|
51
|
+
${onboarding}`;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=director-prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"director-prompt.js","sourceRoot":"","sources":["../../src/auto/director-prompt.ts"],"names":[],"mappings":"AAeA;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,YAAoB,EAAE,IAAc;IACtE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IAC/B,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAEzB,MAAM,UAAU,GAAG,OAAO;SACvB,GAAG,CACF,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,mBAAmB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,EAAE,CAC3J;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,iBAAiB,GAAG,OAAO;SAC9B,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,wCAAwC,CAAC,CAAC,IAAI,2BAA2B,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CACvG;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,mBAAmB,GAAG,OAAO;SAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,2CAA2C,CAAC,CAAC,IAAI,MAAM,CAAC;SACnE,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,8EAA8E;IAC9E,4EAA4E;IAC5E,iEAAiE;IACjE,MAAM,UAAU,GAAG;;;;;;sEAMiD,CAAC;IAErE,OAAO,+BAA+B,CAAC;;EAEvC,YAAY;;;EAGZ,UAAU;;;;EAIV,iBAAiB;;kBAED,CAAC;;;;;EAKjB,mBAAmB;;;EAGnB,UAAU,EAAE,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-routing: dynamically determine model-tier and team composition for a task.
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* const assessment = classifyTask(taskDescription);
|
|
6
|
+
* const team = composeTeam(assessment, taskDescription);
|
|
7
|
+
* const directorPrompt = buildDirectorPrompt(taskDescription, team);
|
|
8
|
+
* // spawn lead with model=team.lead.model and task=directorPrompt
|
|
9
|
+
*/
|
|
10
|
+
export { classifyTask } from './classifier.js';
|
|
11
|
+
export type { TaskAssessment } from './classifier.js';
|
|
12
|
+
export { composeTeam } from './composer.js';
|
|
13
|
+
export type { TeamSpec, WorkerSpec, ModelTier, OnboardingVariant } from './composer.js';
|
|
14
|
+
export { buildDirectorPrompt } from './director-prompt.js';
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auto/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAExF,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-routing: dynamically determine model-tier and team composition for a task.
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* const assessment = classifyTask(taskDescription);
|
|
6
|
+
* const team = composeTeam(assessment, taskDescription);
|
|
7
|
+
* const directorPrompt = buildDirectorPrompt(taskDescription, team);
|
|
8
|
+
* // spawn lead with model=team.lead.model and task=directorPrompt
|
|
9
|
+
*/
|
|
10
|
+
export { classifyTask } from './classifier.js';
|
|
11
|
+
export { composeTeam } from './composer.js';
|
|
12
|
+
export { buildDirectorPrompt } from './director-prompt.js';
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auto/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -51,7 +51,6 @@ type RegisterAgentWithRebindArgs = {
|
|
|
51
51
|
export declare function normalizeBaseUrl(baseUrl?: string): string;
|
|
52
52
|
export declare function envFlagEnabled(value: string | undefined): boolean;
|
|
53
53
|
export declare function normalizeAgentType(value: string | undefined): AgentType | undefined;
|
|
54
|
-
export declare function registerAgentWithRebind({ session, setSession, getRelay, name, type, persona, metadata, strictAgentName, preferredAgentName, forcedAgentType, }: RegisterAgentWithRebindArgs): Promise<Record<string, unknown>>;
|
|
55
54
|
declare class SubscriptionManager {
|
|
56
55
|
private readonly subscriptions;
|
|
57
56
|
subscribe(uri: string): void;
|
|
@@ -69,6 +68,7 @@ declare class RealtimeResourceBridge {
|
|
|
69
68
|
start(): void;
|
|
70
69
|
stop(): void;
|
|
71
70
|
}
|
|
71
|
+
export declare function registerAgentWithRebind({ session, setSession, getRelay, name, type, persona, metadata, strictAgentName, preferredAgentName, forcedAgentType, }: RegisterAgentWithRebindArgs): Promise<Record<string, unknown>>;
|
|
72
72
|
export declare function createAgentRelayMcpServer(options: AgentRelayMcpServerOptions): McpServer;
|
|
73
73
|
export declare function resolveStdioBootstrapOptions(options: AgentRelayMcpServerOptions): Promise<AgentRelayMcpServerOptions>;
|
|
74
74
|
export declare function startAgentRelayMcpStdio(options: AgentRelayMcpServerOptions): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-relay-mcp.d.ts","sourceRoot":"","sources":["../../src/cli/agent-relay-mcp.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,SAAS,EAAoB,MAAM,yCAAyC,CAAC;AAOtF,OAAO,EAAE,SAAS,EAAe,QAAQ,EAAoB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-relay-mcp.d.ts","sourceRoot":"","sources":["../../src/cli/agent-relay-mcp.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,SAAS,EAAoB,MAAM,yCAAyC,CAAC;AAOtF,OAAO,EAAE,SAAS,EAAe,QAAQ,EAAoB,MAAM,gBAAgB,CAAC;AAQpF,OAAO,KAAK,EACV,gBAAgB,EAGhB,iBAAiB,EAGlB,MAAM,0BAA0B,CAAC;AAMlC,eAAO,MAAM,uBAAuB,QAAkE,CAAC;AAyCvG,KAAK,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AACnC,KAAK,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAG/C,MAAM,WAAW,0BAA0B;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACtC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACxE;AAED,UAAU,eAAe;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,YAAY;IACpB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACrC,QAAQ,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACxC,aAAa,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC1C,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,KAAK,mBAAmB,GAAG,IAAI,CAAC,YAAY,EAAE,cAAc,GAAG,YAAY,GAAG,WAAW,CAAC,GAAG;IAC3F,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CACvC,CAAC;AACF,KAAK,aAAa,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC;AAQ9D,KAAK,2BAA2B,GAAG;IACjC,OAAO,EAAE,mBAAmB,CAAC;IAC7B,UAAU,EAAE,aAAa,CAAC;IAC1B,QAAQ,EAAE,MAAM,aAAa,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,eAAe,CAAC,EAAE,SAAS,CAAC;CAC7B,CAAC;AASF,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAEzD;AAgCD,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAOjE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAMnF;AAiID,cAAM,mBAAmB;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IAEnD,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI5B,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI9B,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAIlD,MAAM,IAAI,MAAM,EAAE;IAIlB,KAAK,IAAI,IAAI;CAGd;AAoDD,cAAM,sBAAsB;IAIxB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc;IALjC,OAAO,CAAC,aAAa,CAA6B;gBAG/B,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,mBAAmB,EAClC,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI;IAGxD,KAAK,IAAI,IAAI;IAoBb,IAAI,IAAI,IAAI;CAOb;AAoiBD,wBAAsB,uBAAuB,CAAC,EAC5C,OAAO,EACP,UAAU,EACV,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,eAAe,EACf,kBAAkB,EAClB,eAAe,GAChB,EAAE,2BAA2B,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAmDhE;AA6rBD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,0BAA0B,GAAG,SAAS,CA+MxF;AASD,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,0BAA0B,CAAC,CA2BrC;AAED,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAShG;AAED,wBAAgB,cAAc,IAAI,0BAA0B,CAe3D"}
|