@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/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -95,8 +95,8 @@ var AgentRoleProfileSchema = z.object({
|
|
|
95
95
|
preferredFrontierModels: z.array(z.union([modelSelectionSchema, z.literal("auto")])),
|
|
96
96
|
localFirst: z.boolean(),
|
|
97
97
|
requiresLocalRuntime: z.boolean().optional(),
|
|
98
|
-
localRuntimes: z.array(z.
|
|
99
|
-
localModels: z.
|
|
98
|
+
localRuntimes: z.array(z.string().min(1)).optional(),
|
|
99
|
+
localModels: z.record(z.string().min(1), z.string().min(1)).optional()
|
|
100
100
|
}).strict();
|
|
101
101
|
var TEAM_ROLES = {
|
|
102
102
|
architect: {
|
|
@@ -403,14 +403,33 @@ var defaultFrontierModel = {
|
|
|
403
403
|
modelID: "claude-sonnet-4-5"
|
|
404
404
|
};
|
|
405
405
|
var DEFAULT_LOCAL_MAX_CONCURRENCY = 4;
|
|
406
|
+
var LocalRuntimeKindSchema = z2.enum([
|
|
407
|
+
"ollama",
|
|
408
|
+
"lmstudio",
|
|
409
|
+
"foundry-local",
|
|
410
|
+
"lemonade"
|
|
411
|
+
]);
|
|
406
412
|
var LocalRuntimeSchema = z2.object({
|
|
407
|
-
id: z2.
|
|
413
|
+
id: z2.string().min(1),
|
|
414
|
+
kind: LocalRuntimeKindSchema.optional(),
|
|
408
415
|
enabled: z2.boolean().default(true),
|
|
409
416
|
baseURL: z2.string().url().optional(),
|
|
410
417
|
discovery: z2.enum(["cli", "sdk", "manual"]).optional(),
|
|
411
418
|
defaultModel: ModelRefSchema,
|
|
412
419
|
maxConcurrency: z2.number().int().positive().optional()
|
|
413
|
-
}).strict()
|
|
420
|
+
}).strict().superRefine((runtime, ctx) => {
|
|
421
|
+
const resolvedKind = runtime.kind ?? runtime.id;
|
|
422
|
+
if (!LocalRuntimeKindSchema.safeParse(resolvedKind).success) {
|
|
423
|
+
ctx.addIssue({
|
|
424
|
+
code: z2.ZodIssueCode.custom,
|
|
425
|
+
path: ["kind"],
|
|
426
|
+
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."
|
|
427
|
+
});
|
|
428
|
+
}
|
|
429
|
+
});
|
|
430
|
+
function localRuntimeKind(runtime) {
|
|
431
|
+
return runtime.kind ?? runtime.id;
|
|
432
|
+
}
|
|
414
433
|
var MemoryScopeSchema = z2.enum(["project", "user"]);
|
|
415
434
|
var MemoryExtractionModeSchema = z2.enum([
|
|
416
435
|
"local",
|
|
@@ -492,7 +511,23 @@ var OpenTeamConfigObjectSchema = z2.object({
|
|
|
492
511
|
localOnly: false
|
|
493
512
|
}),
|
|
494
513
|
local: z2.object({
|
|
495
|
-
runtimes: z2.array(LocalRuntimeSchema).default([])
|
|
514
|
+
runtimes: z2.array(LocalRuntimeSchema).default([]).superRefine((runtimes, ctx) => {
|
|
515
|
+
const seen = new Set;
|
|
516
|
+
for (let index = 0;index < runtimes.length; index += 1) {
|
|
517
|
+
const runtime = runtimes[index];
|
|
518
|
+
if (runtime === undefined) {
|
|
519
|
+
continue;
|
|
520
|
+
}
|
|
521
|
+
if (seen.has(runtime.id)) {
|
|
522
|
+
ctx.addIssue({
|
|
523
|
+
code: z2.ZodIssueCode.custom,
|
|
524
|
+
path: [index, "id"],
|
|
525
|
+
message: `duplicate local runtime id "${runtime.id}": each local.runtimes[].id must be unique within the array.`
|
|
526
|
+
});
|
|
527
|
+
}
|
|
528
|
+
seen.add(runtime.id);
|
|
529
|
+
}
|
|
530
|
+
})
|
|
496
531
|
}).strict().default({
|
|
497
532
|
runtimes: []
|
|
498
533
|
}),
|
|
@@ -2681,6 +2716,7 @@ var KNOWN_CONFIG_KEYS_BY_PATH = new Map([
|
|
|
2681
2716
|
"local.runtimes[]",
|
|
2682
2717
|
[
|
|
2683
2718
|
"id",
|
|
2719
|
+
"kind",
|
|
2684
2720
|
"enabled",
|
|
2685
2721
|
"baseURL",
|
|
2686
2722
|
"discovery",
|
|
@@ -3031,6 +3067,16 @@ var MeetingEventSchema = EventBaseSchema.extend({
|
|
|
3031
3067
|
roles: z11.array(z11.string().min(1)),
|
|
3032
3068
|
decisionIDs: z11.array(z11.string().min(1)).optional()
|
|
3033
3069
|
});
|
|
3070
|
+
var QueueEventSchema = EventBaseSchema.extend({
|
|
3071
|
+
type: z11.literal("queue"),
|
|
3072
|
+
runtimeId: z11.string().min(1),
|
|
3073
|
+
waitedMs: z11.number().finite().min(0),
|
|
3074
|
+
activeCount: z11.number().int().min(0),
|
|
3075
|
+
queuedCount: z11.number().int().min(0),
|
|
3076
|
+
decisionID: z11.string().min(1).optional(),
|
|
3077
|
+
agent: z11.string().min(1).optional(),
|
|
3078
|
+
batchID: z11.string().min(1).optional()
|
|
3079
|
+
});
|
|
3034
3080
|
var DecisionEventSchema = EventBaseSchema.extend({
|
|
3035
3081
|
type: z11.literal("decision"),
|
|
3036
3082
|
agent: z11.string().min(1).optional(),
|
|
@@ -3076,6 +3122,7 @@ var OpenTeamEventSchema = z11.discriminatedUnion("type", [
|
|
|
3076
3122
|
MessageEventSchema,
|
|
3077
3123
|
ToolcallEventSchema,
|
|
3078
3124
|
MeetingEventSchema,
|
|
3125
|
+
QueueEventSchema,
|
|
3079
3126
|
DecisionEventSchema,
|
|
3080
3127
|
ActivityEventSchema,
|
|
3081
3128
|
SessionEndpointEventSchema,
|
|
@@ -5052,11 +5099,14 @@ function createRuntimeConcurrencyLimiter(options) {
|
|
|
5052
5099
|
acquire(runtimeId) {
|
|
5053
5100
|
const immediate = tryAcquire(runtimeId);
|
|
5054
5101
|
if (immediate !== undefined) {
|
|
5055
|
-
return Promise.resolve(immediate);
|
|
5102
|
+
return Promise.resolve({ release: immediate, waitedMs: 0 });
|
|
5056
5103
|
}
|
|
5057
5104
|
const state = stateFor(runtimeId);
|
|
5105
|
+
const queuedAt = options.now();
|
|
5058
5106
|
return new Promise((resolve3) => {
|
|
5059
|
-
state.queue.push(
|
|
5107
|
+
state.queue.push((release) => {
|
|
5108
|
+
resolve3({ release, waitedMs: options.now() - queuedAt });
|
|
5109
|
+
});
|
|
5060
5110
|
});
|
|
5061
5111
|
},
|
|
5062
5112
|
activeCount(runtimeId) {
|
|
@@ -5414,10 +5464,11 @@ class RuntimeRegistry {
|
|
|
5414
5464
|
continue;
|
|
5415
5465
|
}
|
|
5416
5466
|
const probedAt = this.clock();
|
|
5417
|
-
const adapter = this.adapters[runtime
|
|
5467
|
+
const adapter = this.adapters[localRuntimeKind(runtime)];
|
|
5418
5468
|
const options = this.createProbeOptions(runtime, probedAt);
|
|
5419
5469
|
try {
|
|
5420
|
-
|
|
5470
|
+
const snapshot = await adapter.probe(options);
|
|
5471
|
+
snapshots.push({ ...snapshot, id: runtime.id });
|
|
5421
5472
|
} catch (error) {
|
|
5422
5473
|
snapshots.push(unavailableSnapshot({
|
|
5423
5474
|
id: runtime.id,
|
|
@@ -5437,7 +5488,7 @@ class RuntimeRegistry {
|
|
|
5437
5488
|
if (runtime.baseURL !== undefined) {
|
|
5438
5489
|
options.baseURL = runtime.baseURL;
|
|
5439
5490
|
}
|
|
5440
|
-
if (runtime
|
|
5491
|
+
if (localRuntimeKind(runtime) === "foundry-local" && runtime.discovery !== "manual" && this.foundryDiscovery !== undefined) {
|
|
5441
5492
|
options.discovery = this.foundryDiscovery;
|
|
5442
5493
|
}
|
|
5443
5494
|
return options;
|
|
@@ -6538,6 +6589,28 @@ async function safeEmit(sink, event) {
|
|
|
6538
6589
|
await sink.emit(event);
|
|
6539
6590
|
} catch {}
|
|
6540
6591
|
}
|
|
6592
|
+
function buildQueueEvent(observation, sessionID, ts, correlation) {
|
|
6593
|
+
const event = {
|
|
6594
|
+
v: EVENT_SCHEMA_VERSION,
|
|
6595
|
+
type: "queue",
|
|
6596
|
+
ts,
|
|
6597
|
+
sessionID,
|
|
6598
|
+
runtimeId: observation.runtimeId,
|
|
6599
|
+
waitedMs: observation.waitedMs,
|
|
6600
|
+
activeCount: observation.activeCount,
|
|
6601
|
+
queuedCount: observation.queuedCount
|
|
6602
|
+
};
|
|
6603
|
+
if (correlation.decisionID !== undefined) {
|
|
6604
|
+
event.decisionID = correlation.decisionID;
|
|
6605
|
+
}
|
|
6606
|
+
if (correlation.agent !== undefined) {
|
|
6607
|
+
event.agent = correlation.agent;
|
|
6608
|
+
}
|
|
6609
|
+
if (correlation.batchID !== undefined) {
|
|
6610
|
+
event.batchID = correlation.batchID;
|
|
6611
|
+
}
|
|
6612
|
+
return event;
|
|
6613
|
+
}
|
|
6541
6614
|
async function runRoleTaskWithCorrelation(input, deps, correlation, batch) {
|
|
6542
6615
|
if (getRoleProfile(input.roleID, input.config.orchestrator?.roles) === undefined) {
|
|
6543
6616
|
warnUnknownRole(input.roleID, deps.warn, deps.warnedRoles);
|
|
@@ -6575,16 +6648,40 @@ async function runRoleTaskWithCorrelation(input, deps, correlation, batch) {
|
|
|
6575
6648
|
const subsessionDeps = deps.timeoutMs === undefined ? {} : { timeoutMs: deps.timeoutMs };
|
|
6576
6649
|
const runtimeId = selection.runtimeId;
|
|
6577
6650
|
let release;
|
|
6651
|
+
let queueObservation;
|
|
6578
6652
|
if (runtimeId !== undefined && deps.runtimeLimiter !== undefined) {
|
|
6579
|
-
|
|
6653
|
+
const limiter = deps.runtimeLimiter;
|
|
6654
|
+
release = limiter.tryAcquire(runtimeId);
|
|
6655
|
+
let waitedMs = 0;
|
|
6580
6656
|
if (release === undefined) {
|
|
6581
|
-
|
|
6582
|
-
|
|
6657
|
+
const acquisition = await limiter.acquire(runtimeId);
|
|
6658
|
+
release = acquisition.release;
|
|
6659
|
+
waitedMs = acquisition.waitedMs;
|
|
6660
|
+
}
|
|
6661
|
+
queueObservation = {
|
|
6662
|
+
runtimeId,
|
|
6663
|
+
waitedMs,
|
|
6664
|
+
activeCount: limiter.activeCount(runtimeId),
|
|
6665
|
+
queuedCount: limiter.queuedCount(runtimeId)
|
|
6666
|
+
};
|
|
6583
6667
|
}
|
|
6584
6668
|
try {
|
|
6585
6669
|
const subsession = await runSubsession(deps.client, request, subsessionDeps);
|
|
6586
6670
|
const record = buildRecord(input, decision2, subsession, deps, correlation.decisionID, correlation.batchID);
|
|
6587
6671
|
await safeEmit(deps.sink, correlatedCostRecordToRouteEvent(record));
|
|
6672
|
+
if (queueObservation !== undefined) {
|
|
6673
|
+
const sessionID = recordSessionID(input, subsession);
|
|
6674
|
+
if (sessionID !== undefined) {
|
|
6675
|
+
const queueCorrelation = {
|
|
6676
|
+
decisionID: correlation.decisionID,
|
|
6677
|
+
agent: input.roleID
|
|
6678
|
+
};
|
|
6679
|
+
if (correlation.batchID !== undefined) {
|
|
6680
|
+
queueCorrelation.batchID = correlation.batchID;
|
|
6681
|
+
}
|
|
6682
|
+
await safeEmit(deps.sink, buildQueueEvent(queueObservation, sessionID, deps.now(), queueCorrelation));
|
|
6683
|
+
}
|
|
6684
|
+
}
|
|
6588
6685
|
return { decision: decision2, subsession, record };
|
|
6589
6686
|
} finally {
|
|
6590
6687
|
release?.();
|
|
@@ -7505,6 +7602,60 @@ function createTelemetryEventSink(options, deps) {
|
|
|
7505
7602
|
return { sink, resolution };
|
|
7506
7603
|
}
|
|
7507
7604
|
|
|
7605
|
+
// src/telemetry/queueWait.ts
|
|
7606
|
+
function percentile(sortedAsc, p) {
|
|
7607
|
+
const rank = Math.ceil(p / 100 * sortedAsc.length);
|
|
7608
|
+
const index = Math.min(Math.max(rank, 1), sortedAsc.length) - 1;
|
|
7609
|
+
return sortedAsc[index] ?? 0;
|
|
7610
|
+
}
|
|
7611
|
+
function summarizeGroup(runtimeId, waits, maxQueued, maxActive) {
|
|
7612
|
+
const sorted = [...waits].sort((a, b) => a - b);
|
|
7613
|
+
return {
|
|
7614
|
+
runtimeId,
|
|
7615
|
+
samples: sorted.length,
|
|
7616
|
+
contended: sorted.filter((wait) => wait > 0).length,
|
|
7617
|
+
p50Ms: percentile(sorted, 50),
|
|
7618
|
+
p95Ms: percentile(sorted, 95),
|
|
7619
|
+
maxMs: sorted[sorted.length - 1] ?? 0,
|
|
7620
|
+
maxQueued,
|
|
7621
|
+
maxActive
|
|
7622
|
+
};
|
|
7623
|
+
}
|
|
7624
|
+
function summarizeQueueWaits(events) {
|
|
7625
|
+
if (events.length === 0) {
|
|
7626
|
+
return;
|
|
7627
|
+
}
|
|
7628
|
+
const allWaits = [];
|
|
7629
|
+
let overallMaxQueued = 0;
|
|
7630
|
+
let overallMaxActive = 0;
|
|
7631
|
+
const byRuntime = new Map;
|
|
7632
|
+
for (const event of events) {
|
|
7633
|
+
allWaits.push(event.waitedMs);
|
|
7634
|
+
overallMaxQueued = Math.max(overallMaxQueued, event.queuedCount);
|
|
7635
|
+
overallMaxActive = Math.max(overallMaxActive, event.activeCount);
|
|
7636
|
+
let group = byRuntime.get(event.runtimeId);
|
|
7637
|
+
if (group === undefined) {
|
|
7638
|
+
group = { waits: [], maxQueued: 0, maxActive: 0 };
|
|
7639
|
+
byRuntime.set(event.runtimeId, group);
|
|
7640
|
+
}
|
|
7641
|
+
group.waits.push(event.waitedMs);
|
|
7642
|
+
group.maxQueued = Math.max(group.maxQueued, event.queuedCount);
|
|
7643
|
+
group.maxActive = Math.max(group.maxActive, event.activeCount);
|
|
7644
|
+
}
|
|
7645
|
+
const overall = summarizeGroup("*", allWaits, overallMaxQueued, overallMaxActive);
|
|
7646
|
+
const perRuntime = [...byRuntime.entries()].sort(([a], [b]) => a.localeCompare(b)).map(([runtimeId, group]) => summarizeGroup(runtimeId, group.waits, group.maxQueued, group.maxActive));
|
|
7647
|
+
return {
|
|
7648
|
+
samples: overall.samples,
|
|
7649
|
+
contended: overall.contended,
|
|
7650
|
+
p50Ms: overall.p50Ms,
|
|
7651
|
+
p95Ms: overall.p95Ms,
|
|
7652
|
+
maxMs: overall.maxMs,
|
|
7653
|
+
maxQueued: overall.maxQueued,
|
|
7654
|
+
maxActive: overall.maxActive,
|
|
7655
|
+
perRuntime
|
|
7656
|
+
};
|
|
7657
|
+
}
|
|
7658
|
+
|
|
7508
7659
|
// src/web/paths.ts
|
|
7509
7660
|
var DEFAULT_DECISIONS_PATH = ".opencode/openteam/decisions.md";
|
|
7510
7661
|
|
|
@@ -7982,6 +8133,24 @@ function isNetworkRuntime(baseURL) {
|
|
|
7982
8133
|
return false;
|
|
7983
8134
|
}
|
|
7984
8135
|
}
|
|
8136
|
+
function queueWaitSection(view) {
|
|
8137
|
+
const lines = [" local queue wait (#144, per openteam process):"];
|
|
8138
|
+
const summary = view.summary;
|
|
8139
|
+
if (summary === undefined || summary.samples === 0) {
|
|
8140
|
+
lines.push(" (no queue samples recorded yet — run an orchestrated load, then re-run doctor)");
|
|
8141
|
+
return lines;
|
|
8142
|
+
}
|
|
8143
|
+
const mark = summary.contended > 0 ? "⚠" : "✓";
|
|
8144
|
+
lines.push(` ${mark} ${summary.samples} dispatch(es), ${summary.contended} queued — ` + `p50 ${summary.p50Ms}ms · p95 ${summary.p95Ms}ms · max ${summary.maxMs}ms`);
|
|
8145
|
+
lines.push(` peak depth: ${summary.maxActive} active · ${summary.maxQueued} queued`);
|
|
8146
|
+
for (const runtime of summary.perRuntime) {
|
|
8147
|
+
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`);
|
|
8148
|
+
}
|
|
8149
|
+
if (summary.contended > 0) {
|
|
8150
|
+
lines.push(" Lower a runtime's maxConcurrency in .opencode/openteam.json to leave slots for interactive traffic.");
|
|
8151
|
+
}
|
|
8152
|
+
return lines;
|
|
8153
|
+
}
|
|
7985
8154
|
function failureReasonText(reason, searchedPaths) {
|
|
7986
8155
|
switch (reason) {
|
|
7987
8156
|
case "provider-not-configured": {
|
|
@@ -8198,6 +8367,9 @@ function renderDoctor(input) {
|
|
|
8198
8367
|
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.");
|
|
8199
8368
|
}
|
|
8200
8369
|
lines.push(` telemetry: ${input.telemetryPath} — ${input.telemetryRecords} record(s)`);
|
|
8370
|
+
if (input.queueWait !== undefined) {
|
|
8371
|
+
lines.push(...queueWaitSection(input.queueWait));
|
|
8372
|
+
}
|
|
8201
8373
|
if (input.diagnostics !== undefined) {
|
|
8202
8374
|
lines.push(...diagnosticsSection(input.diagnostics));
|
|
8203
8375
|
}
|
|
@@ -10250,6 +10422,12 @@ async function runCli(argv, deps) {
|
|
|
10250
10422
|
rosterLoadError = err instanceof Error ? err.message : String(err);
|
|
10251
10423
|
}
|
|
10252
10424
|
}
|
|
10425
|
+
let queueWait;
|
|
10426
|
+
if (deps.readQueueEvents !== undefined) {
|
|
10427
|
+
const queueEvents = await deps.readQueueEvents();
|
|
10428
|
+
const summary = summarizeQueueWaits(queueEvents);
|
|
10429
|
+
queueWait = summary !== undefined ? { summary } : {};
|
|
10430
|
+
}
|
|
10253
10431
|
return {
|
|
10254
10432
|
exitCode: 0,
|
|
10255
10433
|
stdout: renderDoctor({
|
|
@@ -10259,6 +10437,7 @@ async function runCli(argv, deps) {
|
|
|
10259
10437
|
telemetryRecords: records.length,
|
|
10260
10438
|
agentModels,
|
|
10261
10439
|
opencodeConfigPaths,
|
|
10440
|
+
...queueWait !== undefined ? { queueWait } : {},
|
|
10262
10441
|
...rosterAudit !== undefined ? { rosterAudit } : {},
|
|
10263
10442
|
...rosterRoleCount !== undefined ? { rosterRoleCount } : {},
|
|
10264
10443
|
...rosterLoadError !== undefined ? { rosterLoadError } : {},
|
|
@@ -13087,7 +13266,7 @@ var createOtlpSpanExporter = (connection, config) => {
|
|
|
13087
13266
|
// package.json
|
|
13088
13267
|
var package_default = {
|
|
13089
13268
|
name: "@jmanuelcorral/openteam",
|
|
13090
|
-
version: "0.
|
|
13269
|
+
version: "0.14.0",
|
|
13091
13270
|
packageManager: "bun@1.3.14",
|
|
13092
13271
|
description: "Cost-aware, local-first routing plugin for opencode with cheapest-capable frontier fallback and multi-agent orchestration.",
|
|
13093
13272
|
license: "MIT",
|
|
@@ -13827,7 +14006,8 @@ var server = async (ctx, rawOptions) => {
|
|
|
13827
14006
|
return reachableRuntimeIds(snapshots);
|
|
13828
14007
|
};
|
|
13829
14008
|
const runtimeLimiter = createRuntimeConcurrencyLimiter({
|
|
13830
|
-
capacityFor: (id) => config.local.runtimes.find((runtime) => runtime.id === id)?.maxConcurrency ?? DEFAULT_LOCAL_MAX_CONCURRENCY
|
|
14009
|
+
capacityFor: (id) => config.local.runtimes.find((runtime) => runtime.id === id)?.maxConcurrency ?? DEFAULT_LOCAL_MAX_CONCURRENCY,
|
|
14010
|
+
now
|
|
13831
14011
|
});
|
|
13832
14012
|
const orchestrateTool = createOrchestrateTool({
|
|
13833
14013
|
client: orchestrateClient,
|
|
@@ -5,6 +5,17 @@ import type { LocalRuntimeId } from "./types";
|
|
|
5
5
|
* on error paths.
|
|
6
6
|
*/
|
|
7
7
|
export type RuntimeSlotRelease = () => void;
|
|
8
|
+
/**
|
|
9
|
+
* Outcome of an `acquire`: the slot release plus how long the caller waited in
|
|
10
|
+
* the FIFO queue before the slot was granted. `waitedMs` is `0` when a slot was
|
|
11
|
+
* free and the acquisition resolved without queuing. It is measured with the
|
|
12
|
+
* injected clock (`RuntimeConcurrencyLimiterOptions.now`), so tests are
|
|
13
|
+
* deterministic and the limiter never reads wall-clock time inline.
|
|
14
|
+
*/
|
|
15
|
+
export type RuntimeSlotAcquisition = {
|
|
16
|
+
readonly release: RuntimeSlotRelease;
|
|
17
|
+
readonly waitedMs: number;
|
|
18
|
+
};
|
|
8
19
|
/**
|
|
9
20
|
* Per-runtime concurrency limiter with FIFO queuing (#144).
|
|
10
21
|
*
|
|
@@ -30,11 +41,12 @@ export type RuntimeConcurrencyLimiter = {
|
|
|
30
41
|
tryAcquire(runtimeId: LocalRuntimeId): RuntimeSlotRelease | undefined;
|
|
31
42
|
/**
|
|
32
43
|
* Takes a slot for `runtimeId`, queuing FIFO when the runtime is saturated.
|
|
33
|
-
* Resolves with a release once a slot is
|
|
34
|
-
* and only `await acquire` when it
|
|
35
|
-
* path stays synchronous.
|
|
44
|
+
* Resolves with a release and the measured queue wait once a slot is
|
|
45
|
+
* available. Prefer `tryAcquire` first and only `await acquire` when it
|
|
46
|
+
* returns `undefined`, so the common free path stays synchronous. When a slot
|
|
47
|
+
* is free, resolves immediately with `waitedMs === 0`.
|
|
36
48
|
*/
|
|
37
|
-
acquire(runtimeId: LocalRuntimeId): Promise<
|
|
49
|
+
acquire(runtimeId: LocalRuntimeId): Promise<RuntimeSlotAcquisition>;
|
|
38
50
|
/** Current in-flight count for a runtime. Exposed for tests and diagnostics. */
|
|
39
51
|
activeCount(runtimeId: LocalRuntimeId): number;
|
|
40
52
|
/** Current queued (waiting) count for a runtime. Exposed for tests. */
|
|
@@ -47,6 +59,14 @@ export type RuntimeConcurrencyLimiterOptions = {
|
|
|
47
59
|
* runtime does not declare a cap. Must return a positive integer.
|
|
48
60
|
*/
|
|
49
61
|
capacityFor: (runtimeId: LocalRuntimeId) => number;
|
|
62
|
+
/**
|
|
63
|
+
* Injected clock in epoch milliseconds, used ONLY to measure how long a
|
|
64
|
+
* saturated `acquire` waited in the FIFO queue. The free `tryAcquire` path
|
|
65
|
+
* never reads it, so the happy path stays allocation-free and clock-free.
|
|
66
|
+
* Injected (never `Date.now()` inline) so queue-wait telemetry is
|
|
67
|
+
* deterministic under test.
|
|
68
|
+
*/
|
|
69
|
+
now: () => number;
|
|
50
70
|
};
|
|
51
71
|
export declare function createRuntimeConcurrencyLimiter(options: RuntimeConcurrencyLimiterOptions): RuntimeConcurrencyLimiter;
|
|
52
72
|
//# sourceMappingURL=concurrency.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"concurrency.d.ts","sourceRoot":"","sources":["../../src/local/concurrency.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC;AAE5C;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,cAAc,GAAG,kBAAkB,GAAG,SAAS,CAAC;IACtE
|
|
1
|
+
{"version":3,"file":"concurrency.d.ts","sourceRoot":"","sources":["../../src/local/concurrency.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC;AAE5C;;;;;;GAMG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,cAAc,GAAG,kBAAkB,GAAG,SAAS,CAAC;IACtE;;;;;;OAMG;IACH,OAAO,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACpE,gFAAgF;IAChF,WAAW,CAAC,SAAS,EAAE,cAAc,GAAG,MAAM,CAAC;IAC/C,uEAAuE;IACvE,WAAW,CAAC,SAAS,EAAE,cAAc,GAAG,MAAM,CAAC;CAChD,CAAC;AAOF,MAAM,MAAM,gCAAgC,GAAG;IAC7C;;;;OAIG;IACH,WAAW,EAAE,CAAC,SAAS,EAAE,cAAc,KAAK,MAAM,CAAC;IACnD;;;;;;OAMG;IACH,GAAG,EAAE,MAAM,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,gCAAgC,GACxC,yBAAyB,CA+D3B"}
|
package/dist/local/registry.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type LocalRuntime } from "../config/schema";
|
|
2
2
|
import type { ModelSelection } from "../router/types";
|
|
3
|
-
import type { Clock, FetchLike, LocalRuntimeId, LocalRuntimeSnapshot, RuntimeAdapter, RuntimeDiscovery } from "./types";
|
|
3
|
+
import type { Clock, FetchLike, LocalRuntimeId, LocalRuntimeKind, LocalRuntimeSnapshot, RuntimeAdapter, RuntimeDiscovery } from "./types";
|
|
4
4
|
export type RuntimeRegistryOptions = {
|
|
5
5
|
fetch: FetchLike;
|
|
6
6
|
clock: Clock;
|
|
7
7
|
foundryDiscovery?: RuntimeDiscovery;
|
|
8
|
-
adapters?: Partial<Record<
|
|
8
|
+
adapters?: Partial<Record<LocalRuntimeKind, RuntimeAdapter>>;
|
|
9
9
|
};
|
|
10
10
|
export declare class RuntimeRegistry {
|
|
11
11
|
private readonly adapters;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/local/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/local/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAoB,MAAM,kBAAkB,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAMtD,OAAO,KAAK,EACV,KAAK,EACL,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAEjB,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC,CAAC;CAC9D,CAAC;AAEF,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2C;IACpE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA+B;IAEhE,YAAY,OAAO,EAAE,sBAAsB,EAW1C;IAEK,KAAK,CACT,QAAQ,EAAE,SAAS,YAAY,EAAE,GAChC,OAAO,CAAC,oBAAoB,EAAE,CAAC,CA+BjC;IAED,OAAO,CAAC,kBAAkB;CAuB3B;AAED,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,SAAS,oBAAoB,EAAE,GACzC,cAAc,EAAE,CAWlB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,SAAS,oBAAoB,EAAE,GACzC,OAAO,CAET;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,SAAS,oBAAoB,EAAE,GACzC,GAAG,CAAC,cAAc,CAAC,CAQrB"}
|
package/dist/local/types.d.ts
CHANGED
|
@@ -1,4 +1,18 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* The KIND of a local runtime — the closed set of adapters openteam knows how to
|
|
3
|
+
* talk to (#214). The kind selects the adapter (`createLMStudioAdapter`, …) and
|
|
4
|
+
* its default base URL; it is NOT an instance identity.
|
|
5
|
+
*/
|
|
6
|
+
export type LocalRuntimeKind = "ollama" | "lmstudio" | "foundry-local" | "lemonade";
|
|
7
|
+
/**
|
|
8
|
+
* Instance identity of a configured local runtime (#214). Free-form and unique
|
|
9
|
+
* within `local.runtimes`, so two machines of the same {@link LocalRuntimeKind}
|
|
10
|
+
* (e.g. two LM Studio boxes `lmstudio-a`/`lmstudio-b`) are distinct identities:
|
|
11
|
+
* each is probed on its own `baseURL`, gets its own `maxConcurrency` cap and is
|
|
12
|
+
* addressable by roles. Pre-#214 configs used the kind as the id, which still
|
|
13
|
+
* validates because a bare kind is a valid instance id.
|
|
14
|
+
*/
|
|
15
|
+
export type LocalRuntimeId = string;
|
|
2
16
|
export type LocalModelInfo = {
|
|
3
17
|
modelID: string;
|
|
4
18
|
supportsTools: boolean | "unknown";
|
|
@@ -31,7 +45,7 @@ export type RuntimeProbeOptions = RuntimeListModelsOptions & {
|
|
|
31
45
|
probedAt: string;
|
|
32
46
|
};
|
|
33
47
|
export type RuntimeAdapter = {
|
|
34
|
-
id:
|
|
48
|
+
id: LocalRuntimeKind;
|
|
35
49
|
defaultBaseURL?: string;
|
|
36
50
|
listModels(options: RuntimeListModelsOptions): Promise<LocalModelInfo[]>;
|
|
37
51
|
probe(options: RuntimeProbeOptions): Promise<LocalRuntimeSnapshot>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/local/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,
|
|
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;CACxB,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"}
|
|
@@ -6,7 +6,7 @@ import type { RuntimeConcurrencyLimiter } from "../local/concurrency";
|
|
|
6
6
|
import type { LocalRuntimeId } from "../local/types";
|
|
7
7
|
import type { AvailableModel, RoutingDecision, TaskSignals } from "../router/types";
|
|
8
8
|
import { type EventSink } from "../telemetry/eventLog";
|
|
9
|
-
import { type MeetingEvent, type RouteEvent } from "../telemetry/events";
|
|
9
|
+
import { type MeetingEvent, type QueueEvent, type RouteEvent } from "../telemetry/events";
|
|
10
10
|
import type { CostRecord } from "../telemetry/types";
|
|
11
11
|
import { type AgentRoleProfile } from "./roles";
|
|
12
12
|
import { type OpencodeSessionClient, type SubsessionResult } from "./subsessions";
|
|
@@ -215,6 +215,29 @@ export declare function correlatedCostRecordToRouteEvent(record: CorrelatedCostR
|
|
|
215
215
|
* ninguna tarea del batch tiene una sesión padre a la que atribuir la reunión.
|
|
216
216
|
*/
|
|
217
217
|
export declare function buildMeetingEvent(inputs: readonly RoleTaskInput[], batchID: string, decisionIDs: readonly string[], ts: number): MeetingEvent | undefined;
|
|
218
|
+
/**
|
|
219
|
+
* Per-dispatch queue observation captured at the concurrency limiter's
|
|
220
|
+
* acquisition site (#144). `waitedMs` is the FIFO wait the limiter measured with
|
|
221
|
+
* its injected clock (0 when a slot was free); `activeCount`/`queuedCount` are
|
|
222
|
+
* the limiter's counters read at the instant the slot was granted. Ids, counts
|
|
223
|
+
* and a duration only — no prompt content.
|
|
224
|
+
*/
|
|
225
|
+
export type QueueWaitObservation = {
|
|
226
|
+
readonly runtimeId: LocalRuntimeId;
|
|
227
|
+
readonly waitedMs: number;
|
|
228
|
+
readonly activeCount: number;
|
|
229
|
+
readonly queuedCount: number;
|
|
230
|
+
};
|
|
231
|
+
/**
|
|
232
|
+
* Builds the redacted `queue` telemetry event from a per-dispatch observation.
|
|
233
|
+
* Pure: no I/O, clock, random, or env. The producer supplies `ts` (from the
|
|
234
|
+
* injected coordinator clock) and the resolved `sessionID`.
|
|
235
|
+
*/
|
|
236
|
+
export declare function buildQueueEvent(observation: QueueWaitObservation, sessionID: string, ts: number, correlation: {
|
|
237
|
+
decisionID?: string;
|
|
238
|
+
agent?: string;
|
|
239
|
+
batchID?: string;
|
|
240
|
+
}): QueueEvent;
|
|
218
241
|
export declare function runRoleTask(input: RoleTaskInput, deps: CoordinatorDeps): Promise<RoleTaskResult>;
|
|
219
242
|
export type RoleBatchResult = {
|
|
220
243
|
readonly batchID: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/coordinator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/coordinator.ts"],"names":[],"mappings":"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"}
|
|
@@ -70,18 +70,8 @@ export declare const AgentRoleProfileSchema: z.ZodObject<{
|
|
|
70
70
|
}, z.core.$strict>, z.ZodLiteral<"auto">]>>;
|
|
71
71
|
localFirst: z.ZodBoolean;
|
|
72
72
|
requiresLocalRuntime: z.ZodOptional<z.ZodBoolean>;
|
|
73
|
-
localRuntimes: z.ZodOptional<z.ZodArray<z.
|
|
74
|
-
|
|
75
|
-
lemonade: "lemonade";
|
|
76
|
-
lmstudio: "lmstudio";
|
|
77
|
-
ollama: "ollama";
|
|
78
|
-
}>>>;
|
|
79
|
-
localModels: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
|
|
80
|
-
"foundry-local": "foundry-local";
|
|
81
|
-
lemonade: "lemonade";
|
|
82
|
-
lmstudio: "lmstudio";
|
|
83
|
-
ollama: "ollama";
|
|
84
|
-
}> & z.core.$partial, z.ZodString>>;
|
|
73
|
+
localRuntimes: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
74
|
+
localModels: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
85
75
|
}, z.core.$strict>;
|
|
86
76
|
export declare const TEAM_ROLES: Record<string, AgentRoleProfile>;
|
|
87
77
|
export declare function isKnownNonWorkerRole(roleID: string): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../../src/orchestrator/roles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EACV,qBAAqB,EACrB,cAAc,EACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,cAAc,CAAC;IAC5B,gBAAgB,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpC,kBAAkB,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACtC,yBAAyB,EAAE,OAAO,CAAC;IACnC,uBAAuB,EAAE,KAAK,CAAC,cAAc,GAAG,MAAM,CAAC,CAAC;IACxD,UAAU,EAAE,OAAO,CAAC;IACpB;;;;;;;;;OASG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;;;;;;;;;;OAaG;IACH,aAAa,CAAC,EAAE,cAAc,EAAE,CAAC;IACjC;;;;;;;;;;;;OAYG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;CACvD,CAAC;AAiBF,eAAO,MAAM,sBAAsB
|
|
1
|
+
{"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../../src/orchestrator/roles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EACV,qBAAqB,EACrB,cAAc,EACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,cAAc,CAAC;IAC5B,gBAAgB,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpC,kBAAkB,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACtC,yBAAyB,EAAE,OAAO,CAAC;IACnC,uBAAuB,EAAE,KAAK,CAAC,cAAc,GAAG,MAAM,CAAC,CAAC;IACxD,UAAU,EAAE,OAAO,CAAC;IACpB;;;;;;;;;OASG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;;;;;;;;;;OAaG;IACH,aAAa,CAAC,EAAE,cAAc,EAAE,CAAC;IACjC;;;;;;;;;;;;OAYG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;CACvD,CAAC;AAiBF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;kBAkBxB,CAAC;AAGZ,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CA8FvD,CAAC;AAcF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAI5D;AA6BD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,eAAe,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,GAC3D,gBAAgB,GAAG,SAAS,CAO9B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAW1E;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,gBAAgB,EACtB,IAAI,EAAE,WAAW,EACjB,IAAI,CAAC,EAAE,cAAc,GACpB,qBAAqB,CAevB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { StorageProvider } from "../storage/provider";
|
|
2
|
-
import { type DiagnosticEvent, type OpenTeamEvent, type RouteEvent } from "./events";
|
|
2
|
+
import { type DiagnosticEvent, type OpenTeamEvent, type QueueEvent, type RouteEvent } from "./events";
|
|
3
3
|
import type { CostRecord } from "./types";
|
|
4
4
|
/** Default directory for session logs that feed the console.
|
|
5
5
|
* Machine-local runtime output (P15b): lives under `.opencode/openteam-local/`. */
|
|
@@ -62,6 +62,12 @@ export declare function routeEventToCostRecord(event: RouteEvent): CostRecord;
|
|
|
62
62
|
export declare function readRouteCostRecords(dir: string, deps: ReadSessionEventsDeps): Promise<CostRecord[]>;
|
|
63
63
|
/** Reads plugin-safe diagnostic events from all session event logs. */
|
|
64
64
|
export declare function readDiagnosticEvents(dir: string, deps: ReadSessionEventsDeps): Promise<DiagnosticEvent[]>;
|
|
65
|
+
/**
|
|
66
|
+
* Reads the per-dispatch local-runtime queue metric events from all session
|
|
67
|
+
* event logs (#144). These feed the `openteam doctor` queue-wait summary so an
|
|
68
|
+
* operator can see contention that a post-load snapshot cannot reconstruct.
|
|
69
|
+
*/
|
|
70
|
+
export declare function readQueueEvents(dir: string, deps: ReadSessionEventsDeps): Promise<QueueEvent[]>;
|
|
65
71
|
export type ReadSessionEventsDeps = {
|
|
66
72
|
/** Persistence backend (lists with `list`, reads with `read`). */
|
|
67
73
|
storage: StorageProvider;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventLog.d.ts","sourceRoot":"","sources":["../../src/telemetry/eventLog.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EACL,KAAK,eAAe,EAEpB,KAAK,aAAa,EAElB,KAAK,UAAU,EAChB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C;mFACmF;AACnF,eAAO,MAAM,oBAAoB,sCAAsC,CAAC;AAExE,0EAA0E;AAC1E,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAE1C,mEAAmE;AACnE,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACtD,CAAC;AAEF,2DAA2D;AAC3D,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAGzD;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,kDAAkD;IAClD,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,SAAS,CAepE;AAED,wBAAgB,mBAAmB,IAAI,SAAS,CAE/C;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,6CAA6C;AAC7C,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,SAAS,qBAAqB,EAAE,CAAC;CACvD,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,sBAAsB,CA6BrE;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,sBAAsB,EAC9B,MAAM,EAAE,MAAM,GACb,IAAI,CAaN;AAED,qFAAqF;AACrF,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAwBrE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAsBpE;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,UAAU,EAAE,CAAC,CASvB;AAED,uEAAuE;AACvE,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,eAAe,EAAE,CAAC,CAI5B;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,kEAAkE;IAClE,OAAO,EAAE,eAAe,CAAC;IACzB,6DAA6D;IAC7D,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,aAAa,EAAE,CAAC,CAgC1B"}
|
|
1
|
+
{"version":3,"file":"eventLog.d.ts","sourceRoot":"","sources":["../../src/telemetry/eventLog.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EACL,KAAK,eAAe,EAEpB,KAAK,aAAa,EAElB,KAAK,UAAU,EACf,KAAK,UAAU,EAChB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C;mFACmF;AACnF,eAAO,MAAM,oBAAoB,sCAAsC,CAAC;AAExE,0EAA0E;AAC1E,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAE1C,mEAAmE;AACnE,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACtD,CAAC;AAEF,2DAA2D;AAC3D,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAGzD;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,kDAAkD;IAClD,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,SAAS,CAepE;AAED,wBAAgB,mBAAmB,IAAI,SAAS,CAE/C;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,6CAA6C;AAC7C,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,SAAS,qBAAqB,EAAE,CAAC;CACvD,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,sBAAsB,CA6BrE;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,sBAAsB,EAC9B,MAAM,EAAE,MAAM,GACb,IAAI,CAaN;AAED,qFAAqF;AACrF,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAwBrE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAsBpE;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,UAAU,EAAE,CAAC,CASvB;AAED,uEAAuE;AACvE,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,eAAe,EAAE,CAAC,CAI5B;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,UAAU,EAAE,CAAC,CAIvB;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,kEAAkE;IAClE,OAAO,EAAE,eAAe,CAAC;IACzB,6DAA6D;IAC7D,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,aAAa,EAAE,CAAC,CAgC1B"}
|