@jmanuelcorral/openteam 0.16.3 → 0.17.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.opencode/openteam.example.json +10 -3
- package/README.es.md +4 -3
- package/README.md +4 -3
- package/dist/certificates/graph-release-certificate.json +2 -2
- package/dist/certificates/graph-shadow-certificate.json +2 -2
- package/dist/cli/setupAdapters.d.ts.map +1 -1
- package/dist/cli.js +349 -54
- package/dist/commands/doctor.d.ts +12 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/setup.d.ts +72 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/config/errors.d.ts.map +1 -1
- package/dist/config/graphFeatureGate.d.ts +10 -0
- package/dist/config/graphFeatureGate.d.ts.map +1 -1
- package/dist/config/resolve.d.ts +3 -3
- package/dist/config/schema.d.ts +10 -1
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +259 -53
- package/dist/local/lemonade.d.ts +5 -1
- package/dist/local/lemonade.d.ts.map +1 -1
- package/dist/local/slotPool.d.ts +58 -0
- package/dist/local/slotPool.d.ts.map +1 -0
- package/dist/local/types.d.ts +19 -0
- package/dist/local/types.d.ts.map +1 -1
- package/dist/orchestrator/coordinator.d.ts.map +1 -1
- package/dist/orchestrator/roles.d.ts +28 -0
- package/dist/orchestrator/roles.d.ts.map +1 -1
- package/dist/orchestrator/runtimeSelection.d.ts +7 -1
- package/dist/orchestrator/runtimeSelection.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -97,7 +97,8 @@ var AgentRoleProfileSchema = z.object({
|
|
|
97
97
|
localFirst: z.boolean(),
|
|
98
98
|
requiresLocalRuntime: z.boolean().optional(),
|
|
99
99
|
localRuntimes: z.array(z.string().min(1)).optional(),
|
|
100
|
-
localModels: z.record(z.string().min(1), z.string().min(1)).optional()
|
|
100
|
+
localModels: z.record(z.string().min(1), z.string().min(1)).optional(),
|
|
101
|
+
localModelClass: z.enum(["thinking", "coder"]).optional()
|
|
101
102
|
}).strict();
|
|
102
103
|
var TEAM_ROLES = {
|
|
103
104
|
architect: {
|
|
@@ -108,7 +109,8 @@ var TEAM_ROLES = {
|
|
|
108
109
|
minCodeQualityTier: 5,
|
|
109
110
|
needsToolCallingByDefault: true,
|
|
110
111
|
preferredFrontierModels: ["auto"],
|
|
111
|
-
localFirst: false
|
|
112
|
+
localFirst: false,
|
|
113
|
+
localModelClass: "thinking"
|
|
112
114
|
},
|
|
113
115
|
integration: {
|
|
114
116
|
roleID: "integration",
|
|
@@ -118,7 +120,8 @@ var TEAM_ROLES = {
|
|
|
118
120
|
minCodeQualityTier: 4,
|
|
119
121
|
needsToolCallingByDefault: true,
|
|
120
122
|
preferredFrontierModels: ["auto"],
|
|
121
|
-
localFirst: false
|
|
123
|
+
localFirst: false,
|
|
124
|
+
localModelClass: "coder"
|
|
122
125
|
},
|
|
123
126
|
"local-runtime": {
|
|
124
127
|
roleID: "local-runtime",
|
|
@@ -128,7 +131,8 @@ var TEAM_ROLES = {
|
|
|
128
131
|
minCodeQualityTier: 4,
|
|
129
132
|
needsToolCallingByDefault: true,
|
|
130
133
|
preferredFrontierModels: ["auto"],
|
|
131
|
-
localFirst: true
|
|
134
|
+
localFirst: true,
|
|
135
|
+
localModelClass: "coder"
|
|
132
136
|
},
|
|
133
137
|
"routing-cost": {
|
|
134
138
|
roleID: "routing-cost",
|
|
@@ -138,7 +142,8 @@ var TEAM_ROLES = {
|
|
|
138
142
|
minCodeQualityTier: 4,
|
|
139
143
|
needsToolCallingByDefault: false,
|
|
140
144
|
preferredFrontierModels: ["auto"],
|
|
141
|
-
localFirst: true
|
|
145
|
+
localFirst: true,
|
|
146
|
+
localModelClass: "thinking"
|
|
142
147
|
},
|
|
143
148
|
scribe: {
|
|
144
149
|
roleID: "scribe",
|
|
@@ -171,7 +176,8 @@ var TEAM_ROLES = {
|
|
|
171
176
|
needsToolCallingByDefault: false,
|
|
172
177
|
preferredFrontierModels: [],
|
|
173
178
|
localFirst: true,
|
|
174
|
-
requiresLocalRuntime: true
|
|
179
|
+
requiresLocalRuntime: true,
|
|
180
|
+
localModelClass: "thinking"
|
|
175
181
|
},
|
|
176
182
|
tester: {
|
|
177
183
|
roleID: "tester",
|
|
@@ -181,7 +187,8 @@ var TEAM_ROLES = {
|
|
|
181
187
|
minCodeQualityTier: 3,
|
|
182
188
|
needsToolCallingByDefault: true,
|
|
183
189
|
preferredFrontierModels: ["auto"],
|
|
184
|
-
localFirst: true
|
|
190
|
+
localFirst: true,
|
|
191
|
+
localModelClass: "coder"
|
|
185
192
|
},
|
|
186
193
|
reviewer: {
|
|
187
194
|
roleID: "reviewer",
|
|
@@ -191,7 +198,8 @@ var TEAM_ROLES = {
|
|
|
191
198
|
minCodeQualityTier: 5,
|
|
192
199
|
needsToolCallingByDefault: false,
|
|
193
200
|
preferredFrontierModels: ["auto"],
|
|
194
|
-
localFirst: true
|
|
201
|
+
localFirst: true,
|
|
202
|
+
localModelClass: "coder"
|
|
195
203
|
}
|
|
196
204
|
};
|
|
197
205
|
var LEGACY_TEAM_ROLE_ALIASES = {
|
|
@@ -294,11 +302,11 @@ var GraphEngineSchema = z2.enum(["builtin", "langgraph"]);
|
|
|
294
302
|
var DEFAULT_GRAPH_JOURNAL_ROOT = ".opencode/openteam-local/graph/runs";
|
|
295
303
|
var DEFAULT_GRAPH_WORKTREES_DIR = ".opencode/openteam-local/graph/worktrees";
|
|
296
304
|
var GraphConfigSchema = z2.object({
|
|
297
|
-
mode: GraphModeSchema.default("
|
|
305
|
+
mode: GraphModeSchema.default("active"),
|
|
298
306
|
engine: GraphEngineSchema.optional(),
|
|
299
307
|
killSwitch: z2.boolean().default(false),
|
|
300
308
|
journalRoot: z2.string().min(1).default(DEFAULT_GRAPH_JOURNAL_ROOT),
|
|
301
|
-
operatorApproval: z2.boolean().default(
|
|
309
|
+
operatorApproval: z2.boolean().default(true),
|
|
302
310
|
worktrees: z2.object({
|
|
303
311
|
enabled: z2.boolean().default(false)
|
|
304
312
|
}).strict().default({ enabled: false })
|
|
@@ -392,6 +400,9 @@ var OrchestratorRolesSchema = z2.record(z2.string().min(1), z2.unknown()).defaul
|
|
|
392
400
|
if (parsed.data.localModels !== undefined) {
|
|
393
401
|
profile.localModels = parsed.data.localModels;
|
|
394
402
|
}
|
|
403
|
+
if (parsed.data.localModelClass !== undefined) {
|
|
404
|
+
profile.localModelClass = parsed.data.localModelClass;
|
|
405
|
+
}
|
|
395
406
|
parsedRoles[roleID] = profile;
|
|
396
407
|
}
|
|
397
408
|
return parsedRoles;
|
|
@@ -418,7 +429,10 @@ var LocalRuntimeSchema = z2.object({
|
|
|
418
429
|
discovery: z2.enum(["cli", "sdk", "manual"]).optional(),
|
|
419
430
|
defaultModel: ModelRefSchema,
|
|
420
431
|
maxConcurrency: z2.number().int().positive().optional(),
|
|
421
|
-
|
|
432
|
+
modelConcurrency: z2.record(z2.string().min(1), z2.number().int().positive()).optional(),
|
|
433
|
+
reservedInteractiveSlots: z2.number().int().nonnegative().optional(),
|
|
434
|
+
thinkingModel: z2.string().min(1).optional(),
|
|
435
|
+
coderModel: z2.string().min(1).optional()
|
|
422
436
|
}).strict().superRefine((runtime, ctx) => {
|
|
423
437
|
const resolvedKind = runtime.kind ?? runtime.id;
|
|
424
438
|
if (!LocalRuntimeKindSchema.safeParse(resolvedKind).success) {
|
|
@@ -435,12 +449,6 @@ function localRuntimeKind(runtime) {
|
|
|
435
449
|
function effectiveMaxConcurrency(runtime) {
|
|
436
450
|
return runtime.maxConcurrency ?? DEFAULT_LOCAL_MAX_CONCURRENCY;
|
|
437
451
|
}
|
|
438
|
-
function effectiveReservedInteractiveSlots(runtime) {
|
|
439
|
-
if (runtime.reservedInteractiveSlots !== undefined) {
|
|
440
|
-
return runtime.reservedInteractiveSlots;
|
|
441
|
-
}
|
|
442
|
-
return effectiveMaxConcurrency(runtime) >= 2 ? 1 : 0;
|
|
443
|
-
}
|
|
444
452
|
var MemoryScopeSchema = z2.enum(["project", "user"]);
|
|
445
453
|
var MemoryExtractionModeSchema = z2.enum([
|
|
446
454
|
"local",
|
|
@@ -553,10 +561,10 @@ var OpenTeamConfigObjectSchema = z2.object({
|
|
|
553
561
|
storage: StorageConfigSchema,
|
|
554
562
|
memory: MemoryConfigSchema.optional(),
|
|
555
563
|
graph: GraphConfigSchema.default({
|
|
556
|
-
mode: "
|
|
564
|
+
mode: "active",
|
|
557
565
|
killSwitch: false,
|
|
558
566
|
journalRoot: DEFAULT_GRAPH_JOURNAL_ROOT,
|
|
559
|
-
operatorApproval:
|
|
567
|
+
operatorApproval: true,
|
|
560
568
|
worktrees: { enabled: false }
|
|
561
569
|
}),
|
|
562
570
|
orchestrator: OrchestratorConfigSchema.optional()
|
|
@@ -2741,7 +2749,10 @@ var KNOWN_CONFIG_KEYS_BY_PATH = new Map([
|
|
|
2741
2749
|
"discovery",
|
|
2742
2750
|
"defaultModel",
|
|
2743
2751
|
"maxConcurrency",
|
|
2744
|
-
"
|
|
2752
|
+
"modelConcurrency",
|
|
2753
|
+
"reservedInteractiveSlots",
|
|
2754
|
+
"thinkingModel",
|
|
2755
|
+
"coderModel"
|
|
2745
2756
|
]
|
|
2746
2757
|
],
|
|
2747
2758
|
["local.runtimes[].defaultModel", MODEL_REF_KEYS],
|
|
@@ -2918,7 +2929,7 @@ function loadOpenTeamConfig(raw) {
|
|
|
2918
2929
|
|
|
2919
2930
|
// src/config/resolve.ts
|
|
2920
2931
|
function resolveGraphConfig(config, source) {
|
|
2921
|
-
const configuredMode = config.graph?.mode ?? "
|
|
2932
|
+
const configuredMode = config.graph?.mode ?? "active";
|
|
2922
2933
|
const killSwitch = config.graph?.killSwitch ?? false;
|
|
2923
2934
|
const effectiveMode = killSwitch ? "off" : configuredMode;
|
|
2924
2935
|
return {
|
|
@@ -5499,24 +5510,141 @@ function ensureFoundryV1BaseURL(endpoint) {
|
|
|
5499
5510
|
}
|
|
5500
5511
|
|
|
5501
5512
|
// src/local/lemonade.ts
|
|
5502
|
-
var LEMONADE_DEFAULT_BASE_URL = "http://localhost:
|
|
5513
|
+
var LEMONADE_DEFAULT_BASE_URL = "http://localhost:13305/api/v1";
|
|
5514
|
+
var NON_TEXT_LABELS = new Set([
|
|
5515
|
+
"image",
|
|
5516
|
+
"tts",
|
|
5517
|
+
"transcription",
|
|
5518
|
+
"embedding",
|
|
5519
|
+
"reranking"
|
|
5520
|
+
]);
|
|
5521
|
+
var PARALLEL_ARG = /(?:^|\s)(?:--parallel|-np)[\s=]+(\d+)(?!\d)/;
|
|
5503
5522
|
function createLemonadeAdapter() {
|
|
5523
|
+
const listModels = async (options) => {
|
|
5524
|
+
const baseURL = normalizeBaseURL(options.baseURL ?? LEMONADE_DEFAULT_BASE_URL);
|
|
5525
|
+
const downloaded = await listLemonadeModels(baseURL, options.fetch);
|
|
5526
|
+
const loaded = await readLoadedModels(baseURL, options.fetch);
|
|
5527
|
+
return enrichWithLoadState(downloaded, loaded);
|
|
5528
|
+
};
|
|
5504
5529
|
return {
|
|
5505
5530
|
id: "lemonade",
|
|
5506
5531
|
defaultBaseURL: LEMONADE_DEFAULT_BASE_URL,
|
|
5507
|
-
listModels
|
|
5508
|
-
|
|
5509
|
-
|
|
5510
|
-
|
|
5511
|
-
|
|
5512
|
-
|
|
5513
|
-
|
|
5514
|
-
|
|
5515
|
-
|
|
5516
|
-
|
|
5532
|
+
listModels,
|
|
5533
|
+
async probe(options) {
|
|
5534
|
+
const baseURL = normalizeBaseURL(options.baseURL ?? LEMONADE_DEFAULT_BASE_URL);
|
|
5535
|
+
try {
|
|
5536
|
+
return {
|
|
5537
|
+
id: "lemonade",
|
|
5538
|
+
baseURL,
|
|
5539
|
+
reachable: true,
|
|
5540
|
+
models: await listModels({ ...options, baseURL }),
|
|
5541
|
+
probedAt: options.probedAt
|
|
5542
|
+
};
|
|
5543
|
+
} catch (error) {
|
|
5544
|
+
return unavailableSnapshot({
|
|
5545
|
+
id: "lemonade",
|
|
5546
|
+
baseURL,
|
|
5547
|
+
probedAt: options.probedAt,
|
|
5548
|
+
error
|
|
5549
|
+
});
|
|
5550
|
+
}
|
|
5517
5551
|
}
|
|
5518
5552
|
};
|
|
5519
5553
|
}
|
|
5554
|
+
async function listLemonadeModels(baseURL, fetch) {
|
|
5555
|
+
const response = await fetch(`${baseURL}/models`, {
|
|
5556
|
+
method: "GET",
|
|
5557
|
+
headers: { accept: "application/json" }
|
|
5558
|
+
});
|
|
5559
|
+
if (!response.ok) {
|
|
5560
|
+
throw new Error(`GET /models failed with HTTP ${response.status}`);
|
|
5561
|
+
}
|
|
5562
|
+
let payload;
|
|
5563
|
+
try {
|
|
5564
|
+
payload = await response.json();
|
|
5565
|
+
} catch (error) {
|
|
5566
|
+
throw new Error(`Malformed JSON from /models: ${errorMessage(error)}`);
|
|
5567
|
+
}
|
|
5568
|
+
const nonText = readNonTextModelIDs(payload);
|
|
5569
|
+
return parseOpenAIModels(payload).filter((model) => !nonText.has(model.modelID));
|
|
5570
|
+
}
|
|
5571
|
+
function readNonTextModelIDs(payload) {
|
|
5572
|
+
const ids = new Set;
|
|
5573
|
+
if (!isObject2(payload) || !Array.isArray(payload.data)) {
|
|
5574
|
+
return ids;
|
|
5575
|
+
}
|
|
5576
|
+
for (const entry of payload.data) {
|
|
5577
|
+
if (!isObject2(entry) || typeof entry.id !== "string") {
|
|
5578
|
+
continue;
|
|
5579
|
+
}
|
|
5580
|
+
if (isNonTextModel(entry)) {
|
|
5581
|
+
ids.add(entry.id);
|
|
5582
|
+
}
|
|
5583
|
+
}
|
|
5584
|
+
return ids;
|
|
5585
|
+
}
|
|
5586
|
+
function isNonTextModel(entry) {
|
|
5587
|
+
if (!Array.isArray(entry.labels)) {
|
|
5588
|
+
return false;
|
|
5589
|
+
}
|
|
5590
|
+
return entry.labels.some((label) => typeof label === "string" && NON_TEXT_LABELS.has(label));
|
|
5591
|
+
}
|
|
5592
|
+
async function readLoadedModels(baseURL, fetch) {
|
|
5593
|
+
let payload;
|
|
5594
|
+
try {
|
|
5595
|
+
const response = await fetch(`${baseURL}/health`, {
|
|
5596
|
+
method: "GET",
|
|
5597
|
+
headers: { accept: "application/json" }
|
|
5598
|
+
});
|
|
5599
|
+
if (!response.ok) {
|
|
5600
|
+
return;
|
|
5601
|
+
}
|
|
5602
|
+
payload = await response.json();
|
|
5603
|
+
} catch {
|
|
5604
|
+
return;
|
|
5605
|
+
}
|
|
5606
|
+
if (!isObject2(payload) || !Array.isArray(payload.all_models_loaded)) {
|
|
5607
|
+
return;
|
|
5608
|
+
}
|
|
5609
|
+
const loaded = new Map;
|
|
5610
|
+
for (const entry of payload.all_models_loaded) {
|
|
5611
|
+
if (!isObject2(entry) || typeof entry.model_name !== "string") {
|
|
5612
|
+
continue;
|
|
5613
|
+
}
|
|
5614
|
+
if (entry.loaded === false) {
|
|
5615
|
+
continue;
|
|
5616
|
+
}
|
|
5617
|
+
loaded.set(entry.model_name, { slots: readSlotCount(entry) });
|
|
5618
|
+
}
|
|
5619
|
+
return loaded;
|
|
5620
|
+
}
|
|
5621
|
+
function readSlotCount(entry) {
|
|
5622
|
+
const options = entry.recipe_options;
|
|
5623
|
+
if (!isObject2(options) || typeof options.llamacpp_args !== "string") {
|
|
5624
|
+
return;
|
|
5625
|
+
}
|
|
5626
|
+
const match = PARALLEL_ARG.exec(options.llamacpp_args);
|
|
5627
|
+
if (match === null) {
|
|
5628
|
+
return;
|
|
5629
|
+
}
|
|
5630
|
+
const parsed = Number.parseInt(match[1], 10);
|
|
5631
|
+
return Number.isInteger(parsed) && parsed > 0 ? parsed : undefined;
|
|
5632
|
+
}
|
|
5633
|
+
function enrichWithLoadState(models, loaded) {
|
|
5634
|
+
if (loaded === undefined) {
|
|
5635
|
+
return [...models];
|
|
5636
|
+
}
|
|
5637
|
+
return models.map((model) => {
|
|
5638
|
+
const hit = loaded.get(model.modelID);
|
|
5639
|
+
if (hit === undefined) {
|
|
5640
|
+
return { ...model, loaded: false };
|
|
5641
|
+
}
|
|
5642
|
+
return hit.slots === undefined ? { ...model, loaded: true } : { ...model, loaded: true, slots: hit.slots };
|
|
5643
|
+
});
|
|
5644
|
+
}
|
|
5645
|
+
function isObject2(value) {
|
|
5646
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
5647
|
+
}
|
|
5520
5648
|
|
|
5521
5649
|
// src/local/lmstudio.ts
|
|
5522
5650
|
var LMSTUDIO_DEFAULT_BASE_URL = "http://localhost:1234/v1";
|
|
@@ -5626,6 +5754,37 @@ function reachableRuntimeIds(snapshots) {
|
|
|
5626
5754
|
return ids;
|
|
5627
5755
|
}
|
|
5628
5756
|
|
|
5757
|
+
// src/local/slotPool.ts
|
|
5758
|
+
var POOL_SEPARATOR = "::";
|
|
5759
|
+
function slotPoolKey(runtime, modelID) {
|
|
5760
|
+
if (modelID === undefined) {
|
|
5761
|
+
return runtime.id;
|
|
5762
|
+
}
|
|
5763
|
+
const declared = runtime.modelConcurrency?.[modelID];
|
|
5764
|
+
return declared === undefined ? runtime.id : `${runtime.id}${POOL_SEPARATOR}${modelID}`;
|
|
5765
|
+
}
|
|
5766
|
+
function slotPoolRuntimeID(key) {
|
|
5767
|
+
const index = key.indexOf(POOL_SEPARATOR);
|
|
5768
|
+
return index === -1 ? key : key.slice(0, index);
|
|
5769
|
+
}
|
|
5770
|
+
function slotPoolModelID(key) {
|
|
5771
|
+
const index = key.indexOf(POOL_SEPARATOR);
|
|
5772
|
+
return index === -1 ? undefined : key.slice(index + POOL_SEPARATOR.length);
|
|
5773
|
+
}
|
|
5774
|
+
function slotPoolCapacity(runtime, modelID) {
|
|
5775
|
+
const declared = modelID === undefined ? undefined : runtime.modelConcurrency?.[modelID];
|
|
5776
|
+
return declared ?? effectiveMaxConcurrency(runtime);
|
|
5777
|
+
}
|
|
5778
|
+
function slotPoolReservedInteractive(runtime, modelID) {
|
|
5779
|
+
if (runtime.reservedInteractiveSlots !== undefined) {
|
|
5780
|
+
return runtime.reservedInteractiveSlots;
|
|
5781
|
+
}
|
|
5782
|
+
return slotPoolCapacity(runtime, modelID) >= 2 ? 1 : 0;
|
|
5783
|
+
}
|
|
5784
|
+
function unknownPoolCapacity() {
|
|
5785
|
+
return DEFAULT_LOCAL_MAX_CONCURRENCY;
|
|
5786
|
+
}
|
|
5787
|
+
|
|
5629
5788
|
// src/orchestrator/coordinator.ts
|
|
5630
5789
|
import { z as z17 } from "zod";
|
|
5631
5790
|
|
|
@@ -6109,9 +6268,19 @@ function configuredRuntime(runtimeId, config) {
|
|
|
6109
6268
|
function runtimeIdOfModel(model, config) {
|
|
6110
6269
|
return config.local.runtimes.find((runtime) => sameModel(runtime.defaultModel, model))?.id;
|
|
6111
6270
|
}
|
|
6112
|
-
function roleLocalModel(role, runtimeId, fallback) {
|
|
6271
|
+
function roleLocalModel(role, runtimeId, fallback, runtime) {
|
|
6113
6272
|
const pinned = role.localModels?.[runtimeId];
|
|
6114
|
-
|
|
6273
|
+
if (pinned !== undefined) {
|
|
6274
|
+
return { ...fallback, modelID: pinned };
|
|
6275
|
+
}
|
|
6276
|
+
const classModel = runtimeClassModel(role.localModelClass, runtime);
|
|
6277
|
+
return classModel === undefined ? fallback : { ...fallback, modelID: classModel };
|
|
6278
|
+
}
|
|
6279
|
+
function runtimeClassModel(modelClass, runtime) {
|
|
6280
|
+
if (modelClass === undefined || runtime === undefined) {
|
|
6281
|
+
return;
|
|
6282
|
+
}
|
|
6283
|
+
return modelClass === "thinking" ? runtime.thinkingModel : runtime.coderModel;
|
|
6115
6284
|
}
|
|
6116
6285
|
function selectDispatchRuntime(role, decision2, reachable, config) {
|
|
6117
6286
|
if (decision2.routeKind !== "local") {
|
|
@@ -6127,7 +6296,7 @@ function selectDispatchRuntime(role, decision2, reachable, config) {
|
|
|
6127
6296
|
if (runtime === undefined) {
|
|
6128
6297
|
continue;
|
|
6129
6298
|
}
|
|
6130
|
-
const model = roleLocalModel(role, runtimeId, runtime.defaultModel);
|
|
6299
|
+
const model = roleLocalModel(role, runtimeId, runtime.defaultModel, runtime);
|
|
6131
6300
|
return {
|
|
6132
6301
|
runtimeId,
|
|
6133
6302
|
decision: { ...decision2, selected: model }
|
|
@@ -6136,7 +6305,7 @@ function selectDispatchRuntime(role, decision2, reachable, config) {
|
|
|
6136
6305
|
}
|
|
6137
6306
|
const resolvedRuntimeId = runtimeIdOfModel(decision2.selected, config);
|
|
6138
6307
|
if (resolvedRuntimeId !== undefined) {
|
|
6139
|
-
const pinned = roleLocalModel(role, resolvedRuntimeId, decision2.selected);
|
|
6308
|
+
const pinned = roleLocalModel(role, resolvedRuntimeId, decision2.selected, configuredRuntime(resolvedRuntimeId, config));
|
|
6140
6309
|
if (pinned !== decision2.selected) {
|
|
6141
6310
|
return {
|
|
6142
6311
|
runtimeId: resolvedRuntimeId,
|
|
@@ -6156,7 +6325,7 @@ var TRUNCATED_REASON_SUFFIX = "…[truncated]";
|
|
|
6156
6325
|
var MAX_SERIALIZED_ARRAY_ITEMS = 20;
|
|
6157
6326
|
var MAX_SERIALIZED_OBJECT_PROPERTIES = 25;
|
|
6158
6327
|
var MAX_SERIALIZED_DEPTH = 4;
|
|
6159
|
-
function
|
|
6328
|
+
function isObject3(value) {
|
|
6160
6329
|
return typeof value === "object" && value !== null;
|
|
6161
6330
|
}
|
|
6162
6331
|
function isError(value) {
|
|
@@ -6186,7 +6355,7 @@ function stringProperty(value, key) {
|
|
|
6186
6355
|
}
|
|
6187
6356
|
function nestedMessage(value, key) {
|
|
6188
6357
|
const container = safeGet(value, key);
|
|
6189
|
-
if (!
|
|
6358
|
+
if (!isObject3(container)) {
|
|
6190
6359
|
return;
|
|
6191
6360
|
}
|
|
6192
6361
|
const message = stringProperty(container, "message");
|
|
@@ -6270,7 +6439,7 @@ function errorReason(error) {
|
|
|
6270
6439
|
return message;
|
|
6271
6440
|
}
|
|
6272
6441
|
}
|
|
6273
|
-
if (
|
|
6442
|
+
if (isObject3(error)) {
|
|
6274
6443
|
const message = stringProperty(error, "message");
|
|
6275
6444
|
if (message !== undefined) {
|
|
6276
6445
|
return message;
|
|
@@ -6777,18 +6946,19 @@ async function runRoleTaskWithCorrelation(input, deps, correlation, batch) {
|
|
|
6777
6946
|
if (runtimeId !== undefined && deps.runtimeLimiter !== undefined) {
|
|
6778
6947
|
const limiter = deps.runtimeLimiter;
|
|
6779
6948
|
const priority = priorityForRole(role);
|
|
6780
|
-
|
|
6949
|
+
const poolKey = slotPoolKey(configuredRuntime(runtimeId, input.config) ?? { id: runtimeId }, decision2.selected.modelID);
|
|
6950
|
+
release = limiter.tryAcquire(poolKey, priority);
|
|
6781
6951
|
let waitedMs = 0;
|
|
6782
6952
|
if (release === undefined) {
|
|
6783
|
-
const acquisition = await limiter.acquire(
|
|
6953
|
+
const acquisition = await limiter.acquire(poolKey, priority);
|
|
6784
6954
|
release = acquisition.release;
|
|
6785
6955
|
waitedMs = acquisition.waitedMs;
|
|
6786
6956
|
}
|
|
6787
6957
|
queueObservation = {
|
|
6788
6958
|
runtimeId,
|
|
6789
6959
|
waitedMs,
|
|
6790
|
-
activeCount: limiter.activeCount(
|
|
6791
|
-
queuedCount: limiter.queuedCount(
|
|
6960
|
+
activeCount: limiter.activeCount(poolKey),
|
|
6961
|
+
queuedCount: limiter.queuedCount(poolKey)
|
|
6792
6962
|
};
|
|
6793
6963
|
}
|
|
6794
6964
|
try {
|
|
@@ -8241,6 +8411,22 @@ function renderConsoleStatus(console_) {
|
|
|
8241
8411
|
}
|
|
8242
8412
|
|
|
8243
8413
|
// src/commands/doctor.ts
|
|
8414
|
+
function runtimeClassLine(runtime) {
|
|
8415
|
+
if (runtime === undefined) {
|
|
8416
|
+
return;
|
|
8417
|
+
}
|
|
8418
|
+
const thinking = runtime.thinkingModel;
|
|
8419
|
+
const coder = runtime.coderModel;
|
|
8420
|
+
if (thinking === undefined && coder === undefined) {
|
|
8421
|
+
return;
|
|
8422
|
+
}
|
|
8423
|
+
const parts = [
|
|
8424
|
+
`thinking ${thinking ?? "(default)"}`,
|
|
8425
|
+
`coder ${coder ?? "(default)"}`,
|
|
8426
|
+
`default ${runtime.defaultModel.modelID}`
|
|
8427
|
+
];
|
|
8428
|
+
return ` ↳ ${parts.join(" · ")}`;
|
|
8429
|
+
}
|
|
8244
8430
|
function runtimeLine(snapshot, runtime) {
|
|
8245
8431
|
const mark = snapshot.reachable ? "✓" : "✗";
|
|
8246
8432
|
const detail = snapshot.reachable ? `${snapshot.models.length} model(s)` : snapshot.error ?? "unreachable";
|
|
@@ -8248,6 +8434,14 @@ function runtimeLine(snapshot, runtime) {
|
|
|
8248
8434
|
const slots = declared === undefined ? ` · ${DEFAULT_LOCAL_MAX_CONCURRENCY} slot(s) (default)` : ` · ${declared} slot(s) (declared)`;
|
|
8249
8435
|
return ` ${mark} ${snapshot.id.padEnd(14)} ${snapshot.baseURL || "(no baseURL)"} — ${detail}${slots}`;
|
|
8250
8436
|
}
|
|
8437
|
+
function runtimeModelSlotsLine(runtime) {
|
|
8438
|
+
const entries = Object.entries(runtime?.modelConcurrency ?? {});
|
|
8439
|
+
if (entries.length === 0) {
|
|
8440
|
+
return;
|
|
8441
|
+
}
|
|
8442
|
+
const detail = entries.map(([modelID, slots]) => `${modelID} ${slots} slot(s)`).join(" · ");
|
|
8443
|
+
return ` ↳ per-model slots: ${detail}`;
|
|
8444
|
+
}
|
|
8251
8445
|
function isNetworkRuntime(baseURL) {
|
|
8252
8446
|
if (baseURL.length === 0) {
|
|
8253
8447
|
return false;
|
|
@@ -8497,7 +8691,16 @@ function renderDoctor(input) {
|
|
|
8497
8691
|
lines.push(" (no runtime enabled)");
|
|
8498
8692
|
} else {
|
|
8499
8693
|
for (const snapshot of input.snapshots) {
|
|
8500
|
-
|
|
8694
|
+
const runtime = enabledRuntimes.find((r) => r.id === snapshot.id);
|
|
8695
|
+
lines.push(runtimeLine(snapshot, runtime));
|
|
8696
|
+
const classLine = runtimeClassLine(runtime);
|
|
8697
|
+
if (classLine !== undefined) {
|
|
8698
|
+
lines.push(classLine);
|
|
8699
|
+
}
|
|
8700
|
+
const modelSlots = runtimeModelSlotsLine(runtime);
|
|
8701
|
+
if (modelSlots !== undefined) {
|
|
8702
|
+
lines.push(modelSlots);
|
|
8703
|
+
}
|
|
8501
8704
|
}
|
|
8502
8705
|
}
|
|
8503
8706
|
for (const snapshot of input.snapshots) {
|
|
@@ -13510,7 +13713,7 @@ var createOtlpSpanExporter = (connection, config) => {
|
|
|
13510
13713
|
// package.json
|
|
13511
13714
|
var package_default = {
|
|
13512
13715
|
name: "@jmanuelcorral/openteam",
|
|
13513
|
-
version: "0.
|
|
13716
|
+
version: "0.17.1",
|
|
13514
13717
|
packageManager: "bun@1.3.14",
|
|
13515
13718
|
description: "Cost-aware, local-first routing plugin for opencode with cheapest-capable frontier fallback and multi-agent orchestration.",
|
|
13516
13719
|
license: "MIT",
|
|
@@ -13877,7 +14080,7 @@ async function buildGateInput(config, storage, opencodeVersion, warn, packagedRe
|
|
|
13877
14080
|
} catch {}
|
|
13878
14081
|
const soak = await readAndParseCertificate(storage, SOAK_CERT_PATH, (raw) => parseSoakCertificate(raw, DEFAULT_SOAK_POLICY, soakLedgerDigest), (cert) => cert.digest);
|
|
13879
14082
|
const migration = "complete";
|
|
13880
|
-
const operatorApproval = config.graph?.operatorApproval ??
|
|
14083
|
+
const operatorApproval = config.graph?.operatorApproval ?? true;
|
|
13881
14084
|
return { shadow, release, soak, migration, operatorApproval };
|
|
13882
14085
|
}
|
|
13883
14086
|
var OPENCODE_VERSION_UNRESOLVED_REASON = "the opencode version is not determinable outside a running opencode session, " + "so the cutover gate cannot be verified here — the running plugin logs the " + "authoritative gate result and warns loudly on a real denial";
|
|
@@ -14266,15 +14469,18 @@ var server = async (ctx, rawOptions) => {
|
|
|
14266
14469
|
const snapshots = await registry.probe(config.local.runtimes.filter((runtime) => runtime.enabled));
|
|
14267
14470
|
return reachableRuntimeIds(snapshots);
|
|
14268
14471
|
};
|
|
14269
|
-
const runtimeById = (
|
|
14472
|
+
const runtimeById = (key2) => {
|
|
14473
|
+
const runtimeId = slotPoolRuntimeID(key2);
|
|
14474
|
+
return config.local.runtimes.find((runtime) => runtime.id === runtimeId);
|
|
14475
|
+
};
|
|
14270
14476
|
const runtimeLimiter = createRuntimeConcurrencyLimiter({
|
|
14271
|
-
capacityFor: (
|
|
14272
|
-
const runtime = runtimeById(
|
|
14273
|
-
return runtime === undefined ?
|
|
14477
|
+
capacityFor: (key2) => {
|
|
14478
|
+
const runtime = runtimeById(key2);
|
|
14479
|
+
return runtime === undefined ? unknownPoolCapacity() : slotPoolCapacity(runtime, slotPoolModelID(key2));
|
|
14274
14480
|
},
|
|
14275
|
-
reservedInteractiveFor: (
|
|
14276
|
-
const runtime = runtimeById(
|
|
14277
|
-
return runtime === undefined ? 0 :
|
|
14481
|
+
reservedInteractiveFor: (key2) => {
|
|
14482
|
+
const runtime = runtimeById(key2);
|
|
14483
|
+
return runtime === undefined ? 0 : slotPoolReservedInteractive(runtime, slotPoolModelID(key2));
|
|
14278
14484
|
},
|
|
14279
14485
|
now
|
|
14280
14486
|
});
|
package/dist/local/lemonade.d.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import type { RuntimeAdapter } from "./types";
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Lemonade Server's documented default port is 13305, not 8000 — verified
|
|
4
|
+
* against both the project's configuration reference and a live 11.7.0 host.
|
|
5
|
+
*/
|
|
6
|
+
export declare const LEMONADE_DEFAULT_BASE_URL = "http://localhost:13305/api/v1";
|
|
3
7
|
export declare function createLemonadeAdapter(): RuntimeAdapter;
|
|
4
8
|
//# sourceMappingURL=lemonade.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lemonade.d.ts","sourceRoot":"","sources":["../../src/local/lemonade.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lemonade.d.ts","sourceRoot":"","sources":["../../src/local/lemonade.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAIV,cAAc,EAGf,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,eAAO,MAAM,yBAAyB,kCAAkC,CAAC;AA6BzE,wBAAgB,qBAAqB,IAAI,cAAc,CA0CtD"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { effectiveReservedInteractiveSlots, type LocalRuntime } from "../config/schema";
|
|
2
|
+
import type { LocalRuntimeId } from "./types";
|
|
3
|
+
/**
|
|
4
|
+
* Key identifying the concurrency pool a generation competes in.
|
|
5
|
+
*
|
|
6
|
+
* Concurrency slots are a property of the LOADED MODEL, not of the server: on a
|
|
7
|
+
* real Lemonade 11.7.0 host measured with two resident models, the coder model
|
|
8
|
+
* served `--parallel 3` while the thinking model served `--parallel 1` — one
|
|
9
|
+
* box, two different capacities. Modelling that as a single server-wide cap lets
|
|
10
|
+
* the orchestrator dispatch four concurrent thinking generations, three of which
|
|
11
|
+
* then queue inside the server where openteam can neither see nor prioritise
|
|
12
|
+
* them.
|
|
13
|
+
*
|
|
14
|
+
* The pool is therefore per model — but ONLY for models the runtime explicitly
|
|
15
|
+
* declares a slot count for. A runtime with no `modelConcurrency` keeps exactly
|
|
16
|
+
* one pool keyed by its bare instance id, so no existing config silently gains
|
|
17
|
+
* capacity by happening to run two models at once. That back-compat property is
|
|
18
|
+
* the reason this returns the bare id rather than always composing a key.
|
|
19
|
+
*
|
|
20
|
+
* Pure.
|
|
21
|
+
*/
|
|
22
|
+
export declare function slotPoolKey(runtime: Pick<LocalRuntime, "id" | "modelConcurrency">, modelID: string | undefined): string;
|
|
23
|
+
/**
|
|
24
|
+
* The runtime instance id carried by a slot-pool key, whether the key is a bare
|
|
25
|
+
* runtime id or a composite one. Pure.
|
|
26
|
+
*/
|
|
27
|
+
export declare function slotPoolRuntimeID(key: string): LocalRuntimeId;
|
|
28
|
+
/**
|
|
29
|
+
* The model id carried by a composite slot-pool key, or `undefined` for a bare
|
|
30
|
+
* runtime key (a runtime-wide shared pool). Pure.
|
|
31
|
+
*/
|
|
32
|
+
export declare function slotPoolModelID(key: string): string | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* Capacity of the pool a model competes in: the runtime's declared per-model
|
|
35
|
+
* slot count when it has one, otherwise the runtime-wide
|
|
36
|
+
* {@link effectiveMaxConcurrency}. Pure.
|
|
37
|
+
*/
|
|
38
|
+
export declare function slotPoolCapacity(runtime: Pick<LocalRuntime, "maxConcurrency" | "modelConcurrency">, modelID: string | undefined): number;
|
|
39
|
+
/**
|
|
40
|
+
* Interactive-reserved slots for the pool a model competes in.
|
|
41
|
+
*
|
|
42
|
+
* An explicit `reservedInteractiveSlots` is honoured verbatim for every pool of
|
|
43
|
+
* the runtime. Otherwise the same rule as
|
|
44
|
+
* {@link effectiveReservedInteractiveSlots} is applied to the POOL's capacity
|
|
45
|
+
* rather than the server's: a 3-slot coder pool reserves 1 and leaves 2 for
|
|
46
|
+
* workers, while a 1-slot thinking pool reserves 0 so its only slot is not
|
|
47
|
+
* withheld from every worker forever. Pure.
|
|
48
|
+
*/
|
|
49
|
+
export declare function slotPoolReservedInteractive(runtime: Pick<LocalRuntime, "maxConcurrency" | "modelConcurrency" | "reservedInteractiveSlots">, modelID: string | undefined): number;
|
|
50
|
+
/**
|
|
51
|
+
* Capacity for a pool key when the runtime it names is not configured. Mirrors
|
|
52
|
+
* the pre-existing unknown-runtime fallback so an unresolvable key never gets
|
|
53
|
+
* unbounded capacity. Pure.
|
|
54
|
+
*/
|
|
55
|
+
export declare function unknownPoolCapacity(): number;
|
|
56
|
+
/** Re-exported so callers resolving pools do not also import the schema module. */
|
|
57
|
+
export { effectiveReservedInteractiveSlots };
|
|
58
|
+
//# sourceMappingURL=slotPool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slotPool.d.ts","sourceRoot":"","sources":["../../src/local/slotPool.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,iCAAiC,EACjC,KAAK,YAAY,EAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAW9C;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,kBAAkB,CAAC,EACtD,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,MAAM,CAQR;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAG7D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG/D;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,gBAAgB,GAAG,kBAAkB,CAAC,EAClE,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,MAAM,CAIR;AAED;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,IAAI,CACX,YAAY,EACZ,gBAAgB,GAAG,kBAAkB,GAAG,0BAA0B,CACnE,EACD,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,MAAM,CAKR;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,mFAAmF;AACnF,OAAO,EAAE,iCAAiC,EAAE,CAAC"}
|
package/dist/local/types.d.ts
CHANGED
|
@@ -17,6 +17,25 @@ export type LocalModelInfo = {
|
|
|
17
17
|
modelID: string;
|
|
18
18
|
supportsTools: boolean | "unknown";
|
|
19
19
|
contextWindow?: number;
|
|
20
|
+
/**
|
|
21
|
+
* Whether the runtime currently has this model RESIDENT and serving, as
|
|
22
|
+
* opposed to merely downloaded to disk.
|
|
23
|
+
*
|
|
24
|
+
* `undefined` means the runtime did not report load state (an adapter that
|
|
25
|
+
* cannot tell, or a server too old to expose it) — deliberately distinct from
|
|
26
|
+
* `false`, so a caller never presents "not loaded" when the truth is "not
|
|
27
|
+
* known". Optional, so the adapters that cannot report it are unchanged.
|
|
28
|
+
*/
|
|
29
|
+
loaded?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Concurrent generation slots THIS model serves, when the runtime reports it.
|
|
32
|
+
*
|
|
33
|
+
* Per model rather than per server because that is how the runtimes actually
|
|
34
|
+
* behave: a single Lemonade host was measured serving one model at
|
|
35
|
+
* `--parallel 3` and another at `--parallel 1` simultaneously. `undefined`
|
|
36
|
+
* when the runtime does not report it — never guessed.
|
|
37
|
+
*/
|
|
38
|
+
slots?: number;
|
|
20
39
|
};
|
|
21
40
|
export type LocalRuntimeSnapshot = {
|
|
22
41
|
id: LocalRuntimeId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/local/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GACxB,QAAQ,GACR,UAAU,GACV,eAAe,GACf,UAAU,CAAC;AAEf;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC;AAEpC,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/local/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GACxB,QAAQ,GACR,UAAU,GACV,eAAe,GACf,UAAU,CAAC;AAEf;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC;AAEpC,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,cAAc,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,OAAO,KAAK,CAAC;AAErC,MAAM,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC;AAEjC,MAAM,MAAM,sBAAsB,GAC9B,MAAM,GACN;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAEjE,MAAM,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAErE,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,gBAAgB,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,wBAAwB,GAAG;IAC3D,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,gBAAgB,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IACzE,KAAK,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACpE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/coordinator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,KAAK,EAEV,sBAAsB,EACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EACV,yBAAyB,EAE1B,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/coordinator.ts"],"names":[],"mappings":"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"}
|