@jmanuelcorral/openteam 0.13.1 → 0.14.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.es.md +4 -2
- package/README.md +4 -2
- package/dist/cli.js +213 -19
- package/dist/commands/dispatch.d.ts +8 -0
- package/dist/commands/dispatch.d.ts.map +1 -1
- package/dist/commands/doctor.d.ts +17 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/config/errors.d.ts.map +1 -1
- package/dist/config/schema.d.ts +23 -6
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +195 -15
- package/dist/local/concurrency.d.ts +24 -4
- package/dist/local/concurrency.d.ts.map +1 -1
- package/dist/local/registry.d.ts +3 -3
- package/dist/local/registry.d.ts.map +1 -1
- package/dist/local/types.d.ts +16 -2
- package/dist/local/types.d.ts.map +1 -1
- package/dist/orchestrator/coordinator.d.ts +24 -1
- package/dist/orchestrator/coordinator.d.ts.map +1 -1
- package/dist/orchestrator/roles.d.ts +2 -12
- package/dist/orchestrator/roles.d.ts.map +1 -1
- package/dist/telemetry/eventLog.d.ts +7 -1
- package/dist/telemetry/eventLog.d.ts.map +1 -1
- package/dist/telemetry/events.d.ts +37 -0
- package/dist/telemetry/events.d.ts.map +1 -1
- package/dist/telemetry/queueWait.d.ts +51 -0
- package/dist/telemetry/queueWait.d.ts.map +1 -0
- package/package.json +1 -1
package/README.es.md
CHANGED
|
@@ -366,11 +366,13 @@ ejecutas desde un subdirectorio verás "provider not configured" y debes hacer
|
|
|
366
366
|
| `router.trivialPromptMaxChars` | `number` entero positivo | `280` | Prompts sin código hasta este tamaño prefieren local. |
|
|
367
367
|
| `router.frontierPromptMinChars` | `number` entero positivo | `2000` | Prompts desde este tamaño se tratan como candidatos a frontier si no aplican guards. |
|
|
368
368
|
| `local.runtimes` | `LocalRuntime[]` | `[]` | Runtimes locales a sondear. Vacío por defecto — ningún runtime está configurado hasta que ejecutes `openteam setup` o añadas una entrada manualmente. |
|
|
369
|
-
| `local.runtimes[].id` | `
|
|
369
|
+
| `local.runtimes[].id` | `string` | requerido | Identidad de instancia, única dentro del array. Libre (`lmstudio-a`, `lemonade-lan`) para que dos máquinas del mismo tipo sean distintas; si se omite `kind`, debe ser en sí mismo un tipo de runtime (retrocompatibilidad). |
|
|
370
|
+
| `local.runtimes[].kind` | `"ollama" \| "lmstudio" \| "foundry-local" \| "lemonade"` opcional | migra desde `id` | Tipo de runtime que selecciona el adaptador. Opcional: si falta, se usa `id` como tipo, así toda config previa sigue funcionando sin cambios. |
|
|
370
371
|
| `local.runtimes[].enabled` | `boolean` | `true` | Habilita o deshabilita ese runtime. |
|
|
371
372
|
| `local.runtimes[].baseURL` | URL opcional | según runtime/config | Endpoint OpenAI-compatible (`/v1` para Ollama/LM Studio, `/api/v1` para Lemonade); Foundry Local puede omitirlo si usa discovery. |
|
|
372
373
|
| `local.runtimes[].discovery` | `"cli" \| "sdk" \| "manual"` opcional | sin default por item | Discovery de Foundry Local; el registry usa CLI si está configurado y no es `manual`. |
|
|
373
374
|
| `local.runtimes[].defaultModel` | `ModelRef` | requerido | Modelo por defecto de ese runtime. |
|
|
375
|
+
| `local.runtimes[].maxConcurrency` | entero positivo opcional | `4` | Límite de generaciones concurrentes de esta instancia (su número real de slots). Se aplica por instancia. |
|
|
374
376
|
| `budgets.sessionUSD` | `number` positivo opcional | sin límite | Presupuesto frontier por sesión. |
|
|
375
377
|
| `budgets.monthlyUSD` | `number` positivo opcional | sin límite | Presupuesto frontier mensual. |
|
|
376
378
|
| `budgets.frontierTokensPerSession` | `number` entero positivo opcional | sin límite | Límite de tokens frontier por sesión. |
|
|
@@ -822,7 +824,7 @@ Consulta [docs/compatibility.md](docs/compatibility.md). Resumen verificado el `
|
|
|
822
824
|
|
|
823
825
|
| Superficie | Versión / contrato |
|
|
824
826
|
| --- | --- |
|
|
825
|
-
| openteam | `0.
|
|
827
|
+
| openteam | `0.14.0`; versión actual del paquete |
|
|
826
828
|
| `@opencode-ai/plugin` | `1.18.19` |
|
|
827
829
|
| `@opencode-ai/sdk` | `1.18.19` |
|
|
828
830
|
| Hook de routing | `chat.message`; no `chat.params` para cambiar modelo |
|
package/README.md
CHANGED
|
@@ -318,11 +318,13 @@ configured" and should `cd` to the project root first.
|
|
|
318
318
|
| `router.trivialPromptMaxChars` | positive integer | `280` | Code-free prompts up to this size prefer local. |
|
|
319
319
|
| `router.frontierPromptMinChars` | positive integer | `2000` | Prompts from this size are frontier candidates if no guards apply. |
|
|
320
320
|
| `local.runtimes` | `LocalRuntime[]` | `[]` | Local runtimes to probe. Empty by default — no runtime is configured until you run `openteam setup` or add an entry by hand. |
|
|
321
|
-
| `local.runtimes[].id` |
|
|
321
|
+
| `local.runtimes[].id` | string | required | Instance identity, unique within the array. Free-form (`lmstudio-a`, `lemonade-lan`) so two machines of the same kind are distinct; when `kind` is omitted it must itself be a runtime kind (back-compat). |
|
|
322
|
+
| `local.runtimes[].kind` | `"ollama" \| "lmstudio" \| "foundry-local" \| "lemonade"` optional | migrates from `id` | Runtime kind selecting the adapter. Optional: when absent, `id` is treated as the kind, so pre-existing configs keep working unchanged. |
|
|
322
323
|
| `local.runtimes[].enabled` | `boolean` | `true` | Enable or disable that runtime. |
|
|
323
324
|
| `local.runtimes[].baseURL` | optional URL | per runtime/config | OpenAI-compatible endpoint (`/v1` for Ollama/LM Studio, `/api/v1` for Lemonade); Foundry Local may omit it when using discovery. |
|
|
324
325
|
| `local.runtimes[].discovery` | `"cli" \| "sdk" \| "manual"` optional | none per item | Foundry Local discovery; the registry uses CLI when configured and not `manual`. |
|
|
325
326
|
| `local.runtimes[].defaultModel` | `ModelRef` | required | Default model for that runtime. |
|
|
327
|
+
| `local.runtimes[].maxConcurrency` | positive integer, optional | `4` | Concurrent-generation cap for this instance (its real slot count). Applied per instance. |
|
|
326
328
|
| `budgets.sessionUSD` | positive number, optional | unlimited | Frontier budget per session. |
|
|
327
329
|
| `budgets.monthlyUSD` | positive number, optional | unlimited | Monthly frontier budget. |
|
|
328
330
|
| `budgets.frontierTokensPerSession` | positive integer, optional | unlimited | Frontier token limit per session. |
|
|
@@ -711,7 +713,7 @@ See [docs/compatibility.md](docs/compatibility.md). Verified summary as of `2026
|
|
|
711
713
|
|
|
712
714
|
| Surface | Version / contract |
|
|
713
715
|
| --- | --- |
|
|
714
|
-
| openteam | `0.
|
|
716
|
+
| openteam | `0.14.0`; current package version |
|
|
715
717
|
| `@opencode-ai/plugin` | `1.18.19` |
|
|
716
718
|
| `@opencode-ai/sdk` | `1.18.19` |
|
|
717
719
|
| Routing hook | `chat.message`; not `chat.params` for model changes |
|
package/dist/cli.js
CHANGED
|
@@ -101,8 +101,8 @@ var AgentRoleProfileSchema = z.object({
|
|
|
101
101
|
preferredFrontierModels: z.array(z.union([modelSelectionSchema, z.literal("auto")])),
|
|
102
102
|
localFirst: z.boolean(),
|
|
103
103
|
requiresLocalRuntime: z.boolean().optional(),
|
|
104
|
-
localRuntimes: z.array(z.
|
|
105
|
-
localModels: z.
|
|
104
|
+
localRuntimes: z.array(z.string().min(1)).optional(),
|
|
105
|
+
localModels: z.record(z.string().min(1), z.string().min(1)).optional()
|
|
106
106
|
}).strict();
|
|
107
107
|
var TEAM_ROLES = {
|
|
108
108
|
architect: {
|
|
@@ -409,14 +409,33 @@ var defaultFrontierModel = {
|
|
|
409
409
|
modelID: "claude-sonnet-4-5"
|
|
410
410
|
};
|
|
411
411
|
var DEFAULT_LOCAL_MAX_CONCURRENCY = 4;
|
|
412
|
+
var LocalRuntimeKindSchema = z2.enum([
|
|
413
|
+
"ollama",
|
|
414
|
+
"lmstudio",
|
|
415
|
+
"foundry-local",
|
|
416
|
+
"lemonade"
|
|
417
|
+
]);
|
|
412
418
|
var LocalRuntimeSchema = z2.object({
|
|
413
|
-
id: z2.
|
|
419
|
+
id: z2.string().min(1),
|
|
420
|
+
kind: LocalRuntimeKindSchema.optional(),
|
|
414
421
|
enabled: z2.boolean().default(true),
|
|
415
422
|
baseURL: z2.string().url().optional(),
|
|
416
423
|
discovery: z2.enum(["cli", "sdk", "manual"]).optional(),
|
|
417
424
|
defaultModel: ModelRefSchema,
|
|
418
425
|
maxConcurrency: z2.number().int().positive().optional()
|
|
419
|
-
}).strict()
|
|
426
|
+
}).strict().superRefine((runtime, ctx) => {
|
|
427
|
+
const resolvedKind = runtime.kind ?? runtime.id;
|
|
428
|
+
if (!LocalRuntimeKindSchema.safeParse(resolvedKind).success) {
|
|
429
|
+
ctx.addIssue({
|
|
430
|
+
code: z2.ZodIssueCode.custom,
|
|
431
|
+
path: ["kind"],
|
|
432
|
+
message: `local runtime "${runtime.id}" has no resolvable kind: add "kind" ` + "(one of ollama, lmstudio, foundry-local, lemonade), since the id is " + "not itself a runtime kind."
|
|
433
|
+
});
|
|
434
|
+
}
|
|
435
|
+
});
|
|
436
|
+
function localRuntimeKind(runtime) {
|
|
437
|
+
return runtime.kind ?? runtime.id;
|
|
438
|
+
}
|
|
420
439
|
var MemoryScopeSchema = z2.enum(["project", "user"]);
|
|
421
440
|
var MemoryExtractionModeSchema = z2.enum([
|
|
422
441
|
"local",
|
|
@@ -498,7 +517,23 @@ var OpenTeamConfigObjectSchema = z2.object({
|
|
|
498
517
|
localOnly: false
|
|
499
518
|
}),
|
|
500
519
|
local: z2.object({
|
|
501
|
-
runtimes: z2.array(LocalRuntimeSchema).default([])
|
|
520
|
+
runtimes: z2.array(LocalRuntimeSchema).default([]).superRefine((runtimes, ctx) => {
|
|
521
|
+
const seen = new Set;
|
|
522
|
+
for (let index = 0;index < runtimes.length; index += 1) {
|
|
523
|
+
const runtime = runtimes[index];
|
|
524
|
+
if (runtime === undefined) {
|
|
525
|
+
continue;
|
|
526
|
+
}
|
|
527
|
+
if (seen.has(runtime.id)) {
|
|
528
|
+
ctx.addIssue({
|
|
529
|
+
code: z2.ZodIssueCode.custom,
|
|
530
|
+
path: [index, "id"],
|
|
531
|
+
message: `duplicate local runtime id "${runtime.id}": each local.runtimes[].id must be unique within the array.`
|
|
532
|
+
});
|
|
533
|
+
}
|
|
534
|
+
seen.add(runtime.id);
|
|
535
|
+
}
|
|
536
|
+
})
|
|
502
537
|
}).strict().default({
|
|
503
538
|
runtimes: []
|
|
504
539
|
}),
|
|
@@ -1130,6 +1165,16 @@ var MeetingEventSchema = EventBaseSchema.extend({
|
|
|
1130
1165
|
roles: z4.array(z4.string().min(1)),
|
|
1131
1166
|
decisionIDs: z4.array(z4.string().min(1)).optional()
|
|
1132
1167
|
});
|
|
1168
|
+
var QueueEventSchema = EventBaseSchema.extend({
|
|
1169
|
+
type: z4.literal("queue"),
|
|
1170
|
+
runtimeId: z4.string().min(1),
|
|
1171
|
+
waitedMs: z4.number().finite().min(0),
|
|
1172
|
+
activeCount: z4.number().int().min(0),
|
|
1173
|
+
queuedCount: z4.number().int().min(0),
|
|
1174
|
+
decisionID: z4.string().min(1).optional(),
|
|
1175
|
+
agent: z4.string().min(1).optional(),
|
|
1176
|
+
batchID: z4.string().min(1).optional()
|
|
1177
|
+
});
|
|
1133
1178
|
var DecisionEventSchema = EventBaseSchema.extend({
|
|
1134
1179
|
type: z4.literal("decision"),
|
|
1135
1180
|
agent: z4.string().min(1).optional(),
|
|
@@ -1175,6 +1220,7 @@ var OpenTeamEventSchema = z4.discriminatedUnion("type", [
|
|
|
1175
1220
|
MessageEventSchema,
|
|
1176
1221
|
ToolcallEventSchema,
|
|
1177
1222
|
MeetingEventSchema,
|
|
1223
|
+
QueueEventSchema,
|
|
1178
1224
|
DecisionEventSchema,
|
|
1179
1225
|
ActivityEventSchema,
|
|
1180
1226
|
SessionEndpointEventSchema,
|
|
@@ -1442,6 +1488,9 @@ async function readRouteCostRecords(dir, deps) {
|
|
|
1442
1488
|
async function readDiagnosticEvents(dir, deps) {
|
|
1443
1489
|
return (await readSessionEvents(dir, deps)).filter((event) => event.type === "diagnostic");
|
|
1444
1490
|
}
|
|
1491
|
+
async function readQueueEvents(dir, deps) {
|
|
1492
|
+
return (await readSessionEvents(dir, deps)).filter((event) => event.type === "queue");
|
|
1493
|
+
}
|
|
1445
1494
|
async function readSessionEvents(dir, deps) {
|
|
1446
1495
|
const files = (await deps.storage.list(dir)).filter((file) => file.endsWith(".jsonl"));
|
|
1447
1496
|
const perFile = await Promise.all(files.map(async (file) => {
|
|
@@ -2118,6 +2167,28 @@ async function safeEmit(sink, event) {
|
|
|
2118
2167
|
await sink.emit(event);
|
|
2119
2168
|
} catch {}
|
|
2120
2169
|
}
|
|
2170
|
+
function buildQueueEvent(observation, sessionID, ts, correlation) {
|
|
2171
|
+
const event = {
|
|
2172
|
+
v: EVENT_SCHEMA_VERSION,
|
|
2173
|
+
type: "queue",
|
|
2174
|
+
ts,
|
|
2175
|
+
sessionID,
|
|
2176
|
+
runtimeId: observation.runtimeId,
|
|
2177
|
+
waitedMs: observation.waitedMs,
|
|
2178
|
+
activeCount: observation.activeCount,
|
|
2179
|
+
queuedCount: observation.queuedCount
|
|
2180
|
+
};
|
|
2181
|
+
if (correlation.decisionID !== undefined) {
|
|
2182
|
+
event.decisionID = correlation.decisionID;
|
|
2183
|
+
}
|
|
2184
|
+
if (correlation.agent !== undefined) {
|
|
2185
|
+
event.agent = correlation.agent;
|
|
2186
|
+
}
|
|
2187
|
+
if (correlation.batchID !== undefined) {
|
|
2188
|
+
event.batchID = correlation.batchID;
|
|
2189
|
+
}
|
|
2190
|
+
return event;
|
|
2191
|
+
}
|
|
2121
2192
|
async function runRoleTaskWithCorrelation(input, deps, correlation, batch) {
|
|
2122
2193
|
if (getRoleProfile(input.roleID, input.config.orchestrator?.roles) === undefined) {
|
|
2123
2194
|
warnUnknownRole(input.roleID, deps.warn, deps.warnedRoles);
|
|
@@ -2155,16 +2226,40 @@ async function runRoleTaskWithCorrelation(input, deps, correlation, batch) {
|
|
|
2155
2226
|
const subsessionDeps = deps.timeoutMs === undefined ? {} : { timeoutMs: deps.timeoutMs };
|
|
2156
2227
|
const runtimeId = selection.runtimeId;
|
|
2157
2228
|
let release;
|
|
2229
|
+
let queueObservation;
|
|
2158
2230
|
if (runtimeId !== undefined && deps.runtimeLimiter !== undefined) {
|
|
2159
|
-
|
|
2231
|
+
const limiter = deps.runtimeLimiter;
|
|
2232
|
+
release = limiter.tryAcquire(runtimeId);
|
|
2233
|
+
let waitedMs = 0;
|
|
2160
2234
|
if (release === undefined) {
|
|
2161
|
-
|
|
2162
|
-
|
|
2235
|
+
const acquisition = await limiter.acquire(runtimeId);
|
|
2236
|
+
release = acquisition.release;
|
|
2237
|
+
waitedMs = acquisition.waitedMs;
|
|
2238
|
+
}
|
|
2239
|
+
queueObservation = {
|
|
2240
|
+
runtimeId,
|
|
2241
|
+
waitedMs,
|
|
2242
|
+
activeCount: limiter.activeCount(runtimeId),
|
|
2243
|
+
queuedCount: limiter.queuedCount(runtimeId)
|
|
2244
|
+
};
|
|
2163
2245
|
}
|
|
2164
2246
|
try {
|
|
2165
2247
|
const subsession = await runSubsession(deps.client, request, subsessionDeps);
|
|
2166
2248
|
const record = buildRecord(input, decision2, subsession, deps, correlation.decisionID, correlation.batchID);
|
|
2167
2249
|
await safeEmit(deps.sink, correlatedCostRecordToRouteEvent(record));
|
|
2250
|
+
if (queueObservation !== undefined) {
|
|
2251
|
+
const sessionID = recordSessionID(input, subsession);
|
|
2252
|
+
if (sessionID !== undefined) {
|
|
2253
|
+
const queueCorrelation = {
|
|
2254
|
+
decisionID: correlation.decisionID,
|
|
2255
|
+
agent: input.roleID
|
|
2256
|
+
};
|
|
2257
|
+
if (correlation.batchID !== undefined) {
|
|
2258
|
+
queueCorrelation.batchID = correlation.batchID;
|
|
2259
|
+
}
|
|
2260
|
+
await safeEmit(deps.sink, buildQueueEvent(queueObservation, sessionID, deps.now(), queueCorrelation));
|
|
2261
|
+
}
|
|
2262
|
+
}
|
|
2168
2263
|
return { decision: decision2, subsession, record };
|
|
2169
2264
|
} finally {
|
|
2170
2265
|
release?.();
|
|
@@ -2940,6 +3035,7 @@ var KNOWN_CONFIG_KEYS_BY_PATH = new Map([
|
|
|
2940
3035
|
"local.runtimes[]",
|
|
2941
3036
|
[
|
|
2942
3037
|
"id",
|
|
3038
|
+
"kind",
|
|
2943
3039
|
"enabled",
|
|
2944
3040
|
"baseURL",
|
|
2945
3041
|
"discovery",
|
|
@@ -9880,10 +9976,11 @@ class RuntimeRegistry {
|
|
|
9880
9976
|
continue;
|
|
9881
9977
|
}
|
|
9882
9978
|
const probedAt = this.clock();
|
|
9883
|
-
const adapter = this.adapters[runtime
|
|
9979
|
+
const adapter = this.adapters[localRuntimeKind(runtime)];
|
|
9884
9980
|
const options = this.createProbeOptions(runtime, probedAt);
|
|
9885
9981
|
try {
|
|
9886
|
-
|
|
9982
|
+
const snapshot = await adapter.probe(options);
|
|
9983
|
+
snapshots.push({ ...snapshot, id: runtime.id });
|
|
9887
9984
|
} catch (error) {
|
|
9888
9985
|
snapshots.push(unavailableSnapshot({
|
|
9889
9986
|
id: runtime.id,
|
|
@@ -9903,7 +10000,7 @@ class RuntimeRegistry {
|
|
|
9903
10000
|
if (runtime.baseURL !== undefined) {
|
|
9904
10001
|
options.baseURL = runtime.baseURL;
|
|
9905
10002
|
}
|
|
9906
|
-
if (runtime
|
|
10003
|
+
if (localRuntimeKind(runtime) === "foundry-local" && runtime.discovery !== "manual" && this.foundryDiscovery !== undefined) {
|
|
9907
10004
|
options.discovery = this.foundryDiscovery;
|
|
9908
10005
|
}
|
|
9909
10006
|
return options;
|
|
@@ -10551,6 +10648,60 @@ function describeOtelBackendForDoctor(config, env) {
|
|
|
10551
10648
|
};
|
|
10552
10649
|
}
|
|
10553
10650
|
|
|
10651
|
+
// src/telemetry/queueWait.ts
|
|
10652
|
+
function percentile(sortedAsc, p) {
|
|
10653
|
+
const rank = Math.ceil(p / 100 * sortedAsc.length);
|
|
10654
|
+
const index = Math.min(Math.max(rank, 1), sortedAsc.length) - 1;
|
|
10655
|
+
return sortedAsc[index] ?? 0;
|
|
10656
|
+
}
|
|
10657
|
+
function summarizeGroup(runtimeId, waits, maxQueued, maxActive) {
|
|
10658
|
+
const sorted = [...waits].sort((a, b) => a - b);
|
|
10659
|
+
return {
|
|
10660
|
+
runtimeId,
|
|
10661
|
+
samples: sorted.length,
|
|
10662
|
+
contended: sorted.filter((wait) => wait > 0).length,
|
|
10663
|
+
p50Ms: percentile(sorted, 50),
|
|
10664
|
+
p95Ms: percentile(sorted, 95),
|
|
10665
|
+
maxMs: sorted[sorted.length - 1] ?? 0,
|
|
10666
|
+
maxQueued,
|
|
10667
|
+
maxActive
|
|
10668
|
+
};
|
|
10669
|
+
}
|
|
10670
|
+
function summarizeQueueWaits(events) {
|
|
10671
|
+
if (events.length === 0) {
|
|
10672
|
+
return;
|
|
10673
|
+
}
|
|
10674
|
+
const allWaits = [];
|
|
10675
|
+
let overallMaxQueued = 0;
|
|
10676
|
+
let overallMaxActive = 0;
|
|
10677
|
+
const byRuntime = new Map;
|
|
10678
|
+
for (const event of events) {
|
|
10679
|
+
allWaits.push(event.waitedMs);
|
|
10680
|
+
overallMaxQueued = Math.max(overallMaxQueued, event.queuedCount);
|
|
10681
|
+
overallMaxActive = Math.max(overallMaxActive, event.activeCount);
|
|
10682
|
+
let group = byRuntime.get(event.runtimeId);
|
|
10683
|
+
if (group === undefined) {
|
|
10684
|
+
group = { waits: [], maxQueued: 0, maxActive: 0 };
|
|
10685
|
+
byRuntime.set(event.runtimeId, group);
|
|
10686
|
+
}
|
|
10687
|
+
group.waits.push(event.waitedMs);
|
|
10688
|
+
group.maxQueued = Math.max(group.maxQueued, event.queuedCount);
|
|
10689
|
+
group.maxActive = Math.max(group.maxActive, event.activeCount);
|
|
10690
|
+
}
|
|
10691
|
+
const overall = summarizeGroup("*", allWaits, overallMaxQueued, overallMaxActive);
|
|
10692
|
+
const perRuntime = [...byRuntime.entries()].sort(([a], [b]) => a.localeCompare(b)).map(([runtimeId, group]) => summarizeGroup(runtimeId, group.waits, group.maxQueued, group.maxActive));
|
|
10693
|
+
return {
|
|
10694
|
+
samples: overall.samples,
|
|
10695
|
+
contended: overall.contended,
|
|
10696
|
+
p50Ms: overall.p50Ms,
|
|
10697
|
+
p95Ms: overall.p95Ms,
|
|
10698
|
+
maxMs: overall.maxMs,
|
|
10699
|
+
maxQueued: overall.maxQueued,
|
|
10700
|
+
maxActive: overall.maxActive,
|
|
10701
|
+
perRuntime
|
|
10702
|
+
};
|
|
10703
|
+
}
|
|
10704
|
+
|
|
10554
10705
|
// src/commands/baseline.ts
|
|
10555
10706
|
function formatRef(ref) {
|
|
10556
10707
|
return ref === null ? "—" : `${ref.providerID}/${ref.modelID}`;
|
|
@@ -10711,6 +10862,24 @@ function isNetworkRuntime(baseURL) {
|
|
|
10711
10862
|
return false;
|
|
10712
10863
|
}
|
|
10713
10864
|
}
|
|
10865
|
+
function queueWaitSection(view) {
|
|
10866
|
+
const lines = [" local queue wait (#144, per openteam process):"];
|
|
10867
|
+
const summary = view.summary;
|
|
10868
|
+
if (summary === undefined || summary.samples === 0) {
|
|
10869
|
+
lines.push(" (no queue samples recorded yet — run an orchestrated load, then re-run doctor)");
|
|
10870
|
+
return lines;
|
|
10871
|
+
}
|
|
10872
|
+
const mark = summary.contended > 0 ? "⚠" : "✓";
|
|
10873
|
+
lines.push(` ${mark} ${summary.samples} dispatch(es), ${summary.contended} queued — ` + `p50 ${summary.p50Ms}ms · p95 ${summary.p95Ms}ms · max ${summary.maxMs}ms`);
|
|
10874
|
+
lines.push(` peak depth: ${summary.maxActive} active · ${summary.maxQueued} queued`);
|
|
10875
|
+
for (const runtime of summary.perRuntime) {
|
|
10876
|
+
lines.push(` ${runtime.runtimeId.padEnd(14)} ${runtime.samples} sample(s), ` + `${runtime.contended} queued — p50 ${runtime.p50Ms}ms · p95 ${runtime.p95Ms}ms · ` + `max ${runtime.maxMs}ms · peak ${runtime.maxActive} active/${runtime.maxQueued} queued`);
|
|
10877
|
+
}
|
|
10878
|
+
if (summary.contended > 0) {
|
|
10879
|
+
lines.push(" Lower a runtime's maxConcurrency in .opencode/openteam.json to leave slots for interactive traffic.");
|
|
10880
|
+
}
|
|
10881
|
+
return lines;
|
|
10882
|
+
}
|
|
10714
10883
|
function failureReasonText(reason, searchedPaths) {
|
|
10715
10884
|
switch (reason) {
|
|
10716
10885
|
case "provider-not-configured": {
|
|
@@ -10927,6 +11096,9 @@ function renderDoctor(input) {
|
|
|
10927
11096
|
lines.push(` ⚠ ${snapshot.id} is reached over the network: its ${cap}-slot cap is enforced per openteam process, so`, " two processes at once (an opencode session plus 'openteam console') can together exceed it.");
|
|
10928
11097
|
}
|
|
10929
11098
|
lines.push(` telemetry: ${input.telemetryPath} — ${input.telemetryRecords} record(s)`);
|
|
11099
|
+
if (input.queueWait !== undefined) {
|
|
11100
|
+
lines.push(...queueWaitSection(input.queueWait));
|
|
11101
|
+
}
|
|
10930
11102
|
if (input.diagnostics !== undefined) {
|
|
10931
11103
|
lines.push(...diagnosticsSection(input.diagnostics));
|
|
10932
11104
|
}
|
|
@@ -13454,6 +13626,12 @@ async function runCli(argv, deps) {
|
|
|
13454
13626
|
rosterLoadError = err instanceof Error ? err.message : String(err);
|
|
13455
13627
|
}
|
|
13456
13628
|
}
|
|
13629
|
+
let queueWait;
|
|
13630
|
+
if (deps.readQueueEvents !== undefined) {
|
|
13631
|
+
const queueEvents = await deps.readQueueEvents();
|
|
13632
|
+
const summary = summarizeQueueWaits(queueEvents);
|
|
13633
|
+
queueWait = summary !== undefined ? { summary } : {};
|
|
13634
|
+
}
|
|
13457
13635
|
return {
|
|
13458
13636
|
exitCode: 0,
|
|
13459
13637
|
stdout: renderDoctor({
|
|
@@ -13463,6 +13641,7 @@ async function runCli(argv, deps) {
|
|
|
13463
13641
|
telemetryRecords: records.length,
|
|
13464
13642
|
agentModels,
|
|
13465
13643
|
opencodeConfigPaths,
|
|
13644
|
+
...queueWait !== undefined ? { queueWait } : {},
|
|
13466
13645
|
...rosterAudit !== undefined ? { rosterAudit } : {},
|
|
13467
13646
|
...rosterRoleCount !== undefined ? { rosterRoleCount } : {},
|
|
13468
13647
|
...rosterLoadError !== undefined ? { rosterLoadError } : {},
|
|
@@ -15506,7 +15685,7 @@ async function buildMemoryRuntimeFromConfig(config, deps, options = {}) {
|
|
|
15506
15685
|
// package.json
|
|
15507
15686
|
var package_default = {
|
|
15508
15687
|
name: "@jmanuelcorral/openteam",
|
|
15509
|
-
version: "0.
|
|
15688
|
+
version: "0.14.0",
|
|
15510
15689
|
packageManager: "bun@1.3.14",
|
|
15511
15690
|
description: "Cost-aware, local-first routing plugin for opencode with cheapest-capable frontier fallback and multi-agent orchestration.",
|
|
15512
15691
|
license: "MIT",
|
|
@@ -15798,6 +15977,9 @@ var deps = {
|
|
|
15798
15977
|
storage,
|
|
15799
15978
|
legacyTelemetryPath: path4
|
|
15800
15979
|
}),
|
|
15980
|
+
readQueueEvents: () => readQueueEvents(DEFAULT_SESSIONS_DIR, {
|
|
15981
|
+
storage
|
|
15982
|
+
}),
|
|
15801
15983
|
readDiagnostics: () => readDiagnosticEvents(DEFAULT_SESSIONS_DIR, {
|
|
15802
15984
|
storage
|
|
15803
15985
|
}),
|
|
@@ -15924,18 +16106,30 @@ function createSetupDeps() {
|
|
|
15924
16106
|
}
|
|
15925
16107
|
};
|
|
15926
16108
|
}
|
|
15927
|
-
function createRolesInitDeps() {
|
|
15928
|
-
const detect = createDetect(nodeExec2);
|
|
16109
|
+
function createRolesInitDeps(configSelection) {
|
|
15929
16110
|
return {
|
|
15930
16111
|
prompt: clackPrompter,
|
|
15931
16112
|
readFile: (path4) => storage.read(path4),
|
|
15932
16113
|
writeFile: async (path4, contents) => {
|
|
15933
16114
|
await storage.write(path4, contents);
|
|
15934
16115
|
},
|
|
15935
|
-
detectRuntimes: async () =>
|
|
15936
|
-
|
|
15937
|
-
|
|
15938
|
-
|
|
16116
|
+
detectRuntimes: async () => {
|
|
16117
|
+
const config = await loadConfig(configSelection.path, configSelection.resolution);
|
|
16118
|
+
const enabled = config.local.runtimes.filter((runtime) => runtime.enabled);
|
|
16119
|
+
if (enabled.length === 0) {
|
|
16120
|
+
return [];
|
|
16121
|
+
}
|
|
16122
|
+
const registry = new RuntimeRegistry({
|
|
16123
|
+
fetch: globalThis.fetch,
|
|
16124
|
+
clock: () => new Date().toISOString(),
|
|
16125
|
+
foundryDiscovery: foundryDiscoveryFromExec(nodeExec2)
|
|
16126
|
+
});
|
|
16127
|
+
const snapshots = await registry.probe(enabled);
|
|
16128
|
+
return snapshots.map((snapshot) => ({
|
|
16129
|
+
id: snapshot.id,
|
|
16130
|
+
available: snapshot.reachable
|
|
16131
|
+
}));
|
|
16132
|
+
}
|
|
15939
16133
|
};
|
|
15940
16134
|
}
|
|
15941
16135
|
async function main() {
|
|
@@ -15951,7 +16145,7 @@ async function main() {
|
|
|
15951
16145
|
return;
|
|
15952
16146
|
}
|
|
15953
16147
|
if (argv[0] === "roles" && argv[1] === "init") {
|
|
15954
|
-
const result2 = await runRolesInit(createRolesInitDeps());
|
|
16148
|
+
const result2 = await runRolesInit(createRolesInitDeps(configSelection));
|
|
15955
16149
|
if (result2.stdout.length > 0) {
|
|
15956
16150
|
process.stdout.write(`${result2.stdout}
|
|
15957
16151
|
`);
|
|
@@ -8,6 +8,7 @@ import { type AgentRoleProfile } from "../orchestrator/roles";
|
|
|
8
8
|
import { type Roster } from "../orchestrator/roster";
|
|
9
9
|
import type { RosterFileLoadResult } from "../orchestrator/rosterPersistence";
|
|
10
10
|
import { type WorktreeObservation, type WorktreeReconcileAction } from "../orchestrator/worktreeReconciler";
|
|
11
|
+
import type { QueueEvent } from "../telemetry/events";
|
|
11
12
|
import type { CostRecord } from "../telemetry/types";
|
|
12
13
|
import { type AgentFile } from "./agents";
|
|
13
14
|
import type { CachePort } from "./clearCache";
|
|
@@ -19,6 +20,13 @@ export type CliDeps = {
|
|
|
19
20
|
saveConfig: (config: OpenTeamConfig, path: string, options?: ConfigPathResolution) => Promise<void>;
|
|
20
21
|
probe: (config: OpenTeamConfig) => Promise<LocalRuntimeSnapshot[]>;
|
|
21
22
|
readTelemetry: (path: string) => Promise<CostRecord[]>;
|
|
23
|
+
/**
|
|
24
|
+
* Reads the per-dispatch local-runtime queue metric events (#144) for the
|
|
25
|
+
* `openteam doctor` queue-wait summary. Optional so older composition roots
|
|
26
|
+
* still run; when absent, doctor omits the `local queue wait` section rather
|
|
27
|
+
* than inventing zeros.
|
|
28
|
+
*/
|
|
29
|
+
readQueueEvents?: () => Promise<QueueEvent[]>;
|
|
22
30
|
/**
|
|
23
31
|
* Reads plugin-safe diagnostics persisted by the opencode plugin. Optional so
|
|
24
32
|
* older composition roots still run; when absent, doctor omits the section.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../src/commands/dispatch.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EAErB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAOjE,OAAO,KAAK,EAAY,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAG3D,OAAO,KAAK,EACV,uBAAuB,EACvB,YAAY,EAEZ,aAAa,EACd,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,KAAK,gBAAgB,EAAc,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAA2B,KAAK,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC7B,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../src/commands/dispatch.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import type { LocalRuntimeSnapshot } from "../local/types";
|
|
|
4
4
|
import { type DiagnosticCode } from "../telemetry/diagnostics";
|
|
5
5
|
import type { GraphViewHealth } from "../telemetry/graphView";
|
|
6
6
|
import type { OtelDoctorView } from "../telemetry/otelConfig";
|
|
7
|
+
import type { QueueWaitSummary } from "../telemetry/queueWait";
|
|
7
8
|
import type { AgentModelDiagnostic } from "./agents";
|
|
8
9
|
import type { CacheEntry } from "./clearCache";
|
|
9
10
|
export type DoctorInput = {
|
|
@@ -11,6 +12,14 @@ export type DoctorInput = {
|
|
|
11
12
|
snapshots: readonly LocalRuntimeSnapshot[];
|
|
12
13
|
telemetryPath: string;
|
|
13
14
|
telemetryRecords: number;
|
|
15
|
+
/**
|
|
16
|
+
* Local-runtime queue-wait view (#144). When present, doctor renders a
|
|
17
|
+
* `queue wait:` section. Its `summary` is `undefined` when queue telemetry was
|
|
18
|
+
* read but contained no samples, so doctor says so plainly instead of printing
|
|
19
|
+
* zeros that read as "no contention". Absent entirely when the composition
|
|
20
|
+
* root does not read queue telemetry.
|
|
21
|
+
*/
|
|
22
|
+
queueWait?: DoctorQueueWaitView;
|
|
14
23
|
/**
|
|
15
24
|
* Redacted OpenTelemetry backend view (W1-S04, #163). When present, doctor
|
|
16
25
|
* renders an `opentelemetry:` line. The raw connection string never enters
|
|
@@ -108,5 +117,13 @@ export type DoctorRosterAudit = {
|
|
|
108
117
|
readonly misassignedGuaranteedRoleEntries?: readonly DoctorRosterAuditEntry[];
|
|
109
118
|
readonly unprofiledRoleEntries?: readonly DoctorRosterAuditEntry[];
|
|
110
119
|
};
|
|
120
|
+
/**
|
|
121
|
+
* Doctor's view of local-runtime queue-wait telemetry (#144). Presence of this
|
|
122
|
+
* object means queue telemetry was consulted; `summary === undefined` means it
|
|
123
|
+
* held no samples yet (reported as "no data", never as zero contention).
|
|
124
|
+
*/
|
|
125
|
+
export type DoctorQueueWaitView = {
|
|
126
|
+
readonly summary?: QueueWaitSummary;
|
|
127
|
+
};
|
|
111
128
|
export declare function renderDoctor(input: DoctorInput): string;
|
|
112
129
|
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,OAAO,EACL,KAAK,cAAc,EAEpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EACV,oBAAoB,EAGrB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC3C,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,iEAAiE;IACjE,YAAY,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACrC,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC9C;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC9C;;;;OAIG;IACH,WAAW,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC1C;;;;OAIG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,qEAAqE;IACrE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE;QACV,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;QACzB,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;KAC1C,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACpD,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,CAAC,IAAI,EACT,yBAAyB,GACzB,uBAAuB,GACvB,oBAAoB,GACpB,yBAAyB,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,wBAAwB,EAAE,CAAC;IACxD,QAAQ,CAAC,wBAAwB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtD,QAAQ,CAAC,gCAAgC,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC9E,QAAQ,CAAC,qBAAqB,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACpE,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,OAAO,EACL,KAAK,cAAc,EAEpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EACV,oBAAoB,EAGrB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC3C,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,iEAAiE;IACjE,YAAY,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACrC,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC9C;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC9C;;;;OAIG;IACH,WAAW,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC1C;;;;OAIG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,qEAAqE;IACrE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE;QACV,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;QACzB,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;KAC1C,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACpD,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,CAAC,IAAI,EACT,yBAAyB,GACzB,uBAAuB,GACvB,oBAAoB,GACpB,yBAAyB,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,wBAAwB,EAAE,CAAC;IACxD,QAAQ,CAAC,wBAAwB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtD,QAAQ,CAAC,gCAAgC,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC9E,QAAQ,CAAC,qBAAqB,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACpE,CAAC;AA8CF;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC;CACrC,CAAC;AAoWF,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAwJvD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/config/errors.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,WAAW,CAAC;AAIlC,eAAO,MAAM,yBAAyB,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/config/errors.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,WAAW,CAAC;AAIlC,eAAO,MAAM,yBAAyB,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CA4GzE,CAAC;AAgIL,KAAK,6BAA6B,GAAG;IACnC,QAAQ,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;IAClE,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACxC,CAAC;AAEF,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,6BAAkC,GAC1C,MAAM,CA0BR;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKxD"}
|
package/dist/config/schema.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import type { LocalRuntimeKind } from "../local/types";
|
|
2
3
|
import { type AgentRoleProfile } from "../orchestrator/roles";
|
|
3
4
|
export declare const ModelRefSchema: z.ZodObject<{
|
|
4
5
|
providerID: z.ZodString;
|
|
@@ -118,13 +119,20 @@ export declare const StorageConfigSchema: z.ZodDefault<z.ZodObject<{
|
|
|
118
119
|
* real slot count per runtime when it differs.
|
|
119
120
|
*/
|
|
120
121
|
export declare const DEFAULT_LOCAL_MAX_CONCURRENCY = 4;
|
|
122
|
+
export declare const LocalRuntimeKindSchema: z.ZodEnum<{
|
|
123
|
+
"foundry-local": "foundry-local";
|
|
124
|
+
lemonade: "lemonade";
|
|
125
|
+
lmstudio: "lmstudio";
|
|
126
|
+
ollama: "ollama";
|
|
127
|
+
}>;
|
|
121
128
|
export declare const LocalRuntimeSchema: z.ZodObject<{
|
|
122
|
-
id: z.
|
|
129
|
+
id: z.ZodString;
|
|
130
|
+
kind: z.ZodOptional<z.ZodEnum<{
|
|
123
131
|
"foundry-local": "foundry-local";
|
|
124
132
|
lemonade: "lemonade";
|
|
125
133
|
lmstudio: "lmstudio";
|
|
126
134
|
ollama: "ollama";
|
|
127
|
-
}
|
|
135
|
+
}>>;
|
|
128
136
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
129
137
|
baseURL: z.ZodOptional<z.ZodString>;
|
|
130
138
|
discovery: z.ZodOptional<z.ZodEnum<{
|
|
@@ -138,6 +146,13 @@ export declare const LocalRuntimeSchema: z.ZodObject<{
|
|
|
138
146
|
}, z.core.$strict>;
|
|
139
147
|
maxConcurrency: z.ZodOptional<z.ZodNumber>;
|
|
140
148
|
}, z.core.$strict>;
|
|
149
|
+
/**
|
|
150
|
+
* Resolves the adapter {@link LocalRuntimeKind} of a configured runtime (#214).
|
|
151
|
+
* Prefers the explicit `kind`; falls back to the id for pre-#214 configs where
|
|
152
|
+
* the id was the kind. Safe because `LocalRuntimeSchema` refuses any runtime
|
|
153
|
+
* whose effective kind is not a known adapter kind.
|
|
154
|
+
*/
|
|
155
|
+
export declare function localRuntimeKind(runtime: Pick<LocalRuntime, "id" | "kind">): LocalRuntimeKind;
|
|
141
156
|
/**
|
|
142
157
|
* Bloque de memoria semántica long-term (capa de conocimiento). Opt-in y
|
|
143
158
|
* desactivado por defecto (ADR-1..6). Privacy-first: `storeContent=false` guarda
|
|
@@ -283,12 +298,13 @@ export declare const OpenTeamConfigObjectSchema: z.ZodObject<{
|
|
|
283
298
|
}, z.core.$strict>>;
|
|
284
299
|
local: z.ZodDefault<z.ZodObject<{
|
|
285
300
|
runtimes: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
286
|
-
id: z.
|
|
301
|
+
id: z.ZodString;
|
|
302
|
+
kind: z.ZodOptional<z.ZodEnum<{
|
|
287
303
|
"foundry-local": "foundry-local";
|
|
288
304
|
lemonade: "lemonade";
|
|
289
305
|
lmstudio: "lmstudio";
|
|
290
306
|
ollama: "ollama";
|
|
291
|
-
}
|
|
307
|
+
}>>;
|
|
292
308
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
293
309
|
baseURL: z.ZodOptional<z.ZodString>;
|
|
294
310
|
discovery: z.ZodOptional<z.ZodEnum<{
|
|
@@ -436,12 +452,13 @@ export declare const OpenTeamConfigSchema: z.ZodObject<{
|
|
|
436
452
|
}, z.core.$strict>>;
|
|
437
453
|
local: z.ZodDefault<z.ZodObject<{
|
|
438
454
|
runtimes: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
439
|
-
id: z.
|
|
455
|
+
id: z.ZodString;
|
|
456
|
+
kind: z.ZodOptional<z.ZodEnum<{
|
|
440
457
|
"foundry-local": "foundry-local";
|
|
441
458
|
lemonade: "lemonade";
|
|
442
459
|
lmstudio: "lmstudio";
|
|
443
460
|
ollama: "ollama";
|
|
444
|
-
}
|
|
461
|
+
}>>;
|
|
445
462
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
446
463
|
baseURL: z.ZodOptional<z.ZodString>;
|
|
447
464
|
discovery: z.ZodOptional<z.ZodEnum<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,KAAK,gBAAgB,EAEtB,MAAM,uBAAuB,CAAC;AAG/B,eAAO,MAAM,cAAc;;;kBAKhB,CAAC;AAEZ,eAAO,MAAM,gBAAgB;;;;EAA6C,CAAC;AAC3E,eAAO,MAAM,iBAAiB;;;;EAI5B,CAAC;AACH,eAAO,MAAM,kBAAkB;;;EAA6B,CAAC;AAE7D;;;;;GAKG;AACH,eAAO,MAAM,eAAe;;;;EAAsC,CAAC;AAEnE;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB;;;EAAmC,CAAC;AAElE;;;GAGG;AAEH;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,wCAAwC,CAAC;AAChF,eAAO,MAAM,2BAA2B,6CACI,CAAC;AAE7C,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;kBAmCnB,CAAC;AAEZ,eAAO,MAAM,iBAAiB;;;EAAqC,CAAC;AAEpE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;mBAiD5B,CAAC;AAEL;;GAEG;AAEH;;;;GAIG;AACH,eAAO,MAAM,iCAAiC,0CACL,CAAC;AAE1C,eAAO,MAAM,mBAAmB;;;;;mBAa5B,CAAC;AAqFL;;;;;;;;;;GAUG;AACH,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAE/C,eAAO,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
|