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.
Files changed (101) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +1 -1
  3. package/.next/build-manifest.json +2 -2
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  6. package/.next/server/app/_global-error.html +1 -1
  7. package/.next/server/app/_global-error.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  14. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  15. package/.next/server/app/_not-found.html +1 -1
  16. package/.next/server/app/_not-found.rsc +1 -1
  17. package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  18. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  19. package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  20. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  21. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  22. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  23. package/.next/server/app/connect/page_client-reference-manifest.js +1 -1
  24. package/.next/server/app/demo/[scenario]/page_client-reference-manifest.js +1 -1
  25. package/.next/server/app/new/page_client-reference-manifest.js +1 -1
  26. package/.next/server/app/new.html +1 -1
  27. package/.next/server/app/new.rsc +1 -1
  28. package/.next/server/app/new.segments/_full.segment.rsc +1 -1
  29. package/.next/server/app/new.segments/_head.segment.rsc +1 -1
  30. package/.next/server/app/new.segments/_index.segment.rsc +1 -1
  31. package/.next/server/app/new.segments/_tree.segment.rsc +1 -1
  32. package/.next/server/app/new.segments/new/__PAGE__.segment.rsc +1 -1
  33. package/.next/server/app/new.segments/new.segment.rsc +1 -1
  34. package/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  35. package/.next/server/app/onboarding.html +1 -1
  36. package/.next/server/app/onboarding.rsc +1 -1
  37. package/.next/server/app/onboarding.segments/_full.segment.rsc +1 -1
  38. package/.next/server/app/onboarding.segments/_head.segment.rsc +1 -1
  39. package/.next/server/app/onboarding.segments/_index.segment.rsc +1 -1
  40. package/.next/server/app/onboarding.segments/_tree.segment.rsc +1 -1
  41. package/.next/server/app/onboarding.segments/onboarding/__PAGE__.segment.rsc +1 -1
  42. package/.next/server/app/onboarding.segments/onboarding.segment.rsc +1 -1
  43. package/.next/server/app/page_client-reference-manifest.js +1 -1
  44. package/.next/server/app/personas/page_client-reference-manifest.js +1 -1
  45. package/.next/server/app/personas.html +1 -1
  46. package/.next/server/app/personas.rsc +1 -1
  47. package/.next/server/app/personas.segments/_full.segment.rsc +1 -1
  48. package/.next/server/app/personas.segments/_head.segment.rsc +1 -1
  49. package/.next/server/app/personas.segments/_index.segment.rsc +1 -1
  50. package/.next/server/app/personas.segments/_tree.segment.rsc +1 -1
  51. package/.next/server/app/personas.segments/personas/__PAGE__.segment.rsc +1 -1
  52. package/.next/server/app/personas.segments/personas.segment.rsc +1 -1
  53. package/.next/server/app/runs/[runId]/page_client-reference-manifest.js +1 -1
  54. package/.next/server/app/runs/page_client-reference-manifest.js +1 -1
  55. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  56. package/.next/server/app/settings/permissions/page_client-reference-manifest.js +1 -1
  57. package/.next/server/app/settings.html +1 -1
  58. package/.next/server/app/settings.rsc +1 -1
  59. package/.next/server/app/settings.segments/_full.segment.rsc +1 -1
  60. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  61. package/.next/server/app/settings.segments/_index.segment.rsc +1 -1
  62. package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  63. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
  64. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  65. package/.next/server/app/templates/page_client-reference-manifest.js +1 -1
  66. package/.next/server/app/templates.html +1 -1
  67. package/.next/server/app/templates.rsc +1 -1
  68. package/.next/server/app/templates.segments/_full.segment.rsc +1 -1
  69. package/.next/server/app/templates.segments/_head.segment.rsc +1 -1
  70. package/.next/server/app/templates.segments/_index.segment.rsc +1 -1
  71. package/.next/server/app/templates.segments/_tree.segment.rsc +1 -1
  72. package/.next/server/app/templates.segments/templates/__PAGE__.segment.rsc +1 -1
  73. package/.next/server/app/templates.segments/templates.segment.rsc +1 -1
  74. package/.next/server/app-paths-manifest.json +1 -1
  75. package/.next/server/middleware-build-manifest.js +1 -1
  76. package/.next/server/pages/404.html +1 -1
  77. package/.next/server/pages/500.html +1 -1
  78. package/.next/server/server-reference-manifest.json +1 -1
  79. package/.next/trace +20 -20
  80. package/.next/trace-build +1 -1
  81. package/dist/cli/commands/quickstart.js +347 -0
  82. package/dist/cli/commands/quickstart.js.map +1 -0
  83. package/dist/cli/index.js +2 -0
  84. package/dist/cli/index.js.map +1 -1
  85. package/dist/daemon/agents/gemini.js +8 -3
  86. package/dist/daemon/agents/gemini.js.map +1 -1
  87. package/dist/daemon/agents/preflight.js +6 -1
  88. package/dist/daemon/agents/preflight.js.map +1 -1
  89. package/dist/daemon/headless.js +48 -1
  90. package/dist/daemon/headless.js.map +1 -1
  91. package/dist/daemon/routes/chats.js +14 -0
  92. package/dist/daemon/routes/chats.js.map +1 -1
  93. package/dist/daemon/runner/reviewer-driver.js +80 -47
  94. package/dist/daemon/runner/reviewer-driver.js.map +1 -1
  95. package/dist/lib/telemetry.js +128 -1
  96. package/dist/lib/telemetry.js.map +1 -1
  97. package/package.json +1 -1
  98. package/dist/lib/voice-failure-tracker.js +0 -137
  99. package/dist/lib/voice-failure-tracker.js.map +0 -1
  100. /package/.next/static/{SWXQPO69cP827e-nghsmJ → HUuyUYZ9yRigNLlSWMQ_E}/_buildManifest.js +0 -0
  101. /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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"}