@oeronteros-1/opencode-orchestra 1.0.28 → 1.0.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +79 -1
- package/dashboard-dist/assets/index-DXFxvVhJ.css +1 -0
- package/dashboard-dist/assets/index-DlLCX2BY.js +132 -0
- package/dashboard-dist/index.html +2 -2
- package/dist/agents/integrator.js +1 -1
- package/dist/agents/integrator.js.map +1 -1
- package/dist/agents/lead.js +2 -13
- package/dist/agents/lead.js.map +1 -1
- package/dist/config/load.d.ts +5 -0
- package/dist/config/load.js +20 -5
- package/dist/config/load.js.map +1 -1
- package/dist/diagnostics/doctor.js +194 -0
- package/dist/diagnostics/doctor.js.map +1 -1
- package/dist/diagnostics/update.js +8 -7
- package/dist/diagnostics/update.js.map +1 -1
- package/dist/index.js +21 -3
- package/dist/index.js.map +1 -1
- package/dist/orchestration/ownership.d.ts +19 -0
- package/dist/orchestration/ownership.js +26 -0
- package/dist/orchestration/ownership.js.map +1 -1
- package/dist/routing/classifier.js +20 -2
- package/dist/routing/classifier.js.map +1 -1
- package/dist/routing/fallback.d.ts +19 -10
- package/dist/routing/fallback.js +89 -18
- package/dist/routing/fallback.js.map +1 -1
- package/dist/routing/model-resolver.d.ts +47 -0
- package/dist/routing/model-resolver.js +110 -2
- package/dist/routing/model-resolver.js.map +1 -1
- package/dist/spawn.d.ts +14 -1
- package/dist/spawn.js +58 -4
- package/dist/spawn.js.map +1 -1
- package/dist/telemetry/ledger.d.ts +49 -0
- package/dist/telemetry/ledger.js +157 -0
- package/dist/telemetry/ledger.js.map +1 -1
- package/dist/tools.js +71 -3
- package/dist/tools.js.map +1 -1
- package/package.json +4 -4
- package/dashboard-dist/assets/index-BTleCKc7.js +0 -124
- package/dashboard-dist/assets/index-igZBUoKO.css +0 -2
|
@@ -1,4 +1,38 @@
|
|
|
1
1
|
import { costAdjustment, getBudgetPolicy } from "./budget.js";
|
|
2
|
+
/** Maximum length of the `RoutingReason.text` diagnostic string. */
|
|
3
|
+
const REASON_TEXT_LIMIT = 200;
|
|
4
|
+
/**
|
|
5
|
+
* Bound a routing reason's diagnostic text to a fixed length. The text only
|
|
6
|
+
* carries model id, cost class, tier, and score — never secrets, prompts, or
|
|
7
|
+
* credentials — so a plain truncation is safe.
|
|
8
|
+
*/
|
|
9
|
+
export function boundReasonText(text, limit = REASON_TEXT_LIMIT) {
|
|
10
|
+
if (text.length <= limit)
|
|
11
|
+
return text;
|
|
12
|
+
return text.slice(0, limit - 1) + "…";
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The shared resolution parameters for the orch-lead agent. Both the tool
|
|
16
|
+
* layer (routing metadata) and `createLeadAgent` (the actually assigned model)
|
|
17
|
+
* resolve the lead pool through this exact request so the reported lead always
|
|
18
|
+
* matches the assigned one.
|
|
19
|
+
*/
|
|
20
|
+
export function leadResolveRequest(budget) {
|
|
21
|
+
return {
|
|
22
|
+
budget,
|
|
23
|
+
allowPaid: budget === "quality" || budget === "ebobo",
|
|
24
|
+
preferredCosts: budget === "balanced"
|
|
25
|
+
? ["subscription"]
|
|
26
|
+
: budget === "eco"
|
|
27
|
+
? ["free"]
|
|
28
|
+
: [],
|
|
29
|
+
preferredTiers: budget === "balanced"
|
|
30
|
+
? ["lead"]
|
|
31
|
+
: budget === "quality" || budget === "ebobo"
|
|
32
|
+
? ["frontier", "lead"]
|
|
33
|
+
: [],
|
|
34
|
+
};
|
|
35
|
+
}
|
|
2
36
|
export function normalizeCandidate(input) {
|
|
3
37
|
if (typeof input === "string") {
|
|
4
38
|
return {
|
|
@@ -22,6 +56,34 @@ export function normalizeCandidate(input) {
|
|
|
22
56
|
...(input.priceOutput !== undefined ? { priceOutput: input.priceOutput } : {}),
|
|
23
57
|
};
|
|
24
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* Shared capability scoring helpers. `resolveModel` uses these for scoring and
|
|
61
|
+
* `buildFallbackChain` uses them to filter and rank fallback alternatives.
|
|
62
|
+
*/
|
|
63
|
+
export function hasDeclaredCapability(candidate, capability) {
|
|
64
|
+
return candidate.capabilities.includes(capability);
|
|
65
|
+
}
|
|
66
|
+
export function hasExplicitScore(candidate, capability) {
|
|
67
|
+
return (candidate.scores[capability] ?? 0) > 0;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* A candidate is compatible when it either declares the capability or carries
|
|
71
|
+
* an explicit positive score for it.
|
|
72
|
+
*/
|
|
73
|
+
export function isCapabilityCompatible(candidate, capability) {
|
|
74
|
+
return hasDeclaredCapability(candidate, capability) || hasExplicitScore(candidate, capability);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* A candidate is explicitly incompatible when it declares *some* capabilities,
|
|
78
|
+
* does not declare the required one, and has no explicit score for it. Unknown
|
|
79
|
+
* candidates (empty capabilities) are NOT incompatible: they stay eligible but
|
|
80
|
+
* rank at lower confidence.
|
|
81
|
+
*/
|
|
82
|
+
export function isCapabilityIncompatible(candidate, capability) {
|
|
83
|
+
return candidate.capabilities.length > 0
|
|
84
|
+
&& !hasDeclaredCapability(candidate, capability)
|
|
85
|
+
&& !hasExplicitScore(candidate, capability);
|
|
86
|
+
}
|
|
25
87
|
const COST_ORDER = { paid: 2, subscription: 1, free: 0 };
|
|
26
88
|
function compareCodepoints(a, b) {
|
|
27
89
|
return a < b ? -1 : a > b ? 1 : 0;
|
|
@@ -42,7 +104,7 @@ export function resolveModel(request) {
|
|
|
42
104
|
.filter((candidate) => candidate.cost !== "paid" || request.maxPaidCalls === undefined || (request.paidCallsUsed ?? 0) < request.maxPaidCalls)
|
|
43
105
|
.map((candidate) => {
|
|
44
106
|
const explicit = candidate.scores[request.capability] ?? 0;
|
|
45
|
-
const declared = candidate
|
|
107
|
+
const declared = hasDeclaredCapability(candidate, request.capability) ? 18 : 0;
|
|
46
108
|
const contextBonus = candidate.context === "xlarge" ? 8 : candidate.context === "large" ? 4 : 0;
|
|
47
109
|
const frontierBonus = request.budget === "ebobo"
|
|
48
110
|
? candidate.tier === "frontier"
|
|
@@ -67,7 +129,17 @@ export function resolveModel(request) {
|
|
|
67
129
|
...(preferredTierBonus ? ["preferred-tier=" + preferredTierBonus] : []),
|
|
68
130
|
...(priceAdj !== 0 ? ["price=" + priceAdj] : []),
|
|
69
131
|
];
|
|
70
|
-
return {
|
|
132
|
+
return {
|
|
133
|
+
candidate,
|
|
134
|
+
score,
|
|
135
|
+
reason,
|
|
136
|
+
explicit,
|
|
137
|
+
declared,
|
|
138
|
+
frontierBonus,
|
|
139
|
+
preferredCostBonus,
|
|
140
|
+
preferredTierBonus,
|
|
141
|
+
priceAdj,
|
|
142
|
+
};
|
|
71
143
|
})
|
|
72
144
|
.sort((a, b) => b.score - a.score || compareCodepoints(a.candidate.id, b.candidate.id));
|
|
73
145
|
const winner = ranked[0];
|
|
@@ -77,6 +149,41 @@ export function resolveModel(request) {
|
|
|
77
149
|
.slice(1)
|
|
78
150
|
.sort((a, b) => COST_ORDER[a.candidate.cost] - COST_ORDER[b.candidate.cost] || a.score - b.score || compareCodepoints(a.candidate.id, b.candidate.id))
|
|
79
151
|
.map((item) => item.candidate.id);
|
|
152
|
+
const matchedCapabilities = winner.explicit || winner.declared ? [request.capability] : [];
|
|
153
|
+
// Deterministic reason code by dominant scoring signal, strongest first.
|
|
154
|
+
let code;
|
|
155
|
+
let component;
|
|
156
|
+
if (winner.frontierBonus > 0) {
|
|
157
|
+
code = "frontier";
|
|
158
|
+
component = "frontier=" + winner.frontierBonus;
|
|
159
|
+
}
|
|
160
|
+
else if (winner.preferredTierBonus > 0) {
|
|
161
|
+
code = "preferred_tier";
|
|
162
|
+
component = "tier=" + winner.candidate.tier;
|
|
163
|
+
}
|
|
164
|
+
else if (winner.preferredCostBonus > 0) {
|
|
165
|
+
code = "preferred_cost";
|
|
166
|
+
component = "cost=" + winner.candidate.cost;
|
|
167
|
+
}
|
|
168
|
+
else if (winner.explicit || winner.declared) {
|
|
169
|
+
code = "capability_match";
|
|
170
|
+
component = "capability=" + (winner.explicit ? "explicit" : "declared");
|
|
171
|
+
}
|
|
172
|
+
else if (winner.priceAdj !== 0) {
|
|
173
|
+
code = "price";
|
|
174
|
+
component = "price=" + winner.priceAdj;
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
code = "priority";
|
|
178
|
+
component = "priority=" + winner.candidate.priority;
|
|
179
|
+
}
|
|
180
|
+
const routingReason = {
|
|
181
|
+
code,
|
|
182
|
+
text: boundReasonText(`id=${winner.candidate.id} cost=${winner.candidate.cost} ${component} score=${winner.score}`),
|
|
183
|
+
matchedCapabilities,
|
|
184
|
+
score: winner.score,
|
|
185
|
+
budget: request.budget,
|
|
186
|
+
};
|
|
80
187
|
return {
|
|
81
188
|
id: winner.candidate.id,
|
|
82
189
|
score: winner.score,
|
|
@@ -85,6 +192,7 @@ export function resolveModel(request) {
|
|
|
85
192
|
...(winner.candidate.priceOutput !== undefined ? { priceOutput: winner.candidate.priceOutput } : {}),
|
|
86
193
|
reason: winner.reason,
|
|
87
194
|
fallback,
|
|
195
|
+
routingReason,
|
|
88
196
|
};
|
|
89
197
|
}
|
|
90
198
|
//# sourceMappingURL=model-resolver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-resolver.js","sourceRoot":"","sources":["../../src/routing/model-resolver.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"model-resolver.js","sourceRoot":"","sources":["../../src/routing/model-resolver.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAyB7D,oEAAoE;AACpE,MAAM,iBAAiB,GAAG,GAAG,CAAA;AAE7B;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,QAAgB,iBAAiB;IAC7E,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK;QAAE,OAAO,IAAI,CAAA;IACrC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;AACvC,CAAC;AA4BD;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAkB;IACnD,OAAO;QACL,MAAM;QACN,SAAS,EAAE,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,OAAO;QACrD,cAAc,EAAE,MAAM,KAAK,UAAU;YACnC,CAAC,CAAC,CAAC,cAAc,CAAC;YAClB,CAAC,CAAC,MAAM,KAAK,KAAK;gBAChB,CAAC,CAAC,CAAC,MAAM,CAAC;gBACV,CAAC,CAAC,EAAE;QACR,cAAc,EAAE,MAAM,KAAK,UAAU;YACnC,CAAC,CAAC,CAAC,MAAM,CAAC;YACV,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,OAAO;gBAC1C,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC;gBACtB,CAAC,CAAC,EAAE;KACT,CAAA;AACH,CAAC;AAkBD,MAAM,UAAU,kBAAkB,CAAC,KAA0B;IAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO;YACL,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,EAAE;YACZ,YAAY,EAAE,EAAE;YAChB,MAAM,EAAE,EAAE;SACX,CAAA;IACH,CAAC;IAED,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/E,CAAA;AACH,CAAC;AAED;;;GAGG;AAEH,MAAM,UAAU,qBAAqB,CAAC,SAAyB,EAAE,UAA0B;IACzF,OAAO,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;AACpD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,SAAyB,EAAE,UAA0B;IACpF,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;AAChD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,SAAyB,EAAE,UAA0B;IAC1F,OAAO,qBAAqB,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,gBAAgB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;AAChG,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,SAAyB,EAAE,UAA0B;IAC5F,OAAO,SAAS,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;WACnC,CAAC,qBAAqB,CAAC,SAAS,EAAE,UAAU,CAAC;WAC7C,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;AAC/C,CAAC;AAED,MAAM,UAAU,GAA8B,EAAE,IAAI,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA;AAEnF,SAAS,iBAAiB,CAAC,CAAS,EAAE,CAAS;IAC7C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACnC,CAAC;AAED,SAAS,eAAe,CAAC,SAAyB;IAChD,4EAA4E;IAC5E,2EAA2E;IAC3E,MAAM,KAAK,GAAG,CAAC,SAAS,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,IAAI,CAAC,CAAC,CAAA;IACxE,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,CAAC,CAAA;IACxB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;AAC/C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAA4B;IACvD,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI;SACxB,GAAG,CAAC,kBAAkB,CAAC;SACvB,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,CAAC;SACrE,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;SAC7I,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QACjB,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QAC1D,MAAM,QAAQ,GAAG,qBAAqB,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9E,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/F,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,KAAK,OAAO;YAC9C,CAAC,CAAC,SAAS,CAAC,IAAI,KAAK,UAAU;gBAC7B,CAAC,CAAC,GAAG;gBACL,CAAC,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM;oBACzB,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC,CAAA;QACL,MAAM,kBAAkB,GAAG,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAChF,MAAM,kBAAkB,GAAG,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAChF,MAAM,kBAAkB,GAAG,kBAAkB,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,kBAAkB,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACpG,MAAM,kBAAkB,GAAG,kBAAkB,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,kBAAkB,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACpG,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,CAAA;QAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,GAAG,QAAQ,GAAG,CAAC,GAAG,QAAQ,GAAG,YAAY,GAAG,aAAa;cACrF,kBAAkB,GAAG,kBAAkB,GAAG,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAA;QAC/F,MAAM,MAAM,GAAG;YACb,WAAW,GAAG,SAAS,CAAC,QAAQ;YAChC,aAAa,GAAG,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;YACrE,OAAO,GAAG,SAAS,CAAC,IAAI;YACxB,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,iBAAiB,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,iBAAiB,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACjD,CAAA;QACD,OAAO;YACL,SAAS;YACT,KAAK;YACL,MAAM;YACN,QAAQ;YACR,QAAQ;YACR,aAAa;YACb,kBAAkB;YAClB,kBAAkB;YAClB,QAAQ;SACT,CAAA;IACH,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAA;IAEzF,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;IACxB,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAA;IAE7B,MAAM,QAAQ,GAAG,MAAM;SACpB,KAAK,CAAC,CAAC,CAAC;SACR,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;SACrJ,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;IAEnC,MAAM,mBAAmB,GACvB,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAEhE,yEAAyE;IACzE,IAAI,IAAuB,CAAA;IAC3B,IAAI,SAAiB,CAAA;IACrB,IAAI,MAAM,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;QAC7B,IAAI,GAAG,UAAU,CAAA;QACjB,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC,aAAa,CAAA;IAChD,CAAC;SAAM,IAAI,MAAM,CAAC,kBAAkB,GAAG,CAAC,EAAE,CAAC;QACzC,IAAI,GAAG,gBAAgB,CAAA;QACvB,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAA;IAC7C,CAAC;SAAM,IAAI,MAAM,CAAC,kBAAkB,GAAG,CAAC,EAAE,CAAC;QACzC,IAAI,GAAG,gBAAgB,CAAA;QACvB,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAA;IAC7C,CAAC;SAAM,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC9C,IAAI,GAAG,kBAAkB,CAAA;QACzB,SAAS,GAAG,aAAa,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;IACzE,CAAC;SAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QACjC,IAAI,GAAG,OAAO,CAAA;QACd,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAA;IACxC,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,UAAU,CAAA;QACjB,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAA;IACrD,CAAC;IAED,MAAM,aAAa,GAAkB;QACnC,IAAI;QACJ,IAAI,EAAE,eAAe,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,SAAS,UAAU,MAAM,CAAC,KAAK,EAAE,CAAC;QACnH,mBAAmB;QACnB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAA;IAED,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE;QACvB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI;QAC3B,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpG,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,QAAQ;QACR,aAAa;KACd,CAAA;AACH,CAAC"}
|
package/dist/spawn.d.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { spawnSync } from "node:child_process";
|
|
2
2
|
export type SpawnSyncOptions = NonNullable<Parameters<typeof spawnSync>[2]>;
|
|
3
|
+
type SpawnSyncDependency = (command: string, args: string[], options: SpawnSyncOptions) => ReturnType<typeof spawnSync>;
|
|
4
|
+
export interface SpawnFallbackDependencies {
|
|
5
|
+
platform?: NodeJS.Platform;
|
|
6
|
+
spawnSync?: SpawnSyncDependency;
|
|
7
|
+
}
|
|
3
8
|
/**
|
|
4
9
|
* Quote a command line for cmd.exe: parts containing spaces or cmd
|
|
5
10
|
* metacharacters are wrapped in double quotes so paths with spaces and
|
|
@@ -16,10 +21,18 @@ export declare function safeForCmdRetry(parts: string[]): boolean;
|
|
|
16
21
|
* with EINVAL on CVE-2024-27980-patched Node). The retry is skipped for
|
|
17
22
|
* inputs cmd.exe could reinterpret — see {@link safeForCmdRetry} — and
|
|
18
23
|
* off-Windows the native result is always returned untouched.
|
|
24
|
+
*
|
|
25
|
+
* When a bare command name resolves to a `.cmd`/`.bat` shim ahead of any
|
|
26
|
+
* spawnable executable on Windows, the direct spawn is skipped entirely and
|
|
27
|
+
* the command runs through cmd.exe, mirroring cmd.exe's own resolution order.
|
|
28
|
+
* This keeps PATH-based shims authoritative even when a real `.exe` of the
|
|
29
|
+
* same name sits further down PATH (patched Node would otherwise bypass the
|
|
30
|
+
* shim and run the real tool).
|
|
19
31
|
*/
|
|
20
|
-
export declare function spawnWithCmdFallback(command: string, args: string[], options?: SpawnSyncOptions): ReturnType<typeof spawnSync>;
|
|
32
|
+
export declare function spawnWithCmdFallback(command: string, args: string[], options?: SpawnSyncOptions, deps?: SpawnFallbackDependencies): ReturnType<typeof spawnSync>;
|
|
21
33
|
/**
|
|
22
34
|
* User home for tool discovery. Windows tests override HOME to shadow the
|
|
23
35
|
* real per-user toolchain, so honor it before falling back to os.homedir().
|
|
24
36
|
*/
|
|
25
37
|
export declare function homeDirectory(): string;
|
|
38
|
+
export {};
|
package/dist/spawn.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { spawnSync } from "node:child_process";
|
|
2
|
+
import { statSync } from "node:fs";
|
|
2
3
|
import os from "node:os";
|
|
4
|
+
import path from "node:path";
|
|
3
5
|
/**
|
|
4
6
|
* Quote a command line for cmd.exe: parts containing spaces or cmd
|
|
5
7
|
* metacharacters are wrapped in double quotes so paths with spaces and
|
|
@@ -26,17 +28,69 @@ const UNSAFE_FOR_CMD_RETRY = /["%\r\n;,!]/;
|
|
|
26
28
|
export function safeForCmdRetry(parts) {
|
|
27
29
|
return !parts.some((part) => UNSAFE_FOR_CMD_RETRY.test(part));
|
|
28
30
|
}
|
|
31
|
+
/** cmd.exe's default executable search order within a directory. */
|
|
32
|
+
const DEFAULT_PATHEXT = [".COM", ".EXE", ".BAT", ".CMD"];
|
|
33
|
+
/**
|
|
34
|
+
* Mirror cmd.exe's PATH resolution for a bare command name: scan the current
|
|
35
|
+
* directory and then PATH in order, trying PATHEXT extensions within each
|
|
36
|
+
* directory, and return the first existing file. Patched Windows Node skips
|
|
37
|
+
* `.cmd`/`.bat` candidates when resolving direct spawns, so a `.cmd` shim in
|
|
38
|
+
* an earlier PATH entry would otherwise be silently shadowed by a real `.exe`
|
|
39
|
+
* further down PATH. Knowing which candidate wins lets us route `.cmd`/`.bat`
|
|
40
|
+
* wins through the cmd.exe retry deterministically.
|
|
41
|
+
*/
|
|
42
|
+
function resolveCommandCandidate(command, env, cwd) {
|
|
43
|
+
const pathext = (env.PATHEXT ?? DEFAULT_PATHEXT.join(";"))
|
|
44
|
+
.split(";")
|
|
45
|
+
.map((extension) => extension.trim())
|
|
46
|
+
.filter((extension) => extension.length > 0)
|
|
47
|
+
.map((extension) => (extension.startsWith(".") ? extension : "." + extension));
|
|
48
|
+
const directories = [cwd, ...(env.PATH ?? "").split(";").map((directory) => directory.replace(/^"|"$/g, ""))].filter((directory) => directory.length > 0);
|
|
49
|
+
for (const directory of directories) {
|
|
50
|
+
for (const extension of pathext) {
|
|
51
|
+
const candidate = path.join(directory, command + extension);
|
|
52
|
+
try {
|
|
53
|
+
if (statSync(candidate).isFile())
|
|
54
|
+
return candidate;
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
// Not a file; try the next extension.
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
29
63
|
/**
|
|
30
64
|
* Run a command natively, retrying through cmd.exe when Windows cannot
|
|
31
65
|
* spawn the target directly (`.cmd`/`.bat` shims and shell scripts fail
|
|
32
66
|
* with EINVAL on CVE-2024-27980-patched Node). The retry is skipped for
|
|
33
67
|
* inputs cmd.exe could reinterpret — see {@link safeForCmdRetry} — and
|
|
34
68
|
* off-Windows the native result is always returned untouched.
|
|
69
|
+
*
|
|
70
|
+
* When a bare command name resolves to a `.cmd`/`.bat` shim ahead of any
|
|
71
|
+
* spawnable executable on Windows, the direct spawn is skipped entirely and
|
|
72
|
+
* the command runs through cmd.exe, mirroring cmd.exe's own resolution order.
|
|
73
|
+
* This keeps PATH-based shims authoritative even when a real `.exe` of the
|
|
74
|
+
* same name sits further down PATH (patched Node would otherwise bypass the
|
|
75
|
+
* shim and run the real tool).
|
|
35
76
|
*/
|
|
36
|
-
export function spawnWithCmdFallback(command, args, options = {}) {
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
77
|
+
export function spawnWithCmdFallback(command, args, options = {}, deps = {}) {
|
|
78
|
+
const runSpawn = deps.spawnSync || spawnSync;
|
|
79
|
+
const platform = deps.platform || process.platform;
|
|
80
|
+
const isBareName = !command.includes("\\") && !command.includes("/") && path.extname(command).length === 0;
|
|
81
|
+
if (platform === "win32" && isBareName && safeForCmdRetry([command, ...args])) {
|
|
82
|
+
const env = options.env ?? process.env;
|
|
83
|
+
const cwd = typeof options.cwd === "string" ? options.cwd : process.cwd();
|
|
84
|
+
const candidate = resolveCommandCandidate(command, env, cwd);
|
|
85
|
+
if (candidate !== undefined && /\.(cmd|bat)$/i.test(candidate)) {
|
|
86
|
+
const viaCmd = runSpawn(quoteLineForCmd([command, ...args]), [], { ...options, shell: true });
|
|
87
|
+
if (viaCmd.error === undefined)
|
|
88
|
+
return viaCmd;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
const direct = runSpawn(command, args, options);
|
|
92
|
+
if (platform === "win32" && direct.error !== undefined && safeForCmdRetry([command, ...args])) {
|
|
93
|
+
const retry = runSpawn(quoteLineForCmd([command, ...args]), [], { ...options, shell: true });
|
|
40
94
|
if (retry.error === undefined)
|
|
41
95
|
return retry;
|
|
42
96
|
}
|
package/dist/spawn.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawn.js","sourceRoot":"","sources":["../src/spawn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"spawn.js","sourceRoot":"","sources":["../src/spawn.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ModelCandidateInput, ProfileName } from "../config/schema.js";
|
|
2
|
+
import { type ErrorKind } from "../routing/fallback.js";
|
|
2
3
|
import type { PricingStatus } from "../pricing/cost.js";
|
|
3
4
|
export interface TokenUsage {
|
|
4
5
|
input: number;
|
|
@@ -24,6 +25,20 @@ export interface MessageUsage {
|
|
|
24
25
|
prompt?: string;
|
|
25
26
|
reply?: string;
|
|
26
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* A sanitized, bounded record of an observed attempt: the model that ran, the
|
|
30
|
+
* policy error class (never the raw error text), the next model when a retry
|
|
31
|
+
* was observed, and the outcome. Events are capped and never store credentials,
|
|
32
|
+
* prompts, or provider response bodies.
|
|
33
|
+
*/
|
|
34
|
+
export interface ReliabilityEvent {
|
|
35
|
+
attempt: number;
|
|
36
|
+
model?: string;
|
|
37
|
+
errorKind?: ErrorKind;
|
|
38
|
+
outcome: "failed" | "retried" | "succeeded";
|
|
39
|
+
nextModel?: string;
|
|
40
|
+
at: number;
|
|
41
|
+
}
|
|
27
42
|
export interface SessionLedger {
|
|
28
43
|
profile?: ProfileName;
|
|
29
44
|
agents: Record<string, number>;
|
|
@@ -37,6 +52,7 @@ export interface SessionLedger {
|
|
|
37
52
|
consensusUncertainty?: number;
|
|
38
53
|
consensusNotes?: string;
|
|
39
54
|
messages: Record<string, MessageUsage>;
|
|
55
|
+
reliability?: ReliabilityEvent[];
|
|
40
56
|
}
|
|
41
57
|
export interface LedgerState {
|
|
42
58
|
version: 2;
|
|
@@ -57,6 +73,13 @@ interface AssistantInfo {
|
|
|
57
73
|
};
|
|
58
74
|
tokens?: TokenUsage;
|
|
59
75
|
finish?: string;
|
|
76
|
+
error?: {
|
|
77
|
+
message?: string;
|
|
78
|
+
status?: number;
|
|
79
|
+
statusCode?: number;
|
|
80
|
+
/** OpenCode SDK nests provider error details under `data` (name + data). */
|
|
81
|
+
data?: unknown;
|
|
82
|
+
};
|
|
60
83
|
}
|
|
61
84
|
export declare function emptyLedgerState(): LedgerState;
|
|
62
85
|
export declare function readLedgerState(file: string): Promise<LedgerState>;
|
|
@@ -68,6 +91,13 @@ export declare class Ledger {
|
|
|
68
91
|
private readonly pricingStatusOf;
|
|
69
92
|
private state?;
|
|
70
93
|
private queue;
|
|
94
|
+
/**
|
|
95
|
+
* In-memory per-session pending retryable failure: session id -> attempt
|
|
96
|
+
* number that failed. Cleared when the next assistant attempt in that session
|
|
97
|
+
* is observed. Terminal kinds (auth/invalid-request/other) never populate it,
|
|
98
|
+
* so no retry transition is fabricated for them.
|
|
99
|
+
*/
|
|
100
|
+
private readonly pendingFailure;
|
|
71
101
|
constructor(directory: string, telemetryDirectory: string, enabled: boolean, pools: ModelCandidateInput[][], storeTexts?: boolean, pricingStatusOf?: (providerID: string | undefined, modelID: string | undefined) => PricingStatus | undefined);
|
|
72
102
|
private load;
|
|
73
103
|
private save;
|
|
@@ -78,6 +108,25 @@ export declare class Ledger {
|
|
|
78
108
|
notes?: string;
|
|
79
109
|
}): Promise<void>;
|
|
80
110
|
recordAssistant(info: AssistantInfo): Promise<void>;
|
|
111
|
+
/**
|
|
112
|
+
* Append a normalized reliability event to a session, keeping only the most
|
|
113
|
+
* recent `RELIABILITY_EVENT_CAP` entries. Unrecognizable events are dropped.
|
|
114
|
+
*/
|
|
115
|
+
private appendReliabilityEvent;
|
|
116
|
+
/**
|
|
117
|
+
* Observe a genuinely new assistant attempt. A retryable failure that was
|
|
118
|
+
* pending from the previous attempt produces a "retried" transition; then the
|
|
119
|
+
* attempt's own failure (if any) produces a "failed" event and, when
|
|
120
|
+
* retryable, arms the next transition. Successful attempts with no pending
|
|
121
|
+
* failure produce no event.
|
|
122
|
+
*/
|
|
123
|
+
private observeReliabilityAttempt;
|
|
124
|
+
/**
|
|
125
|
+
* Additive reliability event recording. No-op when the ledger is disabled.
|
|
126
|
+
* The event is sanitized (bounded fields, closed error-kind enum, no raw
|
|
127
|
+
* error text) and the session's event list is capped.
|
|
128
|
+
*/
|
|
129
|
+
recordReliabilityEvent(sessionID: string, event: ReliabilityEvent): Promise<void>;
|
|
81
130
|
/**
|
|
82
131
|
* Opt-in debug text. No-op unless the ledger was constructed with
|
|
83
132
|
* `storeTexts`, so prompts and replies are never persisted by default.
|
package/dist/telemetry/ledger.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { mkdir, readFile, rename, writeFile } from "node:fs/promises";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { normalizeCandidate } from "../routing/model-resolver.js";
|
|
4
|
+
import { classifyError, isRetryable } from "../routing/fallback.js";
|
|
4
5
|
function emptySession() {
|
|
5
6
|
return {
|
|
6
7
|
agents: {},
|
|
@@ -26,6 +27,92 @@ function normalizeTokens(tokens) {
|
|
|
26
27
|
},
|
|
27
28
|
};
|
|
28
29
|
}
|
|
30
|
+
const RELIABILITY_EVENT_CAP = 100;
|
|
31
|
+
const RELIABILITY_FIELD_CAP = 200;
|
|
32
|
+
const ERROR_KINDS = new Set(["rate-limit", "server", "timeout", "auth", "invalid-request", "other"]);
|
|
33
|
+
const RELIABILITY_OUTCOMES = new Set(["failed", "retried", "succeeded"]);
|
|
34
|
+
function boundedString(value) {
|
|
35
|
+
if (typeof value !== "string")
|
|
36
|
+
return undefined;
|
|
37
|
+
const trimmed = value.trim();
|
|
38
|
+
return trimmed.length > 0 ? trimmed.slice(0, RELIABILITY_FIELD_CAP) : undefined;
|
|
39
|
+
}
|
|
40
|
+
function isReliabilityOutcome(value) {
|
|
41
|
+
return RELIABILITY_OUTCOMES.has(value);
|
|
42
|
+
}
|
|
43
|
+
function isPositiveFiniteNumber(value) {
|
|
44
|
+
return typeof value === "number" && Number.isFinite(value) && value > 0;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Normalize a reliability event into its exact persisted shape, or return
|
|
48
|
+
* undefined when the record is unrecognizable (missing/invalid outcome,
|
|
49
|
+
* attempt, or timestamp). Unrecognizable records are dropped rather than
|
|
50
|
+
* coerced into plausible events, so corrupted persisted state never fabricates
|
|
51
|
+
* a "failed" attempt. Unknown error kinds and non-string model/nextModel are
|
|
52
|
+
* omitted; strings are bounded; raw error text is never stored.
|
|
53
|
+
*/
|
|
54
|
+
function normalizeReliabilityEvent(value) {
|
|
55
|
+
if (typeof value !== "object" || value === null)
|
|
56
|
+
return undefined;
|
|
57
|
+
const event = value;
|
|
58
|
+
if (!isReliabilityOutcome(event.outcome))
|
|
59
|
+
return undefined;
|
|
60
|
+
if (!isPositiveFiniteNumber(event.attempt))
|
|
61
|
+
return undefined;
|
|
62
|
+
if (typeof event.at !== "number" || !Number.isFinite(event.at))
|
|
63
|
+
return undefined;
|
|
64
|
+
const model = boundedString(event.model);
|
|
65
|
+
const nextModel = boundedString(event.nextModel);
|
|
66
|
+
const errorKind = event.errorKind !== undefined && ERROR_KINDS.has(event.errorKind) ? event.errorKind : undefined;
|
|
67
|
+
return {
|
|
68
|
+
attempt: Math.floor(event.attempt),
|
|
69
|
+
...(model !== undefined ? { model } : {}),
|
|
70
|
+
...(errorKind !== undefined ? { errorKind } : {}),
|
|
71
|
+
outcome: event.outcome,
|
|
72
|
+
...(nextModel !== undefined ? { nextModel } : {}),
|
|
73
|
+
at: event.at,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
function normalizeReliability(value) {
|
|
77
|
+
if (!Array.isArray(value))
|
|
78
|
+
return [];
|
|
79
|
+
const events = [];
|
|
80
|
+
for (const item of value) {
|
|
81
|
+
const normalized = normalizeReliabilityEvent(item);
|
|
82
|
+
if (normalized !== undefined)
|
|
83
|
+
events.push(normalized);
|
|
84
|
+
}
|
|
85
|
+
return events.slice(-RELIABILITY_EVENT_CAP);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Derive a policy error class from an assistant message. A provider error is
|
|
89
|
+
* classified directly; a bare `finish: "error"` with no error detail falls back
|
|
90
|
+
* to the "other" (terminal) class because no retryable signal is known.
|
|
91
|
+
*/
|
|
92
|
+
function classifyFailure(info) {
|
|
93
|
+
if (info.error != null)
|
|
94
|
+
return classifyError(toFlatError(info.error)).kind;
|
|
95
|
+
if (info.finish === "error")
|
|
96
|
+
return classifyError({ message: info.finish }).kind;
|
|
97
|
+
return undefined;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Normalize an assistant error into the flat `{ message, status, statusCode }`
|
|
101
|
+
* shape that `classifyError` consumes. The OpenCode SDK wraps provider errors
|
|
102
|
+
* as `{ name, data: { message, statusCode } }`, so top-level fields win and any
|
|
103
|
+
* nested `data` fields are promoted when the top level is absent.
|
|
104
|
+
*/
|
|
105
|
+
function toFlatError(error) {
|
|
106
|
+
const nested = (typeof error.data === "object" && error.data !== null ? error.data : {});
|
|
107
|
+
const message = error.message ?? (typeof nested.message === "string" ? nested.message : undefined);
|
|
108
|
+
const status = error.status ?? (typeof nested.status === "number" ? nested.status : undefined);
|
|
109
|
+
const statusCode = error.statusCode ?? (typeof nested.statusCode === "number" ? nested.statusCode : undefined);
|
|
110
|
+
return {
|
|
111
|
+
...(message !== undefined ? { message } : {}),
|
|
112
|
+
...(status !== undefined ? { status } : {}),
|
|
113
|
+
...(statusCode !== undefined ? { statusCode } : {}),
|
|
114
|
+
};
|
|
115
|
+
}
|
|
29
116
|
function upgradeState(input) {
|
|
30
117
|
if (typeof input !== "object" || input === null)
|
|
31
118
|
return emptyLedgerState();
|
|
@@ -41,6 +128,9 @@ function upgradeState(input) {
|
|
|
41
128
|
session.freeWorkerCalls ??= 0;
|
|
42
129
|
session.unknownPriceCalls ??= 0;
|
|
43
130
|
session.paidCallsUsed ??= 0;
|
|
131
|
+
if (session.reliability !== undefined) {
|
|
132
|
+
session.reliability = normalizeReliability(session.reliability);
|
|
133
|
+
}
|
|
44
134
|
for (const [id, message] of Object.entries(session.messages)) {
|
|
45
135
|
session.messages[id] = {
|
|
46
136
|
...message,
|
|
@@ -71,6 +161,13 @@ export class Ledger {
|
|
|
71
161
|
pricingStatusOf;
|
|
72
162
|
state;
|
|
73
163
|
queue = Promise.resolve();
|
|
164
|
+
/**
|
|
165
|
+
* In-memory per-session pending retryable failure: session id -> attempt
|
|
166
|
+
* number that failed. Cleared when the next assistant attempt in that session
|
|
167
|
+
* is observed. Terminal kinds (auth/invalid-request/other) never populate it,
|
|
168
|
+
* so no retry transition is fabricated for them.
|
|
169
|
+
*/
|
|
170
|
+
pendingFailure = new Map();
|
|
74
171
|
constructor(directory, telemetryDirectory, enabled, pools, storeTexts = false, pricingStatusOf) {
|
|
75
172
|
this.enabled = enabled;
|
|
76
173
|
this.storeTexts = storeTexts;
|
|
@@ -159,6 +256,7 @@ export class Ledger {
|
|
|
159
256
|
&& (declared === "free" || (declared === undefined && pricingStatus === "free"))) {
|
|
160
257
|
session.freeWorkerCalls += 1;
|
|
161
258
|
}
|
|
259
|
+
this.observeReliabilityAttempt(session, info.sessionID, model, info);
|
|
162
260
|
}
|
|
163
261
|
session.messages[info.id] = {
|
|
164
262
|
cost: currentCost,
|
|
@@ -175,6 +273,65 @@ export class Ledger {
|
|
|
175
273
|
};
|
|
176
274
|
});
|
|
177
275
|
}
|
|
276
|
+
/**
|
|
277
|
+
* Append a normalized reliability event to a session, keeping only the most
|
|
278
|
+
* recent `RELIABILITY_EVENT_CAP` entries. Unrecognizable events are dropped.
|
|
279
|
+
*/
|
|
280
|
+
appendReliabilityEvent(session, event) {
|
|
281
|
+
const normalized = normalizeReliabilityEvent(event);
|
|
282
|
+
if (normalized === undefined)
|
|
283
|
+
return;
|
|
284
|
+
const events = (session.reliability ??= []);
|
|
285
|
+
events.push(normalized);
|
|
286
|
+
if (events.length > RELIABILITY_EVENT_CAP) {
|
|
287
|
+
session.reliability = events.slice(-RELIABILITY_EVENT_CAP);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Observe a genuinely new assistant attempt. A retryable failure that was
|
|
292
|
+
* pending from the previous attempt produces a "retried" transition; then the
|
|
293
|
+
* attempt's own failure (if any) produces a "failed" event and, when
|
|
294
|
+
* retryable, arms the next transition. Successful attempts with no pending
|
|
295
|
+
* failure produce no event.
|
|
296
|
+
*/
|
|
297
|
+
observeReliabilityAttempt(session, sessionID, model, info) {
|
|
298
|
+
const pendingAttempt = this.pendingFailure.get(sessionID);
|
|
299
|
+
const attempt = pendingAttempt !== undefined ? pendingAttempt + 1 : 1;
|
|
300
|
+
if (pendingAttempt !== undefined) {
|
|
301
|
+
this.appendReliabilityEvent(session, {
|
|
302
|
+
attempt,
|
|
303
|
+
...(model !== undefined ? { model } : {}),
|
|
304
|
+
outcome: "retried",
|
|
305
|
+
...(model !== undefined ? { nextModel: model } : {}),
|
|
306
|
+
at: Date.now(),
|
|
307
|
+
});
|
|
308
|
+
this.pendingFailure.delete(sessionID);
|
|
309
|
+
}
|
|
310
|
+
const kind = classifyFailure(info);
|
|
311
|
+
if (kind === undefined)
|
|
312
|
+
return;
|
|
313
|
+
this.appendReliabilityEvent(session, {
|
|
314
|
+
attempt,
|
|
315
|
+
...(model !== undefined ? { model } : {}),
|
|
316
|
+
errorKind: kind,
|
|
317
|
+
outcome: "failed",
|
|
318
|
+
at: Date.now(),
|
|
319
|
+
});
|
|
320
|
+
if (isRetryable(kind)) {
|
|
321
|
+
this.pendingFailure.set(sessionID, attempt);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Additive reliability event recording. No-op when the ledger is disabled.
|
|
326
|
+
* The event is sanitized (bounded fields, closed error-kind enum, no raw
|
|
327
|
+
* error text) and the session's event list is capped.
|
|
328
|
+
*/
|
|
329
|
+
async recordReliabilityEvent(sessionID, event) {
|
|
330
|
+
await this.mutate((state) => {
|
|
331
|
+
const session = (state.sessions[sessionID] ??= emptySession());
|
|
332
|
+
this.appendReliabilityEvent(session, event);
|
|
333
|
+
});
|
|
334
|
+
}
|
|
178
335
|
/**
|
|
179
336
|
* Opt-in debug text. No-op unless the ledger was constructed with
|
|
180
337
|
* `storeTexts`, so prompts and replies are never persisted by default.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../src/telemetry/ledger.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../src/telemetry/ledger.ts"],"names":[],"mappings":"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"}
|