@flowdesk/opencode-plugin 0.1.14 → 0.1.16

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.
Files changed (63) hide show
  1. package/README.md +6 -6
  2. package/dist/agent-task-output.d.ts +12 -0
  3. package/dist/agent-task-output.d.ts.map +1 -1
  4. package/dist/agent-task-output.js +110 -4
  5. package/dist/agent-task-output.js.map +1 -1
  6. package/dist/agent-task-runner.d.ts +12 -1
  7. package/dist/agent-task-runner.d.ts.map +1 -1
  8. package/dist/agent-task-runner.js +237 -16
  9. package/dist/agent-task-runner.js.map +1 -1
  10. package/dist/completion-ui-cache.d.ts.map +1 -1
  11. package/dist/completion-ui-cache.js +159 -29
  12. package/dist/completion-ui-cache.js.map +1 -1
  13. package/dist/event-hook-observer.d.ts.map +1 -1
  14. package/dist/event-hook-observer.js +66 -2
  15. package/dist/event-hook-observer.js.map +1 -1
  16. package/dist/index.d.ts +2 -18
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +2 -17
  19. package/dist/index.js.map +1 -1
  20. package/dist/managed-dispatch-adapter.d.ts +62 -0
  21. package/dist/managed-dispatch-adapter.d.ts.map +1 -1
  22. package/dist/managed-dispatch-adapter.js +465 -1
  23. package/dist/managed-dispatch-adapter.js.map +1 -1
  24. package/dist/metadata.d.ts +19 -0
  25. package/dist/metadata.d.ts.map +1 -0
  26. package/dist/metadata.js +18 -0
  27. package/dist/metadata.js.map +1 -0
  28. package/dist/model-selection-engine.d.ts +15 -2
  29. package/dist/model-selection-engine.d.ts.map +1 -1
  30. package/dist/model-selection-engine.js +109 -42
  31. package/dist/model-selection-engine.js.map +1 -1
  32. package/dist/provider-usage-live-tool.d.ts.map +1 -1
  33. package/dist/provider-usage-live-tool.js +135 -33
  34. package/dist/provider-usage-live-tool.js.map +1 -1
  35. package/dist/server.d.ts +1 -0
  36. package/dist/server.d.ts.map +1 -1
  37. package/dist/server.js +53 -4
  38. package/dist/server.js.map +1 -1
  39. package/dist/stall-recovery.d.ts +4 -3
  40. package/dist/stall-recovery.d.ts.map +1 -1
  41. package/dist/stall-recovery.js +245 -25
  42. package/dist/stall-recovery.js.map +1 -1
  43. package/dist/status-live-tool.d.ts.map +1 -1
  44. package/dist/status-live-tool.js +1 -0
  45. package/dist/status-live-tool.js.map +1 -1
  46. package/dist/tui-subtask-activity.d.ts +4 -0
  47. package/dist/tui-subtask-activity.d.ts.map +1 -1
  48. package/dist/tui-subtask-activity.js +29 -24
  49. package/dist/tui-subtask-activity.js.map +1 -1
  50. package/dist/tui-usage-snapshot.d.ts.map +1 -1
  51. package/dist/tui-usage-snapshot.js +92 -6
  52. package/dist/tui-usage-snapshot.js.map +1 -1
  53. package/dist/tui.d.ts.map +1 -1
  54. package/dist/tui.js +43 -16
  55. package/dist/tui.js.map +1 -1
  56. package/dist/workflow-assign-tool.d.ts.map +1 -1
  57. package/dist/workflow-assign-tool.js +21 -3
  58. package/dist/workflow-assign-tool.js.map +1 -1
  59. package/dist/workflow-dispatch-tool.d.ts +12 -0
  60. package/dist/workflow-dispatch-tool.d.ts.map +1 -1
  61. package/dist/workflow-dispatch-tool.js +24 -26
  62. package/dist/workflow-dispatch-tool.js.map +1 -1
  63. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"model-selection-engine.d.ts","sourceRoot":"","sources":["../src/model-selection-engine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,gBAAgB,CAAC;AAE1E,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAErD,MAAM,WAAW,cAAc;IAC9B,wBAAwB,EAAE,MAAM,CAAC;IACjC,cAAc,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,SAAS,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IAClC,cAAc,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC/C,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,UAAU,EAAE,IAAI,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC;CAC9E;AAED,MAAM,WAAW,oBAAoB;IACpC,SAAS,EAAE,cAAc,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CAClB;AAsED;;;;GAIG;AACH,wBAAgB,kBAAkB,CACjC,IAAI,EAAE,mCAAmC,EACzC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAC9C,GAAG,CAAC,EAAE,MAAM,IAAI,GACd,oBAAoB,GAAG,SAAS,CA2BlC;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACzC,SAAS,EAAE,aAAa,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,SAAS;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;QAChC,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB,EAAE,CAAC;CACJ,CAAC,GACA,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAwBjC"}
1
+ {"version":3,"file":"model-selection-engine.d.ts","sourceRoot":"","sources":["../src/model-selection-engine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,gBAAgB,CAAC;AAE1E,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAErD,MAAM,WAAW,cAAc;IAC9B,wBAAwB,EAAE,MAAM,CAAC;IACjC,cAAc,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,SAAS,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IAClC,cAAc,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC/C,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,UAAU,EAAE,IAAI,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;IAC1C,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACpC,SAAS,EAAE,cAAc,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,0BAA0B;IAC1C,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAkHD;;;;GAIG;AACH,wBAAgB,kBAAkB,CACjC,IAAI,EAAE,mCAAmC,EACzC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAC9C,gBAAgB,GAAE,0BAA+B,EACjD,GAAG,CAAC,EAAE,MAAM,IAAI,GACd,oBAAoB,GAAG,SAAS,CAiClC;AAMD;;GAEG;AACH,wBAAgB,0BAA0B,CACzC,SAAS,EAAE,aAAa,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,SAAS;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;QAChC,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC3B,EAAE,CAAC;CACJ,CAAC,EACH,GAAG,CAAC,EAAE,MAAM,IAAI,GACd,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAgCjC"}
@@ -43,34 +43,81 @@ const ROLE_TIER_MAP = {
43
43
  // ---------------------------------------------------------------------------
44
44
  // Usage weight calculation
45
45
  // ---------------------------------------------------------------------------
46
- function usageWeight(usage) {
47
- if (!usage)
48
- return 0.2; // unknown provider low weight
49
- if (usage.alertLevel === "exhausted")
50
- return 0;
51
- if (usage.alertLevel === "critical")
52
- return 0.05;
53
- const pct = usage.remainingPercent;
54
- if (pct === null)
55
- return 0.1;
56
- if (pct > 50)
57
- return 1.0;
58
- if (pct > 30)
59
- return 0.7;
60
- if (pct > 10)
61
- return 0.3;
62
- return 0.05;
46
+ const RESET_WINDOW_MS = {
47
+ rolling_5h: 5 * 60 * 60 * 1000,
48
+ daily: 24 * 60 * 60 * 1000,
49
+ weekly: 7 * 24 * 60 * 60 * 1000,
50
+ };
51
+ const RESET_WINDOW_TOLERANCE_MS = 5 * 60 * 1000;
52
+ const CLOCK_SKEW_TOLERANCE_MS = 60 * 1000;
53
+ const HARD_VETO_REMAINING_FRACTION = 0.05;
54
+ const ALERT_RANK = {
55
+ ok: 0,
56
+ warning: 1,
57
+ critical: 2,
58
+ exhausted: 3,
59
+ stale: 4,
60
+ unknown: 5,
61
+ };
62
+ function windowDurationMs(resetBucket) {
63
+ const normalized = resetBucket?.toLowerCase().replace(/^[0-9]+(?:\.[0-9]+)?%\s+/, "") ?? "";
64
+ if (normalized.includes("5h"))
65
+ return RESET_WINDOW_MS.rolling_5h;
66
+ if (normalized.includes("daily") || normalized.includes("day"))
67
+ return RESET_WINDOW_MS.daily;
68
+ if (normalized.includes("weekly") || normalized.includes("1w") || normalized.includes("7d"))
69
+ return RESET_WINDOW_MS.weekly;
70
+ return undefined;
71
+ }
72
+ function resetTimeRemainingMs(usage, nowMs) {
73
+ if (typeof usage.secondsUntilReset === "number" && Number.isFinite(usage.secondsUntilReset)) {
74
+ return usage.secondsUntilReset * 1000;
75
+ }
76
+ if (usage.resetTime === undefined)
77
+ return undefined;
78
+ const parsed = Date.parse(usage.resetTime);
79
+ return Number.isFinite(parsed) ? parsed - nowMs : undefined;
80
+ }
81
+ function quotaHealthScore(usage, nowMs) {
82
+ if (usage === undefined)
83
+ return undefined;
84
+ if (usage.freshness !== undefined && usage.freshness !== "fresh")
85
+ return undefined;
86
+ if (usage.alertLevel === "exhausted" || usage.alertLevel === "stale" || usage.alertLevel === "unknown")
87
+ return undefined;
88
+ if (usage.remainingPercent === null || !Number.isFinite(usage.remainingPercent))
89
+ return undefined;
90
+ if (usage.remainingPercent < 0 || usage.remainingPercent > 100)
91
+ return undefined;
92
+ const durationMs = windowDurationMs(usage.resetBucket);
93
+ if (durationMs === undefined || durationMs <= 0)
94
+ return undefined;
95
+ const remainingMs = resetTimeRemainingMs(usage, nowMs);
96
+ if (remainingMs === undefined || !Number.isFinite(remainingMs))
97
+ return undefined;
98
+ if (remainingMs < -CLOCK_SKEW_TOLERANCE_MS)
99
+ return undefined;
100
+ if (remainingMs > durationMs + RESET_WINDOW_TOLERANCE_MS)
101
+ return undefined;
102
+ const quotaFraction = Math.max(0, Math.min(1, usage.remainingPercent / 100));
103
+ if (quotaFraction <= HARD_VETO_REMAINING_FRACTION)
104
+ return undefined;
105
+ const timeRemainingFraction = Math.max(0, Math.min(1, remainingMs / durationMs));
106
+ return quotaFraction - timeRemainingFraction;
63
107
  }
64
- function usageNote(usage) {
108
+ function usageNote(usage, nowMs = Date.now()) {
65
109
  if (!usage)
66
110
  return "usage unknown";
111
+ const qhs = quotaHealthScore(usage, nowMs);
112
+ if (qhs === undefined)
113
+ return `${usage.alertLevel} – excluded`;
67
114
  if (usage.alertLevel === "exhausted")
68
115
  return "exhausted – excluded";
69
116
  if (usage.alertLevel === "critical")
70
117
  return `critical (${usage.remainingPercent ?? "?"}% left)`;
71
118
  if (usage.alertLevel === "warning")
72
119
  return `warning (${usage.remainingPercent ?? "?"}% left)`;
73
- return `ok (${usage.remainingPercent ?? "?"}% left)`;
120
+ return `ok (${usage.remainingPercent ?? "?"}% left, quota ${qhs >= 0 ? "ahead" : "behind"})`;
74
121
  }
75
122
  // ---------------------------------------------------------------------------
76
123
  // Public API
@@ -80,40 +127,53 @@ function usageNote(usage) {
80
127
  * Uses weighted random selection so lower-usage providers are preferred
81
128
  * without completely blocking higher-usage ones.
82
129
  */
83
- export function selectModelForTask(role, usageByFamily, now) {
84
- void now; // reserved for future TTL checks
130
+ export function selectModelForTask(role, usageByFamily, selectionContext = {}, now) {
131
+ const nowMs = (now ? now() : new Date()).getTime();
85
132
  const mapping = ROLE_TIER_MAP[role];
86
133
  if (!mapping)
87
134
  return undefined;
135
+ const allowedModelIds = selectionContext.availableModelIds === undefined ? undefined : new Set(selectionContext.availableModelIds);
88
136
  // Deduplicate by providerQualifiedModelId and compute weights
89
137
  const seen = new Set();
90
138
  const weighted = [];
91
139
  for (const candidate of mapping.candidates) {
140
+ if (allowedModelIds !== undefined && !allowedModelIds.has(candidate.providerQualifiedModelId))
141
+ continue;
92
142
  if (seen.has(candidate.providerQualifiedModelId))
93
143
  continue;
94
144
  seen.add(candidate.providerQualifiedModelId);
95
145
  const usage = usageByFamily.get(candidate.usageKey ?? candidate.providerFamily) ?? usageByFamily.get(candidate.providerFamily);
96
- const weight = usageWeight(usage);
146
+ const qhs = quotaHealthScore(usage, nowMs);
147
+ const weight = qhs === undefined ? 0 : Math.max(0.01, qhs + 1);
97
148
  if (weight <= 0)
98
149
  continue; // exhausted – skip entirely
99
- weighted.push({ candidate, weight, usageNote: usageNote(usage) });
150
+ weighted.push({ candidate, weight, usageNote: usageNote(usage, nowMs) });
100
151
  }
101
152
  if (weighted.length === 0)
102
153
  return undefined;
103
- // Weighted random pick
104
- const total = weighted.reduce((sum, r) => sum + r.weight, 0);
105
- let rand = Math.random() * total;
106
- for (const r of weighted) {
107
- rand -= r.weight;
108
- if (rand <= 0)
109
- return r;
110
- }
111
- return weighted[weighted.length - 1];
154
+ return weighted.sort((a, b) => {
155
+ const aUsage = usageByFamily.get(a.candidate.usageKey ?? a.candidate.providerFamily) ?? usageByFamily.get(a.candidate.providerFamily);
156
+ const bUsage = usageByFamily.get(b.candidate.usageKey ?? b.candidate.providerFamily) ?? usageByFamily.get(b.candidate.providerFamily);
157
+ const byAlert = ALERT_RANK[aUsage?.alertLevel ?? "unknown"] - ALERT_RANK[bUsage?.alertLevel ?? "unknown"];
158
+ if (byAlert !== 0)
159
+ return byAlert;
160
+ const byWeight = b.weight - a.weight;
161
+ if (byWeight !== 0)
162
+ return byWeight;
163
+ const byTier = tierRank(a.candidate.tier) - tierRank(b.candidate.tier);
164
+ if (byTier !== 0)
165
+ return byTier;
166
+ return a.candidate.providerQualifiedModelId.localeCompare(b.candidate.providerQualifiedModelId);
167
+ })[0];
168
+ }
169
+ function tierRank(tier) {
170
+ return tier === "heavy" ? 0 : tier === "medium" ? 1 : 2;
112
171
  }
113
172
  /**
114
173
  * Build a usage map from the sidebar cache provider rows.
115
174
  */
116
- export function buildUsageMapFromProviders(providers) {
175
+ export function buildUsageMapFromProviders(providers, now) {
176
+ const nowMs = (now ? now() : new Date()).getTime();
117
177
  const map = new Map();
118
178
  for (const p of providers) {
119
179
  if (p.providerFamily !== "claude" && p.providerFamily !== "openai" && p.providerFamily !== "gemini")
@@ -122,21 +182,27 @@ export function buildUsageMapFromProviders(providers) {
122
182
  providerFamily: p.providerFamily,
123
183
  remainingPercent: p.remainingPercent,
124
184
  alertLevel: p.alertLevel ?? "unknown",
185
+ ...(p.resetBucket === undefined ? {} : { resetBucket: p.resetBucket }),
186
+ ...(p.resetTime === undefined ? {} : { resetTime: p.resetTime }),
187
+ ...(p.freshness === "fresh" || p.freshness === "stale" || p.freshness === "unknown" ? { freshness: p.freshness } : {}),
188
+ ...(typeof p.secondsUntilReset === "number" ? { secondsUntilReset: p.secondsUntilReset } : {}),
125
189
  };
126
190
  map.set(p.providerFamily, providerUsage);
127
- if (p.providerFamily !== "gemini")
128
- continue;
129
191
  for (const bucket of p.buckets ?? []) {
130
- const usageKey = geminiUsageKeyFromResetBucket(bucket.resetBucket);
192
+ const usageKey = p.providerFamily === "gemini" ? geminiUsageKeyFromResetBucket(bucket.resetBucket) : p.providerFamily;
131
193
  if (usageKey === undefined)
132
194
  continue;
133
195
  const usage = {
134
- providerFamily: "gemini",
196
+ providerFamily: p.providerFamily,
135
197
  remainingPercent: bucket.remainingPercent,
136
198
  alertLevel: alertLevelForBucket(bucket.remainingPercent, bucket.freshness, bucket.alertLevel),
199
+ ...(bucket.resetBucket === undefined ? {} : { resetBucket: bucket.resetBucket }),
200
+ ...(bucket.resetTime === undefined ? {} : { resetTime: bucket.resetTime }),
201
+ ...(bucket.freshness === "fresh" || bucket.freshness === "stale" || bucket.freshness === "unknown" ? { freshness: bucket.freshness } : {}),
202
+ ...(typeof bucket.secondsUntilReset === "number" ? { secondsUntilReset: bucket.secondsUntilReset } : {}),
137
203
  };
138
204
  const existing = map.get(usageKey);
139
- if (existing === undefined || usageRank(usage) < usageRank(existing))
205
+ if (existing === undefined || usageRank(usage, nowMs) < usageRank(existing, nowMs))
140
206
  map.set(usageKey, usage);
141
207
  }
142
208
  }
@@ -167,9 +233,10 @@ function alertLevelForBucket(remainingPercent, freshness, explicit) {
167
233
  return "warning";
168
234
  return "ok";
169
235
  }
170
- function usageRank(usage) {
171
- if (usage.remainingPercent !== null)
172
- return usage.remainingPercent;
173
- return usage.alertLevel === "unknown" || usage.alertLevel === "stale" ? Number.POSITIVE_INFINITY : 100;
236
+ function usageRank(usage, nowMs = Date.now()) {
237
+ const qhs = quotaHealthScore(usage, nowMs);
238
+ if (qhs !== undefined)
239
+ return qhs;
240
+ return Number.NEGATIVE_INFINITY;
174
241
  }
175
242
  //# sourceMappingURL=model-selection-engine.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-selection-engine.js","sourceRoot":"","sources":["../src/model-selection-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-selection-engine.js","sourceRoot":"","sources":["../src/model-selection-engine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAkCH,8EAA8E;AAC9E,yDAAyD;AACzD,8EAA8E;AAE9E,MAAM,YAAY,GAAqB;IACtC,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,sBAAsB,EAAE,IAAI,EAAE,OAAO,EAAE;IACrI,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,uBAAuB,EAAE,IAAI,EAAE,OAAO,EAAE;CAC3H,CAAC;AAEF,MAAM,aAAa,GAAqB;IACvC,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,uBAAuB,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC5H,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,sBAAsB,EAAE,IAAI,EAAE,QAAQ,EAAE;IACxI,EAAE,wBAAwB,EAAE,+BAA+B,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,qBAAqB,EAAE,IAAI,EAAE,QAAQ,EAAE;IACjK,EAAE,wBAAwB,EAAE,iCAAiC,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,qBAAqB,EAAE,IAAI,EAAE,QAAQ,EAAE;CACrK,CAAC;AAEF,MAAM,YAAY,GAAqB;IACtC,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,uBAAuB,EAAE,IAAI,EAAE,OAAO,EAAE;IAC3H,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,sBAAsB,EAAE,IAAI,EAAE,OAAO,EAAE;IACvI,EAAE,wBAAwB,EAAE,sCAAsC,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,mBAAmB,EAAE,SAAS,EAAE,qBAAqB,EAAE,IAAI,EAAE,OAAO,EAAE;CAC9K,CAAC;AAEF,yCAAyC;AACzC,yDAAyD;AACzD,6CAA6C;AAC7C,4CAA4C;AAC5C,MAAM,aAAa,GAAmG;IACrH,QAAQ,EAAO,EAAE,IAAI,EAAE,OAAO,EAAG,UAAU,EAAE,CAAC,GAAG,YAAY,CAAC,EAAE;IAChE,YAAY,EAAG,EAAE,IAAI,EAAE,OAAO,EAAG,UAAU,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;IACjF,MAAM,EAAS,EAAE,IAAI,EAAE,OAAO,EAAG,UAAU,EAAE,CAAC,GAAG,YAAY,EAAE,GAAG,aAAa,CAAC,EAAE;IAClF,QAAQ,EAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,GAAG,aAAa,EAAE,GAAG,YAAY,CAAC,EAAE;IAClF,cAAc,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,GAAG,aAAa,CAAC,EAAE;IACjE,YAAY,EAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,GAAG,aAAa,CAAC,EAAE;IACjE,WAAW,EAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,GAAG,aAAa,CAAC,EAAE;IACjE,SAAS,EAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,GAAG,aAAa,EAAE,GAAG,YAAY,CAAC,EAAE;IAClF,WAAW,EAAI,EAAE,IAAI,EAAE,OAAO,EAAG,UAAU,EAAE,CAAC,GAAG,YAAY,EAAE,GAAG,aAAa,CAAC,EAAE;IAClF,aAAa,EAAE,EAAE,IAAI,EAAE,OAAO,EAAG,UAAU,EAAE,CAAC,GAAG,YAAY,EAAE,GAAG,aAAa,CAAC,EAAE;IAClF,GAAG,EAAY,EAAE,IAAI,EAAE,OAAO,EAAG,UAAU,EAAE,CAAC,GAAG,YAAY,CAAC,EAAE;CAChE,CAAC;AAEF,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E,MAAM,eAAe,GAAG;IACvB,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAC9B,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAC1B,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;CACtB,CAAC;AAEX,MAAM,yBAAyB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAChD,MAAM,uBAAuB,GAAG,EAAE,GAAG,IAAI,CAAC;AAC1C,MAAM,4BAA4B,GAAG,IAAI,CAAC;AAE1C,MAAM,UAAU,GAAqD;IACpE,EAAE,EAAE,CAAC;IACL,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,CAAC;IACX,SAAS,EAAE,CAAC;IACZ,KAAK,EAAE,CAAC;IACR,OAAO,EAAE,CAAC;CACV,CAAC;AAEF,SAAS,gBAAgB,CAAC,WAA+B;IACxD,MAAM,UAAU,GAAG,WAAW,EAAE,WAAW,EAAE,CAAC,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IAC5F,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,eAAe,CAAC,UAAU,CAAC;IACjE,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,eAAe,CAAC,KAAK,CAAC;IAC7F,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,eAAe,CAAC,MAAM,CAAC;IAC3H,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAyB,EAAE,KAAa;IACrE,IAAI,OAAO,KAAK,CAAC,iBAAiB,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC7F,OAAO,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC;IACvC,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3C,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7D,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAqC,EAAE,KAAa;IAC7E,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,OAAO;QAAE,OAAO,SAAS,CAAC;IACnF,IAAI,KAAK,CAAC,UAAU,KAAK,WAAW,IAAI,KAAK,CAAC,UAAU,KAAK,OAAO,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACzH,IAAI,KAAK,CAAC,gBAAgB,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC;QAAE,OAAO,SAAS,CAAC;IAClG,IAAI,KAAK,CAAC,gBAAgB,GAAG,CAAC,IAAI,KAAK,CAAC,gBAAgB,GAAG,GAAG;QAAE,OAAO,SAAS,CAAC;IACjF,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACvD,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAClE,MAAM,WAAW,GAAG,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACvD,IAAI,WAAW,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO,SAAS,CAAC;IACjF,IAAI,WAAW,GAAG,CAAC,uBAAuB;QAAE,OAAO,SAAS,CAAC;IAC7D,IAAI,WAAW,GAAG,UAAU,GAAG,yBAAyB;QAAE,OAAO,SAAS,CAAC;IAC3E,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC,CAAC,CAAC;IAC7E,IAAI,aAAa,IAAI,4BAA4B;QAAE,OAAO,SAAS,CAAC;IACpE,MAAM,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC;IACjF,OAAO,aAAa,GAAG,qBAAqB,CAAC;AAC9C,CAAC;AAED,SAAS,SAAS,CAAC,KAAqC,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;IAC3E,IAAI,CAAC,KAAK;QAAE,OAAO,eAAe,CAAC;IACnC,MAAM,GAAG,GAAG,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3C,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,GAAG,KAAK,CAAC,UAAU,aAAa,CAAC;IAC/D,IAAI,KAAK,CAAC,UAAU,KAAK,WAAW;QAAE,OAAO,sBAAsB,CAAC;IACpE,IAAI,KAAK,CAAC,UAAU,KAAK,UAAU;QAAE,OAAO,aAAa,KAAK,CAAC,gBAAgB,IAAI,GAAG,SAAS,CAAC;IAChG,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS;QAAE,OAAO,YAAY,KAAK,CAAC,gBAAgB,IAAI,GAAG,SAAS,CAAC;IAC9F,OAAO,OAAO,KAAK,CAAC,gBAAgB,IAAI,GAAG,iBAAiB,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC;AAC9F,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CACjC,IAAyC,EACzC,aAA8C,EAC9C,mBAA+C,EAAE,EACjD,GAAgB;IAEhB,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IACnD,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,eAAe,GAAG,gBAAgB,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IAEnI,8DAA8D;IAC9D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QAC5C,IAAI,eAAe,KAAK,SAAS,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,wBAAwB,CAAC;YAAE,SAAS;QACxG,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,wBAAwB,CAAC;YAAE,SAAS;QAC3D,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,cAAc,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC/H,MAAM,GAAG,GAAG,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QAC/D,IAAI,MAAM,IAAI,CAAC;YAAE,SAAS,CAAC,4BAA4B;QACvD,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAE5C,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACtI,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACtI,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,UAAU,IAAI,SAAS,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,UAAU,IAAI,SAAS,CAAC,CAAC;QAC1G,IAAI,OAAO,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC;QAClC,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QACrC,IAAI,QAAQ,KAAK,CAAC;YAAE,OAAO,QAAQ,CAAC;QACpC,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvE,IAAI,MAAM,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC;QAChC,OAAO,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;IACjG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,QAAQ,CAAC,IAAe;IAChC,OAAO,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CACzC,SAgBG,EACH,GAAgB;IAEhB,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IACnD,MAAM,GAAG,GAAG,IAAI,GAAG,EAA8B,CAAC;IAClD,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,cAAc,KAAK,QAAQ,IAAI,CAAC,CAAC,cAAc,KAAK,QAAQ,IAAI,CAAC,CAAC,cAAc,KAAK,QAAQ;YAAE,SAAS;QAC9G,MAAM,aAAa,GAAuB;YACzC,cAAc,EAAE,CAAC,CAAC,cAAc;YAChC,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;YACpC,UAAU,EAAG,CAAC,CAAC,UAA+C,IAAI,SAAS;YAC3E,GAAG,CAAC,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YACtE,GAAG,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;YAChE,GAAG,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO,IAAI,CAAC,CAAC,SAAS,KAAK,OAAO,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtH,GAAG,CAAC,OAAO,CAAC,CAAC,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9F,CAAC;QACF,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;QACzC,KAAK,MAAM,MAAM,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,CAAC,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,6BAA6B,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;YACtH,IAAI,QAAQ,KAAK,SAAS;gBAAE,SAAS;YACrC,MAAM,KAAK,GAAuB;gBACjC,cAAc,EAAE,CAAC,CAAC,cAAc;gBAChC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;gBACzC,UAAU,EAAE,mBAAmB,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC;gBAC7F,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;gBAChF,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;gBAC1E,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,OAAO,IAAI,MAAM,CAAC,SAAS,KAAK,OAAO,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1I,GAAG,CAAC,OAAO,MAAM,CAAC,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACxG,CAAC;YACF,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,QAAQ,KAAK,SAAS,IAAI,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC;gBAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC9G,CAAC;IACF,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,SAAS,6BAA6B,CAAC,KAAyB;IAC/D,MAAM,UAAU,GAAG,KAAK,EAAE,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IAC7F,IAAI,UAAU,CAAC,UAAU,CAAC,mBAAmB,CAAC;QAAE,OAAO,mBAAmB,CAAC;IAC3E,IAAI,UAAU,CAAC,UAAU,CAAC,cAAc,CAAC;QAAE,OAAO,cAAc,CAAC;IACjE,IAAI,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,YAAY,CAAC;IAC7D,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,SAAS,mBAAmB,CAAC,gBAA+B,EAAE,SAA6B,EAAE,QAA4B;IACxH,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,UAAU,IAAI,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC1K,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,OAAO;QAAE,OAAO,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IACzG,IAAI,gBAAgB,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAChD,IAAI,gBAAgB,IAAI,CAAC;QAAE,OAAO,WAAW,CAAC;IAC9C,IAAI,gBAAgB,IAAI,EAAE;QAAE,OAAO,UAAU,CAAC;IAC9C,IAAI,gBAAgB,IAAI,EAAE;QAAE,OAAO,SAAS,CAAC;IAC7C,OAAO,IAAI,CAAC;AACb,CAAC;AAED,SAAS,SAAS,CAAC,KAAyB,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;IAC/D,MAAM,GAAG,GAAG,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3C,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC;IAClC,OAAO,MAAM,CAAC,iBAAiB,CAAC;AACjC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"provider-usage-live-tool.d.ts","sourceRoot":"","sources":["../src/provider-usage-live-tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider-usage-live-tool.d.ts","sourceRoot":"","sources":["../src/provider-usage-live-tool.ts"],"names":[],"mappings":"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"}
@@ -10,9 +10,15 @@ const allProviderFamilies = ["claude", "openai", "gemini"];
10
10
  function isProviderFamily(value) {
11
11
  return allProviderFamilies.includes(value);
12
12
  }
13
- function modelFamilyDefault(family) {
14
- if (family === "openai")
15
- return "gpt-5";
13
+ function modelFamilyDefault(family, modelHint) {
14
+ if (family === "openai") {
15
+ if (modelHint !== undefined) {
16
+ const hint = modelHint.toLowerCase();
17
+ if (hint.includes("spark") || hint.includes("5.3") || hint.includes("5-3"))
18
+ return "gpt-5.3-spark";
19
+ }
20
+ return "gpt-5.5";
21
+ }
16
22
  if (family === "gemini")
17
23
  return "gemini-pro";
18
24
  return "sonnet-4";
@@ -190,11 +196,15 @@ function rowFromUsageSnapshot(family, snapshot) {
190
196
  providerHealthSnapshotRef: `cached-health-${snapshot.snapshot_id}`,
191
197
  providerHealth: {
192
198
  snapshotRef: `cached-health-${snapshot.snapshot_id}`,
193
- freshness: "unknown",
194
- availabilityState: "unknown",
195
- failureClass: "telemetry_ambiguous",
196
- dispatchability: "diagnostic_only",
197
- sourceSurface: "unknown",
199
+ freshness: snapshot.freshness,
200
+ availabilityState: snapshot.dispatchability === "dispatchable" && snapshot.freshness === "fresh"
201
+ ? "healthy"
202
+ : "unknown",
203
+ failureClass: snapshot.dispatchability === "dispatchable" && snapshot.freshness === "fresh"
204
+ ? "none"
205
+ : "telemetry_ambiguous",
206
+ dispatchability: snapshot.dispatchability,
207
+ sourceSurface: "usage_collector",
198
208
  },
199
209
  usageAuthorityAcquired: true,
200
210
  };
@@ -382,16 +392,20 @@ function loadReusableSidebarCacheUsageRows(config, observedAt) {
382
392
  const row = item;
383
393
  if (typeof row.providerFamily !== "string" || !isProviderFamily(row.providerFamily))
384
394
  continue;
385
- if (typeof row.usageSnapshotRef !== "string")
386
- continue;
387
- if (typeof row.remainingPercent !== "number" ||
388
- !Number.isFinite(row.remainingPercent))
389
- continue;
390
- rows.set(row.usageSnapshotRef, {
391
- providerFamily: row.providerFamily,
392
- usageSnapshotRef: row.usageSnapshotRef,
393
- remainingPercent: row.remainingPercent,
394
- });
395
+ appendReusableSidebarRow(rows, row.providerFamily, row, observedAt);
396
+ if (Array.isArray(row.buckets)) {
397
+ for (const bucket of row.buckets) {
398
+ if (typeof bucket === "object" &&
399
+ bucket !== null &&
400
+ !Array.isArray(bucket)) {
401
+ appendReusableSidebarRow(rows, row.providerFamily, {
402
+ ...bucket,
403
+ modelFamily: row.modelFamily,
404
+ uncertaintyFlags: row.uncertaintyFlags,
405
+ }, observedAt);
406
+ }
407
+ }
408
+ }
395
409
  }
396
410
  }
397
411
  catch {
@@ -399,11 +413,88 @@ function loadReusableSidebarCacheUsageRows(config, observedAt) {
399
413
  }
400
414
  return rows;
401
415
  }
416
+ function appendReusableSidebarRow(rows, providerFamily, row, observedAt) {
417
+ if (typeof row.usageSnapshotRef !== "string")
418
+ return;
419
+ if (typeof row.remainingPercent !== "number" ||
420
+ !Number.isFinite(row.remainingPercent))
421
+ return;
422
+ const resetTime = typeof row.resetTime === "string" ? row.resetTime : undefined;
423
+ if (resetTime !== undefined && resetTime !== "unknown") {
424
+ const resetTimeMs = Date.parse(resetTime);
425
+ if (Number.isFinite(resetTimeMs) && resetTimeMs <= Date.parse(observedAt))
426
+ return;
427
+ }
428
+ const freshness = row.freshness === "fresh" ||
429
+ row.freshness === "stale" ||
430
+ row.freshness === "unknown"
431
+ ? row.freshness
432
+ : "unknown";
433
+ rows.set(row.usageSnapshotRef, {
434
+ providerFamily,
435
+ usageSnapshotRef: row.usageSnapshotRef,
436
+ dispatchability: row.dispatchability === "dispatchable" ||
437
+ row.dispatchability === "diagnostic_only" ||
438
+ row.dispatchability === "non_dispatchable"
439
+ ? row.dispatchability
440
+ : "diagnostic_only",
441
+ freshness,
442
+ ...(typeof row.resetBucket === "string" ? { resetBucket: row.resetBucket } : {}),
443
+ ...(resetTime === undefined ? {} : { resetTime }),
444
+ remainingPercent: row.remainingPercent,
445
+ alertLevel: typeof row.alertLevel === "string" &&
446
+ ["ok", "warning", "critical", "exhausted", "stale", "unknown"].includes(row.alertLevel)
447
+ ? row.alertLevel
448
+ : alertLevelForRemainingPercent(freshness, row.remainingPercent),
449
+ ...(typeof row.modelFamily === "string" ? { modelFamily: row.modelFamily } : {}),
450
+ uncertaintyFlags: Array.isArray(row.uncertaintyFlags)
451
+ ? row.uncertaintyFlags.filter((flag) => typeof flag === "string")
452
+ : [],
453
+ });
454
+ }
402
455
  function enrichProviderRowsFromReusableSidebarCache(config, providers, observedAt) {
403
456
  const reusable = loadReusableSidebarCacheUsageRows(config, observedAt);
404
457
  if (reusable.size === 0)
405
458
  return providers;
406
459
  return providers.map((row) => {
460
+ const transientFailure = row.usageAuthorityAcquired !== true ||
461
+ row.remainingPercent === null ||
462
+ row.dispatchability !== "dispatchable" ||
463
+ row.freshness !== "fresh";
464
+ const reusableByFamily = [...reusable.values()].find((cached) => cached.providerFamily === row.providerFamily &&
465
+ cached.dispatchability === "dispatchable" &&
466
+ cached.freshness === "fresh");
467
+ if (transientFailure && reusableByFamily !== undefined) {
468
+ return {
469
+ ...row,
470
+ ok: true,
471
+ dispatchability: reusableByFamily.dispatchability,
472
+ freshness: reusableByFamily.freshness,
473
+ ...(reusableByFamily.resetBucket === undefined
474
+ ? {}
475
+ : { resetBucket: reusableByFamily.resetBucket }),
476
+ ...(reusableByFamily.resetTime === undefined
477
+ ? {}
478
+ : { resetTime: reusableByFamily.resetTime }),
479
+ remainingPercent: reusableByFamily.remainingPercent,
480
+ alertLevel: reusableByFamily.alertLevel,
481
+ modelFamily: reusableByFamily.modelFamily ?? row.modelFamily,
482
+ redactedReason: undefined,
483
+ usageSnapshotRef: reusableByFamily.usageSnapshotRef,
484
+ providerHealthSnapshotRef: `cached-health-${reusableByFamily.usageSnapshotRef}`,
485
+ providerHealth: {
486
+ snapshotRef: `cached-health-${reusableByFamily.usageSnapshotRef}`,
487
+ freshness: "fresh",
488
+ availabilityState: "healthy",
489
+ failureClass: "none",
490
+ dispatchability: "dispatchable",
491
+ sourceSurface: "usage_collector",
492
+ },
493
+ usageAuthorityAcquired: true,
494
+ uncertaintyFlags: [...reusableByFamily.uncertaintyFlags],
495
+ recommendation: `${row.providerFamily} kept the previous fresh usage snapshot and preserved ${reusableByFamily.remainingPercent.toFixed(1)}% remaining because the latest usage refresh did not acquire fresh dispatchable evidence.`,
496
+ };
497
+ }
407
498
  if (row.remainingPercent !== null || row.usageSnapshotRef === undefined)
408
499
  return row;
409
500
  const cached = reusable.get(row.usageSnapshotRef);
@@ -658,26 +749,37 @@ function persistProviderUsageSnapshots(config, collectorResults, observedAt) {
658
749
  const intents = [];
659
750
  for (const { family, result } of collectorResults) {
660
751
  if (result === undefined) {
661
- skippedReasons.push(`${family}: collector result missing`);
752
+ skippedReasons.push(`${family}: collector result missing; preserving previous durable snapshot if present`);
662
753
  continue;
663
754
  }
664
- const healthEvidenceId = `provider-health-snapshot-${family}-${stamp}`;
665
- const healthPrep = prepareFlowDeskSessionEvidenceWriteIntentV1({
666
- workflowId,
667
- evidenceId: healthEvidenceId,
668
- record: result.providerHealthSnapshot,
669
- });
670
- if (healthPrep.ok && healthPrep.writeIntent !== undefined) {
671
- intents.push(healthPrep.writeIntent);
672
- persistedIds.push(healthEvidenceId);
673
- }
674
- else {
675
- skippedReasons.push(`${family}: provider health snapshot prepare failed (${healthPrep.errors.join("; ")})`);
676
- }
755
+ const healthDispatchable = result.providerHealthSnapshot.freshness === "fresh" &&
756
+ result.providerHealthSnapshot.dispatchability === "dispatchable" &&
757
+ result.providerHealthSnapshot.availability_state === "healthy" &&
758
+ result.providerHealthSnapshot.failure_class === "none";
677
759
  if (result.usageAuthorityEvidence?.usage_acquired !== true) {
678
- skippedReasons.push(`${family}: usage authority not acquired`);
760
+ skippedReasons.push(`${family}: usage authority not acquired; preserving previous durable snapshot if present`);
761
+ if (!healthDispatchable)
762
+ skippedReasons.push(`${family}: provider health snapshot not persisted because refresh did not produce fresh dispatchable health`);
679
763
  continue;
680
764
  }
765
+ if (healthDispatchable) {
766
+ const healthEvidenceId = `provider-health-snapshot-${family}-${stamp}`;
767
+ const healthPrep = prepareFlowDeskSessionEvidenceWriteIntentV1({
768
+ workflowId,
769
+ evidenceId: healthEvidenceId,
770
+ record: result.providerHealthSnapshot,
771
+ });
772
+ if (healthPrep.ok && healthPrep.writeIntent !== undefined) {
773
+ intents.push(healthPrep.writeIntent);
774
+ persistedIds.push(healthEvidenceId);
775
+ }
776
+ else {
777
+ skippedReasons.push(`${family}: provider health snapshot prepare failed (${healthPrep.errors.join("; ")})`);
778
+ }
779
+ }
780
+ else {
781
+ skippedReasons.push(`${family}: provider health snapshot not persisted because refresh did not produce fresh dispatchable health`);
782
+ }
681
783
  const evidenceId = `provider-usage-snapshot-${family}-${stamp}`;
682
784
  const prep = prepareFlowDeskSessionEvidenceWriteIntentV1({
683
785
  workflowId,