chorus-codes 0.8.32 → 0.8.34
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/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +1 -1
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +1 -1
- package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/connect/page_client-reference-manifest.js +1 -1
- package/.next/server/app/demo/[scenario]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/new/page_client-reference-manifest.js +1 -1
- package/.next/server/app/new.html +1 -1
- package/.next/server/app/new.rsc +1 -1
- package/.next/server/app/new.segments/_full.segment.rsc +1 -1
- package/.next/server/app/new.segments/_head.segment.rsc +1 -1
- package/.next/server/app/new.segments/_index.segment.rsc +1 -1
- package/.next/server/app/new.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/new.segments/new/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/new.segments/new.segment.rsc +1 -1
- package/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
- package/.next/server/app/onboarding.html +1 -1
- package/.next/server/app/onboarding.rsc +1 -1
- package/.next/server/app/onboarding.segments/_full.segment.rsc +1 -1
- package/.next/server/app/onboarding.segments/_head.segment.rsc +1 -1
- package/.next/server/app/onboarding.segments/_index.segment.rsc +1 -1
- package/.next/server/app/onboarding.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/onboarding.segments/onboarding/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/onboarding.segments/onboarding.segment.rsc +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/personas/page_client-reference-manifest.js +1 -1
- package/.next/server/app/personas.html +1 -1
- package/.next/server/app/personas.rsc +1 -1
- package/.next/server/app/personas.segments/_full.segment.rsc +1 -1
- package/.next/server/app/personas.segments/_head.segment.rsc +1 -1
- package/.next/server/app/personas.segments/_index.segment.rsc +1 -1
- package/.next/server/app/personas.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/personas.segments/personas/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/personas.segments/personas.segment.rsc +1 -1
- package/.next/server/app/runs/[runId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/runs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/permissions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings.html +1 -1
- package/.next/server/app/settings.rsc +1 -1
- package/.next/server/app/settings.segments/_full.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_index.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
- package/.next/server/app/templates/page_client-reference-manifest.js +1 -1
- package/.next/server/app/templates.html +1 -1
- package/.next/server/app/templates.rsc +1 -1
- package/.next/server/app/templates.segments/_full.segment.rsc +1 -1
- package/.next/server/app/templates.segments/_head.segment.rsc +1 -1
- package/.next/server/app/templates.segments/_index.segment.rsc +1 -1
- package/.next/server/app/templates.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/templates.segments/templates/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/templates.segments/templates.segment.rsc +1 -1
- package/.next/server/app-paths-manifest.json +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/trace +20 -20
- package/.next/trace-build +1 -1
- package/dist/cli/commands/quickstart.js +347 -0
- package/dist/cli/commands/quickstart.js.map +1 -0
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/daemon/agents/gemini.js +8 -3
- package/dist/daemon/agents/gemini.js.map +1 -1
- package/dist/daemon/agents/preflight.js +6 -1
- package/dist/daemon/agents/preflight.js.map +1 -1
- package/dist/daemon/headless.js +48 -1
- package/dist/daemon/headless.js.map +1 -1
- package/dist/daemon/routes/chats.js +14 -0
- package/dist/daemon/routes/chats.js.map +1 -1
- package/dist/daemon/runner/reviewer-driver.js +80 -47
- package/dist/daemon/runner/reviewer-driver.js.map +1 -1
- package/dist/lib/telemetry.js +128 -1
- package/dist/lib/telemetry.js.map +1 -1
- package/package.json +1 -1
- package/dist/lib/voice-failure-tracker.js +0 -137
- package/dist/lib/voice-failure-tracker.js.map +0 -1
- /package/.next/static/{SWXQPO69cP827e-nghsmJ → HUuyUYZ9yRigNLlSWMQ_E}/_buildManifest.js +0 -0
- /package/.next/static/{SWXQPO69cP827e-nghsmJ → HUuyUYZ9yRigNLlSWMQ_E}/_ssgManifest.js +0 -0
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports._testing = exports.AUTO_DISABLE_THRESHOLD = void 0;
|
|
4
|
-
exports.shouldAutoDisable = shouldAutoDisable;
|
|
5
|
-
exports.recordVoiceFailure = recordVoiceFailure;
|
|
6
|
-
exports.recordVoiceSuccess = recordVoiceSuccess;
|
|
7
|
-
/**
|
|
8
|
-
* Per-voice failure tracker for auto-disabling voices that fail
|
|
9
|
-
* permanently against a specific account.
|
|
10
|
-
*
|
|
11
|
-
* Concrete pain (issue #11): a Gemini Pro model on a Flash-only
|
|
12
|
-
* account fails every call with "exhausted your capacity on this
|
|
13
|
-
* model" — but Gemini does not return a `resetAt`, because the model
|
|
14
|
-
* isn't going to become available. Without auto-disable the runner
|
|
15
|
-
* keeps picking that voice on every chat the user fires, every voice
|
|
16
|
-
* times-out, the user keeps seeing the same opaque error.
|
|
17
|
-
*
|
|
18
|
-
* The signal we trust:
|
|
19
|
-
* - kind: 'quota_exhausted'
|
|
20
|
-
* - hasResetAt: false (the upstream did NOT promise recovery)
|
|
21
|
-
*
|
|
22
|
-
* One strike with that exact signal isn't enough — the user might
|
|
23
|
-
* have hit a transient network blip that the parser couldn't extract
|
|
24
|
-
* a reset window from. Two consecutive strikes is the threshold:
|
|
25
|
-
* cheap on false positives, fast on true permanent-failures (user
|
|
26
|
-
* sees one failed run, not five).
|
|
27
|
-
*
|
|
28
|
-
* On any successful run for the same voice, the counter resets — so
|
|
29
|
-
* a flaky day doesn't accumulate into auto-disable forever.
|
|
30
|
-
*/
|
|
31
|
-
const settings_js_1 = require("./db/settings.js");
|
|
32
|
-
const voices_js_1 = require("./db/voices.js");
|
|
33
|
-
const COUNTER_KEY = (voiceId) => `voice_failures.${voiceId}`;
|
|
34
|
-
/**
|
|
35
|
-
* Strikes-before-disable threshold.
|
|
36
|
-
*
|
|
37
|
-
* Tuned for "fast on true permanent failures, conservative on
|
|
38
|
-
* transient noise". One strike risks a network-blip false positive;
|
|
39
|
-
* three+ strikes is too patient when the user's already complained.
|
|
40
|
-
*/
|
|
41
|
-
exports.AUTO_DISABLE_THRESHOLD = 2;
|
|
42
|
-
/**
|
|
43
|
-
* Pure decision function — exposed so tests don't need DB.
|
|
44
|
-
*
|
|
45
|
-
* Returns true when the runner should disable the voice based on the
|
|
46
|
-
* post-increment counter and whether the upstream promised recovery.
|
|
47
|
-
*/
|
|
48
|
-
function shouldAutoDisable(consecutiveFailures, hasResetAt) {
|
|
49
|
-
// Upstream promised recovery (true rate limit) — this isn't a
|
|
50
|
-
// permanent failure, just wait for the reset window.
|
|
51
|
-
if (hasResetAt)
|
|
52
|
-
return false;
|
|
53
|
-
return consecutiveFailures >= exports.AUTO_DISABLE_THRESHOLD;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Resolve a voice row by its lineage + model. Returns the first
|
|
57
|
-
* matching enabled voice, or null if none. Used by the runner to
|
|
58
|
-
* find the voice it just ran against without plumbing voice IDs
|
|
59
|
-
* through the entire dispatch pipeline.
|
|
60
|
-
*/
|
|
61
|
-
async function resolveVoice(lineage, model) {
|
|
62
|
-
if (!model)
|
|
63
|
-
return null;
|
|
64
|
-
const rows = await voices_js_1.voices.list({ lineage });
|
|
65
|
-
// Exact model match. Voice IDs aren't stable across (lineage, model)
|
|
66
|
-
// combinations (e.g. openrouter wraps with `openrouter:` prefix), so
|
|
67
|
-
// we match on `model_id` which is what the runner has at hand.
|
|
68
|
-
const match = rows.find((r) => r.model_id === model);
|
|
69
|
-
return match ? { id: match.id } : null;
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Record a failure for the voice that ran (lineage + model).
|
|
73
|
-
*
|
|
74
|
-
* Increments the per-voice counter. If the post-increment counter
|
|
75
|
-
* crosses AUTO_DISABLE_THRESHOLD AND the upstream did not provide a
|
|
76
|
-
* reset window, sets `voices.enabled=false` with
|
|
77
|
-
* `disabled_reason='auto_quota'`.
|
|
78
|
-
*
|
|
79
|
-
* Returns whether the voice was disabled by this call so the runner
|
|
80
|
-
* can surface a specific cli_warning in the run page.
|
|
81
|
-
*/
|
|
82
|
-
async function recordVoiceFailure(input) {
|
|
83
|
-
const voice = await resolveVoice(input.lineage, input.model);
|
|
84
|
-
if (!voice)
|
|
85
|
-
return { disabled: false, voiceId: null };
|
|
86
|
-
// Skip the counter entirely when the upstream promised recovery.
|
|
87
|
-
// True rate limits should not contribute to the strike count —
|
|
88
|
-
// otherwise a transient daily-quota hit + a later permanent
|
|
89
|
-
// failure would trip the threshold on the first permanent strike
|
|
90
|
-
// instead of the second.
|
|
91
|
-
if (input.hasResetAt) {
|
|
92
|
-
return { disabled: false, voiceId: voice.id };
|
|
93
|
-
}
|
|
94
|
-
const key = COUNTER_KEY(voice.id);
|
|
95
|
-
const raw = await settings_js_1.settings.get(key);
|
|
96
|
-
const previous = typeof raw === 'number' && Number.isFinite(raw) ? raw : 0;
|
|
97
|
-
const next = previous + 1;
|
|
98
|
-
await settings_js_1.settings.set(key, next);
|
|
99
|
-
if (shouldAutoDisable(next, input.hasResetAt)) {
|
|
100
|
-
await voices_js_1.voices.update(voice.id, {
|
|
101
|
-
enabled: false,
|
|
102
|
-
disabled_reason: 'auto_quota',
|
|
103
|
-
});
|
|
104
|
-
// Reset the counter so a future re-enable doesn't trip on
|
|
105
|
-
// stale state.
|
|
106
|
-
await settings_js_1.settings.set(key, 0);
|
|
107
|
-
return { disabled: true, voiceId: voice.id };
|
|
108
|
-
}
|
|
109
|
-
return { disabled: false, voiceId: voice.id };
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Reset the failure counter for a voice after a successful run.
|
|
113
|
-
*
|
|
114
|
-
* Called from the runner's participant_done path. Bounded — a
|
|
115
|
-
* voice that succeeds once a day clears its counter, so a flaky
|
|
116
|
-
* day can't accumulate into permanent auto-disable.
|
|
117
|
-
*/
|
|
118
|
-
async function recordVoiceSuccess(input) {
|
|
119
|
-
const voice = await resolveVoice(input.lineage, input.model);
|
|
120
|
-
if (!voice)
|
|
121
|
-
return;
|
|
122
|
-
const key = COUNTER_KEY(voice.id);
|
|
123
|
-
const raw = await settings_js_1.settings.get(key);
|
|
124
|
-
// Skip the write when the counter is already 0 — saves a DB roundtrip
|
|
125
|
-
// on the hot success path.
|
|
126
|
-
if (typeof raw === 'number' && raw > 0) {
|
|
127
|
-
await settings_js_1.settings.set(key, 0);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Internal — exported only for tests.
|
|
132
|
-
* @internal
|
|
133
|
-
*/
|
|
134
|
-
exports._testing = {
|
|
135
|
-
COUNTER_KEY,
|
|
136
|
-
};
|
|
137
|
-
//# sourceMappingURL=voice-failure-tracker.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"voice-failure-tracker.js","sourceRoot":"","sources":["../../src/lib/voice-failure-tracker.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|
|
File without changes
|